{"id":"2fa41f78f9e5795e32382203bbc5e2dc","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { IMessageLibManager } from \"./IMessageLibManager.sol\";\nimport { IMessagingComposer } from \"./IMessagingComposer.sol\";\nimport { IMessagingChannel } from \"./IMessagingChannel.sol\";\nimport { IMessagingContext } from \"./IMessagingContext.sol\";\n\nstruct MessagingParams {\n    uint32 dstEid;\n    bytes32 receiver;\n    bytes message;\n    bytes options;\n    bool payInLzToken;\n}\n\nstruct MessagingReceipt {\n    bytes32 guid;\n    uint64 nonce;\n    MessagingFee fee;\n}\n\nstruct MessagingFee {\n    uint256 nativeFee;\n    uint256 lzTokenFee;\n}\n\nstruct Origin {\n    uint32 srcEid;\n    bytes32 sender;\n    uint64 nonce;\n}\n\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\n\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\n\n    event PacketDelivered(Origin origin, address receiver);\n\n    event LzReceiveAlert(\n        address indexed receiver,\n        address indexed executor,\n        Origin origin,\n        bytes32 guid,\n        uint256 gas,\n        uint256 value,\n        bytes message,\n        bytes extraData,\n        bytes reason\n    );\n\n    event LzTokenSet(address token);\n\n    event DelegateSet(address sender, address delegate);\n\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\n\n    function send(\n        MessagingParams calldata _params,\n        address _refundAddress\n    ) external payable returns (MessagingReceipt memory);\n\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\n\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\n\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\n\n    function lzReceive(\n        Origin calldata _origin,\n        address _receiver,\n        bytes32 _guid,\n        bytes calldata _message,\n        bytes calldata _extraData\n    ) external payable;\n\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\n\n    function setLzToken(address _lzToken) external;\n\n    function lzToken() external view returns (address);\n\n    function nativeToken() external view returns (address);\n\n    function setDelegate(address _delegate) external;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { Origin } from \"./ILayerZeroEndpointV2.sol\";\n\ninterface ILayerZeroReceiver {\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\n\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\n\n    function lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) external payable;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { IERC165 } from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport { SetConfigParam } from \"./IMessageLibManager.sol\";\n\nenum MessageLibType {\n    Send,\n    Receive,\n    SendAndReceive\n}\n\ninterface IMessageLib is IERC165 {\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\n\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\n\n    function isSupportedEid(uint32 _eid) external view returns (bool);\n\n    // message libs of same major version are compatible\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\n\n    function messageLibType() external view returns (MessageLibType);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nstruct SetConfigParam {\n    uint32 eid;\n    uint32 configType;\n    bytes config;\n}\n\ninterface IMessageLibManager {\n    struct Timeout {\n        address lib;\n        uint256 expiry;\n    }\n\n    event LibraryRegistered(address newLib);\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\n\n    function registerLibrary(address _lib) external;\n\n    function isRegisteredLibrary(address _lib) external view returns (bool);\n\n    function getRegisteredLibraries() external view returns (address[] memory);\n\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\n\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\n\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\n\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\n\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\n\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\n\n    function isSupportedEid(uint32 _eid) external view returns (bool);\n\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\n\n    /// ------------------- OApp interfaces -------------------\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\n\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\n\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\n\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\n\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\n\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\n\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\n\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\n\n    function getConfig(\n        address _oapp,\n        address _lib,\n        uint32 _eid,\n        uint32 _configType\n    ) external view returns (bytes memory config);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingChannel {\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\n\n    function eid() external view returns (uint32);\n\n    // this is an emergency function if a message cannot be verified for some reasons\n    // required to provide _nextNonce to avoid race condition\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\n\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\n\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\n\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\n\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\n\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\n\n    function inboundPayloadHash(\n        address _receiver,\n        uint32 _srcEid,\n        bytes32 _sender,\n        uint64 _nonce\n    ) external view returns (bytes32);\n\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingComposer {\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\n    event LzComposeAlert(\n        address indexed from,\n        address indexed to,\n        address indexed executor,\n        bytes32 guid,\n        uint16 index,\n        uint256 gas,\n        uint256 value,\n        bytes message,\n        bytes extraData,\n        bytes reason\n    );\n\n    function composeQueue(\n        address _from,\n        address _to,\n        bytes32 _guid,\n        uint16 _index\n    ) external view returns (bytes32 messageHash);\n\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\n\n    function lzCompose(\n        address _from,\n        address _to,\n        bytes32 _guid,\n        uint16 _index,\n        bytes calldata _message,\n        bytes calldata _extraData\n    ) external payable;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingContext {\n    function isSendingMessage() external view returns (bool);\n\n    function getSendContext() external view returns (uint32 dstEid, address sender);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { MessagingFee } from \"./ILayerZeroEndpointV2.sol\";\nimport { IMessageLib } from \"./IMessageLib.sol\";\n\nstruct Packet {\n    uint64 nonce;\n    uint32 srcEid;\n    address sender;\n    uint32 dstEid;\n    bytes32 receiver;\n    bytes32 guid;\n    bytes message;\n}\n\ninterface ISendLib is IMessageLib {\n    function send(\n        Packet calldata _packet,\n        bytes calldata _options,\n        bool _payInLzToken\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\n\n    function quote(\n        Packet calldata _packet,\n        bytes calldata _options,\n        bool _payInLzToken\n    ) external view returns (MessagingFee memory);\n\n    function setTreasury(address _treasury) external;\n\n    function withdrawFee(address _to, uint256 _amount) external;\n\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"content":"// SPDX-License-Identifier: LZBL-1.2\n\npragma solidity ^0.8.20;\n\nlibrary AddressCast {\n    error AddressCast_InvalidSizeForAddress();\n    error AddressCast_InvalidAddress();\n\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\n        result = bytes32(_addressBytes);\n        unchecked {\n            uint256 offset = 32 - _addressBytes.length;\n            result = result >> (offset * 8);\n        }\n    }\n\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\n        result = bytes32(uint256(uint160(_address)));\n    }\n\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\n        result = new bytes(_size);\n        unchecked {\n            uint256 offset = 256 - _size * 8;\n            assembly {\n                mstore(add(result, 32), shl(offset, _addressBytes32))\n            }\n        }\n    }\n\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\n        result = address(uint160(uint256(_addressBytes32)));\n    }\n\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\n        result = address(bytes20(_addressBytes));\n    }\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"content":"// SPDX-License-Identifier: LZBL-1.2\n\npragma solidity ^0.8.20;\n\nimport { Packet } from \"../../interfaces/ISendLib.sol\";\nimport { AddressCast } from \"../../libs/AddressCast.sol\";\n\nlibrary PacketV1Codec {\n    using AddressCast for address;\n    using AddressCast for bytes32;\n\n    uint8 internal constant PACKET_VERSION = 1;\n\n    // header (version + nonce + path)\n    // version\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\n    //    nonce\n    uint256 private constant NONCE_OFFSET = 1;\n    //    path\n    uint256 private constant SRC_EID_OFFSET = 9;\n    uint256 private constant SENDER_OFFSET = 13;\n    uint256 private constant DST_EID_OFFSET = 45;\n    uint256 private constant RECEIVER_OFFSET = 49;\n    // payload (guid + message)\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\n    uint256 private constant MESSAGE_OFFSET = 113;\n\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\n        encodedPacket = abi.encodePacked(\n            PACKET_VERSION,\n            _packet.nonce,\n            _packet.srcEid,\n            _packet.sender.toBytes32(),\n            _packet.dstEid,\n            _packet.receiver,\n            _packet.guid,\n            _packet.message\n        );\n    }\n\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\n        return\n            abi.encodePacked(\n                PACKET_VERSION,\n                _packet.nonce,\n                _packet.srcEid,\n                _packet.sender.toBytes32(),\n                _packet.dstEid,\n                _packet.receiver\n            );\n    }\n\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\n        return abi.encodePacked(_packet.guid, _packet.message);\n    }\n\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\n        return _packet[0:GUID_OFFSET];\n    }\n\n    function version(bytes calldata _packet) internal pure returns (uint8) {\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\n    }\n\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\n    }\n\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\n    }\n\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\n    }\n\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\n        return sender(_packet).toAddress();\n    }\n\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\n    }\n\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\n    }\n\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\n        return receiver(_packet).toAddress();\n    }\n\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\n    }\n\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\n        return bytes(_packet[MESSAGE_OFFSET:]);\n    }\n\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\n        return bytes(_packet[GUID_OFFSET:]);\n    }\n\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\n        return keccak256(payload(_packet));\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { ILayerZeroEndpointV2 } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\n\n/**\n * @title IOAppCore\n */\ninterface IOAppCore {\n    // Custom error messages\n    error OnlyPeer(uint32 eid, bytes32 sender);\n    error NoPeer(uint32 eid);\n    error InvalidEndpointCall();\n    error InvalidDelegate();\n\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\n    event PeerSet(uint32 eid, bytes32 peer);\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol contract.\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\n     */\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\n\n    /**\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\n     * @return iEndpoint The LayerZero endpoint as an interface.\n     */\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\n\n    /**\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\n     */\n    function peers(uint32 _eid) external view returns (bytes32 peer);\n\n    /**\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\n     */\n    function setPeer(uint32 _eid, bytes32 _peer) external;\n\n    /**\n     * @notice Sets the delegate address for the OApp Core.\n     * @param _delegate The address of the delegate to be set.\n     */\n    function setDelegate(address _delegate) external;\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n/**\n * @title IOAppMsgInspector\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\n */\ninterface IOAppMsgInspector {\n    // Custom error message for inspection failure\n    error InspectionFailed(bytes message, bytes options);\n\n    /**\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\n     * @param _message The message payload to be inspected.\n     * @param _options Additional options or parameters for inspection.\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\n     *\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\n     */\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Struct representing enforced option parameters.\n */\nstruct EnforcedOptionParam {\n    uint32 eid; // Endpoint ID\n    uint16 msgType; // Message Type\n    bytes options; // Additional options\n}\n\n/**\n * @title IOAppOptionsType3\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\n */\ninterface IOAppOptionsType3 {\n    // Custom error message for invalid options\n    error InvalidOptions(bytes options);\n\n    // Event emitted when enforced options are set\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\n\n    /**\n     * @notice Sets enforced options for specific endpoint and message type combinations.\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n     */\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\n\n    /**\n     * @notice Combines options for a given endpoint and message type.\n     * @param _eid The endpoint ID.\n     * @param _msgType The OApp message type.\n     * @param _extraOptions Additional options passed by the caller.\n     * @return options The combination of caller specified options AND enforced options.\n     */\n    function combineOptions(\n        uint32 _eid,\n        uint16 _msgType,\n        bytes calldata _extraOptions\n    ) external view returns (bytes memory options);\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport { ILayerZeroReceiver, Origin } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\";\n\ninterface IOAppReceiver is ILayerZeroReceiver {\n    /**\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n     * @param _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @param _message The lzReceive payload.\n     * @param _sender The sender address.\n     * @return isSender Is a valid sender.\n     *\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\n     * @dev The default sender IS the OAppReceiver implementer.\n     */\n    function isComposeMsgSender(\n        Origin calldata _origin,\n        bytes calldata _message,\n        address _sender\n    ) external view returns (bool isSender);\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport { IOAppOptionsType3, EnforcedOptionParam } from \"../interfaces/IOAppOptionsType3.sol\";\n\n/**\n * @title OAppOptionsType3\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\n */\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\n    uint16 internal constant OPTION_TYPE_3 = 3;\n\n    // @dev The \"msgType\" should be defined in the child contract.\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\n\n    /**\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n     *\n     * @dev Only the owner/admin of the OApp can call this function.\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\n     */\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\n        _setEnforcedOptions(_enforcedOptions);\n    }\n\n    /**\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n     *\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\n     */\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\n            _assertOptionsType3(_enforcedOptions[i].options);\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\n        }\n\n        emit EnforcedOptionSet(_enforcedOptions);\n    }\n\n    /**\n     * @notice Combines options for a given endpoint and message type.\n     * @param _eid The endpoint ID.\n     * @param _msgType The OAPP message type.\n     * @param _extraOptions Additional options passed by the caller.\n     * @return options The combination of caller specified options AND enforced options.\n     *\n     * @dev If there is an enforced lzReceive option:\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\n     */\n    function combineOptions(\n        uint32 _eid,\n        uint16 _msgType,\n        bytes calldata _extraOptions\n    ) public view virtual returns (bytes memory) {\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\n\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\n        if (enforced.length == 0) return _extraOptions;\n\n        // No caller options, return enforced\n        if (_extraOptions.length == 0) return enforced;\n\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\n        if (_extraOptions.length >= 2) {\n            _assertOptionsType3(_extraOptions);\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\n            return bytes.concat(enforced, _extraOptions[2:]);\n        }\n\n        // No valid set of options was found.\n        revert InvalidOptions(_extraOptions);\n    }\n\n    /**\n     * @dev Internal function to assert that options are of type 3.\n     * @param _options The options to be checked.\n     */\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\n        uint16 optionsType;\n        assembly {\n            optionsType := mload(add(_options, 2))\n        }\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\n// solhint-disable-next-line no-unused-import\nimport { OAppSender, MessagingFee, MessagingReceipt } from \"./OAppSender.sol\";\n// @dev Import the 'Origin' so it's exposed to OApp implementers\n// solhint-disable-next-line no-unused-import\nimport { OAppReceiver, Origin } from \"./OAppReceiver.sol\";\nimport { OAppCore } from \"./OAppCore.sol\";\n\n/**\n * @title OApp\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\n */\nabstract contract OApp is OAppSender, OAppReceiver {\n    /**\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     */\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol implementation.\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\n     */\n    function oAppVersion()\n        public\n        pure\n        virtual\n        override(OAppSender, OAppReceiver)\n        returns (uint64 senderVersion, uint64 receiverVersion)\n    {\n        return (SENDER_VERSION, RECEIVER_VERSION);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport { IOAppCore, ILayerZeroEndpointV2 } from \"./interfaces/IOAppCore.sol\";\n\n/**\n * @title OAppCore\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\n */\nabstract contract OAppCore is IOAppCore, Ownable {\n    // The LayerZero endpoint associated with the given OApp\n    ILayerZeroEndpointV2 public immutable endpoint;\n\n    // Mapping to store peers associated with corresponding endpoints\n    mapping(uint32 eid => bytes32 peer) public peers;\n\n    /**\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     *\n     * @dev The delegate typically should be set as the owner of the contract.\n     */\n    constructor(address _endpoint, address _delegate) {\n        endpoint = ILayerZeroEndpointV2(_endpoint);\n\n        if (_delegate == address(0)) revert InvalidDelegate();\n        endpoint.setDelegate(_delegate);\n    }\n\n    /**\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\n     *\n     * @dev Only the owner/admin of the OApp can call this function.\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n     * @dev Set this to bytes32(0) to remove the peer address.\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\n     */\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\n        _setPeer(_eid, _peer);\n    }\n\n    /**\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\n     *\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n     * @dev Set this to bytes32(0) to remove the peer address.\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\n     */\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\n        peers[_eid] = _peer;\n        emit PeerSet(_eid, _peer);\n    }\n\n    /**\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\n     * ie. the peer is set to bytes32(0).\n     * @param _eid The endpoint ID.\n     * @return peer The address of the peer associated with the specified endpoint.\n     */\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\n        bytes32 peer = peers[_eid];\n        if (peer == bytes32(0)) revert NoPeer(_eid);\n        return peer;\n    }\n\n    /**\n     * @notice Sets the delegate address for the OApp.\n     * @param _delegate The address of the delegate to be set.\n     *\n     * @dev Only the owner/admin of the OApp can call this function.\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\n     */\n    function setDelegate(address _delegate) public onlyOwner {\n        endpoint.setDelegate(_delegate);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { IOAppReceiver, Origin } from \"./interfaces/IOAppReceiver.sol\";\nimport { OAppCore } from \"./OAppCore.sol\";\n\n/**\n * @title OAppReceiver\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\n */\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\n    // Custom error message for when the caller is not the registered endpoint/\n    error OnlyEndpoint(address addr);\n\n    // @dev The version of the OAppReceiver implementation.\n    // @dev Version is bumped when changes are made to this contract.\n    uint64 internal constant RECEIVER_VERSION = 2;\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol contract.\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\n     *\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\n     * ie. this is a RECEIVE only OApp.\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\n     */\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\n        return (0, RECEIVER_VERSION);\n    }\n\n    /**\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n     * @dev _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @dev _message The lzReceive payload.\n     * @param _sender The sender address.\n     * @return isSender Is a valid sender.\n     *\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\n     * @dev The default sender IS the OAppReceiver implementer.\n     */\n    function isComposeMsgSender(\n        Origin calldata /*_origin*/,\n        bytes calldata /*_message*/,\n        address _sender\n    ) public view virtual returns (bool) {\n        return _sender == address(this);\n    }\n\n    /**\n     * @notice Checks if the path initialization is allowed based on the provided origin.\n     * @param origin The origin information containing the source endpoint and sender address.\n     * @return Whether the path has been initialized.\n     *\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\n     * @dev This defaults to assuming if a peer has been set, its initialized.\n     * Can be overridden by the OApp if there is other logic to determine this.\n     */\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\n        return peers[origin.srcEid] == origin.sender;\n    }\n\n    /**\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\n     * @dev _srcEid The source endpoint ID.\n     * @dev _sender The sender address.\n     * @return nonce The next nonce.\n     *\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\n     * @dev This is also enforced by the OApp.\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\n     */\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\n        return 0;\n    }\n\n    /**\n     * @dev Entry point for receiving messages or packets from the endpoint.\n     * @param _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @param _guid The unique identifier for the received LayerZero message.\n     * @param _message The payload of the received message.\n     * @param _executor The address of the executor for the received message.\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\n     *\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\n     */\n    function lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) public payable virtual {\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\n\n        // Ensure that the sender matches the expected peer for the source endpoint.\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\n\n        // Call the internal OApp implementation of lzReceive.\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\n    }\n\n    /**\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\n     */\n    function _lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) internal virtual;\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\nimport { OAppCore } from \"./OAppCore.sol\";\n\n/**\n * @title OAppSender\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\n */\nabstract contract OAppSender is OAppCore {\n    using SafeERC20 for IERC20;\n\n    // Custom error messages\n    error NotEnoughNative(uint256 msgValue);\n    error LzTokenUnavailable();\n\n    // @dev The version of the OAppSender implementation.\n    // @dev Version is bumped when changes are made to this contract.\n    uint64 internal constant SENDER_VERSION = 1;\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol contract.\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\n     *\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\n     * ie. this is a SEND only OApp.\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\n     */\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\n        return (SENDER_VERSION, 0);\n    }\n\n    /**\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\n     * @param _dstEid The destination endpoint ID.\n     * @param _message The message payload.\n     * @param _options Additional options for the message.\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\n     * @return fee The calculated MessagingFee for the message.\n     *      - nativeFee: The native fee for the message.\n     *      - lzTokenFee: The LZ token fee for the message.\n     */\n    function _quote(\n        uint32 _dstEid,\n        bytes memory _message,\n        bytes memory _options,\n        bool _payInLzToken\n    ) internal view virtual returns (MessagingFee memory fee) {\n        return\n            endpoint.quote(\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\n                address(this)\n            );\n    }\n\n    /**\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\n     * @param _dstEid The destination endpoint ID.\n     * @param _message The message payload.\n     * @param _options Additional options for the message.\n     * @param _fee The calculated LayerZero fee for the message.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\n     * @return receipt The receipt for the sent message.\n     *      - guid: The unique identifier for the sent message.\n     *      - nonce: The nonce of the sent message.\n     *      - fee: The LayerZero fee incurred for the message.\n     */\n    function _lzSend(\n        uint32 _dstEid,\n        bytes memory _message,\n        bytes memory _options,\n        MessagingFee memory _fee,\n        address _refundAddress\n    ) internal virtual returns (MessagingReceipt memory receipt) {\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\n        uint256 messageValue = _payNative(_fee.nativeFee);\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\n\n        return\n            // solhint-disable-next-line check-send-result\n            endpoint.send{ value: messageValue }(\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\n                _refundAddress\n            );\n    }\n\n    /**\n     * @dev Internal function to pay the native fee associated with the message.\n     * @param _nativeFee The native fee to be paid.\n     * @return nativeFee The amount of native currency paid.\n     *\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\n     * this will need to be overridden because msg.value would contain multiple lzFees.\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\n     */\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\n        return _nativeFee;\n    }\n\n    /**\n     * @dev Internal function to pay the LZ token fee associated with the message.\n     * @param _lzTokenFee The LZ token fee to be paid.\n     *\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\n     */\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\n        address lzToken = endpoint.lzToken();\n        if (lzToken == address(0)) revert LzTokenUnavailable();\n\n        // Pay LZ token fee by sending tokens to the endpoint.\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\n// solhint-disable-next-line no-unused-import\nimport { InboundPacket, Origin } from \"../libs/Packet.sol\";\n\n/**\n * @title IOAppPreCrimeSimulator Interface\n * @dev Interface for the preCrime simulation functionality in an OApp.\n */\ninterface IOAppPreCrimeSimulator {\n    // @dev simulation result used in PreCrime implementation\n    error SimulationResult(bytes result);\n    error OnlySelf();\n\n    /**\n     * @dev Emitted when the preCrime contract address is set.\n     * @param preCrimeAddress The address of the preCrime contract.\n     */\n    event PreCrimeSet(address preCrimeAddress);\n\n    /**\n     * @dev Retrieves the address of the preCrime contract implementation.\n     * @return The address of the preCrime contract.\n     */\n    function preCrime() external view returns (address);\n\n    /**\n     * @dev Retrieves the address of the OApp contract.\n     * @return The address of the OApp contract.\n     */\n    function oApp() external view returns (address);\n\n    /**\n     * @dev Sets the preCrime contract address.\n     * @param _preCrime The address of the preCrime contract.\n     */\n    function setPreCrime(address _preCrime) external;\n\n    /**\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\n     */\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\n\n    /**\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\n     * @param _eid The endpoint Id to check.\n     * @param _peer The peer to check.\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\n     */\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\nstruct PreCrimePeer {\n    uint32 eid;\n    bytes32 preCrime;\n    bytes32 oApp;\n}\n\n// TODO not done yet\ninterface IPreCrime {\n    error OnlyOffChain();\n\n    // for simulate()\n    error PacketOversize(uint256 max, uint256 actual);\n    error PacketUnsorted();\n    error SimulationFailed(bytes reason);\n\n    // for preCrime()\n    error SimulationResultNotFound(uint32 eid);\n    error InvalidSimulationResult(uint32 eid, bytes reason);\n    error CrimeFound(bytes crime);\n\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\n\n    function simulate(\n        bytes[] calldata _packets,\n        uint256[] calldata _packetMsgValues\n    ) external payable returns (bytes memory);\n\n    function buildSimulationResult() external view returns (bytes memory);\n\n    function preCrime(\n        bytes[] calldata _packets,\n        uint256[] calldata _packetMsgValues,\n        bytes[] calldata _simulations\n    ) external;\n\n    function version() external view returns (uint64 major, uint8 minor);\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Origin } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\nimport { PacketV1Codec } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\";\n\n/**\n * @title InboundPacket\n * @dev Structure representing an inbound packet received by the contract.\n */\nstruct InboundPacket {\n    Origin origin; // Origin information of the packet.\n    uint32 dstEid; // Destination endpointId of the packet.\n    address receiver; // Receiver address for the packet.\n    bytes32 guid; // Unique identifier of the packet.\n    uint256 value; // msg.value of the packet.\n    address executor; // Executor address for the packet.\n    bytes message; // Message payload of the packet.\n    bytes extraData; // Additional arbitrary data for the packet.\n}\n\n/**\n * @title PacketDecoder\n * @dev Library for decoding LayerZero packets.\n */\nlibrary PacketDecoder {\n    using PacketV1Codec for bytes;\n\n    /**\n     * @dev Decode an inbound packet from the given packet data.\n     * @param _packet The packet data to decode.\n     * @return packet An InboundPacket struct representing the decoded packet.\n     */\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\n        packet.dstEid = _packet.dstEid();\n        packet.receiver = _packet.receiverB20();\n        packet.guid = _packet.guid();\n        packet.message = _packet.message();\n    }\n\n    /**\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\n     * @param _packets An array of packet data to decode.\n     * @param _packetMsgValues An array of associated message values for each packet.\n     * @return packets An array of InboundPacket structs representing the decoded packets.\n     */\n    function decode(\n        bytes[] calldata _packets,\n        uint256[] memory _packetMsgValues\n    ) internal pure returns (InboundPacket[] memory packets) {\n        packets = new InboundPacket[](_packets.length);\n        for (uint256 i = 0; i < _packets.length; i++) {\n            bytes calldata packet = _packets[i];\n            packets[i] = PacketDecoder.decode(packet);\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\n            packets[i].value = _packetMsgValues[i];\n        }\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport { IPreCrime } from \"./interfaces/IPreCrime.sol\";\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \"./interfaces/IOAppPreCrimeSimulator.sol\";\n\n/**\n * @title OAppPreCrimeSimulator\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\n */\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\n    // The address of the preCrime implementation.\n    address public preCrime;\n\n    /**\n     * @dev Retrieves the address of the OApp contract.\n     * @return The address of the OApp contract.\n     *\n     * @dev The simulator contract is the base contract for the OApp by default.\n     * @dev If the simulator is a separate contract, override this function.\n     */\n    function oApp() external view virtual returns (address) {\n        return address(this);\n    }\n\n    /**\n     * @dev Sets the preCrime contract address.\n     * @param _preCrime The address of the preCrime contract.\n     */\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\n        preCrime = _preCrime;\n        emit PreCrimeSet(_preCrime);\n    }\n\n    /**\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\n     *\n     * @dev WARNING: MUST revert at the end with the simulation results.\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\n     * WITHOUT actually executing them.\n     */\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\n        for (uint256 i = 0; i < _packets.length; i++) {\n            InboundPacket calldata packet = _packets[i];\n\n            // Ignore packets that are not from trusted peers.\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\n\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\n            //  - address _executor\n            //  - bytes calldata _extraData\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\n            // They are instead stubbed to default values, address(0) and bytes(\"\")\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\n            // which would cause the revert to be ignored.\n            this.lzReceiveSimulate{ value: packet.value }(\n                packet.origin,\n                packet.guid,\n                packet.message,\n                packet.executor,\n                packet.extraData\n            );\n        }\n\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\n    }\n\n    /**\n     * @dev Is effectively an internal function because msg.sender must be address(this).\n     * Allows resetting the call stack for 'internal' calls.\n     * @param _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @param _guid The unique identifier of the packet.\n     * @param _message The message payload of the packet.\n     * @param _executor The executor address for the packet.\n     * @param _extraData Additional data for the packet.\n     */\n    function lzReceiveSimulate(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) external payable virtual {\n        // @dev Ensure ONLY can be called 'internally'.\n        if (msg.sender != address(this)) revert OnlySelf();\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\n    }\n\n    /**\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n     * @param _origin The origin information.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address from the src chain.\n     *  - nonce: The nonce of the LayerZero message.\n     * @param _guid The GUID of the LayerZero message.\n     * @param _message The LayerZero message.\n     * @param _executor The address of the off-chain executor.\n     * @param _extraData Arbitrary data passed by the msg executor.\n     *\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\n     */\n    function _lzReceiveSimulate(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) internal virtual;\n\n    /**\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\n     * @param _eid The endpoint Id to check.\n     * @param _peer The peer to check.\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\n     */\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\n}\n"},"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { MessagingReceipt, MessagingFee } from \"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\";\n\n/**\n * @dev Struct representing token parameters for the OFT send() operation.\n */\nstruct SendParam {\n    uint32 dstEid; // Destination endpoint ID.\n    bytes32 to; // Recipient address.\n    uint256 amountLD; // Amount to send in local decimals.\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\n    bytes composeMsg; // The composed message for the send() operation.\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\n}\n\n/**\n * @dev Struct representing OFT limit information.\n * @dev These amounts can change dynamically and are up the specific oft implementation.\n */\nstruct OFTLimit {\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\n}\n\n/**\n * @dev Struct representing OFT receipt information.\n */\nstruct OFTReceipt {\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\n}\n\n/**\n * @dev Struct representing OFT fee details.\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\n */\nstruct OFTFeeDetail {\n    int256 feeAmountLD; // Amount of the fee in local decimals.\n    string description; // Description of the fee.\n}\n\n/**\n * @title IOFT\n * @dev Interface for the OftChain (OFT) token.\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\n * @dev This specific interface ID is '0x02e49c2c'.\n */\ninterface IOFT {\n    // Custom error messages\n    error InvalidLocalDecimals();\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\n\n    // Events\n    event OFTSent(\n        bytes32 indexed guid, // GUID of the OFT message.\n        uint32 dstEid, // Destination Endpoint ID.\n        address indexed fromAddress, // Address of the sender on the src chain.\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\n    );\n    event OFTReceived(\n        bytes32 indexed guid, // GUID of the OFT message.\n        uint32 srcEid, // Source Endpoint ID.\n        address indexed toAddress, // Address of the recipient on the dst chain.\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\n    );\n\n    /**\n     * @notice Retrieves interfaceID and the version of the OFT.\n     * @return interfaceId The interface ID.\n     * @return version The version.\n     *\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\n     */\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\n\n    /**\n     * @notice Retrieves the address of the token associated with the OFT.\n     * @return token The address of the ERC20 token implementation.\n     */\n    function token() external view returns (address);\n\n    /**\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n     * @return requiresApproval Needs approval of the underlying token implementation.\n     *\n     * @dev Allows things like wallet implementers to determine integration requirements,\n     * without understanding the underlying token implementation.\n     */\n    function approvalRequired() external view returns (bool);\n\n    /**\n     * @notice Retrieves the shared decimals of the OFT.\n     * @return sharedDecimals The shared decimals of the OFT.\n     */\n    function sharedDecimals() external view returns (uint8);\n\n    /**\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n     * @param _sendParam The parameters for the send operation.\n     * @return limit The OFT limit information.\n     * @return oftFeeDetails The details of OFT fees.\n     * @return receipt The OFT receipt information.\n     */\n    function quoteOFT(\n        SendParam calldata _sendParam\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\n\n    /**\n     * @notice Provides a quote for the send() operation.\n     * @param _sendParam The parameters for the send() operation.\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\n     *\n     * @dev MessagingFee: LayerZero msg fee\n     *  - nativeFee: The native fee.\n     *  - lzTokenFee: The lzToken fee.\n     */\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\n\n    /**\n     * @notice Executes the send() operation.\n     * @param _sendParam The parameters for the send operation.\n     * @param _fee The fee information supplied by the caller.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\n     * @return receipt The LayerZero messaging receipt from the send() operation.\n     * @return oftReceipt The OFT receipt information.\n     *\n     * @dev MessagingReceipt: LayerZero msg receipt\n     *  - guid: The unique identifier for the sent message.\n     *  - nonce: The nonce of the sent message.\n     *  - fee: The LayerZero fee incurred for the message.\n     */\n    function send(\n        SendParam calldata _sendParam,\n        MessagingFee calldata _fee,\n        address _refundAddress\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\n}\n"},"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nlibrary OFTComposeMsgCodec {\n    // Offset constants for decoding composed messages\n    uint8 private constant NONCE_OFFSET = 8;\n    uint8 private constant SRC_EID_OFFSET = 12;\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\n\n    /**\n     * @dev Encodes a OFT composed message.\n     * @param _nonce The nonce value.\n     * @param _srcEid The source endpoint ID.\n     * @param _amountLD The amount in local decimals.\n     * @param _composeMsg The composed message.\n     * @return _msg The encoded Composed message.\n     */\n    function encode(\n        uint64 _nonce,\n        uint32 _srcEid,\n        uint256 _amountLD,\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\n    ) internal pure returns (bytes memory _msg) {\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\n    }\n\n    /**\n     * @dev Retrieves the nonce for the composed message.\n     * @param _msg The message.\n     * @return The nonce value.\n     */\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the source endpoint ID for the composed message.\n     * @param _msg The message.\n     * @return The source endpoint ID.\n     */\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the amount in local decimals from the composed message.\n     * @param _msg The message.\n     * @return The amount in local decimals.\n     */\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the composeFrom value from the composed message.\n     * @param _msg The message.\n     * @return The composeFrom value.\n     */\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\n    }\n\n    /**\n     * @dev Retrieves the composed message.\n     * @param _msg The message.\n     * @return The composed message.\n     */\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\n        return _msg[COMPOSE_FROM_OFFSET:];\n    }\n\n    /**\n     * @dev Converts an address to bytes32.\n     * @param _addr The address to convert.\n     * @return The bytes32 representation of the address.\n     */\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\n        return bytes32(uint256(uint160(_addr)));\n    }\n\n    /**\n     * @dev Converts bytes32 to an address.\n     * @param _b The bytes32 value to convert.\n     * @return The address representation of bytes32.\n     */\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\n        return address(uint160(uint256(_b)));\n    }\n}\n"},"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nlibrary OFTMsgCodec {\n    // Offset constants for encoding and decoding OFT messages\n    uint8 private constant SEND_TO_OFFSET = 32;\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\n\n    /**\n     * @dev Encodes an OFT LayerZero message.\n     * @param _sendTo The recipient address.\n     * @param _amountShared The amount in shared decimals.\n     * @param _composeMsg The composed message.\n     * @return _msg The encoded message.\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\n     */\n    function encode(\n        bytes32 _sendTo,\n        uint64 _amountShared,\n        bytes memory _composeMsg\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\n        hasCompose = _composeMsg.length > 0;\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\n        _msg = hasCompose\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\n            : abi.encodePacked(_sendTo, _amountShared);\n    }\n\n    /**\n     * @dev Checks if the OFT message is composed.\n     * @param _msg The OFT message.\n     * @return A boolean indicating whether the message is composed.\n     */\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\n    }\n\n    /**\n     * @dev Retrieves the recipient address from the OFT message.\n     * @param _msg The OFT message.\n     * @return The recipient address.\n     */\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\n        return bytes32(_msg[:SEND_TO_OFFSET]);\n    }\n\n    /**\n     * @dev Retrieves the amount in shared decimals from the OFT message.\n     * @param _msg The OFT message.\n     * @return The amount in shared decimals.\n     */\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the composed message from the OFT message.\n     * @param _msg The OFT message.\n     * @return The composed message.\n     */\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\n    }\n\n    /**\n     * @dev Converts an address to bytes32.\n     * @param _addr The address to convert.\n     * @return The bytes32 representation of the address.\n     */\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\n        return bytes32(uint256(uint160(_addr)));\n    }\n\n    /**\n     * @dev Converts bytes32 to an address.\n     * @param _b The bytes32 value to convert.\n     * @return The address representation of bytes32.\n     */\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\n        return address(uint160(uint256(_b)));\n    }\n}\n"},"@layerzerolabs/oft-evm/contracts/OFT.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IOFT, OFTCore } from \"./OFTCore.sol\";\n\n/**\n * @title OFT Contract\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\n */\nabstract contract OFT is OFTCore, ERC20 {\n    /**\n     * @dev Constructor for the OFT contract.\n     * @param _name The name of the OFT.\n     * @param _symbol The symbol of the OFT.\n     * @param _lzEndpoint The LayerZero endpoint address.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     */\n    constructor(\n        string memory _name,\n        string memory _symbol,\n        address _lzEndpoint,\n        address _delegate\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\n\n    /**\n     * @dev Retrieves the address of the underlying ERC20 implementation.\n     * @return The address of the OFT token.\n     *\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\n     */\n    function token() public view returns (address) {\n        return address(this);\n    }\n\n    /**\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n     * @return requiresApproval Needs approval of the underlying token implementation.\n     *\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\n     */\n    function approvalRequired() external pure virtual returns (bool) {\n        return false;\n    }\n\n    /**\n     * @dev Burns tokens from the sender's specified balance.\n     * @param _from The address to debit the tokens from.\n     * @param _amountLD The amount of tokens to send in local decimals.\n     * @param _minAmountLD The minimum amount to send in local decimals.\n     * @param _dstEid The destination chain ID.\n     * @return amountSentLD The amount sent in local decimals.\n     * @return amountReceivedLD The amount received in local decimals on the remote.\n     */\n    function _debit(\n        address _from,\n        uint256 _amountLD,\n        uint256 _minAmountLD,\n        uint32 _dstEid\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\n\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\n        // therefore amountSentLD CAN differ from amountReceivedLD.\n\n        // @dev Default OFT burns on src.\n        _burn(_from, amountSentLD);\n    }\n\n    /**\n     * @dev Credits tokens to the specified address.\n     * @param _to The address to credit the tokens to.\n     * @param _amountLD The amount of tokens to credit in local decimals.\n     * @dev _srcEid The source chain ID.\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\n     */\n    function _credit(\n        address _to,\n        uint256 _amountLD,\n        uint32 /*_srcEid*/\n    ) internal virtual override returns (uint256 amountReceivedLD) {\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\n        // @dev Default OFT mints on dst.\n        _mint(_to, _amountLD);\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\n        return _amountLD;\n    }\n}\n"},"@layerzerolabs/oft-evm/contracts/OFTCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { OApp, Origin } from \"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\";\nimport { OAppOptionsType3 } from \"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\";\nimport { IOAppMsgInspector } from \"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\";\n\nimport { OAppPreCrimeSimulator } from \"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\";\n\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \"./interfaces/IOFT.sol\";\nimport { OFTMsgCodec } from \"./libs/OFTMsgCodec.sol\";\nimport { OFTComposeMsgCodec } from \"./libs/OFTComposeMsgCodec.sol\";\n\n/**\n * @title OFTCore\n * @dev Abstract contract for the OftChain (OFT) token.\n */\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\n    using OFTMsgCodec for bytes;\n    using OFTMsgCodec for bytes32;\n\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\n    //      - shareDecimals == SD == shared Decimals\n    //      - localDecimals == LD == local decimals\n    // @dev Considers that tokens have different decimal amounts on various chains.\n    // @dev eg.\n    //  For a token\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\n    //  you can only display 1.23 -> uint(123).\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\n    uint256 public immutable decimalConversionRate;\n\n    // @notice Msg types that are used to identify the various OFT operations.\n    // @dev This can be extended in child contracts for non-default oft operations\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\n    uint16 public constant SEND = 1;\n    uint16 public constant SEND_AND_CALL = 2;\n\n    // Address of an optional contract to inspect both 'message' and 'options'\n    address public msgInspector;\n    event MsgInspectorSet(address inspector);\n\n    /**\n     * @dev Constructor.\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\n     * @param _endpoint The address of the LayerZero endpoint.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     */\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\n    }\n\n    /**\n     * @notice Retrieves interfaceID and the version of the OFT.\n     * @return interfaceId The interface ID.\n     * @return version The version.\n     *\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\n     */\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\n        return (type(IOFT).interfaceId, 1);\n    }\n\n    /**\n     * @dev Retrieves the shared decimals of the OFT.\n     * @return The shared decimals of the OFT.\n     *\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\n     * Lowest common decimal denominator between chains.\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\n     */\n    function sharedDecimals() public view virtual returns (uint8) {\n        return 6;\n    }\n\n    /**\n     * @dev Sets the message inspector address for the OFT.\n     * @param _msgInspector The address of the message inspector.\n     *\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\n     */\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\n        msgInspector = _msgInspector;\n        emit MsgInspectorSet(_msgInspector);\n    }\n\n    /**\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n     * @param _sendParam The parameters for the send operation.\n     * @return oftLimit The OFT limit information.\n     * @return oftFeeDetails The details of OFT fees.\n     * @return oftReceipt The OFT receipt information.\n     */\n    function quoteOFT(\n        SendParam calldata _sendParam\n    )\n        external\n        view\n        virtual\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\n    {\n        uint256 minAmountLD = 0; // Unused in the default implementation.\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\n\n        // Unused in the default implementation; reserved for future complex fee details.\n        oftFeeDetails = new OFTFeeDetail[](0);\n\n        // @dev This is the same as the send() operation, but without the actual send.\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\n            _sendParam.amountLD,\n            _sendParam.minAmountLD,\n            _sendParam.dstEid\n        );\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\n    }\n\n    /**\n     * @notice Provides a quote for the send() operation.\n     * @param _sendParam The parameters for the send() operation.\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\n     *\n     * @dev MessagingFee: LayerZero msg fee\n     *  - nativeFee: The native fee.\n     *  - lzTokenFee: The lzToken fee.\n     */\n    function quoteSend(\n        SendParam calldata _sendParam,\n        bool _payInLzToken\n    ) external view virtual returns (MessagingFee memory msgFee) {\n        // @dev mock the amount to receive, this is the same operation used in the send().\n        // The quote is as similar as possible to the actual send() operation.\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\n\n        // @dev Builds the options and OFT message to quote in the endpoint.\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\n\n        // @dev Calculates the LayerZero fee for the send() operation.\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\n    }\n\n    /**\n     * @dev Executes the send operation.\n     * @param _sendParam The parameters for the send operation.\n     * @param _fee The calculated fee for the send() operation.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess funds.\n     * @return msgReceipt The receipt for the send operation.\n     * @return oftReceipt The OFT receipt information.\n     *\n     * @dev MessagingReceipt: LayerZero msg receipt\n     *  - guid: The unique identifier for the sent message.\n     *  - nonce: The nonce of the sent message.\n     *  - fee: The LayerZero fee incurred for the message.\n     */\n    function send(\n        SendParam calldata _sendParam,\n        MessagingFee calldata _fee,\n        address _refundAddress\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\n        return _send(_sendParam, _fee, _refundAddress);\n    }\n\n    /**\n     * @dev Internal function to execute the send operation.\n     * @param _sendParam The parameters for the send operation.\n     * @param _fee The calculated fee for the send() operation.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess funds.\n     * @return msgReceipt The receipt for the send operation.\n     * @return oftReceipt The OFT receipt information.\n     *\n     * @dev MessagingReceipt: LayerZero msg receipt\n     *  - guid: The unique identifier for the sent message.\n     *  - nonce: The nonce of the sent message.\n     *  - fee: The LayerZero fee incurred for the message.\n     */\n    function _send(\n        SendParam calldata _sendParam,\n        MessagingFee calldata _fee,\n        address _refundAddress\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\n        // @dev Applies the token transfers regarding this send() operation.\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\n            msg.sender,\n            _sendParam.amountLD,\n            _sendParam.minAmountLD,\n            _sendParam.dstEid\n        );\n\n        // @dev Builds the options and OFT message to quote in the endpoint.\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\n\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\n        // @dev Formulate the OFT receipt.\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\n\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\n    }\n\n    /**\n     * @dev Internal function to build the message and options.\n     * @param _sendParam The parameters for the send() operation.\n     * @param _amountLD The amount in local decimals.\n     * @return message The encoded message.\n     * @return options The encoded options.\n     */\n    function _buildMsgAndOptions(\n        SendParam calldata _sendParam,\n        uint256 _amountLD\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\n        bool hasCompose;\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\n        (message, hasCompose) = OFTMsgCodec.encode(\n            _sendParam.to,\n            _toSD(_amountLD),\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\n            _sendParam.composeMsg\n        );\n        // @dev Change the msg type depending if its composed or not.\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\n\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\n    }\n\n    /**\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\n     * @param _origin The origin information.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address from the src chain.\n     *  - nonce: The nonce of the LayerZero message.\n     * @param _guid The unique identifier for the received LayerZero message.\n     * @param _message The encoded message.\n     * @dev _executor The address of the executor.\n     * @dev _extraData Additional data.\n     */\n    function _lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address /*_executor*/, // @dev unused in the default implementation.\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\n    ) internal virtual override {\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\n        // Thus everything is bytes32() encoded in flight.\n        address toAddress = _message.sendTo().bytes32ToAddress();\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\n\n        if (_message.isComposed()) {\n            // @dev Proprietary composeMsg format for the OFT.\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\n                _origin.nonce,\n                _origin.srcEid,\n                amountReceivedLD,\n                _message.composeMsg()\n            );\n\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\n        }\n\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\n    }\n\n    /**\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n     * @param _origin The origin information.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address from the src chain.\n     *  - nonce: The nonce of the LayerZero message.\n     * @param _guid The unique identifier for the received LayerZero message.\n     * @param _message The LayerZero message.\n     * @param _executor The address of the off-chain executor.\n     * @param _extraData Arbitrary data passed by the msg executor.\n     *\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\n     */\n    function _lzReceiveSimulate(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) internal virtual override {\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\n    }\n\n    /**\n     * @dev Check if the peer is considered 'trusted' by the OApp.\n     * @param _eid The endpoint ID to check.\n     * @param _peer The peer to check.\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\n     *\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\n     */\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\n        return peers[_eid] == _peer;\n    }\n\n    /**\n     * @dev Internal function to remove dust from the given local decimal amount.\n     * @param _amountLD The amount in local decimals.\n     * @return amountLD The amount after removing dust.\n     *\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\n     */\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\n    }\n\n    /**\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\n     * @param _amountSD The amount in shared decimals.\n     * @return amountLD The amount in local decimals.\n     */\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\n        return _amountSD * decimalConversionRate;\n    }\n\n    /**\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\n     * @param _amountLD The amount in local decimals.\n     * @return amountSD The amount in shared decimals.\n     */\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\n        return uint64(_amountLD / decimalConversionRate);\n    }\n\n    /**\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\n     * @param _amountLD The amount to send in local decimals.\n     * @param _minAmountLD The minimum amount to send in local decimals.\n     * @dev _dstEid The destination endpoint ID.\n     * @return amountSentLD The amount sent, in local decimals.\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\n     *\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\n     */\n    function _debitView(\n        uint256 _amountLD,\n        uint256 _minAmountLD,\n        uint32 /*_dstEid*/\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\n        amountSentLD = _removeDust(_amountLD);\n        // @dev The amount to send is the same as amount received in the default implementation.\n        amountReceivedLD = amountSentLD;\n\n        // @dev Check for slippage.\n        if (amountReceivedLD < _minAmountLD) {\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\n        }\n    }\n\n    /**\n     * @dev Internal function to perform a debit operation.\n     * @param _from The address to debit.\n     * @param _amountLD The amount to send in local decimals.\n     * @param _minAmountLD The minimum amount to send in local decimals.\n     * @param _dstEid The destination endpoint ID.\n     * @return amountSentLD The amount sent in local decimals.\n     * @return amountReceivedLD The amount received in local decimals on the remote.\n     *\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\n     */\n    function _debit(\n        address _from,\n        uint256 _amountLD,\n        uint256 _minAmountLD,\n        uint32 _dstEid\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\n\n    /**\n     * @dev Internal function to perform a credit operation.\n     * @param _to The address to credit.\n     * @param _amountLD The amount to credit in local decimals.\n     * @param _srcEid The source endpoint ID.\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\n     *\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\n     */\n    function _credit(\n        address _to,\n        uint256 _amountLD,\n        uint32 _srcEid\n    ) internal virtual returns (uint256 amountReceivedLD);\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    constructor(address initialOwner) {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n    /*\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n     * 0xb0202a11 ===\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n     */\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferAndCall(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @param data Additional data with no specified format, sent in call to `to`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param from The address which you want to send tokens from.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param from The address which you want to send tokens from.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @param data Additional data with no specified format, sent in call to `to`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n     * @param spender The address which will spend the funds.\n     * @param value The amount of tokens to be spent.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function approveAndCall(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n     * @param spender The address which will spend the funds.\n     * @param value The amount of tokens to be spent.\n     * @param data Additional data with no specified format, sent in call to `spender`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n"},"@openzeppelin/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    /**\n     * @dev An operation with an ERC-20 token failed.\n     */\n    error SafeERC20FailedOperation(address token);\n\n    /**\n     * @dev Indicates a failed `decreaseAllowance` request.\n     */\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n    /**\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n    }\n\n    /**\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n     */\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n    }\n\n    /**\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\n     */\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\n    }\n\n    /**\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\n     */\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n    }\n\n    /**\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     *\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n     * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n     */\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 oldAllowance = token.allowance(address(this), spender);\n        forceApprove(token, spender, oldAllowance + value);\n    }\n\n    /**\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n     * value, non-reverting calls are assumed to be successful.\n     *\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n     * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n     */\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n        unchecked {\n            uint256 currentAllowance = token.allowance(address(this), spender);\n            if (currentAllowance < requestedDecrease) {\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n            }\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\n        }\n    }\n\n    /**\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n     * to be set to zero before setting it to a non-zero value, such as USDT.\n     *\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n     * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n     * set here.\n     */\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n        if (!_callOptionalReturnBool(token, approvalCall)) {\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n            _callOptionalReturn(token, approvalCall);\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n        if (to.code.length == 0) {\n            safeTransfer(token, to, value);\n        } else if (!token.transferAndCall(to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function transferFromAndCallRelaxed(\n        IERC1363 token,\n        address from,\n        address to,\n        uint256 value,\n        bytes memory data\n    ) internal {\n        if (to.code.length == 0) {\n            safeTransferFrom(token, from, to, value);\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n     * once without retrying, and relies on the returned value to be true.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n        if (to.code.length == 0) {\n            forceApprove(token, to, value);\n        } else if (!token.approveAndCall(to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly (\"memory-safe\") {\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n            // bubble errors\n            if iszero(success) {\n                let ptr := mload(0x40)\n                returndatacopy(ptr, 0, returndatasize())\n                revert(ptr, returndatasize())\n            }\n            returnSize := returndatasize()\n            returnValue := mload(0)\n        }\n\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n     */\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n        bool success;\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly (\"memory-safe\") {\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n            returnSize := returndatasize()\n            returnValue := mload(0)\n        }\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/SSE.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {OFT} from \"@layerzerolabs/oft-evm/contracts/OFT.sol\";\n\ncontract SSE is OFT {\n    uint256 public constant MAX_SUPPLY = 20_000_000 * 10 ** 18;\n\n    error MaxSupplyExceeded();\n\n    constructor(\n        string memory _name,\n        string memory _symbol,\n        address _lzEndpoint,\n        address _delegate\n    ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}\n\n    /**\n     * @dev Mints new tokens to the specified address\n     * @param _to The address to mint tokens to\n     * @param _amount The amount of tokens to mint\n     */\n    function mint(address _to, uint256 _amount) external onlyOwner {\n        if (totalSupply() + _amount > MAX_SUPPLY) {\n            revert MaxSupplyExceeded();\n        }\n        _mint(_to, _amount);\n    }\n\n    /**\n     * @dev Override _credit method to enforce max supply limit during cross-chain transfers\n     */\n    function _credit(\n        address _to,\n        uint256 _amountLD,\n        uint32 _srcEid\n    ) internal virtual override returns (uint256 amountReceivedLD) {\n        // Check if minting would exceed max supply\n        if (totalSupply() + _amountLD > MAX_SUPPLY) {\n            revert MaxSupplyExceeded();\n        }\n        return super._credit(_to, _amountLD, _srcEid);\n    }\n\n    /**\n     * @dev Override _update to enforce max supply limit for all minting operations\n     * This is used by both _mint and cross-chain transfers\n     */\n    function _update(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual override {\n        if (from == address(0) && totalSupply() + amount > MAX_SUPPLY) {\n            revert MaxSupplyExceeded();\n        }\n        super._update(from, to, amount);\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IMessageLibManager":[538],"IMessagingChannel":[674],"IMessagingComposer":[760],"IMessagingContext":[775],"MessagingFee":[33],"MessagingParams":[20],"MessagingReceipt":[28],"Origin":[40]},"id":203,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:0"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","file":"./IMessageLibManager.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":539,"src":"59:62:0","symbolAliases":[{"foreign":{"id":2,"name":"IMessageLibManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"68:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol","file":"./IMessagingComposer.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":761,"src":"122:62:0","symbolAliases":[{"foreign":{"id":4,"name":"IMessagingComposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"131:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol","file":"./IMessagingChannel.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":675,"src":"185:60:0","symbolAliases":[{"foreign":{"id":6,"name":"IMessagingChannel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"194:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol","file":"./IMessagingContext.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":776,"src":"246:60:0","symbolAliases":[{"foreign":{"id":8,"name":"IMessagingContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"255:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"MessagingParams","id":20,"members":[{"constant":false,"id":11,"mutability":"mutable","name":"dstEid","nameLocation":"344:6:0","nodeType":"VariableDeclaration","scope":20,"src":"337:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10,"name":"uint32","nodeType":"ElementaryTypeName","src":"337:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13,"mutability":"mutable","name":"receiver","nameLocation":"364:8:0","nodeType":"VariableDeclaration","scope":20,"src":"356:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12,"name":"bytes32","nodeType":"ElementaryTypeName","src":"356:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15,"mutability":"mutable","name":"message","nameLocation":"384:7:0","nodeType":"VariableDeclaration","scope":20,"src":"378:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14,"name":"bytes","nodeType":"ElementaryTypeName","src":"378:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17,"mutability":"mutable","name":"options","nameLocation":"403:7:0","nodeType":"VariableDeclaration","scope":20,"src":"397:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16,"name":"bytes","nodeType":"ElementaryTypeName","src":"397:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19,"mutability":"mutable","name":"payInLzToken","nameLocation":"421:12:0","nodeType":"VariableDeclaration","scope":20,"src":"416:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18,"name":"bool","nodeType":"ElementaryTypeName","src":"416:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"MessagingParams","nameLocation":"315:15:0","nodeType":"StructDefinition","scope":203,"src":"308:128:0","visibility":"public"},{"canonicalName":"MessagingReceipt","id":28,"members":[{"constant":false,"id":22,"mutability":"mutable","name":"guid","nameLocation":"476:4:0","nodeType":"VariableDeclaration","scope":28,"src":"468:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21,"name":"bytes32","nodeType":"ElementaryTypeName","src":"468:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"nonce","nameLocation":"493:5:0","nodeType":"VariableDeclaration","scope":28,"src":"486:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23,"name":"uint64","nodeType":"ElementaryTypeName","src":"486:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":27,"mutability":"mutable","name":"fee","nameLocation":"517:3:0","nodeType":"VariableDeclaration","scope":28,"src":"504:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"},"typeName":{"id":26,"nodeType":"UserDefinedTypeName","pathNode":{"id":25,"name":"MessagingFee","nameLocations":["504:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"504:12:0"},"referencedDeclaration":33,"src":"504:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"name":"MessagingReceipt","nameLocation":"445:16:0","nodeType":"StructDefinition","scope":203,"src":"438:85:0","visibility":"public"},{"canonicalName":"MessagingFee","id":33,"members":[{"constant":false,"id":30,"mutability":"mutable","name":"nativeFee","nameLocation":"559:9:0","nodeType":"VariableDeclaration","scope":33,"src":"551:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29,"name":"uint256","nodeType":"ElementaryTypeName","src":"551:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32,"mutability":"mutable","name":"lzTokenFee","nameLocation":"582:10:0","nodeType":"VariableDeclaration","scope":33,"src":"574:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MessagingFee","nameLocation":"532:12:0","nodeType":"StructDefinition","scope":203,"src":"525:70:0","visibility":"public"},{"canonicalName":"Origin","id":40,"members":[{"constant":false,"id":35,"mutability":"mutable","name":"srcEid","nameLocation":"624:6:0","nodeType":"VariableDeclaration","scope":40,"src":"617:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":34,"name":"uint32","nodeType":"ElementaryTypeName","src":"617:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":37,"mutability":"mutable","name":"sender","nameLocation":"644:6:0","nodeType":"VariableDeclaration","scope":40,"src":"636:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"636:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"nonce","nameLocation":"663:5:0","nodeType":"VariableDeclaration","scope":40,"src":"656:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":38,"name":"uint64","nodeType":"ElementaryTypeName","src":"656:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"Origin","nameLocation":"604:6:0","nodeType":"StructDefinition","scope":203,"src":"597:74:0","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":41,"name":"IMessageLibManager","nameLocations":["707:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":538,"src":"707:18:0"},"id":42,"nodeType":"InheritanceSpecifier","src":"707:18:0"},{"baseName":{"id":43,"name":"IMessagingComposer","nameLocations":["727:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":760,"src":"727:18:0"},"id":44,"nodeType":"InheritanceSpecifier","src":"727:18:0"},{"baseName":{"id":45,"name":"IMessagingChannel","nameLocations":["747:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":674,"src":"747:17:0"},"id":46,"nodeType":"InheritanceSpecifier","src":"747:17:0"},{"baseName":{"id":47,"name":"IMessagingContext","nameLocations":["766:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":775,"src":"766:17:0"},"id":48,"nodeType":"InheritanceSpecifier","src":"766:17:0"}],"canonicalName":"ILayerZeroEndpointV2","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":202,"linearizedBaseContracts":[202,775,674,760,538],"name":"ILayerZeroEndpointV2","nameLocation":"683:20:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f","id":56,"name":"PacketSent","nameLocation":"796:10:0","nodeType":"EventDefinition","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"indexed":false,"mutability":"mutable","name":"encodedPayload","nameLocation":"813:14:0","nodeType":"VariableDeclaration","scope":56,"src":"807:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":49,"name":"bytes","nodeType":"ElementaryTypeName","src":"807:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":52,"indexed":false,"mutability":"mutable","name":"options","nameLocation":"835:7:0","nodeType":"VariableDeclaration","scope":56,"src":"829:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51,"name":"bytes","nodeType":"ElementaryTypeName","src":"829:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54,"indexed":false,"mutability":"mutable","name":"sendLibrary","nameLocation":"852:11:0","nodeType":"VariableDeclaration","scope":56,"src":"844:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"806:58:0"},"src":"790:75:0"},{"anonymous":false,"eventSelector":"0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4","id":65,"name":"PacketVerified","nameLocation":"877:14:0","nodeType":"EventDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"899:6:0","nodeType":"VariableDeclaration","scope":65,"src":"892:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":58,"nodeType":"UserDefinedTypeName","pathNode":{"id":57,"name":"Origin","nameLocations":["892:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"892:6:0"},"referencedDeclaration":40,"src":"892:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":61,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"915:8:0","nodeType":"VariableDeclaration","scope":65,"src":"907:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"907:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"933:11:0","nodeType":"VariableDeclaration","scope":65,"src":"925:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":62,"name":"bytes32","nodeType":"ElementaryTypeName","src":"925:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"891:54:0"},"src":"871:75:0"},{"anonymous":false,"eventSelector":"3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca04","id":72,"name":"PacketDelivered","nameLocation":"958:15:0","nodeType":"EventDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"981:6:0","nodeType":"VariableDeclaration","scope":72,"src":"974:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":67,"nodeType":"UserDefinedTypeName","pathNode":{"id":66,"name":"Origin","nameLocations":["974:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"974:6:0"},"referencedDeclaration":40,"src":"974:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":70,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"997:8:0","nodeType":"VariableDeclaration","scope":72,"src":"989:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"973:33:0"},"src":"952:55:0"},{"anonymous":false,"eventSelector":"7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c","id":93,"name":"LzReceiveAlert","nameLocation":"1019:14:0","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"1059:8:0","nodeType":"VariableDeclaration","scope":93,"src":"1043:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"indexed":true,"mutability":"mutable","name":"executor","nameLocation":"1093:8:0","nodeType":"VariableDeclaration","scope":93,"src":"1077:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"1118:6:0","nodeType":"VariableDeclaration","scope":93,"src":"1111:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":78,"nodeType":"UserDefinedTypeName","pathNode":{"id":77,"name":"Origin","nameLocations":["1111:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1111:6:0"},"referencedDeclaration":40,"src":"1111:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":81,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"1142:4:0","nodeType":"VariableDeclaration","scope":93,"src":"1134:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1134:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"gas","nameLocation":"1164:3:0","nodeType":"VariableDeclaration","scope":93,"src":"1156:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1185:5:0","nodeType":"VariableDeclaration","scope":93,"src":"1177:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84,"name":"uint256","nodeType":"ElementaryTypeName","src":"1177:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"1206:7:0","nodeType":"VariableDeclaration","scope":93,"src":"1200:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"1200:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":89,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"1229:9:0","nodeType":"VariableDeclaration","scope":93,"src":"1223:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":88,"name":"bytes","nodeType":"ElementaryTypeName","src":"1223:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"1254:6:0","nodeType":"VariableDeclaration","scope":93,"src":"1248:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90,"name":"bytes","nodeType":"ElementaryTypeName","src":"1248:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1033:233:0"},"src":"1013:254:0"},{"anonymous":false,"eventSelector":"d476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396","id":97,"name":"LzTokenSet","nameLocation":"1279:10:0","nodeType":"EventDefinition","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1298:5:0","nodeType":"VariableDeclaration","scope":97,"src":"1290:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1289:15:0"},"src":"1273:32:0"},{"anonymous":false,"eventSelector":"6ee10e9ed4d6ce9742703a498707862f4b00f1396a87195eb93267b3d7983981","id":103,"name":"DelegateSet","nameLocation":"1317:11:0","nodeType":"EventDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"1337:6:0","nodeType":"VariableDeclaration","scope":103,"src":"1329:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"1329:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":101,"indexed":false,"mutability":"mutable","name":"delegate","nameLocation":"1353:8:0","nodeType":"VariableDeclaration","scope":103,"src":"1345:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"1345:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1328:34:0"},"src":"1311:52:0"},{"functionSelector":"ddc28c58","id":114,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"1378:5:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"mutability":"mutable","name":"_params","nameLocation":"1409:7:0","nodeType":"VariableDeclaration","scope":114,"src":"1384:32:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_calldata_ptr","typeString":"struct MessagingParams"},"typeName":{"id":105,"nodeType":"UserDefinedTypeName","pathNode":{"id":104,"name":"MessagingParams","nameLocations":["1384:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"1384:15:0"},"referencedDeclaration":20,"src":"1384:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_storage_ptr","typeString":"struct MessagingParams"}},"visibility":"internal"},{"constant":false,"id":108,"mutability":"mutable","name":"_sender","nameLocation":"1426:7:0","nodeType":"VariableDeclaration","scope":114,"src":"1418:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1383:51:0"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":114,"src":"1458:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":111,"nodeType":"UserDefinedTypeName","pathNode":{"id":110,"name":"MessagingFee","nameLocations":["1458:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"1458:12:0"},"referencedDeclaration":33,"src":"1458:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"1457:21:0"},"scope":202,"src":"1369:110:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2637a450","id":125,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"1494:4:0","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"_params","nameLocation":"1533:7:0","nodeType":"VariableDeclaration","scope":125,"src":"1508:32:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_calldata_ptr","typeString":"struct MessagingParams"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"MessagingParams","nameLocations":["1508:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"1508:15:0"},"referencedDeclaration":20,"src":"1508:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_storage_ptr","typeString":"struct MessagingParams"}},"visibility":"internal"},{"constant":false,"id":119,"mutability":"mutable","name":"_refundAddress","nameLocation":"1558:14:0","nodeType":"VariableDeclaration","scope":125,"src":"1550:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"1550:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1498:80:0"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":125,"src":"1605:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":122,"nodeType":"UserDefinedTypeName","pathNode":{"id":121,"name":"MessagingReceipt","nameLocations":["1605:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"1605:16:0"},"referencedDeclaration":28,"src":"1605:16:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"}],"src":"1604:25:0"},"scope":202,"src":"1485:145:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"a825d747","id":135,"implemented":false,"kind":"function","modifiers":[],"name":"verify","nameLocation":"1645:6:0","nodeType":"FunctionDefinition","parameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"_origin","nameLocation":"1668:7:0","nodeType":"VariableDeclaration","scope":135,"src":"1652:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":127,"nodeType":"UserDefinedTypeName","pathNode":{"id":126,"name":"Origin","nameLocations":["1652:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1652:6:0"},"referencedDeclaration":40,"src":"1652:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":130,"mutability":"mutable","name":"_receiver","nameLocation":"1685:9:0","nodeType":"VariableDeclaration","scope":135,"src":"1677:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":132,"mutability":"mutable","name":"_payloadHash","nameLocation":"1704:12:0","nodeType":"VariableDeclaration","scope":135,"src":"1696:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1696:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1651:66:0"},"returnParameters":{"id":134,"nodeType":"ParameterList","parameters":[],"src":"1726:0:0"},"scope":202,"src":"1636:91:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c9a54a99","id":145,"implemented":false,"kind":"function","modifiers":[],"name":"verifiable","nameLocation":"1742:10:0","nodeType":"FunctionDefinition","parameters":{"id":141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"_origin","nameLocation":"1769:7:0","nodeType":"VariableDeclaration","scope":145,"src":"1753:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":137,"nodeType":"UserDefinedTypeName","pathNode":{"id":136,"name":"Origin","nameLocations":["1753:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1753:6:0"},"referencedDeclaration":40,"src":"1753:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":140,"mutability":"mutable","name":"_receiver","nameLocation":"1786:9:0","nodeType":"VariableDeclaration","scope":145,"src":"1778:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":139,"name":"address","nodeType":"ElementaryTypeName","src":"1778:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1752:44:0"},"returnParameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":145,"src":"1820:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"1820:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1819:6:0"},"scope":202,"src":"1733:93:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"861e1ca5","id":155,"implemented":false,"kind":"function","modifiers":[],"name":"initializable","nameLocation":"1841:13:0","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"_origin","nameLocation":"1871:7:0","nodeType":"VariableDeclaration","scope":155,"src":"1855:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":147,"nodeType":"UserDefinedTypeName","pathNode":{"id":146,"name":"Origin","nameLocations":["1855:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1855:6:0"},"referencedDeclaration":40,"src":"1855:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"_receiver","nameLocation":"1888:9:0","nodeType":"VariableDeclaration","scope":155,"src":"1880:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1854:44:0"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":155,"src":"1922:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":152,"name":"bool","nodeType":"ElementaryTypeName","src":"1922:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1921:6:0"},"scope":202,"src":"1832:96:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0c0c389e","id":169,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"1943:9:0","nodeType":"FunctionDefinition","parameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"_origin","nameLocation":"1978:7:0","nodeType":"VariableDeclaration","scope":169,"src":"1962:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":157,"nodeType":"UserDefinedTypeName","pathNode":{"id":156,"name":"Origin","nameLocations":["1962:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1962:6:0"},"referencedDeclaration":40,"src":"1962:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":160,"mutability":"mutable","name":"_receiver","nameLocation":"2003:9:0","nodeType":"VariableDeclaration","scope":169,"src":"1995:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"_guid","nameLocation":"2030:5:0","nodeType":"VariableDeclaration","scope":169,"src":"2022:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2022:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":164,"mutability":"mutable","name":"_message","nameLocation":"2060:8:0","nodeType":"VariableDeclaration","scope":169,"src":"2045:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":163,"name":"bytes","nodeType":"ElementaryTypeName","src":"2045:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"_extraData","nameLocation":"2093:10:0","nodeType":"VariableDeclaration","scope":169,"src":"2078:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":165,"name":"bytes","nodeType":"ElementaryTypeName","src":"2078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1952:157:0"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[],"src":"2126:0:0"},"scope":202,"src":"1934:193:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2a56c1b0","id":181,"implemented":false,"kind":"function","modifiers":[],"name":"clear","nameLocation":"2269:5:0","nodeType":"FunctionDefinition","parameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"_oapp","nameLocation":"2283:5:0","nodeType":"VariableDeclaration","scope":181,"src":"2275:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"2275:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"_origin","nameLocation":"2306:7:0","nodeType":"VariableDeclaration","scope":181,"src":"2290:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":173,"nodeType":"UserDefinedTypeName","pathNode":{"id":172,"name":"Origin","nameLocations":["2290:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2290:6:0"},"referencedDeclaration":40,"src":"2290:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"_guid","nameLocation":"2323:5:0","nodeType":"VariableDeclaration","scope":181,"src":"2315:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2315:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"_message","nameLocation":"2345:8:0","nodeType":"VariableDeclaration","scope":181,"src":"2330:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":177,"name":"bytes","nodeType":"ElementaryTypeName","src":"2330:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2274:80:0"},"returnParameters":{"id":180,"nodeType":"ParameterList","parameters":[],"src":"2363:0:0"},"scope":202,"src":"2260:104:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c28e0eed","id":186,"implemented":false,"kind":"function","modifiers":[],"name":"setLzToken","nameLocation":"2379:10:0","nodeType":"FunctionDefinition","parameters":{"id":184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"_lzToken","nameLocation":"2398:8:0","nodeType":"VariableDeclaration","scope":186,"src":"2390:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":182,"name":"address","nodeType":"ElementaryTypeName","src":"2390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2389:18:0"},"returnParameters":{"id":185,"nodeType":"ParameterList","parameters":[],"src":"2416:0:0"},"scope":202,"src":"2370:47:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e4fe1d94","id":191,"implemented":false,"kind":"function","modifiers":[],"name":"lzToken","nameLocation":"2432:7:0","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[],"src":"2439:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":191,"src":"2465:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":188,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:9:0"},"scope":202,"src":"2423:51:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e1758bd8","id":196,"implemented":false,"kind":"function","modifiers":[],"name":"nativeToken","nameLocation":"2489:11:0","nodeType":"FunctionDefinition","parameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"2500:2:0"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":196,"src":"2526:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":193,"name":"address","nodeType":"ElementaryTypeName","src":"2526:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2525:9:0"},"scope":202,"src":"2480:55:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ca5eb5e1","id":201,"implemented":false,"kind":"function","modifiers":[],"name":"setDelegate","nameLocation":"2550:11:0","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"_delegate","nameLocation":"2570:9:0","nodeType":"VariableDeclaration","scope":201,"src":"2562:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"2562:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2561:19:0"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[],"src":"2589:0:0"},"scope":202,"src":"2541:49:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":203,"src":"673:1919:0","usedErrors":[],"usedEvents":[56,65,72,93,97,103,311,317,323,331,339,347,357,550,562,574,688,698,720]}],"src":"33:2560:0"},"id":0},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","exportedSymbols":{"ILayerZeroReceiver":[238],"Origin":[40]},"id":239,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":204,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:1"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"./ILayerZeroEndpointV2.sol","id":206,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":239,"sourceUnit":203,"src":"59:52:1","symbolAliases":[{"foreign":{"id":205,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"68:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ILayerZeroReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":238,"linearizedBaseContracts":[238],"name":"ILayerZeroReceiver","nameLocation":"123:18:1","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ff7bd03d","id":214,"implemented":false,"kind":"function","modifiers":[],"name":"allowInitializePath","nameLocation":"157:19:1","nodeType":"FunctionDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"_origin","nameLocation":"193:7:1","nodeType":"VariableDeclaration","scope":214,"src":"177:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":208,"nodeType":"UserDefinedTypeName","pathNode":{"id":207,"name":"Origin","nameLocations":["177:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"177:6:1"},"referencedDeclaration":40,"src":"177:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"}],"src":"176:25:1"},"returnParameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":214,"src":"225:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":211,"name":"bool","nodeType":"ElementaryTypeName","src":"225:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"224:6:1"},"scope":238,"src":"148:83:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7d25a05e","id":223,"implemented":false,"kind":"function","modifiers":[],"name":"nextNonce","nameLocation":"246:9:1","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"_eid","nameLocation":"263:4:1","nodeType":"VariableDeclaration","scope":223,"src":"256:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":215,"name":"uint32","nodeType":"ElementaryTypeName","src":"256:6:1","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"_sender","nameLocation":"277:7:1","nodeType":"VariableDeclaration","scope":223,"src":"269:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"269:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"255:30:1"},"returnParameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":223,"src":"309:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":220,"name":"uint64","nodeType":"ElementaryTypeName","src":"309:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"308:8:1"},"scope":238,"src":"237:80:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"13137d65","id":237,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"332:9:1","nodeType":"FunctionDefinition","parameters":{"id":235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"_origin","nameLocation":"367:7:1","nodeType":"VariableDeclaration","scope":237,"src":"351:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":225,"nodeType":"UserDefinedTypeName","pathNode":{"id":224,"name":"Origin","nameLocations":["351:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"351:6:1"},"referencedDeclaration":40,"src":"351:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"_guid","nameLocation":"392:5:1","nodeType":"VariableDeclaration","scope":237,"src":"384:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"384:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"_message","nameLocation":"422:8:1","nodeType":"VariableDeclaration","scope":237,"src":"407:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":229,"name":"bytes","nodeType":"ElementaryTypeName","src":"407:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":232,"mutability":"mutable","name":"_executor","nameLocation":"448:9:1","nodeType":"VariableDeclaration","scope":237,"src":"440:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":231,"name":"address","nodeType":"ElementaryTypeName","src":"440:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":234,"mutability":"mutable","name":"_extraData","nameLocation":"482:10:1","nodeType":"VariableDeclaration","scope":237,"src":"467:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":233,"name":"bytes","nodeType":"ElementaryTypeName","src":"467:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"341:157:1"},"returnParameters":{"id":236,"nodeType":"ParameterList","parameters":[],"src":"515:0:1"},"scope":238,"src":"323:193:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":239,"src":"113:405:1","usedErrors":[],"usedEvents":[]}],"src":"33:486:1"},"id":1},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol","exportedSymbols":{"IERC165":[5332],"IMessageLib":[293],"MessageLibType":[248],"SetConfigParam":[302]},"id":294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":240,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:2"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":242,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":294,"sourceUnit":5333,"src":"59:82:2","symbolAliases":[{"foreign":{"id":241,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5332,"src":"68:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","file":"./IMessageLibManager.sol","id":244,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":294,"sourceUnit":539,"src":"143:58:2","symbolAliases":[{"foreign":{"id":243,"name":"SetConfigParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"152:14:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"MessageLibType","id":248,"members":[{"id":245,"name":"Send","nameLocation":"229:4:2","nodeType":"EnumValue","src":"229:4:2"},{"id":246,"name":"Receive","nameLocation":"239:7:2","nodeType":"EnumValue","src":"239:7:2"},{"id":247,"name":"SendAndReceive","nameLocation":"252:14:2","nodeType":"EnumValue","src":"252:14:2"}],"name":"MessageLibType","nameLocation":"208:14:2","nodeType":"EnumDefinition","src":"203:65:2"},{"abstract":false,"baseContracts":[{"baseName":{"id":249,"name":"IERC165","nameLocations":["295:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":5332,"src":"295:7:2"},"id":250,"nodeType":"InheritanceSpecifier","src":"295:7:2"}],"canonicalName":"IMessageLib","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":293,"linearizedBaseContracts":[293,5332],"name":"IMessageLib","nameLocation":"280:11:2","nodeType":"ContractDefinition","nodes":[{"functionSelector":"20efd722","id":259,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"318:9:2","nodeType":"FunctionDefinition","parameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":252,"mutability":"mutable","name":"_oapp","nameLocation":"336:5:2","nodeType":"VariableDeclaration","scope":259,"src":"328:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"_config","nameLocation":"369:7:2","nodeType":"VariableDeclaration","scope":259,"src":"343:33:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_calldata_ptr_$dyn_calldata_ptr","typeString":"struct SetConfigParam[]"},"typeName":{"baseType":{"id":254,"nodeType":"UserDefinedTypeName","pathNode":{"id":253,"name":"SetConfigParam","nameLocations":["343:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"343:14:2"},"referencedDeclaration":302,"src":"343:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_SetConfigParam_$302_storage_ptr","typeString":"struct SetConfigParam"}},"id":255,"nodeType":"ArrayTypeName","src":"343:16:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_storage_$dyn_storage_ptr","typeString":"struct SetConfigParam[]"}},"visibility":"internal"}],"src":"327:50:2"},"returnParameters":{"id":258,"nodeType":"ParameterList","parameters":[],"src":"386:0:2"},"scope":293,"src":"309:78:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9c33abf7","id":270,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"402:9:2","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"_eid","nameLocation":"419:4:2","nodeType":"VariableDeclaration","scope":270,"src":"412:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":260,"name":"uint32","nodeType":"ElementaryTypeName","src":"412:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"_oapp","nameLocation":"433:5:2","nodeType":"VariableDeclaration","scope":270,"src":"425:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":262,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"_configType","nameLocation":"447:11:2","nodeType":"VariableDeclaration","scope":270,"src":"440:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":264,"name":"uint32","nodeType":"ElementaryTypeName","src":"440:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"411:48:2"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"config","nameLocation":"496:6:2","nodeType":"VariableDeclaration","scope":270,"src":"483:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":267,"name":"bytes","nodeType":"ElementaryTypeName","src":"483:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"482:21:2"},"scope":293,"src":"393:111:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6750cd4c","id":277,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedEid","nameLocation":"519:14:2","nodeType":"FunctionDefinition","parameters":{"id":273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"_eid","nameLocation":"541:4:2","nodeType":"VariableDeclaration","scope":277,"src":"534:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":271,"name":"uint32","nodeType":"ElementaryTypeName","src":"534:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"533:13:2"},"returnParameters":{"id":276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":277,"src":"570:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":274,"name":"bool","nodeType":"ElementaryTypeName","src":"570:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"569:6:2"},"scope":293,"src":"510:66:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":286,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"648:7:2","nodeType":"FunctionDefinition","parameters":{"id":278,"nodeType":"ParameterList","parameters":[],"src":"655:2:2"},"returnParameters":{"id":285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":280,"mutability":"mutable","name":"major","nameLocation":"688:5:2","nodeType":"VariableDeclaration","scope":286,"src":"681:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":279,"name":"uint64","nodeType":"ElementaryTypeName","src":"681:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":282,"mutability":"mutable","name":"minor","nameLocation":"701:5:2","nodeType":"VariableDeclaration","scope":286,"src":"695:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":281,"name":"uint8","nodeType":"ElementaryTypeName","src":"695:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":284,"mutability":"mutable","name":"endpointVersion","nameLocation":"714:15:2","nodeType":"VariableDeclaration","scope":286,"src":"708:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":283,"name":"uint8","nodeType":"ElementaryTypeName","src":"708:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"680:50:2"},"scope":293,"src":"639:92:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1881d94d","id":292,"implemented":false,"kind":"function","modifiers":[],"name":"messageLibType","nameLocation":"746:14:2","nodeType":"FunctionDefinition","parameters":{"id":287,"nodeType":"ParameterList","parameters":[],"src":"760:2:2"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":292,"src":"786:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MessageLibType_$248","typeString":"enum MessageLibType"},"typeName":{"id":289,"nodeType":"UserDefinedTypeName","pathNode":{"id":288,"name":"MessageLibType","nameLocations":["786:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":248,"src":"786:14:2"},"referencedDeclaration":248,"src":"786:14:2","typeDescriptions":{"typeIdentifier":"t_enum$_MessageLibType_$248","typeString":"enum MessageLibType"}},"visibility":"internal"}],"src":"785:16:2"},"scope":293,"src":"737:65:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":294,"src":"270:534:2","usedErrors":[],"usedEvents":[]}],"src":"33:772:2"},"id":2},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","exportedSymbols":{"IMessageLibManager":[538],"SetConfigParam":[302]},"id":539,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":295,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:3"},{"canonicalName":"SetConfigParam","id":302,"members":[{"constant":false,"id":297,"mutability":"mutable","name":"eid","nameLocation":"94:3:3","nodeType":"VariableDeclaration","scope":302,"src":"87:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":296,"name":"uint32","nodeType":"ElementaryTypeName","src":"87:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":299,"mutability":"mutable","name":"configType","nameLocation":"110:10:3","nodeType":"VariableDeclaration","scope":302,"src":"103:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":298,"name":"uint32","nodeType":"ElementaryTypeName","src":"103:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":301,"mutability":"mutable","name":"config","nameLocation":"132:6:3","nodeType":"VariableDeclaration","scope":302,"src":"126:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":300,"name":"bytes","nodeType":"ElementaryTypeName","src":"126:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetConfigParam","nameLocation":"66:14:3","nodeType":"StructDefinition","scope":539,"src":"59:82:3","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessageLibManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":538,"linearizedBaseContracts":[538],"name":"IMessageLibManager","nameLocation":"153:18:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IMessageLibManager.Timeout","id":307,"members":[{"constant":false,"id":304,"mutability":"mutable","name":"lib","nameLocation":"211:3:3","nodeType":"VariableDeclaration","scope":307,"src":"203:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"203:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":306,"mutability":"mutable","name":"expiry","nameLocation":"232:6:3","nodeType":"VariableDeclaration","scope":307,"src":"224:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":305,"name":"uint256","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Timeout","nameLocation":"185:7:3","nodeType":"StructDefinition","scope":538,"src":"178:67:3","visibility":"public"},{"anonymous":false,"eventSelector":"6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5","id":311,"name":"LibraryRegistered","nameLocation":"257:17:3","nodeType":"EventDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"283:6:3","nodeType":"VariableDeclaration","scope":311,"src":"275:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":308,"name":"address","nodeType":"ElementaryTypeName","src":"275:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"274:16:3"},"src":"251:40:3"},{"anonymous":false,"eventSelector":"16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f5","id":317,"name":"DefaultSendLibrarySet","nameLocation":"302:21:3","nodeType":"EventDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"331:3:3","nodeType":"VariableDeclaration","scope":317,"src":"324:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":312,"name":"uint32","nodeType":"ElementaryTypeName","src":"324:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":315,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"344:6:3","nodeType":"VariableDeclaration","scope":317,"src":"336:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"336:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"323:28:3"},"src":"296:56:3"},{"anonymous":false,"eventSelector":"c16891855cffb4a5ac51ac11864a3f3c96ba816cc45fe686c987ae36277de5ec","id":323,"name":"DefaultReceiveLibrarySet","nameLocation":"363:24:3","nodeType":"EventDefinition","parameters":{"id":322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"395:3:3","nodeType":"VariableDeclaration","scope":323,"src":"388:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":318,"name":"uint32","nodeType":"ElementaryTypeName","src":"388:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":321,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"408:6:3","nodeType":"VariableDeclaration","scope":323,"src":"400:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":320,"name":"address","nodeType":"ElementaryTypeName","src":"400:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:28:3"},"src":"357:59:3"},{"anonymous":false,"eventSelector":"55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f8","id":331,"name":"DefaultReceiveLibraryTimeoutSet","nameLocation":"427:31:3","nodeType":"EventDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"466:3:3","nodeType":"VariableDeclaration","scope":331,"src":"459:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":324,"name":"uint32","nodeType":"ElementaryTypeName","src":"459:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":327,"indexed":false,"mutability":"mutable","name":"oldLib","nameLocation":"479:6:3","nodeType":"VariableDeclaration","scope":331,"src":"471:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":326,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":329,"indexed":false,"mutability":"mutable","name":"expiry","nameLocation":"495:6:3","nodeType":"VariableDeclaration","scope":331,"src":"487:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":328,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"458:44:3"},"src":"421:82:3"},{"anonymous":false,"eventSelector":"4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c","id":339,"name":"SendLibrarySet","nameLocation":"514:14:3","nodeType":"EventDefinition","parameters":{"id":338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"537:6:3","nodeType":"VariableDeclaration","scope":339,"src":"529:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":335,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"552:3:3","nodeType":"VariableDeclaration","scope":339,"src":"545:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":334,"name":"uint32","nodeType":"ElementaryTypeName","src":"545:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":337,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"565:6:3","nodeType":"VariableDeclaration","scope":339,"src":"557:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"557:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"528:44:3"},"src":"508:65:3"},{"anonymous":false,"eventSelector":"cd6f92f5ac6185a5acfa02c92090746cec64d777269cbcd0ed031e396657a1c2","id":347,"name":"ReceiveLibrarySet","nameLocation":"584:17:3","nodeType":"EventDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":341,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"610:8:3","nodeType":"VariableDeclaration","scope":347,"src":"602:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":340,"name":"address","nodeType":"ElementaryTypeName","src":"602:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":343,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"627:3:3","nodeType":"VariableDeclaration","scope":347,"src":"620:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":342,"name":"uint32","nodeType":"ElementaryTypeName","src":"620:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":345,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"640:6:3","nodeType":"VariableDeclaration","scope":347,"src":"632:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":344,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"601:46:3"},"src":"578:70:3"},{"anonymous":false,"eventSelector":"4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928","id":357,"name":"ReceiveLibraryTimeoutSet","nameLocation":"659:24:3","nodeType":"EventDefinition","parameters":{"id":356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"692:8:3","nodeType":"VariableDeclaration","scope":357,"src":"684:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":348,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":351,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"709:3:3","nodeType":"VariableDeclaration","scope":357,"src":"702:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":350,"name":"uint32","nodeType":"ElementaryTypeName","src":"702:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":353,"indexed":false,"mutability":"mutable","name":"oldLib","nameLocation":"722:6:3","nodeType":"VariableDeclaration","scope":357,"src":"714:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":352,"name":"address","nodeType":"ElementaryTypeName","src":"714:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":355,"indexed":false,"mutability":"mutable","name":"timeout","nameLocation":"738:7:3","nodeType":"VariableDeclaration","scope":357,"src":"730:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"683:63:3"},"src":"653:94:3"},{"functionSelector":"e8964e81","id":362,"implemented":false,"kind":"function","modifiers":[],"name":"registerLibrary","nameLocation":"762:15:3","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"_lib","nameLocation":"786:4:3","nodeType":"VariableDeclaration","scope":362,"src":"778:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":358,"name":"address","nodeType":"ElementaryTypeName","src":"778:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"777:14:3"},"returnParameters":{"id":361,"nodeType":"ParameterList","parameters":[],"src":"800:0:3"},"scope":538,"src":"753:48:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dc706a62","id":369,"implemented":false,"kind":"function","modifiers":[],"name":"isRegisteredLibrary","nameLocation":"816:19:3","nodeType":"FunctionDefinition","parameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"_lib","nameLocation":"844:4:3","nodeType":"VariableDeclaration","scope":369,"src":"836:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"835:14:3"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":369,"src":"873:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":366,"name":"bool","nodeType":"ElementaryTypeName","src":"873:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"872:6:3"},"scope":538,"src":"807:72:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9132e5c3","id":375,"implemented":false,"kind":"function","modifiers":[],"name":"getRegisteredLibraries","nameLocation":"894:22:3","nodeType":"FunctionDefinition","parameters":{"id":370,"nodeType":"ParameterList","parameters":[],"src":"916:2:3"},"returnParameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":375,"src":"942:16:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":371,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":372,"nodeType":"ArrayTypeName","src":"942:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"941:18:3"},"scope":538,"src":"885:75:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aafea312","id":382,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultSendLibrary","nameLocation":"975:21:3","nodeType":"FunctionDefinition","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"_eid","nameLocation":"1004:4:3","nodeType":"VariableDeclaration","scope":382,"src":"997:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":376,"name":"uint32","nodeType":"ElementaryTypeName","src":"997:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"_newLib","nameLocation":"1018:7:3","nodeType":"VariableDeclaration","scope":382,"src":"1010:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"996:30:3"},"returnParameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"1035:0:3"},"scope":538,"src":"966:70:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f64be4c7","id":389,"implemented":false,"kind":"function","modifiers":[],"name":"defaultSendLibrary","nameLocation":"1051:18:3","nodeType":"FunctionDefinition","parameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"_eid","nameLocation":"1077:4:3","nodeType":"VariableDeclaration","scope":389,"src":"1070:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":383,"name":"uint32","nodeType":"ElementaryTypeName","src":"1070:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1069:13:3"},"returnParameters":{"id":388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":389,"src":"1106:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1105:9:3"},"scope":538,"src":"1042:73:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a718531b","id":398,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultReceiveLibrary","nameLocation":"1130:24:3","nodeType":"FunctionDefinition","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":391,"mutability":"mutable","name":"_eid","nameLocation":"1162:4:3","nodeType":"VariableDeclaration","scope":398,"src":"1155:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":390,"name":"uint32","nodeType":"ElementaryTypeName","src":"1155:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":393,"mutability":"mutable","name":"_newLib","nameLocation":"1176:7:3","nodeType":"VariableDeclaration","scope":398,"src":"1168:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":395,"mutability":"mutable","name":"_gracePeriod","nameLocation":"1193:12:3","nodeType":"VariableDeclaration","scope":398,"src":"1185:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1154:52:3"},"returnParameters":{"id":397,"nodeType":"ParameterList","parameters":[],"src":"1215:0:3"},"scope":538,"src":"1121:95:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6f50a803","id":405,"implemented":false,"kind":"function","modifiers":[],"name":"defaultReceiveLibrary","nameLocation":"1231:21:3","nodeType":"FunctionDefinition","parameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"mutability":"mutable","name":"_eid","nameLocation":"1260:4:3","nodeType":"VariableDeclaration","scope":405,"src":"1253:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":399,"name":"uint32","nodeType":"ElementaryTypeName","src":"1253:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1252:13:3"},"returnParameters":{"id":404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":405,"src":"1289:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":402,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:9:3"},"scope":538,"src":"1222:76:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d4b4ec8f","id":414,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultReceiveLibraryTimeout","nameLocation":"1313:31:3","nodeType":"FunctionDefinition","parameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"_eid","nameLocation":"1352:4:3","nodeType":"VariableDeclaration","scope":414,"src":"1345:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":406,"name":"uint32","nodeType":"ElementaryTypeName","src":"1345:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":409,"mutability":"mutable","name":"_lib","nameLocation":"1366:4:3","nodeType":"VariableDeclaration","scope":414,"src":"1358:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":408,"name":"address","nodeType":"ElementaryTypeName","src":"1358:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"_expiry","nameLocation":"1380:7:3","nodeType":"VariableDeclaration","scope":414,"src":"1372:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1344:44:3"},"returnParameters":{"id":413,"nodeType":"ParameterList","parameters":[],"src":"1397:0:3"},"scope":538,"src":"1304:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6e83f5bb","id":423,"implemented":false,"kind":"function","modifiers":[],"name":"defaultReceiveLibraryTimeout","nameLocation":"1413:28:3","nodeType":"FunctionDefinition","parameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"_eid","nameLocation":"1449:4:3","nodeType":"VariableDeclaration","scope":423,"src":"1442:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":415,"name":"uint32","nodeType":"ElementaryTypeName","src":"1442:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1441:13:3"},"returnParameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"lib","nameLocation":"1486:3:3","nodeType":"VariableDeclaration","scope":423,"src":"1478:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":418,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"expiry","nameLocation":"1499:6:3","nodeType":"VariableDeclaration","scope":423,"src":"1491:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1477:29:3"},"scope":538,"src":"1404:103:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6750cd4c","id":430,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedEid","nameLocation":"1522:14:3","nodeType":"FunctionDefinition","parameters":{"id":426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":425,"mutability":"mutable","name":"_eid","nameLocation":"1544:4:3","nodeType":"VariableDeclaration","scope":430,"src":"1537:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":424,"name":"uint32","nodeType":"ElementaryTypeName","src":"1537:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1536:13:3"},"returnParameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"1573:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":427,"name":"bool","nodeType":"ElementaryTypeName","src":"1573:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1572:6:3"},"scope":538,"src":"1513:66:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9d7f9775","id":441,"implemented":false,"kind":"function","modifiers":[],"name":"isValidReceiveLibrary","nameLocation":"1594:21:3","nodeType":"FunctionDefinition","parameters":{"id":437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":432,"mutability":"mutable","name":"_receiver","nameLocation":"1624:9:3","nodeType":"VariableDeclaration","scope":441,"src":"1616:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":431,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":434,"mutability":"mutable","name":"_eid","nameLocation":"1642:4:3","nodeType":"VariableDeclaration","scope":441,"src":"1635:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":433,"name":"uint32","nodeType":"ElementaryTypeName","src":"1635:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":436,"mutability":"mutable","name":"_lib","nameLocation":"1656:4:3","nodeType":"VariableDeclaration","scope":441,"src":"1648:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":435,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1615:46:3"},"returnParameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":441,"src":"1685:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":438,"name":"bool","nodeType":"ElementaryTypeName","src":"1685:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1684:6:3"},"scope":538,"src":"1585:106:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":442,"nodeType":"StructuredDocumentation","src":"1697:59:3","text":"------------------- OApp interfaces -------------------"},"functionSelector":"9535ff30","id":451,"implemented":false,"kind":"function","modifiers":[],"name":"setSendLibrary","nameLocation":"1770:14:3","nodeType":"FunctionDefinition","parameters":{"id":449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":444,"mutability":"mutable","name":"_oapp","nameLocation":"1793:5:3","nodeType":"VariableDeclaration","scope":451,"src":"1785:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":443,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":446,"mutability":"mutable","name":"_eid","nameLocation":"1807:4:3","nodeType":"VariableDeclaration","scope":451,"src":"1800:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":445,"name":"uint32","nodeType":"ElementaryTypeName","src":"1800:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":448,"mutability":"mutable","name":"_newLib","nameLocation":"1821:7:3","nodeType":"VariableDeclaration","scope":451,"src":"1813:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":447,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:45:3"},"returnParameters":{"id":450,"nodeType":"ParameterList","parameters":[],"src":"1838:0:3"},"scope":538,"src":"1761:78:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b96a277f","id":460,"implemented":false,"kind":"function","modifiers":[],"name":"getSendLibrary","nameLocation":"1854:14:3","nodeType":"FunctionDefinition","parameters":{"id":456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":453,"mutability":"mutable","name":"_sender","nameLocation":"1877:7:3","nodeType":"VariableDeclaration","scope":460,"src":"1869:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"1869:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"_eid","nameLocation":"1893:4:3","nodeType":"VariableDeclaration","scope":460,"src":"1886:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":454,"name":"uint32","nodeType":"ElementaryTypeName","src":"1886:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1868:30:3"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":458,"mutability":"mutable","name":"lib","nameLocation":"1930:3:3","nodeType":"VariableDeclaration","scope":460,"src":"1922:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1921:13:3"},"scope":538,"src":"1845:90:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dc93c8a2","id":469,"implemented":false,"kind":"function","modifiers":[],"name":"isDefaultSendLibrary","nameLocation":"1950:20:3","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":462,"mutability":"mutable","name":"_sender","nameLocation":"1979:7:3","nodeType":"VariableDeclaration","scope":469,"src":"1971:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":461,"name":"address","nodeType":"ElementaryTypeName","src":"1971:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":464,"mutability":"mutable","name":"_eid","nameLocation":"1995:4:3","nodeType":"VariableDeclaration","scope":469,"src":"1988:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":463,"name":"uint32","nodeType":"ElementaryTypeName","src":"1988:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1970:30:3"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":469,"src":"2024:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":466,"name":"bool","nodeType":"ElementaryTypeName","src":"2024:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2023:6:3"},"scope":538,"src":"1941:89:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6a14d715","id":480,"implemented":false,"kind":"function","modifiers":[],"name":"setReceiveLibrary","nameLocation":"2045:17:3","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"mutability":"mutable","name":"_oapp","nameLocation":"2071:5:3","nodeType":"VariableDeclaration","scope":480,"src":"2063:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"2063:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":473,"mutability":"mutable","name":"_eid","nameLocation":"2085:4:3","nodeType":"VariableDeclaration","scope":480,"src":"2078:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":472,"name":"uint32","nodeType":"ElementaryTypeName","src":"2078:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":475,"mutability":"mutable","name":"_newLib","nameLocation":"2099:7:3","nodeType":"VariableDeclaration","scope":480,"src":"2091:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":474,"name":"address","nodeType":"ElementaryTypeName","src":"2091:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"_gracePeriod","nameLocation":"2116:12:3","nodeType":"VariableDeclaration","scope":480,"src":"2108:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":476,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:67:3"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"2138:0:3"},"scope":538,"src":"2036:103:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"402f8468","id":491,"implemented":false,"kind":"function","modifiers":[],"name":"getReceiveLibrary","nameLocation":"2154:17:3","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"_receiver","nameLocation":"2180:9:3","nodeType":"VariableDeclaration","scope":491,"src":"2172:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":481,"name":"address","nodeType":"ElementaryTypeName","src":"2172:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"_eid","nameLocation":"2198:4:3","nodeType":"VariableDeclaration","scope":491,"src":"2191:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":483,"name":"uint32","nodeType":"ElementaryTypeName","src":"2191:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2171:32:3"},"returnParameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":487,"mutability":"mutable","name":"lib","nameLocation":"2235:3:3","nodeType":"VariableDeclaration","scope":491,"src":"2227:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":486,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":489,"mutability":"mutable","name":"isDefault","nameLocation":"2245:9:3","nodeType":"VariableDeclaration","scope":491,"src":"2240:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":488,"name":"bool","nodeType":"ElementaryTypeName","src":"2240:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2226:29:3"},"scope":538,"src":"2145:111:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"183c834f","id":502,"implemented":false,"kind":"function","modifiers":[],"name":"setReceiveLibraryTimeout","nameLocation":"2271:24:3","nodeType":"FunctionDefinition","parameters":{"id":500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":493,"mutability":"mutable","name":"_oapp","nameLocation":"2304:5:3","nodeType":"VariableDeclaration","scope":502,"src":"2296:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":495,"mutability":"mutable","name":"_eid","nameLocation":"2318:4:3","nodeType":"VariableDeclaration","scope":502,"src":"2311:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":494,"name":"uint32","nodeType":"ElementaryTypeName","src":"2311:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":497,"mutability":"mutable","name":"_lib","nameLocation":"2332:4:3","nodeType":"VariableDeclaration","scope":502,"src":"2324:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":496,"name":"address","nodeType":"ElementaryTypeName","src":"2324:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":499,"mutability":"mutable","name":"_expiry","nameLocation":"2346:7:3","nodeType":"VariableDeclaration","scope":502,"src":"2338:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2338:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2295:59:3"},"returnParameters":{"id":501,"nodeType":"ParameterList","parameters":[],"src":"2363:0:3"},"scope":538,"src":"2262:102:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ef667aa1","id":513,"implemented":false,"kind":"function","modifiers":[],"name":"receiveLibraryTimeout","nameLocation":"2379:21:3","nodeType":"FunctionDefinition","parameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"_receiver","nameLocation":"2409:9:3","nodeType":"VariableDeclaration","scope":513,"src":"2401:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":503,"name":"address","nodeType":"ElementaryTypeName","src":"2401:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"_eid","nameLocation":"2427:4:3","nodeType":"VariableDeclaration","scope":513,"src":"2420:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":505,"name":"uint32","nodeType":"ElementaryTypeName","src":"2420:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2400:32:3"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"lib","nameLocation":"2464:3:3","nodeType":"VariableDeclaration","scope":513,"src":"2456:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":508,"name":"address","nodeType":"ElementaryTypeName","src":"2456:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":511,"mutability":"mutable","name":"expiry","nameLocation":"2477:6:3","nodeType":"VariableDeclaration","scope":513,"src":"2469:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2455:29:3"},"scope":538,"src":"2370:115:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6dbd9f90","id":524,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"2500:9:3","nodeType":"FunctionDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"mutability":"mutable","name":"_oapp","nameLocation":"2518:5:3","nodeType":"VariableDeclaration","scope":524,"src":"2510:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":514,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":517,"mutability":"mutable","name":"_lib","nameLocation":"2533:4:3","nodeType":"VariableDeclaration","scope":524,"src":"2525:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"_params","nameLocation":"2565:7:3","nodeType":"VariableDeclaration","scope":524,"src":"2539:33:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_calldata_ptr_$dyn_calldata_ptr","typeString":"struct SetConfigParam[]"},"typeName":{"baseType":{"id":519,"nodeType":"UserDefinedTypeName","pathNode":{"id":518,"name":"SetConfigParam","nameLocations":["2539:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2539:14:3"},"referencedDeclaration":302,"src":"2539:14:3","typeDescriptions":{"typeIdentifier":"t_struct$_SetConfigParam_$302_storage_ptr","typeString":"struct SetConfigParam"}},"id":520,"nodeType":"ArrayTypeName","src":"2539:16:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_storage_$dyn_storage_ptr","typeString":"struct SetConfigParam[]"}},"visibility":"internal"}],"src":"2509:64:3"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[],"src":"2582:0:3"},"scope":538,"src":"2491:92:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2b3197b9","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"2598:9:3","nodeType":"FunctionDefinition","parameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"_oapp","nameLocation":"2625:5:3","nodeType":"VariableDeclaration","scope":537,"src":"2617:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"2617:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"_lib","nameLocation":"2648:4:3","nodeType":"VariableDeclaration","scope":537,"src":"2640:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"2640:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"_eid","nameLocation":"2669:4:3","nodeType":"VariableDeclaration","scope":537,"src":"2662:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":529,"name":"uint32","nodeType":"ElementaryTypeName","src":"2662:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":532,"mutability":"mutable","name":"_configType","nameLocation":"2690:11:3","nodeType":"VariableDeclaration","scope":537,"src":"2683:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":531,"name":"uint32","nodeType":"ElementaryTypeName","src":"2683:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2607:100:3"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":535,"mutability":"mutable","name":"config","nameLocation":"2744:6:3","nodeType":"VariableDeclaration","scope":537,"src":"2731:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":534,"name":"bytes","nodeType":"ElementaryTypeName","src":"2731:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2730:21:3"},"scope":538,"src":"2589:163:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":539,"src":"143:2611:3","usedErrors":[],"usedEvents":[311,317,323,331,339,347,357]}],"src":"33:2722:3"},"id":3},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol","exportedSymbols":{"IMessagingChannel":[674]},"id":675,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":540,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingChannel","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":674,"linearizedBaseContracts":[674],"name":"IMessagingChannel","nameLocation":"69:17:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde48","id":550,"name":"InboundNonceSkipped","nameLocation":"99:19:4","nodeType":"EventDefinition","parameters":{"id":549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":542,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"126:6:4","nodeType":"VariableDeclaration","scope":550,"src":"119:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":541,"name":"uint32","nodeType":"ElementaryTypeName","src":"119:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":544,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"142:6:4","nodeType":"VariableDeclaration","scope":550,"src":"134:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"134:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":546,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"158:8:4","nodeType":"VariableDeclaration","scope":550,"src":"150:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":545,"name":"address","nodeType":"ElementaryTypeName","src":"150:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":548,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"175:5:4","nodeType":"VariableDeclaration","scope":550,"src":"168:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":547,"name":"uint64","nodeType":"ElementaryTypeName","src":"168:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"118:63:4"},"src":"93:89:4"},{"anonymous":false,"eventSelector":"af0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb55292","id":562,"name":"PacketNilified","nameLocation":"193:14:4","nodeType":"EventDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":552,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"215:6:4","nodeType":"VariableDeclaration","scope":562,"src":"208:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":551,"name":"uint32","nodeType":"ElementaryTypeName","src":"208:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":554,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"231:6:4","nodeType":"VariableDeclaration","scope":562,"src":"223:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"223:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":556,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"247:8:4","nodeType":"VariableDeclaration","scope":562,"src":"239:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":555,"name":"address","nodeType":"ElementaryTypeName","src":"239:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":558,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"264:5:4","nodeType":"VariableDeclaration","scope":562,"src":"257:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":557,"name":"uint64","nodeType":"ElementaryTypeName","src":"257:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":560,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"279:11:4","nodeType":"VariableDeclaration","scope":562,"src":"271:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"271:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"207:84:4"},"src":"187:105:4"},{"anonymous":false,"eventSelector":"7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e","id":574,"name":"PacketBurnt","nameLocation":"303:11:4","nodeType":"EventDefinition","parameters":{"id":573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":564,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"322:6:4","nodeType":"VariableDeclaration","scope":574,"src":"315:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":563,"name":"uint32","nodeType":"ElementaryTypeName","src":"315:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":566,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"338:6:4","nodeType":"VariableDeclaration","scope":574,"src":"330:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"330:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":568,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"354:8:4","nodeType":"VariableDeclaration","scope":574,"src":"346:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":567,"name":"address","nodeType":"ElementaryTypeName","src":"346:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":570,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"371:5:4","nodeType":"VariableDeclaration","scope":574,"src":"364:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":569,"name":"uint64","nodeType":"ElementaryTypeName","src":"364:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":572,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"386:11:4","nodeType":"VariableDeclaration","scope":574,"src":"378:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"378:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"314:84:4"},"src":"297:102:4"},{"functionSelector":"416ecebf","id":579,"implemented":false,"kind":"function","modifiers":[],"name":"eid","nameLocation":"414:3:4","nodeType":"FunctionDefinition","parameters":{"id":575,"nodeType":"ParameterList","parameters":[],"src":"417:2:4"},"returnParameters":{"id":578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":579,"src":"443:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":576,"name":"uint32","nodeType":"ElementaryTypeName","src":"443:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"442:8:4"},"scope":674,"src":"405:46:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d70b8902","id":590,"implemented":false,"kind":"function","modifiers":[],"name":"skip","nameLocation":"614:4:4","nodeType":"FunctionDefinition","parameters":{"id":588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"_oapp","nameLocation":"627:5:4","nodeType":"VariableDeclaration","scope":590,"src":"619:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":583,"mutability":"mutable","name":"_srcEid","nameLocation":"641:7:4","nodeType":"VariableDeclaration","scope":590,"src":"634:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":582,"name":"uint32","nodeType":"ElementaryTypeName","src":"634:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":585,"mutability":"mutable","name":"_sender","nameLocation":"658:7:4","nodeType":"VariableDeclaration","scope":590,"src":"650:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"650:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":587,"mutability":"mutable","name":"_nonce","nameLocation":"674:6:4","nodeType":"VariableDeclaration","scope":590,"src":"667:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":586,"name":"uint64","nodeType":"ElementaryTypeName","src":"667:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"618:63:4"},"returnParameters":{"id":589,"nodeType":"ParameterList","parameters":[],"src":"690:0:4"},"scope":674,"src":"605:86:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e80fbf3","id":603,"implemented":false,"kind":"function","modifiers":[],"name":"nilify","nameLocation":"706:6:4","nodeType":"FunctionDefinition","parameters":{"id":601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"_oapp","nameLocation":"721:5:4","nodeType":"VariableDeclaration","scope":603,"src":"713:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":594,"mutability":"mutable","name":"_srcEid","nameLocation":"735:7:4","nodeType":"VariableDeclaration","scope":603,"src":"728:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":593,"name":"uint32","nodeType":"ElementaryTypeName","src":"728:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":596,"mutability":"mutable","name":"_sender","nameLocation":"752:7:4","nodeType":"VariableDeclaration","scope":603,"src":"744:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":595,"name":"bytes32","nodeType":"ElementaryTypeName","src":"744:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":598,"mutability":"mutable","name":"_nonce","nameLocation":"768:6:4","nodeType":"VariableDeclaration","scope":603,"src":"761:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":597,"name":"uint64","nodeType":"ElementaryTypeName","src":"761:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":600,"mutability":"mutable","name":"_payloadHash","nameLocation":"784:12:4","nodeType":"VariableDeclaration","scope":603,"src":"776:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"776:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"712:85:4"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"806:0:4"},"scope":674,"src":"697:110:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40f80683","id":616,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"822:4:4","nodeType":"FunctionDefinition","parameters":{"id":614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"_oapp","nameLocation":"835:5:4","nodeType":"VariableDeclaration","scope":616,"src":"827:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":604,"name":"address","nodeType":"ElementaryTypeName","src":"827:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"_srcEid","nameLocation":"849:7:4","nodeType":"VariableDeclaration","scope":616,"src":"842:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":606,"name":"uint32","nodeType":"ElementaryTypeName","src":"842:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"_sender","nameLocation":"866:7:4","nodeType":"VariableDeclaration","scope":616,"src":"858:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"858:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"_nonce","nameLocation":"882:6:4","nodeType":"VariableDeclaration","scope":616,"src":"875:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":610,"name":"uint64","nodeType":"ElementaryTypeName","src":"875:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"_payloadHash","nameLocation":"898:12:4","nodeType":"VariableDeclaration","scope":616,"src":"890:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"890:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"826:85:4"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[],"src":"920:0:4"},"scope":674,"src":"813:108:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"aafe5e07","id":627,"implemented":false,"kind":"function","modifiers":[],"name":"nextGuid","nameLocation":"936:8:4","nodeType":"FunctionDefinition","parameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"_sender","nameLocation":"953:7:4","nodeType":"VariableDeclaration","scope":627,"src":"945:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":617,"name":"address","nodeType":"ElementaryTypeName","src":"945:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":620,"mutability":"mutable","name":"_dstEid","nameLocation":"969:7:4","nodeType":"VariableDeclaration","scope":627,"src":"962:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":619,"name":"uint32","nodeType":"ElementaryTypeName","src":"962:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":622,"mutability":"mutable","name":"_receiver","nameLocation":"986:9:4","nodeType":"VariableDeclaration","scope":627,"src":"978:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"978:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"944:52:4"},"returnParameters":{"id":626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":625,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":627,"src":"1020:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":624,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1020:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1019:9:4"},"scope":674,"src":"927:102:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a0dd43fc","id":638,"implemented":false,"kind":"function","modifiers":[],"name":"inboundNonce","nameLocation":"1044:12:4","nodeType":"FunctionDefinition","parameters":{"id":634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":629,"mutability":"mutable","name":"_receiver","nameLocation":"1065:9:4","nodeType":"VariableDeclaration","scope":638,"src":"1057:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":628,"name":"address","nodeType":"ElementaryTypeName","src":"1057:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":631,"mutability":"mutable","name":"_srcEid","nameLocation":"1083:7:4","nodeType":"VariableDeclaration","scope":638,"src":"1076:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":630,"name":"uint32","nodeType":"ElementaryTypeName","src":"1076:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":633,"mutability":"mutable","name":"_sender","nameLocation":"1100:7:4","nodeType":"VariableDeclaration","scope":638,"src":"1092:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1092:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1056:52:4"},"returnParameters":{"id":637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":638,"src":"1132:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":635,"name":"uint64","nodeType":"ElementaryTypeName","src":"1132:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1131:8:4"},"scope":674,"src":"1035:105:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9c6d7340","id":649,"implemented":false,"kind":"function","modifiers":[],"name":"outboundNonce","nameLocation":"1155:13:4","nodeType":"FunctionDefinition","parameters":{"id":645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"_sender","nameLocation":"1177:7:4","nodeType":"VariableDeclaration","scope":649,"src":"1169:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":639,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":642,"mutability":"mutable","name":"_dstEid","nameLocation":"1193:7:4","nodeType":"VariableDeclaration","scope":649,"src":"1186:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":641,"name":"uint32","nodeType":"ElementaryTypeName","src":"1186:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":644,"mutability":"mutable","name":"_receiver","nameLocation":"1210:9:4","nodeType":"VariableDeclaration","scope":649,"src":"1202:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":643,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1202:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1168:52:4"},"returnParameters":{"id":648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":649,"src":"1244:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":646,"name":"uint64","nodeType":"ElementaryTypeName","src":"1244:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1243:8:4"},"scope":674,"src":"1146:106:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9fc7bcd","id":662,"implemented":false,"kind":"function","modifiers":[],"name":"inboundPayloadHash","nameLocation":"1267:18:4","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"_receiver","nameLocation":"1303:9:4","nodeType":"VariableDeclaration","scope":662,"src":"1295:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"1295:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"_srcEid","nameLocation":"1329:7:4","nodeType":"VariableDeclaration","scope":662,"src":"1322:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":652,"name":"uint32","nodeType":"ElementaryTypeName","src":"1322:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"_sender","nameLocation":"1354:7:4","nodeType":"VariableDeclaration","scope":662,"src":"1346:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":654,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1346:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"_nonce","nameLocation":"1378:6:4","nodeType":"VariableDeclaration","scope":662,"src":"1371:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":656,"name":"uint64","nodeType":"ElementaryTypeName","src":"1371:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1285:105:4"},"returnParameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":662,"src":"1414:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1414:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1413:9:4"},"scope":674,"src":"1258:165:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5b17bb70","id":673,"implemented":false,"kind":"function","modifiers":[],"name":"lazyInboundNonce","nameLocation":"1438:16:4","nodeType":"FunctionDefinition","parameters":{"id":669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":664,"mutability":"mutable","name":"_receiver","nameLocation":"1463:9:4","nodeType":"VariableDeclaration","scope":673,"src":"1455:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":663,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":666,"mutability":"mutable","name":"_srcEid","nameLocation":"1481:7:4","nodeType":"VariableDeclaration","scope":673,"src":"1474:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":665,"name":"uint32","nodeType":"ElementaryTypeName","src":"1474:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":668,"mutability":"mutable","name":"_sender","nameLocation":"1498:7:4","nodeType":"VariableDeclaration","scope":673,"src":"1490:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1490:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1454:52:4"},"returnParameters":{"id":672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":673,"src":"1530:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":670,"name":"uint64","nodeType":"ElementaryTypeName","src":"1530:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1529:8:4"},"scope":674,"src":"1429:109:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":675,"src":"59:1481:4","usedErrors":[],"usedEvents":[550,562,574]}],"src":"33:1508:4"},"id":4},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol","exportedSymbols":{"IMessagingComposer":[760]},"id":761,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":676,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingComposer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":760,"linearizedBaseContracts":[760],"name":"IMessagingComposer","nameLocation":"69:18:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc1","id":688,"name":"ComposeSent","nameLocation":"100:11:5","nodeType":"EventDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"120:4:5","nodeType":"VariableDeclaration","scope":688,"src":"112:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":677,"name":"address","nodeType":"ElementaryTypeName","src":"112:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":680,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"134:2:5","nodeType":"VariableDeclaration","scope":688,"src":"126:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"126:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":682,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"146:4:5","nodeType":"VariableDeclaration","scope":688,"src":"138:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"138:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":684,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"159:5:5","nodeType":"VariableDeclaration","scope":688,"src":"152:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":683,"name":"uint16","nodeType":"ElementaryTypeName","src":"152:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":686,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"172:7:5","nodeType":"VariableDeclaration","scope":688,"src":"166:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":685,"name":"bytes","nodeType":"ElementaryTypeName","src":"166:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"111:69:5"},"src":"94:87:5"},{"anonymous":false,"eventSelector":"0036c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c8","id":698,"name":"ComposeDelivered","nameLocation":"192:16:5","nodeType":"EventDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":690,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"217:4:5","nodeType":"VariableDeclaration","scope":698,"src":"209:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":689,"name":"address","nodeType":"ElementaryTypeName","src":"209:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":692,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"231:2:5","nodeType":"VariableDeclaration","scope":698,"src":"223:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":694,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"243:4:5","nodeType":"VariableDeclaration","scope":698,"src":"235:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":693,"name":"bytes32","nodeType":"ElementaryTypeName","src":"235:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":696,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"256:5:5","nodeType":"VariableDeclaration","scope":698,"src":"249:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":695,"name":"uint16","nodeType":"ElementaryTypeName","src":"249:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"208:54:5"},"src":"186:77:5"},{"anonymous":false,"eventSelector":"8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b9","id":720,"name":"LzComposeAlert","nameLocation":"274:14:5","nodeType":"EventDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":700,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"314:4:5","nodeType":"VariableDeclaration","scope":720,"src":"298:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":699,"name":"address","nodeType":"ElementaryTypeName","src":"298:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":702,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"344:2:5","nodeType":"VariableDeclaration","scope":720,"src":"328:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":701,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":704,"indexed":true,"mutability":"mutable","name":"executor","nameLocation":"372:8:5","nodeType":"VariableDeclaration","scope":720,"src":"356:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":703,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":706,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"398:4:5","nodeType":"VariableDeclaration","scope":720,"src":"390:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":705,"name":"bytes32","nodeType":"ElementaryTypeName","src":"390:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":708,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"419:5:5","nodeType":"VariableDeclaration","scope":720,"src":"412:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":707,"name":"uint16","nodeType":"ElementaryTypeName","src":"412:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":710,"indexed":false,"mutability":"mutable","name":"gas","nameLocation":"442:3:5","nodeType":"VariableDeclaration","scope":720,"src":"434:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":709,"name":"uint256","nodeType":"ElementaryTypeName","src":"434:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":712,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"463:5:5","nodeType":"VariableDeclaration","scope":720,"src":"455:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":711,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":714,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"484:7:5","nodeType":"VariableDeclaration","scope":720,"src":"478:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"478:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":716,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"507:9:5","nodeType":"VariableDeclaration","scope":720,"src":"501:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":715,"name":"bytes","nodeType":"ElementaryTypeName","src":"501:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":718,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"532:6:5","nodeType":"VariableDeclaration","scope":720,"src":"526:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":717,"name":"bytes","nodeType":"ElementaryTypeName","src":"526:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"288:256:5"},"src":"268:277:5"},{"functionSelector":"35d330b0","id":733,"implemented":false,"kind":"function","modifiers":[],"name":"composeQueue","nameLocation":"560:12:5","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":722,"mutability":"mutable","name":"_from","nameLocation":"590:5:5","nodeType":"VariableDeclaration","scope":733,"src":"582:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":721,"name":"address","nodeType":"ElementaryTypeName","src":"582:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":724,"mutability":"mutable","name":"_to","nameLocation":"613:3:5","nodeType":"VariableDeclaration","scope":733,"src":"605:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":726,"mutability":"mutable","name":"_guid","nameLocation":"634:5:5","nodeType":"VariableDeclaration","scope":733,"src":"626:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"_index","nameLocation":"656:6:5","nodeType":"VariableDeclaration","scope":733,"src":"649:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":727,"name":"uint16","nodeType":"ElementaryTypeName","src":"649:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"572:96:5"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"messageHash","nameLocation":"700:11:5","nodeType":"VariableDeclaration","scope":733,"src":"692:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"692:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"691:21:5"},"scope":760,"src":"551:162:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7cb59012","id":744,"implemented":false,"kind":"function","modifiers":[],"name":"sendCompose","nameLocation":"728:11:5","nodeType":"FunctionDefinition","parameters":{"id":742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":735,"mutability":"mutable","name":"_to","nameLocation":"748:3:5","nodeType":"VariableDeclaration","scope":744,"src":"740:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":734,"name":"address","nodeType":"ElementaryTypeName","src":"740:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":737,"mutability":"mutable","name":"_guid","nameLocation":"761:5:5","nodeType":"VariableDeclaration","scope":744,"src":"753:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"753:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":739,"mutability":"mutable","name":"_index","nameLocation":"775:6:5","nodeType":"VariableDeclaration","scope":744,"src":"768:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":738,"name":"uint16","nodeType":"ElementaryTypeName","src":"768:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":741,"mutability":"mutable","name":"_message","nameLocation":"798:8:5","nodeType":"VariableDeclaration","scope":744,"src":"783:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":740,"name":"bytes","nodeType":"ElementaryTypeName","src":"783:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"739:68:5"},"returnParameters":{"id":743,"nodeType":"ParameterList","parameters":[],"src":"816:0:5"},"scope":760,"src":"719:98:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"91d20fa1","id":759,"implemented":false,"kind":"function","modifiers":[],"name":"lzCompose","nameLocation":"832:9:5","nodeType":"FunctionDefinition","parameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"_from","nameLocation":"859:5:5","nodeType":"VariableDeclaration","scope":759,"src":"851:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"_to","nameLocation":"882:3:5","nodeType":"VariableDeclaration","scope":759,"src":"874:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":747,"name":"address","nodeType":"ElementaryTypeName","src":"874:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":750,"mutability":"mutable","name":"_guid","nameLocation":"903:5:5","nodeType":"VariableDeclaration","scope":759,"src":"895:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"895:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":752,"mutability":"mutable","name":"_index","nameLocation":"925:6:5","nodeType":"VariableDeclaration","scope":759,"src":"918:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":751,"name":"uint16","nodeType":"ElementaryTypeName","src":"918:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"_message","nameLocation":"956:8:5","nodeType":"VariableDeclaration","scope":759,"src":"941:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":753,"name":"bytes","nodeType":"ElementaryTypeName","src":"941:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":756,"mutability":"mutable","name":"_extraData","nameLocation":"989:10:5","nodeType":"VariableDeclaration","scope":759,"src":"974:25:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":755,"name":"bytes","nodeType":"ElementaryTypeName","src":"974:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"841:164:5"},"returnParameters":{"id":758,"nodeType":"ParameterList","parameters":[],"src":"1022:0:5"},"scope":760,"src":"823:200:5","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":761,"src":"59:966:5","usedErrors":[],"usedEvents":[688,698,720]}],"src":"33:993:5"},"id":5},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol","exportedSymbols":{"IMessagingContext":[775]},"id":776,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":762,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingContext","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":775,"linearizedBaseContracts":[775],"name":"IMessagingContext","nameLocation":"69:17:6","nodeType":"ContractDefinition","nodes":[{"functionSelector":"79624ca9","id":767,"implemented":false,"kind":"function","modifiers":[],"name":"isSendingMessage","nameLocation":"102:16:6","nodeType":"FunctionDefinition","parameters":{"id":763,"nodeType":"ParameterList","parameters":[],"src":"118:2:6"},"returnParameters":{"id":766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":767,"src":"144:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":764,"name":"bool","nodeType":"ElementaryTypeName","src":"144:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"143:6:6"},"scope":775,"src":"93:57:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"14f651a9","id":774,"implemented":false,"kind":"function","modifiers":[],"name":"getSendContext","nameLocation":"165:14:6","nodeType":"FunctionDefinition","parameters":{"id":768,"nodeType":"ParameterList","parameters":[],"src":"179:2:6"},"returnParameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"dstEid","nameLocation":"212:6:6","nodeType":"VariableDeclaration","scope":774,"src":"205:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":769,"name":"uint32","nodeType":"ElementaryTypeName","src":"205:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"sender","nameLocation":"228:6:6","nodeType":"VariableDeclaration","scope":774,"src":"220:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":771,"name":"address","nodeType":"ElementaryTypeName","src":"220:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"204:31:6"},"scope":775,"src":"156:80:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":776,"src":"59:179:6","usedErrors":[],"usedEvents":[]}],"src":"33:206:6"},"id":6},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol","exportedSymbols":{"IMessageLib":[293],"ISendLib":[848],"MessagingFee":[33],"Packet":[796]},"id":849,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":777,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:7"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"./ILayerZeroEndpointV2.sol","id":779,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":849,"sourceUnit":203,"src":"59:58:7","symbolAliases":[{"foreign":{"id":778,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"68:12:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol","file":"./IMessageLib.sol","id":781,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":849,"sourceUnit":294,"src":"118:48:7","symbolAliases":[{"foreign":{"id":780,"name":"IMessageLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"127:11:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"Packet","id":796,"members":[{"constant":false,"id":783,"mutability":"mutable","name":"nonce","nameLocation":"195:5:7","nodeType":"VariableDeclaration","scope":796,"src":"188:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":782,"name":"uint64","nodeType":"ElementaryTypeName","src":"188:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":785,"mutability":"mutable","name":"srcEid","nameLocation":"213:6:7","nodeType":"VariableDeclaration","scope":796,"src":"206:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":784,"name":"uint32","nodeType":"ElementaryTypeName","src":"206:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":787,"mutability":"mutable","name":"sender","nameLocation":"233:6:7","nodeType":"VariableDeclaration","scope":796,"src":"225:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":786,"name":"address","nodeType":"ElementaryTypeName","src":"225:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":789,"mutability":"mutable","name":"dstEid","nameLocation":"252:6:7","nodeType":"VariableDeclaration","scope":796,"src":"245:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":788,"name":"uint32","nodeType":"ElementaryTypeName","src":"245:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":791,"mutability":"mutable","name":"receiver","nameLocation":"272:8:7","nodeType":"VariableDeclaration","scope":796,"src":"264:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"264:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":793,"mutability":"mutable","name":"guid","nameLocation":"294:4:7","nodeType":"VariableDeclaration","scope":796,"src":"286:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"286:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":795,"mutability":"mutable","name":"message","nameLocation":"310:7:7","nodeType":"VariableDeclaration","scope":796,"src":"304:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":794,"name":"bytes","nodeType":"ElementaryTypeName","src":"304:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Packet","nameLocation":"175:6:7","nodeType":"StructDefinition","scope":849,"src":"168:152:7","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":797,"name":"IMessageLib","nameLocations":["344:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":293,"src":"344:11:7"},"id":798,"nodeType":"InheritanceSpecifier","src":"344:11:7"}],"canonicalName":"ISendLib","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":848,"linearizedBaseContracts":[848,293,5332],"name":"ISendLib","nameLocation":"332:8:7","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4389e58f","id":813,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"371:4:7","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"mutability":"mutable","name":"_packet","nameLocation":"401:7:7","nodeType":"VariableDeclaration","scope":813,"src":"385:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_calldata_ptr","typeString":"struct Packet"},"typeName":{"id":800,"nodeType":"UserDefinedTypeName","pathNode":{"id":799,"name":"Packet","nameLocations":["385:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"385:6:7"},"referencedDeclaration":796,"src":"385:6:7","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"},{"constant":false,"id":803,"mutability":"mutable","name":"_options","nameLocation":"433:8:7","nodeType":"VariableDeclaration","scope":813,"src":"418:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":802,"name":"bytes","nodeType":"ElementaryTypeName","src":"418:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":805,"mutability":"mutable","name":"_payInLzToken","nameLocation":"456:13:7","nodeType":"VariableDeclaration","scope":813,"src":"451:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":804,"name":"bool","nodeType":"ElementaryTypeName","src":"451:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"375:100:7"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":813,"src":"494:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":808,"nodeType":"UserDefinedTypeName","pathNode":{"id":807,"name":"MessagingFee","nameLocations":["494:12:7"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"494:12:7"},"referencedDeclaration":33,"src":"494:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"encodedPacket","nameLocation":"528:13:7","nodeType":"VariableDeclaration","scope":813,"src":"515:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":810,"name":"bytes","nodeType":"ElementaryTypeName","src":"515:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"493:49:7"},"scope":848,"src":"362:181:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d80e9bd9","id":826,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"558:5:7","nodeType":"FunctionDefinition","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":816,"mutability":"mutable","name":"_packet","nameLocation":"589:7:7","nodeType":"VariableDeclaration","scope":826,"src":"573:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_calldata_ptr","typeString":"struct Packet"},"typeName":{"id":815,"nodeType":"UserDefinedTypeName","pathNode":{"id":814,"name":"Packet","nameLocations":["573:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"573:6:7"},"referencedDeclaration":796,"src":"573:6:7","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"},{"constant":false,"id":818,"mutability":"mutable","name":"_options","nameLocation":"621:8:7","nodeType":"VariableDeclaration","scope":826,"src":"606:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":817,"name":"bytes","nodeType":"ElementaryTypeName","src":"606:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":820,"mutability":"mutable","name":"_payInLzToken","nameLocation":"644:13:7","nodeType":"VariableDeclaration","scope":826,"src":"639:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"639:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"563:100:7"},"returnParameters":{"id":825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":826,"src":"687:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":823,"nodeType":"UserDefinedTypeName","pathNode":{"id":822,"name":"MessagingFee","nameLocations":["687:12:7"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"687:12:7"},"referencedDeclaration":33,"src":"687:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"686:21:7"},"scope":848,"src":"549:159:7","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f0f44260","id":831,"implemented":false,"kind":"function","modifiers":[],"name":"setTreasury","nameLocation":"723:11:7","nodeType":"FunctionDefinition","parameters":{"id":829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"_treasury","nameLocation":"743:9:7","nodeType":"VariableDeclaration","scope":831,"src":"735:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"735:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"734:19:7"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[],"src":"762:0:7"},"scope":848,"src":"714:49:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fd9be522","id":838,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFee","nameLocation":"778:11:7","nodeType":"FunctionDefinition","parameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"_to","nameLocation":"798:3:7","nodeType":"VariableDeclaration","scope":838,"src":"790:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":832,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":835,"mutability":"mutable","name":"_amount","nameLocation":"811:7:7","nodeType":"VariableDeclaration","scope":838,"src":"803:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":834,"name":"uint256","nodeType":"ElementaryTypeName","src":"803:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"789:30:7"},"returnParameters":{"id":837,"nodeType":"ParameterList","parameters":[],"src":"828:0:7"},"scope":848,"src":"769:60:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"200175f7","id":847,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawLzTokenFee","nameLocation":"844:18:7","nodeType":"FunctionDefinition","parameters":{"id":845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":840,"mutability":"mutable","name":"_lzToken","nameLocation":"871:8:7","nodeType":"VariableDeclaration","scope":847,"src":"863:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":839,"name":"address","nodeType":"ElementaryTypeName","src":"863:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":842,"mutability":"mutable","name":"_to","nameLocation":"889:3:7","nodeType":"VariableDeclaration","scope":847,"src":"881:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":841,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":844,"mutability":"mutable","name":"_amount","nameLocation":"902:7:7","nodeType":"VariableDeclaration","scope":847,"src":"894:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":843,"name":"uint256","nodeType":"ElementaryTypeName","src":"894:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"862:48:7"},"returnParameters":{"id":846,"nodeType":"ParameterList","parameters":[],"src":"919:0:7"},"scope":848,"src":"835:85:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":849,"src":"322:600:7","usedErrors":[],"usedEvents":[]}],"src":"33:890:7"},"id":7},"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol","exportedSymbols":{"AddressCast":[1001]},"id":1002,"license":"LZBL-1.2","nodeType":"SourceUnit","nodes":[{"id":850,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"38:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressCast","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1001,"linearizedBaseContracts":[1001],"name":"AddressCast","nameLocation":"72:11:8","nodeType":"ContractDefinition","nodes":[{"errorSelector":"18456c9b","id":852,"name":"AddressCast_InvalidSizeForAddress","nameLocation":"96:33:8","nodeType":"ErrorDefinition","parameters":{"id":851,"nodeType":"ParameterList","parameters":[],"src":"129:2:8"},"src":"90:42:8"},{"errorSelector":"6281faa2","id":854,"name":"AddressCast_InvalidAddress","nameLocation":"143:26:8","nodeType":"ErrorDefinition","parameters":{"id":853,"nodeType":"ParameterList","parameters":[],"src":"169:2:8"},"src":"137:35:8"},{"body":{"id":893,"nodeType":"Block","src":"266:255:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":861,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"280:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"294:6:8","memberName":"length","nodeType":"MemberAccess","src":"280:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3332","id":863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"303:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"280:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":868,"nodeType":"IfStatement","src":"276:66:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":865,"name":"AddressCast_InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"314:26:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"314:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":867,"nodeType":"RevertStatement","src":"307:35:8"}},{"expression":{"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":869,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"352:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":872,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"369:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"361:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"361:7:8","typeDescriptions":{}}},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"361:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"352:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":875,"nodeType":"ExpressionStatement","src":"352:31:8"},{"id":892,"nodeType":"UncheckedBlock","src":"393:122:8","statements":[{"assignments":[877],"declarations":[{"constant":false,"id":877,"mutability":"mutable","name":"offset","nameLocation":"425:6:8","nodeType":"VariableDeclaration","scope":892,"src":"417:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":876,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":882,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"434:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":879,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"439:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"453:6:8","memberName":"length","nodeType":"MemberAccess","src":"439:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"434:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"417:42:8"},{"expression":{"id":890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"473:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":884,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"482:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":885,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"493:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"502:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"493:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"492:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"482:22:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"473:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":891,"nodeType":"ExpressionStatement","src":"473:31:8"}]}]},"id":894,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"187:9:8","nodeType":"FunctionDefinition","parameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":856,"mutability":"mutable","name":"_addressBytes","nameLocation":"212:13:8","nodeType":"VariableDeclaration","scope":894,"src":"197:28:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":855,"name":"bytes","nodeType":"ElementaryTypeName","src":"197:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"196:30:8"},"returnParameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"result","nameLocation":"258:6:8","nodeType":"VariableDeclaration","scope":894,"src":"250:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"250:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"249:16:8"},"scope":1001,"src":"178:343:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":914,"nodeType":"Block","src":"603:61:8","statements":[{"expression":{"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":901,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"613:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":908,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":896,"src":"646:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"638:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":906,"name":"uint160","nodeType":"ElementaryTypeName","src":"638:7:8","typeDescriptions":{}}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"638:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"630:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":904,"name":"uint256","nodeType":"ElementaryTypeName","src":"630:7:8","typeDescriptions":{}}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"630:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"622:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:8","typeDescriptions":{}}},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"622:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"613:44:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":913,"nodeType":"ExpressionStatement","src":"613:44:8"}]},"id":915,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"536:9:8","nodeType":"FunctionDefinition","parameters":{"id":897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":896,"mutability":"mutable","name":"_address","nameLocation":"554:8:8","nodeType":"VariableDeclaration","scope":915,"src":"546:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":895,"name":"address","nodeType":"ElementaryTypeName","src":"546:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"545:18:8"},"returnParameters":{"id":900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":899,"mutability":"mutable","name":"result","nameLocation":"595:6:8","nodeType":"VariableDeclaration","scope":915,"src":"587:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"586:16:8"},"scope":1001,"src":"527:137:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":952,"nodeType":"Block","src":"771:307:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":924,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"785:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"794:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"785:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":927,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"799:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3332","id":928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"807:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"799:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"785:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":934,"nodeType":"IfStatement","src":"781:72:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":931,"name":"AddressCast_InvalidSizeForAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"818:33:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"818:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":933,"nodeType":"RevertStatement","src":"811:42:8"}},{"expression":{"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":935,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"863:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":938,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"882:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"872:9:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":936,"name":"bytes","nodeType":"ElementaryTypeName","src":"876:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"872:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"863:25:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":941,"nodeType":"ExpressionStatement","src":"863:25:8"},{"id":951,"nodeType":"UncheckedBlock","src":"898:174:8","statements":[{"assignments":[943],"declarations":[{"constant":false,"id":943,"mutability":"mutable","name":"offset","nameLocation":"930:6:8","nodeType":"VariableDeclaration","scope":951,"src":"922:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":949,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"939:3:8","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":945,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"945:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"953:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"945:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"939:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"922:32:8"},{"AST":{"nativeSrc":"977:85:8","nodeType":"YulBlock","src":"977:85:8","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"1006:6:8","nodeType":"YulIdentifier","src":"1006:6:8"},{"kind":"number","nativeSrc":"1014:2:8","nodeType":"YulLiteral","src":"1014:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1002:3:8","nodeType":"YulIdentifier","src":"1002:3:8"},"nativeSrc":"1002:15:8","nodeType":"YulFunctionCall","src":"1002:15:8"},{"arguments":[{"name":"offset","nativeSrc":"1023:6:8","nodeType":"YulIdentifier","src":"1023:6:8"},{"name":"_addressBytes32","nativeSrc":"1031:15:8","nodeType":"YulIdentifier","src":"1031:15:8"}],"functionName":{"name":"shl","nativeSrc":"1019:3:8","nodeType":"YulIdentifier","src":"1019:3:8"},"nativeSrc":"1019:28:8","nodeType":"YulFunctionCall","src":"1019:28:8"}],"functionName":{"name":"mstore","nativeSrc":"995:6:8","nodeType":"YulIdentifier","src":"995:6:8"},"nativeSrc":"995:53:8","nodeType":"YulFunctionCall","src":"995:53:8"},"nativeSrc":"995:53:8","nodeType":"YulExpressionStatement","src":"995:53:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":917,"isOffset":false,"isSlot":false,"src":"1031:15:8","valueSize":1},{"declaration":943,"isOffset":false,"isSlot":false,"src":"1023:6:8","valueSize":1},{"declaration":922,"isOffset":false,"isSlot":false,"src":"1006:6:8","valueSize":1}],"id":950,"nodeType":"InlineAssembly","src":"968:94:8"}]}]},"id":953,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes","nameLocation":"679:7:8","nodeType":"FunctionDefinition","parameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":917,"mutability":"mutable","name":"_addressBytes32","nameLocation":"695:15:8","nodeType":"VariableDeclaration","scope":953,"src":"687:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"687:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":919,"mutability":"mutable","name":"_size","nameLocation":"720:5:8","nodeType":"VariableDeclaration","scope":953,"src":"712:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":918,"name":"uint256","nodeType":"ElementaryTypeName","src":"712:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"686:40:8"},"returnParameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"result","nameLocation":"763:6:8","nodeType":"VariableDeclaration","scope":953,"src":"750:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":921,"name":"bytes","nodeType":"ElementaryTypeName","src":"750:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"749:21:8"},"scope":1001,"src":"670:408:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":973,"nodeType":"Block","src":"1167:68:8","statements":[{"expression":{"id":971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":960,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":958,"src":"1177:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":967,"name":"_addressBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"1210:15:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1202:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":965,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:8","typeDescriptions":{}}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1202:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1194:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":963,"name":"uint160","nodeType":"ElementaryTypeName","src":"1194:7:8","typeDescriptions":{}}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1194:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1186:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":961,"name":"address","nodeType":"ElementaryTypeName","src":"1186:7:8","typeDescriptions":{}}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1186:42:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1177:51:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":972,"nodeType":"ExpressionStatement","src":"1177:51:8"}]},"id":974,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"1093:9:8","nodeType":"FunctionDefinition","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":955,"mutability":"mutable","name":"_addressBytes32","nameLocation":"1111:15:8","nodeType":"VariableDeclaration","scope":974,"src":"1103:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":954,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1103:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1102:25:8"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"result","nameLocation":"1159:6:8","nodeType":"VariableDeclaration","scope":974,"src":"1151:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":957,"name":"address","nodeType":"ElementaryTypeName","src":"1151:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1150:16:8"},"scope":1001,"src":"1084:151:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":999,"nodeType":"Block","src":"1329:134:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":981,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1343:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1357:6:8","memberName":"length","nodeType":"MemberAccess","src":"1343:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3230","id":983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1367:2:8","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"1343:26:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":988,"nodeType":"IfStatement","src":"1339:67:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":985,"name":"AddressCast_InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"1378:26:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":987,"nodeType":"RevertStatement","src":"1371:35:8"}},{"expression":{"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":989,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"1416:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":994,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1441:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1433:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":992,"name":"bytes20","nodeType":"ElementaryTypeName","src":"1433:7:8","typeDescriptions":{}}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1433:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1425:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:8","typeDescriptions":{}}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1425:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1416:40:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":998,"nodeType":"ExpressionStatement","src":"1416:40:8"}]},"id":1000,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"1250:9:8","nodeType":"FunctionDefinition","parameters":{"id":977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":976,"mutability":"mutable","name":"_addressBytes","nameLocation":"1275:13:8","nodeType":"VariableDeclaration","scope":1000,"src":"1260:28:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"1260:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1259:30:8"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":979,"mutability":"mutable","name":"result","nameLocation":"1321:6:8","nodeType":"VariableDeclaration","scope":1000,"src":"1313:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":978,"name":"address","nodeType":"ElementaryTypeName","src":"1313:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1312:16:8"},"scope":1001,"src":"1241:222:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1002,"src":"64:1401:8","usedErrors":[852,854],"usedEvents":[]}],"src":"38:1428:8"},"id":8},"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol","exportedSymbols":{"AddressCast":[1001],"Packet":[796],"PacketV1Codec":[1325]},"id":1326,"license":"LZBL-1.2","nodeType":"SourceUnit","nodes":[{"id":1003,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"38:24:9"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol","file":"../../interfaces/ISendLib.sol","id":1005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1326,"sourceUnit":849,"src":"64:55:9","symbolAliases":[{"foreign":{"id":1004,"name":"Packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"73:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol","file":"../../libs/AddressCast.sol","id":1007,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1326,"sourceUnit":1002,"src":"120:57:9","symbolAliases":[{"foreign":{"id":1006,"name":"AddressCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"129:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PacketV1Codec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1325,"linearizedBaseContracts":[1325],"name":"PacketV1Codec","nameLocation":"187:13:9","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1010,"libraryName":{"id":1008,"name":"AddressCast","nameLocations":["213:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1001,"src":"213:11:9"},"nodeType":"UsingForDirective","src":"207:30:9","typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"229:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":1013,"libraryName":{"id":1011,"name":"AddressCast","nameLocations":["248:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1001,"src":"248:11:9"},"nodeType":"UsingForDirective","src":"242:30:9","typeName":{"id":1012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"264:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"id":1016,"mutability":"constant","name":"PACKET_VERSION","nameLocation":"302:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"278:42:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1014,"name":"uint8","nodeType":"ElementaryTypeName","src":"278:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"319:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1019,"mutability":"constant","name":"PACKET_VERSION_OFFSET","nameLocation":"406:21:9","nodeType":"VariableDeclaration","scope":1325,"src":"381:50:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1017,"name":"uint256","nodeType":"ElementaryTypeName","src":"381:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"430:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"id":1022,"mutability":"constant","name":"NONCE_OFFSET","nameLocation":"478:12:9","nodeType":"VariableDeclaration","scope":1325,"src":"453:41:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"453:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"493:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":1025,"mutability":"constant","name":"SRC_EID_OFFSET","nameLocation":"540:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"515:43:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1023,"name":"uint256","nodeType":"ElementaryTypeName","src":"515:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:1:9","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"private"},{"constant":true,"id":1028,"mutability":"constant","name":"SENDER_OFFSET","nameLocation":"589:13:9","nodeType":"VariableDeclaration","scope":1325,"src":"564:43:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1026,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3133","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:2:9","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"visibility":"private"},{"constant":true,"id":1031,"mutability":"constant","name":"DST_EID_OFFSET","nameLocation":"638:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"613:44:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3435","id":1030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"655:2:9","typeDescriptions":{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"},"value":"45"},"visibility":"private"},{"constant":true,"id":1034,"mutability":"constant","name":"RECEIVER_OFFSET","nameLocation":"688:15:9","nodeType":"VariableDeclaration","scope":1325,"src":"663:45:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1032,"name":"uint256","nodeType":"ElementaryTypeName","src":"663:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3439","id":1033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:2:9","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"visibility":"private"},{"constant":true,"id":1037,"mutability":"constant","name":"GUID_OFFSET","nameLocation":"771:11:9","nodeType":"VariableDeclaration","scope":1325,"src":"746:41:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3831","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"785:2:9","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"81"},"visibility":"private"},{"constant":true,"id":1040,"mutability":"constant","name":"MESSAGE_OFFSET","nameLocation":"845:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"820:45:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1038,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313133","id":1039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"862:3:9","typeDescriptions":{"typeIdentifier":"t_rational_113_by_1","typeString":"int_const 113"},"value":"113"},"visibility":"private"},{"body":{"id":1071,"nodeType":"Block","src":"962:295:9","statements":[{"expression":{"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1048,"name":"encodedPacket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"972:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1051,"name":"PACKET_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"1018:14:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"id":1052,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1046:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1054:5:9","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":783,"src":"1046:13:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":1054,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1073:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1081:6:9","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":785,"src":"1073:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1056,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1101:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1109:6:9","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":787,"src":"1101:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1116:9:9","memberName":"toBytes32","nodeType":"MemberAccess","referencedDeclaration":915,"src":"1101:24:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address) pure returns (bytes32)"}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1101:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1060,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1141:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1149:6:9","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":789,"src":"1141:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1062,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1169:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1177:8:9","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":791,"src":"1169:16:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1064,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1199:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1207:4:9","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":793,"src":"1199:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1066,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1225:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1233:7:9","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":795,"src":"1225:15:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1049,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"988:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"992:12:9","memberName":"encodePacked","nodeType":"MemberAccess","src":"988:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"988:262:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"972:278:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1070,"nodeType":"ExpressionStatement","src":"972:278:9"}]},"id":1072,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"881:6:9","nodeType":"FunctionDefinition","parameters":{"id":1044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1043,"mutability":"mutable","name":"_packet","nameLocation":"902:7:9","nodeType":"VariableDeclaration","scope":1072,"src":"888:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet"},"typeName":{"id":1042,"nodeType":"UserDefinedTypeName","pathNode":{"id":1041,"name":"Packet","nameLocations":["888:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"888:6:9"},"referencedDeclaration":796,"src":"888:6:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"}],"src":"887:23:9"},"returnParameters":{"id":1047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1046,"mutability":"mutable","name":"encodedPacket","nameLocation":"947:13:9","nodeType":"VariableDeclaration","scope":1072,"src":"934:26:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1045,"name":"bytes","nodeType":"ElementaryTypeName","src":"934:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"933:28:9"},"scope":1325,"src":"872:385:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1097,"nodeType":"Block","src":"1351:271:9","statements":[{"expression":{"arguments":[{"id":1082,"name":"PACKET_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"1414:14:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"id":1083,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1446:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1454:5:9","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":783,"src":"1446:13:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":1085,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1477:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1485:6:9","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":785,"src":"1477:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1087,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1509:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1517:6:9","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":787,"src":"1509:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1524:9:9","memberName":"toBytes32","nodeType":"MemberAccess","referencedDeclaration":915,"src":"1509:24:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address) pure returns (bytes32)"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1509:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1091,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1553:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1561:6:9","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":789,"src":"1553:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1093,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1585:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1593:8:9","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":791,"src":"1585:16:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1080,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1380:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1384:12:9","memberName":"encodePacked","nodeType":"MemberAccess","src":"1380:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1380:235:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1079,"id":1096,"nodeType":"Return","src":"1361:254:9"}]},"id":1098,"implemented":true,"kind":"function","modifiers":[],"name":"encodePacketHeader","nameLocation":"1272:18:9","nodeType":"FunctionDefinition","parameters":{"id":1076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1075,"mutability":"mutable","name":"_packet","nameLocation":"1305:7:9","nodeType":"VariableDeclaration","scope":1098,"src":"1291:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet"},"typeName":{"id":1074,"nodeType":"UserDefinedTypeName","pathNode":{"id":1073,"name":"Packet","nameLocations":["1291:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"1291:6:9"},"referencedDeclaration":796,"src":"1291:6:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"}],"src":"1290:23:9"},"returnParameters":{"id":1079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1098,"src":"1337:12:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1077,"name":"bytes","nodeType":"ElementaryTypeName","src":"1337:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1336:14:9"},"scope":1325,"src":"1263:359:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1114,"nodeType":"Block","src":"1711:71:9","statements":[{"expression":{"arguments":[{"expression":{"id":1108,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"1745:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1753:4:9","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":793,"src":"1745:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1110,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"1759:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1767:7:9","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":795,"src":"1759:15:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1106,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1728:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1732:12:9","memberName":"encodePacked","nodeType":"MemberAccess","src":"1728:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1728:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1105,"id":1113,"nodeType":"Return","src":"1721:54:9"}]},"id":1115,"implemented":true,"kind":"function","modifiers":[],"name":"encodePayload","nameLocation":"1637:13:9","nodeType":"FunctionDefinition","parameters":{"id":1102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"mutability":"mutable","name":"_packet","nameLocation":"1665:7:9","nodeType":"VariableDeclaration","scope":1115,"src":"1651:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet"},"typeName":{"id":1100,"nodeType":"UserDefinedTypeName","pathNode":{"id":1099,"name":"Packet","nameLocations":["1651:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"1651:6:9"},"referencedDeclaration":796,"src":"1651:6:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"}],"src":"1650:23:9"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1115,"src":"1697:12:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1103,"name":"bytes","nodeType":"ElementaryTypeName","src":"1697:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1696:14:9"},"scope":1325,"src":"1628:154:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1127,"nodeType":"Block","src":"1867:46:9","statements":[{"expression":{"baseExpression":{"id":1122,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"1884:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1124,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"1894:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1884:22:9","startExpression":{"hexValue":"30","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1892:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":1121,"id":1126,"nodeType":"Return","src":"1877:29:9"}]},"id":1128,"implemented":true,"kind":"function","modifiers":[],"name":"header","nameLocation":"1797:6:9","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"_packet","nameLocation":"1819:7:9","nodeType":"VariableDeclaration","scope":1128,"src":"1804:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1116,"name":"bytes","nodeType":"ElementaryTypeName","src":"1804:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1803:24:9"},"returnParameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1128,"src":"1851:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1119,"name":"bytes","nodeType":"ElementaryTypeName","src":"1851:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1850:16:9"},"scope":1325,"src":"1788:125:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1146,"nodeType":"Block","src":"1990:82:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1139,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"2020:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1141,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"2050:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2020:43:9","startExpression":{"id":1140,"name":"PACKET_VERSION_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"2028:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2013:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1137,"name":"bytes1","nodeType":"ElementaryTypeName","src":"2013:6:9","typeDescriptions":{}}},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2013:51:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2007:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1135,"name":"uint8","nodeType":"ElementaryTypeName","src":"2007:5:9","typeDescriptions":{}}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:58:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1134,"id":1145,"nodeType":"Return","src":"2000:65:9"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"1928:7:9","nodeType":"FunctionDefinition","parameters":{"id":1131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1130,"mutability":"mutable","name":"_packet","nameLocation":"1951:7:9","nodeType":"VariableDeclaration","scope":1147,"src":"1936:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1129,"name":"bytes","nodeType":"ElementaryTypeName","src":"1936:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1935:24:9"},"returnParameters":{"id":1134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"1983:5:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1132,"name":"uint8","nodeType":"ElementaryTypeName","src":"1983:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1982:7:9"},"scope":1325,"src":"1919:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1165,"nodeType":"Block","src":"2148:76:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1158,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"2179:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1160,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"2200:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2179:36:9","startExpression":{"id":1159,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"2187:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2172:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":1156,"name":"bytes8","nodeType":"ElementaryTypeName","src":"2172:6:9","typeDescriptions":{}}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2172:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":1155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2165:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1154,"name":"uint64","nodeType":"ElementaryTypeName","src":"2165:6:9","typeDescriptions":{}}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:52:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1153,"id":1164,"nodeType":"Return","src":"2158:59:9"}]},"id":1166,"implemented":true,"kind":"function","modifiers":[],"name":"nonce","nameLocation":"2087:5:9","nodeType":"FunctionDefinition","parameters":{"id":1150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1149,"mutability":"mutable","name":"_packet","nameLocation":"2108:7:9","nodeType":"VariableDeclaration","scope":1166,"src":"2093:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1148,"name":"bytes","nodeType":"ElementaryTypeName","src":"2093:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2092:24:9"},"returnParameters":{"id":1153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1166,"src":"2140:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1151,"name":"uint64","nodeType":"ElementaryTypeName","src":"2140:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2139:8:9"},"scope":1325,"src":"2078:146:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1184,"nodeType":"Block","src":"2301:77:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1177,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"2332:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1179,"name":"SENDER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2355:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2332:37:9","startExpression":{"id":1178,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"2340:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2325:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1175,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2325:6:9","typeDescriptions":{}}},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2325:45:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2318:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":1173,"name":"uint32","nodeType":"ElementaryTypeName","src":"2318:6:9","typeDescriptions":{}}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2318:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":1172,"id":1183,"nodeType":"Return","src":"2311:60:9"}]},"id":1185,"implemented":true,"kind":"function","modifiers":[],"name":"srcEid","nameLocation":"2239:6:9","nodeType":"FunctionDefinition","parameters":{"id":1169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1168,"mutability":"mutable","name":"_packet","nameLocation":"2261:7:9","nodeType":"VariableDeclaration","scope":1185,"src":"2246:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1167,"name":"bytes","nodeType":"ElementaryTypeName","src":"2246:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2245:24:9"},"returnParameters":{"id":1172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1185,"src":"2293:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1170,"name":"uint32","nodeType":"ElementaryTypeName","src":"2293:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2292:8:9"},"scope":1325,"src":"2230:148:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1200,"nodeType":"Block","src":"2456:70:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1194,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2481:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1196,"name":"DST_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"2503:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2481:37:9","startExpression":{"id":1195,"name":"SENDER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2489:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2473:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2473:7:9","typeDescriptions":{}}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2473:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1191,"id":1199,"nodeType":"Return","src":"2466:53:9"}]},"id":1201,"implemented":true,"kind":"function","modifiers":[],"name":"sender","nameLocation":"2393:6:9","nodeType":"FunctionDefinition","parameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"_packet","nameLocation":"2415:7:9","nodeType":"VariableDeclaration","scope":1201,"src":"2400:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1186,"name":"bytes","nodeType":"ElementaryTypeName","src":"2400:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2399:24:9"},"returnParameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"2447:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:9"},"scope":1325,"src":"2384:142:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1214,"nodeType":"Block","src":"2614:51:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1209,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"2638:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1208,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"2631:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2631:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2647:9:9","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":974,"src":"2631:25:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (address)"}},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2631:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1207,"id":1213,"nodeType":"Return","src":"2624:34:9"}]},"id":1215,"implemented":true,"kind":"function","modifiers":[],"name":"senderAddressB20","nameLocation":"2541:16:9","nodeType":"FunctionDefinition","parameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1203,"mutability":"mutable","name":"_packet","nameLocation":"2573:7:9","nodeType":"VariableDeclaration","scope":1215,"src":"2558:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1202,"name":"bytes","nodeType":"ElementaryTypeName","src":"2558:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2557:24:9"},"returnParameters":{"id":1207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1215,"src":"2605:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1205,"name":"address","nodeType":"ElementaryTypeName","src":"2605:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2604:9:9"},"scope":1325,"src":"2532:133:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1233,"nodeType":"Block","src":"2742:79:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1226,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"2773:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1228,"name":"RECEIVER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"2796:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2773:39:9","startExpression":{"id":1227,"name":"DST_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"2781:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2766:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1224,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2766:6:9","typeDescriptions":{}}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2766:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":1222,"name":"uint32","nodeType":"ElementaryTypeName","src":"2759:6:9","typeDescriptions":{}}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:55:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":1221,"id":1232,"nodeType":"Return","src":"2752:62:9"}]},"id":1234,"implemented":true,"kind":"function","modifiers":[],"name":"dstEid","nameLocation":"2680:6:9","nodeType":"FunctionDefinition","parameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"_packet","nameLocation":"2702:7:9","nodeType":"VariableDeclaration","scope":1234,"src":"2687:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1216,"name":"bytes","nodeType":"ElementaryTypeName","src":"2687:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2686:24:9"},"returnParameters":{"id":1221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1234,"src":"2734:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1219,"name":"uint32","nodeType":"ElementaryTypeName","src":"2734:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2733:8:9"},"scope":1325,"src":"2671:150:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1249,"nodeType":"Block","src":"2901:69:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1243,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"2926:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1245,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"2950:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2926:36:9","startExpression":{"id":1244,"name":"RECEIVER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"2934:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2918:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2918:7:9","typeDescriptions":{}}},"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2918:45:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1240,"id":1248,"nodeType":"Return","src":"2911:52:9"}]},"id":1250,"implemented":true,"kind":"function","modifiers":[],"name":"receiver","nameLocation":"2836:8:9","nodeType":"FunctionDefinition","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1236,"mutability":"mutable","name":"_packet","nameLocation":"2860:7:9","nodeType":"VariableDeclaration","scope":1250,"src":"2845:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1235,"name":"bytes","nodeType":"ElementaryTypeName","src":"2845:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2844:24:9"},"returnParameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1250,"src":"2892:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2892:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2891:9:9"},"scope":1325,"src":"2827:143:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1263,"nodeType":"Block","src":"3053:53:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1258,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"3079:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1257,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"3070:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3088:9:9","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":974,"src":"3070:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (address)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1256,"id":1262,"nodeType":"Return","src":"3063:36:9"}]},"id":1264,"implemented":true,"kind":"function","modifiers":[],"name":"receiverB20","nameLocation":"2985:11:9","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"_packet","nameLocation":"3012:7:9","nodeType":"VariableDeclaration","scope":1264,"src":"2997:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1251,"name":"bytes","nodeType":"ElementaryTypeName","src":"2997:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2996:24:9"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1264,"src":"3044:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"3044:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3043:9:9"},"scope":1325,"src":"2976:130:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1279,"nodeType":"Block","src":"3182:68:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1273,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"3207:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1275,"name":"MESSAGE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"3227:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3207:35:9","startExpression":{"id":1274,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"3215:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3199:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1271,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3199:7:9","typeDescriptions":{}}},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3199:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1270,"id":1278,"nodeType":"Return","src":"3192:51:9"}]},"id":1280,"implemented":true,"kind":"function","modifiers":[],"name":"guid","nameLocation":"3121:4:9","nodeType":"FunctionDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1266,"mutability":"mutable","name":"_packet","nameLocation":"3141:7:9","nodeType":"VariableDeclaration","scope":1280,"src":"3126:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1265,"name":"bytes","nodeType":"ElementaryTypeName","src":"3126:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3125:24:9"},"returnParameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1280,"src":"3173:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3173:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3172:9:9"},"scope":1325,"src":"3112:138:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1294,"nodeType":"Block","src":"3336:55:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1289,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"3359:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3359:24:9","startExpression":{"id":1290,"name":"MESSAGE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"3367:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1287,"name":"bytes","nodeType":"ElementaryTypeName","src":"3353:5:9","typeDescriptions":{}}},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1286,"id":1293,"nodeType":"Return","src":"3346:38:9"}]},"id":1295,"implemented":true,"kind":"function","modifiers":[],"name":"message","nameLocation":"3265:7:9","nodeType":"FunctionDefinition","parameters":{"id":1283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1282,"mutability":"mutable","name":"_packet","nameLocation":"3288:7:9","nodeType":"VariableDeclaration","scope":1295,"src":"3273:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"3273:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3272:24:9"},"returnParameters":{"id":1286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1295,"src":"3320:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1284,"name":"bytes","nodeType":"ElementaryTypeName","src":"3320:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3319:16:9"},"scope":1325,"src":"3256:135:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1309,"nodeType":"Block","src":"3477:52:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1304,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"3500:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3500:21:9","startExpression":{"id":1305,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"3508:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3494:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1302,"name":"bytes","nodeType":"ElementaryTypeName","src":"3494:5:9","typeDescriptions":{}}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3494:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1301,"id":1308,"nodeType":"Return","src":"3487:35:9"}]},"id":1310,"implemented":true,"kind":"function","modifiers":[],"name":"payload","nameLocation":"3406:7:9","nodeType":"FunctionDefinition","parameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"_packet","nameLocation":"3429:7:9","nodeType":"VariableDeclaration","scope":1310,"src":"3414:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1296,"name":"bytes","nodeType":"ElementaryTypeName","src":"3414:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3413:24:9"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1310,"src":"3461:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1299,"name":"bytes","nodeType":"ElementaryTypeName","src":"3461:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3460:16:9"},"scope":1325,"src":"3397:132:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1323,"nodeType":"Block","src":"3612:51:9","statements":[{"expression":{"arguments":[{"arguments":[{"id":1319,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"3647:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1318,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1310,"src":"3639:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":1320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:16:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1317,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3629:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3629:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1316,"id":1322,"nodeType":"Return","src":"3622:34:9"}]},"id":1324,"implemented":true,"kind":"function","modifiers":[],"name":"payloadHash","nameLocation":"3544:11:9","nodeType":"FunctionDefinition","parameters":{"id":1313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1312,"mutability":"mutable","name":"_packet","nameLocation":"3571:7:9","nodeType":"VariableDeclaration","scope":1324,"src":"3556:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1311,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:24:9"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1324,"src":"3603:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3603:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3602:9:9"},"scope":1325,"src":"3535:128:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1326,"src":"179:3486:9","usedErrors":[],"usedEvents":[]}],"src":"38:3628:9"},"id":9},"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol","exportedSymbols":{"MessagingFee":[33],"MessagingReceipt":[28],"OApp":[1371],"OAppCore":[1501],"OAppReceiver":[1653],"OAppSender":[1839],"Origin":[40]},"id":1372,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1327,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:10"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","file":"./OAppSender.sol","id":1331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1372,"sourceUnit":1840,"src":"199:78:10","symbolAliases":[{"foreign":{"id":1328,"name":"OAppSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"208:10:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1329,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"220:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1330,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"234:16:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol","file":"./OAppReceiver.sol","id":1334,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1372,"sourceUnit":1654,"src":"389:58:10","symbolAliases":[{"foreign":{"id":1332,"name":"OAppReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"398:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1333,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"412:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","file":"./OAppCore.sol","id":1336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1372,"sourceUnit":1502,"src":"448:42:10","symbolAliases":[{"foreign":{"id":1335,"name":"OAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"457:8:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1338,"name":"OAppSender","nameLocations":["665:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":1839,"src":"665:10:10"},"id":1339,"nodeType":"InheritanceSpecifier","src":"665:10:10"},{"baseName":{"id":1340,"name":"OAppReceiver","nameLocations":["677:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":1653,"src":"677:12:10"},"id":1341,"nodeType":"InheritanceSpecifier","src":"677:12:10"}],"canonicalName":"OApp","contractDependencies":[],"contractKind":"contract","documentation":{"id":1337,"nodeType":"StructuredDocumentation","src":"492:146:10","text":" @title OApp\n @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality."},"fullyImplemented":false,"id":1371,"linearizedBaseContracts":[1371,1653,1839,1501,3980,5320,1902,1985,238],"name":"OApp","nameLocation":"657:4:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1353,"nodeType":"Block","src":"1046:2:10","statements":[]},"documentation":{"id":1342,"nodeType":"StructuredDocumentation","src":"696:264:10","text":" @dev Constructor to initialize the OApp with the provided endpoint and owner.\n @param _endpoint The address of the LOCAL LayerZero endpoint.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint."},"id":1354,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1349,"name":"_endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"1024:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1350,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"1035:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1351,"kind":"baseConstructorSpecifier","modifierName":{"id":1348,"name":"OAppCore","nameLocations":["1015:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":1501,"src":"1015:8:10"},"nodeType":"ModifierInvocation","src":"1015:30:10"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1344,"mutability":"mutable","name":"_endpoint","nameLocation":"985:9:10","nodeType":"VariableDeclaration","scope":1354,"src":"977:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1343,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1346,"mutability":"mutable","name":"_delegate","nameLocation":"1004:9:10","nodeType":"VariableDeclaration","scope":1354,"src":"996:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1345,"name":"address","nodeType":"ElementaryTypeName","src":"996:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"976:38:10"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[],"src":"1046:0:10"},"scope":1371,"src":"965:83:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1533,1693],"body":{"id":1369,"nodeType":"Block","src":"1464:58:10","statements":[{"expression":{"components":[{"id":1365,"name":"SENDER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1482:14:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":1366,"name":"RECEIVER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"1498:16:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":1367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1481:34:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_uint64_$","typeString":"tuple(uint64,uint64)"}},"functionReturnParameters":1364,"id":1368,"nodeType":"Return","src":"1474:41:10"}]},"documentation":{"id":1355,"nodeType":"StructuredDocumentation","src":"1054:228:10","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol implementation.\n @return receiverVersion The version of the OAppReceiver.sol implementation."},"functionSelector":"17442b70","id":1370,"implemented":true,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"1296:11:10","nodeType":"FunctionDefinition","overrides":{"id":1359,"nodeType":"OverrideSpecifier","overrides":[{"id":1357,"name":"OAppSender","nameLocations":["1371:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":1839,"src":"1371:10:10"},{"id":1358,"name":"OAppReceiver","nameLocations":["1383:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":1653,"src":"1383:12:10"}],"src":"1362:34:10"},"parameters":{"id":1356,"nodeType":"ParameterList","parameters":[],"src":"1307:2:10"},"returnParameters":{"id":1364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1361,"mutability":"mutable","name":"senderVersion","nameLocation":"1421:13:10","nodeType":"VariableDeclaration","scope":1370,"src":"1414:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1360,"name":"uint64","nodeType":"ElementaryTypeName","src":"1414:6:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1363,"mutability":"mutable","name":"receiverVersion","nameLocation":"1443:15:10","nodeType":"VariableDeclaration","scope":1370,"src":"1436:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1362,"name":"uint64","nodeType":"ElementaryTypeName","src":"1436:6:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1413:46:10"},"scope":1371,"src":"1287:235:10","stateMutability":"pure","virtual":true,"visibility":"public"}],"scope":1372,"src":"639:885:10","usedErrors":[1517,1675,1677,1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:1492:10"},"id":10},"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IOAppCore":[1902],"OAppCore":[1501],"Ownable":[3980]},"id":1502,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1373,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:11"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1502,"sourceUnit":3981,"src":"59:69:11","symbolAliases":[{"foreign":{"id":1374,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"68:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol","file":"./interfaces/IOAppCore.sol","id":1378,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1502,"sourceUnit":1903,"src":"129:77:11","symbolAliases":[{"foreign":{"id":1376,"name":"IOAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"138:9:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1377,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"149:20:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1380,"name":"IOAppCore","nameLocations":["360:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":1902,"src":"360:9:11"},"id":1381,"nodeType":"InheritanceSpecifier","src":"360:9:11"},{"baseName":{"id":1382,"name":"Ownable","nameLocations":["371:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"371:7:11"},"id":1383,"nodeType":"InheritanceSpecifier","src":"371:7:11"}],"canonicalName":"OAppCore","contractDependencies":[],"contractKind":"contract","documentation":{"id":1379,"nodeType":"StructuredDocumentation","src":"208:121:11","text":" @title OAppCore\n @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations."},"fullyImplemented":false,"id":1501,"linearizedBaseContracts":[1501,3980,5320,1902],"name":"OAppCore","nameLocation":"348:8:11","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[1879],"constant":false,"functionSelector":"5e280f11","id":1386,"mutability":"immutable","name":"endpoint","nameLocation":"484:8:11","nodeType":"VariableDeclaration","scope":1501,"src":"446:46:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"},"typeName":{"id":1385,"nodeType":"UserDefinedTypeName","pathNode":{"id":1384,"name":"ILayerZeroEndpointV2","nameLocations":["446:20:11"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"446:20:11"},"referencedDeclaration":202,"src":"446:20:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"visibility":"public"},{"baseFunctions":[1887],"constant":false,"functionSelector":"bb0b6a53","id":1390,"mutability":"mutable","name":"peers","nameLocation":"612:5:11","nodeType":"VariableDeclaration","scope":1501,"src":"569:48:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"},"typeName":{"id":1389,"keyName":"eid","keyNameLocation":"584:3:11","keyType":{"id":1387,"name":"uint32","nodeType":"ElementaryTypeName","src":"577:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"569:35:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"},"valueName":"peer","valueNameLocation":"599:4:11","valueType":{"id":1388,"name":"bytes32","nodeType":"ElementaryTypeName","src":"591:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"public"},{"body":{"id":1420,"nodeType":"Block","src":"1037:164:11","statements":[{"expression":{"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1398,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"1047:8:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1400,"name":"_endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1393,"src":"1079:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1399,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"1058:20:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILayerZeroEndpointV2_$202_$","typeString":"type(contract ILayerZeroEndpointV2)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1058:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"src":"1047:42:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1403,"nodeType":"ExpressionStatement","src":"1047:42:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1404,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"1104:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1125:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1117:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1405,"name":"address","nodeType":"ElementaryTypeName","src":"1117:7:11","typeDescriptions":{}}},"id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1117:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1104:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1413,"nodeType":"IfStatement","src":"1100:53:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1410,"name":"InvalidDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"1136:15:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1136:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1412,"nodeType":"RevertStatement","src":"1129:24:11"}},{"expression":{"arguments":[{"id":1417,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"1184:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1414,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"1163:8:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1172:11:11","memberName":"setDelegate","nodeType":"MemberAccess","referencedDeclaration":201,"src":"1163:20:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1419,"nodeType":"ExpressionStatement","src":"1163:31:11"}]},"documentation":{"id":1391,"nodeType":"StructuredDocumentation","src":"624:358:11","text":" @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\n @param _endpoint The address of the LOCAL Layer Zero endpoint.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n @dev The delegate typically should be set as the owner of the contract."},"id":1421,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1393,"mutability":"mutable","name":"_endpoint","nameLocation":"1007:9:11","nodeType":"VariableDeclaration","scope":1421,"src":"999:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1392,"name":"address","nodeType":"ElementaryTypeName","src":"999:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1395,"mutability":"mutable","name":"_delegate","nameLocation":"1026:9:11","nodeType":"VariableDeclaration","scope":1421,"src":"1018:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1394,"name":"address","nodeType":"ElementaryTypeName","src":"1018:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"998:38:11"},"returnParameters":{"id":1397,"nodeType":"ParameterList","parameters":[],"src":"1037:0:11"},"scope":1501,"src":"987:214:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1895],"body":{"id":1436,"nodeType":"Block","src":"1794:38:11","statements":[{"expression":{"arguments":[{"id":1432,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1424,"src":"1813:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1433,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1426,"src":"1819:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1431,"name":"_setPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"1804:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$_t_bytes32_$returns$__$","typeString":"function (uint32,bytes32)"}},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1804:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1435,"nodeType":"ExpressionStatement","src":"1804:21:11"}]},"documentation":{"id":1422,"nodeType":"StructuredDocumentation","src":"1207:512:11","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint.\n @dev Only the owner/admin of the OApp can call this function.\n @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n @dev Set this to bytes32(0) to remove the peer address.\n @dev Peer is a bytes32 to accommodate non-evm chains."},"functionSelector":"3400288b","id":1437,"implemented":true,"kind":"function","modifiers":[{"id":1429,"kind":"modifierInvocation","modifierName":{"id":1428,"name":"onlyOwner","nameLocations":["1784:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1784:9:11"},"nodeType":"ModifierInvocation","src":"1784:9:11"}],"name":"setPeer","nameLocation":"1733:7:11","nodeType":"FunctionDefinition","parameters":{"id":1427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1424,"mutability":"mutable","name":"_eid","nameLocation":"1748:4:11","nodeType":"VariableDeclaration","scope":1437,"src":"1741:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1423,"name":"uint32","nodeType":"ElementaryTypeName","src":"1741:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1426,"mutability":"mutable","name":"_peer","nameLocation":"1762:5:11","nodeType":"VariableDeclaration","scope":1437,"src":"1754:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1754:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1740:28:11"},"returnParameters":{"id":1430,"nodeType":"ParameterList","parameters":[],"src":"1794:0:11"},"scope":1501,"src":"1724:108:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1456,"nodeType":"Block","src":"2349:71:11","statements":[{"expression":{"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1445,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2359:5:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":1447,"indexExpression":{"id":1446,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"2365:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2359:11:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1448,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"2373:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2359:19:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1450,"nodeType":"ExpressionStatement","src":"2359:19:11"},{"eventCall":{"arguments":[{"id":1452,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"2401:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1453,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"2407:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1451,"name":"PeerSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2393:7:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint32_$_t_bytes32_$returns$__$","typeString":"function (uint32,bytes32)"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2393:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1455,"nodeType":"EmitStatement","src":"2388:25:11"}]},"documentation":{"id":1438,"nodeType":"StructuredDocumentation","src":"1838:443:11","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint.\n @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n @dev Set this to bytes32(0) to remove the peer address.\n @dev Peer is a bytes32 to accommodate non-evm chains."},"id":1457,"implemented":true,"kind":"function","modifiers":[],"name":"_setPeer","nameLocation":"2295:8:11","nodeType":"FunctionDefinition","parameters":{"id":1443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1440,"mutability":"mutable","name":"_eid","nameLocation":"2311:4:11","nodeType":"VariableDeclaration","scope":1457,"src":"2304:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1439,"name":"uint32","nodeType":"ElementaryTypeName","src":"2304:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1442,"mutability":"mutable","name":"_peer","nameLocation":"2325:5:11","nodeType":"VariableDeclaration","scope":1457,"src":"2317:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1441,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2303:28:11"},"returnParameters":{"id":1444,"nodeType":"ParameterList","parameters":[],"src":"2349:0:11"},"scope":1501,"src":"2286:134:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1484,"nodeType":"Block","src":"2797:117:11","statements":[{"assignments":[1466],"declarations":[{"constant":false,"id":1466,"mutability":"mutable","name":"peer","nameLocation":"2815:4:11","nodeType":"VariableDeclaration","scope":1484,"src":"2807:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2807:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1470,"initialValue":{"baseExpression":{"id":1467,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2822:5:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":1469,"indexExpression":{"id":1468,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"2828:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2822:11:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2807:26:11"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1471,"name":"peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2847:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2863:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2855:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2855:7:11","typeDescriptions":{}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2847:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1481,"nodeType":"IfStatement","src":"2843:43:11","trueBody":{"errorCall":{"arguments":[{"id":1478,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"2881:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1477,"name":"NoPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"2874:6:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint32_$returns$_t_error_$","typeString":"function (uint32) pure returns (error)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1480,"nodeType":"RevertStatement","src":"2867:19:11"}},{"expression":{"id":1482,"name":"peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2903:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1464,"id":1483,"nodeType":"Return","src":"2896:11:11"}]},"documentation":{"id":1458,"nodeType":"StructuredDocumentation","src":"2426:287:11","text":" @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\n ie. the peer is set to bytes32(0).\n @param _eid The endpoint ID.\n @return peer The address of the peer associated with the specified endpoint."},"id":1485,"implemented":true,"kind":"function","modifiers":[],"name":"_getPeerOrRevert","nameLocation":"2727:16:11","nodeType":"FunctionDefinition","parameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"_eid","nameLocation":"2751:4:11","nodeType":"VariableDeclaration","scope":1485,"src":"2744:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1459,"name":"uint32","nodeType":"ElementaryTypeName","src":"2744:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2743:13:11"},"returnParameters":{"id":1464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"2788:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2788:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2787:9:11"},"scope":1501,"src":"2718:196:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1901],"body":{"id":1499,"nodeType":"Block","src":"3309:48:11","statements":[{"expression":{"arguments":[{"id":1496,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"3340:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1493,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3319:8:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3328:11:11","memberName":"setDelegate","nodeType":"MemberAccess","referencedDeclaration":201,"src":"3319:20:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3319:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1498,"nodeType":"ExpressionStatement","src":"3319:31:11"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"2920:327:11","text":" @notice Sets the delegate address for the OApp.\n @param _delegate The address of the delegate to be set.\n @dev Only the owner/admin of the OApp can call this function.\n @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract."},"functionSelector":"ca5eb5e1","id":1500,"implemented":true,"kind":"function","modifiers":[{"id":1491,"kind":"modifierInvocation","modifierName":{"id":1490,"name":"onlyOwner","nameLocations":["3299:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"3299:9:11"},"nodeType":"ModifierInvocation","src":"3299:9:11"}],"name":"setDelegate","nameLocation":"3261:11:11","nodeType":"FunctionDefinition","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"_delegate","nameLocation":"3281:9:11","nodeType":"VariableDeclaration","scope":1500,"src":"3273:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"3273:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3272:19:11"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[],"src":"3309:0:11"},"scope":1501,"src":"3252:105:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":1502,"src":"330:3029:11","usedErrors":[1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:3327:11"},"id":11},"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol","exportedSymbols":{"IOAppReceiver":[1985],"OAppCore":[1501],"OAppReceiver":[1653],"Origin":[40]},"id":1654,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1503,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:12"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol","file":"./interfaces/IOAppReceiver.sol","id":1506,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1654,"sourceUnit":1986,"src":"59:71:12","symbolAliases":[{"foreign":{"id":1504,"name":"IOAppReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"68:13:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1505,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"83:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","file":"./OAppCore.sol","id":1508,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1654,"sourceUnit":1502,"src":"131:42:12","symbolAliases":[{"foreign":{"id":1507,"name":"OAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"140:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1510,"name":"IOAppReceiver","nameLocations":["355:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":1985,"src":"355:13:12"},"id":1511,"nodeType":"InheritanceSpecifier","src":"355:13:12"},{"baseName":{"id":1512,"name":"OAppCore","nameLocations":["370:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":1501,"src":"370:8:12"},"id":1513,"nodeType":"InheritanceSpecifier","src":"370:8:12"}],"canonicalName":"OAppReceiver","contractDependencies":[],"contractKind":"contract","documentation":{"id":1509,"nodeType":"StructuredDocumentation","src":"175:145:12","text":" @title OAppReceiver\n @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers."},"fullyImplemented":false,"id":1653,"linearizedBaseContracts":[1653,1501,3980,5320,1902,1985,238],"name":"OAppReceiver","nameLocation":"339:12:12","nodeType":"ContractDefinition","nodes":[{"errorSelector":"91ac5e4f","id":1517,"name":"OnlyEndpoint","nameLocation":"471:12:12","nodeType":"ErrorDefinition","parameters":{"id":1516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1515,"mutability":"mutable","name":"addr","nameLocation":"492:4:12","nodeType":"VariableDeclaration","scope":1517,"src":"484:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1514,"name":"address","nodeType":"ElementaryTypeName","src":"484:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"483:14:12"},"src":"465:33:12"},{"constant":true,"id":1520,"mutability":"constant","name":"RECEIVER_VERSION","nameLocation":"659:16:12","nodeType":"VariableDeclaration","scope":1653,"src":"634:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1518,"name":"uint64","nodeType":"ElementaryTypeName","src":"634:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"32","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"678:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"baseFunctions":[1872],"body":{"id":1532,"nodeType":"Block","src":"1291:45:12","statements":[{"expression":{"components":[{"hexValue":"30","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1529,"name":"RECEIVER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"1312:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":1530,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1308:21:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint64_$","typeString":"tuple(int_const 0,uint64)"}},"functionReturnParameters":1527,"id":1531,"nodeType":"Return","src":"1301:28:12"}]},"documentation":{"id":1521,"nodeType":"StructuredDocumentation","src":"686:502:12","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract.\n @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\n ie. this is a RECEIVE only OApp.\n @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions."},"functionSelector":"17442b70","id":1533,"implemented":true,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"1202:11:12","nodeType":"FunctionDefinition","parameters":{"id":1522,"nodeType":"ParameterList","parameters":[],"src":"1213:2:12"},"returnParameters":{"id":1527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1524,"mutability":"mutable","name":"senderVersion","nameLocation":"1252:13:12","nodeType":"VariableDeclaration","scope":1533,"src":"1245:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1523,"name":"uint64","nodeType":"ElementaryTypeName","src":"1245:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1526,"mutability":"mutable","name":"receiverVersion","nameLocation":"1274:15:12","nodeType":"VariableDeclaration","scope":1533,"src":"1267:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1525,"name":"uint64","nodeType":"ElementaryTypeName","src":"1267:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1244:46:12"},"scope":1653,"src":"1193:143:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1984],"body":{"id":1553,"nodeType":"Block","src":"2181:48:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1546,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"2198:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1549,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2217:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_OAppReceiver_$1653","typeString":"contract OAppReceiver"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppReceiver_$1653","typeString":"contract OAppReceiver"}],"id":1548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2209:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:12","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2198:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1545,"id":1552,"nodeType":"Return","src":"2191:31:12"}]},"documentation":{"id":1534,"nodeType":"StructuredDocumentation","src":"1342:666:12","text":" @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n @dev _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @dev _message The lzReceive payload.\n @param _sender The sender address.\n @return isSender Is a valid sender.\n @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\n @dev The default sender IS the OAppReceiver implementer."},"functionSelector":"82413eac","id":1554,"implemented":true,"kind":"function","modifiers":[],"name":"isComposeMsgSender","nameLocation":"2022:18:12","nodeType":"FunctionDefinition","parameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"2050:15:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1536,"nodeType":"UserDefinedTypeName","pathNode":{"id":1535,"name":"Origin","nameLocations":["2050:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2050:6:12"},"referencedDeclaration":40,"src":"2050:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"2087:14:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1538,"name":"bytes","nodeType":"ElementaryTypeName","src":"2087:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1541,"mutability":"mutable","name":"_sender","nameLocation":"2132:7:12","nodeType":"VariableDeclaration","scope":1554,"src":"2124:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1540,"name":"address","nodeType":"ElementaryTypeName","src":"2124:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2040:105:12"},"returnParameters":{"id":1545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"2175:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1543,"name":"bool","nodeType":"ElementaryTypeName","src":"2175:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2174:6:12"},"scope":1653,"src":"2013:216:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[214],"body":{"id":1571,"nodeType":"Block","src":"2859:61:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1563,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2876:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":1566,"indexExpression":{"expression":{"id":1564,"name":"origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"2882:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2889:6:12","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2882:13:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2876:20:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1567,"name":"origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"2900:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2907:6:12","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"2900:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2876:37:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1562,"id":1570,"nodeType":"Return","src":"2869:44:12"}]},"documentation":{"id":1555,"nodeType":"StructuredDocumentation","src":"2235:531:12","text":" @notice Checks if the path initialization is allowed based on the provided origin.\n @param origin The origin information containing the source endpoint and sender address.\n @return Whether the path has been initialized.\n @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\n @dev This defaults to assuming if a peer has been set, its initialized.\n Can be overridden by the OApp if there is other logic to determine this."},"functionSelector":"ff7bd03d","id":1572,"implemented":true,"kind":"function","modifiers":[],"name":"allowInitializePath","nameLocation":"2780:19:12","nodeType":"FunctionDefinition","parameters":{"id":1559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"origin","nameLocation":"2816:6:12","nodeType":"VariableDeclaration","scope":1572,"src":"2800:22:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1557,"nodeType":"UserDefinedTypeName","pathNode":{"id":1556,"name":"Origin","nameLocations":["2800:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2800:6:12"},"referencedDeclaration":40,"src":"2800:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"}],"src":"2799:24:12"},"returnParameters":{"id":1562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1572,"src":"2853:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1560,"name":"bool","nodeType":"ElementaryTypeName","src":"2853:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2852:6:12"},"scope":1653,"src":"2771:149:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[223],"body":{"id":1584,"nodeType":"Block","src":"3610:25:12","statements":[{"expression":{"hexValue":"30","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3627:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1581,"id":1583,"nodeType":"Return","src":"3620:8:12"}]},"documentation":{"id":1573,"nodeType":"StructuredDocumentation","src":"2926:576:12","text":" @notice Retrieves the next nonce for a given source endpoint and sender address.\n @dev _srcEid The source endpoint ID.\n @dev _sender The sender address.\n @return nonce The next nonce.\n @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\n @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\n @dev This is also enforced by the OApp.\n @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0."},"functionSelector":"7d25a05e","id":1585,"implemented":true,"kind":"function","modifiers":[],"name":"nextNonce","nameLocation":"3516:9:12","nodeType":"FunctionDefinition","parameters":{"id":1578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1585,"src":"3526:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1574,"name":"uint32","nodeType":"ElementaryTypeName","src":"3526:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1585,"src":"3546:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3546:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3525:41:12"},"returnParameters":{"id":1581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1580,"mutability":"mutable","name":"nonce","nameLocation":"3603:5:12","nodeType":"VariableDeclaration","scope":1585,"src":"3596:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1579,"name":"uint64","nodeType":"ElementaryTypeName","src":"3596:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3595:14:12"},"scope":1653,"src":"3507:128:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[237],"body":{"id":1636,"nodeType":"Block","src":"4567:509:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1602,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"4681:8:12","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}],"id":1601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4673:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"4673:7:12","typeDescriptions":{}}},"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1604,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4694:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4698:6:12","memberName":"sender","nodeType":"MemberAccess","src":"4694:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4673:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1612,"nodeType":"IfStatement","src":"4669:68:12","trueBody":{"errorCall":{"arguments":[{"expression":{"id":1608,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4726:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4730:6:12","memberName":"sender","nodeType":"MemberAccess","src":"4726:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1607,"name":"OnlyEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"4713:12:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4713:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1611,"nodeType":"RevertStatement","src":"4706:31:12"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1614,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4854:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4862:6:12","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"4854:14:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1613,"name":"_getPeerOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"4837:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$returns$_t_bytes32_$","typeString":"function (uint32) view returns (bytes32)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4837:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1617,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4873:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4881:6:12","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"4873:14:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4837:50:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"IfStatement","src":"4833:103:12","trueBody":{"errorCall":{"arguments":[{"expression":{"id":1621,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4905:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4913:6:12","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"4905:14:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1623,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4921:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4929:6:12","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"4921:14:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1620,"name":"OnlyPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"4896:8:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint32_$_t_bytes32_$returns$_t_error_$","typeString":"function (uint32,bytes32) pure returns (error)"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4896:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1626,"nodeType":"RevertStatement","src":"4889:47:12"}},{"expression":{"arguments":[{"id":1629,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"5021:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"id":1630,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"5030:5:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1631,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1593,"src":"5037:8:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1632,"name":"_executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"5047:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1633,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"5058:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1628,"name":"_lzReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"5010:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Origin_$40_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct Origin calldata,bytes32,bytes calldata,address,bytes calldata)"}},"id":1634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5010:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1635,"nodeType":"ExpressionStatement","src":"5010:59:12"}]},"documentation":{"id":1586,"nodeType":"StructuredDocumentation","src":"3641:722:12","text":" @dev Entry point for receiving messages or packets from the endpoint.\n @param _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @param _guid The unique identifier for the received LayerZero message.\n @param _message The payload of the received message.\n @param _executor The address of the executor for the received message.\n @param _extraData Additional arbitrary data provided by the corresponding executor.\n @dev Entry point for receiving msg/packet from the LayerZero endpoint."},"functionSelector":"13137d65","id":1637,"implemented":true,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"4377:9:12","nodeType":"FunctionDefinition","parameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1589,"mutability":"mutable","name":"_origin","nameLocation":"4412:7:12","nodeType":"VariableDeclaration","scope":1637,"src":"4396:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1588,"nodeType":"UserDefinedTypeName","pathNode":{"id":1587,"name":"Origin","nameLocations":["4396:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4396:6:12"},"referencedDeclaration":40,"src":"4396:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1591,"mutability":"mutable","name":"_guid","nameLocation":"4437:5:12","nodeType":"VariableDeclaration","scope":1637,"src":"4429:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4429:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1593,"mutability":"mutable","name":"_message","nameLocation":"4467:8:12","nodeType":"VariableDeclaration","scope":1637,"src":"4452:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1592,"name":"bytes","nodeType":"ElementaryTypeName","src":"4452:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1595,"mutability":"mutable","name":"_executor","nameLocation":"4493:9:12","nodeType":"VariableDeclaration","scope":1637,"src":"4485:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1594,"name":"address","nodeType":"ElementaryTypeName","src":"4485:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1597,"mutability":"mutable","name":"_extraData","nameLocation":"4527:10:12","nodeType":"VariableDeclaration","scope":1637,"src":"4512:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1596,"name":"bytes","nodeType":"ElementaryTypeName","src":"4512:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4386:157:12"},"returnParameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"4567:0:12"},"scope":1653,"src":"4368:708:12","stateMutability":"payable","virtual":true,"visibility":"public"},{"documentation":{"id":1638,"nodeType":"StructuredDocumentation","src":"5082:126:12","text":" @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation."},"id":1652,"implemented":false,"kind":"function","modifiers":[],"name":"_lzReceive","nameLocation":"5222:10:12","nodeType":"FunctionDefinition","parameters":{"id":1650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1641,"mutability":"mutable","name":"_origin","nameLocation":"5258:7:12","nodeType":"VariableDeclaration","scope":1652,"src":"5242:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1640,"nodeType":"UserDefinedTypeName","pathNode":{"id":1639,"name":"Origin","nameLocations":["5242:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5242:6:12"},"referencedDeclaration":40,"src":"5242:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1643,"mutability":"mutable","name":"_guid","nameLocation":"5283:5:12","nodeType":"VariableDeclaration","scope":1652,"src":"5275:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5275:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"_message","nameLocation":"5313:8:12","nodeType":"VariableDeclaration","scope":1652,"src":"5298:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1644,"name":"bytes","nodeType":"ElementaryTypeName","src":"5298:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1647,"mutability":"mutable","name":"_executor","nameLocation":"5339:9:12","nodeType":"VariableDeclaration","scope":1652,"src":"5331:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1649,"mutability":"mutable","name":"_extraData","nameLocation":"5373:10:12","nodeType":"VariableDeclaration","scope":1652,"src":"5358:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1648,"name":"bytes","nodeType":"ElementaryTypeName","src":"5358:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5232:157:12"},"returnParameters":{"id":1651,"nodeType":"ParameterList","parameters":[],"src":"5406:0:12"},"scope":1653,"src":"5213:194:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1654,"src":"321:5088:12","usedErrors":[1517,1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:5377:12"},"id":12},"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","exportedSymbols":{"IERC20":[4800],"MessagingFee":[33],"MessagingParams":[20],"MessagingReceipt":[28],"OAppCore":[1501],"OAppSender":[1839],"SafeERC20":[5290]},"id":1840,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1655,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":1658,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1840,"sourceUnit":5291,"src":"59:92:13","symbolAliases":[{"foreign":{"id":1656,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5290,"src":"68:9:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1657,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"79:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":1662,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1840,"sourceUnit":203,"src":"152:146:13","symbolAliases":[{"foreign":{"id":1659,"name":"MessagingParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"161:15:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1660,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"178:12:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1661,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"192:16:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","file":"./OAppCore.sol","id":1664,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1840,"sourceUnit":1502,"src":"299:42:13","symbolAliases":[{"foreign":{"id":1663,"name":"OAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"308:8:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1666,"name":"OAppCore","nameLocations":["518:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":1501,"src":"518:8:13"},"id":1667,"nodeType":"InheritanceSpecifier","src":"518:8:13"}],"canonicalName":"OAppSender","contractDependencies":[],"contractKind":"contract","documentation":{"id":1665,"nodeType":"StructuredDocumentation","src":"343:142:13","text":" @title OAppSender\n @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint."},"fullyImplemented":true,"id":1839,"linearizedBaseContracts":[1839,1501,3980,5320,1902],"name":"OAppSender","nameLocation":"504:10:13","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1671,"libraryName":{"id":1668,"name":"SafeERC20","nameLocations":["539:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":5290,"src":"539:9:13"},"nodeType":"UsingForDirective","src":"533:27:13","typeName":{"id":1670,"nodeType":"UserDefinedTypeName","pathNode":{"id":1669,"name":"IERC20","nameLocations":["553:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"553:6:13"},"referencedDeclaration":4800,"src":"553:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}}},{"errorSelector":"9f704120","id":1675,"name":"NotEnoughNative","nameLocation":"601:15:13","nodeType":"ErrorDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"msgValue","nameLocation":"625:8:13","nodeType":"VariableDeclaration","scope":1675,"src":"617:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1672,"name":"uint256","nodeType":"ElementaryTypeName","src":"617:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"616:18:13"},"src":"595:40:13"},{"errorSelector":"5373352a","id":1677,"name":"LzTokenUnavailable","nameLocation":"646:18:13","nodeType":"ErrorDefinition","parameters":{"id":1676,"nodeType":"ParameterList","parameters":[],"src":"664:2:13"},"src":"640:27:13"},{"constant":true,"id":1680,"mutability":"constant","name":"SENDER_VERSION","nameLocation":"826:14:13","nodeType":"VariableDeclaration","scope":1839,"src":"801:43:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1678,"name":"uint64","nodeType":"ElementaryTypeName","src":"801:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"31","id":1679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"843:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"baseFunctions":[1872],"body":{"id":1692,"nodeType":"Block","src":"1456:43:13","statements":[{"expression":{"components":[{"id":1688,"name":"SENDER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1474:14:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1490:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1690,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1473:19:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(uint64,int_const 0)"}},"functionReturnParameters":1687,"id":1691,"nodeType":"Return","src":"1466:26:13"}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"851:502:13","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract.\n @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\n ie. this is a SEND only OApp.\n @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions"},"functionSelector":"17442b70","id":1693,"implemented":true,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"1367:11:13","nodeType":"FunctionDefinition","parameters":{"id":1682,"nodeType":"ParameterList","parameters":[],"src":"1378:2:13"},"returnParameters":{"id":1687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"mutability":"mutable","name":"senderVersion","nameLocation":"1417:13:13","nodeType":"VariableDeclaration","scope":1693,"src":"1410:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1683,"name":"uint64","nodeType":"ElementaryTypeName","src":"1410:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1686,"mutability":"mutable","name":"receiverVersion","nameLocation":"1439:15:13","nodeType":"VariableDeclaration","scope":1693,"src":"1432:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1685,"name":"uint64","nodeType":"ElementaryTypeName","src":"1432:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1409:46:13"},"scope":1839,"src":"1358:141:13","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1725,"nodeType":"Block","src":"2230:199:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":1711,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"2307:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":1713,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"2333:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1712,"name":"_getPeerOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"2316:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$returns$_t_bytes32_$","typeString":"function (uint32) view returns (bytes32)"}},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2316:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1715,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"2343:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1716,"name":"_options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1700,"src":"2353:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1717,"name":"_payInLzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1702,"src":"2363:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1710,"name":"MessagingParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"2291:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MessagingParams_$20_storage_ptr_$","typeString":"type(struct MessagingParams storage pointer)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2291:86:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"}},{"arguments":[{"id":1721,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2403:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_OAppSender_$1839","typeString":"contract OAppSender"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppSender_$1839","typeString":"contract OAppSender"}],"id":1720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2395:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1719,"name":"address","nodeType":"ElementaryTypeName","src":"2395:7:13","typeDescriptions":{}}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2395:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1708,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"2259:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2268:5:13","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":114,"src":"2259:14:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_MessagingParams_$20_memory_ptr_$_t_address_$returns$_t_struct$_MessagingFee_$33_memory_ptr_$","typeString":"function (struct MessagingParams memory,address) view external returns (struct MessagingFee memory)"}},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2259:163:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"functionReturnParameters":1707,"id":1724,"nodeType":"Return","src":"2240:182:13"}]},"documentation":{"id":1694,"nodeType":"StructuredDocumentation","src":"1505:528:13","text":" @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\n @param _dstEid The destination endpoint ID.\n @param _message The message payload.\n @param _options Additional options for the message.\n @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\n @return fee The calculated MessagingFee for the message.\n      - nativeFee: The native fee for the message.\n      - lzTokenFee: The LZ token fee for the message."},"id":1726,"implemented":true,"kind":"function","modifiers":[],"name":"_quote","nameLocation":"2047:6:13","nodeType":"FunctionDefinition","parameters":{"id":1703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1696,"mutability":"mutable","name":"_dstEid","nameLocation":"2070:7:13","nodeType":"VariableDeclaration","scope":1726,"src":"2063:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1695,"name":"uint32","nodeType":"ElementaryTypeName","src":"2063:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1698,"mutability":"mutable","name":"_message","nameLocation":"2100:8:13","nodeType":"VariableDeclaration","scope":1726,"src":"2087:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1697,"name":"bytes","nodeType":"ElementaryTypeName","src":"2087:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1700,"mutability":"mutable","name":"_options","nameLocation":"2131:8:13","nodeType":"VariableDeclaration","scope":1726,"src":"2118:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1699,"name":"bytes","nodeType":"ElementaryTypeName","src":"2118:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1702,"mutability":"mutable","name":"_payInLzToken","nameLocation":"2154:13:13","nodeType":"VariableDeclaration","scope":1726,"src":"2149:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1701,"name":"bool","nodeType":"ElementaryTypeName","src":"2149:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2053:120:13"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1706,"mutability":"mutable","name":"fee","nameLocation":"2225:3:13","nodeType":"VariableDeclaration","scope":1726,"src":"2205:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":1705,"nodeType":"UserDefinedTypeName","pathNode":{"id":1704,"name":"MessagingFee","nameLocations":["2205:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"2205:12:13"},"referencedDeclaration":33,"src":"2205:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"2204:25:13"},"scope":1839,"src":"2038:391:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1780,"nodeType":"Block","src":"3422:532:13","statements":[{"assignments":[1745],"declarations":[{"constant":false,"id":1745,"mutability":"mutable","name":"messageValue","nameLocation":"3562:12:13","nodeType":"VariableDeclaration","scope":1780,"src":"3554:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1750,"initialValue":{"arguments":[{"expression":{"id":1747,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3588:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3593:9:13","memberName":"nativeFee","nodeType":"MemberAccess","referencedDeclaration":30,"src":"3588:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1746,"name":"_payNative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"3577:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3577:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3554:49:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1751,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3617:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3622:10:13","memberName":"lzTokenFee","nodeType":"MemberAccess","referencedDeclaration":32,"src":"3617:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3635:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3617:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1760,"nodeType":"IfStatement","src":"3613:53:13","trueBody":{"expression":{"arguments":[{"expression":{"id":1756,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3650:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3655:10:13","memberName":"lzTokenFee","nodeType":"MemberAccess","referencedDeclaration":32,"src":"3650:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1755,"name":"_payLzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3638:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3638:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1759,"nodeType":"ExpressionStatement","src":"3638:28:13"}},{"expression":{"arguments":[{"arguments":[{"id":1766,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"3825:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":1768,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"3851:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1767,"name":"_getPeerOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"3834:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$returns$_t_bytes32_$","typeString":"function (uint32) view returns (bytes32)"}},"id":1769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3834:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1770,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1731,"src":"3861:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1771,"name":"_options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"3871:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1772,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3881:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3886:10:13","memberName":"lzTokenFee","nodeType":"MemberAccess","referencedDeclaration":32,"src":"3881:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3899:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3881:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1765,"name":"MessagingParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"3809:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MessagingParams_$20_storage_ptr_$","typeString":"type(struct MessagingParams storage pointer)"}},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3809:92:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"}},{"id":1777,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1738,"src":"3919:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1761,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3755:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3764:4:13","memberName":"send","nodeType":"MemberAccess","referencedDeclaration":125,"src":"3755:13:13","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_MessagingParams_$20_memory_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$","typeString":"function (struct MessagingParams memory,address) payable external returns (struct MessagingReceipt memory)"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1763,"name":"messageValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"3777:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3755:36:13","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_MessagingParams_$20_memory_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$value","typeString":"function (struct MessagingParams memory,address) payable external returns (struct MessagingReceipt memory)"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3755:192:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"functionReturnParameters":1743,"id":1779,"nodeType":"Return","src":"3677:270:13"}]},"documentation":{"id":1727,"nodeType":"StructuredDocumentation","src":"2435:748:13","text":" @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\n @param _dstEid The destination endpoint ID.\n @param _message The message payload.\n @param _options Additional options for the message.\n @param _fee The calculated LayerZero fee for the message.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess fee values sent to the endpoint.\n @return receipt The receipt for the sent message.\n      - guid: The unique identifier for the sent message.\n      - nonce: The nonce of the sent message.\n      - fee: The LayerZero fee incurred for the message."},"id":1781,"implemented":true,"kind":"function","modifiers":[],"name":"_lzSend","nameLocation":"3197:7:13","nodeType":"FunctionDefinition","parameters":{"id":1739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1729,"mutability":"mutable","name":"_dstEid","nameLocation":"3221:7:13","nodeType":"VariableDeclaration","scope":1781,"src":"3214:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1728,"name":"uint32","nodeType":"ElementaryTypeName","src":"3214:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1731,"mutability":"mutable","name":"_message","nameLocation":"3251:8:13","nodeType":"VariableDeclaration","scope":1781,"src":"3238:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3238:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1733,"mutability":"mutable","name":"_options","nameLocation":"3282:8:13","nodeType":"VariableDeclaration","scope":1781,"src":"3269:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1732,"name":"bytes","nodeType":"ElementaryTypeName","src":"3269:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1736,"mutability":"mutable","name":"_fee","nameLocation":"3320:4:13","nodeType":"VariableDeclaration","scope":1781,"src":"3300:24:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":1735,"nodeType":"UserDefinedTypeName","pathNode":{"id":1734,"name":"MessagingFee","nameLocations":["3300:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"3300:12:13"},"referencedDeclaration":33,"src":"3300:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":1738,"mutability":"mutable","name":"_refundAddress","nameLocation":"3342:14:13","nodeType":"VariableDeclaration","scope":1781,"src":"3334:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1737,"name":"address","nodeType":"ElementaryTypeName","src":"3334:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3204:158:13"},"returnParameters":{"id":1743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1742,"mutability":"mutable","name":"receipt","nameLocation":"3413:7:13","nodeType":"VariableDeclaration","scope":1781,"src":"3389:31:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":1741,"nodeType":"UserDefinedTypeName","pathNode":{"id":1740,"name":"MessagingReceipt","nameLocations":["3389:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"3389:16:13"},"referencedDeclaration":28,"src":"3389:16:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"}],"src":"3388:33:13"},"scope":1839,"src":"3188:766:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1801,"nodeType":"Block","src":"4735:106:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1789,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4749:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4753:5:13","memberName":"value","nodeType":"MemberAccess","src":"4749:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1791,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"4762:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4749:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1798,"nodeType":"IfStatement","src":"4745:62:13","trueBody":{"errorCall":{"arguments":[{"expression":{"id":1794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4797:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4801:5:13","memberName":"value","nodeType":"MemberAccess","src":"4797:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1793,"name":"NotEnoughNative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"4781:15:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4781:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1797,"nodeType":"RevertStatement","src":"4774:33:13"}},{"expression":{"id":1799,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"4824:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1788,"id":1800,"nodeType":"Return","src":"4817:17:13"}]},"documentation":{"id":1782,"nodeType":"StructuredDocumentation","src":"3960:685:13","text":" @dev Internal function to pay the native fee associated with the message.\n @param _nativeFee The native fee to be paid.\n @return nativeFee The amount of native currency paid.\n @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\n this will need to be overridden because msg.value would contain multiple lzFees.\n @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\n @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\n @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time."},"id":1802,"implemented":true,"kind":"function","modifiers":[],"name":"_payNative","nameLocation":"4659:10:13","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1784,"mutability":"mutable","name":"_nativeFee","nameLocation":"4678:10:13","nodeType":"VariableDeclaration","scope":1802,"src":"4670:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1783,"name":"uint256","nodeType":"ElementaryTypeName","src":"4670:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4669:20:13"},"returnParameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"nativeFee","nameLocation":"4724:9:13","nodeType":"VariableDeclaration","scope":1802,"src":"4716:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"4716:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4715:19:13"},"scope":1839,"src":"4650:191:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1837,"nodeType":"Block","src":"5277:351:13","statements":[{"assignments":[1809],"declarations":[{"constant":false,"id":1809,"mutability":"mutable","name":"lzToken","nameLocation":"5379:7:13","nodeType":"VariableDeclaration","scope":1837,"src":"5371:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1808,"name":"address","nodeType":"ElementaryTypeName","src":"5371:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1813,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1810,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"5389:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5398:7:13","memberName":"lzToken","nodeType":"MemberAccess","referencedDeclaration":191,"src":"5389:16:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5371:36:13"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1814,"name":"lzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"5421:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5440:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5432:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1815,"name":"address","nodeType":"ElementaryTypeName","src":"5432:7:13","typeDescriptions":{}}},"id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5432:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5421:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1823,"nodeType":"IfStatement","src":"5417:54:13","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1820,"name":"LzTokenUnavailable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"5451:18:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5451:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1822,"nodeType":"RevertStatement","src":"5444:27:13"}},{"expression":{"arguments":[{"expression":{"id":1828,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5578:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5582:6:13","memberName":"sender","nodeType":"MemberAccess","src":"5578:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1832,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"5598:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}],"id":1831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5590:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1830,"name":"address","nodeType":"ElementaryTypeName","src":"5590:7:13","typeDescriptions":{}}},"id":1833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5590:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1834,"name":"_lzTokenFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"5609:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1825,"name":"lzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"5552:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1824,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"5545:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4800_$","typeString":"type(contract IERC20)"}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5561:16:13","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":4898,"src":"5545:32:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4800_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:76:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1836,"nodeType":"ExpressionStatement","src":"5545:76:13"}]},"documentation":{"id":1803,"nodeType":"StructuredDocumentation","src":"4847:366:13","text":" @dev Internal function to pay the LZ token fee associated with the message.\n @param _lzTokenFee The LZ token fee to be paid.\n @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\n @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend()."},"id":1838,"implemented":true,"kind":"function","modifiers":[],"name":"_payLzToken","nameLocation":"5227:11:13","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"_lzTokenFee","nameLocation":"5247:11:13","nodeType":"VariableDeclaration","scope":1838,"src":"5239:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"5239:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5238:21:13"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[],"src":"5277:0:13"},"scope":1839,"src":"5218:410:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1840,"src":"486:5144:13","usedErrors":[1675,1677,1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:5598:13"},"id":13},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IOAppCore":[1902]},"id":1903,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1841,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:14"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":1843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1903,"sourceUnit":203,"src":"59:119:14","symbolAliases":[{"foreign":{"id":1842,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"68:20:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppCore","contractDependencies":[],"contractKind":"interface","documentation":{"id":1844,"nodeType":"StructuredDocumentation","src":"180:27:14","text":" @title IOAppCore"},"fullyImplemented":false,"id":1902,"linearizedBaseContracts":[1902],"name":"IOAppCore","nameLocation":"218:9:14","nodeType":"ContractDefinition","nodes":[{"errorSelector":"c26bebcc","id":1850,"name":"OnlyPeer","nameLocation":"269:8:14","nodeType":"ErrorDefinition","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1846,"mutability":"mutable","name":"eid","nameLocation":"285:3:14","nodeType":"VariableDeclaration","scope":1850,"src":"278:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1845,"name":"uint32","nodeType":"ElementaryTypeName","src":"278:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1848,"mutability":"mutable","name":"sender","nameLocation":"298:6:14","nodeType":"VariableDeclaration","scope":1850,"src":"290:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"290:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"277:28:14"},"src":"263:43:14"},{"errorSelector":"f6ff4fb7","id":1854,"name":"NoPeer","nameLocation":"317:6:14","nodeType":"ErrorDefinition","parameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1852,"mutability":"mutable","name":"eid","nameLocation":"331:3:14","nodeType":"VariableDeclaration","scope":1854,"src":"324:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1851,"name":"uint32","nodeType":"ElementaryTypeName","src":"324:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"323:12:14"},"src":"311:25:14"},{"errorSelector":"0fbdec0a","id":1856,"name":"InvalidEndpointCall","nameLocation":"347:19:14","nodeType":"ErrorDefinition","parameters":{"id":1855,"nodeType":"ParameterList","parameters":[],"src":"366:2:14"},"src":"341:28:14"},{"errorSelector":"b5863604","id":1858,"name":"InvalidDelegate","nameLocation":"380:15:14","nodeType":"ErrorDefinition","parameters":{"id":1857,"nodeType":"ParameterList","parameters":[],"src":"395:2:14"},"src":"374:24:14"},{"anonymous":false,"eventSelector":"238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b","id":1864,"name":"PeerSet","nameLocation":"486:7:14","nodeType":"EventDefinition","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"501:3:14","nodeType":"VariableDeclaration","scope":1864,"src":"494:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1859,"name":"uint32","nodeType":"ElementaryTypeName","src":"494:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1862,"indexed":false,"mutability":"mutable","name":"peer","nameLocation":"514:4:14","nodeType":"VariableDeclaration","scope":1864,"src":"506:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1861,"name":"bytes32","nodeType":"ElementaryTypeName","src":"506:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"493:26:14"},"src":"480:40:14"},{"documentation":{"id":1865,"nodeType":"StructuredDocumentation","src":"526:216:14","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract."},"functionSelector":"17442b70","id":1872,"implemented":false,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"756:11:14","nodeType":"FunctionDefinition","parameters":{"id":1866,"nodeType":"ParameterList","parameters":[],"src":"767:2:14"},"returnParameters":{"id":1871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1868,"mutability":"mutable","name":"senderVersion","nameLocation":"800:13:14","nodeType":"VariableDeclaration","scope":1872,"src":"793:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1867,"name":"uint64","nodeType":"ElementaryTypeName","src":"793:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1870,"mutability":"mutable","name":"receiverVersion","nameLocation":"822:15:14","nodeType":"VariableDeclaration","scope":1872,"src":"815:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1869,"name":"uint64","nodeType":"ElementaryTypeName","src":"815:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"792:46:14"},"scope":1902,"src":"747:92:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1873,"nodeType":"StructuredDocumentation","src":"845:150:14","text":" @notice Retrieves the LayerZero endpoint associated with the OApp.\n @return iEndpoint The LayerZero endpoint as an interface."},"functionSelector":"5e280f11","id":1879,"implemented":false,"kind":"function","modifiers":[],"name":"endpoint","nameLocation":"1009:8:14","nodeType":"FunctionDefinition","parameters":{"id":1874,"nodeType":"ParameterList","parameters":[],"src":"1017:2:14"},"returnParameters":{"id":1878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1877,"mutability":"mutable","name":"iEndpoint","nameLocation":"1064:9:14","nodeType":"VariableDeclaration","scope":1879,"src":"1043:30:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"},"typeName":{"id":1876,"nodeType":"UserDefinedTypeName","pathNode":{"id":1875,"name":"ILayerZeroEndpointV2","nameLocations":["1043:20:14"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"1043:20:14"},"referencedDeclaration":202,"src":"1043:20:14","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"visibility":"internal"}],"src":"1042:32:14"},"scope":1902,"src":"1000:75:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1880,"nodeType":"StructuredDocumentation","src":"1081:227:14","text":" @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\n @param _eid The endpoint ID.\n @return peer The peer address (OApp instance) associated with the corresponding endpoint."},"functionSelector":"bb0b6a53","id":1887,"implemented":false,"kind":"function","modifiers":[],"name":"peers","nameLocation":"1322:5:14","nodeType":"FunctionDefinition","parameters":{"id":1883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1882,"mutability":"mutable","name":"_eid","nameLocation":"1335:4:14","nodeType":"VariableDeclaration","scope":1887,"src":"1328:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1881,"name":"uint32","nodeType":"ElementaryTypeName","src":"1328:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1327:13:14"},"returnParameters":{"id":1886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1885,"mutability":"mutable","name":"peer","nameLocation":"1372:4:14","nodeType":"VariableDeclaration","scope":1887,"src":"1364:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1884,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1364:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1363:14:14"},"scope":1902,"src":"1313:65:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1888,"nodeType":"StructuredDocumentation","src":"1384:224:14","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint."},"functionSelector":"3400288b","id":1895,"implemented":false,"kind":"function","modifiers":[],"name":"setPeer","nameLocation":"1622:7:14","nodeType":"FunctionDefinition","parameters":{"id":1893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"_eid","nameLocation":"1637:4:14","nodeType":"VariableDeclaration","scope":1895,"src":"1630:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1889,"name":"uint32","nodeType":"ElementaryTypeName","src":"1630:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1892,"mutability":"mutable","name":"_peer","nameLocation":"1651:5:14","nodeType":"VariableDeclaration","scope":1895,"src":"1643:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1891,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1643:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1629:28:14"},"returnParameters":{"id":1894,"nodeType":"ParameterList","parameters":[],"src":"1666:0:14"},"scope":1902,"src":"1613:54:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"1673:134:14","text":" @notice Sets the delegate address for the OApp Core.\n @param _delegate The address of the delegate to be set."},"functionSelector":"ca5eb5e1","id":1901,"implemented":false,"kind":"function","modifiers":[],"name":"setDelegate","nameLocation":"1821:11:14","nodeType":"FunctionDefinition","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1898,"mutability":"mutable","name":"_delegate","nameLocation":"1841:9:14","nodeType":"VariableDeclaration","scope":1901,"src":"1833:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"1833:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1832:19:14"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[],"src":"1860:0:14"},"scope":1902,"src":"1812:49:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1903,"src":"208:1655:14","usedErrors":[1850,1854,1856,1858],"usedEvents":[1864]}],"src":"33:1831:14"},"id":14},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol","exportedSymbols":{"IOAppMsgInspector":[1922]},"id":1923,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1904,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppMsgInspector","contractDependencies":[],"contractKind":"interface","documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"59:139:15","text":" @title IOAppMsgInspector\n @dev Interface for the OApp Message Inspector, allowing examination of message and options contents."},"fullyImplemented":false,"id":1922,"linearizedBaseContracts":[1922],"name":"IOAppMsgInspector","nameLocation":"209:17:15","nodeType":"ContractDefinition","nodes":[{"errorSelector":"7b43b439","id":1911,"name":"InspectionFailed","nameLocation":"290:16:15","nodeType":"ErrorDefinition","parameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"message","nameLocation":"313:7:15","nodeType":"VariableDeclaration","scope":1911,"src":"307:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1906,"name":"bytes","nodeType":"ElementaryTypeName","src":"307:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1909,"mutability":"mutable","name":"options","nameLocation":"328:7:15","nodeType":"VariableDeclaration","scope":1911,"src":"322:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1908,"name":"bytes","nodeType":"ElementaryTypeName","src":"322:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"306:30:15"},"src":"284:53:15"},{"documentation":{"id":1912,"nodeType":"StructuredDocumentation","src":"343:456:15","text":" @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\n @param _message The message payload to be inspected.\n @param _options Additional options or parameters for inspection.\n @return valid A boolean indicating whether the inspection passed (true) or failed (false).\n @dev Optionally done as a revert, OR use the boolean provided to handle the failure."},"functionSelector":"043a78eb","id":1921,"implemented":false,"kind":"function","modifiers":[],"name":"inspect","nameLocation":"813:7:15","nodeType":"FunctionDefinition","parameters":{"id":1917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1914,"mutability":"mutable","name":"_message","nameLocation":"836:8:15","nodeType":"VariableDeclaration","scope":1921,"src":"821:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1913,"name":"bytes","nodeType":"ElementaryTypeName","src":"821:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1916,"mutability":"mutable","name":"_options","nameLocation":"861:8:15","nodeType":"VariableDeclaration","scope":1921,"src":"846:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1915,"name":"bytes","nodeType":"ElementaryTypeName","src":"846:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"820:50:15"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1919,"mutability":"mutable","name":"valid","nameLocation":"899:5:15","nodeType":"VariableDeclaration","scope":1921,"src":"894:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1918,"name":"bool","nodeType":"ElementaryTypeName","src":"894:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"893:12:15"},"scope":1922,"src":"804:102:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1923,"src":"199:709:15","usedErrors":[1911],"usedEvents":[]}],"src":"33:876:15"},"id":15},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol","exportedSymbols":{"EnforcedOptionParam":[1932],"IOAppOptionsType3":[1964]},"id":1965,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1924,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:16"},{"canonicalName":"EnforcedOptionParam","documentation":{"id":1925,"nodeType":"StructuredDocumentation","src":"59:63:16","text":" @dev Struct representing enforced option parameters."},"id":1932,"members":[{"constant":false,"id":1927,"mutability":"mutable","name":"eid","nameLocation":"163:3:16","nodeType":"VariableDeclaration","scope":1932,"src":"156:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1926,"name":"uint32","nodeType":"ElementaryTypeName","src":"156:6:16","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1929,"mutability":"mutable","name":"msgType","nameLocation":"194:7:16","nodeType":"VariableDeclaration","scope":1932,"src":"187:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1928,"name":"uint16","nodeType":"ElementaryTypeName","src":"187:6:16","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1931,"mutability":"mutable","name":"options","nameLocation":"229:7:16","nodeType":"VariableDeclaration","scope":1932,"src":"223:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1930,"name":"bytes","nodeType":"ElementaryTypeName","src":"223:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"EnforcedOptionParam","nameLocation":"130:19:16","nodeType":"StructDefinition","scope":1965,"src":"123:138:16","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppOptionsType3","contractDependencies":[],"contractKind":"interface","documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"263:143:16","text":" @title IOAppOptionsType3\n @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options."},"fullyImplemented":false,"id":1964,"linearizedBaseContracts":[1964],"name":"IOAppOptionsType3","nameLocation":"417:17:16","nodeType":"ContractDefinition","nodes":[{"errorSelector":"9a6d49cd","id":1937,"name":"InvalidOptions","nameLocation":"495:14:16","nodeType":"ErrorDefinition","parameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"options","nameLocation":"516:7:16","nodeType":"VariableDeclaration","scope":1937,"src":"510:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1934,"name":"bytes","nodeType":"ElementaryTypeName","src":"510:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"509:15:16"},"src":"489:36:16"},{"anonymous":false,"eventSelector":"be4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674","id":1943,"name":"EnforcedOptionSet","nameLocation":"588:17:16","nodeType":"EventDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1941,"indexed":false,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"628:16:16","nodeType":"VariableDeclaration","scope":1943,"src":"606:38:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":1939,"nodeType":"UserDefinedTypeName","pathNode":{"id":1938,"name":"EnforcedOptionParam","nameLocations":["606:19:16"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"606:19:16"},"referencedDeclaration":1932,"src":"606:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":1940,"nodeType":"ArrayTypeName","src":"606:21:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"605:40:16"},"src":"582:64:16"},{"documentation":{"id":1944,"nodeType":"StructuredDocumentation","src":"652:204:16","text":" @notice Sets enforced options for specific endpoint and message type combinations.\n @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options."},"functionSelector":"b98bd070","id":1951,"implemented":false,"kind":"function","modifiers":[],"name":"setEnforcedOptions","nameLocation":"870:18:16","nodeType":"FunctionDefinition","parameters":{"id":1949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1948,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"920:16:16","nodeType":"VariableDeclaration","scope":1951,"src":"889:47:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":1946,"nodeType":"UserDefinedTypeName","pathNode":{"id":1945,"name":"EnforcedOptionParam","nameLocations":["889:19:16"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"889:19:16"},"referencedDeclaration":1932,"src":"889:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":1947,"nodeType":"ArrayTypeName","src":"889:21:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"888:49:16"},"returnParameters":{"id":1950,"nodeType":"ParameterList","parameters":[],"src":"946:0:16"},"scope":1964,"src":"861:86:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1952,"nodeType":"StructuredDocumentation","src":"953:322:16","text":" @notice Combines options for a given endpoint and message type.\n @param _eid The endpoint ID.\n @param _msgType The OApp message type.\n @param _extraOptions Additional options passed by the caller.\n @return options The combination of caller specified options AND enforced options."},"functionSelector":"bc70b354","id":1963,"implemented":false,"kind":"function","modifiers":[],"name":"combineOptions","nameLocation":"1289:14:16","nodeType":"FunctionDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1954,"mutability":"mutable","name":"_eid","nameLocation":"1320:4:16","nodeType":"VariableDeclaration","scope":1963,"src":"1313:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1953,"name":"uint32","nodeType":"ElementaryTypeName","src":"1313:6:16","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1956,"mutability":"mutable","name":"_msgType","nameLocation":"1341:8:16","nodeType":"VariableDeclaration","scope":1963,"src":"1334:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1955,"name":"uint16","nodeType":"ElementaryTypeName","src":"1334:6:16","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1958,"mutability":"mutable","name":"_extraOptions","nameLocation":"1374:13:16","nodeType":"VariableDeclaration","scope":1963,"src":"1359:28:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1957,"name":"bytes","nodeType":"ElementaryTypeName","src":"1359:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1303:90:16"},"returnParameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"options","nameLocation":"1430:7:16","nodeType":"VariableDeclaration","scope":1963,"src":"1417:20:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1960,"name":"bytes","nodeType":"ElementaryTypeName","src":"1417:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1416:22:16"},"scope":1964,"src":"1280:159:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1965,"src":"407:1034:16","usedErrors":[1937],"usedEvents":[1943]}],"src":"33:1409:16"},"id":16},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol","exportedSymbols":{"ILayerZeroReceiver":[238],"IOAppReceiver":[1985],"Origin":[40]},"id":1986,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1966,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:17"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","id":1969,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1986,"sourceUnit":239,"src":"58:123:17","symbolAliases":[{"foreign":{"id":1967,"name":"ILayerZeroReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"67:18:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1968,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"87:6:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1970,"name":"ILayerZeroReceiver","nameLocations":["210:18:17"],"nodeType":"IdentifierPath","referencedDeclaration":238,"src":"210:18:17"},"id":1971,"nodeType":"InheritanceSpecifier","src":"210:18:17"}],"canonicalName":"IOAppReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1985,"linearizedBaseContracts":[1985,238],"name":"IOAppReceiver","nameLocation":"193:13:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1972,"nodeType":"StructuredDocumentation","src":"235:670:17","text":" @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n @param _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @param _message The lzReceive payload.\n @param _sender The sender address.\n @return isSender Is a valid sender.\n @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\n @dev The default sender IS the OAppReceiver implementer."},"functionSelector":"82413eac","id":1984,"implemented":false,"kind":"function","modifiers":[],"name":"isComposeMsgSender","nameLocation":"919:18:17","nodeType":"FunctionDefinition","parameters":{"id":1980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1975,"mutability":"mutable","name":"_origin","nameLocation":"963:7:17","nodeType":"VariableDeclaration","scope":1984,"src":"947:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1974,"nodeType":"UserDefinedTypeName","pathNode":{"id":1973,"name":"Origin","nameLocations":["947:6:17"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"947:6:17"},"referencedDeclaration":40,"src":"947:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1977,"mutability":"mutable","name":"_message","nameLocation":"995:8:17","nodeType":"VariableDeclaration","scope":1984,"src":"980:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1976,"name":"bytes","nodeType":"ElementaryTypeName","src":"980:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1979,"mutability":"mutable","name":"_sender","nameLocation":"1021:7:17","nodeType":"VariableDeclaration","scope":1984,"src":"1013:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1978,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"937:97:17"},"returnParameters":{"id":1983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1982,"mutability":"mutable","name":"isSender","nameLocation":"1063:8:17","nodeType":"VariableDeclaration","scope":1984,"src":"1058:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1981,"name":"bool","nodeType":"ElementaryTypeName","src":"1058:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1057:15:17"},"scope":1985,"src":"910:163:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1986,"src":"183:892:17","usedErrors":[],"usedEvents":[]}],"src":"32:1044:17"},"id":17},"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol","exportedSymbols":{"EnforcedOptionParam":[1932],"IOAppOptionsType3":[1964],"OAppOptionsType3":[2149],"Ownable":[3980]},"id":2150,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1987,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:18"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1989,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2150,"sourceUnit":3981,"src":"59:69:18","symbolAliases":[{"foreign":{"id":1988,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"68:7:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol","file":"../interfaces/IOAppOptionsType3.sol","id":1992,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2150,"sourceUnit":1965,"src":"129:93:18","symbolAliases":[{"foreign":{"id":1990,"name":"IOAppOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"138:17:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1991,"name":"EnforcedOptionParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1932,"src":"157:19:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1994,"name":"IOAppOptionsType3","nameLocations":["389:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":1964,"src":"389:17:18"},"id":1995,"nodeType":"InheritanceSpecifier","src":"389:17:18"},{"baseName":{"id":1996,"name":"Ownable","nameLocations":["408:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"408:7:18"},"id":1997,"nodeType":"InheritanceSpecifier","src":"408:7:18"}],"canonicalName":"OAppOptionsType3","contractDependencies":[],"contractKind":"contract","documentation":{"id":1993,"nodeType":"StructuredDocumentation","src":"224:126:18","text":" @title OAppOptionsType3\n @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options."},"fullyImplemented":true,"id":2149,"linearizedBaseContracts":[2149,3980,5320,1964],"name":"OAppOptionsType3","nameLocation":"369:16:18","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2000,"mutability":"constant","name":"OPTION_TYPE_3","nameLocation":"447:13:18","nodeType":"VariableDeclaration","scope":2149,"src":"422:42:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1998,"name":"uint16","nodeType":"ElementaryTypeName","src":"422:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"33","id":1999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"463:1:18","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":false,"functionSelector":"5535d461","id":2006,"mutability":"mutable","name":"enforcedOptions","nameLocation":"616:15:18","nodeType":"VariableDeclaration","scope":2149,"src":"538:93:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes))"},"typeName":{"id":2005,"keyName":"eid","keyNameLocation":"553:3:18","keyType":{"id":2001,"name":"uint32","nodeType":"ElementaryTypeName","src":"546:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"538:70:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2004,"keyName":"msgType","keyNameLocation":"575:7:18","keyType":{"id":2002,"name":"uint16","nodeType":"ElementaryTypeName","src":"568:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"560:47:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_bytes_storage_$","typeString":"mapping(uint16 => bytes)"},"valueName":"enforcedOption","valueNameLocation":"592:14:18","valueType":{"id":2003,"name":"bytes","nodeType":"ElementaryTypeName","src":"586:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}}},"visibility":"public"},{"baseFunctions":[1951],"body":{"id":2020,"nodeType":"Block","src":"1493:54:18","statements":[{"expression":{"arguments":[{"id":2017,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"1523:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam calldata[] calldata"}],"id":2016,"name":"_setEnforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2071,"src":"1503:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct EnforcedOptionParam memory[] memory)"}},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2019,"nodeType":"ExpressionStatement","src":"1503:37:18"}]},"documentation":{"id":2007,"nodeType":"StructuredDocumentation","src":"638:748:18","text":" @dev Sets the enforced options for specific endpoint and message type combinations.\n @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n @dev Only the owner/admin of the OApp can call this function.\n @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose()."},"functionSelector":"b98bd070","id":2021,"implemented":true,"kind":"function","modifiers":[{"id":2014,"kind":"modifierInvocation","modifierName":{"id":2013,"name":"onlyOwner","nameLocations":["1483:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1483:9:18"},"nodeType":"ModifierInvocation","src":"1483:9:18"}],"name":"setEnforcedOptions","nameLocation":"1400:18:18","nodeType":"FunctionDefinition","parameters":{"id":2012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2011,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"1450:16:18","nodeType":"VariableDeclaration","scope":2021,"src":"1419:47:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":2009,"nodeType":"UserDefinedTypeName","pathNode":{"id":2008,"name":"EnforcedOptionParam","nameLocations":["1419:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"1419:19:18"},"referencedDeclaration":1932,"src":"1419:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":2010,"nodeType":"ArrayTypeName","src":"1419:21:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"1418:49:18"},"returnParameters":{"id":2015,"nodeType":"ParameterList","parameters":[],"src":"1493:0:18"},"scope":2149,"src":"1391:156:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2070,"nodeType":"Block","src":"2330:421:18","statements":[{"body":{"id":2064,"nodeType":"Block","src":"2394:300:18","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":2041,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2542:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2043,"indexExpression":{"id":2042,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2559:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2542:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2562:7:18","memberName":"options","nodeType":"MemberAccess","referencedDeclaration":1931,"src":"2542:27:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2040,"name":"_assertOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2148,"src":"2522:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2522:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2046,"nodeType":"ExpressionStatement","src":"2522:48:18"},{"expression":{"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2047,"name":"enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"2584:15:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes storage ref))"}},"id":2056,"indexExpression":{"expression":{"baseExpression":{"id":2048,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2600:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2050,"indexExpression":{"id":2049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2617:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2600:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2620:3:18","memberName":"eid","nodeType":"MemberAccess","referencedDeclaration":1927,"src":"2600:23:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2584:40:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_bytes_storage_$","typeString":"mapping(uint16 => bytes storage ref)"}},"id":2057,"indexExpression":{"expression":{"baseExpression":{"id":2052,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2625:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2054,"indexExpression":{"id":2053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2642:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2625:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2645:7:18","memberName":"msgType","nodeType":"MemberAccess","referencedDeclaration":1929,"src":"2625:27:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2584:69:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":2058,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2656:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2060,"indexExpression":{"id":2059,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2673:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2656:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2676:7:18","memberName":"options","nodeType":"MemberAccess","referencedDeclaration":1931,"src":"2656:27:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"2584:99:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":2063,"nodeType":"ExpressionStatement","src":"2584:99:18"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2360:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2034,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2364:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2381:6:18","memberName":"length","nodeType":"MemberAccess","src":"2364:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2360:27:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2065,"initializationExpression":{"assignments":[2030],"declarations":[{"constant":false,"id":2030,"mutability":"mutable","name":"i","nameLocation":"2353:1:18","nodeType":"VariableDeclaration","scope":2065,"src":"2345:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"2345:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2032,"initialValue":{"hexValue":"30","id":2031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2357:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2345:13:18"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2389:3:18","subExpression":{"id":2037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2389:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2039,"nodeType":"ExpressionStatement","src":"2389:3:18"},"nodeType":"ForStatement","src":"2340:354:18"},{"eventCall":{"arguments":[{"id":2067,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2727:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}],"id":2066,"name":"EnforcedOptionSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"2709:17:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct EnforcedOptionParam memory[] memory)"}},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2709:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2069,"nodeType":"EmitStatement","src":"2704:40:18"}]},"documentation":{"id":2022,"nodeType":"StructuredDocumentation","src":"1553:679:18","text":" @dev Sets the enforced options for specific endpoint and message type combinations.\n @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose()."},"id":2071,"implemented":true,"kind":"function","modifiers":[],"name":"_setEnforcedOptions","nameLocation":"2246:19:18","nodeType":"FunctionDefinition","parameters":{"id":2027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2026,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"2295:16:18","nodeType":"VariableDeclaration","scope":2071,"src":"2266:45:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":2024,"nodeType":"UserDefinedTypeName","pathNode":{"id":2023,"name":"EnforcedOptionParam","nameLocations":["2266:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"2266:19:18"},"referencedDeclaration":1932,"src":"2266:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":2025,"nodeType":"ArrayTypeName","src":"2266:21:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"2265:47:18"},"returnParameters":{"id":2028,"nodeType":"ParameterList","parameters":[],"src":"2330:0:18"},"scope":2149,"src":"2237:514:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1963],"body":{"id":2128,"nodeType":"Block","src":"3667:824:18","statements":[{"assignments":[2084],"declarations":[{"constant":false,"id":2084,"mutability":"mutable","name":"enforced","nameLocation":"3690:8:18","nodeType":"VariableDeclaration","scope":2128,"src":"3677:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2083,"name":"bytes","nodeType":"ElementaryTypeName","src":"3677:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2090,"initialValue":{"baseExpression":{"baseExpression":{"id":2085,"name":"enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"3701:15:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes storage ref))"}},"id":2087,"indexExpression":{"id":2086,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"3717:4:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3701:21:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_bytes_storage_$","typeString":"mapping(uint16 => bytes storage ref)"}},"id":2089,"indexExpression":{"id":2088,"name":"_msgType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"3723:8:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3701:31:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3677:55:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2091,"name":"enforced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"3861:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:6:18","memberName":"length","nodeType":"MemberAccess","src":"3861:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3880:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3861:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2097,"nodeType":"IfStatement","src":"3857:46:18","trueBody":{"expression":{"id":2095,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"3890:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2082,"id":2096,"nodeType":"Return","src":"3883:20:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2098,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"3964:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3978:6:18","memberName":"length","nodeType":"MemberAccess","src":"3964:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3988:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3964:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2104,"nodeType":"IfStatement","src":"3960:46:18","trueBody":{"expression":{"id":2102,"name":"enforced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"3998:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2082,"id":2103,"nodeType":"Return","src":"3991:15:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2105,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4129:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4143:6:18","memberName":"length","nodeType":"MemberAccess","src":"4129:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"32","id":2107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4153:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4129:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2123,"nodeType":"IfStatement","src":"4125:267:18","trueBody":{"id":2122,"nodeType":"Block","src":"4156:236:18","statements":[{"expression":{"arguments":[{"id":2110,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4190:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2109,"name":"_assertOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2148,"src":"4170:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4170:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2112,"nodeType":"ExpressionStatement","src":"4170:34:18"},{"expression":{"arguments":[{"id":2116,"name":"enforced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"4353:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"baseExpression":{"id":2117,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4363:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"4363:17:18","startExpression":{"hexValue":"32","id":2118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4377:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"id":2114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4340:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2113,"name":"bytes","nodeType":"ElementaryTypeName","src":"4340:5:18","typeDescriptions":{}}},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4346:6:18","memberName":"concat","nodeType":"MemberAccess","src":"4340:12:18","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4340:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2082,"id":2121,"nodeType":"Return","src":"4333:48:18"}]}},{"errorCall":{"arguments":[{"id":2125,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4470:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2124,"name":"InvalidOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4455:14:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2127,"nodeType":"RevertStatement","src":"4448:36:18"}]},"documentation":{"id":2072,"nodeType":"StructuredDocumentation","src":"2757:748:18","text":" @notice Combines options for a given endpoint and message type.\n @param _eid The endpoint ID.\n @param _msgType The OAPP message type.\n @param _extraOptions Additional options passed by the caller.\n @return options The combination of caller specified options AND enforced options.\n @dev If there is an enforced lzReceive option:\n - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\n - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\n @dev This presence of duplicated options is handled off-chain in the verifier/executor."},"functionSelector":"bc70b354","id":2129,"implemented":true,"kind":"function","modifiers":[],"name":"combineOptions","nameLocation":"3519:14:18","nodeType":"FunctionDefinition","parameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2074,"mutability":"mutable","name":"_eid","nameLocation":"3550:4:18","nodeType":"VariableDeclaration","scope":2129,"src":"3543:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2073,"name":"uint32","nodeType":"ElementaryTypeName","src":"3543:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2076,"mutability":"mutable","name":"_msgType","nameLocation":"3571:8:18","nodeType":"VariableDeclaration","scope":2129,"src":"3564:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2075,"name":"uint16","nodeType":"ElementaryTypeName","src":"3564:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2078,"mutability":"mutable","name":"_extraOptions","nameLocation":"3604:13:18","nodeType":"VariableDeclaration","scope":2129,"src":"3589:28:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2077,"name":"bytes","nodeType":"ElementaryTypeName","src":"3589:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3533:90:18"},"returnParameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2129,"src":"3653:12:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2080,"name":"bytes","nodeType":"ElementaryTypeName","src":"3653:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3652:14:18"},"scope":2149,"src":"3510:981:18","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2147,"nodeType":"Block","src":"4705:190:18","statements":[{"assignments":[2136],"declarations":[{"constant":false,"id":2136,"mutability":"mutable","name":"optionsType","nameLocation":"4722:11:18","nodeType":"VariableDeclaration","scope":2147,"src":"4715:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2135,"name":"uint16","nodeType":"ElementaryTypeName","src":"4715:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":2137,"nodeType":"VariableDeclarationStatement","src":"4715:18:18"},{"AST":{"nativeSrc":"4752:62:18","nodeType":"YulBlock","src":"4752:62:18","statements":[{"nativeSrc":"4766:38:18","nodeType":"YulAssignment","src":"4766:38:18","value":{"arguments":[{"arguments":[{"name":"_options","nativeSrc":"4791:8:18","nodeType":"YulIdentifier","src":"4791:8:18"},{"kind":"number","nativeSrc":"4801:1:18","nodeType":"YulLiteral","src":"4801:1:18","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"4787:3:18","nodeType":"YulIdentifier","src":"4787:3:18"},"nativeSrc":"4787:16:18","nodeType":"YulFunctionCall","src":"4787:16:18"}],"functionName":{"name":"mload","nativeSrc":"4781:5:18","nodeType":"YulIdentifier","src":"4781:5:18"},"nativeSrc":"4781:23:18","nodeType":"YulFunctionCall","src":"4781:23:18"},"variableNames":[{"name":"optionsType","nativeSrc":"4766:11:18","nodeType":"YulIdentifier","src":"4766:11:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2132,"isOffset":false,"isSlot":false,"src":"4791:8:18","valueSize":1},{"declaration":2136,"isOffset":false,"isSlot":false,"src":"4766:11:18","valueSize":1}],"id":2138,"nodeType":"InlineAssembly","src":"4743:71:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2139,"name":"optionsType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"4827:11:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2140,"name":"OPTION_TYPE_3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"4842:13:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4827:28:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2146,"nodeType":"IfStatement","src":"4823:65:18","trueBody":{"errorCall":{"arguments":[{"id":2143,"name":"_options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"4879:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2142,"name":"InvalidOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4864:14:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":2144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4864:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2145,"nodeType":"RevertStatement","src":"4857:31:18"}}]},"documentation":{"id":2130,"nodeType":"StructuredDocumentation","src":"4497:129:18","text":" @dev Internal function to assert that options are of type 3.\n @param _options The options to be checked."},"id":2148,"implemented":true,"kind":"function","modifiers":[],"name":"_assertOptionsType3","nameLocation":"4640:19:18","nodeType":"FunctionDefinition","parameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2132,"mutability":"mutable","name":"_options","nameLocation":"4673:8:18","nodeType":"VariableDeclaration","scope":2148,"src":"4660:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"4660:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4659:23:18"},"returnParameters":{"id":2134,"nodeType":"ParameterList","parameters":[],"src":"4705:0:18"},"scope":2149,"src":"4631:264:18","stateMutability":"pure","virtual":true,"visibility":"internal"}],"scope":2150,"src":"351:4546:18","usedErrors":[1937,3846,3851],"usedEvents":[1943,3857]}],"src":"33:4865:18"},"id":18},"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol","exportedSymbols":{"IOAppPreCrimeSimulator":[2377],"IPreCrime":[2461],"InboundPacket":[2486],"OAppPreCrimeSimulator":[2323],"Origin":[40],"Ownable":[3980]},"id":2324,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2151,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:19"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":2153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2324,"sourceUnit":3981,"src":"59:69:19","symbolAliases":[{"foreign":{"id":2152,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"68:7:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol","file":"./interfaces/IPreCrime.sol","id":2155,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2324,"sourceUnit":2462,"src":"129:55:19","symbolAliases":[{"foreign":{"id":2154,"name":"IPreCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"138:9:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol","file":"./interfaces/IOAppPreCrimeSimulator.sol","id":2159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2324,"sourceUnit":2378,"src":"185:104:19","symbolAliases":[{"foreign":{"id":2156,"name":"IOAppPreCrimeSimulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"194:22:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2157,"name":"InboundPacket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"218:13:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2158,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"233:6:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2161,"name":"IOAppPreCrimeSimulator","nameLocations":["470:22:19"],"nodeType":"IdentifierPath","referencedDeclaration":2377,"src":"470:22:19"},"id":2162,"nodeType":"InheritanceSpecifier","src":"470:22:19"},{"baseName":{"id":2163,"name":"Ownable","nameLocations":["494:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"494:7:19"},"id":2164,"nodeType":"InheritanceSpecifier","src":"494:7:19"}],"canonicalName":"OAppPreCrimeSimulator","contractDependencies":[],"contractKind":"contract","documentation":{"id":2160,"nodeType":"StructuredDocumentation","src":"291:135:19","text":" @title OAppPreCrimeSimulator\n @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp."},"fullyImplemented":false,"id":2323,"linearizedBaseContracts":[2323,3980,5320,2377],"name":"OAppPreCrimeSimulator","nameLocation":"445:21:19","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2346],"constant":false,"functionSelector":"b731ea0a","id":2166,"mutability":"mutable","name":"preCrime","nameLocation":"574:8:19","nodeType":"VariableDeclaration","scope":2323,"src":"559:23:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2165,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[2352],"body":{"id":2177,"nodeType":"Block","src":"931:37:19","statements":[{"expression":{"arguments":[{"id":2174,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"956:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}],"id":2173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"948:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2172,"name":"address","nodeType":"ElementaryTypeName","src":"948:7:19","typeDescriptions":{}}},"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2171,"id":2176,"nodeType":"Return","src":"941:20:19"}]},"documentation":{"id":2167,"nodeType":"StructuredDocumentation","src":"589:281:19","text":" @dev Retrieves the address of the OApp contract.\n @return The address of the OApp contract.\n @dev The simulator contract is the base contract for the OApp by default.\n @dev If the simulator is a separate contract, override this function."},"functionSelector":"52ae2879","id":2178,"implemented":true,"kind":"function","modifiers":[],"name":"oApp","nameLocation":"884:4:19","nodeType":"FunctionDefinition","parameters":{"id":2168,"nodeType":"ParameterList","parameters":[],"src":"888:2:19"},"returnParameters":{"id":2171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2178,"src":"922:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"922:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"921:9:19"},"scope":2323,"src":"875:93:19","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[2358],"body":{"id":2194,"nodeType":"Block","src":"1165:74:19","statements":[{"expression":{"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2186,"name":"preCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"1175:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2187,"name":"_preCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"1186:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1175:20:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2189,"nodeType":"ExpressionStatement","src":"1175:20:19"},{"eventCall":{"arguments":[{"id":2191,"name":"_preCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"1222:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2190,"name":"PreCrimeSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"1210:11:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1210:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2193,"nodeType":"EmitStatement","src":"1205:27:19"}]},"documentation":{"id":2179,"nodeType":"StructuredDocumentation","src":"974:121:19","text":" @dev Sets the preCrime contract address.\n @param _preCrime The address of the preCrime contract."},"functionSelector":"d4243885","id":2195,"implemented":true,"kind":"function","modifiers":[{"id":2184,"kind":"modifierInvocation","modifierName":{"id":2183,"name":"onlyOwner","nameLocations":["1155:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1155:9:19"},"nodeType":"ModifierInvocation","src":"1155:9:19"}],"name":"setPreCrime","nameLocation":"1109:11:19","nodeType":"FunctionDefinition","parameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2181,"mutability":"mutable","name":"_preCrime","nameLocation":"1129:9:19","nodeType":"VariableDeclaration","scope":2195,"src":"1121:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2180,"name":"address","nodeType":"ElementaryTypeName","src":"1121:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1120:19:19"},"returnParameters":{"id":2185,"nodeType":"ParameterList","parameters":[],"src":"1165:0:19"},"scope":2323,"src":"1100:139:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2366],"body":{"id":2261,"nodeType":"Block","src":"1784:1247:19","statements":[{"body":{"id":2250,"nodeType":"Block","src":"1840:991:19","statements":[{"assignments":[2216],"declarations":[{"constant":false,"id":2216,"mutability":"mutable","name":"packet","nameLocation":"1877:6:19","nodeType":"VariableDeclaration","scope":2250,"src":"1854:29:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket"},"typeName":{"id":2215,"nodeType":"UserDefinedTypeName","pathNode":{"id":2214,"name":"InboundPacket","nameLocations":["1854:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1854:13:19"},"referencedDeclaration":2486,"src":"1854:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"visibility":"internal"}],"id":2220,"initialValue":{"baseExpression":{"id":2217,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"1886:8:19","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket calldata[] calldata"}},"id":2219,"indexExpression":{"id":2218,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1895:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1886:11:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"nodeType":"VariableDeclarationStatement","src":"1854:43:19"},{"condition":{"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1979:51:19","subExpression":{"arguments":[{"expression":{"expression":{"id":2222,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"1987:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1994:6:19","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"1987:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2001:6:19","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"1987:20:19","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"expression":{"id":2225,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2009:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2016:6:19","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"2009:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2023:6:19","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"2009:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2221,"name":"isPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"1980:6:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (uint32,bytes32) view returns (bool)"}},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1980:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2231,"nodeType":"IfStatement","src":"1975:65:19","trueBody":{"id":2230,"nodeType":"Continue","src":"2032:8:19"}},{"expression":{"arguments":[{"expression":{"id":2238,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2665:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2672:6:19","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"2665:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"expression":{"id":2240,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2696:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2703:4:19","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":2477,"src":"2696:11:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2242,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2725:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2732:7:19","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":2483,"src":"2725:14:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":2244,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2757:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2764:8:19","memberName":"executor","nodeType":"MemberAccess","referencedDeclaration":2481,"src":"2757:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2246,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2790:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2797:9:19","memberName":"extraData","nodeType":"MemberAccess","referencedDeclaration":2485,"src":"2790:16:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2232,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2602:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:17:19","memberName":"lzReceiveSimulate","nodeType":"MemberAccess","referencedDeclaration":2297,"src":"2602:22:19","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_Origin_$40_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct Origin memory,bytes32,bytes memory,address,bytes memory) payable external"}},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":2235,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2633:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2640:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2479,"src":"2633:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2602:45:19","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_Origin_$40_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (struct Origin memory,bytes32,bytes memory,address,bytes memory) payable external"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2602:218:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"2602:218:19"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1814:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2208,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"1818:8:19","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket calldata[] calldata"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1827:6:19","memberName":"length","nodeType":"MemberAccess","src":"1818:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1814:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"initializationExpression":{"assignments":[2204],"declarations":[{"constant":false,"id":2204,"mutability":"mutable","name":"i","nameLocation":"1807:1:19","nodeType":"VariableDeclaration","scope":2251,"src":"1799:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1799:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2206,"initialValue":{"hexValue":"30","id":2205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1811:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1799:13:19"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1835:3:19","subExpression":{"id":2211,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1835:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"1835:3:19"},"nodeType":"ForStatement","src":"1794:1037:19"},{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":2254,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2988:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2992:6:19","memberName":"sender","nodeType":"MemberAccess","src":"2988:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2253,"name":"IPreCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"2978:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPreCrime_$2461_$","typeString":"type(contract IPreCrime)"}},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2978:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPreCrime_$2461","typeString":"contract IPreCrime"}},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3000:21:19","memberName":"buildSimulationResult","nodeType":"MemberAccess","referencedDeclaration":2441,"src":"2978:43:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes_memory_ptr_$","typeString":"function () view external returns (bytes memory)"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2978:45:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2252,"name":"SimulationResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"2961:16:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2961:63:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2260,"nodeType":"RevertStatement","src":"2954:70:19"}]},"documentation":{"id":2196,"nodeType":"StructuredDocumentation","src":"1245:448:19","text":" @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\n @param _packets An array of InboundPacket objects representing received packets to be delivered.\n @dev WARNING: MUST revert at the end with the simulation results.\n @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\n WITHOUT actually executing them."},"functionSelector":"bd815db0","id":2262,"implemented":true,"kind":"function","modifiers":[],"name":"lzReceiveAndRevert","nameLocation":"1707:18:19","nodeType":"FunctionDefinition","parameters":{"id":2201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2200,"mutability":"mutable","name":"_packets","nameLocation":"1751:8:19","nodeType":"VariableDeclaration","scope":2262,"src":"1726:33:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket[]"},"typeName":{"baseType":{"id":2198,"nodeType":"UserDefinedTypeName","pathNode":{"id":2197,"name":"InboundPacket","nameLocations":["1726:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1726:13:19"},"referencedDeclaration":2486,"src":"1726:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2199,"nodeType":"ArrayTypeName","src":"1726:15:19","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}},"visibility":"internal"}],"src":"1725:35:19"},"returnParameters":{"id":2202,"nodeType":"ParameterList","parameters":[],"src":"1784:0:19"},"scope":2323,"src":"1698:1333:19","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":2296,"nodeType":"Block","src":"3888:200:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2277,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3958:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3962:6:19","memberName":"sender","nodeType":"MemberAccess","src":"3958:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2281,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3980:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}],"id":2280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3972:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2279,"name":"address","nodeType":"ElementaryTypeName","src":"3972:7:19","typeDescriptions":{}}},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3958:27:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2287,"nodeType":"IfStatement","src":"3954:50:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2284,"name":"OnlySelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"3994:8:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3994:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2286,"nodeType":"RevertStatement","src":"3987:17:19"}},{"expression":{"arguments":[{"id":2289,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"4033:7:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"id":2290,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4042:5:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2291,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2270,"src":"4049:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2292,"name":"_executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"4059:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2293,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2274,"src":"4070:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2288,"name":"_lzReceiveSimulate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"4014:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Origin_$40_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct Origin calldata,bytes32,bytes calldata,address,bytes calldata)"}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4014:67:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2295,"nodeType":"ExpressionStatement","src":"4014:67:19"}]},"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"3037:637:19","text":" @dev Is effectively an internal function because msg.sender must be address(this).\n Allows resetting the call stack for 'internal' calls.\n @param _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @param _guid The unique identifier of the packet.\n @param _message The message payload of the packet.\n @param _executor The executor address for the packet.\n @param _extraData Additional data for the packet."},"functionSelector":"d045a0dc","id":2297,"implemented":true,"kind":"function","modifiers":[],"name":"lzReceiveSimulate","nameLocation":"3688:17:19","nodeType":"FunctionDefinition","parameters":{"id":2275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2266,"mutability":"mutable","name":"_origin","nameLocation":"3731:7:19","nodeType":"VariableDeclaration","scope":2297,"src":"3715:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":2265,"nodeType":"UserDefinedTypeName","pathNode":{"id":2264,"name":"Origin","nameLocations":["3715:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"3715:6:19"},"referencedDeclaration":40,"src":"3715:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":2268,"mutability":"mutable","name":"_guid","nameLocation":"3756:5:19","nodeType":"VariableDeclaration","scope":2297,"src":"3748:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3748:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2270,"mutability":"mutable","name":"_message","nameLocation":"3786:8:19","nodeType":"VariableDeclaration","scope":2297,"src":"3771:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2269,"name":"bytes","nodeType":"ElementaryTypeName","src":"3771:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"_executor","nameLocation":"3812:9:19","nodeType":"VariableDeclaration","scope":2297,"src":"3804:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"3804:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2274,"mutability":"mutable","name":"_extraData","nameLocation":"3846:10:19","nodeType":"VariableDeclaration","scope":2297,"src":"3831:25:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2273,"name":"bytes","nodeType":"ElementaryTypeName","src":"3831:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3705:157:19"},"returnParameters":{"id":2276,"nodeType":"ParameterList","parameters":[],"src":"3888:0:19"},"scope":2323,"src":"3679:409:19","stateMutability":"payable","virtual":true,"visibility":"external"},{"documentation":{"id":2298,"nodeType":"StructuredDocumentation","src":"4094:712:19","text":" @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n @param _origin The origin information.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address from the src chain.\n  - nonce: The nonce of the LayerZero message.\n @param _guid The GUID of the LayerZero message.\n @param _message The LayerZero message.\n @param _executor The address of the off-chain executor.\n @param _extraData Arbitrary data passed by the msg executor.\n @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver."},"id":2312,"implemented":false,"kind":"function","modifiers":[],"name":"_lzReceiveSimulate","nameLocation":"4820:18:19","nodeType":"FunctionDefinition","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2301,"mutability":"mutable","name":"_origin","nameLocation":"4864:7:19","nodeType":"VariableDeclaration","scope":2312,"src":"4848:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":2300,"nodeType":"UserDefinedTypeName","pathNode":{"id":2299,"name":"Origin","nameLocations":["4848:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4848:6:19"},"referencedDeclaration":40,"src":"4848:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":2303,"mutability":"mutable","name":"_guid","nameLocation":"4889:5:19","nodeType":"VariableDeclaration","scope":2312,"src":"4881:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4881:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2305,"mutability":"mutable","name":"_message","nameLocation":"4919:8:19","nodeType":"VariableDeclaration","scope":2312,"src":"4904:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2304,"name":"bytes","nodeType":"ElementaryTypeName","src":"4904:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2307,"mutability":"mutable","name":"_executor","nameLocation":"4945:9:19","nodeType":"VariableDeclaration","scope":2312,"src":"4937:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2306,"name":"address","nodeType":"ElementaryTypeName","src":"4937:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"_extraData","nameLocation":"4979:10:19","nodeType":"VariableDeclaration","scope":2312,"src":"4964:25:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2308,"name":"bytes","nodeType":"ElementaryTypeName","src":"4964:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4838:157:19"},"returnParameters":{"id":2311,"nodeType":"ParameterList","parameters":[],"src":"5012:0:19"},"scope":2323,"src":"4811:202:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2376],"documentation":{"id":2313,"nodeType":"StructuredDocumentation","src":"5019:249:19","text":" @dev checks if the specified peer is considered 'trusted' by the OApp.\n @param _eid The endpoint Id to check.\n @param _peer The peer to check.\n @return Whether the peer passed is considered 'trusted' by the OApp."},"functionSelector":"5a0dfe4d","id":2322,"implemented":false,"kind":"function","modifiers":[],"name":"isPeer","nameLocation":"5282:6:19","nodeType":"FunctionDefinition","parameters":{"id":2318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2315,"mutability":"mutable","name":"_eid","nameLocation":"5296:4:19","nodeType":"VariableDeclaration","scope":2322,"src":"5289:11:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2314,"name":"uint32","nodeType":"ElementaryTypeName","src":"5289:6:19","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2317,"mutability":"mutable","name":"_peer","nameLocation":"5310:5:19","nodeType":"VariableDeclaration","scope":2322,"src":"5302:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2316,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5302:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5288:28:19"},"returnParameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2322,"src":"5346:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2319,"name":"bool","nodeType":"ElementaryTypeName","src":"5346:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5345:6:19"},"scope":2323,"src":"5273:79:19","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2324,"src":"427:4927:19","usedErrors":[2333,2335,3846,3851],"usedEvents":[2340,3857]}],"src":"33:5322:19"},"id":19},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol","exportedSymbols":{"IOAppPreCrimeSimulator":[2377],"InboundPacket":[2486],"Origin":[40]},"id":2378,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2325,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:20"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol","file":"../libs/Packet.sol","id":2328,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2378,"sourceUnit":2612,"src":"186:59:20","symbolAliases":[{"foreign":{"id":2326,"name":"InboundPacket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"195:13:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2327,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"210:6:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppPreCrimeSimulator","contractDependencies":[],"contractKind":"interface","documentation":{"id":2329,"nodeType":"StructuredDocumentation","src":"247:122:20","text":" @title IOAppPreCrimeSimulator Interface\n @dev Interface for the preCrime simulation functionality in an OApp."},"fullyImplemented":false,"id":2377,"linearizedBaseContracts":[2377],"name":"IOAppPreCrimeSimulator","nameLocation":"380:22:20","nodeType":"ContractDefinition","nodes":[{"errorSelector":"8351eea7","id":2333,"name":"SimulationResult","nameLocation":"477:16:20","nodeType":"ErrorDefinition","parameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"result","nameLocation":"500:6:20","nodeType":"VariableDeclaration","scope":2333,"src":"494:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2330,"name":"bytes","nodeType":"ElementaryTypeName","src":"494:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"493:14:20"},"src":"471:37:20"},{"errorSelector":"14d4a4e8","id":2335,"name":"OnlySelf","nameLocation":"519:8:20","nodeType":"ErrorDefinition","parameters":{"id":2334,"nodeType":"ParameterList","parameters":[],"src":"527:2:20"},"src":"513:17:20"},{"anonymous":false,"documentation":{"id":2336,"nodeType":"StructuredDocumentation","src":"536:142:20","text":" @dev Emitted when the preCrime contract address is set.\n @param preCrimeAddress The address of the preCrime contract."},"eventSelector":"d48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760","id":2340,"name":"PreCrimeSet","nameLocation":"689:11:20","nodeType":"EventDefinition","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2338,"indexed":false,"mutability":"mutable","name":"preCrimeAddress","nameLocation":"709:15:20","nodeType":"VariableDeclaration","scope":2340,"src":"701:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2337,"name":"address","nodeType":"ElementaryTypeName","src":"701:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"700:25:20"},"src":"683:43:20"},{"documentation":{"id":2341,"nodeType":"StructuredDocumentation","src":"732:139:20","text":" @dev Retrieves the address of the preCrime contract implementation.\n @return The address of the preCrime contract."},"functionSelector":"b731ea0a","id":2346,"implemented":false,"kind":"function","modifiers":[],"name":"preCrime","nameLocation":"885:8:20","nodeType":"FunctionDefinition","parameters":{"id":2342,"nodeType":"ParameterList","parameters":[],"src":"893:2:20"},"returnParameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2346,"src":"919:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2343,"name":"address","nodeType":"ElementaryTypeName","src":"919:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"918:9:20"},"scope":2377,"src":"876:52:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2347,"nodeType":"StructuredDocumentation","src":"934:116:20","text":" @dev Retrieves the address of the OApp contract.\n @return The address of the OApp contract."},"functionSelector":"52ae2879","id":2352,"implemented":false,"kind":"function","modifiers":[],"name":"oApp","nameLocation":"1064:4:20","nodeType":"FunctionDefinition","parameters":{"id":2348,"nodeType":"ParameterList","parameters":[],"src":"1068:2:20"},"returnParameters":{"id":2351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2350,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2352,"src":"1094:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2349,"name":"address","nodeType":"ElementaryTypeName","src":"1094:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1093:9:20"},"scope":2377,"src":"1055:48:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2353,"nodeType":"StructuredDocumentation","src":"1109:121:20","text":" @dev Sets the preCrime contract address.\n @param _preCrime The address of the preCrime contract."},"functionSelector":"d4243885","id":2358,"implemented":false,"kind":"function","modifiers":[],"name":"setPreCrime","nameLocation":"1244:11:20","nodeType":"FunctionDefinition","parameters":{"id":2356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2355,"mutability":"mutable","name":"_preCrime","nameLocation":"1264:9:20","nodeType":"VariableDeclaration","scope":2358,"src":"1256:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2354,"name":"address","nodeType":"ElementaryTypeName","src":"1256:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1255:19:20"},"returnParameters":{"id":2357,"nodeType":"ParameterList","parameters":[],"src":"1283:0:20"},"scope":2377,"src":"1235:49:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2359,"nodeType":"StructuredDocumentation","src":"1290:209:20","text":" @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\n @param _packets An array of LayerZero InboundPacket objects representing received packets."},"functionSelector":"bd815db0","id":2366,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceiveAndRevert","nameLocation":"1513:18:20","nodeType":"FunctionDefinition","parameters":{"id":2364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"_packets","nameLocation":"1557:8:20","nodeType":"VariableDeclaration","scope":2366,"src":"1532:33:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket[]"},"typeName":{"baseType":{"id":2361,"nodeType":"UserDefinedTypeName","pathNode":{"id":2360,"name":"InboundPacket","nameLocations":["1532:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1532:13:20"},"referencedDeclaration":2486,"src":"1532:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2362,"nodeType":"ArrayTypeName","src":"1532:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}},"visibility":"internal"}],"src":"1531:35:20"},"returnParameters":{"id":2365,"nodeType":"ParameterList","parameters":[],"src":"1583:0:20"},"scope":2377,"src":"1504:80:20","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2367,"nodeType":"StructuredDocumentation","src":"1590:249:20","text":" @dev checks if the specified peer is considered 'trusted' by the OApp.\n @param _eid The endpoint Id to check.\n @param _peer The peer to check.\n @return Whether the peer passed is considered 'trusted' by the OApp."},"functionSelector":"5a0dfe4d","id":2376,"implemented":false,"kind":"function","modifiers":[],"name":"isPeer","nameLocation":"1853:6:20","nodeType":"FunctionDefinition","parameters":{"id":2372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2369,"mutability":"mutable","name":"_eid","nameLocation":"1867:4:20","nodeType":"VariableDeclaration","scope":2376,"src":"1860:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2368,"name":"uint32","nodeType":"ElementaryTypeName","src":"1860:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2371,"mutability":"mutable","name":"_peer","nameLocation":"1881:5:20","nodeType":"VariableDeclaration","scope":2376,"src":"1873:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2370,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1873:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1859:28:20"},"returnParameters":{"id":2375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2376,"src":"1911:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2373,"name":"bool","nodeType":"ElementaryTypeName","src":"1911:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1910:6:20"},"scope":2377,"src":"1844:73:20","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2378,"src":"370:1549:20","usedErrors":[2333,2335],"usedEvents":[2340]}],"src":"33:1887:20"},"id":20},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol","exportedSymbols":{"IPreCrime":[2461],"PreCrimePeer":[2386]},"id":2462,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2379,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:21"},{"canonicalName":"PreCrimePeer","id":2386,"members":[{"constant":false,"id":2381,"mutability":"mutable","name":"eid","nameLocation":"91:3:21","nodeType":"VariableDeclaration","scope":2386,"src":"84:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2380,"name":"uint32","nodeType":"ElementaryTypeName","src":"84:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2383,"mutability":"mutable","name":"preCrime","nameLocation":"108:8:21","nodeType":"VariableDeclaration","scope":2386,"src":"100:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"100:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2385,"mutability":"mutable","name":"oApp","nameLocation":"130:4:21","nodeType":"VariableDeclaration","scope":2386,"src":"122:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2384,"name":"bytes32","nodeType":"ElementaryTypeName","src":"122:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"PreCrimePeer","nameLocation":"65:12:21","nodeType":"StructDefinition","scope":2462,"src":"58:79:21","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IPreCrime","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2461,"linearizedBaseContracts":[2461],"name":"IPreCrime","nameLocation":"170:9:21","nodeType":"ContractDefinition","nodes":[{"errorSelector":"9cbfe066","id":2388,"name":"OnlyOffChain","nameLocation":"192:12:21","nodeType":"ErrorDefinition","parameters":{"id":2387,"nodeType":"ParameterList","parameters":[],"src":"204:2:21"},"src":"186:21:21"},{"errorSelector":"9db08605","id":2394,"name":"PacketOversize","nameLocation":"241:14:21","nodeType":"ErrorDefinition","parameters":{"id":2393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2390,"mutability":"mutable","name":"max","nameLocation":"264:3:21","nodeType":"VariableDeclaration","scope":2394,"src":"256:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"256:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2392,"mutability":"mutable","name":"actual","nameLocation":"277:6:21","nodeType":"VariableDeclaration","scope":2394,"src":"269:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2391,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"255:29:21"},"src":"235:50:21"},{"errorSelector":"50823c85","id":2396,"name":"PacketUnsorted","nameLocation":"296:14:21","nodeType":"ErrorDefinition","parameters":{"id":2395,"nodeType":"ParameterList","parameters":[],"src":"310:2:21"},"src":"290:23:21"},{"errorSelector":"614cbd8a","id":2400,"name":"SimulationFailed","nameLocation":"324:16:21","nodeType":"ErrorDefinition","parameters":{"id":2399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2398,"mutability":"mutable","name":"reason","nameLocation":"347:6:21","nodeType":"VariableDeclaration","scope":2400,"src":"341:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2397,"name":"bytes","nodeType":"ElementaryTypeName","src":"341:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"340:14:21"},"src":"318:37:21"},{"errorSelector":"01992f2a","id":2404,"name":"SimulationResultNotFound","nameLocation":"389:24:21","nodeType":"ErrorDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"eid","nameLocation":"421:3:21","nodeType":"VariableDeclaration","scope":2404,"src":"414:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2401,"name":"uint32","nodeType":"ElementaryTypeName","src":"414:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"413:12:21"},"src":"383:43:21"},{"errorSelector":"572e17ee","id":2410,"name":"InvalidSimulationResult","nameLocation":"437:23:21","nodeType":"ErrorDefinition","parameters":{"id":2409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2406,"mutability":"mutable","name":"eid","nameLocation":"468:3:21","nodeType":"VariableDeclaration","scope":2410,"src":"461:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2405,"name":"uint32","nodeType":"ElementaryTypeName","src":"461:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2408,"mutability":"mutable","name":"reason","nameLocation":"479:6:21","nodeType":"VariableDeclaration","scope":2410,"src":"473:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2407,"name":"bytes","nodeType":"ElementaryTypeName","src":"473:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"460:26:21"},"src":"431:56:21"},{"errorSelector":"19159757","id":2414,"name":"CrimeFound","nameLocation":"498:10:21","nodeType":"ErrorDefinition","parameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"crime","nameLocation":"515:5:21","nodeType":"VariableDeclaration","scope":2414,"src":"509:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2411,"name":"bytes","nodeType":"ElementaryTypeName","src":"509:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"508:13:21"},"src":"492:30:21"},{"functionSelector":"f0cd3836","id":2425,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"537:9:21","nodeType":"FunctionDefinition","parameters":{"id":2421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2417,"mutability":"mutable","name":"_packets","nameLocation":"564:8:21","nodeType":"VariableDeclaration","scope":2425,"src":"547:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2415,"name":"bytes","nodeType":"ElementaryTypeName","src":"547:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2416,"nodeType":"ArrayTypeName","src":"547:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2420,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"593:16:21","nodeType":"VariableDeclaration","scope":2425,"src":"574:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2418,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2419,"nodeType":"ArrayTypeName","src":"574:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"546:64:21"},"returnParameters":{"id":2424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2425,"src":"629:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2422,"name":"bytes","nodeType":"ElementaryTypeName","src":"629:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"628:14:21"},"scope":2461,"src":"528:115:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"50dfa937","id":2436,"implemented":false,"kind":"function","modifiers":[],"name":"simulate","nameLocation":"658:8:21","nodeType":"FunctionDefinition","parameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2428,"mutability":"mutable","name":"_packets","nameLocation":"693:8:21","nodeType":"VariableDeclaration","scope":2436,"src":"676:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2426,"name":"bytes","nodeType":"ElementaryTypeName","src":"676:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2427,"nodeType":"ArrayTypeName","src":"676:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"730:16:21","nodeType":"VariableDeclaration","scope":2436,"src":"711:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2429,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2430,"nodeType":"ArrayTypeName","src":"711:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"666:86:21"},"returnParameters":{"id":2435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2436,"src":"779:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2433,"name":"bytes","nodeType":"ElementaryTypeName","src":"779:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"778:14:21"},"scope":2461,"src":"649:144:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"8e9e7099","id":2441,"implemented":false,"kind":"function","modifiers":[],"name":"buildSimulationResult","nameLocation":"808:21:21","nodeType":"FunctionDefinition","parameters":{"id":2437,"nodeType":"ParameterList","parameters":[],"src":"829:2:21"},"returnParameters":{"id":2440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2441,"src":"855:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2438,"name":"bytes","nodeType":"ElementaryTypeName","src":"855:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"854:14:21"},"scope":2461,"src":"799:70:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"10f9cf3a","id":2453,"implemented":false,"kind":"function","modifiers":[],"name":"preCrime","nameLocation":"884:8:21","nodeType":"FunctionDefinition","parameters":{"id":2451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2444,"mutability":"mutable","name":"_packets","nameLocation":"919:8:21","nodeType":"VariableDeclaration","scope":2453,"src":"902:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2442,"name":"bytes","nodeType":"ElementaryTypeName","src":"902:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2443,"nodeType":"ArrayTypeName","src":"902:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2447,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"956:16:21","nodeType":"VariableDeclaration","scope":2453,"src":"937:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2445,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2446,"nodeType":"ArrayTypeName","src":"937:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2450,"mutability":"mutable","name":"_simulations","nameLocation":"999:12:21","nodeType":"VariableDeclaration","scope":2453,"src":"982:29:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2448,"name":"bytes","nodeType":"ElementaryTypeName","src":"982:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2449,"nodeType":"ArrayTypeName","src":"982:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"892:125:21"},"returnParameters":{"id":2452,"nodeType":"ParameterList","parameters":[],"src":"1026:0:21"},"scope":2461,"src":"875:152:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":2460,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"1042:7:21","nodeType":"FunctionDefinition","parameters":{"id":2454,"nodeType":"ParameterList","parameters":[],"src":"1049:2:21"},"returnParameters":{"id":2459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2456,"mutability":"mutable","name":"major","nameLocation":"1082:5:21","nodeType":"VariableDeclaration","scope":2460,"src":"1075:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2455,"name":"uint64","nodeType":"ElementaryTypeName","src":"1075:6:21","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":2458,"mutability":"mutable","name":"minor","nameLocation":"1095:5:21","nodeType":"VariableDeclaration","scope":2460,"src":"1089:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2457,"name":"uint8","nodeType":"ElementaryTypeName","src":"1089:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1074:27:21"},"scope":2461,"src":"1033:69:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2462,"src":"160:944:21","usedErrors":[2388,2394,2396,2400,2404,2410,2414],"usedEvents":[]}],"src":"33:1072:21"},"id":21},"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol","exportedSymbols":{"InboundPacket":[2486],"Origin":[40],"PacketDecoder":[2611],"PacketV1Codec":[1325]},"id":2612,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2463,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:22"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":2465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2612,"sourceUnit":203,"src":"59:105:22","symbolAliases":[{"foreign":{"id":2464,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"68:6:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol","id":2467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2612,"sourceUnit":1326,"src":"165:110:22","symbolAliases":[{"foreign":{"id":2466,"name":"PacketV1Codec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1325,"src":"174:13:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"InboundPacket","documentation":{"id":2468,"nodeType":"StructuredDocumentation","src":"277:106:22","text":" @title InboundPacket\n @dev Structure representing an inbound packet received by the contract."},"id":2486,"members":[{"constant":false,"id":2471,"mutability":"mutable","name":"origin","nameLocation":"418:6:22","nodeType":"VariableDeclaration","scope":2486,"src":"411:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"},"typeName":{"id":2470,"nodeType":"UserDefinedTypeName","pathNode":{"id":2469,"name":"Origin","nameLocations":["411:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"411:6:22"},"referencedDeclaration":40,"src":"411:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"dstEid","nameLocation":"474:6:22","nodeType":"VariableDeclaration","scope":2486,"src":"467:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2472,"name":"uint32","nodeType":"ElementaryTypeName","src":"467:6:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2475,"mutability":"mutable","name":"receiver","nameLocation":"535:8:22","nodeType":"VariableDeclaration","scope":2486,"src":"527:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2474,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2477,"mutability":"mutable","name":"guid","nameLocation":"593:4:22","nodeType":"VariableDeclaration","scope":2486,"src":"585:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"585:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2479,"mutability":"mutable","name":"value","nameLocation":"647:5:22","nodeType":"VariableDeclaration","scope":2486,"src":"639:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2478,"name":"uint256","nodeType":"ElementaryTypeName","src":"639:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"executor","nameLocation":"694:8:22","nodeType":"VariableDeclaration","scope":2486,"src":"686:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2480,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"message","nameLocation":"750:7:22","nodeType":"VariableDeclaration","scope":2486,"src":"744:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2482,"name":"bytes","nodeType":"ElementaryTypeName","src":"744:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"extraData","nameLocation":"803:9:22","nodeType":"VariableDeclaration","scope":2486,"src":"797:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2484,"name":"bytes","nodeType":"ElementaryTypeName","src":"797:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"InboundPacket","nameLocation":"391:13:22","nodeType":"StructDefinition","scope":2612,"src":"384:476:22","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"PacketDecoder","contractDependencies":[],"contractKind":"library","documentation":{"id":2487,"nodeType":"StructuredDocumentation","src":"862:79:22","text":" @title PacketDecoder\n @dev Library for decoding LayerZero packets."},"fullyImplemented":true,"id":2611,"linearizedBaseContracts":[2611],"name":"PacketDecoder","nameLocation":"950:13:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2490,"libraryName":{"id":2488,"name":"PacketV1Codec","nameLocations":["976:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":1325,"src":"976:13:22"},"nodeType":"UsingForDirective","src":"970:30:22","typeName":{"id":2489,"name":"bytes","nodeType":"ElementaryTypeName","src":"994:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"body":{"id":2547,"nodeType":"Block","src":"1307:265:22","statements":[{"expression":{"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2499,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1317:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1324:6:22","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"1317:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2503,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1340:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1348:6:22","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":1185,"src":"1340:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint32)"}},"id":2505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1340:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2506,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1358:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1366:6:22","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1201,"src":"1358:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1358:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2509,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1376:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1384:5:22","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1166,"src":"1376:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint64_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint64)"}},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1376:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2502,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1333:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Origin_$40_storage_ptr_$","typeString":"type(struct Origin storage pointer)"}},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1333:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin memory"}},"src":"1317:75:22","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin memory"}},"id":2514,"nodeType":"ExpressionStatement","src":"1317:75:22"},{"expression":{"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2515,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1402:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1409:6:22","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":2473,"src":"1402:13:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2518,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1418:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1426:6:22","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":1234,"src":"1418:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint32)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1418:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1402:32:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2522,"nodeType":"ExpressionStatement","src":"1402:32:22"},{"expression":{"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2523,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1444:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2525,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1451:8:22","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":2475,"src":"1444:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2526,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1462:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1470:11:22","memberName":"receiverB20","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"1462:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1462:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1444:39:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2530,"nodeType":"ExpressionStatement","src":"1444:39:22"},{"expression":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2531,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1493:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1500:4:22","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":2477,"src":"1493:11:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2534,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1507:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1515:4:22","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":1280,"src":"1507:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1493:28:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2538,"nodeType":"ExpressionStatement","src":"1493:28:22"},{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2539,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1531:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1538:7:22","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":2483,"src":"1531:14:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2542,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1548:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1556:7:22","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":1295,"src":"1548:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:17:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"1531:34:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2546,"nodeType":"ExpressionStatement","src":"1531:34:22"}]},"documentation":{"id":2491,"nodeType":"StructuredDocumentation","src":"1006:204:22","text":" @dev Decode an inbound packet from the given packet data.\n @param _packet The packet data to decode.\n @return packet An InboundPacket struct representing the decoded packet."},"id":2548,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nameLocation":"1224:6:22","nodeType":"FunctionDefinition","parameters":{"id":2494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2493,"mutability":"mutable","name":"_packet","nameLocation":"1246:7:22","nodeType":"VariableDeclaration","scope":2548,"src":"1231:22:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2492,"name":"bytes","nodeType":"ElementaryTypeName","src":"1231:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1230:24:22"},"returnParameters":{"id":2498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"packet","nameLocation":"1299:6:22","nodeType":"VariableDeclaration","scope":2548,"src":"1278:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket"},"typeName":{"id":2496,"nodeType":"UserDefinedTypeName","pathNode":{"id":2495,"name":"InboundPacket","nameLocations":["1278:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1278:13:22"},"referencedDeclaration":2486,"src":"1278:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"visibility":"internal"}],"src":"1277:29:22"},"scope":2611,"src":"1215:357:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2609,"nodeType":"Block","src":"2086:381:22","statements":[{"expression":{"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2562,"name":"packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2096:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2567,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"2126:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2135:6:22","memberName":"length","nodeType":"MemberAccess","src":"2126:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2106:19:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct InboundPacket memory[] memory)"},"typeName":{"baseType":{"id":2564,"nodeType":"UserDefinedTypeName","pathNode":{"id":2563,"name":"InboundPacket","nameLocations":["2110:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"2110:13:22"},"referencedDeclaration":2486,"src":"2110:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2565,"nodeType":"ArrayTypeName","src":"2110:15:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2106:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"src":"2096:46:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"id":2571,"nodeType":"ExpressionStatement","src":"2096:46:22"},{"body":{"id":2607,"nodeType":"Block","src":"2198:263:22","statements":[{"assignments":[2584],"declarations":[{"constant":false,"id":2584,"mutability":"mutable","name":"packet","nameLocation":"2227:6:22","nodeType":"VariableDeclaration","scope":2607,"src":"2212:21:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2583,"name":"bytes","nodeType":"ElementaryTypeName","src":"2212:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2588,"initialValue":{"baseExpression":{"id":2585,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"2236:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":2587,"indexExpression":{"id":2586,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2245:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2236:11:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"2212:35:22"},{"expression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2589,"name":"packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2261:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"id":2591,"indexExpression":{"id":2590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2269:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2261:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2594,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2584,"src":"2295:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2592,"name":"PacketDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2611,"src":"2274:13:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PacketDecoder_$2611_$","typeString":"type(library PacketDecoder)"}},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2288:6:22","memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":2548,"src":"2274:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_InboundPacket_$2486_memory_ptr_$","typeString":"function (bytes calldata) pure returns (struct InboundPacket memory)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"src":"2261:41:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2597,"nodeType":"ExpressionStatement","src":"2261:41:22"},{"expression":{"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2598,"name":"packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2412:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"id":2600,"indexExpression":{"id":2599,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2420:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2412:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2423:5:22","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2479,"src":"2412:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2602,"name":"_packetMsgValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"2431:16:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2604,"indexExpression":{"id":2603,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2448:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2431:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:38:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2606,"nodeType":"ExpressionStatement","src":"2412:38:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2576,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2172:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2577,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"2176:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2185:6:22","memberName":"length","nodeType":"MemberAccess","src":"2176:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2172:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2608,"initializationExpression":{"assignments":[2573],"declarations":[{"constant":false,"id":2573,"mutability":"mutable","name":"i","nameLocation":"2165:1:22","nodeType":"VariableDeclaration","scope":2608,"src":"2157:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2575,"initialValue":{"hexValue":"30","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2169:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2157:13:22"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2193:3:22","subExpression":{"id":2580,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2193:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2582,"nodeType":"ExpressionStatement","src":"2193:3:22"},"nodeType":"ForStatement","src":"2152:309:22"}]},"documentation":{"id":2549,"nodeType":"StructuredDocumentation","src":"1578:348:22","text":" @dev Decode multiple inbound packets from the given packet data and associated message values.\n @param _packets An array of packet data to decode.\n @param _packetMsgValues An array of associated message values for each packet.\n @return packets An array of InboundPacket structs representing the decoded packets."},"id":2610,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nameLocation":"1940:6:22","nodeType":"FunctionDefinition","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2552,"mutability":"mutable","name":"_packets","nameLocation":"1973:8:22","nodeType":"VariableDeclaration","scope":2610,"src":"1956:25:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2550,"name":"bytes","nodeType":"ElementaryTypeName","src":"1956:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2551,"nodeType":"ArrayTypeName","src":"1956:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2555,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"2008:16:22","nodeType":"VariableDeclaration","scope":2610,"src":"1991:33:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1991:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2554,"nodeType":"ArrayTypeName","src":"1991:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1946:84:22"},"returnParameters":{"id":2561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2560,"mutability":"mutable","name":"packets","nameLocation":"2077:7:22","nodeType":"VariableDeclaration","scope":2610,"src":"2054:30:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket[]"},"typeName":{"baseType":{"id":2558,"nodeType":"UserDefinedTypeName","pathNode":{"id":2557,"name":"InboundPacket","nameLocations":["2054:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"2054:13:22"},"referencedDeclaration":2486,"src":"2054:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2559,"nodeType":"ArrayTypeName","src":"2054:15:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}},"visibility":"internal"}],"src":"2053:32:22"},"scope":2611,"src":"1931:536:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2612,"src":"942:1527:22","usedErrors":[],"usedEvents":[]}],"src":"33:2437:22"},"id":22},"@layerzerolabs/oft-evm/contracts/OFT.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFT.sol","exportedSymbols":{"ERC20":[4722],"IOFT":[3509],"OFT":[2736],"OFTCore":[3365]},"id":2737,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2613,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:23"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":2615,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2737,"sourceUnit":4723,"src":"59:70:23","symbolAliases":[{"foreign":{"id":2614,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"68:5:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFTCore.sol","file":"./OFTCore.sol","id":2618,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2737,"sourceUnit":3366,"src":"130:46:23","symbolAliases":[{"foreign":{"id":2616,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"139:4:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2617,"name":"OFTCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3365,"src":"145:7:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2620,"name":"OFTCore","nameLocations":["321:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":3365,"src":"321:7:23"},"id":2621,"nodeType":"InheritanceSpecifier","src":"321:7:23"},{"baseName":{"id":2622,"name":"ERC20","nameLocations":["330:5:23"],"nodeType":"IdentifierPath","referencedDeclaration":4722,"src":"330:5:23"},"id":2623,"nodeType":"InheritanceSpecifier","src":"330:5:23"}],"canonicalName":"OFT","contractDependencies":[],"contractKind":"contract","documentation":{"id":2619,"nodeType":"StructuredDocumentation","src":"178:117:23","text":" @title OFT Contract\n @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract."},"fullyImplemented":true,"id":2736,"linearizedBaseContracts":[2736,4722,4112,4826,4800,3365,2149,2323,1371,1653,1839,1501,3980,5320,1964,2377,1902,1985,238,3509],"name":"OFT","nameLocation":"314:3:23","nodeType":"ContractDefinition","nodes":[{"body":{"id":2645,"nodeType":"Block","src":"847:2:23","statements":[]},"documentation":{"id":2624,"nodeType":"StructuredDocumentation","src":"342:300:23","text":" @dev Constructor for the OFT contract.\n @param _name The name of the OFT.\n @param _symbol The symbol of the OFT.\n @param _lzEndpoint The LayerZero endpoint address.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint."},"id":2646,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2635,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"787:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2636,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"794:7:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2637,"kind":"baseConstructorSpecifier","modifierName":{"id":2634,"name":"ERC20","nameLocations":["781:5:23"],"nodeType":"IdentifierPath","referencedDeclaration":4722,"src":"781:5:23"},"nodeType":"ModifierInvocation","src":"781:21:23"},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2639,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4286,"src":"811:8:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"811:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2641,"name":"_lzEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"823:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2642,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"836:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2643,"kind":"baseConstructorSpecifier","modifierName":{"id":2638,"name":"OFTCore","nameLocations":["803:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":3365,"src":"803:7:23"},"nodeType":"ModifierInvocation","src":"803:43:23"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2626,"mutability":"mutable","name":"_name","nameLocation":"682:5:23","nodeType":"VariableDeclaration","scope":2646,"src":"668:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2625,"name":"string","nodeType":"ElementaryTypeName","src":"668:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2628,"mutability":"mutable","name":"_symbol","nameLocation":"711:7:23","nodeType":"VariableDeclaration","scope":2646,"src":"697:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2627,"name":"string","nodeType":"ElementaryTypeName","src":"697:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2630,"mutability":"mutable","name":"_lzEndpoint","nameLocation":"736:11:23","nodeType":"VariableDeclaration","scope":2646,"src":"728:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2629,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2632,"mutability":"mutable","name":"_delegate","nameLocation":"765:9:23","nodeType":"VariableDeclaration","scope":2646,"src":"757:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2631,"name":"address","nodeType":"ElementaryTypeName","src":"757:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"658:122:23"},"returnParameters":{"id":2644,"nodeType":"ParameterList","parameters":[],"src":"847:0:23"},"scope":2736,"src":"647:202:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3449],"body":{"id":2657,"nodeType":"Block","src":"1123:37:23","statements":[{"expression":{"arguments":[{"id":2654,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1148:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_OFT_$2736","typeString":"contract OFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OFT_$2736","typeString":"contract OFT"}],"id":2653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1140:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2652,"name":"address","nodeType":"ElementaryTypeName","src":"1140:7:23","typeDescriptions":{}}},"id":2655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2651,"id":2656,"nodeType":"Return","src":"1133:20:23"}]},"documentation":{"id":2647,"nodeType":"StructuredDocumentation","src":"855:216:23","text":" @dev Retrieves the address of the underlying ERC20 implementation.\n @return The address of the OFT token.\n @dev In the case of OFT, address(this) and erc20 are the same contract."},"functionSelector":"fc0c546a","id":2658,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"1085:5:23","nodeType":"FunctionDefinition","parameters":{"id":2648,"nodeType":"ParameterList","parameters":[],"src":"1090:2:23"},"returnParameters":{"id":2651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2658,"src":"1114:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2649,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:9:23"},"scope":2736,"src":"1076:84:23","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3455],"body":{"id":2666,"nodeType":"Block","src":"1525:29:23","statements":[{"expression":{"hexValue":"66616c7365","id":2664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1542:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2663,"id":2665,"nodeType":"Return","src":"1535:12:23"}]},"documentation":{"id":2659,"nodeType":"StructuredDocumentation","src":"1166:289:23","text":" @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n @return requiresApproval Needs approval of the underlying token implementation.\n @dev In the case of OFT where the contract IS the token, approval is NOT required."},"functionSelector":"9f68b964","id":2667,"implemented":true,"kind":"function","modifiers":[],"name":"approvalRequired","nameLocation":"1469:16:23","nodeType":"FunctionDefinition","parameters":{"id":2660,"nodeType":"ParameterList","parameters":[],"src":"1485:2:23"},"returnParameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2667,"src":"1519:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2661,"name":"bool","nodeType":"ElementaryTypeName","src":"1519:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1518:6:23"},"scope":2736,"src":"1460:94:23","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[3352],"body":{"id":2699,"nodeType":"Block","src":"2246:358:23","statements":[{"expression":{"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2684,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2680,"src":"2257:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2685,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"2271:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2686,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2256:32:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2688,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"2302:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2689,"name":"_minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"2313:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2690,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2676,"src":"2327:7:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":2687,"name":"_debitView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"2291:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint32) view returns (uint256,uint256)"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2291:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2256:79:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2693,"nodeType":"ExpressionStatement","src":"2256:79:23"},{"expression":{"arguments":[{"id":2695,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"2577:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2696,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2680,"src":"2584:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2694,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4595,"src":"2571:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2571:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2698,"nodeType":"ExpressionStatement","src":"2571:26:23"}]},"documentation":{"id":2668,"nodeType":"StructuredDocumentation","src":"1560:472:23","text":" @dev Burns tokens from the sender's specified balance.\n @param _from The address to debit the tokens from.\n @param _amountLD The amount of tokens to send in local decimals.\n @param _minAmountLD The minimum amount to send in local decimals.\n @param _dstEid The destination chain ID.\n @return amountSentLD The amount sent in local decimals.\n @return amountReceivedLD The amount received in local decimals on the remote."},"id":2700,"implemented":true,"kind":"function","modifiers":[],"name":"_debit","nameLocation":"2046:6:23","nodeType":"FunctionDefinition","overrides":{"id":2678,"nodeType":"OverrideSpecifier","overrides":[],"src":"2180:8:23"},"parameters":{"id":2677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"_from","nameLocation":"2070:5:23","nodeType":"VariableDeclaration","scope":2700,"src":"2062:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2669,"name":"address","nodeType":"ElementaryTypeName","src":"2062:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2672,"mutability":"mutable","name":"_amountLD","nameLocation":"2093:9:23","nodeType":"VariableDeclaration","scope":2700,"src":"2085:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2671,"name":"uint256","nodeType":"ElementaryTypeName","src":"2085:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2674,"mutability":"mutable","name":"_minAmountLD","nameLocation":"2120:12:23","nodeType":"VariableDeclaration","scope":2700,"src":"2112:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2673,"name":"uint256","nodeType":"ElementaryTypeName","src":"2112:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2676,"mutability":"mutable","name":"_dstEid","nameLocation":"2149:7:23","nodeType":"VariableDeclaration","scope":2700,"src":"2142:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2675,"name":"uint32","nodeType":"ElementaryTypeName","src":"2142:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2052:110:23"},"returnParameters":{"id":2683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2680,"mutability":"mutable","name":"amountSentLD","nameLocation":"2206:12:23","nodeType":"VariableDeclaration","scope":2700,"src":"2198:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2679,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2682,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2228:16:23","nodeType":"VariableDeclaration","scope":2700,"src":"2220:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2681,"name":"uint256","nodeType":"ElementaryTypeName","src":"2220:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2197:48:23"},"scope":2736,"src":"2037:567:23","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[3364],"body":{"id":2734,"nodeType":"Block","src":"3099:302:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2713,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3113:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"307830","id":2716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3128:3:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3120:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2714,"name":"address","nodeType":"ElementaryTypeName","src":"3120:7:23","typeDescriptions":{}}},"id":2717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3120:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3113:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2726,"nodeType":"IfStatement","src":"3109:46:23","trueBody":{"expression":{"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2719,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3134:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"307864656164","id":2722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3148:6:23","typeDescriptions":{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"},"value":"0xdead"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"}],"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3140:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2720,"name":"address","nodeType":"ElementaryTypeName","src":"3140:7:23","typeDescriptions":{}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3134:21:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2725,"nodeType":"ExpressionStatement","src":"3134:21:23"}},{"expression":{"arguments":[{"id":2728,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3257:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2729,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"3262:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2727,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4562,"src":"3251:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3251:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2731,"nodeType":"ExpressionStatement","src":"3251:21:23"},{"expression":{"id":2732,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"3385:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2712,"id":2733,"nodeType":"Return","src":"3378:16:23"}]},"documentation":{"id":2701,"nodeType":"StructuredDocumentation","src":"2610:324:23","text":" @dev Credits tokens to the specified address.\n @param _to The address to credit the tokens to.\n @param _amountLD The amount of tokens to credit in local decimals.\n @dev _srcEid The source chain ID.\n @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals."},"id":2735,"implemented":true,"kind":"function","modifiers":[],"name":"_credit","nameLocation":"2948:7:23","nodeType":"FunctionDefinition","overrides":{"id":2709,"nodeType":"OverrideSpecifier","overrides":[],"src":"3055:8:23"},"parameters":{"id":2708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2703,"mutability":"mutable","name":"_to","nameLocation":"2973:3:23","nodeType":"VariableDeclaration","scope":2735,"src":"2965:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2702,"name":"address","nodeType":"ElementaryTypeName","src":"2965:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2705,"mutability":"mutable","name":"_amountLD","nameLocation":"2994:9:23","nodeType":"VariableDeclaration","scope":2735,"src":"2986:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2704,"name":"uint256","nodeType":"ElementaryTypeName","src":"2986:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2735,"src":"3013:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2706,"name":"uint32","nodeType":"ElementaryTypeName","src":"3013:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2955:82:23"},"returnParameters":{"id":2712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2711,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"3081:16:23","nodeType":"VariableDeclaration","scope":2735,"src":"3073:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2710,"name":"uint256","nodeType":"ElementaryTypeName","src":"3073:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3072:26:23"},"scope":2736,"src":"2939:462:23","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2737,"src":"296:3107:23","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4082,4087,4092,4101,4106,4111,4838],"usedEvents":[1864,1943,2340,2790,3425,3435,3857,4734,4743]}],"src":"33:3371:23"},"id":23},"@layerzerolabs/oft-evm/contracts/OFTCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFTCore.sol","exportedSymbols":{"IERC20":[4800],"IOAppMsgInspector":[1922],"IOFT":[3509],"MessagingFee":[33],"MessagingReceipt":[28],"OApp":[1371],"OAppOptionsType3":[2149],"OAppPreCrimeSimulator":[2323],"OFTComposeMsgCodec":[3678],"OFTCore":[3365],"OFTFeeDetail":[3404],"OFTLimit":[3392],"OFTMsgCodec":[3832],"OFTReceipt":[3398],"Origin":[40],"SendParam":[3386]},"id":3366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2738,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:24"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":2740,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":4801,"src":"59:72:24","symbolAliases":[{"foreign":{"id":2739,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"68:6:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol","id":2743,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":1372,"src":"133:79:24","symbolAliases":[{"foreign":{"id":2741,"name":"OApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"142:4:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2742,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"148:6:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol","id":2745,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":2150,"src":"213:100:24","symbolAliases":[{"foreign":{"id":2744,"name":"OAppOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"222:16:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol","id":2747,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":1923,"src":"314:108:24","symbolAliases":[{"foreign":{"id":2746,"name":"IOAppMsgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"323:17:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol","file":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol","id":2749,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":2324,"src":"424:109:24","symbolAliases":[{"foreign":{"id":2748,"name":"OAppPreCrimeSimulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"433:21:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol","file":"./interfaces/IOFT.sol","id":2757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":3510,"src":"535:124:24","symbolAliases":[{"foreign":{"id":2750,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"544:4:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2751,"name":"SendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"550:9:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2752,"name":"OFTLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"561:8:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2753,"name":"OFTReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3398,"src":"571:10:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2754,"name":"OFTFeeDetail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"583:12:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2755,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"597:16:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2756,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"615:12:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol","file":"./libs/OFTMsgCodec.sol","id":2759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":3833,"src":"660:53:24","symbolAliases":[{"foreign":{"id":2758,"name":"OFTMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3832,"src":"669:11:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol","file":"./libs/OFTComposeMsgCodec.sol","id":2761,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":3679,"src":"714:67:24","symbolAliases":[{"foreign":{"id":2760,"name":"OFTComposeMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"723:18:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2763,"name":"IOFT","nameLocations":["894:4:24"],"nodeType":"IdentifierPath","referencedDeclaration":3509,"src":"894:4:24"},"id":2764,"nodeType":"InheritanceSpecifier","src":"894:4:24"},{"baseName":{"id":2765,"name":"OApp","nameLocations":["900:4:24"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"900:4:24"},"id":2766,"nodeType":"InheritanceSpecifier","src":"900:4:24"},{"baseName":{"id":2767,"name":"OAppPreCrimeSimulator","nameLocations":["906:21:24"],"nodeType":"IdentifierPath","referencedDeclaration":2323,"src":"906:21:24"},"id":2768,"nodeType":"InheritanceSpecifier","src":"906:21:24"},{"baseName":{"id":2769,"name":"OAppOptionsType3","nameLocations":["929:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":2149,"src":"929:16:24"},"id":2770,"nodeType":"InheritanceSpecifier","src":"929:16:24"}],"canonicalName":"OFTCore","contractDependencies":[],"contractKind":"contract","documentation":{"id":2762,"nodeType":"StructuredDocumentation","src":"783:81:24","text":" @title OFTCore\n @dev Abstract contract for the OftChain (OFT) token."},"fullyImplemented":false,"id":3365,"linearizedBaseContracts":[3365,2149,2323,1371,1653,1839,1501,3980,5320,1964,2377,1902,1985,238,3509],"name":"OFTCore","nameLocation":"883:7:24","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2773,"libraryName":{"id":2771,"name":"OFTMsgCodec","nameLocations":["958:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":3832,"src":"958:11:24"},"nodeType":"UsingForDirective","src":"952:28:24","typeName":{"id":2772,"name":"bytes","nodeType":"ElementaryTypeName","src":"974:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":2776,"libraryName":{"id":2774,"name":"OFTMsgCodec","nameLocations":["991:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":3832,"src":"991:11:24"},"nodeType":"UsingForDirective","src":"985:30:24","typeName":{"id":2775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1007:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":false,"functionSelector":"963efcaa","id":2778,"mutability":"immutable","name":"decimalConversionRate","nameLocation":"1886:21:24","nodeType":"VariableDeclaration","scope":3365,"src":"1861:46:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2777,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"1f5e1334","id":2781,"mutability":"constant","name":"SEND","nameLocation":"2190:4:24","nodeType":"VariableDeclaration","scope":3365,"src":"2167:31:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2779,"name":"uint16","nodeType":"ElementaryTypeName","src":"2167:6:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":2780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2197:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"constant":true,"functionSelector":"134d4f25","id":2784,"mutability":"constant","name":"SEND_AND_CALL","nameLocation":"2227:13:24","nodeType":"VariableDeclaration","scope":3365,"src":"2204:40:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2782,"name":"uint16","nodeType":"ElementaryTypeName","src":"2204:6:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":2783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2243:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"constant":false,"functionSelector":"111ecdad","id":2786,"mutability":"mutable","name":"msgInspector","nameLocation":"2345:12:24","nodeType":"VariableDeclaration","scope":3365,"src":"2330:27:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"eventSelector":"f0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197","id":2790,"name":"MsgInspectorSet","nameLocation":"2369:15:24","nodeType":"EventDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"indexed":false,"mutability":"mutable","name":"inspector","nameLocation":"2393:9:24","nodeType":"VariableDeclaration","scope":2790,"src":"2385:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2787,"name":"address","nodeType":"ElementaryTypeName","src":"2385:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2384:19:24"},"src":"2363:41:24"},{"body":{"id":2822,"nodeType":"Block","src":"2800:160:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2804,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"2814:14:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2805,"name":"sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2831:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":2806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2814:33:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2811,"nodeType":"IfStatement","src":"2810:68:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2808,"name":"InvalidLocalDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3407,"src":"2856:20:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2856:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2810,"nodeType":"RevertStatement","src":"2849:29:24"}},{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2812,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"2888:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2912:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2814,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"2919:14:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2815,"name":"sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2936:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2936:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2919:33:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2818,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2918:35:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2912:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2888:65:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"2888:65:24"}]},"documentation":{"id":2791,"nodeType":"StructuredDocumentation","src":"2410:286:24","text":" @dev Constructor.\n @param _localDecimals The decimals of the token on the local chain (this chain).\n @param _endpoint The address of the LayerZero endpoint.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint."},"id":2823,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2800,"name":"_endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2795,"src":"2778:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2801,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"2789:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2802,"kind":"baseConstructorSpecifier","modifierName":{"id":2799,"name":"OApp","nameLocations":["2773:4:24"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"2773:4:24"},"nodeType":"ModifierInvocation","src":"2773:26:24"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2793,"mutability":"mutable","name":"_localDecimals","nameLocation":"2719:14:24","nodeType":"VariableDeclaration","scope":2823,"src":"2713:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2792,"name":"uint8","nodeType":"ElementaryTypeName","src":"2713:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2795,"mutability":"mutable","name":"_endpoint","nameLocation":"2743:9:24","nodeType":"VariableDeclaration","scope":2823,"src":"2735:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2794,"name":"address","nodeType":"ElementaryTypeName","src":"2735:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2797,"mutability":"mutable","name":"_delegate","nameLocation":"2762:9:24","nodeType":"VariableDeclaration","scope":2823,"src":"2754:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2796,"name":"address","nodeType":"ElementaryTypeName","src":"2754:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2712:60:24"},"returnParameters":{"id":2803,"nodeType":"ParameterList","parameters":[],"src":"2800:0:24"},"scope":3365,"src":"2701:259:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3443],"body":{"id":2838,"nodeType":"Block","src":"3564:51:24","statements":[{"expression":{"components":[{"expression":{"arguments":[{"id":2832,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"3587:4:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOFT_$3509_$","typeString":"type(contract IOFT)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IOFT_$3509_$","typeString":"type(contract IOFT)"}],"id":2831,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3582:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3582:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IOFT_$3509","typeString":"type(contract IOFT)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3593:11:24","memberName":"interfaceId","nodeType":"MemberAccess","src":"3582:22:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"31","id":2835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3606:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":2836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3581:27:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes4_$_t_rational_1_by_1_$","typeString":"tuple(bytes4,int_const 1)"}},"functionReturnParameters":2830,"id":2837,"nodeType":"Return","src":"3574:34:24"}]},"documentation":{"id":2824,"nodeType":"StructuredDocumentation","src":"2966:504:24","text":" @notice Retrieves interfaceID and the version of the OFT.\n @return interfaceId The interface ID.\n @return version The version.\n @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)"},"functionSelector":"156a0d0f","id":2839,"implemented":true,"kind":"function","modifiers":[],"name":"oftVersion","nameLocation":"3484:10:24","nodeType":"FunctionDefinition","parameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"3494:2:24"},"returnParameters":{"id":2830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"interfaceId","nameLocation":"3535:11:24","nodeType":"VariableDeclaration","scope":2839,"src":"3528:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2826,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3528:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2829,"mutability":"mutable","name":"version","nameLocation":"3555:7:24","nodeType":"VariableDeclaration","scope":2839,"src":"3548:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2828,"name":"uint64","nodeType":"ElementaryTypeName","src":"3548:6:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3527:36:24"},"scope":3365,"src":"3475:140:24","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[3461],"body":{"id":2847,"nodeType":"Block","src":"4284:25:24","statements":[{"expression":{"hexValue":"36","id":2845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4301:1:24","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"functionReturnParameters":2844,"id":2846,"nodeType":"Return","src":"4294:8:24"}]},"documentation":{"id":2840,"nodeType":"StructuredDocumentation","src":"3621:596:24","text":" @dev Retrieves the shared decimals of the OFT.\n @return The shared decimals of the OFT.\n @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\n Lowest common decimal denominator between chains.\n Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\n For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\n ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615"},"functionSelector":"857749b0","id":2848,"implemented":true,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"4231:14:24","nodeType":"FunctionDefinition","parameters":{"id":2841,"nodeType":"ParameterList","parameters":[],"src":"4245:2:24"},"returnParameters":{"id":2844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2848,"src":"4277:5:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2842,"name":"uint8","nodeType":"ElementaryTypeName","src":"4277:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4276:7:24"},"scope":3365,"src":"4222:87:24","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2864,"nodeType":"Block","src":"4730:90:24","statements":[{"expression":{"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2856,"name":"msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4740:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2857,"name":"_msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2851,"src":"4755:13:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4740:28:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2859,"nodeType":"ExpressionStatement","src":"4740:28:24"},{"eventCall":{"arguments":[{"id":2861,"name":"_msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2851,"src":"4799:13:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2860,"name":"MsgInspectorSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"4783:15:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4783:30:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2863,"nodeType":"EmitStatement","src":"4778:35:24"}]},"documentation":{"id":2849,"nodeType":"StructuredDocumentation","src":"4315:337:24","text":" @dev Sets the message inspector address for the OFT.\n @param _msgInspector The address of the message inspector.\n @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\n @dev Set it to address(0) to disable it, or set it to a contract address to enable it."},"functionSelector":"6fc1b31e","id":2865,"implemented":true,"kind":"function","modifiers":[{"id":2854,"kind":"modifierInvocation","modifierName":{"id":2853,"name":"onlyOwner","nameLocations":["4720:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"4720:9:24"},"nodeType":"ModifierInvocation","src":"4720:9:24"}],"name":"setMsgInspector","nameLocation":"4666:15:24","nodeType":"FunctionDefinition","parameters":{"id":2852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2851,"mutability":"mutable","name":"_msgInspector","nameLocation":"4690:13:24","nodeType":"VariableDeclaration","scope":2865,"src":"4682:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2850,"name":"address","nodeType":"ElementaryTypeName","src":"4682:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4681:23:24"},"returnParameters":{"id":2855,"nodeType":"ParameterList","parameters":[],"src":"4730:0:24"},"scope":3365,"src":"4657:163:24","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[3478],"body":{"id":2932,"nodeType":"Block","src":"5399:1053:24","statements":[{"assignments":[2883],"declarations":[{"constant":false,"id":2883,"mutability":"mutable","name":"minAmountLD","nameLocation":"5417:11:24","nodeType":"VariableDeclaration","scope":2932,"src":"5409:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2882,"name":"uint256","nodeType":"ElementaryTypeName","src":"5409:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2885,"initialValue":{"hexValue":"30","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5431:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5409:23:24"},{"assignments":[2887],"declarations":[{"constant":false,"id":2887,"mutability":"mutable","name":"maxAmountLD","nameLocation":"5491:11:24","nodeType":"VariableDeclaration","scope":2932,"src":"5483:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"5483:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2895,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2889,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5512:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OFTCore_$3365","typeString":"contract OFTCore"}},"id":2890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5517:5:24","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3449,"src":"5512:10:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5512:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2888,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"5505:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4800_$","typeString":"type(contract IERC20)"}},"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5505:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5526:11:24","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":4749,"src":"5505:32:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5505:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5483:56:24"},{"expression":{"id":2901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2896,"name":"oftLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"5590:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2898,"name":"minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"5610:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2899,"name":"maxAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"5623:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2897,"name":"OFTLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"5601:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OFTLimit_$3392_storage_ptr_$","typeString":"type(struct OFTLimit storage pointer)"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5601:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit memory"}},"src":"5590:45:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit memory"}},"id":2902,"nodeType":"ExpressionStatement","src":"5590:45:24"},{"expression":{"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2903,"name":"oftFeeDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"5736:13:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5771:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5752:18:24","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct OFTFeeDetail memory[] memory)"},"typeName":{"baseType":{"id":2905,"nodeType":"UserDefinedTypeName","pathNode":{"id":2904,"name":"OFTFeeDetail","nameLocations":["5756:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3404,"src":"5756:12:24"},"referencedDeclaration":3404,"src":"5756:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$3404_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":2906,"nodeType":"ArrayTypeName","src":"5756:14:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}}},"id":2909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail memory[] memory"}},"src":"5736:37:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail memory[] memory"}},"id":2911,"nodeType":"ExpressionStatement","src":"5736:37:24"},{"assignments":[2913,2915],"declarations":[{"constant":false,"id":2913,"mutability":"mutable","name":"amountSentLD","nameLocation":"6218:12:24","nodeType":"VariableDeclaration","scope":2932,"src":"6210:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2912,"name":"uint256","nodeType":"ElementaryTypeName","src":"6210:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2915,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"6240:16:24","nodeType":"VariableDeclaration","scope":2932,"src":"6232:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2914,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2924,"initialValue":{"arguments":[{"expression":{"id":2917,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"6284:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6295:8:24","memberName":"amountLD","nodeType":"MemberAccess","referencedDeclaration":3377,"src":"6284:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2919,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"6317:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6328:11:24","memberName":"minAmountLD","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"6317:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2921,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"6353:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6364:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"6353:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":2916,"name":"_debitView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"6260:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint32) view returns (uint256,uint256)"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6260:120:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6209:171:24"},{"expression":{"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2925,"name":"oftReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2880,"src":"6390:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2927,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"6414:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2928,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2915,"src":"6428:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2926,"name":"OFTReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3398,"src":"6403:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OFTReceipt_$3398_storage_ptr_$","typeString":"type(struct OFTReceipt storage pointer)"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:42:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"src":"6390:55:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"id":2931,"nodeType":"ExpressionStatement","src":"6390:55:24"}]},"documentation":{"id":2866,"nodeType":"StructuredDocumentation","src":"4826:345:24","text":" @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n @param _sendParam The parameters for the send operation.\n @return oftLimit The OFT limit information.\n @return oftFeeDetails The details of OFT fees.\n @return oftReceipt The OFT receipt information."},"functionSelector":"0d35b415","id":2933,"implemented":true,"kind":"function","modifiers":[],"name":"quoteOFT","nameLocation":"5185:8:24","nodeType":"FunctionDefinition","parameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2869,"mutability":"mutable","name":"_sendParam","nameLocation":"5222:10:24","nodeType":"VariableDeclaration","scope":2933,"src":"5203:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":2868,"nodeType":"UserDefinedTypeName","pathNode":{"id":2867,"name":"SendParam","nameLocations":["5203:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"5203:9:24"},"referencedDeclaration":3386,"src":"5203:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"}],"src":"5193:45:24"},"returnParameters":{"id":2881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2873,"mutability":"mutable","name":"oftLimit","nameLocation":"5318:8:24","nodeType":"VariableDeclaration","scope":2933,"src":"5302:24:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit"},"typeName":{"id":2872,"nodeType":"UserDefinedTypeName","pathNode":{"id":2871,"name":"OFTLimit","nameLocations":["5302:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":3392,"src":"5302:8:24"},"referencedDeclaration":3392,"src":"5302:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_storage_ptr","typeString":"struct OFTLimit"}},"visibility":"internal"},{"constant":false,"id":2877,"mutability":"mutable","name":"oftFeeDetails","nameLocation":"5350:13:24","nodeType":"VariableDeclaration","scope":2933,"src":"5328:35:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail[]"},"typeName":{"baseType":{"id":2875,"nodeType":"UserDefinedTypeName","pathNode":{"id":2874,"name":"OFTFeeDetail","nameLocations":["5328:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3404,"src":"5328:12:24"},"referencedDeclaration":3404,"src":"5328:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$3404_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":2876,"nodeType":"ArrayTypeName","src":"5328:14:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}},"visibility":"internal"},{"constant":false,"id":2880,"mutability":"mutable","name":"oftReceipt","nameLocation":"5383:10:24","nodeType":"VariableDeclaration","scope":2933,"src":"5365:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":2879,"nodeType":"UserDefinedTypeName","pathNode":{"id":2878,"name":"OFTReceipt","nameLocations":["5365:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"5365:10:24"},"referencedDeclaration":3398,"src":"5365:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"5301:93:24"},"scope":3365,"src":"5176:1276:24","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[3490],"body":{"id":2973,"nodeType":"Block","src":"7054:623:24","statements":[{"assignments":[null,2946],"declarations":[null,{"constant":false,"id":2946,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"7245:16:24","nodeType":"VariableDeclaration","scope":2973,"src":"7237:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"7237:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2955,"initialValue":{"arguments":[{"expression":{"id":2948,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7276:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7287:8:24","memberName":"amountLD","nodeType":"MemberAccess","referencedDeclaration":3377,"src":"7276:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2950,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7297:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7308:11:24","memberName":"minAmountLD","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"7297:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2952,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7321:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7332:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"7321:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":2947,"name":"_debitView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"7265:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint32) view returns (uint256,uint256)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:74:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7234:105:24"},{"assignments":[2957,2959],"declarations":[{"constant":false,"id":2957,"mutability":"mutable","name":"message","nameLocation":"7441:7:24","nodeType":"VariableDeclaration","scope":2973,"src":"7428:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2956,"name":"bytes","nodeType":"ElementaryTypeName","src":"7428:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"options","nameLocation":"7463:7:24","nodeType":"VariableDeclaration","scope":2973,"src":"7450:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2958,"name":"bytes","nodeType":"ElementaryTypeName","src":"7450:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2964,"initialValue":{"arguments":[{"id":2961,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7494:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},{"id":2962,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2946,"src":"7506:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2960,"name":"_buildMsgAndOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"7474:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SendParam_$3386_calldata_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct SendParam calldata,uint256) view returns (bytes memory,bytes memory)"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7474:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7427:96:24"},{"expression":{"arguments":[{"expression":{"id":2966,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7619:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7630:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"7619:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":2968,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"7638:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2969,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"7647:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2970,"name":"_payInLzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"7656:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2965,"name":"_quote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"7612:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_struct$_MessagingFee_$33_memory_ptr_$","typeString":"function (uint32,bytes memory,bytes memory,bool) view returns (struct MessagingFee memory)"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7612:58:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"functionReturnParameters":2944,"id":2972,"nodeType":"Return","src":"7605:65:24"}]},"documentation":{"id":2934,"nodeType":"StructuredDocumentation","src":"6458:440:24","text":" @notice Provides a quote for the send() operation.\n @param _sendParam The parameters for the send() operation.\n @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n @return msgFee The calculated LayerZero messaging fee from the send() operation.\n @dev MessagingFee: LayerZero msg fee\n  - nativeFee: The native fee.\n  - lzTokenFee: The lzToken fee."},"functionSelector":"3b6f743b","id":2974,"implemented":true,"kind":"function","modifiers":[],"name":"quoteSend","nameLocation":"6912:9:24","nodeType":"FunctionDefinition","parameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2937,"mutability":"mutable","name":"_sendParam","nameLocation":"6950:10:24","nodeType":"VariableDeclaration","scope":2974,"src":"6931:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":2936,"nodeType":"UserDefinedTypeName","pathNode":{"id":2935,"name":"SendParam","nameLocations":["6931:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"6931:9:24"},"referencedDeclaration":3386,"src":"6931:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":2939,"mutability":"mutable","name":"_payInLzToken","nameLocation":"6975:13:24","nodeType":"VariableDeclaration","scope":2974,"src":"6970:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2938,"name":"bool","nodeType":"ElementaryTypeName","src":"6970:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6921:73:24"},"returnParameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2943,"mutability":"mutable","name":"msgFee","nameLocation":"7046:6:24","nodeType":"VariableDeclaration","scope":2974,"src":"7026:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":2942,"nodeType":"UserDefinedTypeName","pathNode":{"id":2941,"name":"MessagingFee","nameLocations":["7026:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"7026:12:24"},"referencedDeclaration":33,"src":"7026:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"7025:28:24"},"scope":3365,"src":"6903:774:24","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[3508],"body":{"id":2998,"nodeType":"Block","src":"8592:63:24","statements":[{"expression":{"arguments":[{"id":2993,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"8615:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},{"id":2994,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2981,"src":"8627:4:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"}},{"id":2995,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2983,"src":"8633:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"},{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2992,"name":"_send","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3071,"src":"8609:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SendParam_$3386_calldata_ptr_$_t_struct$_MessagingFee_$33_calldata_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$_t_struct$_OFTReceipt_$3398_memory_ptr_$","typeString":"function (struct SendParam calldata,struct MessagingFee calldata,address) returns (struct MessagingReceipt memory,struct OFTReceipt memory)"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8609:39:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_MessagingReceipt_$28_memory_ptr_$_t_struct$_OFTReceipt_$3398_memory_ptr_$","typeString":"tuple(struct MessagingReceipt memory,struct OFTReceipt memory)"}},"functionReturnParameters":2991,"id":2997,"nodeType":"Return","src":"8602:46:24"}]},"documentation":{"id":2975,"nodeType":"StructuredDocumentation","src":"7683:677:24","text":" @dev Executes the send operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The calculated fee for the send() operation.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds.\n @return msgReceipt The receipt for the send operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n  - guid: The unique identifier for the sent message.\n  - nonce: The nonce of the sent message.\n  - fee: The LayerZero fee incurred for the message."},"functionSelector":"c7c7f5b3","id":2999,"implemented":true,"kind":"function","modifiers":[],"name":"send","nameLocation":"8374:4:24","nodeType":"FunctionDefinition","parameters":{"id":2984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2978,"mutability":"mutable","name":"_sendParam","nameLocation":"8407:10:24","nodeType":"VariableDeclaration","scope":2999,"src":"8388:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":2977,"nodeType":"UserDefinedTypeName","pathNode":{"id":2976,"name":"SendParam","nameLocations":["8388:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"8388:9:24"},"referencedDeclaration":3386,"src":"8388:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":2981,"mutability":"mutable","name":"_fee","nameLocation":"8449:4:24","nodeType":"VariableDeclaration","scope":2999,"src":"8427:26:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":2980,"nodeType":"UserDefinedTypeName","pathNode":{"id":2979,"name":"MessagingFee","nameLocations":["8427:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"8427:12:24"},"referencedDeclaration":33,"src":"8427:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":2983,"mutability":"mutable","name":"_refundAddress","nameLocation":"8471:14:24","nodeType":"VariableDeclaration","scope":2999,"src":"8463:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2982,"name":"address","nodeType":"ElementaryTypeName","src":"8463:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8378:113:24"},"returnParameters":{"id":2991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"msgReceipt","nameLocation":"8550:10:24","nodeType":"VariableDeclaration","scope":2999,"src":"8526:34:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":2986,"nodeType":"UserDefinedTypeName","pathNode":{"id":2985,"name":"MessagingReceipt","nameLocations":["8526:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"8526:16:24"},"referencedDeclaration":28,"src":"8526:16:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":2990,"mutability":"mutable","name":"oftReceipt","nameLocation":"8580:10:24","nodeType":"VariableDeclaration","scope":2999,"src":"8562:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":2989,"nodeType":"UserDefinedTypeName","pathNode":{"id":2988,"name":"OFTReceipt","nameLocations":["8562:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"8562:10:24"},"referencedDeclaration":3398,"src":"8562:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"8525:66:24"},"scope":3365,"src":"8365:290:24","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":3070,"nodeType":"Block","src":"9583:1113:24","statements":[{"assignments":[3018,3020],"declarations":[{"constant":false,"id":3018,"mutability":"mutable","name":"amountSentLD","nameLocation":"9923:12:24","nodeType":"VariableDeclaration","scope":3070,"src":"9915:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3017,"name":"uint256","nodeType":"ElementaryTypeName","src":"9915:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3020,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"9945:16:24","nodeType":"VariableDeclaration","scope":3070,"src":"9937:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3019,"name":"uint256","nodeType":"ElementaryTypeName","src":"9937:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3031,"initialValue":{"arguments":[{"expression":{"id":3022,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9985:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9989:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9985:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3024,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10009:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10020:8:24","memberName":"amountLD","nodeType":"MemberAccess","referencedDeclaration":3377,"src":"10009:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3026,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10042:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10053:11:24","memberName":"minAmountLD","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"10042:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3028,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10078:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10089:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"10078:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":3021,"name":"_debit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3352,"src":"9965:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256,uint32) returns (uint256,uint256)"}},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9965:140:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"9914:191:24"},{"assignments":[3033,3035],"declarations":[{"constant":false,"id":3033,"mutability":"mutable","name":"message","nameLocation":"10207:7:24","nodeType":"VariableDeclaration","scope":3070,"src":"10194:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3032,"name":"bytes","nodeType":"ElementaryTypeName","src":"10194:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"options","nameLocation":"10229:7:24","nodeType":"VariableDeclaration","scope":3070,"src":"10216:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3034,"name":"bytes","nodeType":"ElementaryTypeName","src":"10216:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3040,"initialValue":{"arguments":[{"id":3037,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10260:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},{"id":3038,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"10272:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3036,"name":"_buildMsgAndOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10240:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SendParam_$3386_calldata_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct SendParam calldata,uint256) view returns (bytes memory,bytes memory)"}},"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10240:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"10193:96:24"},{"expression":{"id":3050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3041,"name":"msgReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"10399:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3043,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10420:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10431:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"10420:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3045,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"10439:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3046,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"10448:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3047,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"10457:4:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"}},{"id":3048,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3008,"src":"10463:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3042,"name":"_lzSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"10412:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_MessagingFee_$33_memory_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$","typeString":"function (uint32,bytes memory,bytes memory,struct MessagingFee memory,address) returns (struct MessagingReceipt memory)"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10412:66:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"src":"10399:79:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"id":3051,"nodeType":"ExpressionStatement","src":"10399:79:24"},{"expression":{"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3052,"name":"oftReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"10531:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3054,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"10555:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3055,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"10569:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3053,"name":"OFTReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3398,"src":"10544:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OFTReceipt_$3398_storage_ptr_$","typeString":"type(struct OFTReceipt storage pointer)"}},"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10544:42:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"src":"10531:55:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"id":3058,"nodeType":"ExpressionStatement","src":"10531:55:24"},{"eventCall":{"arguments":[{"expression":{"id":3060,"name":"msgReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"10610:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"id":3061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10621:4:24","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":22,"src":"10610:15:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3062,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10627:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10638:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"10627:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":3064,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10646:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10650:6:24","memberName":"sender","nodeType":"MemberAccess","src":"10646:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3066,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"10658:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3067,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"10672:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3059,"name":"OFTSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"10602:7:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint32,address,uint256,uint256)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10602:87:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3069,"nodeType":"EmitStatement","src":"10597:92:24"}]},"documentation":{"id":3000,"nodeType":"StructuredDocumentation","src":"8661:697:24","text":" @dev Internal function to execute the send operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The calculated fee for the send() operation.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds.\n @return msgReceipt The receipt for the send operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n  - guid: The unique identifier for the sent message.\n  - nonce: The nonce of the sent message.\n  - fee: The LayerZero fee incurred for the message."},"id":3071,"implemented":true,"kind":"function","modifiers":[],"name":"_send","nameLocation":"9372:5:24","nodeType":"FunctionDefinition","parameters":{"id":3009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"_sendParam","nameLocation":"9406:10:24","nodeType":"VariableDeclaration","scope":3071,"src":"9387:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3002,"nodeType":"UserDefinedTypeName","pathNode":{"id":3001,"name":"SendParam","nameLocations":["9387:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"9387:9:24"},"referencedDeclaration":3386,"src":"9387:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3006,"mutability":"mutable","name":"_fee","nameLocation":"9448:4:24","nodeType":"VariableDeclaration","scope":3071,"src":"9426:26:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":3005,"nodeType":"UserDefinedTypeName","pathNode":{"id":3004,"name":"MessagingFee","nameLocations":["9426:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"9426:12:24"},"referencedDeclaration":33,"src":"9426:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":3008,"mutability":"mutable","name":"_refundAddress","nameLocation":"9470:14:24","nodeType":"VariableDeclaration","scope":3071,"src":"9462:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3007,"name":"address","nodeType":"ElementaryTypeName","src":"9462:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9377:113:24"},"returnParameters":{"id":3016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3012,"mutability":"mutable","name":"msgReceipt","nameLocation":"9541:10:24","nodeType":"VariableDeclaration","scope":3071,"src":"9517:34:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":3011,"nodeType":"UserDefinedTypeName","pathNode":{"id":3010,"name":"MessagingReceipt","nameLocations":["9517:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"9517:16:24"},"referencedDeclaration":28,"src":"9517:16:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":3015,"mutability":"mutable","name":"oftReceipt","nameLocation":"9571:10:24","nodeType":"VariableDeclaration","scope":3071,"src":"9553:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":3014,"nodeType":"UserDefinedTypeName","pathNode":{"id":3013,"name":"OFTReceipt","nameLocations":["9553:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"9553:10:24"},"referencedDeclaration":3398,"src":"9553:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"9516:66:24"},"scope":3365,"src":"9363:1333:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3138,"nodeType":"Block","src":"11166:1260:24","statements":[{"assignments":[3085],"declarations":[{"constant":false,"id":3085,"mutability":"mutable","name":"hasCompose","nameLocation":"11181:10:24","nodeType":"VariableDeclaration","scope":3138,"src":"11176:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3084,"name":"bool","nodeType":"ElementaryTypeName","src":"11176:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3086,"nodeType":"VariableDeclarationStatement","src":"11176:15:24"},{"expression":{"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3087,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"11324:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3088,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"11333:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3089,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11323:21:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bool_$","typeString":"tuple(bytes memory,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3092,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11379:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11390:2:24","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":3375,"src":"11379:13:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":3095,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"11412:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3094,"name":"_toSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3301,"src":"11406:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint64_$","typeString":"function (uint256) view returns (uint64)"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11406:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3097,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11640:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11651:10:24","memberName":"composeMsg","nodeType":"MemberAccess","referencedDeclaration":3383,"src":"11640:21:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":3090,"name":"OFTMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3832,"src":"11347:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OFTMsgCodec_$3832_$","typeString":"type(library OFTMsgCodec)"}},"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11359:6:24","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":3728,"src":"11347:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint64_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bool_$","typeString":"function (bytes32,uint64,bytes memory) view returns (bytes memory,bool)"}},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11347:324:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bool_$","typeString":"tuple(bytes memory,bool)"}},"src":"11323:348:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3101,"nodeType":"ExpressionStatement","src":"11323:348:24"},{"assignments":[3103],"declarations":[{"constant":false,"id":3103,"mutability":"mutable","name":"msgType","nameLocation":"11758:7:24","nodeType":"VariableDeclaration","scope":3138,"src":"11751:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3102,"name":"uint16","nodeType":"ElementaryTypeName","src":"11751:6:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":3108,"initialValue":{"condition":{"id":3104,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"11768:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3106,"name":"SEND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2781,"src":"11797:4:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11768:33:24","trueExpression":{"id":3105,"name":"SEND_AND_CALL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"11781:13:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"11751:50:24"},{"expression":{"id":3117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3109,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"11913:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3111,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11938:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11949:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"11938:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3113,"name":"msgType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"11957:7:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":3114,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11966:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11977:12:24","memberName":"extraOptions","nodeType":"MemberAccess","referencedDeclaration":3381,"src":"11966:23:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3110,"name":"combineOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2129,"src":"11923:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$_t_uint16_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint32,uint16,bytes calldata) view returns (bytes memory)"}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11923:67:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11913:77:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3118,"nodeType":"ExpressionStatement","src":"11913:77:24"},{"assignments":[3120],"declarations":[{"constant":false,"id":3120,"mutability":"mutable","name":"inspector","nameLocation":"12236:9:24","nodeType":"VariableDeclaration","scope":3138,"src":"12228:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3119,"name":"address","nodeType":"ElementaryTypeName","src":"12228:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3122,"initialValue":{"id":3121,"name":"msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"12248:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12228:32:24"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3123,"name":"inspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12340:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12361:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12353:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3124,"name":"address","nodeType":"ElementaryTypeName","src":"12353:7:24","typeDescriptions":{}}},"id":3127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12353:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12340:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3137,"nodeType":"IfStatement","src":"12336:83:24","trueBody":{"expression":{"arguments":[{"id":3133,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"12402:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3134,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"12411:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3130,"name":"inspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12383:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3129,"name":"IOAppMsgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"12365:17:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOAppMsgInspector_$1922_$","typeString":"type(contract IOAppMsgInspector)"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12365:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOAppMsgInspector_$1922","typeString":"contract IOAppMsgInspector"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12394:7:24","memberName":"inspect","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"12365:36:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) view external returns (bool)"}},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12365:54:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3136,"nodeType":"ExpressionStatement","src":"12365:54:24"}}]},"documentation":{"id":3072,"nodeType":"StructuredDocumentation","src":"10702:283:24","text":" @dev Internal function to build the message and options.\n @param _sendParam The parameters for the send() operation.\n @param _amountLD The amount in local decimals.\n @return message The encoded message.\n @return options The encoded options."},"id":3139,"implemented":true,"kind":"function","modifiers":[],"name":"_buildMsgAndOptions","nameLocation":"10999:19:24","nodeType":"FunctionDefinition","parameters":{"id":3078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3075,"mutability":"mutable","name":"_sendParam","nameLocation":"11047:10:24","nodeType":"VariableDeclaration","scope":3139,"src":"11028:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3074,"nodeType":"UserDefinedTypeName","pathNode":{"id":3073,"name":"SendParam","nameLocations":["11028:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"11028:9:24"},"referencedDeclaration":3386,"src":"11028:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3077,"mutability":"mutable","name":"_amountLD","nameLocation":"11075:9:24","nodeType":"VariableDeclaration","scope":3139,"src":"11067:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3076,"name":"uint256","nodeType":"ElementaryTypeName","src":"11067:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11018:72:24"},"returnParameters":{"id":3083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3080,"mutability":"mutable","name":"message","nameLocation":"11135:7:24","nodeType":"VariableDeclaration","scope":3139,"src":"11122:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3079,"name":"bytes","nodeType":"ElementaryTypeName","src":"11122:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3082,"mutability":"mutable","name":"options","nameLocation":"11157:7:24","nodeType":"VariableDeclaration","scope":3139,"src":"11144:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3081,"name":"bytes","nodeType":"ElementaryTypeName","src":"11144:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11121:44:24"},"scope":3365,"src":"10990:1436:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1652],"body":{"id":3212,"nodeType":"Block","src":"13247:1503:24","statements":[{"assignments":[3156],"declarations":[{"constant":false,"id":3156,"mutability":"mutable","name":"toAddress","nameLocation":"13429:9:24","nodeType":"VariableDeclaration","scope":3212,"src":"13421:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3155,"name":"address","nodeType":"ElementaryTypeName","src":"13421:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3162,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3157,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13441:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13450:6:24","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":3758,"src":"13441:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13441:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13459:16:24","memberName":"bytes32ToAddress","nodeType":"MemberAccess","referencedDeclaration":3831,"src":"13441:34:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (address)"}},"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13441:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13421:56:24"},{"assignments":[3164],"declarations":[{"constant":false,"id":3164,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"13618:16:24","nodeType":"VariableDeclaration","scope":3212,"src":"13610:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3163,"name":"uint256","nodeType":"ElementaryTypeName","src":"13610:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3175,"initialValue":{"arguments":[{"id":3166,"name":"toAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"13645:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3168,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13662:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13671:8:24","memberName":"amountSD","nodeType":"MemberAccess","referencedDeclaration":3778,"src":"13662:17:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint64_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint64)"}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13662:19:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3167,"name":"_toLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"13656:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint256_$","typeString":"function (uint64) view returns (uint256)"}},"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13656:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3172,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"13684:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13692:6:24","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"13684:14:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":3165,"name":"_credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3364,"src":"13637:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$returns$_t_uint256_$","typeString":"function (address,uint256,uint32) returns (uint256)"}},"id":3174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13637:62:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13610:89:24"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3176,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13714:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13723:10:24","memberName":"isComposed","nodeType":"MemberAccess","referencedDeclaration":3742,"src":"13714:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bool)"}},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13714:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3203,"nodeType":"IfStatement","src":"13710:955:24","trueBody":{"id":3202,"nodeType":"Block","src":"13737:928:24","statements":[{"assignments":[3180],"declarations":[{"constant":false,"id":3180,"mutability":"mutable","name":"composeMsg","nameLocation":"13827:10:24","nodeType":"VariableDeclaration","scope":3202,"src":"13814:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3179,"name":"bytes","nodeType":"ElementaryTypeName","src":"13814:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3192,"initialValue":{"arguments":[{"expression":{"id":3183,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"13883:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13891:5:24","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":39,"src":"13883:13:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3185,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"13914:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13922:6:24","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"13914:14:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3187,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"13946:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3188,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13980:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13989:10:24","memberName":"composeMsg","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"13980:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes memory)"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13980:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3181,"name":"OFTComposeMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"13840:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OFTComposeMsgCodec_$3678_$","typeString":"type(library OFTComposeMsgCodec)"}},"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13859:6:24","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":3548,"src":"13840:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint64_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint64,uint32,uint256,bytes memory) pure returns (bytes memory)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13840:175:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"13814:201:24"},{"expression":{"arguments":[{"id":3196,"name":"toAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"14583:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3197,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"14594:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":3198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14601:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3199,"name":"composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"14643:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3193,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"14562:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14571:11:24","memberName":"sendCompose","nodeType":"MemberAccess","referencedDeclaration":744,"src":"14562:20:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,uint16,bytes memory) external"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14562:92:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3201,"nodeType":"ExpressionStatement","src":"14562:92:24"}]}},{"eventCall":{"arguments":[{"id":3205,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"14692:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3206,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"14699:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14707:6:24","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"14699:14:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3208,"name":"toAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"14715:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3209,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"14726:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3204,"name":"OFTReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"14680:11:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint32,address,uint256)"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14680:63:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3211,"nodeType":"EmitStatement","src":"14675:68:24"}]},"documentation":{"id":3140,"nodeType":"StructuredDocumentation","src":"12432:507:24","text":" @dev Internal function to handle the receive on the LayerZero endpoint.\n @param _origin The origin information.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address from the src chain.\n  - nonce: The nonce of the LayerZero message.\n @param _guid The unique identifier for the received LayerZero message.\n @param _message The encoded message.\n @dev _executor The address of the executor.\n @dev _extraData Additional data."},"id":3213,"implemented":true,"kind":"function","modifiers":[],"name":"_lzReceive","nameLocation":"12953:10:24","nodeType":"FunctionDefinition","overrides":{"id":3153,"nodeType":"OverrideSpecifier","overrides":[],"src":"13238:8:24"},"parameters":{"id":3152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3143,"mutability":"mutable","name":"_origin","nameLocation":"12989:7:24","nodeType":"VariableDeclaration","scope":3213,"src":"12973:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":3142,"nodeType":"UserDefinedTypeName","pathNode":{"id":3141,"name":"Origin","nameLocations":["12973:6:24"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"12973:6:24"},"referencedDeclaration":40,"src":"12973:6:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":3145,"mutability":"mutable","name":"_guid","nameLocation":"13014:5:24","nodeType":"VariableDeclaration","scope":3213,"src":"13006:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3144,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13006:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3147,"mutability":"mutable","name":"_message","nameLocation":"13044:8:24","nodeType":"VariableDeclaration","scope":3213,"src":"13029:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3146,"name":"bytes","nodeType":"ElementaryTypeName","src":"13029:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3149,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3213,"src":"13062:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3148,"name":"address","nodeType":"ElementaryTypeName","src":"13062:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3213,"src":"13139:14:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3150,"name":"bytes","nodeType":"ElementaryTypeName","src":"13139:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12963:257:24"},"returnParameters":{"id":3154,"nodeType":"ParameterList","parameters":[],"src":"13247:0:24"},"scope":3365,"src":"12944:1806:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2312],"body":{"id":3237,"nodeType":"Block","src":"15707:76:24","statements":[{"expression":{"arguments":[{"id":3230,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"15728:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"id":3231,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"15737:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3232,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"15744:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":3233,"name":"_executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3223,"src":"15754:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3234,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3225,"src":"15765:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3229,"name":"_lzReceive","nodeType":"Identifier","overloadedDeclarations":[3213],"referencedDeclaration":3213,"src":"15717:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Origin_$40_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct Origin calldata,bytes32,bytes calldata,address,bytes calldata)"}},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15717:59:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3236,"nodeType":"ExpressionStatement","src":"15717:59:24"}]},"documentation":{"id":3214,"nodeType":"StructuredDocumentation","src":"14756:735:24","text":" @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n @param _origin The origin information.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address from the src chain.\n  - nonce: The nonce of the LayerZero message.\n @param _guid The unique identifier for the received LayerZero message.\n @param _message The LayerZero message.\n @param _executor The address of the off-chain executor.\n @param _extraData Arbitrary data passed by the msg executor.\n @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver."},"id":3238,"implemented":true,"kind":"function","modifiers":[],"name":"_lzReceiveSimulate","nameLocation":"15505:18:24","nodeType":"FunctionDefinition","overrides":{"id":3227,"nodeType":"OverrideSpecifier","overrides":[],"src":"15698:8:24"},"parameters":{"id":3226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3217,"mutability":"mutable","name":"_origin","nameLocation":"15549:7:24","nodeType":"VariableDeclaration","scope":3238,"src":"15533:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":3216,"nodeType":"UserDefinedTypeName","pathNode":{"id":3215,"name":"Origin","nameLocations":["15533:6:24"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"15533:6:24"},"referencedDeclaration":40,"src":"15533:6:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"_guid","nameLocation":"15574:5:24","nodeType":"VariableDeclaration","scope":3238,"src":"15566:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15566:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"_message","nameLocation":"15604:8:24","nodeType":"VariableDeclaration","scope":3238,"src":"15589:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3220,"name":"bytes","nodeType":"ElementaryTypeName","src":"15589:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"_executor","nameLocation":"15630:9:24","nodeType":"VariableDeclaration","scope":3238,"src":"15622:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3222,"name":"address","nodeType":"ElementaryTypeName","src":"15622:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3225,"mutability":"mutable","name":"_extraData","nameLocation":"15664:10:24","nodeType":"VariableDeclaration","scope":3238,"src":"15649:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3224,"name":"bytes","nodeType":"ElementaryTypeName","src":"15649:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15523:157:24"},"returnParameters":{"id":3228,"nodeType":"ParameterList","parameters":[],"src":"15707:0:24"},"scope":3365,"src":"15496:287:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2322],"body":{"id":3255,"nodeType":"Block","src":"16239:44:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":3249,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"16256:5:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":3251,"indexExpression":{"id":3250,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"16262:4:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16256:11:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3252,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"16271:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16256:20:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3248,"id":3254,"nodeType":"Return","src":"16249:27:24"}]},"documentation":{"id":3239,"nodeType":"StructuredDocumentation","src":"15789:357:24","text":" @dev Check if the peer is considered 'trusted' by the OApp.\n @param _eid The endpoint ID to check.\n @param _peer The peer to check.\n @return Whether the peer passed is considered 'trusted' by the OApp.\n @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source."},"functionSelector":"5a0dfe4d","id":3256,"implemented":true,"kind":"function","modifiers":[],"name":"isPeer","nameLocation":"16160:6:24","nodeType":"FunctionDefinition","overrides":{"id":3245,"nodeType":"OverrideSpecifier","overrides":[],"src":"16215:8:24"},"parameters":{"id":3244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3241,"mutability":"mutable","name":"_eid","nameLocation":"16174:4:24","nodeType":"VariableDeclaration","scope":3256,"src":"16167:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3240,"name":"uint32","nodeType":"ElementaryTypeName","src":"16167:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3243,"mutability":"mutable","name":"_peer","nameLocation":"16188:5:24","nodeType":"VariableDeclaration","scope":3256,"src":"16180:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16180:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16166:28:24"},"returnParameters":{"id":3248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3256,"src":"16233:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3246,"name":"bool","nodeType":"ElementaryTypeName","src":"16233:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16232:6:24"},"scope":3365,"src":"16151:132:24","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3271,"nodeType":"Block","src":"16766:83:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3264,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3259,"src":"16784:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3265,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"16796:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16784:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16783:35:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3268,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"16821:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16783:59:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3263,"id":3270,"nodeType":"Return","src":"16776:66:24"}]},"documentation":{"id":3257,"nodeType":"StructuredDocumentation","src":"16289:383:24","text":" @dev Internal function to remove dust from the given local decimal amount.\n @param _amountLD The amount in local decimals.\n @return amountLD The amount after removing dust.\n @dev Prevents the loss of dust when moving amounts between chains with different decimals.\n @dev eg. uint(123) with a conversion rate of 100 becomes uint(100)."},"id":3272,"implemented":true,"kind":"function","modifiers":[],"name":"_removeDust","nameLocation":"16686:11:24","nodeType":"FunctionDefinition","parameters":{"id":3260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3259,"mutability":"mutable","name":"_amountLD","nameLocation":"16706:9:24","nodeType":"VariableDeclaration","scope":3272,"src":"16698:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3258,"name":"uint256","nodeType":"ElementaryTypeName","src":"16698:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16697:19:24"},"returnParameters":{"id":3263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3262,"mutability":"mutable","name":"amountLD","nameLocation":"16756:8:24","nodeType":"VariableDeclaration","scope":3272,"src":"16748:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3261,"name":"uint256","nodeType":"ElementaryTypeName","src":"16748:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16747:18:24"},"scope":3365,"src":"16677:172:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3284,"nodeType":"Block","src":"17155:57:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3280,"name":"_amountSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"17172:9:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3281,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"17184:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17172:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3279,"id":3283,"nodeType":"Return","src":"17165:40:24"}]},"documentation":{"id":3273,"nodeType":"StructuredDocumentation","src":"16855:213:24","text":" @dev Internal function to convert an amount from shared decimals into local decimals.\n @param _amountSD The amount in shared decimals.\n @return amountLD The amount in local decimals."},"id":3285,"implemented":true,"kind":"function","modifiers":[],"name":"_toLD","nameLocation":"17082:5:24","nodeType":"FunctionDefinition","parameters":{"id":3276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"_amountSD","nameLocation":"17095:9:24","nodeType":"VariableDeclaration","scope":3285,"src":"17088:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3274,"name":"uint64","nodeType":"ElementaryTypeName","src":"17088:6:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"17087:18:24"},"returnParameters":{"id":3279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3278,"mutability":"mutable","name":"amountLD","nameLocation":"17145:8:24","nodeType":"VariableDeclaration","scope":3285,"src":"17137:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3277,"name":"uint256","nodeType":"ElementaryTypeName","src":"17137:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17136:18:24"},"scope":3365,"src":"17073:139:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3300,"nodeType":"Block","src":"17518:65:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3295,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"17542:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3296,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"17554:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17542:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17535:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3293,"name":"uint64","nodeType":"ElementaryTypeName","src":"17535:6:24","typeDescriptions":{}}},"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17535:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3292,"id":3299,"nodeType":"Return","src":"17528:48:24"}]},"documentation":{"id":3286,"nodeType":"StructuredDocumentation","src":"17218:213:24","text":" @dev Internal function to convert an amount from local decimals into shared decimals.\n @param _amountLD The amount in local decimals.\n @return amountSD The amount in shared decimals."},"id":3301,"implemented":true,"kind":"function","modifiers":[],"name":"_toSD","nameLocation":"17445:5:24","nodeType":"FunctionDefinition","parameters":{"id":3289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3288,"mutability":"mutable","name":"_amountLD","nameLocation":"17459:9:24","nodeType":"VariableDeclaration","scope":3301,"src":"17451:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3287,"name":"uint256","nodeType":"ElementaryTypeName","src":"17451:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17450:19:24"},"returnParameters":{"id":3292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3291,"mutability":"mutable","name":"amountSD","nameLocation":"17508:8:24","nodeType":"VariableDeclaration","scope":3301,"src":"17501:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3290,"name":"uint64","nodeType":"ElementaryTypeName","src":"17501:6:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"17500:17:24"},"scope":3365,"src":"17436:147:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3335,"nodeType":"Block","src":"18358:478:24","statements":[{"expression":{"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3315,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"18491:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3317,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"18518:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3316,"name":"_removeDust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"18506:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18506:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18491:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3320,"nodeType":"ExpressionStatement","src":"18491:37:24"},{"expression":{"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3321,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"18635:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3322,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"18654:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18635:31:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3324,"nodeType":"ExpressionStatement","src":"18635:31:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3325,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"18717:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3326,"name":"_minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"18736:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18717:31:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3334,"nodeType":"IfStatement","src":"18713:117:24","trueBody":{"id":3333,"nodeType":"Block","src":"18750:80:24","statements":[{"errorCall":{"arguments":[{"id":3329,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"18788:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3330,"name":"_minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"18806:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3328,"name":"SlippageExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3413,"src":"18771:16:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18771:48:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3332,"nodeType":"RevertStatement","src":"18764:55:24"}]}}]},"documentation":{"id":3302,"nodeType":"StructuredDocumentation","src":"17589:574:24","text":" @dev Internal function to mock the amount mutation from a OFT debit() operation.\n @param _amountLD The amount to send in local decimals.\n @param _minAmountLD The minimum amount to send in local decimals.\n @dev _dstEid The destination endpoint ID.\n @return amountSentLD The amount sent, in local decimals.\n @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\n @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote."},"id":3336,"implemented":true,"kind":"function","modifiers":[],"name":"_debitView","nameLocation":"18177:10:24","nodeType":"FunctionDefinition","parameters":{"id":3309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3304,"mutability":"mutable","name":"_amountLD","nameLocation":"18205:9:24","nodeType":"VariableDeclaration","scope":3336,"src":"18197:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3303,"name":"uint256","nodeType":"ElementaryTypeName","src":"18197:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3306,"mutability":"mutable","name":"_minAmountLD","nameLocation":"18232:12:24","nodeType":"VariableDeclaration","scope":3336,"src":"18224:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3305,"name":"uint256","nodeType":"ElementaryTypeName","src":"18224:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3336,"src":"18254:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3307,"name":"uint32","nodeType":"ElementaryTypeName","src":"18254:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"18187:91:24"},"returnParameters":{"id":3314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3311,"mutability":"mutable","name":"amountSentLD","nameLocation":"18318:12:24","nodeType":"VariableDeclaration","scope":3336,"src":"18310:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3310,"name":"uint256","nodeType":"ElementaryTypeName","src":"18310:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3313,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"18340:16:24","nodeType":"VariableDeclaration","scope":3336,"src":"18332:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3312,"name":"uint256","nodeType":"ElementaryTypeName","src":"18332:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18309:48:24"},"scope":3365,"src":"18168:668:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":3337,"nodeType":"StructuredDocumentation","src":"18842:647:24","text":" @dev Internal function to perform a debit operation.\n @param _from The address to debit.\n @param _amountLD The amount to send in local decimals.\n @param _minAmountLD The minimum amount to send in local decimals.\n @param _dstEid The destination endpoint ID.\n @return amountSentLD The amount sent in local decimals.\n @return amountReceivedLD The amount received in local decimals on the remote.\n @dev Defined here but are intended to be overriden depending on the OFT implementation.\n @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD."},"id":3352,"implemented":false,"kind":"function","modifiers":[],"name":"_debit","nameLocation":"19503:6:24","nodeType":"FunctionDefinition","parameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3339,"mutability":"mutable","name":"_from","nameLocation":"19527:5:24","nodeType":"VariableDeclaration","scope":3352,"src":"19519:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3338,"name":"address","nodeType":"ElementaryTypeName","src":"19519:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3341,"mutability":"mutable","name":"_amountLD","nameLocation":"19550:9:24","nodeType":"VariableDeclaration","scope":3352,"src":"19542:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3340,"name":"uint256","nodeType":"ElementaryTypeName","src":"19542:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3343,"mutability":"mutable","name":"_minAmountLD","nameLocation":"19577:12:24","nodeType":"VariableDeclaration","scope":3352,"src":"19569:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3342,"name":"uint256","nodeType":"ElementaryTypeName","src":"19569:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3345,"mutability":"mutable","name":"_dstEid","nameLocation":"19606:7:24","nodeType":"VariableDeclaration","scope":3352,"src":"19599:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3344,"name":"uint32","nodeType":"ElementaryTypeName","src":"19599:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"19509:110:24"},"returnParameters":{"id":3351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3348,"mutability":"mutable","name":"amountSentLD","nameLocation":"19654:12:24","nodeType":"VariableDeclaration","scope":3352,"src":"19646:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3347,"name":"uint256","nodeType":"ElementaryTypeName","src":"19646:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3350,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"19676:16:24","nodeType":"VariableDeclaration","scope":3352,"src":"19668:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3349,"name":"uint256","nodeType":"ElementaryTypeName","src":"19668:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19645:48:24"},"scope":3365,"src":"19494:200:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":3353,"nodeType":"StructuredDocumentation","src":"19700:503:24","text":" @dev Internal function to perform a credit operation.\n @param _to The address to credit.\n @param _amountLD The amount to credit in local decimals.\n @param _srcEid The source endpoint ID.\n @return amountReceivedLD The amount ACTUALLY received in local decimals.\n @dev Defined here but are intended to be overriden depending on the OFT implementation.\n @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD."},"id":3364,"implemented":false,"kind":"function","modifiers":[],"name":"_credit","nameLocation":"20217:7:24","nodeType":"FunctionDefinition","parameters":{"id":3360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3355,"mutability":"mutable","name":"_to","nameLocation":"20242:3:24","nodeType":"VariableDeclaration","scope":3364,"src":"20234:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3354,"name":"address","nodeType":"ElementaryTypeName","src":"20234:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3357,"mutability":"mutable","name":"_amountLD","nameLocation":"20263:9:24","nodeType":"VariableDeclaration","scope":3364,"src":"20255:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3356,"name":"uint256","nodeType":"ElementaryTypeName","src":"20255:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3359,"mutability":"mutable","name":"_srcEid","nameLocation":"20289:7:24","nodeType":"VariableDeclaration","scope":3364,"src":"20282:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3358,"name":"uint32","nodeType":"ElementaryTypeName","src":"20282:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"20224:78:24"},"returnParameters":{"id":3363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3362,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"20337:16:24","nodeType":"VariableDeclaration","scope":3364,"src":"20329:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3361,"name":"uint256","nodeType":"ElementaryTypeName","src":"20329:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20328:26:24"},"scope":3365,"src":"20208:147:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3366,"src":"865:19492:24","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4838],"usedEvents":[1864,1943,2340,2790,3425,3435,3857]}],"src":"33:20325:24"},"id":24},"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol","exportedSymbols":{"IOFT":[3509],"MessagingFee":[33],"MessagingReceipt":[28],"OFTFeeDetail":[3404],"OFTLimit":[3392],"OFTReceipt":[3398],"SendParam":[3386]},"id":3510,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3367,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:25"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","id":3370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3510,"sourceUnit":1840,"src":"59:103:25","symbolAliases":[{"foreign":{"id":3368,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"68:16:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3369,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"86:12:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"SendParam","documentation":{"id":3371,"nodeType":"StructuredDocumentation","src":"164:82:25","text":" @dev Struct representing token parameters for the OFT send() operation."},"id":3386,"members":[{"constant":false,"id":3373,"mutability":"mutable","name":"dstEid","nameLocation":"277:6:25","nodeType":"VariableDeclaration","scope":3386,"src":"270:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3372,"name":"uint32","nodeType":"ElementaryTypeName","src":"270:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"to","nameLocation":"325:2:25","nodeType":"VariableDeclaration","scope":3386,"src":"317:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"317:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3377,"mutability":"mutable","name":"amountLD","nameLocation":"363:8:25","nodeType":"VariableDeclaration","scope":3386,"src":"355:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3379,"mutability":"mutable","name":"minAmountLD","nameLocation":"422:11:25","nodeType":"VariableDeclaration","scope":3386,"src":"414:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3378,"name":"uint256","nodeType":"ElementaryTypeName","src":"414:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"extraOptions","nameLocation":"490:12:25","nodeType":"VariableDeclaration","scope":3386,"src":"484:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3380,"name":"bytes","nodeType":"ElementaryTypeName","src":"484:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3383,"mutability":"mutable","name":"composeMsg","nameLocation":"596:10:25","nodeType":"VariableDeclaration","scope":3386,"src":"590:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3382,"name":"bytes","nodeType":"ElementaryTypeName","src":"590:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3385,"mutability":"mutable","name":"oftCmd","nameLocation":"668:6:25","nodeType":"VariableDeclaration","scope":3386,"src":"662:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3384,"name":"bytes","nodeType":"ElementaryTypeName","src":"662:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SendParam","nameLocation":"254:9:25","nodeType":"StructDefinition","scope":3510,"src":"247:504:25","visibility":"public"},{"canonicalName":"OFTLimit","documentation":{"id":3387,"nodeType":"StructuredDocumentation","src":"753:147:25","text":" @dev Struct representing OFT limit information.\n @dev These amounts can change dynamically and are up the specific oft implementation."},"id":3392,"members":[{"constant":false,"id":3389,"mutability":"mutable","name":"minAmountLD","nameLocation":"931:11:25","nodeType":"VariableDeclaration","scope":3392,"src":"923:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3388,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3391,"mutability":"mutable","name":"maxAmountLD","nameLocation":"1027:11:25","nodeType":"VariableDeclaration","scope":3392,"src":"1019:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3390,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OFTLimit","nameLocation":"908:8:25","nodeType":"StructDefinition","scope":3510,"src":"901:211:25","visibility":"public"},{"canonicalName":"OFTReceipt","documentation":{"id":3393,"nodeType":"StructuredDocumentation","src":"1114:60:25","text":" @dev Struct representing OFT receipt information."},"id":3398,"members":[{"constant":false,"id":3395,"mutability":"mutable","name":"amountSentLD","nameLocation":"1207:12:25","nodeType":"VariableDeclaration","scope":3398,"src":"1199:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1199:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3397,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"1400:16:25","nodeType":"VariableDeclaration","scope":3398,"src":"1392:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1392:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OFTReceipt","nameLocation":"1182:10:25","nodeType":"StructDefinition","scope":3510,"src":"1175:299:25","visibility":"public"},{"canonicalName":"OFTFeeDetail","documentation":{"id":3399,"nodeType":"StructuredDocumentation","src":"1476:154:25","text":" @dev Struct representing OFT fee details.\n @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI."},"id":3404,"members":[{"constant":false,"id":3401,"mutability":"mutable","name":"feeAmountLD","nameLocation":"1664:11:25","nodeType":"VariableDeclaration","scope":3404,"src":"1657:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3400,"name":"int256","nodeType":"ElementaryTypeName","src":"1657:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"description","nameLocation":"1728:11:25","nodeType":"VariableDeclaration","scope":3404,"src":"1721:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3402,"name":"string","nodeType":"ElementaryTypeName","src":"1721:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"OFTFeeDetail","nameLocation":"1638:12:25","nodeType":"StructDefinition","scope":3510,"src":"1631:138:25","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IOFT","contractDependencies":[],"contractKind":"interface","documentation":{"id":3405,"nodeType":"StructuredDocumentation","src":"1771:197:25","text":" @title IOFT\n @dev Interface for the OftChain (OFT) token.\n @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\n @dev This specific interface ID is '0x02e49c2c'."},"fullyImplemented":false,"id":3509,"linearizedBaseContracts":[3509],"name":"IOFT","nameLocation":"1979:4:25","nodeType":"ContractDefinition","nodes":[{"errorSelector":"1e9714b0","id":3407,"name":"InvalidLocalDecimals","nameLocation":"2025:20:25","nodeType":"ErrorDefinition","parameters":{"id":3406,"nodeType":"ParameterList","parameters":[],"src":"2045:2:25"},"src":"2019:29:25"},{"errorSelector":"71c4efed","id":3413,"name":"SlippageExceeded","nameLocation":"2059:16:25","nodeType":"ErrorDefinition","parameters":{"id":3412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3409,"mutability":"mutable","name":"amountLD","nameLocation":"2084:8:25","nodeType":"VariableDeclaration","scope":3413,"src":"2076:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3408,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3411,"mutability":"mutable","name":"minAmountLD","nameLocation":"2102:11:25","nodeType":"VariableDeclaration","scope":3413,"src":"2094:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2075:39:25"},"src":"2053:62:25"},{"anonymous":false,"eventSelector":"85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a","id":3425,"name":"OFTSent","nameLocation":"2141:7:25","nodeType":"EventDefinition","parameters":{"id":3424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"indexed":true,"mutability":"mutable","name":"guid","nameLocation":"2174:4:25","nodeType":"VariableDeclaration","scope":3425,"src":"2158:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2158:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3417,"indexed":false,"mutability":"mutable","name":"dstEid","nameLocation":"2223:6:25","nodeType":"VariableDeclaration","scope":3425,"src":"2216:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3416,"name":"uint32","nodeType":"ElementaryTypeName","src":"2216:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3419,"indexed":true,"mutability":"mutable","name":"fromAddress","nameLocation":"2283:11:25","nodeType":"VariableDeclaration","scope":3425,"src":"2267:27:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3418,"name":"address","nodeType":"ElementaryTypeName","src":"2267:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3421,"indexed":false,"mutability":"mutable","name":"amountSentLD","nameLocation":"2355:12:25","nodeType":"VariableDeclaration","scope":3425,"src":"2347:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3420,"name":"uint256","nodeType":"ElementaryTypeName","src":"2347:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3423,"indexed":false,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2429:16:25","nodeType":"VariableDeclaration","scope":3425,"src":"2421:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3422,"name":"uint256","nodeType":"ElementaryTypeName","src":"2421:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2148:351:25"},"src":"2135:365:25"},{"anonymous":false,"eventSelector":"efed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c","id":3435,"name":"OFTReceived","nameLocation":"2511:11:25","nodeType":"EventDefinition","parameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3427,"indexed":true,"mutability":"mutable","name":"guid","nameLocation":"2548:4:25","nodeType":"VariableDeclaration","scope":3435,"src":"2532:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2532:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3429,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"2597:6:25","nodeType":"VariableDeclaration","scope":3435,"src":"2590:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3428,"name":"uint32","nodeType":"ElementaryTypeName","src":"2590:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3431,"indexed":true,"mutability":"mutable","name":"toAddress","nameLocation":"2652:9:25","nodeType":"VariableDeclaration","scope":3435,"src":"2636:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3430,"name":"address","nodeType":"ElementaryTypeName","src":"2636:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3433,"indexed":false,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2725:16:25","nodeType":"VariableDeclaration","scope":3435,"src":"2717:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3432,"name":"uint256","nodeType":"ElementaryTypeName","src":"2717:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2522:273:25"},"src":"2505:291:25"},{"documentation":{"id":3436,"nodeType":"StructuredDocumentation","src":"2802:504:25","text":" @notice Retrieves interfaceID and the version of the OFT.\n @return interfaceId The interface ID.\n @return version The version.\n @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)"},"functionSelector":"156a0d0f","id":3443,"implemented":false,"kind":"function","modifiers":[],"name":"oftVersion","nameLocation":"3320:10:25","nodeType":"FunctionDefinition","parameters":{"id":3437,"nodeType":"ParameterList","parameters":[],"src":"3330:2:25"},"returnParameters":{"id":3442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3439,"mutability":"mutable","name":"interfaceId","nameLocation":"3363:11:25","nodeType":"VariableDeclaration","scope":3443,"src":"3356:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3438,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3356:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":3441,"mutability":"mutable","name":"version","nameLocation":"3383:7:25","nodeType":"VariableDeclaration","scope":3443,"src":"3376:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3440,"name":"uint64","nodeType":"ElementaryTypeName","src":"3376:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3355:36:25"},"scope":3509,"src":"3311:81:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3444,"nodeType":"StructuredDocumentation","src":"3398:154:25","text":" @notice Retrieves the address of the token associated with the OFT.\n @return token The address of the ERC20 token implementation."},"functionSelector":"fc0c546a","id":3449,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"3566:5:25","nodeType":"FunctionDefinition","parameters":{"id":3445,"nodeType":"ParameterList","parameters":[],"src":"3571:2:25"},"returnParameters":{"id":3448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3449,"src":"3597:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3446,"name":"address","nodeType":"ElementaryTypeName","src":"3597:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3596:9:25"},"scope":3509,"src":"3557:49:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3450,"nodeType":"StructuredDocumentation","src":"3612:355:25","text":" @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n @return requiresApproval Needs approval of the underlying token implementation.\n @dev Allows things like wallet implementers to determine integration requirements,\n without understanding the underlying token implementation."},"functionSelector":"9f68b964","id":3455,"implemented":false,"kind":"function","modifiers":[],"name":"approvalRequired","nameLocation":"3981:16:25","nodeType":"FunctionDefinition","parameters":{"id":3451,"nodeType":"ParameterList","parameters":[],"src":"3997:2:25"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3455,"src":"4023:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3452,"name":"bool","nodeType":"ElementaryTypeName","src":"4023:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4022:6:25"},"scope":3509,"src":"3972:57:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3456,"nodeType":"StructuredDocumentation","src":"4035:130:25","text":" @notice Retrieves the shared decimals of the OFT.\n @return sharedDecimals The shared decimals of the OFT."},"functionSelector":"857749b0","id":3461,"implemented":false,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"4179:14:25","nodeType":"FunctionDefinition","parameters":{"id":3457,"nodeType":"ParameterList","parameters":[],"src":"4193:2:25"},"returnParameters":{"id":3460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3461,"src":"4219:5:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3458,"name":"uint8","nodeType":"ElementaryTypeName","src":"4219:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4218:7:25"},"scope":3509,"src":"4170:56:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3462,"nodeType":"StructuredDocumentation","src":"4232:339:25","text":" @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n @param _sendParam The parameters for the send operation.\n @return limit The OFT limit information.\n @return oftFeeDetails The details of OFT fees.\n @return receipt The OFT receipt information."},"functionSelector":"0d35b415","id":3478,"implemented":false,"kind":"function","modifiers":[],"name":"quoteOFT","nameLocation":"4585:8:25","nodeType":"FunctionDefinition","parameters":{"id":3466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3465,"mutability":"mutable","name":"_sendParam","nameLocation":"4622:10:25","nodeType":"VariableDeclaration","scope":3478,"src":"4603:29:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3464,"nodeType":"UserDefinedTypeName","pathNode":{"id":3463,"name":"SendParam","nameLocations":["4603:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"4603:9:25"},"referencedDeclaration":3386,"src":"4603:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"}],"src":"4593:45:25"},"returnParameters":{"id":3477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3478,"src":"4662:15:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit"},"typeName":{"id":3468,"nodeType":"UserDefinedTypeName","pathNode":{"id":3467,"name":"OFTLimit","nameLocations":["4662:8:25"],"nodeType":"IdentifierPath","referencedDeclaration":3392,"src":"4662:8:25"},"referencedDeclaration":3392,"src":"4662:8:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_storage_ptr","typeString":"struct OFTLimit"}},"visibility":"internal"},{"constant":false,"id":3473,"mutability":"mutable","name":"oftFeeDetails","nameLocation":"4701:13:25","nodeType":"VariableDeclaration","scope":3478,"src":"4679:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail[]"},"typeName":{"baseType":{"id":3471,"nodeType":"UserDefinedTypeName","pathNode":{"id":3470,"name":"OFTFeeDetail","nameLocations":["4679:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":3404,"src":"4679:12:25"},"referencedDeclaration":3404,"src":"4679:12:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$3404_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":3472,"nodeType":"ArrayTypeName","src":"4679:14:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}},"visibility":"internal"},{"constant":false,"id":3476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3478,"src":"4716:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":3475,"nodeType":"UserDefinedTypeName","pathNode":{"id":3474,"name":"OFTReceipt","nameLocations":["4716:10:25"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"4716:10:25"},"referencedDeclaration":3398,"src":"4716:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"4661:73:25"},"scope":3509,"src":"4576:159:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3479,"nodeType":"StructuredDocumentation","src":"4741:437:25","text":" @notice Provides a quote for the send() operation.\n @param _sendParam The parameters for the send() operation.\n @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n @return fee The calculated LayerZero messaging fee from the send() operation.\n @dev MessagingFee: LayerZero msg fee\n  - nativeFee: The native fee.\n  - lzTokenFee: The lzToken fee."},"functionSelector":"3b6f743b","id":3490,"implemented":false,"kind":"function","modifiers":[],"name":"quoteSend","nameLocation":"5192:9:25","nodeType":"FunctionDefinition","parameters":{"id":3485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3482,"mutability":"mutable","name":"_sendParam","nameLocation":"5221:10:25","nodeType":"VariableDeclaration","scope":3490,"src":"5202:29:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3481,"nodeType":"UserDefinedTypeName","pathNode":{"id":3480,"name":"SendParam","nameLocations":["5202:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"5202:9:25"},"referencedDeclaration":3386,"src":"5202:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3484,"mutability":"mutable","name":"_payInLzToken","nameLocation":"5238:13:25","nodeType":"VariableDeclaration","scope":3490,"src":"5233:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3483,"name":"bool","nodeType":"ElementaryTypeName","src":"5233:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5201:51:25"},"returnParameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3490,"src":"5276:19:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":3487,"nodeType":"UserDefinedTypeName","pathNode":{"id":3486,"name":"MessagingFee","nameLocations":["5276:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"5276:12:25"},"referencedDeclaration":33,"src":"5276:12:25","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"5275:21:25"},"scope":3509,"src":"5183:114:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3491,"nodeType":"StructuredDocumentation","src":"5303:727:25","text":" @notice Executes the send() operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The fee information supplied by the caller.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds from fees etc. on the src.\n @return receipt The LayerZero messaging receipt from the send() operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n  - guid: The unique identifier for the sent message.\n  - nonce: The nonce of the sent message.\n  - fee: The LayerZero fee incurred for the message."},"functionSelector":"c7c7f5b3","id":3508,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"6044:4:25","nodeType":"FunctionDefinition","parameters":{"id":3500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3494,"mutability":"mutable","name":"_sendParam","nameLocation":"6077:10:25","nodeType":"VariableDeclaration","scope":3508,"src":"6058:29:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3493,"nodeType":"UserDefinedTypeName","pathNode":{"id":3492,"name":"SendParam","nameLocations":["6058:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"6058:9:25"},"referencedDeclaration":3386,"src":"6058:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3497,"mutability":"mutable","name":"_fee","nameLocation":"6119:4:25","nodeType":"VariableDeclaration","scope":3508,"src":"6097:26:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":3496,"nodeType":"UserDefinedTypeName","pathNode":{"id":3495,"name":"MessagingFee","nameLocations":["6097:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"6097:12:25"},"referencedDeclaration":33,"src":"6097:12:25","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":3499,"mutability":"mutable","name":"_refundAddress","nameLocation":"6141:14:25","nodeType":"VariableDeclaration","scope":3508,"src":"6133:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"6133:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6048:113:25"},"returnParameters":{"id":3507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3508,"src":"6188:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":3502,"nodeType":"UserDefinedTypeName","pathNode":{"id":3501,"name":"MessagingReceipt","nameLocations":["6188:16:25"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"6188:16:25"},"referencedDeclaration":28,"src":"6188:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":3506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3508,"src":"6213:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":3505,"nodeType":"UserDefinedTypeName","pathNode":{"id":3504,"name":"OFTReceipt","nameLocations":["6213:10:25"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"6213:10:25"},"referencedDeclaration":3398,"src":"6213:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"6187:44:25"},"scope":3509,"src":"6035:197:25","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3510,"src":"1969:4265:25","usedErrors":[3407,3413],"usedEvents":[3425,3435]}],"src":"33:6202:25"},"id":25},"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol","exportedSymbols":{"OFTComposeMsgCodec":[3678]},"id":3679,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3511,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:26"},{"abstract":false,"baseContracts":[],"canonicalName":"OFTComposeMsgCodec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3678,"linearizedBaseContracts":[3678],"name":"OFTComposeMsgCodec","nameLocation":"67:18:26","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3514,"mutability":"constant","name":"NONCE_OFFSET","nameLocation":"170:12:26","nodeType":"VariableDeclaration","scope":3678,"src":"147:39:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3512,"name":"uint8","nodeType":"ElementaryTypeName","src":"147:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"38","id":3513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"185:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":3517,"mutability":"constant","name":"SRC_EID_OFFSET","nameLocation":"215:14:26","nodeType":"VariableDeclaration","scope":3678,"src":"192:42:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3515,"name":"uint8","nodeType":"ElementaryTypeName","src":"192:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3132","id":3516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"232:2:26","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"private"},{"constant":true,"id":3520,"mutability":"constant","name":"AMOUNT_LD_OFFSET","nameLocation":"263:16:26","nodeType":"VariableDeclaration","scope":3678,"src":"240:44:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3518,"name":"uint8","nodeType":"ElementaryTypeName","src":"240:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3434","id":3519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"282:2:26","typeDescriptions":{"typeIdentifier":"t_rational_44_by_1","typeString":"int_const 44"},"value":"44"},"visibility":"private"},{"constant":true,"id":3523,"mutability":"constant","name":"COMPOSE_FROM_OFFSET","nameLocation":"313:19:26","nodeType":"VariableDeclaration","scope":3678,"src":"290:47:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3521,"name":"uint8","nodeType":"ElementaryTypeName","src":"290:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3736","id":3522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"335:2:26","typeDescriptions":{"typeIdentifier":"t_rational_76_by_1","typeString":"int_const 76"},"value":"76"},"visibility":"private"},{"body":{"id":3547,"nodeType":"Block","src":"843:81:26","statements":[{"expression":{"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3537,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"853:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3540,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"877:6:26","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3541,"name":"_srcEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"885:7:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3542,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"894:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3543,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"905:11:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3538,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"860:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"864:12:26","memberName":"encodePacked","nodeType":"MemberAccess","src":"860:16:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"853:64:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3546,"nodeType":"ExpressionStatement","src":"853:64:26"}]},"documentation":{"id":3524,"nodeType":"StructuredDocumentation","src":"344:291:26","text":" @dev Encodes a OFT composed message.\n @param _nonce The nonce value.\n @param _srcEid The source endpoint ID.\n @param _amountLD The amount in local decimals.\n @param _composeMsg The composed message.\n @return _msg The encoded Composed message."},"id":3548,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"649:6:26","nodeType":"FunctionDefinition","parameters":{"id":3533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"_nonce","nameLocation":"672:6:26","nodeType":"VariableDeclaration","scope":3548,"src":"665:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3525,"name":"uint64","nodeType":"ElementaryTypeName","src":"665:6:26","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3528,"mutability":"mutable","name":"_srcEid","nameLocation":"695:7:26","nodeType":"VariableDeclaration","scope":3548,"src":"688:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3527,"name":"uint32","nodeType":"ElementaryTypeName","src":"688:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3530,"mutability":"mutable","name":"_amountLD","nameLocation":"720:9:26","nodeType":"VariableDeclaration","scope":3548,"src":"712:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3529,"name":"uint256","nodeType":"ElementaryTypeName","src":"712:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3532,"mutability":"mutable","name":"_composeMsg","nameLocation":"752:11:26","nodeType":"VariableDeclaration","scope":3548,"src":"739:24:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3531,"name":"bytes","nodeType":"ElementaryTypeName","src":"739:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"655:145:26"},"returnParameters":{"id":3536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3535,"mutability":"mutable","name":"_msg","nameLocation":"837:4:26","nodeType":"VariableDeclaration","scope":3548,"src":"824:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3534,"name":"bytes","nodeType":"ElementaryTypeName","src":"824:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"823:19:26"},"scope":3678,"src":"640:284:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3566,"nodeType":"Block","src":"1135:59:26","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3560,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"1166:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3561,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1172:12:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1166:19:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1159:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":3558,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1159:6:26","typeDescriptions":{}}},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1159:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":3557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1152:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3556,"name":"uint64","nodeType":"ElementaryTypeName","src":"1152:6:26","typeDescriptions":{}}},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1152:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3555,"id":3565,"nodeType":"Return","src":"1145:42:26"}]},"documentation":{"id":3549,"nodeType":"StructuredDocumentation","src":"930:133:26","text":" @dev Retrieves the nonce for the composed message.\n @param _msg The message.\n @return The nonce value."},"id":3567,"implemented":true,"kind":"function","modifiers":[],"name":"nonce","nameLocation":"1077:5:26","nodeType":"FunctionDefinition","parameters":{"id":3552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3551,"mutability":"mutable","name":"_msg","nameLocation":"1098:4:26","nodeType":"VariableDeclaration","scope":3567,"src":"1083:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3550,"name":"bytes","nodeType":"ElementaryTypeName","src":"1083:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1082:21:26"},"returnParameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3567,"src":"1127:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3553,"name":"uint64","nodeType":"ElementaryTypeName","src":"1127:6:26","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1126:8:26"},"scope":3678,"src":"1068:126:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3586,"nodeType":"Block","src":"1426:73:26","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3579,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"1457:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3581,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"1475:14:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1457:33:26","startExpression":{"id":3580,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1462:12:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1450:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":3577,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1450:6:26","typeDescriptions":{}}},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1450:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1443:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3575,"name":"uint32","nodeType":"ElementaryTypeName","src":"1443:6:26","typeDescriptions":{}}},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1443:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":3574,"id":3585,"nodeType":"Return","src":"1436:56:26"}]},"documentation":{"id":3568,"nodeType":"StructuredDocumentation","src":"1200:153:26","text":" @dev Retrieves the source endpoint ID for the composed message.\n @param _msg The message.\n @return The source endpoint ID."},"id":3587,"implemented":true,"kind":"function","modifiers":[],"name":"srcEid","nameLocation":"1367:6:26","nodeType":"FunctionDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3570,"mutability":"mutable","name":"_msg","nameLocation":"1389:4:26","nodeType":"VariableDeclaration","scope":3587,"src":"1374:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3569,"name":"bytes","nodeType":"ElementaryTypeName","src":"1374:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1373:21:26"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3587,"src":"1418:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3572,"name":"uint32","nodeType":"ElementaryTypeName","src":"1418:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1417:8:26"},"scope":3678,"src":"1358:141:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3606,"nodeType":"Block","src":"1747:79:26","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3599,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"1780:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3601,"name":"AMOUNT_LD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3520,"src":"1800:16:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1780:37:26","startExpression":{"id":3600,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"1785:14:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1772:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1772:7:26","typeDescriptions":{}}},"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1772:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1764:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3595,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:26","typeDescriptions":{}}},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1764:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3594,"id":3605,"nodeType":"Return","src":"1757:62:26"}]},"documentation":{"id":3588,"nodeType":"StructuredDocumentation","src":"1505:166:26","text":" @dev Retrieves the amount in local decimals from the composed message.\n @param _msg The message.\n @return The amount in local decimals."},"id":3607,"implemented":true,"kind":"function","modifiers":[],"name":"amountLD","nameLocation":"1685:8:26","nodeType":"FunctionDefinition","parameters":{"id":3591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3590,"mutability":"mutable","name":"_msg","nameLocation":"1709:4:26","nodeType":"VariableDeclaration","scope":3607,"src":"1694:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3589,"name":"bytes","nodeType":"ElementaryTypeName","src":"1694:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1693:21:26"},"returnParameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3607,"src":"1738:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3592,"name":"uint256","nodeType":"ElementaryTypeName","src":"1738:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1737:9:26"},"scope":3678,"src":"1676:150:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3623,"nodeType":"Block","src":"2063:75:26","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3617,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"2088:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3619,"name":"COMPOSE_FROM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"2110:19:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2088:42:26","startExpression":{"id":3618,"name":"AMOUNT_LD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3520,"src":"2093:16:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2080:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2080:7:26","typeDescriptions":{}}},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2080:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3614,"id":3622,"nodeType":"Return","src":"2073:58:26"}]},"documentation":{"id":3608,"nodeType":"StructuredDocumentation","src":"1832:152:26","text":" @dev Retrieves the composeFrom value from the composed message.\n @param _msg The message.\n @return The composeFrom value."},"id":3624,"implemented":true,"kind":"function","modifiers":[],"name":"composeFrom","nameLocation":"1998:11:26","nodeType":"FunctionDefinition","parameters":{"id":3611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3610,"mutability":"mutable","name":"_msg","nameLocation":"2025:4:26","nodeType":"VariableDeclaration","scope":3624,"src":"2010:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3609,"name":"bytes","nodeType":"ElementaryTypeName","src":"2010:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2009:21:26"},"returnParameters":{"id":3614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3624,"src":"2054:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2054:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2053:9:26"},"scope":3678,"src":"1989:149:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3636,"nodeType":"Block","src":"2351:50:26","statements":[{"expression":{"baseExpression":{"id":3632,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"2368:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2368:26:26","startExpression":{"id":3633,"name":"COMPOSE_FROM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"2373:19:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":3631,"id":3635,"nodeType":"Return","src":"2361:33:26"}]},"documentation":{"id":3625,"nodeType":"StructuredDocumentation","src":"2144:124:26","text":" @dev Retrieves the composed message.\n @param _msg The message.\n @return The composed message."},"id":3637,"implemented":true,"kind":"function","modifiers":[],"name":"composeMsg","nameLocation":"2282:10:26","nodeType":"FunctionDefinition","parameters":{"id":3628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3627,"mutability":"mutable","name":"_msg","nameLocation":"2308:4:26","nodeType":"VariableDeclaration","scope":3637,"src":"2293:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3626,"name":"bytes","nodeType":"ElementaryTypeName","src":"2293:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2292:21:26"},"returnParameters":{"id":3631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3637,"src":"2337:12:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3629,"name":"bytes","nodeType":"ElementaryTypeName","src":"2337:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2336:14:26"},"scope":3678,"src":"2273:128:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3656,"nodeType":"Block","src":"2642:56:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3651,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3640,"src":"2683:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2675:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3649,"name":"uint160","nodeType":"ElementaryTypeName","src":"2675:7:26","typeDescriptions":{}}},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2667:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2667:7:26","typeDescriptions":{}}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2667:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2659:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2659:7:26","typeDescriptions":{}}},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2659:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3644,"id":3655,"nodeType":"Return","src":"2652:39:26"}]},"documentation":{"id":3638,"nodeType":"StructuredDocumentation","src":"2407:157:26","text":" @dev Converts an address to bytes32.\n @param _addr The address to convert.\n @return The bytes32 representation of the address."},"id":3657,"implemented":true,"kind":"function","modifiers":[],"name":"addressToBytes32","nameLocation":"2578:16:26","nodeType":"FunctionDefinition","parameters":{"id":3641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3640,"mutability":"mutable","name":"_addr","nameLocation":"2603:5:26","nodeType":"VariableDeclaration","scope":3657,"src":"2595:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3639,"name":"address","nodeType":"ElementaryTypeName","src":"2595:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2594:15:26"},"returnParameters":{"id":3644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3657,"src":"2633:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2633:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2632:9:26"},"scope":3678,"src":"2569:129:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3676,"nodeType":"Block","src":"2935:53:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3671,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"2976:2:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2968:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3669,"name":"uint256","nodeType":"ElementaryTypeName","src":"2968:7:26","typeDescriptions":{}}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:11:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2960:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3667,"name":"uint160","nodeType":"ElementaryTypeName","src":"2960:7:26","typeDescriptions":{}}},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2952:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3665,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:26","typeDescriptions":{}}},"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3664,"id":3675,"nodeType":"Return","src":"2945:36:26"}]},"documentation":{"id":3658,"nodeType":"StructuredDocumentation","src":"2704:156:26","text":" @dev Converts bytes32 to an address.\n @param _b The bytes32 value to convert.\n @return The address representation of bytes32."},"id":3677,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToAddress","nameLocation":"2874:16:26","nodeType":"FunctionDefinition","parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3660,"mutability":"mutable","name":"_b","nameLocation":"2899:2:26","nodeType":"VariableDeclaration","scope":3677,"src":"2891:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2891:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2890:12:26"},"returnParameters":{"id":3664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3677,"src":"2926:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3662,"name":"address","nodeType":"ElementaryTypeName","src":"2926:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2925:9:26"},"scope":3678,"src":"2865:123:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3679,"src":"59:2931:26","usedErrors":[],"usedEvents":[]}],"src":"33:2958:26"},"id":26},"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol","exportedSymbols":{"OFTMsgCodec":[3832]},"id":3833,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3680,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:27"},{"abstract":false,"baseContracts":[],"canonicalName":"OFTMsgCodec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3832,"linearizedBaseContracts":[3832],"name":"OFTMsgCodec","nameLocation":"67:11:27","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3683,"mutability":"constant","name":"SEND_TO_OFFSET","nameLocation":"171:14:27","nodeType":"VariableDeclaration","scope":3832,"src":"148:42:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3681,"name":"uint8","nodeType":"ElementaryTypeName","src":"148:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3332","id":3682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"188:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"private"},{"constant":true,"id":3686,"mutability":"constant","name":"SEND_AMOUNT_SD_OFFSET","nameLocation":"219:21:27","nodeType":"VariableDeclaration","scope":3832,"src":"196:49:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3684,"name":"uint8","nodeType":"ElementaryTypeName","src":"196:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3430","id":3685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"243:2:27","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"visibility":"private"},{"body":{"id":3727,"nodeType":"Block","src":"768:336:27","statements":[{"expression":{"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3700,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"778:10:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3701,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3693,"src":"791:11:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"803:6:27","memberName":"length","nodeType":"MemberAccess","src":"791:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"812:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"791:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"778:35:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3706,"nodeType":"ExpressionStatement","src":"778:35:27"},{"expression":{"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3707,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3696,"src":"927:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":3708,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"934:10:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":3721,"name":"_sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3689,"src":"1074:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3722,"name":"_amountShared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3691,"src":"1083:13:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":3719,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1057:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1061:12:27","memberName":"encodePacked","nodeType":"MemberAccess","src":"1057:16:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1057:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"934:163:27","trueExpression":{"arguments":[{"id":3711,"name":"_sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3689,"src":"976:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3712,"name":"_amountShared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3691,"src":"985:13:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[{"expression":{"id":3714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1017:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1021:6:27","memberName":"sender","nodeType":"MemberAccess","src":"1017:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3713,"name":"addressToBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"1000:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1000:28:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3717,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3693,"src":"1030:11:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3709,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"959:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"963:12:27","memberName":"encodePacked","nodeType":"MemberAccess","src":"959:16:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:83:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"927:170:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3726,"nodeType":"ExpressionStatement","src":"927:170:27"}]},"documentation":{"id":3687,"nodeType":"StructuredDocumentation","src":"252:341:27","text":" @dev Encodes an OFT LayerZero message.\n @param _sendTo The recipient address.\n @param _amountShared The amount in shared decimals.\n @param _composeMsg The composed message.\n @return _msg The encoded message.\n @return hasCompose A boolean indicating whether the message has a composed payload."},"id":3728,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"607:6:27","nodeType":"FunctionDefinition","parameters":{"id":3694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3689,"mutability":"mutable","name":"_sendTo","nameLocation":"631:7:27","nodeType":"VariableDeclaration","scope":3728,"src":"623:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3688,"name":"bytes32","nodeType":"ElementaryTypeName","src":"623:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3691,"mutability":"mutable","name":"_amountShared","nameLocation":"655:13:27","nodeType":"VariableDeclaration","scope":3728,"src":"648:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3690,"name":"uint64","nodeType":"ElementaryTypeName","src":"648:6:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3693,"mutability":"mutable","name":"_composeMsg","nameLocation":"691:11:27","nodeType":"VariableDeclaration","scope":3728,"src":"678:24:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3692,"name":"bytes","nodeType":"ElementaryTypeName","src":"678:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"613:95:27"},"returnParameters":{"id":3699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3696,"mutability":"mutable","name":"_msg","nameLocation":"745:4:27","nodeType":"VariableDeclaration","scope":3728,"src":"732:17:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3695,"name":"bytes","nodeType":"ElementaryTypeName","src":"732:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3698,"mutability":"mutable","name":"hasCompose","nameLocation":"756:10:27","nodeType":"VariableDeclaration","scope":3728,"src":"751:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3697,"name":"bool","nodeType":"ElementaryTypeName","src":"751:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"731:36:27"},"scope":3832,"src":"598:506:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3741,"nodeType":"Block","src":"1352:59:27","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3736,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"1369:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1374:6:27","memberName":"length","nodeType":"MemberAccess","src":"1369:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3738,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"1383:21:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1369:35:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3735,"id":3740,"nodeType":"Return","src":"1362:42:27"}]},"documentation":{"id":3729,"nodeType":"StructuredDocumentation","src":"1110:167:27","text":" @dev Checks if the OFT message is composed.\n @param _msg The OFT message.\n @return A boolean indicating whether the message is composed."},"id":3742,"implemented":true,"kind":"function","modifiers":[],"name":"isComposed","nameLocation":"1291:10:27","nodeType":"FunctionDefinition","parameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3731,"mutability":"mutable","name":"_msg","nameLocation":"1317:4:27","nodeType":"VariableDeclaration","scope":3742,"src":"1302:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3730,"name":"bytes","nodeType":"ElementaryTypeName","src":"1302:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1301:21:27"},"returnParameters":{"id":3735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3742,"src":"1346:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3733,"name":"bool","nodeType":"ElementaryTypeName","src":"1346:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1345:6:27"},"scope":3832,"src":"1282:129:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3757,"nodeType":"Block","src":"1642:54:27","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3752,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3745,"src":"1667:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3753,"name":"SEND_TO_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"1673:14:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1667:21:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1659:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1659:7:27","typeDescriptions":{}}},"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1659:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3749,"id":3756,"nodeType":"Return","src":"1652:37:27"}]},"documentation":{"id":3743,"nodeType":"StructuredDocumentation","src":"1417:151:27","text":" @dev Retrieves the recipient address from the OFT message.\n @param _msg The OFT message.\n @return The recipient address."},"id":3758,"implemented":true,"kind":"function","modifiers":[],"name":"sendTo","nameLocation":"1582:6:27","nodeType":"FunctionDefinition","parameters":{"id":3746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"mutability":"mutable","name":"_msg","nameLocation":"1604:4:27","nodeType":"VariableDeclaration","scope":3758,"src":"1589:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3744,"name":"bytes","nodeType":"ElementaryTypeName","src":"1589:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1588:21:27"},"returnParameters":{"id":3749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3758,"src":"1633:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3747,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1633:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1632:9:27"},"scope":3832,"src":"1573:123:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3777,"nodeType":"Block","src":"1944:82:27","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3770,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1975:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3772,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"1995:21:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1975:42:27","startExpression":{"id":3771,"name":"SEND_TO_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"1980:14:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1968:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":3768,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1968:6:27","typeDescriptions":{}}},"id":3774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1968:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":3767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1961:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3766,"name":"uint64","nodeType":"ElementaryTypeName","src":"1961:6:27","typeDescriptions":{}}},"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1961:58:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3765,"id":3776,"nodeType":"Return","src":"1954:65:27"}]},"documentation":{"id":3759,"nodeType":"StructuredDocumentation","src":"1702:167:27","text":" @dev Retrieves the amount in shared decimals from the OFT message.\n @param _msg The OFT message.\n @return The amount in shared decimals."},"id":3778,"implemented":true,"kind":"function","modifiers":[],"name":"amountSD","nameLocation":"1883:8:27","nodeType":"FunctionDefinition","parameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"_msg","nameLocation":"1907:4:27","nodeType":"VariableDeclaration","scope":3778,"src":"1892:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3760,"name":"bytes","nodeType":"ElementaryTypeName","src":"1892:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1891:21:27"},"returnParameters":{"id":3765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3778,"src":"1936:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3763,"name":"uint64","nodeType":"ElementaryTypeName","src":"1936:6:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1935:8:27"},"scope":3832,"src":"1874:152:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3790,"nodeType":"Block","src":"2264:52:27","statements":[{"expression":{"baseExpression":{"id":3786,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"2281:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2281:28:27","startExpression":{"id":3787,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"2286:21:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":3785,"id":3789,"nodeType":"Return","src":"2274:35:27"}]},"documentation":{"id":3779,"nodeType":"StructuredDocumentation","src":"2032:149:27","text":" @dev Retrieves the composed message from the OFT message.\n @param _msg The OFT message.\n @return The composed message."},"id":3791,"implemented":true,"kind":"function","modifiers":[],"name":"composeMsg","nameLocation":"2195:10:27","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3781,"mutability":"mutable","name":"_msg","nameLocation":"2221:4:27","nodeType":"VariableDeclaration","scope":3791,"src":"2206:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3780,"name":"bytes","nodeType":"ElementaryTypeName","src":"2206:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2205:21:27"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3791,"src":"2250:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3783,"name":"bytes","nodeType":"ElementaryTypeName","src":"2250:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2249:14:27"},"scope":3832,"src":"2186:130:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3810,"nodeType":"Block","src":"2557:56:27","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3805,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"2598:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2590:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3803,"name":"uint160","nodeType":"ElementaryTypeName","src":"2590:7:27","typeDescriptions":{}}},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2582:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3801,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:27","typeDescriptions":{}}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2582:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2574:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2574:7:27","typeDescriptions":{}}},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2574:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3798,"id":3809,"nodeType":"Return","src":"2567:39:27"}]},"documentation":{"id":3792,"nodeType":"StructuredDocumentation","src":"2322:157:27","text":" @dev Converts an address to bytes32.\n @param _addr The address to convert.\n @return The bytes32 representation of the address."},"id":3811,"implemented":true,"kind":"function","modifiers":[],"name":"addressToBytes32","nameLocation":"2493:16:27","nodeType":"FunctionDefinition","parameters":{"id":3795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3794,"mutability":"mutable","name":"_addr","nameLocation":"2518:5:27","nodeType":"VariableDeclaration","scope":3811,"src":"2510:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3793,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2509:15:27"},"returnParameters":{"id":3798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3811,"src":"2548:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3796,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2548:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2547:9:27"},"scope":3832,"src":"2484:129:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3830,"nodeType":"Block","src":"2850:53:27","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3825,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2891:2:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2883:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2883:7:27","typeDescriptions":{}}},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2883:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2875:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3821,"name":"uint160","nodeType":"ElementaryTypeName","src":"2875:7:27","typeDescriptions":{}}},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2875:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2867:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3819,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:27","typeDescriptions":{}}},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2867:29:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3818,"id":3829,"nodeType":"Return","src":"2860:36:27"}]},"documentation":{"id":3812,"nodeType":"StructuredDocumentation","src":"2619:156:27","text":" @dev Converts bytes32 to an address.\n @param _b The bytes32 value to convert.\n @return The address representation of bytes32."},"id":3831,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToAddress","nameLocation":"2789:16:27","nodeType":"FunctionDefinition","parameters":{"id":3815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3814,"mutability":"mutable","name":"_b","nameLocation":"2814:2:27","nodeType":"VariableDeclaration","scope":3831,"src":"2806:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3813,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2806:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2805:12:27"},"returnParameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3831,"src":"2841:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3816,"name":"address","nodeType":"ElementaryTypeName","src":"2841:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2840:9:27"},"scope":3832,"src":"2780:123:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3833,"src":"59:2846:27","usedErrors":[],"usedEvents":[]}],"src":"33:2873:27"},"id":27},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[5320],"Ownable":[3980]},"id":3981,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3834,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:28"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":3836,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3981,"sourceUnit":5321,"src":"128:45:28","symbolAliases":[{"foreign":{"id":3835,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"136:7:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3838,"name":"Context","nameLocations":["692:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":5320,"src":"692:7:28"},"id":3839,"nodeType":"InheritanceSpecifier","src":"692:7:28"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3837,"nodeType":"StructuredDocumentation","src":"175:487:28","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":3980,"linearizedBaseContracts":[3980,5320],"name":"Ownable","nameLocation":"681:7:28","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3841,"mutability":"mutable","name":"_owner","nameLocation":"722:6:28","nodeType":"VariableDeclaration","scope":3980,"src":"706:22:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3840,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":3842,"nodeType":"StructuredDocumentation","src":"735:85:28","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":3846,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:28","nodeType":"ErrorDefinition","parameters":{"id":3845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3844,"mutability":"mutable","name":"account","nameLocation":"866:7:28","nodeType":"VariableDeclaration","scope":3846,"src":"858:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:28"},"src":"825:50:28"},{"documentation":{"id":3847,"nodeType":"StructuredDocumentation","src":"881:82:28","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":3851,"name":"OwnableInvalidOwner","nameLocation":"974:19:28","nodeType":"ErrorDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"mutability":"mutable","name":"owner","nameLocation":"1002:5:28","nodeType":"VariableDeclaration","scope":3851,"src":"994:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3848,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:28"},"src":"968:41:28"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":3857,"name":"OwnershipTransferred","nameLocation":"1021:20:28","nodeType":"EventDefinition","parameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3853,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:28","nodeType":"VariableDeclaration","scope":3857,"src":"1042:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3852,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3855,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:28","nodeType":"VariableDeclaration","scope":3857,"src":"1073:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3854,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:28"},"src":"1015:84:28"},{"body":{"id":3882,"nodeType":"Block","src":"1259:153:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3863,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3860,"src":"1273:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3864,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:28","typeDescriptions":{}}},"id":3867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3877,"nodeType":"IfStatement","src":"1269:95:28","trueBody":{"id":3876,"nodeType":"Block","src":"1301:63:28","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3870,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:28","typeDescriptions":{}}},"id":3873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3869,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"1322:19:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3875,"nodeType":"RevertStatement","src":"1315:38:28"}]}},{"expression":{"arguments":[{"id":3879,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3860,"src":"1392:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3878,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"1373:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3881,"nodeType":"ExpressionStatement","src":"1373:32:28"}]},"documentation":{"id":3858,"nodeType":"StructuredDocumentation","src":"1105:115:28","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":3883,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3860,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:28","nodeType":"VariableDeclaration","scope":3883,"src":"1237:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3859,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:28"},"returnParameters":{"id":3862,"nodeType":"ParameterList","parameters":[],"src":"1259:0:28"},"scope":3980,"src":"1225:187:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3890,"nodeType":"Block","src":"1521:41:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3886,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"1531:11:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3888,"nodeType":"ExpressionStatement","src":"1531:13:28"},{"id":3889,"nodeType":"PlaceholderStatement","src":"1554:1:28"}]},"documentation":{"id":3884,"nodeType":"StructuredDocumentation","src":"1418:77:28","text":" @dev Throws if called by any account other than the owner."},"id":3891,"name":"onlyOwner","nameLocation":"1509:9:28","nodeType":"ModifierDefinition","parameters":{"id":3885,"nodeType":"ParameterList","parameters":[],"src":"1518:2:28"},"src":"1500:62:28","virtual":false,"visibility":"internal"},{"body":{"id":3899,"nodeType":"Block","src":"1693:30:28","statements":[{"expression":{"id":3897,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"1710:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3896,"id":3898,"nodeType":"Return","src":"1703:13:28"}]},"documentation":{"id":3892,"nodeType":"StructuredDocumentation","src":"1568:65:28","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":3900,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:28","nodeType":"FunctionDefinition","parameters":{"id":3893,"nodeType":"ParameterList","parameters":[],"src":"1652:2:28"},"returnParameters":{"id":3896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3895,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3900,"src":"1684:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3894,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:28"},"scope":3980,"src":"1638:85:28","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3916,"nodeType":"Block","src":"1841:117:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3904,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3900,"src":"1855:5:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3906,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"1866:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3915,"nodeType":"IfStatement","src":"1851:101:28","trueBody":{"id":3914,"nodeType":"Block","src":"1880:72:28","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3910,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"1928:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3909,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"1901:26:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3913,"nodeType":"RevertStatement","src":"1894:47:28"}]}}]},"documentation":{"id":3901,"nodeType":"StructuredDocumentation","src":"1729:62:28","text":" @dev Throws if the sender is not the owner."},"id":3917,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:28","nodeType":"FunctionDefinition","parameters":{"id":3902,"nodeType":"ParameterList","parameters":[],"src":"1816:2:28"},"returnParameters":{"id":3903,"nodeType":"ParameterList","parameters":[],"src":"1841:0:28"},"scope":3980,"src":"1796:162:28","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3930,"nodeType":"Block","src":"2347:47:28","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":3926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3924,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:28","typeDescriptions":{}}},"id":3927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3923,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"2357:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3929,"nodeType":"ExpressionStatement","src":"2357:30:28"}]},"documentation":{"id":3918,"nodeType":"StructuredDocumentation","src":"1964:324:28","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":3931,"implemented":true,"kind":"function","modifiers":[{"id":3921,"kind":"modifierInvocation","modifierName":{"id":3920,"name":"onlyOwner","nameLocations":["2337:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"2337:9:28"},"nodeType":"ModifierInvocation","src":"2337:9:28"}],"name":"renounceOwnership","nameLocation":"2302:17:28","nodeType":"FunctionDefinition","parameters":{"id":3919,"nodeType":"ParameterList","parameters":[],"src":"2319:2:28"},"returnParameters":{"id":3922,"nodeType":"ParameterList","parameters":[],"src":"2347:0:28"},"scope":3980,"src":"2293:101:28","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3958,"nodeType":"Block","src":"2613:145:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3939,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"2627:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3940,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:28","typeDescriptions":{}}},"id":3943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3953,"nodeType":"IfStatement","src":"2623:91:28","trueBody":{"id":3952,"nodeType":"Block","src":"2651:63:28","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3946,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:28","typeDescriptions":{}}},"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3945,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"2672:19:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3951,"nodeType":"RevertStatement","src":"2665:38:28"}]}},{"expression":{"arguments":[{"id":3955,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"2742:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3954,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"2723:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3957,"nodeType":"ExpressionStatement","src":"2723:28:28"}]},"documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"2400:138:28","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":3959,"implemented":true,"kind":"function","modifiers":[{"id":3937,"kind":"modifierInvocation","modifierName":{"id":3936,"name":"onlyOwner","nameLocations":["2603:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"2603:9:28"},"nodeType":"ModifierInvocation","src":"2603:9:28"}],"name":"transferOwnership","nameLocation":"2552:17:28","nodeType":"FunctionDefinition","parameters":{"id":3935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:28","nodeType":"VariableDeclaration","scope":3959,"src":"2570:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3933,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:28"},"returnParameters":{"id":3938,"nodeType":"ParameterList","parameters":[],"src":"2613:0:28"},"scope":3980,"src":"2543:215:28","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3978,"nodeType":"Block","src":"2975:124:28","statements":[{"assignments":[3966],"declarations":[{"constant":false,"id":3966,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:28","nodeType":"VariableDeclaration","scope":3978,"src":"2985:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3965,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3968,"initialValue":{"id":3967,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"3004:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:28"},{"expression":{"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3969,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"3020:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3970,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"3029:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3972,"nodeType":"ExpressionStatement","src":"3020:17:28"},{"eventCall":{"arguments":[{"id":3974,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3966,"src":"3073:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3975,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"3083:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3973,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3857,"src":"3052:20:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3977,"nodeType":"EmitStatement","src":"3047:45:28"}]},"documentation":{"id":3960,"nodeType":"StructuredDocumentation","src":"2764:143:28","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":3979,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:28","nodeType":"FunctionDefinition","parameters":{"id":3963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3962,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:28","nodeType":"VariableDeclaration","scope":3979,"src":"2940:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3961,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:28"},"returnParameters":{"id":3964,"nodeType":"ParameterList","parameters":[],"src":"2975:0:28"},"scope":3980,"src":"2912:187:28","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3981,"src":"663:2438:28","usedErrors":[3846,3851],"usedEvents":[3857]}],"src":"102:3000:28"},"id":28},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","exportedSymbols":{"IERC1363":[4062],"IERC165":[5332],"IERC20":[4800]},"id":4063,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3982,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:29"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","id":3984,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4063,"sourceUnit":4071,"src":"133:36:29","symbolAliases":[{"foreign":{"id":3983,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"141:6:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","id":3986,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4063,"sourceUnit":4067,"src":"170:38:29","symbolAliases":[{"foreign":{"id":3985,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5332,"src":"178:7:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3988,"name":"IERC20","nameLocations":["590:6:29"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"590:6:29"},"id":3989,"nodeType":"InheritanceSpecifier","src":"590:6:29"},{"baseName":{"id":3990,"name":"IERC165","nameLocations":["598:7:29"],"nodeType":"IdentifierPath","referencedDeclaration":5332,"src":"598:7:29"},"id":3991,"nodeType":"InheritanceSpecifier","src":"598:7:29"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":3987,"nodeType":"StructuredDocumentation","src":"210:357:29","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"id":4062,"linearizedBaseContracts":[4062,5332,4800],"name":"IERC1363","nameLocation":"578:8:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3992,"nodeType":"StructuredDocumentation","src":"1148:370:29","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","id":4001,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:29","nodeType":"FunctionDefinition","parameters":{"id":3997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"mutability":"mutable","name":"to","nameLocation":"1556:2:29","nodeType":"VariableDeclaration","scope":4001,"src":"1548:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3993,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3996,"mutability":"mutable","name":"value","nameLocation":"1568:5:29","nodeType":"VariableDeclaration","scope":4001,"src":"1560:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3995,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:29"},"returnParameters":{"id":4000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3999,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4001,"src":"1593:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3998,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:29"},"scope":4062,"src":"1523:76:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4002,"nodeType":"StructuredDocumentation","src":"1605:453:29","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","id":4013,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:29","nodeType":"FunctionDefinition","parameters":{"id":4009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4004,"mutability":"mutable","name":"to","nameLocation":"2096:2:29","nodeType":"VariableDeclaration","scope":4013,"src":"2088:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4003,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4006,"mutability":"mutable","name":"value","nameLocation":"2108:5:29","nodeType":"VariableDeclaration","scope":4013,"src":"2100:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4005,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4008,"mutability":"mutable","name":"data","nameLocation":"2130:4:29","nodeType":"VariableDeclaration","scope":4013,"src":"2115:19:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4007,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:29"},"returnParameters":{"id":4012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4013,"src":"2154:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4010,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:29"},"scope":4062,"src":"2063:97:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4014,"nodeType":"StructuredDocumentation","src":"2166:453:29","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","id":4025,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:29","nodeType":"FunctionDefinition","parameters":{"id":4021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4016,"mutability":"mutable","name":"from","nameLocation":"2661:4:29","nodeType":"VariableDeclaration","scope":4025,"src":"2653:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4015,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4018,"mutability":"mutable","name":"to","nameLocation":"2675:2:29","nodeType":"VariableDeclaration","scope":4025,"src":"2667:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4017,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4020,"mutability":"mutable","name":"value","nameLocation":"2687:5:29","nodeType":"VariableDeclaration","scope":4025,"src":"2679:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4019,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:29"},"returnParameters":{"id":4024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4025,"src":"2712:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4022,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:29"},"scope":4062,"src":"2624:94:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4026,"nodeType":"StructuredDocumentation","src":"2724:536:29","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","id":4039,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:29","nodeType":"FunctionDefinition","parameters":{"id":4035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4028,"mutability":"mutable","name":"from","nameLocation":"3302:4:29","nodeType":"VariableDeclaration","scope":4039,"src":"3294:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4027,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4030,"mutability":"mutable","name":"to","nameLocation":"3316:2:29","nodeType":"VariableDeclaration","scope":4039,"src":"3308:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4029,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4032,"mutability":"mutable","name":"value","nameLocation":"3328:5:29","nodeType":"VariableDeclaration","scope":4039,"src":"3320:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4031,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4034,"mutability":"mutable","name":"data","nameLocation":"3350:4:29","nodeType":"VariableDeclaration","scope":4039,"src":"3335:19:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4033,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:29"},"returnParameters":{"id":4038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4039,"src":"3374:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4036,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:29"},"scope":4062,"src":"3265:115:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4040,"nodeType":"StructuredDocumentation","src":"3386:390:29","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","id":4049,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:29","nodeType":"FunctionDefinition","parameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4042,"mutability":"mutable","name":"spender","nameLocation":"3813:7:29","nodeType":"VariableDeclaration","scope":4049,"src":"3805:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4041,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4044,"mutability":"mutable","name":"value","nameLocation":"3830:5:29","nodeType":"VariableDeclaration","scope":4049,"src":"3822:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4043,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:29"},"returnParameters":{"id":4048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4047,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4049,"src":"3855:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4046,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:29"},"scope":4062,"src":"3781:80:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4050,"nodeType":"StructuredDocumentation","src":"3867:478:29","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","id":4061,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:29","nodeType":"FunctionDefinition","parameters":{"id":4057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4052,"mutability":"mutable","name":"spender","nameLocation":"4382:7:29","nodeType":"VariableDeclaration","scope":4061,"src":"4374:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4051,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4054,"mutability":"mutable","name":"value","nameLocation":"4399:5:29","nodeType":"VariableDeclaration","scope":4061,"src":"4391:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4053,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4056,"mutability":"mutable","name":"data","nameLocation":"4421:4:29","nodeType":"VariableDeclaration","scope":4061,"src":"4406:19:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4055,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:29"},"returnParameters":{"id":4060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4061,"src":"4445:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4058,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:29"},"scope":4062,"src":"4350:101:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4063,"src":"568:3885:29","usedErrors":[],"usedEvents":[4734,4743]}],"src":"107:4347:29"},"id":29},"@openzeppelin/contracts/interfaces/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[5332]},"id":4067,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4064,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:30"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":4066,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4067,"sourceUnit":5333,"src":"132:59:30","symbolAliases":[{"foreign":{"id":4065,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5332,"src":"140:7:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:86:30"},"id":30},"@openzeppelin/contracts/interfaces/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[4800]},"id":4071,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4068,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:31"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":4070,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4071,"sourceUnit":4801,"src":"131:49:31","symbolAliases":[{"foreign":{"id":4069,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"139:6:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"105:76:31"},"id":31},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[4207],"IERC20Errors":[4112],"IERC721Errors":[4160]},"id":4208,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4072,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:32"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4073,"nodeType":"StructuredDocumentation","src":"138:141:32","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":4112,"linearizedBaseContracts":[4112],"name":"IERC20Errors","nameLocation":"290:12:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4074,"nodeType":"StructuredDocumentation","src":"309:309:32","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":4082,"name":"ERC20InsufficientBalance","nameLocation":"629:24:32","nodeType":"ErrorDefinition","parameters":{"id":4081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4076,"mutability":"mutable","name":"sender","nameLocation":"662:6:32","nodeType":"VariableDeclaration","scope":4082,"src":"654:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4075,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4078,"mutability":"mutable","name":"balance","nameLocation":"678:7:32","nodeType":"VariableDeclaration","scope":4082,"src":"670:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4077,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4080,"mutability":"mutable","name":"needed","nameLocation":"695:6:32","nodeType":"VariableDeclaration","scope":4082,"src":"687:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4079,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:32"},"src":"623:80:32"},{"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"709:152:32","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":4087,"name":"ERC20InvalidSender","nameLocation":"872:18:32","nodeType":"ErrorDefinition","parameters":{"id":4086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"sender","nameLocation":"899:6:32","nodeType":"VariableDeclaration","scope":4087,"src":"891:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4084,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:32"},"src":"866:41:32"},{"documentation":{"id":4088,"nodeType":"StructuredDocumentation","src":"913:159:32","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":4092,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:32","nodeType":"ErrorDefinition","parameters":{"id":4091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:32","nodeType":"VariableDeclaration","scope":4092,"src":"1104:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4089,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:32"},"src":"1077:45:32"},{"documentation":{"id":4093,"nodeType":"StructuredDocumentation","src":"1128:345:32","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":4101,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:32","nodeType":"ErrorDefinition","parameters":{"id":4100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4095,"mutability":"mutable","name":"spender","nameLocation":"1519:7:32","nodeType":"VariableDeclaration","scope":4101,"src":"1511:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4094,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4097,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:32","nodeType":"VariableDeclaration","scope":4101,"src":"1528:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4096,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4099,"mutability":"mutable","name":"needed","nameLocation":"1555:6:32","nodeType":"VariableDeclaration","scope":4101,"src":"1547:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:32"},"src":"1478:85:32"},{"documentation":{"id":4102,"nodeType":"StructuredDocumentation","src":"1569:174:32","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":4106,"name":"ERC20InvalidApprover","nameLocation":"1754:20:32","nodeType":"ErrorDefinition","parameters":{"id":4105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4104,"mutability":"mutable","name":"approver","nameLocation":"1783:8:32","nodeType":"VariableDeclaration","scope":4106,"src":"1775:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4103,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:32"},"src":"1748:45:32"},{"documentation":{"id":4107,"nodeType":"StructuredDocumentation","src":"1799:195:32","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":4111,"name":"ERC20InvalidSpender","nameLocation":"2005:19:32","nodeType":"ErrorDefinition","parameters":{"id":4110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"spender","nameLocation":"2033:7:32","nodeType":"VariableDeclaration","scope":4111,"src":"2025:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4108,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:32"},"src":"1999:43:32"}],"scope":4208,"src":"280:1764:32","usedErrors":[4082,4087,4092,4101,4106,4111],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4113,"nodeType":"StructuredDocumentation","src":"2046:143:32","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":4160,"linearizedBaseContracts":[4160],"name":"IERC721Errors","nameLocation":"2200:13:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4114,"nodeType":"StructuredDocumentation","src":"2220:219:32","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":4118,"name":"ERC721InvalidOwner","nameLocation":"2450:18:32","nodeType":"ErrorDefinition","parameters":{"id":4117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4116,"mutability":"mutable","name":"owner","nameLocation":"2477:5:32","nodeType":"VariableDeclaration","scope":4118,"src":"2469:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4115,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:32"},"src":"2444:40:32"},{"documentation":{"id":4119,"nodeType":"StructuredDocumentation","src":"2490:132:32","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":4123,"name":"ERC721NonexistentToken","nameLocation":"2633:22:32","nodeType":"ErrorDefinition","parameters":{"id":4122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4121,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:32","nodeType":"VariableDeclaration","scope":4123,"src":"2656:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4120,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:32"},"src":"2627:46:32"},{"documentation":{"id":4124,"nodeType":"StructuredDocumentation","src":"2679:289:32","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":4132,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:32","nodeType":"ErrorDefinition","parameters":{"id":4131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4126,"mutability":"mutable","name":"sender","nameLocation":"3008:6:32","nodeType":"VariableDeclaration","scope":4132,"src":"3000:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4125,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4128,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:32","nodeType":"VariableDeclaration","scope":4132,"src":"3016:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4127,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4130,"mutability":"mutable","name":"owner","nameLocation":"3041:5:32","nodeType":"VariableDeclaration","scope":4132,"src":"3033:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4129,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:32"},"src":"2973:75:32"},{"documentation":{"id":4133,"nodeType":"StructuredDocumentation","src":"3054:152:32","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":4137,"name":"ERC721InvalidSender","nameLocation":"3217:19:32","nodeType":"ErrorDefinition","parameters":{"id":4136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4135,"mutability":"mutable","name":"sender","nameLocation":"3245:6:32","nodeType":"VariableDeclaration","scope":4137,"src":"3237:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4134,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:32"},"src":"3211:42:32"},{"documentation":{"id":4138,"nodeType":"StructuredDocumentation","src":"3259:159:32","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":4142,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:32","nodeType":"ErrorDefinition","parameters":{"id":4141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4140,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:32","nodeType":"VariableDeclaration","scope":4142,"src":"3451:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4139,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:32"},"src":"3423:46:32"},{"documentation":{"id":4143,"nodeType":"StructuredDocumentation","src":"3475:247:32","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":4149,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:32","nodeType":"ErrorDefinition","parameters":{"id":4148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4145,"mutability":"mutable","name":"operator","nameLocation":"3768:8:32","nodeType":"VariableDeclaration","scope":4149,"src":"3760:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4144,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4147,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:32","nodeType":"VariableDeclaration","scope":4149,"src":"3778:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4146,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:32"},"src":"3727:68:32"},{"documentation":{"id":4150,"nodeType":"StructuredDocumentation","src":"3801:174:32","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":4154,"name":"ERC721InvalidApprover","nameLocation":"3986:21:32","nodeType":"ErrorDefinition","parameters":{"id":4153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4152,"mutability":"mutable","name":"approver","nameLocation":"4016:8:32","nodeType":"VariableDeclaration","scope":4154,"src":"4008:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4151,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:32"},"src":"3980:46:32"},{"documentation":{"id":4155,"nodeType":"StructuredDocumentation","src":"4032:197:32","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":4159,"name":"ERC721InvalidOperator","nameLocation":"4240:21:32","nodeType":"ErrorDefinition","parameters":{"id":4158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4157,"mutability":"mutable","name":"operator","nameLocation":"4270:8:32","nodeType":"VariableDeclaration","scope":4159,"src":"4262:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4156,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:32"},"src":"4234:46:32"}],"scope":4208,"src":"2190:2092:32","usedErrors":[4118,4123,4132,4137,4142,4149,4154,4159],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4161,"nodeType":"StructuredDocumentation","src":"4284:145:32","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":4207,"linearizedBaseContracts":[4207],"name":"IERC1155Errors","nameLocation":"4440:14:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4162,"nodeType":"StructuredDocumentation","src":"4461:361:32","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":4172,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:32","nodeType":"ErrorDefinition","parameters":{"id":4171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4164,"mutability":"mutable","name":"sender","nameLocation":"4868:6:32","nodeType":"VariableDeclaration","scope":4172,"src":"4860:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4163,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4166,"mutability":"mutable","name":"balance","nameLocation":"4884:7:32","nodeType":"VariableDeclaration","scope":4172,"src":"4876:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4165,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4168,"mutability":"mutable","name":"needed","nameLocation":"4901:6:32","nodeType":"VariableDeclaration","scope":4172,"src":"4893:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4167,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4170,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:32","nodeType":"VariableDeclaration","scope":4172,"src":"4909:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4169,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:32"},"src":"4827:99:32"},{"documentation":{"id":4173,"nodeType":"StructuredDocumentation","src":"4932:152:32","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":4177,"name":"ERC1155InvalidSender","nameLocation":"5095:20:32","nodeType":"ErrorDefinition","parameters":{"id":4176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4175,"mutability":"mutable","name":"sender","nameLocation":"5124:6:32","nodeType":"VariableDeclaration","scope":4177,"src":"5116:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4174,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:32"},"src":"5089:43:32"},{"documentation":{"id":4178,"nodeType":"StructuredDocumentation","src":"5138:159:32","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":4182,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:32","nodeType":"ErrorDefinition","parameters":{"id":4181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4180,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:32","nodeType":"VariableDeclaration","scope":4182,"src":"5331:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4179,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:32"},"src":"5302:47:32"},{"documentation":{"id":4183,"nodeType":"StructuredDocumentation","src":"5355:256:32","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":4189,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:32","nodeType":"ErrorDefinition","parameters":{"id":4188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4185,"mutability":"mutable","name":"operator","nameLocation":"5659:8:32","nodeType":"VariableDeclaration","scope":4189,"src":"5651:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4184,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4187,"mutability":"mutable","name":"owner","nameLocation":"5677:5:32","nodeType":"VariableDeclaration","scope":4189,"src":"5669:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4186,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:32"},"src":"5616:68:32"},{"documentation":{"id":4190,"nodeType":"StructuredDocumentation","src":"5690:174:32","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":4194,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:32","nodeType":"ErrorDefinition","parameters":{"id":4193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4192,"mutability":"mutable","name":"approver","nameLocation":"5906:8:32","nodeType":"VariableDeclaration","scope":4194,"src":"5898:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4191,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:32"},"src":"5869:47:32"},{"documentation":{"id":4195,"nodeType":"StructuredDocumentation","src":"5922:197:32","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":4199,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:32","nodeType":"ErrorDefinition","parameters":{"id":4198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4197,"mutability":"mutable","name":"operator","nameLocation":"6161:8:32","nodeType":"VariableDeclaration","scope":4199,"src":"6153:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4196,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:32"},"src":"6124:47:32"},{"documentation":{"id":4200,"nodeType":"StructuredDocumentation","src":"6177:280:32","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":4206,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:32","nodeType":"ErrorDefinition","parameters":{"id":4205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4202,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:32","nodeType":"VariableDeclaration","scope":4206,"src":"6494:17:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4201,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4204,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:32","nodeType":"VariableDeclaration","scope":4206,"src":"6513:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4203,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:32"},"src":"6462:73:32"}],"scope":4208,"src":"4430:2107:32","usedErrors":[4172,4177,4182,4189,4194,4199,4206],"usedEvents":[]}],"src":"112:6426:32"},"id":32},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[5320],"ERC20":[4722],"IERC20":[4800],"IERC20Errors":[4112],"IERC20Metadata":[4826]},"id":4723,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4209,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:33"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":4211,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4723,"sourceUnit":4801,"src":"131:36:33","symbolAliases":[{"foreign":{"id":4210,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"139:6:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":4213,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4723,"sourceUnit":4827,"src":"168:63:33","symbolAliases":[{"foreign":{"id":4212,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"176:14:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":4215,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4723,"sourceUnit":5321,"src":"232:48:33","symbolAliases":[{"foreign":{"id":4214,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"240:7:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":4217,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4723,"sourceUnit":4208,"src":"281:65:33","symbolAliases":[{"foreign":{"id":4216,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"289:12:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4219,"name":"Context","nameLocations":["1133:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":5320,"src":"1133:7:33"},"id":4220,"nodeType":"InheritanceSpecifier","src":"1133:7:33"},{"baseName":{"id":4221,"name":"IERC20","nameLocations":["1142:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"1142:6:33"},"id":4222,"nodeType":"InheritanceSpecifier","src":"1142:6:33"},{"baseName":{"id":4223,"name":"IERC20Metadata","nameLocations":["1150:14:33"],"nodeType":"IdentifierPath","referencedDeclaration":4826,"src":"1150:14:33"},"id":4224,"nodeType":"InheritanceSpecifier","src":"1150:14:33"},{"baseName":{"id":4225,"name":"IERC20Errors","nameLocations":["1166:12:33"],"nodeType":"IdentifierPath","referencedDeclaration":4112,"src":"1166:12:33"},"id":4226,"nodeType":"InheritanceSpecifier","src":"1166:12:33"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":4218,"nodeType":"StructuredDocumentation","src":"348:757:33","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":4722,"linearizedBaseContracts":[4722,4112,4826,4800,5320],"name":"ERC20","nameLocation":"1124:5:33","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4230,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:33","nodeType":"VariableDeclaration","scope":4722,"src":"1185:53:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4229,"keyName":"account","keyNameLocation":"1201:7:33","keyType":{"id":4227,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4228,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":4236,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:33","nodeType":"VariableDeclaration","scope":4722,"src":"1245:83:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":4235,"keyName":"account","keyNameLocation":"1261:7:33","keyType":{"id":4231,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4234,"keyName":"spender","keyNameLocation":"1288:7:33","keyType":{"id":4232,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4233,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":4238,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:33","nodeType":"VariableDeclaration","scope":4722,"src":"1335:28:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4237,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":4240,"mutability":"mutable","name":"_name","nameLocation":"1385:5:33","nodeType":"VariableDeclaration","scope":4722,"src":"1370:20:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4239,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":4242,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:33","nodeType":"VariableDeclaration","scope":4722,"src":"1396:22:33","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4241,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":4258,"nodeType":"Block","src":"1638:57:33","statements":[{"expression":{"id":4252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4250,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"1648:5:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4251,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4245,"src":"1656:5:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4253,"nodeType":"ExpressionStatement","src":"1648:13:33"},{"expression":{"id":4256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4254,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4242,"src":"1671:7:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4255,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"1681:7:33","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4257,"nodeType":"ExpressionStatement","src":"1671:17:33"}]},"documentation":{"id":4243,"nodeType":"StructuredDocumentation","src":"1425:152:33","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":4259,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4245,"mutability":"mutable","name":"name_","nameLocation":"1608:5:33","nodeType":"VariableDeclaration","scope":4259,"src":"1594:19:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4244,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4247,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:33","nodeType":"VariableDeclaration","scope":4259,"src":"1615:21:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4246,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:33"},"returnParameters":{"id":4249,"nodeType":"ParameterList","parameters":[],"src":"1638:0:33"},"scope":4722,"src":"1582:113:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4813],"body":{"id":4267,"nodeType":"Block","src":"1820:29:33","statements":[{"expression":{"id":4265,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4240,"src":"1837:5:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4264,"id":4266,"nodeType":"Return","src":"1830:12:33"}]},"documentation":{"id":4260,"nodeType":"StructuredDocumentation","src":"1701:54:33","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":4268,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:33","nodeType":"FunctionDefinition","parameters":{"id":4261,"nodeType":"ParameterList","parameters":[],"src":"1773:2:33"},"returnParameters":{"id":4264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4268,"src":"1805:13:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4262,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:33"},"scope":4722,"src":"1760:89:33","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4819],"body":{"id":4276,"nodeType":"Block","src":"2024:31:33","statements":[{"expression":{"id":4274,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4242,"src":"2041:7:33","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4273,"id":4275,"nodeType":"Return","src":"2034:14:33"}]},"documentation":{"id":4269,"nodeType":"StructuredDocumentation","src":"1855:102:33","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":4277,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:33","nodeType":"FunctionDefinition","parameters":{"id":4270,"nodeType":"ParameterList","parameters":[],"src":"1977:2:33"},"returnParameters":{"id":4273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4277,"src":"2009:13:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4271,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:33","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:33"},"scope":4722,"src":"1962:93:33","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4825],"body":{"id":4285,"nodeType":"Block","src":"2744:26:33","statements":[{"expression":{"hexValue":"3138","id":4283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:33","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":4282,"id":4284,"nodeType":"Return","src":"2754:9:33"}]},"documentation":{"id":4278,"nodeType":"StructuredDocumentation","src":"2061:622:33","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":4286,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:33","nodeType":"FunctionDefinition","parameters":{"id":4279,"nodeType":"ParameterList","parameters":[],"src":"2705:2:33"},"returnParameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4286,"src":"2737:5:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4280,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:33","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:33"},"scope":4722,"src":"2688:82:33","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4749],"body":{"id":4294,"nodeType":"Block","src":"2891:36:33","statements":[{"expression":{"id":4292,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4238,"src":"2908:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4291,"id":4293,"nodeType":"Return","src":"2901:19:33"}]},"documentation":{"id":4287,"nodeType":"StructuredDocumentation","src":"2776:49:33","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":4295,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2839:11:33","nodeType":"FunctionDefinition","parameters":{"id":4288,"nodeType":"ParameterList","parameters":[],"src":"2850:2:33"},"returnParameters":{"id":4291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4295,"src":"2882:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4289,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:33"},"scope":4722,"src":"2830:97:33","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4757],"body":{"id":4307,"nodeType":"Block","src":"3059:42:33","statements":[{"expression":{"baseExpression":{"id":4303,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"3076:9:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4305,"indexExpression":{"id":4304,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"3086:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3076:18:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4302,"id":4306,"nodeType":"Return","src":"3069:25:33"}]},"documentation":{"id":4296,"nodeType":"StructuredDocumentation","src":"2933:47:33","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":4308,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2994:9:33","nodeType":"FunctionDefinition","parameters":{"id":4299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4298,"mutability":"mutable","name":"account","nameLocation":"3012:7:33","nodeType":"VariableDeclaration","scope":4308,"src":"3004:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4297,"name":"address","nodeType":"ElementaryTypeName","src":"3004:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3003:17:33"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4308,"src":"3050:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4300,"name":"uint256","nodeType":"ElementaryTypeName","src":"3050:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3049:9:33"},"scope":4722,"src":"2985:116:33","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4767],"body":{"id":4331,"nodeType":"Block","src":"3371:103:33","statements":[{"assignments":[4319],"declarations":[{"constant":false,"id":4319,"mutability":"mutable","name":"owner","nameLocation":"3389:5:33","nodeType":"VariableDeclaration","scope":4331,"src":"3381:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4318,"name":"address","nodeType":"ElementaryTypeName","src":"3381:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4322,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4320,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"3397:10:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3397:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3381:28:33"},{"expression":{"arguments":[{"id":4324,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4319,"src":"3429:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4325,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"3436:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"3440:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4323,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"3419:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3419:27:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4328,"nodeType":"ExpressionStatement","src":"3419:27:33"},{"expression":{"hexValue":"74727565","id":4329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3463:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4317,"id":4330,"nodeType":"Return","src":"3456:11:33"}]},"documentation":{"id":4309,"nodeType":"StructuredDocumentation","src":"3107:184:33","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":4332,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3305:8:33","nodeType":"FunctionDefinition","parameters":{"id":4314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4311,"mutability":"mutable","name":"to","nameLocation":"3322:2:33","nodeType":"VariableDeclaration","scope":4332,"src":"3314:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4310,"name":"address","nodeType":"ElementaryTypeName","src":"3314:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4313,"mutability":"mutable","name":"value","nameLocation":"3334:5:33","nodeType":"VariableDeclaration","scope":4332,"src":"3326:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4312,"name":"uint256","nodeType":"ElementaryTypeName","src":"3326:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3313:27:33"},"returnParameters":{"id":4317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4332,"src":"3365:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4315,"name":"bool","nodeType":"ElementaryTypeName","src":"3365:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3364:6:33"},"scope":4722,"src":"3296:178:33","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4777],"body":{"id":4348,"nodeType":"Block","src":"3621:51:33","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":4342,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4236,"src":"3638:11:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4344,"indexExpression":{"id":4343,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4335,"src":"3650:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3638:18:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4346,"indexExpression":{"id":4345,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"3657:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3638:27:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4341,"id":4347,"nodeType":"Return","src":"3631:34:33"}]},"documentation":{"id":4333,"nodeType":"StructuredDocumentation","src":"3480:47:33","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":4349,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3541:9:33","nodeType":"FunctionDefinition","parameters":{"id":4338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4335,"mutability":"mutable","name":"owner","nameLocation":"3559:5:33","nodeType":"VariableDeclaration","scope":4349,"src":"3551:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4334,"name":"address","nodeType":"ElementaryTypeName","src":"3551:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4337,"mutability":"mutable","name":"spender","nameLocation":"3574:7:33","nodeType":"VariableDeclaration","scope":4349,"src":"3566:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4336,"name":"address","nodeType":"ElementaryTypeName","src":"3566:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3550:32:33"},"returnParameters":{"id":4341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4340,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4349,"src":"3612:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4339,"name":"uint256","nodeType":"ElementaryTypeName","src":"3612:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3611:9:33"},"scope":4722,"src":"3532:140:33","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4787],"body":{"id":4372,"nodeType":"Block","src":"4058:107:33","statements":[{"assignments":[4360],"declarations":[{"constant":false,"id":4360,"mutability":"mutable","name":"owner","nameLocation":"4076:5:33","nodeType":"VariableDeclaration","scope":4372,"src":"4068:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4359,"name":"address","nodeType":"ElementaryTypeName","src":"4068:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4363,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4361,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"4084:10:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4084:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4068:28:33"},{"expression":{"arguments":[{"id":4365,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4360,"src":"4115:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4366,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"4122:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4354,"src":"4131:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4364,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[4613,4673],"referencedDeclaration":4613,"src":"4106:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4106:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4369,"nodeType":"ExpressionStatement","src":"4106:31:33"},{"expression":{"hexValue":"74727565","id":4370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4154:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4358,"id":4371,"nodeType":"Return","src":"4147:11:33"}]},"documentation":{"id":4350,"nodeType":"StructuredDocumentation","src":"3678:296:33","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":4373,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3988:7:33","nodeType":"FunctionDefinition","parameters":{"id":4355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4352,"mutability":"mutable","name":"spender","nameLocation":"4004:7:33","nodeType":"VariableDeclaration","scope":4373,"src":"3996:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4351,"name":"address","nodeType":"ElementaryTypeName","src":"3996:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4354,"mutability":"mutable","name":"value","nameLocation":"4021:5:33","nodeType":"VariableDeclaration","scope":4373,"src":"4013:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4353,"name":"uint256","nodeType":"ElementaryTypeName","src":"4013:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3995:32:33"},"returnParameters":{"id":4358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4373,"src":"4052:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4356,"name":"bool","nodeType":"ElementaryTypeName","src":"4052:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4051:6:33"},"scope":4722,"src":"3979:186:33","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4799],"body":{"id":4404,"nodeType":"Block","src":"4850:151:33","statements":[{"assignments":[4386],"declarations":[{"constant":false,"id":4386,"mutability":"mutable","name":"spender","nameLocation":"4868:7:33","nodeType":"VariableDeclaration","scope":4404,"src":"4860:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4385,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4389,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4387,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"4878:10:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4878:12:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4860:30:33"},{"expression":{"arguments":[{"id":4391,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"4916:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4392,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4386,"src":"4922:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"4931:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4390,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"4900:15:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4900:37:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4395,"nodeType":"ExpressionStatement","src":"4900:37:33"},{"expression":{"arguments":[{"id":4397,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"4957:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4398,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"4963:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"4967:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4396,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"4947:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4947:26:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4401,"nodeType":"ExpressionStatement","src":"4947:26:33"},{"expression":{"hexValue":"74727565","id":4402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4990:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4384,"id":4403,"nodeType":"Return","src":"4983:11:33"}]},"documentation":{"id":4374,"nodeType":"StructuredDocumentation","src":"4171:581:33","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":4405,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4766:12:33","nodeType":"FunctionDefinition","parameters":{"id":4381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4376,"mutability":"mutable","name":"from","nameLocation":"4787:4:33","nodeType":"VariableDeclaration","scope":4405,"src":"4779:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4375,"name":"address","nodeType":"ElementaryTypeName","src":"4779:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4378,"mutability":"mutable","name":"to","nameLocation":"4801:2:33","nodeType":"VariableDeclaration","scope":4405,"src":"4793:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4377,"name":"address","nodeType":"ElementaryTypeName","src":"4793:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4380,"mutability":"mutable","name":"value","nameLocation":"4813:5:33","nodeType":"VariableDeclaration","scope":4405,"src":"4805:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4379,"name":"uint256","nodeType":"ElementaryTypeName","src":"4805:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4778:41:33"},"returnParameters":{"id":4384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4405,"src":"4844:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4382,"name":"bool","nodeType":"ElementaryTypeName","src":"4844:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4843:6:33"},"scope":4722,"src":"4757:244:33","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":4451,"nodeType":"Block","src":"5443:231:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4415,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"5457:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5473:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5465:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4416,"name":"address","nodeType":"ElementaryTypeName","src":"5465:7:33","typeDescriptions":{}}},"id":4419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5465:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5457:18:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4429,"nodeType":"IfStatement","src":"5453:86:33","trueBody":{"id":4428,"nodeType":"Block","src":"5477:62:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5525:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5517:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4422,"name":"address","nodeType":"ElementaryTypeName","src":"5517:7:33","typeDescriptions":{}}},"id":4425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5517:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4421,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"5498:18:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4427,"nodeType":"RevertStatement","src":"5491:37:33"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4430,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"5552:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5566:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5558:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4431,"name":"address","nodeType":"ElementaryTypeName","src":"5558:7:33","typeDescriptions":{}}},"id":4434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5558:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5552:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4444,"nodeType":"IfStatement","src":"5548:86:33","trueBody":{"id":4443,"nodeType":"Block","src":"5570:64:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5620:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5612:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4437,"name":"address","nodeType":"ElementaryTypeName","src":"5612:7:33","typeDescriptions":{}}},"id":4440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5612:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4436,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"5591:20:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5591:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4442,"nodeType":"RevertStatement","src":"5584:39:33"}]}},{"expression":{"arguments":[{"id":4446,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"5651:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4447,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"5657:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4412,"src":"5661:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4445,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"5643:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5643:24:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4450,"nodeType":"ExpressionStatement","src":"5643:24:33"}]},"documentation":{"id":4406,"nodeType":"StructuredDocumentation","src":"5007:362:33","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":4452,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5383:9:33","nodeType":"FunctionDefinition","parameters":{"id":4413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4408,"mutability":"mutable","name":"from","nameLocation":"5401:4:33","nodeType":"VariableDeclaration","scope":4452,"src":"5393:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4407,"name":"address","nodeType":"ElementaryTypeName","src":"5393:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4410,"mutability":"mutable","name":"to","nameLocation":"5415:2:33","nodeType":"VariableDeclaration","scope":4452,"src":"5407:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4409,"name":"address","nodeType":"ElementaryTypeName","src":"5407:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4412,"mutability":"mutable","name":"value","nameLocation":"5427:5:33","nodeType":"VariableDeclaration","scope":4452,"src":"5419:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4411,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5392:41:33"},"returnParameters":{"id":4414,"nodeType":"ParameterList","parameters":[],"src":"5443:0:33"},"scope":4722,"src":"5374:300:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4528,"nodeType":"Block","src":"6064:1032:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4462,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"6078:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6094:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4464,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6086:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4463,"name":"address","nodeType":"ElementaryTypeName","src":"6086:7:33","typeDescriptions":{}}},"id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6086:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6078:18:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4499,"nodeType":"Block","src":"6252:362:33","statements":[{"assignments":[4474],"declarations":[{"constant":false,"id":4474,"mutability":"mutable","name":"fromBalance","nameLocation":"6274:11:33","nodeType":"VariableDeclaration","scope":4499,"src":"6266:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4473,"name":"uint256","nodeType":"ElementaryTypeName","src":"6266:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4478,"initialValue":{"baseExpression":{"id":4475,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"6288:9:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4477,"indexExpression":{"id":4476,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"6298:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6288:15:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6266:37:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4479,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4474,"src":"6321:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4480,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"6335:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6321:19:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4489,"nodeType":"IfStatement","src":"6317:115:33","trueBody":{"id":4488,"nodeType":"Block","src":"6342:90:33","statements":[{"errorCall":{"arguments":[{"id":4483,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"6392:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4484,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4474,"src":"6398:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"6411:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4482,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"6367:24:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6367:50:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4487,"nodeType":"RevertStatement","src":"6360:57:33"}]}},{"id":4498,"nodeType":"UncheckedBlock","src":"6445:159:33","statements":[{"expression":{"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4490,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"6552:9:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4492,"indexExpression":{"id":4491,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"6562:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6552:15:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4493,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4474,"src":"6570:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"6584:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6570:19:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6552:37:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4497,"nodeType":"ExpressionStatement","src":"6552:37:33"}]}]},"id":4500,"nodeType":"IfStatement","src":"6074:540:33","trueBody":{"id":4472,"nodeType":"Block","src":"6098:148:33","statements":[{"expression":{"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4468,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4238,"src":"6214:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"6230:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6214:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4471,"nodeType":"ExpressionStatement","src":"6214:21:33"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4501,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"6628:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6634:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4502,"name":"address","nodeType":"ElementaryTypeName","src":"6634:7:33","typeDescriptions":{}}},"id":4505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6634:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6628:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4520,"nodeType":"Block","src":"6843:206:33","statements":[{"id":4519,"nodeType":"UncheckedBlock","src":"6857:182:33","statements":[{"expression":{"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4513,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"7002:9:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4515,"indexExpression":{"id":4514,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"7012:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7002:13:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"7019:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7002:22:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4518,"nodeType":"ExpressionStatement","src":"7002:22:33"}]}]},"id":4521,"nodeType":"IfStatement","src":"6624:425:33","trueBody":{"id":4512,"nodeType":"Block","src":"6646:191:33","statements":[{"id":4511,"nodeType":"UncheckedBlock","src":"6660:167:33","statements":[{"expression":{"id":4509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4507,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4238,"src":"6791:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4508,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"6807:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6791:21:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4510,"nodeType":"ExpressionStatement","src":"6791:21:33"}]}]}},{"eventCall":{"arguments":[{"id":4523,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"7073:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4524,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"7079:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4525,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"7083:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4522,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4734,"src":"7064:8:33","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7064:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4527,"nodeType":"EmitStatement","src":"7059:30:33"}]},"documentation":{"id":4453,"nodeType":"StructuredDocumentation","src":"5680:304:33","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":4529,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5998:7:33","nodeType":"FunctionDefinition","parameters":{"id":4460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4455,"mutability":"mutable","name":"from","nameLocation":"6014:4:33","nodeType":"VariableDeclaration","scope":4529,"src":"6006:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4454,"name":"address","nodeType":"ElementaryTypeName","src":"6006:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4457,"mutability":"mutable","name":"to","nameLocation":"6028:2:33","nodeType":"VariableDeclaration","scope":4529,"src":"6020:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4456,"name":"address","nodeType":"ElementaryTypeName","src":"6020:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4459,"mutability":"mutable","name":"value","nameLocation":"6040:5:33","nodeType":"VariableDeclaration","scope":4529,"src":"6032:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4458,"name":"uint256","nodeType":"ElementaryTypeName","src":"6032:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6005:41:33"},"returnParameters":{"id":4461,"nodeType":"ParameterList","parameters":[],"src":"6064:0:33"},"scope":4722,"src":"5989:1107:33","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4561,"nodeType":"Block","src":"7495:152:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4537,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"7509:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7528:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7520:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4538,"name":"address","nodeType":"ElementaryTypeName","src":"7520:7:33","typeDescriptions":{}}},"id":4541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7520:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7509:21:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4551,"nodeType":"IfStatement","src":"7505:91:33","trueBody":{"id":4550,"nodeType":"Block","src":"7532:64:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7582:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7574:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4544,"name":"address","nodeType":"ElementaryTypeName","src":"7574:7:33","typeDescriptions":{}}},"id":4547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7574:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4543,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"7553:20:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7553:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4549,"nodeType":"RevertStatement","src":"7546:39:33"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7621:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7613:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4553,"name":"address","nodeType":"ElementaryTypeName","src":"7613:7:33","typeDescriptions":{}}},"id":4556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7613:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4557,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"7625:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"7634:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4552,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"7605:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7605:35:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4560,"nodeType":"ExpressionStatement","src":"7605:35:33"}]},"documentation":{"id":4530,"nodeType":"StructuredDocumentation","src":"7102:332:33","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":4562,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7448:5:33","nodeType":"FunctionDefinition","parameters":{"id":4535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4532,"mutability":"mutable","name":"account","nameLocation":"7462:7:33","nodeType":"VariableDeclaration","scope":4562,"src":"7454:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4531,"name":"address","nodeType":"ElementaryTypeName","src":"7454:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4534,"mutability":"mutable","name":"value","nameLocation":"7479:5:33","nodeType":"VariableDeclaration","scope":4562,"src":"7471:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4533,"name":"uint256","nodeType":"ElementaryTypeName","src":"7471:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7453:32:33"},"returnParameters":{"id":4536,"nodeType":"ParameterList","parameters":[],"src":"7495:0:33"},"scope":4722,"src":"7439:208:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4594,"nodeType":"Block","src":"8021:150:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4570,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4565,"src":"8035:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8054:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8046:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4571,"name":"address","nodeType":"ElementaryTypeName","src":"8046:7:33","typeDescriptions":{}}},"id":4574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8046:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8035:21:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4584,"nodeType":"IfStatement","src":"8031:89:33","trueBody":{"id":4583,"nodeType":"Block","src":"8058:62:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8106:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8098:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4577,"name":"address","nodeType":"ElementaryTypeName","src":"8098:7:33","typeDescriptions":{}}},"id":4580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4576,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"8079:18:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8079:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4582,"nodeType":"RevertStatement","src":"8072:37:33"}]}},{"expression":{"arguments":[{"id":4586,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4565,"src":"8137:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8154:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8146:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4587,"name":"address","nodeType":"ElementaryTypeName","src":"8146:7:33","typeDescriptions":{}}},"id":4590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8146:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4567,"src":"8158:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4585,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"8129:7:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8129:35:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4593,"nodeType":"ExpressionStatement","src":"8129:35:33"}]},"documentation":{"id":4563,"nodeType":"StructuredDocumentation","src":"7653:307:33","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":4595,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7974:5:33","nodeType":"FunctionDefinition","parameters":{"id":4568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4565,"mutability":"mutable","name":"account","nameLocation":"7988:7:33","nodeType":"VariableDeclaration","scope":4595,"src":"7980:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4564,"name":"address","nodeType":"ElementaryTypeName","src":"7980:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4567,"mutability":"mutable","name":"value","nameLocation":"8005:5:33","nodeType":"VariableDeclaration","scope":4595,"src":"7997:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4566,"name":"uint256","nodeType":"ElementaryTypeName","src":"7997:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7979:32:33"},"returnParameters":{"id":4569,"nodeType":"ParameterList","parameters":[],"src":"8021:0:33"},"scope":4722,"src":"7965:206:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4612,"nodeType":"Block","src":"8781:54:33","statements":[{"expression":{"arguments":[{"id":4606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4598,"src":"8800:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4607,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4600,"src":"8807:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4608,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"8816:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":4609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8823:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4605,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[4613,4673],"referencedDeclaration":4673,"src":"8791:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":4610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8791:37:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4611,"nodeType":"ExpressionStatement","src":"8791:37:33"}]},"documentation":{"id":4596,"nodeType":"StructuredDocumentation","src":"8177:525:33","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":4613,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8716:8:33","nodeType":"FunctionDefinition","parameters":{"id":4603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4598,"mutability":"mutable","name":"owner","nameLocation":"8733:5:33","nodeType":"VariableDeclaration","scope":4613,"src":"8725:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4597,"name":"address","nodeType":"ElementaryTypeName","src":"8725:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4600,"mutability":"mutable","name":"spender","nameLocation":"8748:7:33","nodeType":"VariableDeclaration","scope":4613,"src":"8740:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4599,"name":"address","nodeType":"ElementaryTypeName","src":"8740:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4602,"mutability":"mutable","name":"value","nameLocation":"8765:5:33","nodeType":"VariableDeclaration","scope":4613,"src":"8757:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4601,"name":"uint256","nodeType":"ElementaryTypeName","src":"8757:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8724:47:33"},"returnParameters":{"id":4604,"nodeType":"ParameterList","parameters":[],"src":"8781:0:33"},"scope":4722,"src":"8707:128:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4672,"nodeType":"Block","src":"9780:334:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4625,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"9794:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9811:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9803:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4626,"name":"address","nodeType":"ElementaryTypeName","src":"9803:7:33","typeDescriptions":{}}},"id":4629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9794:19:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4639,"nodeType":"IfStatement","src":"9790:89:33","trueBody":{"id":4638,"nodeType":"Block","src":"9815:64:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9865:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9857:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4632,"name":"address","nodeType":"ElementaryTypeName","src":"9857:7:33","typeDescriptions":{}}},"id":4635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9857:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4631,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4106,"src":"9836:20:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9836:32:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4637,"nodeType":"RevertStatement","src":"9829:39:33"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4640,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"9892:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9911:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9903:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4641,"name":"address","nodeType":"ElementaryTypeName","src":"9903:7:33","typeDescriptions":{}}},"id":4644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9903:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9892:21:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4654,"nodeType":"IfStatement","src":"9888:90:33","trueBody":{"id":4653,"nodeType":"Block","src":"9915:63:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9964:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9956:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4647,"name":"address","nodeType":"ElementaryTypeName","src":"9956:7:33","typeDescriptions":{}}},"id":4650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9956:10:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4646,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4111,"src":"9936:19:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9936:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4652,"nodeType":"RevertStatement","src":"9929:38:33"}]}},{"expression":{"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4655,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4236,"src":"9987:11:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4658,"indexExpression":{"id":4656,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"9999:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9987:18:33","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4659,"indexExpression":{"id":4657,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"10006:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9987:27:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"10017:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9987:35:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4662,"nodeType":"ExpressionStatement","src":"9987:35:33"},{"condition":{"id":4663,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4622,"src":"10036:9:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4671,"nodeType":"IfStatement","src":"10032:76:33","trueBody":{"id":4670,"nodeType":"Block","src":"10047:61:33","statements":[{"eventCall":{"arguments":[{"id":4665,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"10075:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4666,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"10082:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4620,"src":"10091:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4664,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4743,"src":"10066:8:33","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10066:31:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4669,"nodeType":"EmitStatement","src":"10061:36:33"}]}}]},"documentation":{"id":4614,"nodeType":"StructuredDocumentation","src":"8841:836:33","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":4673,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9691:8:33","nodeType":"FunctionDefinition","parameters":{"id":4623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4616,"mutability":"mutable","name":"owner","nameLocation":"9708:5:33","nodeType":"VariableDeclaration","scope":4673,"src":"9700:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4615,"name":"address","nodeType":"ElementaryTypeName","src":"9700:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4618,"mutability":"mutable","name":"spender","nameLocation":"9723:7:33","nodeType":"VariableDeclaration","scope":4673,"src":"9715:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4617,"name":"address","nodeType":"ElementaryTypeName","src":"9715:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4620,"mutability":"mutable","name":"value","nameLocation":"9740:5:33","nodeType":"VariableDeclaration","scope":4673,"src":"9732:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4619,"name":"uint256","nodeType":"ElementaryTypeName","src":"9732:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4622,"mutability":"mutable","name":"emitEvent","nameLocation":"9752:9:33","nodeType":"VariableDeclaration","scope":4673,"src":"9747:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4621,"name":"bool","nodeType":"ElementaryTypeName","src":"9747:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9699:63:33"},"returnParameters":{"id":4624,"nodeType":"ParameterList","parameters":[],"src":"9780:0:33"},"scope":4722,"src":"9682:432:33","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4720,"nodeType":"Block","src":"10485:387:33","statements":[{"assignments":[4684],"declarations":[{"constant":false,"id":4684,"mutability":"mutable","name":"currentAllowance","nameLocation":"10503:16:33","nodeType":"VariableDeclaration","scope":4720,"src":"10495:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4683,"name":"uint256","nodeType":"ElementaryTypeName","src":"10495:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4689,"initialValue":{"arguments":[{"id":4686,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"10532:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4687,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"10539:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4685,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4349,"src":"10522:9:33","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":4688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10522:25:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10495:52:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4690,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4684,"src":"10561:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":4693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10585:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4692,"name":"uint256","nodeType":"ElementaryTypeName","src":"10585:7:33","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4691,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10580:4:33","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10580:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10594:3:33","memberName":"max","nodeType":"MemberAccess","src":"10580:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10561:36:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4719,"nodeType":"IfStatement","src":"10557:309:33","trueBody":{"id":4718,"nodeType":"Block","src":"10599:267:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4697,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4684,"src":"10617:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"10636:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10617:24:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4707,"nodeType":"IfStatement","src":"10613:130:33","trueBody":{"id":4706,"nodeType":"Block","src":"10643:100:33","statements":[{"errorCall":{"arguments":[{"id":4701,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"10695:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4702,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4684,"src":"10704:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4703,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"10722:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4700,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"10668:26:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10668:60:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4705,"nodeType":"RevertStatement","src":"10661:67:33"}]}},{"id":4717,"nodeType":"UncheckedBlock","src":"10756:100:33","statements":[{"expression":{"arguments":[{"id":4709,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"10793:5:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4710,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4678,"src":"10800:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4711,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4684,"src":"10809:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4680,"src":"10828:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10809:24:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10835:5:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4708,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[4613,4673],"referencedDeclaration":4673,"src":"10784:8:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10784:57:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4716,"nodeType":"ExpressionStatement","src":"10784:57:33"}]}]}}]},"documentation":{"id":4674,"nodeType":"StructuredDocumentation","src":"10120:271:33","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":4721,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10405:15:33","nodeType":"FunctionDefinition","parameters":{"id":4681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4676,"mutability":"mutable","name":"owner","nameLocation":"10429:5:33","nodeType":"VariableDeclaration","scope":4721,"src":"10421:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4675,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4678,"mutability":"mutable","name":"spender","nameLocation":"10444:7:33","nodeType":"VariableDeclaration","scope":4721,"src":"10436:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4677,"name":"address","nodeType":"ElementaryTypeName","src":"10436:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4680,"mutability":"mutable","name":"value","nameLocation":"10461:5:33","nodeType":"VariableDeclaration","scope":4721,"src":"10453:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4679,"name":"uint256","nodeType":"ElementaryTypeName","src":"10453:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10420:47:33"},"returnParameters":{"id":4682,"nodeType":"ParameterList","parameters":[],"src":"10485:0:33"},"scope":4722,"src":"10396:476:33","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4723,"src":"1106:9768:33","usedErrors":[4082,4087,4092,4101,4106,4111],"usedEvents":[4734,4743]}],"src":"105:10770:33"},"id":33},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[4800]},"id":4801,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4724,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:34"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":4725,"nodeType":"StructuredDocumentation","src":"132:71:34","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":4800,"linearizedBaseContracts":[4800],"name":"IERC20","nameLocation":"214:6:34","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":4726,"nodeType":"StructuredDocumentation","src":"227:158:34","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":4734,"name":"Transfer","nameLocation":"396:8:34","nodeType":"EventDefinition","parameters":{"id":4733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4728,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:34","nodeType":"VariableDeclaration","scope":4734,"src":"405:20:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4727,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4730,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:34","nodeType":"VariableDeclaration","scope":4734,"src":"427:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4729,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4732,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:34","nodeType":"VariableDeclaration","scope":4734,"src":"447:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4731,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:34"},"src":"390:72:34"},{"anonymous":false,"documentation":{"id":4735,"nodeType":"StructuredDocumentation","src":"468:148:34","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":4743,"name":"Approval","nameLocation":"627:8:34","nodeType":"EventDefinition","parameters":{"id":4742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4737,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:34","nodeType":"VariableDeclaration","scope":4743,"src":"636:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4736,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4739,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:34","nodeType":"VariableDeclaration","scope":4743,"src":"659:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4738,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4741,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:34","nodeType":"VariableDeclaration","scope":4743,"src":"684:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4740,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:34"},"src":"621:78:34"},{"documentation":{"id":4744,"nodeType":"StructuredDocumentation","src":"705:65:34","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":4749,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:34","nodeType":"FunctionDefinition","parameters":{"id":4745,"nodeType":"ParameterList","parameters":[],"src":"795:2:34"},"returnParameters":{"id":4748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4747,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4749,"src":"821:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4746,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:34"},"scope":4800,"src":"775:55:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4750,"nodeType":"StructuredDocumentation","src":"836:71:34","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":4757,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:34","nodeType":"FunctionDefinition","parameters":{"id":4753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4752,"mutability":"mutable","name":"account","nameLocation":"939:7:34","nodeType":"VariableDeclaration","scope":4757,"src":"931:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4751,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:34"},"returnParameters":{"id":4756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4755,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4757,"src":"971:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4754,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:34"},"scope":4800,"src":"912:68:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4758,"nodeType":"StructuredDocumentation","src":"986:213:34","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":4767,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:34","nodeType":"FunctionDefinition","parameters":{"id":4763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4760,"mutability":"mutable","name":"to","nameLocation":"1230:2:34","nodeType":"VariableDeclaration","scope":4767,"src":"1222:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4759,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4762,"mutability":"mutable","name":"value","nameLocation":"1242:5:34","nodeType":"VariableDeclaration","scope":4767,"src":"1234:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4761,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:34"},"returnParameters":{"id":4766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4767,"src":"1267:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4764,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:34"},"scope":4800,"src":"1204:69:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4768,"nodeType":"StructuredDocumentation","src":"1279:264:34","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":4777,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:34","nodeType":"FunctionDefinition","parameters":{"id":4773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4770,"mutability":"mutable","name":"owner","nameLocation":"1575:5:34","nodeType":"VariableDeclaration","scope":4777,"src":"1567:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4769,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4772,"mutability":"mutable","name":"spender","nameLocation":"1590:7:34","nodeType":"VariableDeclaration","scope":4777,"src":"1582:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4771,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:34"},"returnParameters":{"id":4776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4777,"src":"1622:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4774,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:34"},"scope":4800,"src":"1548:83:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4778,"nodeType":"StructuredDocumentation","src":"1637:667:34","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":4787,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:34","nodeType":"FunctionDefinition","parameters":{"id":4783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4780,"mutability":"mutable","name":"spender","nameLocation":"2334:7:34","nodeType":"VariableDeclaration","scope":4787,"src":"2326:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4779,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4782,"mutability":"mutable","name":"value","nameLocation":"2351:5:34","nodeType":"VariableDeclaration","scope":4787,"src":"2343:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4781,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:34"},"returnParameters":{"id":4786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4787,"src":"2376:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4784,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:34"},"scope":4800,"src":"2309:73:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4788,"nodeType":"StructuredDocumentation","src":"2388:297:34","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":4799,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:34","nodeType":"FunctionDefinition","parameters":{"id":4795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4790,"mutability":"mutable","name":"from","nameLocation":"2720:4:34","nodeType":"VariableDeclaration","scope":4799,"src":"2712:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4789,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4792,"mutability":"mutable","name":"to","nameLocation":"2734:2:34","nodeType":"VariableDeclaration","scope":4799,"src":"2726:10:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4791,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4794,"mutability":"mutable","name":"value","nameLocation":"2746:5:34","nodeType":"VariableDeclaration","scope":4799,"src":"2738:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4793,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:34"},"returnParameters":{"id":4798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4799,"src":"2771:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4796,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:34"},"scope":4800,"src":"2690:87:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4801,"src":"204:2575:34","usedErrors":[],"usedEvents":[4734,4743]}],"src":"106:2674:34"},"id":34},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[4800],"IERC20Metadata":[4826]},"id":4827,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4802,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:35"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":4804,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4827,"sourceUnit":4801,"src":"151:37:35","symbolAliases":[{"foreign":{"id":4803,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"159:6:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4806,"name":"IERC20","nameLocations":["306:6:35"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"306:6:35"},"id":4807,"nodeType":"InheritanceSpecifier","src":"306:6:35"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":4805,"nodeType":"StructuredDocumentation","src":"190:87:35","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":4826,"linearizedBaseContracts":[4826,4800],"name":"IERC20Metadata","nameLocation":"288:14:35","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4808,"nodeType":"StructuredDocumentation","src":"319:54:35","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":4813,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:35","nodeType":"FunctionDefinition","parameters":{"id":4809,"nodeType":"ParameterList","parameters":[],"src":"391:2:35"},"returnParameters":{"id":4812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4813,"src":"417:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4810,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:35"},"scope":4826,"src":"378:54:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4814,"nodeType":"StructuredDocumentation","src":"438:56:35","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":4819,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:35","nodeType":"FunctionDefinition","parameters":{"id":4815,"nodeType":"ParameterList","parameters":[],"src":"514:2:35"},"returnParameters":{"id":4818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4819,"src":"540:13:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4816,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:35","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:35"},"scope":4826,"src":"499:56:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4820,"nodeType":"StructuredDocumentation","src":"561:65:35","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":4825,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:35","nodeType":"FunctionDefinition","parameters":{"id":4821,"nodeType":"ParameterList","parameters":[],"src":"648:2:35"},"returnParameters":{"id":4824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4825,"src":"674:5:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4822,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:35"},"scope":4826,"src":"631:50:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4827,"src":"278:405:35","usedErrors":[],"usedEvents":[4734,4743]}],"src":"125:559:35"},"id":35},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"IERC1363":[4062],"IERC20":[4800],"SafeERC20":[5290]},"id":5291,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4828,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:36"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":4830,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5291,"sourceUnit":4801,"src":"141:37:36","symbolAliases":[{"foreign":{"id":4829,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4800,"src":"149:6:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","id":4832,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5291,"sourceUnit":4063,"src":"179:58:36","symbolAliases":[{"foreign":{"id":4831,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4062,"src":"187:8:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":4833,"nodeType":"StructuredDocumentation","src":"239:458:36","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":5290,"linearizedBaseContracts":[5290],"name":"SafeERC20","nameLocation":"706:9:36","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4834,"nodeType":"StructuredDocumentation","src":"722:65:36","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","id":4838,"name":"SafeERC20FailedOperation","nameLocation":"798:24:36","nodeType":"ErrorDefinition","parameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4836,"mutability":"mutable","name":"token","nameLocation":"831:5:36","nodeType":"VariableDeclaration","scope":4838,"src":"823:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4835,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:36"},"src":"792:46:36"},{"documentation":{"id":4839,"nodeType":"StructuredDocumentation","src":"844:71:36","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":4847,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:36","nodeType":"ErrorDefinition","parameters":{"id":4846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4841,"mutability":"mutable","name":"spender","nameLocation":"967:7:36","nodeType":"VariableDeclaration","scope":4847,"src":"959:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4840,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4843,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:36","nodeType":"VariableDeclaration","scope":4847,"src":"976:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4842,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4845,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:36","nodeType":"VariableDeclaration","scope":4847,"src":"1002:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4844,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:36"},"src":"920:109:36"},{"body":{"id":4870,"nodeType":"Block","src":"1291:88:36","statements":[{"expression":{"arguments":[{"id":4859,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"1321:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4862,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"1343:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1349:8:36","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4767,"src":"1343:14:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":4864,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"1360:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4865,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4855,"src":"1364:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4866,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1359:11:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":4860,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1328:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1332:10:36","memberName":"encodeCall","nodeType":"MemberAccess","src":"1328:14:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1328:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4858,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"1301:19:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1301:71:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4869,"nodeType":"ExpressionStatement","src":"1301:71:36"}]},"documentation":{"id":4848,"nodeType":"StructuredDocumentation","src":"1035:179:36","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":4871,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:36","nodeType":"FunctionDefinition","parameters":{"id":4856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4851,"mutability":"mutable","name":"token","nameLocation":"1248:5:36","nodeType":"VariableDeclaration","scope":4871,"src":"1241:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":4850,"nodeType":"UserDefinedTypeName","pathNode":{"id":4849,"name":"IERC20","nameLocations":["1241:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"1241:6:36"},"referencedDeclaration":4800,"src":"1241:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4853,"mutability":"mutable","name":"to","nameLocation":"1263:2:36","nodeType":"VariableDeclaration","scope":4871,"src":"1255:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4852,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4855,"mutability":"mutable","name":"value","nameLocation":"1275:5:36","nodeType":"VariableDeclaration","scope":4871,"src":"1267:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:36"},"returnParameters":{"id":4857,"nodeType":"ParameterList","parameters":[],"src":"1291:0:36"},"scope":5290,"src":"1219:160:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4897,"nodeType":"Block","src":"1708:98:36","statements":[{"expression":{"arguments":[{"id":4885,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"1738:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4888,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"1760:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":4889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:12:36","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4799,"src":"1760:18:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":4890,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4877,"src":"1781:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4891,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4879,"src":"1787:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"1791:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4893,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1780:17:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":4886,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1745:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1749:10:36","memberName":"encodeCall","nodeType":"MemberAccess","src":"1745:14:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:53:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4884,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"1718:19:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":4895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1718:81:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4896,"nodeType":"ExpressionStatement","src":"1718:81:36"}]},"documentation":{"id":4872,"nodeType":"StructuredDocumentation","src":"1385:228:36","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":4898,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1627:16:36","nodeType":"FunctionDefinition","parameters":{"id":4882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4875,"mutability":"mutable","name":"token","nameLocation":"1651:5:36","nodeType":"VariableDeclaration","scope":4898,"src":"1644:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":4874,"nodeType":"UserDefinedTypeName","pathNode":{"id":4873,"name":"IERC20","nameLocations":["1644:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"1644:6:36"},"referencedDeclaration":4800,"src":"1644:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4877,"mutability":"mutable","name":"from","nameLocation":"1666:4:36","nodeType":"VariableDeclaration","scope":4898,"src":"1658:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4876,"name":"address","nodeType":"ElementaryTypeName","src":"1658:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4879,"mutability":"mutable","name":"to","nameLocation":"1680:2:36","nodeType":"VariableDeclaration","scope":4898,"src":"1672:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4878,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4881,"mutability":"mutable","name":"value","nameLocation":"1692:5:36","nodeType":"VariableDeclaration","scope":4898,"src":"1684:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4880,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1643:55:36"},"returnParameters":{"id":4883,"nodeType":"ParameterList","parameters":[],"src":"1708:0:36"},"scope":5290,"src":"1618:188:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4923,"nodeType":"Block","src":"2033:99:36","statements":[{"expression":{"arguments":[{"id":4912,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"2074:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4915,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"2096:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2102:8:36","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4767,"src":"2096:14:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":4917,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4904,"src":"2113:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4918,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4906,"src":"2117:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4919,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2112:11:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":4913,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2081:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2085:10:36","memberName":"encodeCall","nodeType":"MemberAccess","src":"2081:14:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4911,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"2050:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":4921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2050:75:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4910,"id":4922,"nodeType":"Return","src":"2043:82:36"}]},"documentation":{"id":4899,"nodeType":"StructuredDocumentation","src":"1812:126:36","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"id":4924,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"1952:15:36","nodeType":"FunctionDefinition","parameters":{"id":4907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4902,"mutability":"mutable","name":"token","nameLocation":"1975:5:36","nodeType":"VariableDeclaration","scope":4924,"src":"1968:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":4901,"nodeType":"UserDefinedTypeName","pathNode":{"id":4900,"name":"IERC20","nameLocations":["1968:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"1968:6:36"},"referencedDeclaration":4800,"src":"1968:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4904,"mutability":"mutable","name":"to","nameLocation":"1990:2:36","nodeType":"VariableDeclaration","scope":4924,"src":"1982:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4903,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4906,"mutability":"mutable","name":"value","nameLocation":"2002:5:36","nodeType":"VariableDeclaration","scope":4924,"src":"1994:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1994:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1967:41:36"},"returnParameters":{"id":4910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4924,"src":"2027:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4908,"name":"bool","nodeType":"ElementaryTypeName","src":"2027:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2026:6:36"},"scope":5290,"src":"1943:189:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4952,"nodeType":"Block","src":"2381:109:36","statements":[{"expression":{"arguments":[{"id":4940,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"2422:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4943,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"2444:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2450:12:36","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4799,"src":"2444:18:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":4945,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4930,"src":"2465:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4946,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"2471:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4934,"src":"2475:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4948,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2464:17:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":4941,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2429:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:10:36","memberName":"encodeCall","nodeType":"MemberAccess","src":"2429:14:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2429:53:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4939,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"2398:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":4950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2398:85:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4938,"id":4951,"nodeType":"Return","src":"2391:92:36"}]},"documentation":{"id":4925,"nodeType":"StructuredDocumentation","src":"2138:130:36","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"id":4953,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2282:19:36","nodeType":"FunctionDefinition","parameters":{"id":4935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4928,"mutability":"mutable","name":"token","nameLocation":"2309:5:36","nodeType":"VariableDeclaration","scope":4953,"src":"2302:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":4927,"nodeType":"UserDefinedTypeName","pathNode":{"id":4926,"name":"IERC20","nameLocations":["2302:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"2302:6:36"},"referencedDeclaration":4800,"src":"2302:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4930,"mutability":"mutable","name":"from","nameLocation":"2324:4:36","nodeType":"VariableDeclaration","scope":4953,"src":"2316:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4929,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4932,"mutability":"mutable","name":"to","nameLocation":"2338:2:36","nodeType":"VariableDeclaration","scope":4953,"src":"2330:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4931,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4934,"mutability":"mutable","name":"value","nameLocation":"2350:5:36","nodeType":"VariableDeclaration","scope":4953,"src":"2342:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4933,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:55:36"},"returnParameters":{"id":4938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4953,"src":"2375:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4936,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:36"},"scope":5290,"src":"2273:217:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4983,"nodeType":"Block","src":"3232:139:36","statements":[{"assignments":[4965],"declarations":[{"constant":false,"id":4965,"mutability":"mutable","name":"oldAllowance","nameLocation":"3250:12:36","nodeType":"VariableDeclaration","scope":4983,"src":"3242:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4964,"name":"uint256","nodeType":"ElementaryTypeName","src":"3242:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4974,"initialValue":{"arguments":[{"arguments":[{"id":4970,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3289:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$5290","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$5290","typeString":"library SafeERC20"}],"id":4969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3281:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4968,"name":"address","nodeType":"ElementaryTypeName","src":"3281:7:36","typeDescriptions":{}}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4972,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"3296:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4966,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"3265:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":4967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3271:9:36","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"3265:15:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":4973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:39:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3242:62:36"},{"expression":{"arguments":[{"id":4976,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4957,"src":"3327:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"id":4977,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"3334:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4978,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"3343:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4979,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4961,"src":"3358:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3343:20:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4975,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"3314:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":4981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3314:50:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4982,"nodeType":"ExpressionStatement","src":"3314:50:36"}]},"documentation":{"id":4954,"nodeType":"StructuredDocumentation","src":"2496:645:36","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":4984,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3155:21:36","nodeType":"FunctionDefinition","parameters":{"id":4962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4957,"mutability":"mutable","name":"token","nameLocation":"3184:5:36","nodeType":"VariableDeclaration","scope":4984,"src":"3177:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":4956,"nodeType":"UserDefinedTypeName","pathNode":{"id":4955,"name":"IERC20","nameLocations":["3177:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"3177:6:36"},"referencedDeclaration":4800,"src":"3177:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4959,"mutability":"mutable","name":"spender","nameLocation":"3199:7:36","nodeType":"VariableDeclaration","scope":4984,"src":"3191:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4958,"name":"address","nodeType":"ElementaryTypeName","src":"3191:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4961,"mutability":"mutable","name":"value","nameLocation":"3216:5:36","nodeType":"VariableDeclaration","scope":4984,"src":"3208:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4960,"name":"uint256","nodeType":"ElementaryTypeName","src":"3208:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:46:36"},"returnParameters":{"id":4963,"nodeType":"ParameterList","parameters":[],"src":"3232:0:36"},"scope":5290,"src":"3146:225:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5026,"nodeType":"Block","src":"4137:370:36","statements":[{"id":5025,"nodeType":"UncheckedBlock","src":"4147:354:36","statements":[{"assignments":[4996],"declarations":[{"constant":false,"id":4996,"mutability":"mutable","name":"currentAllowance","nameLocation":"4179:16:36","nodeType":"VariableDeclaration","scope":5025,"src":"4171:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4995,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5005,"initialValue":{"arguments":[{"arguments":[{"id":5001,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4222:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$5290","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$5290","typeString":"library SafeERC20"}],"id":5000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4214:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4999,"name":"address","nodeType":"ElementaryTypeName","src":"4214:7:36","typeDescriptions":{}}},"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5003,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"4229:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4997,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"4198:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":4998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4204:9:36","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"4198:15:36","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":5004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4198:39:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4171:66:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5006,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4996,"src":"4255:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5007,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"4274:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4255:36:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5016,"nodeType":"IfStatement","src":"4251:160:36","trueBody":{"id":5015,"nodeType":"Block","src":"4293:118:36","statements":[{"errorCall":{"arguments":[{"id":5010,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"4351:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5011,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4996,"src":"4360:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5012,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"4378:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5009,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"4318:32:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":5013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:78:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5014,"nodeType":"RevertStatement","src":"4311:85:36"}]}},{"expression":{"arguments":[{"id":5018,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4988,"src":"4437:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"id":5019,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"4444:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5020,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4996,"src":"4453:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5021,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"4472:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4453:36:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5017,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"4424:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:66:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5024,"nodeType":"ExpressionStatement","src":"4424:66:36"}]}]},"documentation":{"id":4985,"nodeType":"StructuredDocumentation","src":"3377:657:36","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":5027,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4048:21:36","nodeType":"FunctionDefinition","parameters":{"id":4993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4988,"mutability":"mutable","name":"token","nameLocation":"4077:5:36","nodeType":"VariableDeclaration","scope":5027,"src":"4070:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":4987,"nodeType":"UserDefinedTypeName","pathNode":{"id":4986,"name":"IERC20","nameLocations":["4070:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"4070:6:36"},"referencedDeclaration":4800,"src":"4070:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4990,"mutability":"mutable","name":"spender","nameLocation":"4092:7:36","nodeType":"VariableDeclaration","scope":5027,"src":"4084:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4989,"name":"address","nodeType":"ElementaryTypeName","src":"4084:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4992,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4109:17:36","nodeType":"VariableDeclaration","scope":5027,"src":"4101:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4991,"name":"uint256","nodeType":"ElementaryTypeName","src":"4101:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4069:58:36"},"returnParameters":{"id":4994,"nodeType":"ParameterList","parameters":[],"src":"4137:0:36"},"scope":5290,"src":"4039:468:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5073,"nodeType":"Block","src":"5161:303:36","statements":[{"assignments":[5039],"declarations":[{"constant":false,"id":5039,"mutability":"mutable","name":"approvalCall","nameLocation":"5184:12:36","nodeType":"VariableDeclaration","scope":5073,"src":"5171:25:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5038,"name":"bytes","nodeType":"ElementaryTypeName","src":"5171:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5048,"initialValue":{"arguments":[{"expression":{"id":5042,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"5214:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":5043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5220:7:36","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4787,"src":"5214:13:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":5044,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"5230:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5035,"src":"5239:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5229:16:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":5040,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5199:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5203:10:36","memberName":"encodeCall","nodeType":"MemberAccess","src":"5199:14:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:47:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5171:75:36"},{"condition":{"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5261:45:36","subExpression":{"arguments":[{"id":5050,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"5286:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"id":5051,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5039,"src":"5293:12:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5049,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"5262:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":5052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:44:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5072,"nodeType":"IfStatement","src":"5257:201:36","trueBody":{"id":5071,"nodeType":"Block","src":"5308:150:36","statements":[{"expression":{"arguments":[{"id":5055,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"5342:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":5058,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"5364:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"id":5059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5370:7:36","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4787,"src":"5364:13:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":5060,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5033,"src":"5380:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":5061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5389:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5379:12:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}],"expression":{"id":5056,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5349:3:36","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5353:10:36","memberName":"encodeCall","nodeType":"MemberAccess","src":"5349:14:36","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5349:43:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5054,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"5322:19:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:71:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5065,"nodeType":"ExpressionStatement","src":"5322:71:36"},{"expression":{"arguments":[{"id":5067,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5031,"src":"5427:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},{"id":5068,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5039,"src":"5434:12:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5066,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"5407:19:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5070,"nodeType":"ExpressionStatement","src":"5407:40:36"}]}}]},"documentation":{"id":5028,"nodeType":"StructuredDocumentation","src":"4513:566:36","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"id":5074,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5093:12:36","nodeType":"FunctionDefinition","parameters":{"id":5036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5031,"mutability":"mutable","name":"token","nameLocation":"5113:5:36","nodeType":"VariableDeclaration","scope":5074,"src":"5106:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":5030,"nodeType":"UserDefinedTypeName","pathNode":{"id":5029,"name":"IERC20","nameLocations":["5106:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"5106:6:36"},"referencedDeclaration":4800,"src":"5106:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5033,"mutability":"mutable","name":"spender","nameLocation":"5128:7:36","nodeType":"VariableDeclaration","scope":5074,"src":"5120:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5032,"name":"address","nodeType":"ElementaryTypeName","src":"5120:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5035,"mutability":"mutable","name":"value","nameLocation":"5145:5:36","nodeType":"VariableDeclaration","scope":5074,"src":"5137:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5034,"name":"uint256","nodeType":"ElementaryTypeName","src":"5137:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:46:36"},"returnParameters":{"id":5037,"nodeType":"ParameterList","parameters":[],"src":"5161:0:36"},"scope":5290,"src":"5084:380:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5116,"nodeType":"Block","src":"5911:219:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5087,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"5925:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5928:4:36","memberName":"code","nodeType":"MemberAccess","src":"5925:7:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5933:6:36","memberName":"length","nodeType":"MemberAccess","src":"5925:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5943:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5925:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":5105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:39:36","subExpression":{"arguments":[{"id":5101,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"6034:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5082,"src":"6038:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5103,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5084,"src":"6045:4:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5099,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5078,"src":"6012:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},"id":5100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6018:15:36","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":4013,"src":"6012:21:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":5104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6012:38:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5114,"nodeType":"IfStatement","src":"6007:117:36","trueBody":{"id":5113,"nodeType":"Block","src":"6052:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5109,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5078,"src":"6106:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}],"id":5108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6098:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5107,"name":"address","nodeType":"ElementaryTypeName","src":"6098:7:36","typeDescriptions":{}}},"id":5110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6098:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5106,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4838,"src":"6073:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6073:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5112,"nodeType":"RevertStatement","src":"6066:47:36"}]}},"id":5115,"nodeType":"IfStatement","src":"5921:203:36","trueBody":{"id":5098,"nodeType":"Block","src":"5946:55:36","statements":[{"expression":{"arguments":[{"id":5093,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5078,"src":"5973:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},{"id":5094,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5080,"src":"5980:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5082,"src":"5984:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5092,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4871,"src":"5960:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5097,"nodeType":"ExpressionStatement","src":"5960:30:36"}]}}]},"documentation":{"id":5075,"nodeType":"StructuredDocumentation","src":"5470:333:36","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":5117,"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5817:22:36","nodeType":"FunctionDefinition","parameters":{"id":5085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5078,"mutability":"mutable","name":"token","nameLocation":"5849:5:36","nodeType":"VariableDeclaration","scope":5117,"src":"5840:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"},"typeName":{"id":5077,"nodeType":"UserDefinedTypeName","pathNode":{"id":5076,"name":"IERC1363","nameLocations":["5840:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":4062,"src":"5840:8:36"},"referencedDeclaration":4062,"src":"5840:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":5080,"mutability":"mutable","name":"to","nameLocation":"5864:2:36","nodeType":"VariableDeclaration","scope":5117,"src":"5856:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5079,"name":"address","nodeType":"ElementaryTypeName","src":"5856:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5082,"mutability":"mutable","name":"value","nameLocation":"5876:5:36","nodeType":"VariableDeclaration","scope":5117,"src":"5868:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5081,"name":"uint256","nodeType":"ElementaryTypeName","src":"5868:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5084,"mutability":"mutable","name":"data","nameLocation":"5896:4:36","nodeType":"VariableDeclaration","scope":5117,"src":"5883:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5083,"name":"bytes","nodeType":"ElementaryTypeName","src":"5883:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5839:62:36"},"returnParameters":{"id":5086,"nodeType":"ParameterList","parameters":[],"src":"5911:0:36"},"scope":5290,"src":"5808:322:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5163,"nodeType":"Block","src":"6649:239:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5132,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5125,"src":"6663:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6666:4:36","memberName":"code","nodeType":"MemberAccess","src":"6663:7:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:6:36","memberName":"length","nodeType":"MemberAccess","src":"6663:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6681:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6663:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6759:49:36","subExpression":{"arguments":[{"id":5147,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"6786:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5148,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5125,"src":"6792:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"6796:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5150,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"6803:4:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5145,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5121,"src":"6760:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},"id":5146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6766:19:36","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":4039,"src":"6760:25:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6760:48:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5161,"nodeType":"IfStatement","src":"6755:127:36","trueBody":{"id":5160,"nodeType":"Block","src":"6810:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5156,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5121,"src":"6864:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}],"id":5155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6856:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5154,"name":"address","nodeType":"ElementaryTypeName","src":"6856:7:36","typeDescriptions":{}}},"id":5157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6856:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5153,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4838,"src":"6831:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5159,"nodeType":"RevertStatement","src":"6824:47:36"}]}},"id":5162,"nodeType":"IfStatement","src":"6659:223:36","trueBody":{"id":5144,"nodeType":"Block","src":"6684:65:36","statements":[{"expression":{"arguments":[{"id":5138,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5121,"src":"6715:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},{"id":5139,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5123,"src":"6722:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5140,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5125,"src":"6728:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5141,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"6732:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5137,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4898,"src":"6698:16:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6698:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5143,"nodeType":"ExpressionStatement","src":"6698:40:36"}]}}]},"documentation":{"id":5118,"nodeType":"StructuredDocumentation","src":"6136:341:36","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":5164,"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6491:26:36","nodeType":"FunctionDefinition","parameters":{"id":5130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5121,"mutability":"mutable","name":"token","nameLocation":"6536:5:36","nodeType":"VariableDeclaration","scope":5164,"src":"6527:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"},"typeName":{"id":5120,"nodeType":"UserDefinedTypeName","pathNode":{"id":5119,"name":"IERC1363","nameLocations":["6527:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":4062,"src":"6527:8:36"},"referencedDeclaration":4062,"src":"6527:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":5123,"mutability":"mutable","name":"from","nameLocation":"6559:4:36","nodeType":"VariableDeclaration","scope":5164,"src":"6551:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5122,"name":"address","nodeType":"ElementaryTypeName","src":"6551:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5125,"mutability":"mutable","name":"to","nameLocation":"6581:2:36","nodeType":"VariableDeclaration","scope":5164,"src":"6573:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5124,"name":"address","nodeType":"ElementaryTypeName","src":"6573:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5127,"mutability":"mutable","name":"value","nameLocation":"6601:5:36","nodeType":"VariableDeclaration","scope":5164,"src":"6593:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5126,"name":"uint256","nodeType":"ElementaryTypeName","src":"6593:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5129,"mutability":"mutable","name":"data","nameLocation":"6629:4:36","nodeType":"VariableDeclaration","scope":5164,"src":"6616:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5128,"name":"bytes","nodeType":"ElementaryTypeName","src":"6616:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6517:122:36"},"returnParameters":{"id":5131,"nodeType":"ParameterList","parameters":[],"src":"6649:0:36"},"scope":5290,"src":"6482:406:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5206,"nodeType":"Block","src":"7655:218:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5177,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5170,"src":"7669:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7672:4:36","memberName":"code","nodeType":"MemberAccess","src":"7669:7:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7677:6:36","memberName":"length","nodeType":"MemberAccess","src":"7669:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7687:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7669:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":5195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7755:38:36","subExpression":{"arguments":[{"id":5191,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5170,"src":"7777:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5192,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"7781:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5193,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5174,"src":"7788:4:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5189,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5168,"src":"7756:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},"id":5190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7762:14:36","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"7756:20:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":5194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7756:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5204,"nodeType":"IfStatement","src":"7751:116:36","trueBody":{"id":5203,"nodeType":"Block","src":"7795:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5199,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5168,"src":"7849:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}],"id":5198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7841:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5197,"name":"address","nodeType":"ElementaryTypeName","src":"7841:7:36","typeDescriptions":{}}},"id":5200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7841:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5196,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4838,"src":"7816:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5202,"nodeType":"RevertStatement","src":"7809:47:36"}]}},"id":5205,"nodeType":"IfStatement","src":"7665:202:36","trueBody":{"id":5188,"nodeType":"Block","src":"7690:55:36","statements":[{"expression":{"arguments":[{"id":5183,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5168,"src":"7717:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},{"id":5184,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5170,"src":"7724:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"7728:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5182,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5074,"src":"7704:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4800_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5187,"nodeType":"ExpressionStatement","src":"7704:30:36"}]}}]},"documentation":{"id":5165,"nodeType":"StructuredDocumentation","src":"6894:654:36","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"id":5207,"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7562:21:36","nodeType":"FunctionDefinition","parameters":{"id":5175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5168,"mutability":"mutable","name":"token","nameLocation":"7593:5:36","nodeType":"VariableDeclaration","scope":5207,"src":"7584:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"},"typeName":{"id":5167,"nodeType":"UserDefinedTypeName","pathNode":{"id":5166,"name":"IERC1363","nameLocations":["7584:8:36"],"nodeType":"IdentifierPath","referencedDeclaration":4062,"src":"7584:8:36"},"referencedDeclaration":4062,"src":"7584:8:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4062","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":5170,"mutability":"mutable","name":"to","nameLocation":"7608:2:36","nodeType":"VariableDeclaration","scope":5207,"src":"7600:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5169,"name":"address","nodeType":"ElementaryTypeName","src":"7600:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5172,"mutability":"mutable","name":"value","nameLocation":"7620:5:36","nodeType":"VariableDeclaration","scope":5207,"src":"7612:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5171,"name":"uint256","nodeType":"ElementaryTypeName","src":"7612:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5174,"mutability":"mutable","name":"data","nameLocation":"7640:4:36","nodeType":"VariableDeclaration","scope":5207,"src":"7627:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5173,"name":"bytes","nodeType":"ElementaryTypeName","src":"7627:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7583:62:36"},"returnParameters":{"id":5176,"nodeType":"ParameterList","parameters":[],"src":"7655:0:36"},"scope":5290,"src":"7553:320:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5247,"nodeType":"Block","src":"8440:650:36","statements":[{"assignments":[5217],"declarations":[{"constant":false,"id":5217,"mutability":"mutable","name":"returnSize","nameLocation":"8458:10:36","nodeType":"VariableDeclaration","scope":5247,"src":"8450:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5216,"name":"uint256","nodeType":"ElementaryTypeName","src":"8450:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5218,"nodeType":"VariableDeclarationStatement","src":"8450:18:36"},{"assignments":[5220],"declarations":[{"constant":false,"id":5220,"mutability":"mutable","name":"returnValue","nameLocation":"8486:11:36","nodeType":"VariableDeclaration","scope":5247,"src":"8478:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5219,"name":"uint256","nodeType":"ElementaryTypeName","src":"8478:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5221,"nodeType":"VariableDeclarationStatement","src":"8478:19:36"},{"AST":{"nativeSrc":"8532:396:36","nodeType":"YulBlock","src":"8532:396:36","statements":[{"nativeSrc":"8546:75:36","nodeType":"YulVariableDeclaration","src":"8546:75:36","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8566:3:36","nodeType":"YulIdentifier","src":"8566:3:36"},"nativeSrc":"8566:5:36","nodeType":"YulFunctionCall","src":"8566:5:36"},{"name":"token","nativeSrc":"8573:5:36","nodeType":"YulIdentifier","src":"8573:5:36"},{"kind":"number","nativeSrc":"8580:1:36","nodeType":"YulLiteral","src":"8580:1:36","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"8587:4:36","nodeType":"YulIdentifier","src":"8587:4:36"},{"kind":"number","nativeSrc":"8593:4:36","nodeType":"YulLiteral","src":"8593:4:36","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8583:3:36","nodeType":"YulIdentifier","src":"8583:3:36"},"nativeSrc":"8583:15:36","nodeType":"YulFunctionCall","src":"8583:15:36"},{"arguments":[{"name":"data","nativeSrc":"8606:4:36","nodeType":"YulIdentifier","src":"8606:4:36"}],"functionName":{"name":"mload","nativeSrc":"8600:5:36","nodeType":"YulIdentifier","src":"8600:5:36"},"nativeSrc":"8600:11:36","nodeType":"YulFunctionCall","src":"8600:11:36"},{"kind":"number","nativeSrc":"8613:1:36","nodeType":"YulLiteral","src":"8613:1:36","type":"","value":"0"},{"kind":"number","nativeSrc":"8616:4:36","nodeType":"YulLiteral","src":"8616:4:36","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8561:4:36","nodeType":"YulIdentifier","src":"8561:4:36"},"nativeSrc":"8561:60:36","nodeType":"YulFunctionCall","src":"8561:60:36"},"variables":[{"name":"success","nativeSrc":"8550:7:36","nodeType":"YulTypedName","src":"8550:7:36","type":""}]},{"body":{"nativeSrc":"8682:157:36","nodeType":"YulBlock","src":"8682:157:36","statements":[{"nativeSrc":"8700:22:36","nodeType":"YulVariableDeclaration","src":"8700:22:36","value":{"arguments":[{"kind":"number","nativeSrc":"8717:4:36","nodeType":"YulLiteral","src":"8717:4:36","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8711:5:36","nodeType":"YulIdentifier","src":"8711:5:36"},"nativeSrc":"8711:11:36","nodeType":"YulFunctionCall","src":"8711:11:36"},"variables":[{"name":"ptr","nativeSrc":"8704:3:36","nodeType":"YulTypedName","src":"8704:3:36","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8754:3:36","nodeType":"YulIdentifier","src":"8754:3:36"},{"kind":"number","nativeSrc":"8759:1:36","nodeType":"YulLiteral","src":"8759:1:36","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8762:14:36","nodeType":"YulIdentifier","src":"8762:14:36"},"nativeSrc":"8762:16:36","nodeType":"YulFunctionCall","src":"8762:16:36"}],"functionName":{"name":"returndatacopy","nativeSrc":"8739:14:36","nodeType":"YulIdentifier","src":"8739:14:36"},"nativeSrc":"8739:40:36","nodeType":"YulFunctionCall","src":"8739:40:36"},"nativeSrc":"8739:40:36","nodeType":"YulExpressionStatement","src":"8739:40:36"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8803:3:36","nodeType":"YulIdentifier","src":"8803:3:36"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8808:14:36","nodeType":"YulIdentifier","src":"8808:14:36"},"nativeSrc":"8808:16:36","nodeType":"YulFunctionCall","src":"8808:16:36"}],"functionName":{"name":"revert","nativeSrc":"8796:6:36","nodeType":"YulIdentifier","src":"8796:6:36"},"nativeSrc":"8796:29:36","nodeType":"YulFunctionCall","src":"8796:29:36"},"nativeSrc":"8796:29:36","nodeType":"YulExpressionStatement","src":"8796:29:36"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"8673:7:36","nodeType":"YulIdentifier","src":"8673:7:36"}],"functionName":{"name":"iszero","nativeSrc":"8666:6:36","nodeType":"YulIdentifier","src":"8666:6:36"},"nativeSrc":"8666:15:36","nodeType":"YulFunctionCall","src":"8666:15:36"},"nativeSrc":"8663:176:36","nodeType":"YulIf","src":"8663:176:36"},{"nativeSrc":"8852:30:36","nodeType":"YulAssignment","src":"8852:30:36","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8866:14:36","nodeType":"YulIdentifier","src":"8866:14:36"},"nativeSrc":"8866:16:36","nodeType":"YulFunctionCall","src":"8866:16:36"},"variableNames":[{"name":"returnSize","nativeSrc":"8852:10:36","nodeType":"YulIdentifier","src":"8852:10:36"}]},{"nativeSrc":"8895:23:36","nodeType":"YulAssignment","src":"8895:23:36","value":{"arguments":[{"kind":"number","nativeSrc":"8916:1:36","nodeType":"YulLiteral","src":"8916:1:36","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"8910:5:36","nodeType":"YulIdentifier","src":"8910:5:36"},"nativeSrc":"8910:8:36","nodeType":"YulFunctionCall","src":"8910:8:36"},"variableNames":[{"name":"returnValue","nativeSrc":"8895:11:36","nodeType":"YulIdentifier","src":"8895:11:36"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5213,"isOffset":false,"isSlot":false,"src":"8587:4:36","valueSize":1},{"declaration":5213,"isOffset":false,"isSlot":false,"src":"8606:4:36","valueSize":1},{"declaration":5217,"isOffset":false,"isSlot":false,"src":"8852:10:36","valueSize":1},{"declaration":5220,"isOffset":false,"isSlot":false,"src":"8895:11:36","valueSize":1},{"declaration":5211,"isOffset":false,"isSlot":false,"src":"8573:5:36","valueSize":1}],"flags":["memory-safe"],"id":5222,"nodeType":"InlineAssembly","src":"8507:421:36"},{"condition":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5223,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5217,"src":"8942:10:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8956:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8942:15:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5234,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5220,"src":"8994:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":5235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9009:1:36","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8994:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8942:68:36","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":5228,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"8968:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}],"id":5227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8960:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5226,"name":"address","nodeType":"ElementaryTypeName","src":"8960:7:36","typeDescriptions":{}}},"id":5229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8960:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:36","memberName":"code","nodeType":"MemberAccess","src":"8960:19:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8980:6:36","memberName":"length","nodeType":"MemberAccess","src":"8960:26:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8960:31:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5246,"nodeType":"IfStatement","src":"8938:146:36","trueBody":{"id":5245,"nodeType":"Block","src":"9012:72:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5241,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"9066:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}],"id":5240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9058:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5239,"name":"address","nodeType":"ElementaryTypeName","src":"9058:7:36","typeDescriptions":{}}},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9058:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5238,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4838,"src":"9033:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9033:40:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5244,"nodeType":"RevertStatement","src":"9026:47:36"}]}}]},"documentation":{"id":5208,"nodeType":"StructuredDocumentation","src":"7879:486:36","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements."},"id":5248,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"8379:19:36","nodeType":"FunctionDefinition","parameters":{"id":5214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5211,"mutability":"mutable","name":"token","nameLocation":"8406:5:36","nodeType":"VariableDeclaration","scope":5248,"src":"8399:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":5210,"nodeType":"UserDefinedTypeName","pathNode":{"id":5209,"name":"IERC20","nameLocations":["8399:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"8399:6:36"},"referencedDeclaration":4800,"src":"8399:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5213,"mutability":"mutable","name":"data","nameLocation":"8426:4:36","nodeType":"VariableDeclaration","scope":5248,"src":"8413:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5212,"name":"bytes","nodeType":"ElementaryTypeName","src":"8413:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8398:33:36"},"returnParameters":{"id":5215,"nodeType":"ParameterList","parameters":[],"src":"8440:0:36"},"scope":5290,"src":"8370:720:36","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5288,"nodeType":"Block","src":"9681:391:36","statements":[{"assignments":[5260],"declarations":[{"constant":false,"id":5260,"mutability":"mutable","name":"success","nameLocation":"9696:7:36","nodeType":"VariableDeclaration","scope":5288,"src":"9691:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5259,"name":"bool","nodeType":"ElementaryTypeName","src":"9691:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5261,"nodeType":"VariableDeclarationStatement","src":"9691:12:36"},{"assignments":[5263],"declarations":[{"constant":false,"id":5263,"mutability":"mutable","name":"returnSize","nameLocation":"9721:10:36","nodeType":"VariableDeclaration","scope":5288,"src":"9713:18:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5262,"name":"uint256","nodeType":"ElementaryTypeName","src":"9713:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5264,"nodeType":"VariableDeclarationStatement","src":"9713:18:36"},{"assignments":[5266],"declarations":[{"constant":false,"id":5266,"mutability":"mutable","name":"returnValue","nameLocation":"9749:11:36","nodeType":"VariableDeclaration","scope":5288,"src":"9741:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5265,"name":"uint256","nodeType":"ElementaryTypeName","src":"9741:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5267,"nodeType":"VariableDeclarationStatement","src":"9741:19:36"},{"AST":{"nativeSrc":"9795:174:36","nodeType":"YulBlock","src":"9795:174:36","statements":[{"nativeSrc":"9809:71:36","nodeType":"YulAssignment","src":"9809:71:36","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"9825:3:36","nodeType":"YulIdentifier","src":"9825:3:36"},"nativeSrc":"9825:5:36","nodeType":"YulFunctionCall","src":"9825:5:36"},{"name":"token","nativeSrc":"9832:5:36","nodeType":"YulIdentifier","src":"9832:5:36"},{"kind":"number","nativeSrc":"9839:1:36","nodeType":"YulLiteral","src":"9839:1:36","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"9846:4:36","nodeType":"YulIdentifier","src":"9846:4:36"},{"kind":"number","nativeSrc":"9852:4:36","nodeType":"YulLiteral","src":"9852:4:36","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9842:3:36","nodeType":"YulIdentifier","src":"9842:3:36"},"nativeSrc":"9842:15:36","nodeType":"YulFunctionCall","src":"9842:15:36"},{"arguments":[{"name":"data","nativeSrc":"9865:4:36","nodeType":"YulIdentifier","src":"9865:4:36"}],"functionName":{"name":"mload","nativeSrc":"9859:5:36","nodeType":"YulIdentifier","src":"9859:5:36"},"nativeSrc":"9859:11:36","nodeType":"YulFunctionCall","src":"9859:11:36"},{"kind":"number","nativeSrc":"9872:1:36","nodeType":"YulLiteral","src":"9872:1:36","type":"","value":"0"},{"kind":"number","nativeSrc":"9875:4:36","nodeType":"YulLiteral","src":"9875:4:36","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"9820:4:36","nodeType":"YulIdentifier","src":"9820:4:36"},"nativeSrc":"9820:60:36","nodeType":"YulFunctionCall","src":"9820:60:36"},"variableNames":[{"name":"success","nativeSrc":"9809:7:36","nodeType":"YulIdentifier","src":"9809:7:36"}]},{"nativeSrc":"9893:30:36","nodeType":"YulAssignment","src":"9893:30:36","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9907:14:36","nodeType":"YulIdentifier","src":"9907:14:36"},"nativeSrc":"9907:16:36","nodeType":"YulFunctionCall","src":"9907:16:36"},"variableNames":[{"name":"returnSize","nativeSrc":"9893:10:36","nodeType":"YulIdentifier","src":"9893:10:36"}]},{"nativeSrc":"9936:23:36","nodeType":"YulAssignment","src":"9936:23:36","value":{"arguments":[{"kind":"number","nativeSrc":"9957:1:36","nodeType":"YulLiteral","src":"9957:1:36","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"9951:5:36","nodeType":"YulIdentifier","src":"9951:5:36"},"nativeSrc":"9951:8:36","nodeType":"YulFunctionCall","src":"9951:8:36"},"variableNames":[{"name":"returnValue","nativeSrc":"9936:11:36","nodeType":"YulIdentifier","src":"9936:11:36"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5254,"isOffset":false,"isSlot":false,"src":"9846:4:36","valueSize":1},{"declaration":5254,"isOffset":false,"isSlot":false,"src":"9865:4:36","valueSize":1},{"declaration":5263,"isOffset":false,"isSlot":false,"src":"9893:10:36","valueSize":1},{"declaration":5266,"isOffset":false,"isSlot":false,"src":"9936:11:36","valueSize":1},{"declaration":5260,"isOffset":false,"isSlot":false,"src":"9809:7:36","valueSize":1},{"declaration":5252,"isOffset":false,"isSlot":false,"src":"9832:5:36","valueSize":1}],"flags":["memory-safe"],"id":5268,"nodeType":"InlineAssembly","src":"9770:199:36"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5269,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5260,"src":"9985:7:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5270,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5263,"src":"9997:10:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10011:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9997:15:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5281,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"10048:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":5282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10063:1:36","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10048:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9997:67:36","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":5275,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5252,"src":"10023:5:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}],"id":5274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10015:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5273,"name":"address","nodeType":"ElementaryTypeName","src":"10015:7:36","typeDescriptions":{}}},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10015:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10030:4:36","memberName":"code","nodeType":"MemberAccess","src":"10015:19:36","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10035:6:36","memberName":"length","nodeType":"MemberAccess","src":"10015:26:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10044:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10015:30:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5285,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9996:69:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9985:80:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5258,"id":5287,"nodeType":"Return","src":"9978:87:36"}]},"documentation":{"id":5249,"nodeType":"StructuredDocumentation","src":"9096:491:36","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead."},"id":5289,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"9601:23:36","nodeType":"FunctionDefinition","parameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"mutability":"mutable","name":"token","nameLocation":"9632:5:36","nodeType":"VariableDeclaration","scope":5289,"src":"9625:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"},"typeName":{"id":5251,"nodeType":"UserDefinedTypeName","pathNode":{"id":5250,"name":"IERC20","nameLocations":["9625:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4800,"src":"9625:6:36"},"referencedDeclaration":4800,"src":"9625:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4800","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5254,"mutability":"mutable","name":"data","nameLocation":"9652:4:36","nodeType":"VariableDeclaration","scope":5289,"src":"9639:17:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5253,"name":"bytes","nodeType":"ElementaryTypeName","src":"9639:5:36","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9624:33:36"},"returnParameters":{"id":5258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5257,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5289,"src":"9675:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5256,"name":"bool","nodeType":"ElementaryTypeName","src":"9675:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9674:6:36"},"scope":5290,"src":"9592:480:36","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":5291,"src":"698:9376:36","usedErrors":[4838,4847],"usedEvents":[]}],"src":"115:9960:36"},"id":36},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[5320]},"id":5321,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5292,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:37"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":5293,"nodeType":"StructuredDocumentation","src":"127:496:37","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":5320,"linearizedBaseContracts":[5320],"name":"Context","nameLocation":"642:7:37","nodeType":"ContractDefinition","nodes":[{"body":{"id":5301,"nodeType":"Block","src":"718:34:37","statements":[{"expression":{"expression":{"id":5298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:37","memberName":"sender","nodeType":"MemberAccess","src":"735:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5297,"id":5300,"nodeType":"Return","src":"728:17:37"}]},"id":5302,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:37","nodeType":"FunctionDefinition","parameters":{"id":5294,"nodeType":"ParameterList","parameters":[],"src":"675:2:37"},"returnParameters":{"id":5297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5302,"src":"709:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5295,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:37"},"scope":5320,"src":"656:96:37","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5310,"nodeType":"Block","src":"825:32:37","statements":[{"expression":{"expression":{"id":5307,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:37","memberName":"data","nodeType":"MemberAccess","src":"842:8:37","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":5306,"id":5309,"nodeType":"Return","src":"835:15:37"}]},"id":5311,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:37","nodeType":"FunctionDefinition","parameters":{"id":5303,"nodeType":"ParameterList","parameters":[],"src":"775:2:37"},"returnParameters":{"id":5306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5311,"src":"809:14:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5304,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:37"},"scope":5320,"src":"758:99:37","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5318,"nodeType":"Block","src":"935:25:37","statements":[{"expression":{"hexValue":"30","id":5316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":5315,"id":5317,"nodeType":"Return","src":"945:8:37"}]},"id":5319,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:37","nodeType":"FunctionDefinition","parameters":{"id":5312,"nodeType":"ParameterList","parameters":[],"src":"892:2:37"},"returnParameters":{"id":5315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5319,"src":"926:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5313,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:37"},"scope":5320,"src":"863:97:37","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":5321,"src":"624:338:37","usedErrors":[],"usedEvents":[]}],"src":"101:862:37"},"id":37},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[5332]},"id":5333,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5322,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:38"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":5323,"nodeType":"StructuredDocumentation","src":"141:280:38","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":5332,"linearizedBaseContracts":[5332],"name":"IERC165","nameLocation":"432:7:38","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5324,"nodeType":"StructuredDocumentation","src":"446:340:38","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":5331,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"800:17:38","nodeType":"FunctionDefinition","parameters":{"id":5327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5326,"mutability":"mutable","name":"interfaceId","nameLocation":"825:11:38","nodeType":"VariableDeclaration","scope":5331,"src":"818:18:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5325,"name":"bytes4","nodeType":"ElementaryTypeName","src":"818:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"817:20:38"},"returnParameters":{"id":5330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5329,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5331,"src":"861:4:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5328,"name":"bool","nodeType":"ElementaryTypeName","src":"861:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"860:6:38"},"scope":5332,"src":"791:76:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5333,"src":"422:447:38","usedErrors":[],"usedEvents":[]}],"src":"115:755:38"},"id":38},"contracts/SSE.sol":{"ast":{"absolutePath":"contracts/SSE.sol","exportedSymbols":{"OFT":[2736],"Ownable":[3980],"SSE":[5468]},"id":5469,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5334,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:39"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":5336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5469,"sourceUnit":3981,"src":"58:67:39","symbolAliases":[{"foreign":{"id":5335,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"66:7:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFT.sol","file":"@layerzerolabs/oft-evm/contracts/OFT.sol","id":5338,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5469,"sourceUnit":2737,"src":"126:61:39","symbolAliases":[{"foreign":{"id":5337,"name":"OFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"134:3:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5339,"name":"OFT","nameLocations":["205:3:39"],"nodeType":"IdentifierPath","referencedDeclaration":2736,"src":"205:3:39"},"id":5340,"nodeType":"InheritanceSpecifier","src":"205:3:39"}],"canonicalName":"SSE","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5468,"linearizedBaseContracts":[5468,2736,4722,4112,4826,4800,3365,2149,2323,1371,1653,1839,1501,3980,5320,1964,2377,1902,1985,238,3509],"name":"SSE","nameLocation":"198:3:39","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"32cb6b0c","id":5347,"mutability":"constant","name":"MAX_SUPPLY","nameLocation":"239:10:39","nodeType":"VariableDeclaration","scope":5468,"src":"215:58:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5341,"name":"uint256","nodeType":"ElementaryTypeName","src":"215:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_20000000000000000000000000_by_1","typeString":"int_const 20000000000000000000000000"},"id":5346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32305f3030305f303030","id":5342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"252:10:39","typeDescriptions":{"typeIdentifier":"t_rational_20000000_by_1","typeString":"int_const 20000000"},"value":"20_000_000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":5345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"265:2:39","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":5344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"271:2:39","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"265:8:39","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"252:21:39","typeDescriptions":{"typeIdentifier":"t_rational_20000000000000000000000000_by_1","typeString":"int_const 20000000000000000000000000"}},"visibility":"public"},{"errorSelector":"8a164f63","id":5349,"name":"MaxSupplyExceeded","nameLocation":"286:17:39","nodeType":"ErrorDefinition","parameters":{"id":5348,"nodeType":"ParameterList","parameters":[],"src":"303:2:39"},"src":"280:26:39"},{"body":{"id":5369,"nodeType":"Block","src":"509:2:39","statements":[]},"id":5370,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5360,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5351,"src":"450:5:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5361,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5353,"src":"457:7:39","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5362,"name":"_lzEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5355,"src":"466:11:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5363,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5357,"src":"479:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5364,"kind":"baseConstructorSpecifier","modifierName":{"id":5359,"name":"OFT","nameLocations":["446:3:39"],"nodeType":"IdentifierPath","referencedDeclaration":2736,"src":"446:3:39"},"nodeType":"ModifierInvocation","src":"446:43:39"},{"arguments":[{"id":5366,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5357,"src":"498:9:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5367,"kind":"baseConstructorSpecifier","modifierName":{"id":5365,"name":"Ownable","nameLocations":["490:7:39"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"490:7:39"},"nodeType":"ModifierInvocation","src":"490:18:39"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5351,"mutability":"mutable","name":"_name","nameLocation":"347:5:39","nodeType":"VariableDeclaration","scope":5370,"src":"333:19:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5350,"name":"string","nodeType":"ElementaryTypeName","src":"333:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5353,"mutability":"mutable","name":"_symbol","nameLocation":"376:7:39","nodeType":"VariableDeclaration","scope":5370,"src":"362:21:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5352,"name":"string","nodeType":"ElementaryTypeName","src":"362:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5355,"mutability":"mutable","name":"_lzEndpoint","nameLocation":"401:11:39","nodeType":"VariableDeclaration","scope":5370,"src":"393:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5354,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5357,"mutability":"mutable","name":"_delegate","nameLocation":"430:9:39","nodeType":"VariableDeclaration","scope":5370,"src":"422:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5356,"name":"address","nodeType":"ElementaryTypeName","src":"422:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"323:122:39"},"returnParameters":{"id":5368,"nodeType":"ParameterList","parameters":[],"src":"509:0:39"},"scope":5468,"src":"312:199:39","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5396,"nodeType":"Block","src":"749:138:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5380,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"763:11:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"763:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5382,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"779:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:23:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5384,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"789:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:36:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5390,"nodeType":"IfStatement","src":"759:93:39","trueBody":{"id":5389,"nodeType":"Block","src":"801:51:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5386,"name":"MaxSupplyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5349,"src":"822:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"822:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5388,"nodeType":"RevertStatement","src":"815:26:39"}]}},{"expression":{"arguments":[{"id":5392,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5373,"src":"867:3:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5393,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"872:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5391,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4562,"src":"861:5:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"861:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5395,"nodeType":"ExpressionStatement","src":"861:19:39"}]},"documentation":{"id":5371,"nodeType":"StructuredDocumentation","src":"517:164:39","text":" @dev Mints new tokens to the specified address\n @param _to The address to mint tokens to\n @param _amount The amount of tokens to mint"},"functionSelector":"40c10f19","id":5397,"implemented":true,"kind":"function","modifiers":[{"id":5378,"kind":"modifierInvocation","modifierName":{"id":5377,"name":"onlyOwner","nameLocations":["739:9:39"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"739:9:39"},"nodeType":"ModifierInvocation","src":"739:9:39"}],"name":"mint","nameLocation":"695:4:39","nodeType":"FunctionDefinition","parameters":{"id":5376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5373,"mutability":"mutable","name":"_to","nameLocation":"708:3:39","nodeType":"VariableDeclaration","scope":5397,"src":"700:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5372,"name":"address","nodeType":"ElementaryTypeName","src":"700:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5375,"mutability":"mutable","name":"_amount","nameLocation":"721:7:39","nodeType":"VariableDeclaration","scope":5397,"src":"713:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5374,"name":"uint256","nodeType":"ElementaryTypeName","src":"713:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"699:30:39"},"returnParameters":{"id":5379,"nodeType":"ParameterList","parameters":[],"src":"749:0:39"},"scope":5468,"src":"686:201:39","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2735],"body":{"id":5428,"nodeType":"Block","src":"1158:218:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5410,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"1224:11:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1224:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5412,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"1240:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1224:25:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5414,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"1252:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1224:38:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5420,"nodeType":"IfStatement","src":"1220:95:39","trueBody":{"id":5419,"nodeType":"Block","src":"1264:51:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5416,"name":"MaxSupplyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5349,"src":"1285:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1285:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5418,"nodeType":"RevertStatement","src":"1278:26:39"}]}},{"expression":{"arguments":[{"id":5423,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5400,"src":"1345:3:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5424,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"1350:9:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5425,"name":"_srcEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5404,"src":"1361:7:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":5421,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1331:5:39","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SSE_$5468_$","typeString":"type(contract super SSE)"}},"id":5422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1337:7:39","memberName":"_credit","nodeType":"MemberAccess","referencedDeclaration":2735,"src":"1331:13:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$returns$_t_uint256_$","typeString":"function (address,uint256,uint32) returns (uint256)"}},"id":5426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5409,"id":5427,"nodeType":"Return","src":"1324:45:39"}]},"documentation":{"id":5398,"nodeType":"StructuredDocumentation","src":"893:104:39","text":" @dev Override _credit method to enforce max supply limit during cross-chain transfers"},"id":5429,"implemented":true,"kind":"function","modifiers":[],"name":"_credit","nameLocation":"1011:7:39","nodeType":"FunctionDefinition","overrides":{"id":5406,"nodeType":"OverrideSpecifier","overrides":[],"src":"1114:8:39"},"parameters":{"id":5405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5400,"mutability":"mutable","name":"_to","nameLocation":"1036:3:39","nodeType":"VariableDeclaration","scope":5429,"src":"1028:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5399,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5402,"mutability":"mutable","name":"_amountLD","nameLocation":"1057:9:39","nodeType":"VariableDeclaration","scope":5429,"src":"1049:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5401,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5404,"mutability":"mutable","name":"_srcEid","nameLocation":"1083:7:39","nodeType":"VariableDeclaration","scope":5429,"src":"1076:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5403,"name":"uint32","nodeType":"ElementaryTypeName","src":"1076:6:39","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1018:78:39"},"returnParameters":{"id":5409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5408,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"1140:16:39","nodeType":"VariableDeclaration","scope":5429,"src":"1132:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5407,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1131:26:39"},"scope":5468,"src":"1002:374:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4529],"body":{"id":5466,"nodeType":"Block","src":"1657:171:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5440,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"1671:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1687:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1679:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5441,"name":"address","nodeType":"ElementaryTypeName","src":"1679:7:39","typeDescriptions":{}}},"id":5444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1679:10:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:18:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5446,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"1693:11:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1693:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5448,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"1709:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1693:22:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5450,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"1718:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1693:35:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1671:57:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5457,"nodeType":"IfStatement","src":"1667:114:39","trueBody":{"id":5456,"nodeType":"Block","src":"1730:51:39","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5453,"name":"MaxSupplyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5349,"src":"1751:17:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1751:19:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5455,"nodeType":"RevertStatement","src":"1744:26:39"}]}},{"expression":{"arguments":[{"id":5461,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"1804:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5462,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"1810:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5463,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"1814:6:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5458,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1790:5:39","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SSE_$5468_$","typeString":"type(contract super SSE)"}},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1796:7:39","memberName":"_update","nodeType":"MemberAccess","referencedDeclaration":4529,"src":"1790:13:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1790:31:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5465,"nodeType":"ExpressionStatement","src":"1790:31:39"}]},"documentation":{"id":5430,"nodeType":"StructuredDocumentation","src":"1382:155:39","text":" @dev Override _update to enforce max supply limit for all minting operations\n This is used by both _mint and cross-chain transfers"},"id":5467,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"1551:7:39","nodeType":"FunctionDefinition","overrides":{"id":5438,"nodeType":"OverrideSpecifier","overrides":[],"src":"1648:8:39"},"parameters":{"id":5437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5432,"mutability":"mutable","name":"from","nameLocation":"1576:4:39","nodeType":"VariableDeclaration","scope":5467,"src":"1568:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5431,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5434,"mutability":"mutable","name":"to","nameLocation":"1598:2:39","nodeType":"VariableDeclaration","scope":5467,"src":"1590:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5433,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5436,"mutability":"mutable","name":"amount","nameLocation":"1618:6:39","nodeType":"VariableDeclaration","scope":5467,"src":"1610:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5435,"name":"uint256","nodeType":"ElementaryTypeName","src":"1610:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1558:72:39"},"returnParameters":{"id":5439,"nodeType":"ParameterList","parameters":[],"src":"1657:0:39"},"scope":5468,"src":"1542:286:39","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":5469,"src":"189:1641:39","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4082,4087,4092,4101,4106,4111,4838,5349],"usedEvents":[1864,1943,2340,2790,3425,3435,3857,4734,4743]}],"src":"32:1799:39"},"id":39}},"contracts":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"ILayerZeroEndpointV2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"}],"name":"ComposeDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"ComposeSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"DefaultReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultSendLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"}],"name":"DelegateSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"InboundNonceSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"LibraryRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzComposeAlert","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzReceiveAlert","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"LzTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketBurnt","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"PacketDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketNilified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"encodedPayload","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"options","type":"bytes"},{"indexed":false,"internalType":"address","name":"sendLibrary","type":"address"}],"name":"PacketSent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketVerified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"ReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"ReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"SendLibrarySet","type":"event"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"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"}],"name":"clear","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"}],"name":"composeQueue","outputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultSendLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eid","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getReceiveLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"bool","name":"isDefault","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredLibraries","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSendContext","outputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getSendLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"inboundPayloadHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"address","name":"_receiver","type":"address"}],"name":"initializable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isDefaultSendLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"isRegisteredLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"}],"name":"isValidReceiveLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"lazyInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzCompose","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":"address","name":"_receiver","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lzToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"nextGuid","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"nilify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"},{"internalType":"bool","name":"payInLzToken","type":"bool"}],"internalType":"struct MessagingParams","name":"_params","type":"tuple"},{"internalType":"address","name":"_sender","type":"address"}],"name":"quote","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"receiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"registerLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"},{"internalType":"bool","name":"payInLzToken","type":"bool"}],"internalType":"struct MessagingParams","name":"_params","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":"","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"sendCompose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setDefaultReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setDefaultReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setDefaultSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzToken","type":"address"}],"name":"setLzToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"skip","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"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"verifiable","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":"address","name":"_receiver","type":"address"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"verify","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(address,uint32,bytes32,uint64,bytes32)":"40f80683","clear(address,(uint32,bytes32,uint64),bytes32,bytes)":"2a56c1b0","composeQueue(address,address,bytes32,uint16)":"35d330b0","defaultReceiveLibrary(uint32)":"6f50a803","defaultReceiveLibraryTimeout(uint32)":"6e83f5bb","defaultSendLibrary(uint32)":"f64be4c7","eid()":"416ecebf","getConfig(address,address,uint32,uint32)":"2b3197b9","getReceiveLibrary(address,uint32)":"402f8468","getRegisteredLibraries()":"9132e5c3","getSendContext()":"14f651a9","getSendLibrary(address,uint32)":"b96a277f","inboundNonce(address,uint32,bytes32)":"a0dd43fc","inboundPayloadHash(address,uint32,bytes32,uint64)":"c9fc7bcd","initializable((uint32,bytes32,uint64),address)":"861e1ca5","isDefaultSendLibrary(address,uint32)":"dc93c8a2","isRegisteredLibrary(address)":"dc706a62","isSendingMessage()":"79624ca9","isSupportedEid(uint32)":"6750cd4c","isValidReceiveLibrary(address,uint32,address)":"9d7f9775","lazyInboundNonce(address,uint32,bytes32)":"5b17bb70","lzCompose(address,address,bytes32,uint16,bytes,bytes)":"91d20fa1","lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)":"0c0c389e","lzToken()":"e4fe1d94","nativeToken()":"e1758bd8","nextGuid(address,uint32,bytes32)":"aafe5e07","nilify(address,uint32,bytes32,uint64,bytes32)":"2e80fbf3","outboundNonce(address,uint32,bytes32)":"9c6d7340","quote((uint32,bytes32,bytes,bytes,bool),address)":"ddc28c58","receiveLibraryTimeout(address,uint32)":"ef667aa1","registerLibrary(address)":"e8964e81","send((uint32,bytes32,bytes,bytes,bool),address)":"2637a450","sendCompose(address,bytes32,uint16,bytes)":"7cb59012","setConfig(address,address,(uint32,uint32,bytes)[])":"6dbd9f90","setDefaultReceiveLibrary(uint32,address,uint256)":"a718531b","setDefaultReceiveLibraryTimeout(uint32,address,uint256)":"d4b4ec8f","setDefaultSendLibrary(uint32,address)":"aafea312","setDelegate(address)":"ca5eb5e1","setLzToken(address)":"c28e0eed","setReceiveLibrary(address,uint32,address,uint256)":"6a14d715","setReceiveLibraryTimeout(address,uint32,address,uint256)":"183c834f","setSendLibrary(address,uint32,address)":"9535ff30","skip(address,uint32,bytes32,uint64)":"d70b8902","verifiable((uint32,bytes32,uint64),address)":"c9a54a99","verify((uint32,bytes32,uint64),address,bytes32)":"a825d747"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"ComposeDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ComposeSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"DefaultReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultSendLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"DelegateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InboundNonceSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"LibraryRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzComposeAlert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzReceiveAlert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LzTokenSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketBurnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"PacketDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketNilified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"encodedPayload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sendLibrary\",\"type\":\"address\"}],\"name\":\"PacketSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"ReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"ReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"SendLibrarySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"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\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"}],\"name\":\"composeQueue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegisteredLibraries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSendContext\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"inboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"inboundPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"initializable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isDefaultSendLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isRegisteredLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSendingMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isValidReceiveLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"lazyInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"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\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lzToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"nextGuid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"nilify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"outboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"payInLzToken\",\"type\":\"bool\"}],\"internalType\":\"struct MessagingParams\",\"name\":\"_params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"quote\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"receiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"registerLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"payInLzToken\",\"type\":\"bool\"}],\"internalType\":\"struct MessagingParams\",\"name\":\"_params\",\"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\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendCompose\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setDefaultSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lzToken\",\"type\":\"address\"}],\"name\":\"setLzToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skip\",\"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\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"verifiable\",\"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\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSendLibrary(address,uint32,address)\":{\"notice\":\"------------------- OApp interfaces -------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":\"ILayerZeroEndpointV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"setSendLibrary(address,uint32,address)":{"notice":"------------------- OApp interfaces -------------------"}},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"ILayerZeroReceiver":{"abi":[{"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":[{"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":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":\"ILayerZeroReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"IMessageLib":{"abi":[{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageLibType","outputs":[{"internalType":"enum MessageLibType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_config","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint8","name":"minor","type":"uint8"},{"internalType":"uint8","name":"endpointVersion","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getConfig(uint32,address,uint32)":"9c33abf7","isSupportedEid(uint32)":"6750cd4c","messageLibType()":"1881d94d","setConfig(address,(uint32,uint32,bytes)[])":"20efd722","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageLibType\",\"outputs\":[{\"internalType\":\"enum MessageLibType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_config\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"endpointVersion\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":\"IMessageLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"IMessageLibManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"DefaultReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultSendLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"LibraryRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"ReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"ReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"SendLibrarySet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultSendLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getReceiveLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"bool","name":"isDefault","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredLibraries","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getSendLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isDefaultSendLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"isRegisteredLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"}],"name":"isValidReceiveLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"receiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"registerLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setDefaultReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setDefaultReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setDefaultSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"defaultReceiveLibrary(uint32)":"6f50a803","defaultReceiveLibraryTimeout(uint32)":"6e83f5bb","defaultSendLibrary(uint32)":"f64be4c7","getConfig(address,address,uint32,uint32)":"2b3197b9","getReceiveLibrary(address,uint32)":"402f8468","getRegisteredLibraries()":"9132e5c3","getSendLibrary(address,uint32)":"b96a277f","isDefaultSendLibrary(address,uint32)":"dc93c8a2","isRegisteredLibrary(address)":"dc706a62","isSupportedEid(uint32)":"6750cd4c","isValidReceiveLibrary(address,uint32,address)":"9d7f9775","receiveLibraryTimeout(address,uint32)":"ef667aa1","registerLibrary(address)":"e8964e81","setConfig(address,address,(uint32,uint32,bytes)[])":"6dbd9f90","setDefaultReceiveLibrary(uint32,address,uint256)":"a718531b","setDefaultReceiveLibraryTimeout(uint32,address,uint256)":"d4b4ec8f","setDefaultSendLibrary(uint32,address)":"aafea312","setReceiveLibrary(address,uint32,address,uint256)":"6a14d715","setReceiveLibraryTimeout(address,uint32,address,uint256)":"183c834f","setSendLibrary(address,uint32,address)":"9535ff30"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"DefaultReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultSendLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"LibraryRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"ReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"ReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"SendLibrarySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegisteredLibraries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isDefaultSendLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isRegisteredLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isValidReceiveLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"receiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"registerLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setDefaultSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSendLibrary(address,uint32,address)\":{\"notice\":\"------------------- OApp interfaces -------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":\"IMessageLibManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"setSendLibrary(address,uint32,address)":{"notice":"------------------- OApp interfaces -------------------"}},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"IMessagingChannel":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"InboundNonceSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketNilified","type":"event"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eid","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"inboundPayloadHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"lazyInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"nextGuid","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"nilify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"skip","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(address,uint32,bytes32,uint64,bytes32)":"40f80683","eid()":"416ecebf","inboundNonce(address,uint32,bytes32)":"a0dd43fc","inboundPayloadHash(address,uint32,bytes32,uint64)":"c9fc7bcd","lazyInboundNonce(address,uint32,bytes32)":"5b17bb70","nextGuid(address,uint32,bytes32)":"aafe5e07","nilify(address,uint32,bytes32,uint64,bytes32)":"2e80fbf3","outboundNonce(address,uint32,bytes32)":"9c6d7340","skip(address,uint32,bytes32,uint64)":"d70b8902"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InboundNonceSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketBurnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketNilified\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"inboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"inboundPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"lazyInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"nextGuid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"nilify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"outboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":\"IMessagingChannel\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"IMessagingComposer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"}],"name":"ComposeDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"ComposeSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzComposeAlert","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"}],"name":"composeQueue","outputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzCompose","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"sendCompose","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"composeQueue(address,address,bytes32,uint16)":"35d330b0","lzCompose(address,address,bytes32,uint16,bytes,bytes)":"91d20fa1","sendCompose(address,bytes32,uint16,bytes)":"7cb59012"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"ComposeDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ComposeSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzComposeAlert\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"}],\"name\":\"composeQueue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendCompose\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":\"IMessagingComposer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"IMessagingContext":{"abi":[{"inputs":[],"name":"getSendContext","outputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getSendContext()":"14f651a9","isSendingMessage()":"79624ca9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getSendContext\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSendingMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":\"IMessagingContext\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"ISendLib":{"abi":[{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageLibType","outputs":[{"internalType":"enum MessageLibType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Packet","name":"_packet","type":"tuple"},{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quote","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Packet","name":"_packet","type":"tuple"},{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"send","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"},{"internalType":"bytes","name":"encodedPacket","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_config","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint8","name":"minor","type":"uint8"},{"internalType":"uint8","name":"endpointVersion","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawLzTokenFee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getConfig(uint32,address,uint32)":"9c33abf7","isSupportedEid(uint32)":"6750cd4c","messageLibType()":"1881d94d","quote((uint64,uint32,address,uint32,bytes32,bytes32,bytes),bytes,bool)":"d80e9bd9","send((uint64,uint32,address,uint32,bytes32,bytes32,bytes),bytes,bool)":"4389e58f","setConfig(address,(uint32,uint32,bytes)[])":"20efd722","setTreasury(address)":"f0f44260","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50","withdrawFee(address,uint256)":"fd9be522","withdrawLzTokenFee(address,address,uint256)":"200175f7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageLibType\",\"outputs\":[{\"internalType\":\"enum MessageLibType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Packet\",\"name\":\"_packet\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quote\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Packet\",\"name\":\"_packet\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"encodedPacket\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_config\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"endpointVersion\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lzToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawLzTokenFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":\"ISendLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"AddressCast":{"abi":[{"inputs":[],"name":"AddressCast_InvalidAddress","type":"error"},{"inputs":[],"name":"AddressCast_InvalidSizeForAddress","type":"error"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9fd6f83f7151bb37237a445fc26d23d9033693b1cec5740757a2e2cb985bef064736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 REVERT PUSH16 0x83F7151BB37237A445FC26D23D903369 EXTCODESIZE SHR 0xEC JUMPI BLOCKHASH PUSH22 0x7A2E2CB985BEF064736F6C634300081C003300000000 ","sourceMap":"64:1401:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;64:1401:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9fd6f83f7151bb37237a445fc26d23d9033693b1cec5740757a2e2cb985bef064736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 REVERT PUSH16 0x83F7151BB37237A445FC26D23D903369 EXTCODESIZE SHR 0xEC JUMPI BLOCKHASH PUSH22 0x7A2E2CB985BEF064736F6C634300081C003300000000 ","sourceMap":"64:1401:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"toAddress(bytes calldata)":"infinite","toAddress(bytes32)":"infinite","toBytes(bytes32,uint256)":"infinite","toBytes32(address)":"infinite","toBytes32(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AddressCast_InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AddressCast_InvalidSizeForAddress\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":\"AddressCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"PacketV1Codec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ac3df9aca75e7705e45c5d5e7514aeb52d88696b5da47671e8f35bec124def464736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC3 0xDF SWAP11 0xCA PUSH22 0xE7705E45C5D5E7514AEB52D88696B5DA47671E8F35BE 0xC1 0x24 0xDE DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"179:3486:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;179:3486:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ac3df9aca75e7705e45c5d5e7514aeb52d88696b5da47671e8f35bec124def464736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC3 0xDF SWAP11 0xCA PUSH22 0xE7705E45C5D5E7514AEB52D88696B5DA47671E8F35BE 0xC1 0x24 0xDE DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"179:3486:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"dstEid(bytes calldata)":"infinite","encode(struct Packet memory)":"infinite","encodePacketHeader(struct Packet memory)":"infinite","encodePayload(struct Packet memory)":"infinite","guid(bytes calldata)":"infinite","header(bytes calldata)":"infinite","message(bytes calldata)":"infinite","nonce(bytes calldata)":"infinite","payload(bytes calldata)":"infinite","payloadHash(bytes calldata)":"infinite","receiver(bytes calldata)":"infinite","receiverB20(bytes calldata)":"infinite","sender(bytes calldata)":"infinite","senderAddressB20(bytes calldata)":"infinite","srcEid(bytes calldata)":"infinite","version(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":\"PacketV1Codec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"OApp":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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"},{"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":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"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":[{"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":[{"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":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"constructor":{"details":"Constructor to initialize the OApp with the provided endpoint and owner.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_endpoint":"The address of the LOCAL LayerZero endpoint."}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OApp","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","endpoint()":"5e280f11","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"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\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"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\":[{\"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\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"constructor\":{\"details\":\"Constructor to initialize the OApp with the provided endpoint and owner.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LOCAL LayerZero endpoint.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OApp\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":\"OApp\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:OApp","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:OApp","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"OAppCore":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the IOAppCore interface with basic OApp configurations.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"constructor":{"details":"Constructor to initialize the OAppCore with the provided endpoint and delegate.The delegate typically should be set as the owner of the contract.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_endpoint":"The address of the LOCAL Layer Zero endpoint."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"endpoint":{"return":"The LayerZero endpoint as an interface.","returns":{"_0":"The LayerZero endpoint as an interface."}},"peers":{"params":{"_eid":"The endpoint ID."},"return":"peer The peer address (OApp instance) associated with the corresponding endpoint.","returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}}},"title":"OAppCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the IOAppCore interface with basic OApp configurations.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor to initialize the OAppCore with the provided endpoint and delegate.The delegate typically should be set as the owner of the contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LOCAL Layer Zero endpoint.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"endpoint\":{\"return\":\"The LayerZero endpoint as an interface.\",\"returns\":{\"_0\":\"The LayerZero endpoint as an interface.\"}},\"peers\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"return\":\"peer The peer address (OApp instance) associated with the corresponding endpoint.\",\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}}},\"title\":\"OAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":\"OAppCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol:OAppCore","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol:OAppCore","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"OAppReceiver":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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"},{"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":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"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":[{"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":[{"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":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oAppVersion()":{"details":"Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented. ie. this is a RECEIVE only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.","returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OAppReceiver","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","endpoint()":"5e280f11","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"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\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"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\":[{\"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\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented. ie. this is a RECEIVE only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppReceiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":\"OAppReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:OAppReceiver","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:OAppReceiver","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"OAppSender":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","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":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"oAppVersion()":{"details":"Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented. ie. this is a SEND only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions","returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OAppSender","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented. ie. this is a SEND only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppSender\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":\"OAppSender\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol:OAppSender","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol:OAppSender","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"IOAppCore":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"iEndpoint","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","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"}],"devdoc":{"kind":"dev","methods":{"endpoint()":{"returns":{"iEndpoint":"The LayerZero endpoint as an interface."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"peers(uint32)":{"params":{"_eid":"The endpoint ID."},"returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}},"setDelegate(address)":{"params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}}},"title":"IOAppCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","peers(uint32)":"bb0b6a53","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"iEndpoint\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"endpoint()\":{\"returns\":{\"iEndpoint\":\"The LayerZero endpoint as an interface.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}},\"setDelegate(address)\":{\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}}},\"title\":\"IOAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp Core.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":\"IOAppCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp Core."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"IOAppMsgInspector":{"abi":[{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InspectionFailed","type":"error"},{"inputs":[{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_options","type":"bytes"}],"name":"inspect","outputs":[{"internalType":"bool","name":"valid","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the OApp Message Inspector, allowing examination of message and options contents.","kind":"dev","methods":{"inspect(bytes,bytes)":{"details":"Optionally done as a revert, OR use the boolean provided to handle the failure.","params":{"_message":"The message payload to be inspected.","_options":"Additional options or parameters for inspection."},"returns":{"valid":"A boolean indicating whether the inspection passed (true) or failed (false)."}}},"title":"IOAppMsgInspector","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"inspect(bytes,bytes)":"043a78eb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InspectionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"inspect\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OApp Message Inspector, allowing examination of message and options contents.\",\"kind\":\"dev\",\"methods\":{\"inspect(bytes,bytes)\":{\"details\":\"Optionally done as a revert, OR use the boolean provided to handle the failure.\",\"params\":{\"_message\":\"The message payload to be inspected.\",\"_options\":\"Additional options or parameters for inspection.\"},\"returns\":{\"valid\":\"A boolean indicating whether the inspection passed (true) or failed (false).\"}}},\"title\":\"IOAppMsgInspector\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"inspect(bytes,bytes)\":{\"notice\":\"Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":\"IOAppMsgInspector\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"inspect(bytes,bytes)":{"notice":"Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"IOAppOptionsType3":{"abi":[{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"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"},{"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":"options","type":"bytes"}],"stateMutability":"view","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"}],"devdoc":{"details":"Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.","kind":"dev","methods":{"combineOptions(uint32,uint16,bytes)":{"params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OApp message type."},"returns":{"options":"The combination of caller specified options AND enforced options."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}}},"title":"IOAppOptionsType3","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"combineOptions(uint32,uint16,bytes)":"bc70b354","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"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\"},{\"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\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"details\":\"Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\",\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OApp message type.\"},\"returns\":{\"options\":\"The combination of caller specified options AND enforced options.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}}},\"title\":\"IOAppOptionsType3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"notice\":\"Sets enforced options for specific endpoint and message type combinations.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":\"IOAppOptionsType3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"notice":"Sets enforced options for specific endpoint and message type combinations."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"IOAppReceiver":{"abi":[{"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":[{"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":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"isSender","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":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_message":"The lzReceive payload.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.","_sender":"The sender address."},"returns":{"isSender":"Is a valid sender."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSender\",\"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\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_message\":\"The lzReceive payload.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\",\"_sender\":\"The sender address.\"},\"returns\":{\"isSender\":\"Is a valid sender.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":\"IOAppReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"OAppOptionsType3":{"abi":[{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"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":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OAppOptionsType3","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"combineOptions(uint32,uint16,bytes)":"bc70b354","enforcedOptions(uint32,uint16)":"5535d461","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"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\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"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\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppOptionsType3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":\"OAppOptionsType3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:OAppOptionsType3","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2006,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:OAppOptionsType3","label":"enforcedOptions","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"OAppPreCrimeSimulator":{"abi":[{"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":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"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":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"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":[{"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":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract serving as the base for preCrime simulation functionality in an OApp.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"events":{"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}}},"kind":"dev","methods":{"isPeer(uint32,bytes32)":{"details":"checks if the specified peer is considered 'trusted' by the OApp.","params":{"_eid":"The endpoint Id to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"preCrime":{"details":"Retrieves the address of the preCrime contract implementation.","return":"The address of the preCrime contract.","returns":{"_0":"The address of the preCrime contract."}}},"title":"OAppPreCrimeSimulator","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isPeer(uint32,bytes32)":"5a0dfe4d","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","oApp()":"52ae2879","owner()":"8da5cb5b","preCrime()":"b731ea0a","renounceOwnership()":"715018a6","setPreCrime(address)":"d4243885","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"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\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"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\":[{\"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\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for preCrime simulation functionality in an OApp.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"preCrime\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"return\":\"The address of the preCrime contract.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}}},\"title\":\"OAppPreCrimeSimulator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":\"OAppPreCrimeSimulator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:OAppPreCrimeSimulator","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2166,"contract":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:OAppPreCrimeSimulator","label":"preCrime","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"IOAppPreCrimeSimulator":{"abi":[{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"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":[{"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":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the preCrime simulation functionality in an OApp.","events":{"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}}},"kind":"dev","methods":{"isPeer(uint32,bytes32)":{"details":"checks if the specified peer is considered 'trusted' by the OApp.","params":{"_eid":"The endpoint Id to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Mocks receiving a packet, then reverts with a series of data to infer the state/result.","params":{"_packets":"An array of LayerZero InboundPacket objects representing received packets."}},"oApp()":{"details":"Retrieves the address of the OApp contract.","returns":{"_0":"The address of the OApp contract."}},"preCrime()":{"details":"Retrieves the address of the preCrime contract implementation.","returns":{"_0":"The address of the preCrime contract."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}}},"title":"IOAppPreCrimeSimulator Interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isPeer(uint32,bytes32)":"5a0dfe4d","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","oApp()":"52ae2879","preCrime()":"b731ea0a","setPreCrime(address)":"d4243885"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"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\":[{\"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\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the preCrime simulation functionality in an OApp.\",\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Mocks receiving a packet, then reverts with a series of data to infer the state/result.\",\"params\":{\"_packets\":\"An array of LayerZero InboundPacket objects representing received packets.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"preCrime()\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}}},\"title\":\"IOAppPreCrimeSimulator Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":\"IOAppPreCrimeSimulator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"IPreCrime":{"abi":[{"inputs":[{"internalType":"bytes","name":"crime","type":"bytes"}],"name":"CrimeFound","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"InvalidSimulationResult","type":"error"},{"inputs":[],"name":"OnlyOffChain","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"name":"PacketOversize","type":"error"},{"inputs":[],"name":"PacketUnsorted","type":"error"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"SimulationFailed","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"SimulationResultNotFound","type":"error"},{"inputs":[],"name":"buildSimulationResult","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_packets","type":"bytes[]"},{"internalType":"uint256[]","name":"_packetMsgValues","type":"uint256[]"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_packets","type":"bytes[]"},{"internalType":"uint256[]","name":"_packetMsgValues","type":"uint256[]"},{"internalType":"bytes[]","name":"_simulations","type":"bytes[]"}],"name":"preCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_packets","type":"bytes[]"},{"internalType":"uint256[]","name":"_packetMsgValues","type":"uint256[]"}],"name":"simulate","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint8","name":"minor","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"buildSimulationResult()":"8e9e7099","getConfig(bytes[],uint256[])":"f0cd3836","preCrime(bytes[],uint256[],bytes[])":"10f9cf3a","simulate(bytes[],uint256[])":"50dfa937","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":\"IPreCrime\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"PacketDecoder":{"abi":[],"devdoc":{"details":"Library for decoding LayerZero packets.","kind":"dev","methods":{},"title":"PacketDecoder","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e842a7001df77ac1479e5917b061ecdbb4ce1c1625bac5e26805fd7737e577f64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x842A7001DF77AC1479E5917B061ECD 0xBB 0x4C 0xE1 0xC1 PUSH3 0x5BAC5E 0x26 DUP1 PUSH0 0xD7 PUSH20 0x7E577F64736F6C634300081C0033000000000000 ","sourceMap":"942:1527:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;942:1527:22;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e842a7001df77ac1479e5917b061ecdbb4ce1c1625bac5e26805fd7737e577f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x842A7001DF77AC1479E5917B061ECD 0xBB 0x4C 0xE1 0xC1 PUSH3 0x5BAC5E 0x26 DUP1 PUSH0 0xD7 PUSH20 0x7E577F64736F6C634300081C0033000000000000 ","sourceMap":"942:1527:22:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"decode(bytes calldata)":"infinite","decode(bytes calldata[] calldata,uint256[] memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for decoding LayerZero packets.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"PacketDecoder\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":\"PacketDecoder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oft-evm/contracts/OFT.sol":{"OFT":{"abi":[{"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":"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":[{"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":[{"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":"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":"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":[{"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":"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":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"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":[],"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":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"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"}],"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":[],"name":"renounceOwnership","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":"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":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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"}],"devdoc":{"details":"OFT is an ERC-20 token that extends the functionality of the OFTCore contract.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approvalRequired()":{"details":"In the case of OFT where the contract IS the token, approval is NOT required.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"constructor":{"details":"Constructor for the OFT contract.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_lzEndpoint":"The LayerZero endpoint address.","_name":"The name of the OFT.","_symbol":"The symbol of the OFT."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"name()":{"details":"Returns the name of the token."},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"token()":{"details":"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.","returns":{"_0":"The address of the OFT token."}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OFT Contract","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","allowance(address,address)":"dd62ed3e","approvalRequired()":"9f68b964","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","decimals()":"313ce567","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","msgInspector()":"111ecdad","name()":"06fdde03","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","symbol()":"95d89b41","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\":[{\"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\":[{\"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\":\"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\":\"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\":[{\"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\":\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"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\":[],\"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\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\"}],\"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\":[],\"name\":\"renounceOwnership\",\"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\":\"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\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"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\"}],\"devdoc\":{\"details\":\"OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor for the OFT contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_lzEndpoint\":\"The LayerZero endpoint address.\",\"_name\":\"The name of the OFT.\",\"_symbol\":\"The symbol of the OFT.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFT Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/OFT.sol\":\"OFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ERC20 } from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport { IOFT, OFTCore } from \\\"./OFTCore.sol\\\";\\n\\n/**\\n * @title OFT Contract\\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\\n */\\nabstract contract OFT is OFTCore, ERC20 {\\n    /**\\n     * @dev Constructor for the OFT contract.\\n     * @param _name The name of the OFT.\\n     * @param _symbol The symbol of the OFT.\\n     * @param _lzEndpoint The LayerZero endpoint address.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\\n\\n    /**\\n     * @dev Retrieves the address of the underlying ERC20 implementation.\\n     * @return The address of the OFT token.\\n     *\\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\\n     */\\n    function token() public view returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\\n     */\\n    function approvalRequired() external pure virtual returns (bool) {\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Burns tokens from the sender's specified balance.\\n     * @param _from The address to debit the tokens from.\\n     * @param _amountLD The amount of tokens to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination chain ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\\n\\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\\n        // therefore amountSentLD CAN differ from amountReceivedLD.\\n\\n        // @dev Default OFT burns on src.\\n        _burn(_from, amountSentLD);\\n    }\\n\\n    /**\\n     * @dev Credits tokens to the specified address.\\n     * @param _to The address to credit the tokens to.\\n     * @param _amountLD The amount of tokens to credit in local decimals.\\n     * @dev _srcEid The source chain ID.\\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 /*_srcEid*/\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\\n        // @dev Default OFT mints on dst.\\n        _mint(_to, _amountLD);\\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\\n        return _amountLD;\\n    }\\n}\\n\",\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"msgInspector","offset":0,"slot":"4","type":"t_address"},{"astId":4230,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_balances","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":4236,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_allowances","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4238,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_totalSupply","offset":0,"slot":"7","type":"t_uint256"},{"astId":4240,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_name","offset":0,"slot":"8","type":"t_string_storage"},{"astId":4242,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_symbol","offset":0,"slot":"9","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oft-evm/contracts/OFTCore.sol":{"OFTCore":{"abi":[{"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":[{"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":[{"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":[{"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"},{"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":[{"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":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"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":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"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"}],"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":[],"name":"renounceOwnership","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":"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":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract for the OftChain (OFT) token.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"approvalRequired()":{"details":"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"constructor":{"details":"Constructor.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_endpoint":"The address of the LayerZero endpoint.","_localDecimals":"The decimals of the token on the local chain (this chain)."}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"token()":{"returns":{"_0":"token The address of the ERC20 token implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OFTCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","approvalRequired()":"9f68b964","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","msgInspector()":"111ecdad","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","token()":"fc0c546a","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"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\":[{\"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\"},{\"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\":[{\"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\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"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\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\"}],\"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\":[],\"name\":\"renounceOwnership\",\"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\":\"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\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract for the OftChain (OFT) token.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LayerZero endpoint.\",\"_localDecimals\":\"The decimals of the token on the local chain (this chain).\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFTCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":\"OFTCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"msgInspector","offset":0,"slot":"4","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."},"token()":{"notice":"Retrieves the address of the token associated with the OFT."}},"version":1}}},"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"IOFT":{"abi":[{"inputs":[],"name":"InvalidLocalDecimals","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":"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"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"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"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"","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":"","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":"","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"},{"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":"","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.","kind":"dev","methods":{"approvalRequired()":{"details":"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"_0":"limit The OFT limit information.","_2":"receipt The OFT receipt information.","oftFeeDetails":"The details of OFT fees."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"_0":"fee The calculated LayerZero messaging fee from the send() operation."}},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The fee information supplied by the caller.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds from fees etc. on the src.","_sendParam":"The parameters for the send operation."},"returns":{"_0":"receipt The LayerZero messaging receipt from the send() operation.","_1":"oftReceipt The OFT receipt information."}},"sharedDecimals()":{"returns":{"_0":"sharedDecimals The shared decimals of the OFT."}},"token()":{"returns":{"_0":"token The address of the ERC20 token implementation."}}},"title":"IOFT","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approvalRequired()":"9f68b964","oftVersion()":"156a0d0f","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","sharedDecimals()":"857749b0","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"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\":\"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\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"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\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"\",\"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\":\"\",\"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\":\"\",\"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\"},{\"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\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.\",\"kind\":\"dev\",\"methods\":{\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"limit The OFT limit information.\",\"_2\":\"receipt The OFT receipt information.\",\"oftFeeDetails\":\"The details of OFT fees.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"_0\":\"fee The calculated LayerZero messaging fee from the send() operation.\"}},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The fee information supplied by the caller.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds from fees etc. on the src.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"receipt The LayerZero messaging receipt from the send() operation.\",\"_1\":\"oftReceipt The OFT receipt information.\"}},\"sharedDecimals()\":{\"returns\":{\"_0\":\"sharedDecimals The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}}},\"title\":\"IOFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"notice\":\"Executes the send() operation.\"},\"sharedDecimals()\":{\"notice\":\"Retrieves the shared decimals of the OFT.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":\"IOFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"notice":"Executes the send() operation."},"sharedDecimals()":{"notice":"Retrieves the shared decimals of the OFT."},"token()":{"notice":"Retrieves the address of the token associated with the OFT."}},"version":1}}},"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"OFTComposeMsgCodec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbb57c3da9025309c08af971ec098a803ebc96c96e45170283a4fa6743b4632b64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xB5 PUSH29 0x3DA9025309C08AF971EC098A803EBC96C96E45170283A4FA6743B4632B PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"59:2931:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:2931:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbb57c3da9025309c08af971ec098a803ebc96c96e45170283a4fa6743b4632b64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xB5 PUSH29 0x3DA9025309C08AF971EC098A803EBC96C96E45170283A4FA6743B4632B PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"59:2931:26:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"addressToBytes32(address)":"infinite","amountLD(bytes calldata)":"infinite","bytes32ToAddress(bytes32)":"infinite","composeFrom(bytes calldata)":"infinite","composeMsg(bytes calldata)":"infinite","encode(uint64,uint32,uint256,bytes memory)":"infinite","nonce(bytes calldata)":"infinite","srcEid(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":\"OFTComposeMsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol":{"OFTMsgCodec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eba7bce6f05cdeba27adb206010b0978508e07f2a159546ef99c19d96630095964736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB 0xA7 0xBC 0xE6 CREATE TLOAD 0xDE 0xBA 0x27 0xAD 0xB2 MOD ADD SIGNEXTEND MULMOD PUSH25 0x508E07F2A159546EF99C19D96630095964736F6C634300081C STOP CALLER ","sourceMap":"59:2846:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:2846:27;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eba7bce6f05cdeba27adb206010b0978508e07f2a159546ef99c19d96630095964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB 0xA7 0xBC 0xE6 CREATE TLOAD 0xDE 0xBA 0x27 0xAD 0xB2 MOD ADD SIGNEXTEND MULMOD PUSH25 0x508E07F2A159546EF99C19D96630095964736F6C634300081C STOP CALLER ","sourceMap":"59:2846:27:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"addressToBytes32(address)":"infinite","amountSD(bytes calldata)":"infinite","bytes32ToAddress(bytes32)":"infinite","composeMsg(bytes calldata)":"infinite","encode(bytes32,uint64,bytes memory)":"infinite","isComposed(bytes calldata)":"infinite","sendTo(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":\"OFTMsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. The initial owner is set to the address provided by the deployer. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"IERC1363":{"abi":[{"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":[{"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":[{"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":[{"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":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","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":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"approveAndCall(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"approveAndCall(address,uint256,bytes)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"data":"Additional data with no specified format, sent in call to `spender`.","spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferAndCall(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferAndCall(address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFromAndCall(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFromAndCall(address,address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}}},"title":"IERC1363","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"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\":[{\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"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\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"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\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"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\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"devdoc":{"details":"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.","errors":{"ERC1155InsufficientBalance(address,uint256,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC1155InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC1155InvalidArrayLength(uint256,uint256)":[{"details":"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.","params":{"idsLength":"Length of the array of token identifiers","valuesLength":"Length of the array of token amounts"}}],"ERC1155InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC1155InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC1155InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC1155MissingApprovalForAll(address,address)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","owner":"Address of the current owner of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC20Errors":{"abi":[{"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"}],"devdoc":{"details":"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"devdoc":{"details":"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"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"},{"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":[{"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":[{"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":[{"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"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\":[{\"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\":[{\"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\":[{\"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\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4230,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":4236,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4238,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":4240,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":4242,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"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":[{"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":[{"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":[{"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":[],"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"}],"devdoc":{"details":"Interface of the ERC-20 standard as defined in the ERC.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"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\":[{\"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\":[],\"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\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"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":[{"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":[{"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":[{"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC-20 standard.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"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\":[{\"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\":[{\"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\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"SafeERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"}],"devdoc":{"details":"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","errors":{"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)":[{"details":"Indicates a failed `decreaseAllowance` request."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220be63f77ef0e3ba545c37e793ea87ad187d7d6c56a9884285bc4d39e3464e911a64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE PUSH4 0xF77EF0E3 0xBA SLOAD TLOAD CALLDATACOPY 0xE7 SWAP4 0xEA DUP8 0xAD XOR PUSH30 0x7D6C56A9884285BC4D39E3464E911A64736F6C634300081C003300000000 ","sourceMap":"698:9376:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;698:9376:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220be63f77ef0e3ba545c37e793ea87ad187d7d6c56a9884285bc4d39e3464e911a64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE PUSH4 0xF77EF0E3 0xBA SLOAD TLOAD CALLDATACOPY 0xE7 SWAP4 0xEA DUP8 0xAD XOR PUSH30 0x7D6C56A9884285BC4D39E3464E911A64736F6C634300081C003300000000 ","sourceMap":"698:9376:36:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_callOptionalReturn(contract IERC20,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20,bytes memory)":"infinite","approveAndCallRelaxed(contract IERC1363,address,uint256,bytes memory)":"infinite","forceApprove(contract IERC20,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20,address,uint256)":"infinite","safeTransfer(contract IERC20,address,uint256)":"infinite","safeTransferFrom(contract IERC20,address,address,uint256)":"infinite","transferAndCallRelaxed(contract IERC1363,address,uint256,bytes memory)":"infinite","transferFromAndCallRelaxed(contract IERC1363,address,address,uint256,bytes memory)":"infinite","trySafeTransfer(contract IERC20,address,uint256)":"infinite","trySafeTransferFrom(contract IERC20,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/SSE.sol":{"SSE":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_lzEndpoint","type":"address"},{"internalType":"address","name":"_delegate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"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":"MaxSupplyExceeded","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":[{"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":"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":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":"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":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"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":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"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"}],"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":[],"name":"renounceOwnership","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":"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":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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"}],"devdoc":{"errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approvalRequired()":{"details":"In the case of OFT where the contract IS the token, approval is NOT required.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"mint(address,uint256)":{"details":"Mints new tokens to the specified address","params":{"_amount":"The amount of tokens to mint","_to":"The address to mint tokens to"}},"name()":{"details":"Returns the name of the token."},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"token()":{"details":"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.","returns":{"_0":"The address of the OFT token."}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1354":{"entryPoint":null,"id":1354,"parameterSlots":2,"returnSlots":0},"@_1421":{"entryPoint":null,"id":1421,"parameterSlots":2,"returnSlots":0},"@_2646":{"entryPoint":null,"id":2646,"parameterSlots":4,"returnSlots":0},"@_2823":{"entryPoint":null,"id":2823,"parameterSlots":3,"returnSlots":0},"@_3883":{"entryPoint":null,"id":3883,"parameterSlots":1,"returnSlots":0},"@_4259":{"entryPoint":null,"id":4259,"parameterSlots":2,"returnSlots":0},"@_5370":{"entryPoint":null,"id":5370,"parameterSlots":4,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":385,"id":3979,"parameterSlots":1,"returnSlots":0},"@decimals_4286":{"entryPoint":null,"id":4286,"parameterSlots":0,"returnSlots":1},"@sharedDecimals_2848":{"entryPoint":465,"id":2848,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":655,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory":{"entryPoint":683,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_exp_helper":{"entryPoint":874,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":1105,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":941,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":843,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":1185,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1264,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1127,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":821,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":470,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:6334:40","nodeType":"YulBlock","src":"0:6334:40","statements":[{"nativeSrc":"6:3:40","nodeType":"YulBlock","src":"6:3:40","statements":[]},{"body":{"nativeSrc":"46:95:40","nodeType":"YulBlock","src":"46:95:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:40","nodeType":"YulLiteral","src":"63:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:40","nodeType":"YulLiteral","src":"70:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:40","nodeType":"YulLiteral","src":"75:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:40","nodeType":"YulIdentifier","src":"66:3:40"},"nativeSrc":"66:20:40","nodeType":"YulFunctionCall","src":"66:20:40"}],"functionName":{"name":"mstore","nativeSrc":"56:6:40","nodeType":"YulIdentifier","src":"56:6:40"},"nativeSrc":"56:31:40","nodeType":"YulFunctionCall","src":"56:31:40"},"nativeSrc":"56:31:40","nodeType":"YulExpressionStatement","src":"56:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:40","nodeType":"YulLiteral","src":"103:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:40","nodeType":"YulLiteral","src":"106:4:40","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:40","nodeType":"YulIdentifier","src":"96:6:40"},"nativeSrc":"96:15:40","nodeType":"YulFunctionCall","src":"96:15:40"},"nativeSrc":"96:15:40","nodeType":"YulExpressionStatement","src":"96:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:40","nodeType":"YulLiteral","src":"127:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:40","nodeType":"YulLiteral","src":"130:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:40","nodeType":"YulIdentifier","src":"120:6:40"},"nativeSrc":"120:15:40","nodeType":"YulFunctionCall","src":"120:15:40"},"nativeSrc":"120:15:40","nodeType":"YulExpressionStatement","src":"120:15:40"}]},"name":"panic_error_0x41","nativeSrc":"14:127:40","nodeType":"YulFunctionDefinition","src":"14:127:40"},{"body":{"nativeSrc":"210:770:40","nodeType":"YulBlock","src":"210:770:40","statements":[{"body":{"nativeSrc":"259:16:40","nodeType":"YulBlock","src":"259:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:40","nodeType":"YulLiteral","src":"268:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:40","nodeType":"YulLiteral","src":"271:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:40","nodeType":"YulIdentifier","src":"261:6:40"},"nativeSrc":"261:12:40","nodeType":"YulFunctionCall","src":"261:12:40"},"nativeSrc":"261:12:40","nodeType":"YulExpressionStatement","src":"261:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:40","nodeType":"YulIdentifier","src":"238:6:40"},{"kind":"number","nativeSrc":"246:4:40","nodeType":"YulLiteral","src":"246:4:40","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:40","nodeType":"YulIdentifier","src":"234:3:40"},"nativeSrc":"234:17:40","nodeType":"YulFunctionCall","src":"234:17:40"},{"name":"end","nativeSrc":"253:3:40","nodeType":"YulIdentifier","src":"253:3:40"}],"functionName":{"name":"slt","nativeSrc":"230:3:40","nodeType":"YulIdentifier","src":"230:3:40"},"nativeSrc":"230:27:40","nodeType":"YulFunctionCall","src":"230:27:40"}],"functionName":{"name":"iszero","nativeSrc":"223:6:40","nodeType":"YulIdentifier","src":"223:6:40"},"nativeSrc":"223:35:40","nodeType":"YulFunctionCall","src":"223:35:40"},"nativeSrc":"220:55:40","nodeType":"YulIf","src":"220:55:40"},{"nativeSrc":"284:27:40","nodeType":"YulVariableDeclaration","src":"284:27:40","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:40","nodeType":"YulIdentifier","src":"304:6:40"}],"functionName":{"name":"mload","nativeSrc":"298:5:40","nodeType":"YulIdentifier","src":"298:5:40"},"nativeSrc":"298:13:40","nodeType":"YulFunctionCall","src":"298:13:40"},"variables":[{"name":"length","nativeSrc":"288:6:40","nodeType":"YulTypedName","src":"288:6:40","type":""}]},{"body":{"nativeSrc":"354:22:40","nodeType":"YulBlock","src":"354:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:40","nodeType":"YulIdentifier","src":"356:16:40"},"nativeSrc":"356:18:40","nodeType":"YulFunctionCall","src":"356:18:40"},"nativeSrc":"356:18:40","nodeType":"YulExpressionStatement","src":"356:18:40"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:40","nodeType":"YulIdentifier","src":"326:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:40","nodeType":"YulLiteral","src":"342:2:40","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:40","nodeType":"YulLiteral","src":"346:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:40","nodeType":"YulIdentifier","src":"338:3:40"},"nativeSrc":"338:10:40","nodeType":"YulFunctionCall","src":"338:10:40"},{"kind":"number","nativeSrc":"350:1:40","nodeType":"YulLiteral","src":"350:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:40","nodeType":"YulIdentifier","src":"334:3:40"},"nativeSrc":"334:18:40","nodeType":"YulFunctionCall","src":"334:18:40"}],"functionName":{"name":"gt","nativeSrc":"323:2:40","nodeType":"YulIdentifier","src":"323:2:40"},"nativeSrc":"323:30:40","nodeType":"YulFunctionCall","src":"323:30:40"},"nativeSrc":"320:56:40","nodeType":"YulIf","src":"320:56:40"},{"nativeSrc":"385:23:40","nodeType":"YulVariableDeclaration","src":"385:23:40","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:40","nodeType":"YulLiteral","src":"405:2:40","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:40","nodeType":"YulIdentifier","src":"399:5:40"},"nativeSrc":"399:9:40","nodeType":"YulFunctionCall","src":"399:9:40"},"variables":[{"name":"memPtr","nativeSrc":"389:6:40","nodeType":"YulTypedName","src":"389:6:40","type":""}]},{"nativeSrc":"417:85:40","nodeType":"YulVariableDeclaration","src":"417:85:40","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:40","nodeType":"YulIdentifier","src":"439:6:40"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:40","nodeType":"YulIdentifier","src":"463:6:40"},{"kind":"number","nativeSrc":"471:4:40","nodeType":"YulLiteral","src":"471:4:40","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:40","nodeType":"YulIdentifier","src":"459:3:40"},"nativeSrc":"459:17:40","nodeType":"YulFunctionCall","src":"459:17:40"},{"arguments":[{"kind":"number","nativeSrc":"482:2:40","nodeType":"YulLiteral","src":"482:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:40","nodeType":"YulIdentifier","src":"478:3:40"},"nativeSrc":"478:7:40","nodeType":"YulFunctionCall","src":"478:7:40"}],"functionName":{"name":"and","nativeSrc":"455:3:40","nodeType":"YulIdentifier","src":"455:3:40"},"nativeSrc":"455:31:40","nodeType":"YulFunctionCall","src":"455:31:40"},{"kind":"number","nativeSrc":"488:2:40","nodeType":"YulLiteral","src":"488:2:40","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:40","nodeType":"YulIdentifier","src":"451:3:40"},"nativeSrc":"451:40:40","nodeType":"YulFunctionCall","src":"451:40:40"},{"arguments":[{"kind":"number","nativeSrc":"497:2:40","nodeType":"YulLiteral","src":"497:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:40","nodeType":"YulIdentifier","src":"493:3:40"},"nativeSrc":"493:7:40","nodeType":"YulFunctionCall","src":"493:7:40"}],"functionName":{"name":"and","nativeSrc":"447:3:40","nodeType":"YulIdentifier","src":"447:3:40"},"nativeSrc":"447:54:40","nodeType":"YulFunctionCall","src":"447:54:40"}],"functionName":{"name":"add","nativeSrc":"435:3:40","nodeType":"YulIdentifier","src":"435:3:40"},"nativeSrc":"435:67:40","nodeType":"YulFunctionCall","src":"435:67:40"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:40","nodeType":"YulTypedName","src":"421:10:40","type":""}]},{"body":{"nativeSrc":"577:22:40","nodeType":"YulBlock","src":"577:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:40","nodeType":"YulIdentifier","src":"579:16:40"},"nativeSrc":"579:18:40","nodeType":"YulFunctionCall","src":"579:18:40"},"nativeSrc":"579:18:40","nodeType":"YulExpressionStatement","src":"579:18:40"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:40","nodeType":"YulIdentifier","src":"520:10:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:40","nodeType":"YulLiteral","src":"540:2:40","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:40","nodeType":"YulLiteral","src":"544:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:40","nodeType":"YulIdentifier","src":"536:3:40"},"nativeSrc":"536:10:40","nodeType":"YulFunctionCall","src":"536:10:40"},{"kind":"number","nativeSrc":"548:1:40","nodeType":"YulLiteral","src":"548:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:40","nodeType":"YulIdentifier","src":"532:3:40"},"nativeSrc":"532:18:40","nodeType":"YulFunctionCall","src":"532:18:40"}],"functionName":{"name":"gt","nativeSrc":"517:2:40","nodeType":"YulIdentifier","src":"517:2:40"},"nativeSrc":"517:34:40","nodeType":"YulFunctionCall","src":"517:34:40"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:40","nodeType":"YulIdentifier","src":"556:10:40"},{"name":"memPtr","nativeSrc":"568:6:40","nodeType":"YulIdentifier","src":"568:6:40"}],"functionName":{"name":"lt","nativeSrc":"553:2:40","nodeType":"YulIdentifier","src":"553:2:40"},"nativeSrc":"553:22:40","nodeType":"YulFunctionCall","src":"553:22:40"}],"functionName":{"name":"or","nativeSrc":"514:2:40","nodeType":"YulIdentifier","src":"514:2:40"},"nativeSrc":"514:62:40","nodeType":"YulFunctionCall","src":"514:62:40"},"nativeSrc":"511:88:40","nodeType":"YulIf","src":"511:88:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:40","nodeType":"YulLiteral","src":"615:2:40","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:40","nodeType":"YulIdentifier","src":"619:10:40"}],"functionName":{"name":"mstore","nativeSrc":"608:6:40","nodeType":"YulIdentifier","src":"608:6:40"},"nativeSrc":"608:22:40","nodeType":"YulFunctionCall","src":"608:22:40"},"nativeSrc":"608:22:40","nodeType":"YulExpressionStatement","src":"608:22:40"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:40","nodeType":"YulIdentifier","src":"646:6:40"},{"name":"length","nativeSrc":"654:6:40","nodeType":"YulIdentifier","src":"654:6:40"}],"functionName":{"name":"mstore","nativeSrc":"639:6:40","nodeType":"YulIdentifier","src":"639:6:40"},"nativeSrc":"639:22:40","nodeType":"YulFunctionCall","src":"639:22:40"},"nativeSrc":"639:22:40","nodeType":"YulExpressionStatement","src":"639:22:40"},{"body":{"nativeSrc":"713:16:40","nodeType":"YulBlock","src":"713:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:40","nodeType":"YulLiteral","src":"722:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:40","nodeType":"YulLiteral","src":"725:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:40","nodeType":"YulIdentifier","src":"715:6:40"},"nativeSrc":"715:12:40","nodeType":"YulFunctionCall","src":"715:12:40"},"nativeSrc":"715:12:40","nodeType":"YulExpressionStatement","src":"715:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:40","nodeType":"YulIdentifier","src":"684:6:40"},{"name":"length","nativeSrc":"692:6:40","nodeType":"YulIdentifier","src":"692:6:40"}],"functionName":{"name":"add","nativeSrc":"680:3:40","nodeType":"YulIdentifier","src":"680:3:40"},"nativeSrc":"680:19:40","nodeType":"YulFunctionCall","src":"680:19:40"},{"kind":"number","nativeSrc":"701:4:40","nodeType":"YulLiteral","src":"701:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:40","nodeType":"YulIdentifier","src":"676:3:40"},"nativeSrc":"676:30:40","nodeType":"YulFunctionCall","src":"676:30:40"},{"name":"end","nativeSrc":"708:3:40","nodeType":"YulIdentifier","src":"708:3:40"}],"functionName":{"name":"gt","nativeSrc":"673:2:40","nodeType":"YulIdentifier","src":"673:2:40"},"nativeSrc":"673:39:40","nodeType":"YulFunctionCall","src":"673:39:40"},"nativeSrc":"670:59:40","nodeType":"YulIf","src":"670:59:40"},{"nativeSrc":"738:10:40","nodeType":"YulVariableDeclaration","src":"738:10:40","value":{"kind":"number","nativeSrc":"747:1:40","nodeType":"YulLiteral","src":"747:1:40","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"742:1:40","nodeType":"YulTypedName","src":"742:1:40","type":""}]},{"body":{"nativeSrc":"809:91:40","nodeType":"YulBlock","src":"809:91:40","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"838:6:40","nodeType":"YulIdentifier","src":"838:6:40"},{"name":"i","nativeSrc":"846:1:40","nodeType":"YulIdentifier","src":"846:1:40"}],"functionName":{"name":"add","nativeSrc":"834:3:40","nodeType":"YulIdentifier","src":"834:3:40"},"nativeSrc":"834:14:40","nodeType":"YulFunctionCall","src":"834:14:40"},{"kind":"number","nativeSrc":"850:4:40","nodeType":"YulLiteral","src":"850:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"830:3:40","nodeType":"YulIdentifier","src":"830:3:40"},"nativeSrc":"830:25:40","nodeType":"YulFunctionCall","src":"830:25:40"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"871:6:40","nodeType":"YulIdentifier","src":"871:6:40"},{"name":"i","nativeSrc":"879:1:40","nodeType":"YulIdentifier","src":"879:1:40"}],"functionName":{"name":"add","nativeSrc":"867:3:40","nodeType":"YulIdentifier","src":"867:3:40"},"nativeSrc":"867:14:40","nodeType":"YulFunctionCall","src":"867:14:40"},{"kind":"number","nativeSrc":"883:4:40","nodeType":"YulLiteral","src":"883:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"863:3:40","nodeType":"YulIdentifier","src":"863:3:40"},"nativeSrc":"863:25:40","nodeType":"YulFunctionCall","src":"863:25:40"}],"functionName":{"name":"mload","nativeSrc":"857:5:40","nodeType":"YulIdentifier","src":"857:5:40"},"nativeSrc":"857:32:40","nodeType":"YulFunctionCall","src":"857:32:40"}],"functionName":{"name":"mstore","nativeSrc":"823:6:40","nodeType":"YulIdentifier","src":"823:6:40"},"nativeSrc":"823:67:40","nodeType":"YulFunctionCall","src":"823:67:40"},"nativeSrc":"823:67:40","nodeType":"YulExpressionStatement","src":"823:67:40"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"768:1:40","nodeType":"YulIdentifier","src":"768:1:40"},{"name":"length","nativeSrc":"771:6:40","nodeType":"YulIdentifier","src":"771:6:40"}],"functionName":{"name":"lt","nativeSrc":"765:2:40","nodeType":"YulIdentifier","src":"765:2:40"},"nativeSrc":"765:13:40","nodeType":"YulFunctionCall","src":"765:13:40"},"nativeSrc":"757:143:40","nodeType":"YulForLoop","post":{"nativeSrc":"779:21:40","nodeType":"YulBlock","src":"779:21:40","statements":[{"nativeSrc":"781:17:40","nodeType":"YulAssignment","src":"781:17:40","value":{"arguments":[{"name":"i","nativeSrc":"790:1:40","nodeType":"YulIdentifier","src":"790:1:40"},{"kind":"number","nativeSrc":"793:4:40","nodeType":"YulLiteral","src":"793:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"786:3:40","nodeType":"YulIdentifier","src":"786:3:40"},"nativeSrc":"786:12:40","nodeType":"YulFunctionCall","src":"786:12:40"},"variableNames":[{"name":"i","nativeSrc":"781:1:40","nodeType":"YulIdentifier","src":"781:1:40"}]}]},"pre":{"nativeSrc":"761:3:40","nodeType":"YulBlock","src":"761:3:40","statements":[]},"src":"757:143:40"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"924:6:40","nodeType":"YulIdentifier","src":"924:6:40"},{"name":"length","nativeSrc":"932:6:40","nodeType":"YulIdentifier","src":"932:6:40"}],"functionName":{"name":"add","nativeSrc":"920:3:40","nodeType":"YulIdentifier","src":"920:3:40"},"nativeSrc":"920:19:40","nodeType":"YulFunctionCall","src":"920:19:40"},{"kind":"number","nativeSrc":"941:4:40","nodeType":"YulLiteral","src":"941:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"916:3:40","nodeType":"YulIdentifier","src":"916:3:40"},"nativeSrc":"916:30:40","nodeType":"YulFunctionCall","src":"916:30:40"},{"kind":"number","nativeSrc":"948:1:40","nodeType":"YulLiteral","src":"948:1:40","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"909:6:40","nodeType":"YulIdentifier","src":"909:6:40"},"nativeSrc":"909:41:40","nodeType":"YulFunctionCall","src":"909:41:40"},"nativeSrc":"909:41:40","nodeType":"YulExpressionStatement","src":"909:41:40"},{"nativeSrc":"959:15:40","nodeType":"YulAssignment","src":"959:15:40","value":{"name":"memPtr","nativeSrc":"968:6:40","nodeType":"YulIdentifier","src":"968:6:40"},"variableNames":[{"name":"array","nativeSrc":"959:5:40","nodeType":"YulIdentifier","src":"959:5:40"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:834:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:40","nodeType":"YulTypedName","src":"184:6:40","type":""},{"name":"end","nativeSrc":"192:3:40","nodeType":"YulTypedName","src":"192:3:40","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:40","nodeType":"YulTypedName","src":"200:5:40","type":""}],"src":"146:834:40"},{"body":{"nativeSrc":"1045:117:40","nodeType":"YulBlock","src":"1045:117:40","statements":[{"nativeSrc":"1055:22:40","nodeType":"YulAssignment","src":"1055:22:40","value":{"arguments":[{"name":"offset","nativeSrc":"1070:6:40","nodeType":"YulIdentifier","src":"1070:6:40"}],"functionName":{"name":"mload","nativeSrc":"1064:5:40","nodeType":"YulIdentifier","src":"1064:5:40"},"nativeSrc":"1064:13:40","nodeType":"YulFunctionCall","src":"1064:13:40"},"variableNames":[{"name":"value","nativeSrc":"1055:5:40","nodeType":"YulIdentifier","src":"1055:5:40"}]},{"body":{"nativeSrc":"1140:16:40","nodeType":"YulBlock","src":"1140:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1149:1:40","nodeType":"YulLiteral","src":"1149:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1152:1:40","nodeType":"YulLiteral","src":"1152:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1142:6:40","nodeType":"YulIdentifier","src":"1142:6:40"},"nativeSrc":"1142:12:40","nodeType":"YulFunctionCall","src":"1142:12:40"},"nativeSrc":"1142:12:40","nodeType":"YulExpressionStatement","src":"1142:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1099:5:40","nodeType":"YulIdentifier","src":"1099:5:40"},{"arguments":[{"name":"value","nativeSrc":"1110:5:40","nodeType":"YulIdentifier","src":"1110:5:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1125:3:40","nodeType":"YulLiteral","src":"1125:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"1130:1:40","nodeType":"YulLiteral","src":"1130:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1121:3:40","nodeType":"YulIdentifier","src":"1121:3:40"},"nativeSrc":"1121:11:40","nodeType":"YulFunctionCall","src":"1121:11:40"},{"kind":"number","nativeSrc":"1134:1:40","nodeType":"YulLiteral","src":"1134:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1117:3:40","nodeType":"YulIdentifier","src":"1117:3:40"},"nativeSrc":"1117:19:40","nodeType":"YulFunctionCall","src":"1117:19:40"}],"functionName":{"name":"and","nativeSrc":"1106:3:40","nodeType":"YulIdentifier","src":"1106:3:40"},"nativeSrc":"1106:31:40","nodeType":"YulFunctionCall","src":"1106:31:40"}],"functionName":{"name":"eq","nativeSrc":"1096:2:40","nodeType":"YulIdentifier","src":"1096:2:40"},"nativeSrc":"1096:42:40","nodeType":"YulFunctionCall","src":"1096:42:40"}],"functionName":{"name":"iszero","nativeSrc":"1089:6:40","nodeType":"YulIdentifier","src":"1089:6:40"},"nativeSrc":"1089:50:40","nodeType":"YulFunctionCall","src":"1089:50:40"},"nativeSrc":"1086:70:40","nodeType":"YulIf","src":"1086:70:40"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"985:177:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1024:6:40","nodeType":"YulTypedName","src":"1024:6:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1035:5:40","nodeType":"YulTypedName","src":"1035:5:40","type":""}],"src":"985:177:40"},{"body":{"nativeSrc":"1319:576:40","nodeType":"YulBlock","src":"1319:576:40","statements":[{"body":{"nativeSrc":"1366:16:40","nodeType":"YulBlock","src":"1366:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1375:1:40","nodeType":"YulLiteral","src":"1375:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1378:1:40","nodeType":"YulLiteral","src":"1378:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1368:6:40","nodeType":"YulIdentifier","src":"1368:6:40"},"nativeSrc":"1368:12:40","nodeType":"YulFunctionCall","src":"1368:12:40"},"nativeSrc":"1368:12:40","nodeType":"YulExpressionStatement","src":"1368:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1340:7:40","nodeType":"YulIdentifier","src":"1340:7:40"},{"name":"headStart","nativeSrc":"1349:9:40","nodeType":"YulIdentifier","src":"1349:9:40"}],"functionName":{"name":"sub","nativeSrc":"1336:3:40","nodeType":"YulIdentifier","src":"1336:3:40"},"nativeSrc":"1336:23:40","nodeType":"YulFunctionCall","src":"1336:23:40"},{"kind":"number","nativeSrc":"1361:3:40","nodeType":"YulLiteral","src":"1361:3:40","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1332:3:40","nodeType":"YulIdentifier","src":"1332:3:40"},"nativeSrc":"1332:33:40","nodeType":"YulFunctionCall","src":"1332:33:40"},"nativeSrc":"1329:53:40","nodeType":"YulIf","src":"1329:53:40"},{"nativeSrc":"1391:30:40","nodeType":"YulVariableDeclaration","src":"1391:30:40","value":{"arguments":[{"name":"headStart","nativeSrc":"1411:9:40","nodeType":"YulIdentifier","src":"1411:9:40"}],"functionName":{"name":"mload","nativeSrc":"1405:5:40","nodeType":"YulIdentifier","src":"1405:5:40"},"nativeSrc":"1405:16:40","nodeType":"YulFunctionCall","src":"1405:16:40"},"variables":[{"name":"offset","nativeSrc":"1395:6:40","nodeType":"YulTypedName","src":"1395:6:40","type":""}]},{"body":{"nativeSrc":"1464:16:40","nodeType":"YulBlock","src":"1464:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:40","nodeType":"YulLiteral","src":"1473:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:1:40","nodeType":"YulLiteral","src":"1476:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1466:6:40","nodeType":"YulIdentifier","src":"1466:6:40"},"nativeSrc":"1466:12:40","nodeType":"YulFunctionCall","src":"1466:12:40"},"nativeSrc":"1466:12:40","nodeType":"YulExpressionStatement","src":"1466:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1436:6:40","nodeType":"YulIdentifier","src":"1436:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1452:2:40","nodeType":"YulLiteral","src":"1452:2:40","type":"","value":"64"},{"kind":"number","nativeSrc":"1456:1:40","nodeType":"YulLiteral","src":"1456:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1448:3:40","nodeType":"YulIdentifier","src":"1448:3:40"},"nativeSrc":"1448:10:40","nodeType":"YulFunctionCall","src":"1448:10:40"},{"kind":"number","nativeSrc":"1460:1:40","nodeType":"YulLiteral","src":"1460:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1444:3:40","nodeType":"YulIdentifier","src":"1444:3:40"},"nativeSrc":"1444:18:40","nodeType":"YulFunctionCall","src":"1444:18:40"}],"functionName":{"name":"gt","nativeSrc":"1433:2:40","nodeType":"YulIdentifier","src":"1433:2:40"},"nativeSrc":"1433:30:40","nodeType":"YulFunctionCall","src":"1433:30:40"},"nativeSrc":"1430:50:40","nodeType":"YulIf","src":"1430:50:40"},{"nativeSrc":"1489:71:40","nodeType":"YulAssignment","src":"1489:71:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1532:9:40","nodeType":"YulIdentifier","src":"1532:9:40"},{"name":"offset","nativeSrc":"1543:6:40","nodeType":"YulIdentifier","src":"1543:6:40"}],"functionName":{"name":"add","nativeSrc":"1528:3:40","nodeType":"YulIdentifier","src":"1528:3:40"},"nativeSrc":"1528:22:40","nodeType":"YulFunctionCall","src":"1528:22:40"},{"name":"dataEnd","nativeSrc":"1552:7:40","nodeType":"YulIdentifier","src":"1552:7:40"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1499:28:40","nodeType":"YulIdentifier","src":"1499:28:40"},"nativeSrc":"1499:61:40","nodeType":"YulFunctionCall","src":"1499:61:40"},"variableNames":[{"name":"value0","nativeSrc":"1489:6:40","nodeType":"YulIdentifier","src":"1489:6:40"}]},{"nativeSrc":"1569:41:40","nodeType":"YulVariableDeclaration","src":"1569:41:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1595:9:40","nodeType":"YulIdentifier","src":"1595:9:40"},{"kind":"number","nativeSrc":"1606:2:40","nodeType":"YulLiteral","src":"1606:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1591:3:40","nodeType":"YulIdentifier","src":"1591:3:40"},"nativeSrc":"1591:18:40","nodeType":"YulFunctionCall","src":"1591:18:40"}],"functionName":{"name":"mload","nativeSrc":"1585:5:40","nodeType":"YulIdentifier","src":"1585:5:40"},"nativeSrc":"1585:25:40","nodeType":"YulFunctionCall","src":"1585:25:40"},"variables":[{"name":"offset_1","nativeSrc":"1573:8:40","nodeType":"YulTypedName","src":"1573:8:40","type":""}]},{"body":{"nativeSrc":"1655:16:40","nodeType":"YulBlock","src":"1655:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1664:1:40","nodeType":"YulLiteral","src":"1664:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1667:1:40","nodeType":"YulLiteral","src":"1667:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1657:6:40","nodeType":"YulIdentifier","src":"1657:6:40"},"nativeSrc":"1657:12:40","nodeType":"YulFunctionCall","src":"1657:12:40"},"nativeSrc":"1657:12:40","nodeType":"YulExpressionStatement","src":"1657:12:40"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1625:8:40","nodeType":"YulIdentifier","src":"1625:8:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1643:2:40","nodeType":"YulLiteral","src":"1643:2:40","type":"","value":"64"},{"kind":"number","nativeSrc":"1647:1:40","nodeType":"YulLiteral","src":"1647:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1639:3:40","nodeType":"YulIdentifier","src":"1639:3:40"},"nativeSrc":"1639:10:40","nodeType":"YulFunctionCall","src":"1639:10:40"},{"kind":"number","nativeSrc":"1651:1:40","nodeType":"YulLiteral","src":"1651:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1635:3:40","nodeType":"YulIdentifier","src":"1635:3:40"},"nativeSrc":"1635:18:40","nodeType":"YulFunctionCall","src":"1635:18:40"}],"functionName":{"name":"gt","nativeSrc":"1622:2:40","nodeType":"YulIdentifier","src":"1622:2:40"},"nativeSrc":"1622:32:40","nodeType":"YulFunctionCall","src":"1622:32:40"},"nativeSrc":"1619:52:40","nodeType":"YulIf","src":"1619:52:40"},{"nativeSrc":"1680:73:40","nodeType":"YulAssignment","src":"1680:73:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1723:9:40","nodeType":"YulIdentifier","src":"1723:9:40"},{"name":"offset_1","nativeSrc":"1734:8:40","nodeType":"YulIdentifier","src":"1734:8:40"}],"functionName":{"name":"add","nativeSrc":"1719:3:40","nodeType":"YulIdentifier","src":"1719:3:40"},"nativeSrc":"1719:24:40","nodeType":"YulFunctionCall","src":"1719:24:40"},{"name":"dataEnd","nativeSrc":"1745:7:40","nodeType":"YulIdentifier","src":"1745:7:40"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1690:28:40","nodeType":"YulIdentifier","src":"1690:28:40"},"nativeSrc":"1690:63:40","nodeType":"YulFunctionCall","src":"1690:63:40"},"variableNames":[{"name":"value1","nativeSrc":"1680:6:40","nodeType":"YulIdentifier","src":"1680:6:40"}]},{"nativeSrc":"1762:59:40","nodeType":"YulAssignment","src":"1762:59:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1806:9:40","nodeType":"YulIdentifier","src":"1806:9:40"},{"kind":"number","nativeSrc":"1817:2:40","nodeType":"YulLiteral","src":"1817:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1802:3:40","nodeType":"YulIdentifier","src":"1802:3:40"},"nativeSrc":"1802:18:40","nodeType":"YulFunctionCall","src":"1802:18:40"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"1772:29:40","nodeType":"YulIdentifier","src":"1772:29:40"},"nativeSrc":"1772:49:40","nodeType":"YulFunctionCall","src":"1772:49:40"},"variableNames":[{"name":"value2","nativeSrc":"1762:6:40","nodeType":"YulIdentifier","src":"1762:6:40"}]},{"nativeSrc":"1830:59:40","nodeType":"YulAssignment","src":"1830:59:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1874:9:40","nodeType":"YulIdentifier","src":"1874:9:40"},{"kind":"number","nativeSrc":"1885:2:40","nodeType":"YulLiteral","src":"1885:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1870:3:40","nodeType":"YulIdentifier","src":"1870:3:40"},"nativeSrc":"1870:18:40","nodeType":"YulFunctionCall","src":"1870:18:40"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"1840:29:40","nodeType":"YulIdentifier","src":"1840:29:40"},"nativeSrc":"1840:49:40","nodeType":"YulFunctionCall","src":"1840:49:40"},"variableNames":[{"name":"value3","nativeSrc":"1830:6:40","nodeType":"YulIdentifier","src":"1830:6:40"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory","nativeSrc":"1167:728:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1261:9:40","nodeType":"YulTypedName","src":"1261:9:40","type":""},{"name":"dataEnd","nativeSrc":"1272:7:40","nodeType":"YulTypedName","src":"1272:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1284:6:40","nodeType":"YulTypedName","src":"1284:6:40","type":""},{"name":"value1","nativeSrc":"1292:6:40","nodeType":"YulTypedName","src":"1292:6:40","type":""},{"name":"value2","nativeSrc":"1300:6:40","nodeType":"YulTypedName","src":"1300:6:40","type":""},{"name":"value3","nativeSrc":"1308:6:40","nodeType":"YulTypedName","src":"1308:6:40","type":""}],"src":"1167:728:40"},{"body":{"nativeSrc":"2001:102:40","nodeType":"YulBlock","src":"2001:102:40","statements":[{"nativeSrc":"2011:26:40","nodeType":"YulAssignment","src":"2011:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"2023:9:40","nodeType":"YulIdentifier","src":"2023:9:40"},{"kind":"number","nativeSrc":"2034:2:40","nodeType":"YulLiteral","src":"2034:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2019:3:40","nodeType":"YulIdentifier","src":"2019:3:40"},"nativeSrc":"2019:18:40","nodeType":"YulFunctionCall","src":"2019:18:40"},"variableNames":[{"name":"tail","nativeSrc":"2011:4:40","nodeType":"YulIdentifier","src":"2011:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2053:9:40","nodeType":"YulIdentifier","src":"2053:9:40"},{"arguments":[{"name":"value0","nativeSrc":"2068:6:40","nodeType":"YulIdentifier","src":"2068:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2084:3:40","nodeType":"YulLiteral","src":"2084:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"2089:1:40","nodeType":"YulLiteral","src":"2089:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2080:3:40","nodeType":"YulIdentifier","src":"2080:3:40"},"nativeSrc":"2080:11:40","nodeType":"YulFunctionCall","src":"2080:11:40"},{"kind":"number","nativeSrc":"2093:1:40","nodeType":"YulLiteral","src":"2093:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2076:3:40","nodeType":"YulIdentifier","src":"2076:3:40"},"nativeSrc":"2076:19:40","nodeType":"YulFunctionCall","src":"2076:19:40"}],"functionName":{"name":"and","nativeSrc":"2064:3:40","nodeType":"YulIdentifier","src":"2064:3:40"},"nativeSrc":"2064:32:40","nodeType":"YulFunctionCall","src":"2064:32:40"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:40","nodeType":"YulIdentifier","src":"2046:6:40"},"nativeSrc":"2046:51:40","nodeType":"YulFunctionCall","src":"2046:51:40"},"nativeSrc":"2046:51:40","nodeType":"YulExpressionStatement","src":"2046:51:40"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1900:203:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1970:9:40","nodeType":"YulTypedName","src":"1970:9:40","type":""},{"name":"value0","nativeSrc":"1981:6:40","nodeType":"YulTypedName","src":"1981:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:40","nodeType":"YulTypedName","src":"1992:4:40","type":""}],"src":"1900:203:40"},{"body":{"nativeSrc":"2140:95:40","nodeType":"YulBlock","src":"2140:95:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2157:1:40","nodeType":"YulLiteral","src":"2157:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2164:3:40","nodeType":"YulLiteral","src":"2164:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"2169:10:40","nodeType":"YulLiteral","src":"2169:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2160:3:40","nodeType":"YulIdentifier","src":"2160:3:40"},"nativeSrc":"2160:20:40","nodeType":"YulFunctionCall","src":"2160:20:40"}],"functionName":{"name":"mstore","nativeSrc":"2150:6:40","nodeType":"YulIdentifier","src":"2150:6:40"},"nativeSrc":"2150:31:40","nodeType":"YulFunctionCall","src":"2150:31:40"},"nativeSrc":"2150:31:40","nodeType":"YulExpressionStatement","src":"2150:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2197:1:40","nodeType":"YulLiteral","src":"2197:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"2200:4:40","nodeType":"YulLiteral","src":"2200:4:40","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"2190:6:40","nodeType":"YulIdentifier","src":"2190:6:40"},"nativeSrc":"2190:15:40","nodeType":"YulFunctionCall","src":"2190:15:40"},"nativeSrc":"2190:15:40","nodeType":"YulExpressionStatement","src":"2190:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2221:1:40","nodeType":"YulLiteral","src":"2221:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"2224:4:40","nodeType":"YulLiteral","src":"2224:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2214:6:40","nodeType":"YulIdentifier","src":"2214:6:40"},"nativeSrc":"2214:15:40","nodeType":"YulFunctionCall","src":"2214:15:40"},"nativeSrc":"2214:15:40","nodeType":"YulExpressionStatement","src":"2214:15:40"}]},"name":"panic_error_0x11","nativeSrc":"2108:127:40","nodeType":"YulFunctionDefinition","src":"2108:127:40"},{"body":{"nativeSrc":"2287:104:40","nodeType":"YulBlock","src":"2287:104:40","statements":[{"nativeSrc":"2297:39:40","nodeType":"YulAssignment","src":"2297:39:40","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"2313:1:40","nodeType":"YulIdentifier","src":"2313:1:40"},{"kind":"number","nativeSrc":"2316:4:40","nodeType":"YulLiteral","src":"2316:4:40","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2309:3:40","nodeType":"YulIdentifier","src":"2309:3:40"},"nativeSrc":"2309:12:40","nodeType":"YulFunctionCall","src":"2309:12:40"},{"arguments":[{"name":"y","nativeSrc":"2327:1:40","nodeType":"YulIdentifier","src":"2327:1:40"},{"kind":"number","nativeSrc":"2330:4:40","nodeType":"YulLiteral","src":"2330:4:40","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2323:3:40","nodeType":"YulIdentifier","src":"2323:3:40"},"nativeSrc":"2323:12:40","nodeType":"YulFunctionCall","src":"2323:12:40"}],"functionName":{"name":"sub","nativeSrc":"2305:3:40","nodeType":"YulIdentifier","src":"2305:3:40"},"nativeSrc":"2305:31:40","nodeType":"YulFunctionCall","src":"2305:31:40"},"variableNames":[{"name":"diff","nativeSrc":"2297:4:40","nodeType":"YulIdentifier","src":"2297:4:40"}]},{"body":{"nativeSrc":"2363:22:40","nodeType":"YulBlock","src":"2363:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"2365:16:40","nodeType":"YulIdentifier","src":"2365:16:40"},"nativeSrc":"2365:18:40","nodeType":"YulFunctionCall","src":"2365:18:40"},"nativeSrc":"2365:18:40","nodeType":"YulExpressionStatement","src":"2365:18:40"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"2351:4:40","nodeType":"YulIdentifier","src":"2351:4:40"},{"kind":"number","nativeSrc":"2357:4:40","nodeType":"YulLiteral","src":"2357:4:40","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"2348:2:40","nodeType":"YulIdentifier","src":"2348:2:40"},"nativeSrc":"2348:14:40","nodeType":"YulFunctionCall","src":"2348:14:40"},"nativeSrc":"2345:40:40","nodeType":"YulIf","src":"2345:40:40"}]},"name":"checked_sub_t_uint8","nativeSrc":"2240:151:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"2269:1:40","nodeType":"YulTypedName","src":"2269:1:40","type":""},{"name":"y","nativeSrc":"2272:1:40","nodeType":"YulTypedName","src":"2272:1:40","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"2278:4:40","nodeType":"YulTypedName","src":"2278:4:40","type":""}],"src":"2240:151:40"},{"body":{"nativeSrc":"2465:306:40","nodeType":"YulBlock","src":"2465:306:40","statements":[{"nativeSrc":"2475:10:40","nodeType":"YulAssignment","src":"2475:10:40","value":{"kind":"number","nativeSrc":"2484:1:40","nodeType":"YulLiteral","src":"2484:1:40","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"2475:5:40","nodeType":"YulIdentifier","src":"2475:5:40"}]},{"nativeSrc":"2494:13:40","nodeType":"YulAssignment","src":"2494:13:40","value":{"name":"_base","nativeSrc":"2502:5:40","nodeType":"YulIdentifier","src":"2502:5:40"},"variableNames":[{"name":"base","nativeSrc":"2494:4:40","nodeType":"YulIdentifier","src":"2494:4:40"}]},{"body":{"nativeSrc":"2552:213:40","nodeType":"YulBlock","src":"2552:213:40","statements":[{"body":{"nativeSrc":"2594:22:40","nodeType":"YulBlock","src":"2594:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"2596:16:40","nodeType":"YulIdentifier","src":"2596:16:40"},"nativeSrc":"2596:18:40","nodeType":"YulFunctionCall","src":"2596:18:40"},"nativeSrc":"2596:18:40","nodeType":"YulExpressionStatement","src":"2596:18:40"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"2572:4:40","nodeType":"YulIdentifier","src":"2572:4:40"},{"arguments":[{"name":"max","nativeSrc":"2582:3:40","nodeType":"YulIdentifier","src":"2582:3:40"},{"name":"base","nativeSrc":"2587:4:40","nodeType":"YulIdentifier","src":"2587:4:40"}],"functionName":{"name":"div","nativeSrc":"2578:3:40","nodeType":"YulIdentifier","src":"2578:3:40"},"nativeSrc":"2578:14:40","nodeType":"YulFunctionCall","src":"2578:14:40"}],"functionName":{"name":"gt","nativeSrc":"2569:2:40","nodeType":"YulIdentifier","src":"2569:2:40"},"nativeSrc":"2569:24:40","nodeType":"YulFunctionCall","src":"2569:24:40"},"nativeSrc":"2566:50:40","nodeType":"YulIf","src":"2566:50:40"},{"body":{"nativeSrc":"2649:29:40","nodeType":"YulBlock","src":"2649:29:40","statements":[{"nativeSrc":"2651:25:40","nodeType":"YulAssignment","src":"2651:25:40","value":{"arguments":[{"name":"power","nativeSrc":"2664:5:40","nodeType":"YulIdentifier","src":"2664:5:40"},{"name":"base","nativeSrc":"2671:4:40","nodeType":"YulIdentifier","src":"2671:4:40"}],"functionName":{"name":"mul","nativeSrc":"2660:3:40","nodeType":"YulIdentifier","src":"2660:3:40"},"nativeSrc":"2660:16:40","nodeType":"YulFunctionCall","src":"2660:16:40"},"variableNames":[{"name":"power","nativeSrc":"2651:5:40","nodeType":"YulIdentifier","src":"2651:5:40"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2636:8:40","nodeType":"YulIdentifier","src":"2636:8:40"},{"kind":"number","nativeSrc":"2646:1:40","nodeType":"YulLiteral","src":"2646:1:40","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2632:3:40","nodeType":"YulIdentifier","src":"2632:3:40"},"nativeSrc":"2632:16:40","nodeType":"YulFunctionCall","src":"2632:16:40"},"nativeSrc":"2629:49:40","nodeType":"YulIf","src":"2629:49:40"},{"nativeSrc":"2691:23:40","nodeType":"YulAssignment","src":"2691:23:40","value":{"arguments":[{"name":"base","nativeSrc":"2703:4:40","nodeType":"YulIdentifier","src":"2703:4:40"},{"name":"base","nativeSrc":"2709:4:40","nodeType":"YulIdentifier","src":"2709:4:40"}],"functionName":{"name":"mul","nativeSrc":"2699:3:40","nodeType":"YulIdentifier","src":"2699:3:40"},"nativeSrc":"2699:15:40","nodeType":"YulFunctionCall","src":"2699:15:40"},"variableNames":[{"name":"base","nativeSrc":"2691:4:40","nodeType":"YulIdentifier","src":"2691:4:40"}]},{"nativeSrc":"2727:28:40","nodeType":"YulAssignment","src":"2727:28:40","value":{"arguments":[{"kind":"number","nativeSrc":"2743:1:40","nodeType":"YulLiteral","src":"2743:1:40","type":"","value":"1"},{"name":"exponent","nativeSrc":"2746:8:40","nodeType":"YulIdentifier","src":"2746:8:40"}],"functionName":{"name":"shr","nativeSrc":"2739:3:40","nodeType":"YulIdentifier","src":"2739:3:40"},"nativeSrc":"2739:16:40","nodeType":"YulFunctionCall","src":"2739:16:40"},"variableNames":[{"name":"exponent","nativeSrc":"2727:8:40","nodeType":"YulIdentifier","src":"2727:8:40"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2527:8:40","nodeType":"YulIdentifier","src":"2527:8:40"},{"kind":"number","nativeSrc":"2537:1:40","nodeType":"YulLiteral","src":"2537:1:40","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"2524:2:40","nodeType":"YulIdentifier","src":"2524:2:40"},"nativeSrc":"2524:15:40","nodeType":"YulFunctionCall","src":"2524:15:40"},"nativeSrc":"2516:249:40","nodeType":"YulForLoop","post":{"nativeSrc":"2540:3:40","nodeType":"YulBlock","src":"2540:3:40","statements":[]},"pre":{"nativeSrc":"2520:3:40","nodeType":"YulBlock","src":"2520:3:40","statements":[]},"src":"2516:249:40"}]},"name":"checked_exp_helper","nativeSrc":"2396:375:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"2424:5:40","nodeType":"YulTypedName","src":"2424:5:40","type":""},{"name":"exponent","nativeSrc":"2431:8:40","nodeType":"YulTypedName","src":"2431:8:40","type":""},{"name":"max","nativeSrc":"2441:3:40","nodeType":"YulTypedName","src":"2441:3:40","type":""}],"returnVariables":[{"name":"power","nativeSrc":"2449:5:40","nodeType":"YulTypedName","src":"2449:5:40","type":""},{"name":"base","nativeSrc":"2456:4:40","nodeType":"YulTypedName","src":"2456:4:40","type":""}],"src":"2396:375:40"},{"body":{"nativeSrc":"2835:843:40","nodeType":"YulBlock","src":"2835:843:40","statements":[{"body":{"nativeSrc":"2873:52:40","nodeType":"YulBlock","src":"2873:52:40","statements":[{"nativeSrc":"2887:10:40","nodeType":"YulAssignment","src":"2887:10:40","value":{"kind":"number","nativeSrc":"2896:1:40","nodeType":"YulLiteral","src":"2896:1:40","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"2887:5:40","nodeType":"YulIdentifier","src":"2887:5:40"}]},{"nativeSrc":"2910:5:40","nodeType":"YulLeave","src":"2910:5:40"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2855:8:40","nodeType":"YulIdentifier","src":"2855:8:40"}],"functionName":{"name":"iszero","nativeSrc":"2848:6:40","nodeType":"YulIdentifier","src":"2848:6:40"},"nativeSrc":"2848:16:40","nodeType":"YulFunctionCall","src":"2848:16:40"},"nativeSrc":"2845:80:40","nodeType":"YulIf","src":"2845:80:40"},{"body":{"nativeSrc":"2958:52:40","nodeType":"YulBlock","src":"2958:52:40","statements":[{"nativeSrc":"2972:10:40","nodeType":"YulAssignment","src":"2972:10:40","value":{"kind":"number","nativeSrc":"2981:1:40","nodeType":"YulLiteral","src":"2981:1:40","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"2972:5:40","nodeType":"YulIdentifier","src":"2972:5:40"}]},{"nativeSrc":"2995:5:40","nodeType":"YulLeave","src":"2995:5:40"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"2944:4:40","nodeType":"YulIdentifier","src":"2944:4:40"}],"functionName":{"name":"iszero","nativeSrc":"2937:6:40","nodeType":"YulIdentifier","src":"2937:6:40"},"nativeSrc":"2937:12:40","nodeType":"YulFunctionCall","src":"2937:12:40"},"nativeSrc":"2934:76:40","nodeType":"YulIf","src":"2934:76:40"},{"cases":[{"body":{"nativeSrc":"3046:52:40","nodeType":"YulBlock","src":"3046:52:40","statements":[{"nativeSrc":"3060:10:40","nodeType":"YulAssignment","src":"3060:10:40","value":{"kind":"number","nativeSrc":"3069:1:40","nodeType":"YulLiteral","src":"3069:1:40","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"3060:5:40","nodeType":"YulIdentifier","src":"3060:5:40"}]},{"nativeSrc":"3083:5:40","nodeType":"YulLeave","src":"3083:5:40"}]},"nativeSrc":"3039:59:40","nodeType":"YulCase","src":"3039:59:40","value":{"kind":"number","nativeSrc":"3044:1:40","nodeType":"YulLiteral","src":"3044:1:40","type":"","value":"1"}},{"body":{"nativeSrc":"3114:167:40","nodeType":"YulBlock","src":"3114:167:40","statements":[{"body":{"nativeSrc":"3149:22:40","nodeType":"YulBlock","src":"3149:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"3151:16:40","nodeType":"YulIdentifier","src":"3151:16:40"},"nativeSrc":"3151:18:40","nodeType":"YulFunctionCall","src":"3151:18:40"},"nativeSrc":"3151:18:40","nodeType":"YulExpressionStatement","src":"3151:18:40"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"3134:8:40","nodeType":"YulIdentifier","src":"3134:8:40"},{"kind":"number","nativeSrc":"3144:3:40","nodeType":"YulLiteral","src":"3144:3:40","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"3131:2:40","nodeType":"YulIdentifier","src":"3131:2:40"},"nativeSrc":"3131:17:40","nodeType":"YulFunctionCall","src":"3131:17:40"},"nativeSrc":"3128:43:40","nodeType":"YulIf","src":"3128:43:40"},{"nativeSrc":"3184:25:40","nodeType":"YulAssignment","src":"3184:25:40","value":{"arguments":[{"name":"exponent","nativeSrc":"3197:8:40","nodeType":"YulIdentifier","src":"3197:8:40"},{"kind":"number","nativeSrc":"3207:1:40","nodeType":"YulLiteral","src":"3207:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3193:3:40","nodeType":"YulIdentifier","src":"3193:3:40"},"nativeSrc":"3193:16:40","nodeType":"YulFunctionCall","src":"3193:16:40"},"variableNames":[{"name":"power","nativeSrc":"3184:5:40","nodeType":"YulIdentifier","src":"3184:5:40"}]},{"nativeSrc":"3222:11:40","nodeType":"YulVariableDeclaration","src":"3222:11:40","value":{"kind":"number","nativeSrc":"3232:1:40","nodeType":"YulLiteral","src":"3232:1:40","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"3226:2:40","nodeType":"YulTypedName","src":"3226:2:40","type":""}]},{"nativeSrc":"3246:7:40","nodeType":"YulAssignment","src":"3246:7:40","value":{"kind":"number","nativeSrc":"3252:1:40","nodeType":"YulLiteral","src":"3252:1:40","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"3246:2:40","nodeType":"YulIdentifier","src":"3246:2:40"}]},{"nativeSrc":"3266:5:40","nodeType":"YulLeave","src":"3266:5:40"}]},"nativeSrc":"3107:174:40","nodeType":"YulCase","src":"3107:174:40","value":{"kind":"number","nativeSrc":"3112:1:40","nodeType":"YulLiteral","src":"3112:1:40","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"3026:4:40","nodeType":"YulIdentifier","src":"3026:4:40"},"nativeSrc":"3019:262:40","nodeType":"YulSwitch","src":"3019:262:40"},{"body":{"nativeSrc":"3379:114:40","nodeType":"YulBlock","src":"3379:114:40","statements":[{"nativeSrc":"3393:28:40","nodeType":"YulAssignment","src":"3393:28:40","value":{"arguments":[{"name":"base","nativeSrc":"3406:4:40","nodeType":"YulIdentifier","src":"3406:4:40"},{"name":"exponent","nativeSrc":"3412:8:40","nodeType":"YulIdentifier","src":"3412:8:40"}],"functionName":{"name":"exp","nativeSrc":"3402:3:40","nodeType":"YulIdentifier","src":"3402:3:40"},"nativeSrc":"3402:19:40","nodeType":"YulFunctionCall","src":"3402:19:40"},"variableNames":[{"name":"power","nativeSrc":"3393:5:40","nodeType":"YulIdentifier","src":"3393:5:40"}]},{"nativeSrc":"3434:11:40","nodeType":"YulVariableDeclaration","src":"3434:11:40","value":{"kind":"number","nativeSrc":"3444:1:40","nodeType":"YulLiteral","src":"3444:1:40","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"3438:2:40","nodeType":"YulTypedName","src":"3438:2:40","type":""}]},{"nativeSrc":"3458:7:40","nodeType":"YulAssignment","src":"3458:7:40","value":{"kind":"number","nativeSrc":"3464:1:40","nodeType":"YulLiteral","src":"3464:1:40","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"3458:2:40","nodeType":"YulIdentifier","src":"3458:2:40"}]},{"nativeSrc":"3478:5:40","nodeType":"YulLeave","src":"3478:5:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"3303:4:40","nodeType":"YulIdentifier","src":"3303:4:40"},{"kind":"number","nativeSrc":"3309:2:40","nodeType":"YulLiteral","src":"3309:2:40","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"3300:2:40","nodeType":"YulIdentifier","src":"3300:2:40"},"nativeSrc":"3300:12:40","nodeType":"YulFunctionCall","src":"3300:12:40"},{"arguments":[{"name":"exponent","nativeSrc":"3317:8:40","nodeType":"YulIdentifier","src":"3317:8:40"},{"kind":"number","nativeSrc":"3327:2:40","nodeType":"YulLiteral","src":"3327:2:40","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"3314:2:40","nodeType":"YulIdentifier","src":"3314:2:40"},"nativeSrc":"3314:16:40","nodeType":"YulFunctionCall","src":"3314:16:40"}],"functionName":{"name":"and","nativeSrc":"3296:3:40","nodeType":"YulIdentifier","src":"3296:3:40"},"nativeSrc":"3296:35:40","nodeType":"YulFunctionCall","src":"3296:35:40"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"3340:4:40","nodeType":"YulIdentifier","src":"3340:4:40"},{"kind":"number","nativeSrc":"3346:3:40","nodeType":"YulLiteral","src":"3346:3:40","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"3337:2:40","nodeType":"YulIdentifier","src":"3337:2:40"},"nativeSrc":"3337:13:40","nodeType":"YulFunctionCall","src":"3337:13:40"},{"arguments":[{"name":"exponent","nativeSrc":"3355:8:40","nodeType":"YulIdentifier","src":"3355:8:40"},{"kind":"number","nativeSrc":"3365:2:40","nodeType":"YulLiteral","src":"3365:2:40","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"3352:2:40","nodeType":"YulIdentifier","src":"3352:2:40"},"nativeSrc":"3352:16:40","nodeType":"YulFunctionCall","src":"3352:16:40"}],"functionName":{"name":"and","nativeSrc":"3333:3:40","nodeType":"YulIdentifier","src":"3333:3:40"},"nativeSrc":"3333:36:40","nodeType":"YulFunctionCall","src":"3333:36:40"}],"functionName":{"name":"or","nativeSrc":"3293:2:40","nodeType":"YulIdentifier","src":"3293:2:40"},"nativeSrc":"3293:77:40","nodeType":"YulFunctionCall","src":"3293:77:40"},"nativeSrc":"3290:203:40","nodeType":"YulIf","src":"3290:203:40"},{"nativeSrc":"3502:65:40","nodeType":"YulVariableDeclaration","src":"3502:65:40","value":{"arguments":[{"name":"base","nativeSrc":"3544:4:40","nodeType":"YulIdentifier","src":"3544:4:40"},{"name":"exponent","nativeSrc":"3550:8:40","nodeType":"YulIdentifier","src":"3550:8:40"},{"arguments":[{"kind":"number","nativeSrc":"3564:1:40","nodeType":"YulLiteral","src":"3564:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3560:3:40","nodeType":"YulIdentifier","src":"3560:3:40"},"nativeSrc":"3560:6:40","nodeType":"YulFunctionCall","src":"3560:6:40"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"3525:18:40","nodeType":"YulIdentifier","src":"3525:18:40"},"nativeSrc":"3525:42:40","nodeType":"YulFunctionCall","src":"3525:42:40"},"variables":[{"name":"power_1","nativeSrc":"3506:7:40","nodeType":"YulTypedName","src":"3506:7:40","type":""},{"name":"base_1","nativeSrc":"3515:6:40","nodeType":"YulTypedName","src":"3515:6:40","type":""}]},{"body":{"nativeSrc":"3612:22:40","nodeType":"YulBlock","src":"3612:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"3614:16:40","nodeType":"YulIdentifier","src":"3614:16:40"},"nativeSrc":"3614:18:40","nodeType":"YulFunctionCall","src":"3614:18:40"},"nativeSrc":"3614:18:40","nodeType":"YulExpressionStatement","src":"3614:18:40"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"3582:7:40","nodeType":"YulIdentifier","src":"3582:7:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3599:1:40","nodeType":"YulLiteral","src":"3599:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3595:3:40","nodeType":"YulIdentifier","src":"3595:3:40"},"nativeSrc":"3595:6:40","nodeType":"YulFunctionCall","src":"3595:6:40"},{"name":"base_1","nativeSrc":"3603:6:40","nodeType":"YulIdentifier","src":"3603:6:40"}],"functionName":{"name":"div","nativeSrc":"3591:3:40","nodeType":"YulIdentifier","src":"3591:3:40"},"nativeSrc":"3591:19:40","nodeType":"YulFunctionCall","src":"3591:19:40"}],"functionName":{"name":"gt","nativeSrc":"3579:2:40","nodeType":"YulIdentifier","src":"3579:2:40"},"nativeSrc":"3579:32:40","nodeType":"YulFunctionCall","src":"3579:32:40"},"nativeSrc":"3576:58:40","nodeType":"YulIf","src":"3576:58:40"},{"nativeSrc":"3643:29:40","nodeType":"YulAssignment","src":"3643:29:40","value":{"arguments":[{"name":"power_1","nativeSrc":"3656:7:40","nodeType":"YulIdentifier","src":"3656:7:40"},{"name":"base_1","nativeSrc":"3665:6:40","nodeType":"YulIdentifier","src":"3665:6:40"}],"functionName":{"name":"mul","nativeSrc":"3652:3:40","nodeType":"YulIdentifier","src":"3652:3:40"},"nativeSrc":"3652:20:40","nodeType":"YulFunctionCall","src":"3652:20:40"},"variableNames":[{"name":"power","nativeSrc":"3643:5:40","nodeType":"YulIdentifier","src":"3643:5:40"}]}]},"name":"checked_exp_unsigned","nativeSrc":"2776:902:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"2806:4:40","nodeType":"YulTypedName","src":"2806:4:40","type":""},{"name":"exponent","nativeSrc":"2812:8:40","nodeType":"YulTypedName","src":"2812:8:40","type":""}],"returnVariables":[{"name":"power","nativeSrc":"2825:5:40","nodeType":"YulTypedName","src":"2825:5:40","type":""}],"src":"2776:902:40"},{"body":{"nativeSrc":"3751:72:40","nodeType":"YulBlock","src":"3751:72:40","statements":[{"nativeSrc":"3761:56:40","nodeType":"YulAssignment","src":"3761:56:40","value":{"arguments":[{"name":"base","nativeSrc":"3791:4:40","nodeType":"YulIdentifier","src":"3791:4:40"},{"arguments":[{"name":"exponent","nativeSrc":"3801:8:40","nodeType":"YulIdentifier","src":"3801:8:40"},{"kind":"number","nativeSrc":"3811:4:40","nodeType":"YulLiteral","src":"3811:4:40","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3797:3:40","nodeType":"YulIdentifier","src":"3797:3:40"},"nativeSrc":"3797:19:40","nodeType":"YulFunctionCall","src":"3797:19:40"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"3770:20:40","nodeType":"YulIdentifier","src":"3770:20:40"},"nativeSrc":"3770:47:40","nodeType":"YulFunctionCall","src":"3770:47:40"},"variableNames":[{"name":"power","nativeSrc":"3761:5:40","nodeType":"YulIdentifier","src":"3761:5:40"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"3683:140:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"3722:4:40","nodeType":"YulTypedName","src":"3722:4:40","type":""},{"name":"exponent","nativeSrc":"3728:8:40","nodeType":"YulTypedName","src":"3728:8:40","type":""}],"returnVariables":[{"name":"power","nativeSrc":"3741:5:40","nodeType":"YulTypedName","src":"3741:5:40","type":""}],"src":"3683:140:40"},{"body":{"nativeSrc":"3883:325:40","nodeType":"YulBlock","src":"3883:325:40","statements":[{"nativeSrc":"3893:22:40","nodeType":"YulAssignment","src":"3893:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"3907:1:40","nodeType":"YulLiteral","src":"3907:1:40","type":"","value":"1"},{"name":"data","nativeSrc":"3910:4:40","nodeType":"YulIdentifier","src":"3910:4:40"}],"functionName":{"name":"shr","nativeSrc":"3903:3:40","nodeType":"YulIdentifier","src":"3903:3:40"},"nativeSrc":"3903:12:40","nodeType":"YulFunctionCall","src":"3903:12:40"},"variableNames":[{"name":"length","nativeSrc":"3893:6:40","nodeType":"YulIdentifier","src":"3893:6:40"}]},{"nativeSrc":"3924:38:40","nodeType":"YulVariableDeclaration","src":"3924:38:40","value":{"arguments":[{"name":"data","nativeSrc":"3954:4:40","nodeType":"YulIdentifier","src":"3954:4:40"},{"kind":"number","nativeSrc":"3960:1:40","nodeType":"YulLiteral","src":"3960:1:40","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"3950:3:40","nodeType":"YulIdentifier","src":"3950:3:40"},"nativeSrc":"3950:12:40","nodeType":"YulFunctionCall","src":"3950:12:40"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"3928:18:40","nodeType":"YulTypedName","src":"3928:18:40","type":""}]},{"body":{"nativeSrc":"4001:31:40","nodeType":"YulBlock","src":"4001:31:40","statements":[{"nativeSrc":"4003:27:40","nodeType":"YulAssignment","src":"4003:27:40","value":{"arguments":[{"name":"length","nativeSrc":"4017:6:40","nodeType":"YulIdentifier","src":"4017:6:40"},{"kind":"number","nativeSrc":"4025:4:40","nodeType":"YulLiteral","src":"4025:4:40","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4013:3:40","nodeType":"YulIdentifier","src":"4013:3:40"},"nativeSrc":"4013:17:40","nodeType":"YulFunctionCall","src":"4013:17:40"},"variableNames":[{"name":"length","nativeSrc":"4003:6:40","nodeType":"YulIdentifier","src":"4003:6:40"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3981:18:40","nodeType":"YulIdentifier","src":"3981:18:40"}],"functionName":{"name":"iszero","nativeSrc":"3974:6:40","nodeType":"YulIdentifier","src":"3974:6:40"},"nativeSrc":"3974:26:40","nodeType":"YulFunctionCall","src":"3974:26:40"},"nativeSrc":"3971:61:40","nodeType":"YulIf","src":"3971:61:40"},{"body":{"nativeSrc":"4091:111:40","nodeType":"YulBlock","src":"4091:111:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4112:1:40","nodeType":"YulLiteral","src":"4112:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4119:3:40","nodeType":"YulLiteral","src":"4119:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"4124:10:40","nodeType":"YulLiteral","src":"4124:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4115:3:40","nodeType":"YulIdentifier","src":"4115:3:40"},"nativeSrc":"4115:20:40","nodeType":"YulFunctionCall","src":"4115:20:40"}],"functionName":{"name":"mstore","nativeSrc":"4105:6:40","nodeType":"YulIdentifier","src":"4105:6:40"},"nativeSrc":"4105:31:40","nodeType":"YulFunctionCall","src":"4105:31:40"},"nativeSrc":"4105:31:40","nodeType":"YulExpressionStatement","src":"4105:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4156:1:40","nodeType":"YulLiteral","src":"4156:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"4159:4:40","nodeType":"YulLiteral","src":"4159:4:40","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4149:6:40","nodeType":"YulIdentifier","src":"4149:6:40"},"nativeSrc":"4149:15:40","nodeType":"YulFunctionCall","src":"4149:15:40"},"nativeSrc":"4149:15:40","nodeType":"YulExpressionStatement","src":"4149:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4184:1:40","nodeType":"YulLiteral","src":"4184:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4187:4:40","nodeType":"YulLiteral","src":"4187:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4177:6:40","nodeType":"YulIdentifier","src":"4177:6:40"},"nativeSrc":"4177:15:40","nodeType":"YulFunctionCall","src":"4177:15:40"},"nativeSrc":"4177:15:40","nodeType":"YulExpressionStatement","src":"4177:15:40"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4047:18:40","nodeType":"YulIdentifier","src":"4047:18:40"},{"arguments":[{"name":"length","nativeSrc":"4070:6:40","nodeType":"YulIdentifier","src":"4070:6:40"},{"kind":"number","nativeSrc":"4078:2:40","nodeType":"YulLiteral","src":"4078:2:40","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4067:2:40","nodeType":"YulIdentifier","src":"4067:2:40"},"nativeSrc":"4067:14:40","nodeType":"YulFunctionCall","src":"4067:14:40"}],"functionName":{"name":"eq","nativeSrc":"4044:2:40","nodeType":"YulIdentifier","src":"4044:2:40"},"nativeSrc":"4044:38:40","nodeType":"YulFunctionCall","src":"4044:38:40"},"nativeSrc":"4041:161:40","nodeType":"YulIf","src":"4041:161:40"}]},"name":"extract_byte_array_length","nativeSrc":"3828:380:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"3863:4:40","nodeType":"YulTypedName","src":"3863:4:40","type":""}],"returnVariables":[{"name":"length","nativeSrc":"3872:6:40","nodeType":"YulTypedName","src":"3872:6:40","type":""}],"src":"3828:380:40"},{"body":{"nativeSrc":"4269:65:40","nodeType":"YulBlock","src":"4269:65:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4286:1:40","nodeType":"YulLiteral","src":"4286:1:40","type":"","value":"0"},{"name":"ptr","nativeSrc":"4289:3:40","nodeType":"YulIdentifier","src":"4289:3:40"}],"functionName":{"name":"mstore","nativeSrc":"4279:6:40","nodeType":"YulIdentifier","src":"4279:6:40"},"nativeSrc":"4279:14:40","nodeType":"YulFunctionCall","src":"4279:14:40"},"nativeSrc":"4279:14:40","nodeType":"YulExpressionStatement","src":"4279:14:40"},{"nativeSrc":"4302:26:40","nodeType":"YulAssignment","src":"4302:26:40","value":{"arguments":[{"kind":"number","nativeSrc":"4320:1:40","nodeType":"YulLiteral","src":"4320:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4323:4:40","nodeType":"YulLiteral","src":"4323:4:40","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4310:9:40","nodeType":"YulIdentifier","src":"4310:9:40"},"nativeSrc":"4310:18:40","nodeType":"YulFunctionCall","src":"4310:18:40"},"variableNames":[{"name":"data","nativeSrc":"4302:4:40","nodeType":"YulIdentifier","src":"4302:4:40"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"4213:121:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"4252:3:40","nodeType":"YulTypedName","src":"4252:3:40","type":""}],"returnVariables":[{"name":"data","nativeSrc":"4260:4:40","nodeType":"YulTypedName","src":"4260:4:40","type":""}],"src":"4213:121:40"},{"body":{"nativeSrc":"4420:437:40","nodeType":"YulBlock","src":"4420:437:40","statements":[{"body":{"nativeSrc":"4453:398:40","nodeType":"YulBlock","src":"4453:398:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4474:1:40","nodeType":"YulLiteral","src":"4474:1:40","type":"","value":"0"},{"name":"array","nativeSrc":"4477:5:40","nodeType":"YulIdentifier","src":"4477:5:40"}],"functionName":{"name":"mstore","nativeSrc":"4467:6:40","nodeType":"YulIdentifier","src":"4467:6:40"},"nativeSrc":"4467:16:40","nodeType":"YulFunctionCall","src":"4467:16:40"},"nativeSrc":"4467:16:40","nodeType":"YulExpressionStatement","src":"4467:16:40"},{"nativeSrc":"4496:30:40","nodeType":"YulVariableDeclaration","src":"4496:30:40","value":{"arguments":[{"kind":"number","nativeSrc":"4518:1:40","nodeType":"YulLiteral","src":"4518:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4521:4:40","nodeType":"YulLiteral","src":"4521:4:40","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4508:9:40","nodeType":"YulIdentifier","src":"4508:9:40"},"nativeSrc":"4508:18:40","nodeType":"YulFunctionCall","src":"4508:18:40"},"variables":[{"name":"data","nativeSrc":"4500:4:40","nodeType":"YulTypedName","src":"4500:4:40","type":""}]},{"nativeSrc":"4539:57:40","nodeType":"YulVariableDeclaration","src":"4539:57:40","value":{"arguments":[{"name":"data","nativeSrc":"4562:4:40","nodeType":"YulIdentifier","src":"4562:4:40"},{"arguments":[{"kind":"number","nativeSrc":"4572:1:40","nodeType":"YulLiteral","src":"4572:1:40","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"4579:10:40","nodeType":"YulIdentifier","src":"4579:10:40"},{"kind":"number","nativeSrc":"4591:2:40","nodeType":"YulLiteral","src":"4591:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4575:3:40","nodeType":"YulIdentifier","src":"4575:3:40"},"nativeSrc":"4575:19:40","nodeType":"YulFunctionCall","src":"4575:19:40"}],"functionName":{"name":"shr","nativeSrc":"4568:3:40","nodeType":"YulIdentifier","src":"4568:3:40"},"nativeSrc":"4568:27:40","nodeType":"YulFunctionCall","src":"4568:27:40"}],"functionName":{"name":"add","nativeSrc":"4558:3:40","nodeType":"YulIdentifier","src":"4558:3:40"},"nativeSrc":"4558:38:40","nodeType":"YulFunctionCall","src":"4558:38:40"},"variables":[{"name":"deleteStart","nativeSrc":"4543:11:40","nodeType":"YulTypedName","src":"4543:11:40","type":""}]},{"body":{"nativeSrc":"4633:23:40","nodeType":"YulBlock","src":"4633:23:40","statements":[{"nativeSrc":"4635:19:40","nodeType":"YulAssignment","src":"4635:19:40","value":{"name":"data","nativeSrc":"4650:4:40","nodeType":"YulIdentifier","src":"4650:4:40"},"variableNames":[{"name":"deleteStart","nativeSrc":"4635:11:40","nodeType":"YulIdentifier","src":"4635:11:40"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"4615:10:40","nodeType":"YulIdentifier","src":"4615:10:40"},{"kind":"number","nativeSrc":"4627:4:40","nodeType":"YulLiteral","src":"4627:4:40","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"4612:2:40","nodeType":"YulIdentifier","src":"4612:2:40"},"nativeSrc":"4612:20:40","nodeType":"YulFunctionCall","src":"4612:20:40"},"nativeSrc":"4609:47:40","nodeType":"YulIf","src":"4609:47:40"},{"nativeSrc":"4669:41:40","nodeType":"YulVariableDeclaration","src":"4669:41:40","value":{"arguments":[{"name":"data","nativeSrc":"4683:4:40","nodeType":"YulIdentifier","src":"4683:4:40"},{"arguments":[{"kind":"number","nativeSrc":"4693:1:40","nodeType":"YulLiteral","src":"4693:1:40","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"4700:3:40","nodeType":"YulIdentifier","src":"4700:3:40"},{"kind":"number","nativeSrc":"4705:2:40","nodeType":"YulLiteral","src":"4705:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4696:3:40","nodeType":"YulIdentifier","src":"4696:3:40"},"nativeSrc":"4696:12:40","nodeType":"YulFunctionCall","src":"4696:12:40"}],"functionName":{"name":"shr","nativeSrc":"4689:3:40","nodeType":"YulIdentifier","src":"4689:3:40"},"nativeSrc":"4689:20:40","nodeType":"YulFunctionCall","src":"4689:20:40"}],"functionName":{"name":"add","nativeSrc":"4679:3:40","nodeType":"YulIdentifier","src":"4679:3:40"},"nativeSrc":"4679:31:40","nodeType":"YulFunctionCall","src":"4679:31:40"},"variables":[{"name":"_1","nativeSrc":"4673:2:40","nodeType":"YulTypedName","src":"4673:2:40","type":""}]},{"nativeSrc":"4723:24:40","nodeType":"YulVariableDeclaration","src":"4723:24:40","value":{"name":"deleteStart","nativeSrc":"4736:11:40","nodeType":"YulIdentifier","src":"4736:11:40"},"variables":[{"name":"start","nativeSrc":"4727:5:40","nodeType":"YulTypedName","src":"4727:5:40","type":""}]},{"body":{"nativeSrc":"4821:20:40","nodeType":"YulBlock","src":"4821:20:40","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"4830:5:40","nodeType":"YulIdentifier","src":"4830:5:40"},{"kind":"number","nativeSrc":"4837:1:40","nodeType":"YulLiteral","src":"4837:1:40","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"4823:6:40","nodeType":"YulIdentifier","src":"4823:6:40"},"nativeSrc":"4823:16:40","nodeType":"YulFunctionCall","src":"4823:16:40"},"nativeSrc":"4823:16:40","nodeType":"YulExpressionStatement","src":"4823:16:40"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"4771:5:40","nodeType":"YulIdentifier","src":"4771:5:40"},{"name":"_1","nativeSrc":"4778:2:40","nodeType":"YulIdentifier","src":"4778:2:40"}],"functionName":{"name":"lt","nativeSrc":"4768:2:40","nodeType":"YulIdentifier","src":"4768:2:40"},"nativeSrc":"4768:13:40","nodeType":"YulFunctionCall","src":"4768:13:40"},"nativeSrc":"4760:81:40","nodeType":"YulForLoop","post":{"nativeSrc":"4782:26:40","nodeType":"YulBlock","src":"4782:26:40","statements":[{"nativeSrc":"4784:22:40","nodeType":"YulAssignment","src":"4784:22:40","value":{"arguments":[{"name":"start","nativeSrc":"4797:5:40","nodeType":"YulIdentifier","src":"4797:5:40"},{"kind":"number","nativeSrc":"4804:1:40","nodeType":"YulLiteral","src":"4804:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4793:3:40","nodeType":"YulIdentifier","src":"4793:3:40"},"nativeSrc":"4793:13:40","nodeType":"YulFunctionCall","src":"4793:13:40"},"variableNames":[{"name":"start","nativeSrc":"4784:5:40","nodeType":"YulIdentifier","src":"4784:5:40"}]}]},"pre":{"nativeSrc":"4764:3:40","nodeType":"YulBlock","src":"4764:3:40","statements":[]},"src":"4760:81:40"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"4436:3:40","nodeType":"YulIdentifier","src":"4436:3:40"},{"kind":"number","nativeSrc":"4441:2:40","nodeType":"YulLiteral","src":"4441:2:40","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"4433:2:40","nodeType":"YulIdentifier","src":"4433:2:40"},"nativeSrc":"4433:11:40","nodeType":"YulFunctionCall","src":"4433:11:40"},"nativeSrc":"4430:421:40","nodeType":"YulIf","src":"4430:421:40"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"4339:518:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"4392:5:40","nodeType":"YulTypedName","src":"4392:5:40","type":""},{"name":"len","nativeSrc":"4399:3:40","nodeType":"YulTypedName","src":"4399:3:40","type":""},{"name":"startIndex","nativeSrc":"4404:10:40","nodeType":"YulTypedName","src":"4404:10:40","type":""}],"src":"4339:518:40"},{"body":{"nativeSrc":"4947:81:40","nodeType":"YulBlock","src":"4947:81:40","statements":[{"nativeSrc":"4957:65:40","nodeType":"YulAssignment","src":"4957:65:40","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"4972:4:40","nodeType":"YulIdentifier","src":"4972:4:40"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4990:1:40","nodeType":"YulLiteral","src":"4990:1:40","type":"","value":"3"},{"name":"len","nativeSrc":"4993:3:40","nodeType":"YulIdentifier","src":"4993:3:40"}],"functionName":{"name":"shl","nativeSrc":"4986:3:40","nodeType":"YulIdentifier","src":"4986:3:40"},"nativeSrc":"4986:11:40","nodeType":"YulFunctionCall","src":"4986:11:40"},{"arguments":[{"kind":"number","nativeSrc":"5003:1:40","nodeType":"YulLiteral","src":"5003:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4999:3:40","nodeType":"YulIdentifier","src":"4999:3:40"},"nativeSrc":"4999:6:40","nodeType":"YulFunctionCall","src":"4999:6:40"}],"functionName":{"name":"shr","nativeSrc":"4982:3:40","nodeType":"YulIdentifier","src":"4982:3:40"},"nativeSrc":"4982:24:40","nodeType":"YulFunctionCall","src":"4982:24:40"}],"functionName":{"name":"not","nativeSrc":"4978:3:40","nodeType":"YulIdentifier","src":"4978:3:40"},"nativeSrc":"4978:29:40","nodeType":"YulFunctionCall","src":"4978:29:40"}],"functionName":{"name":"and","nativeSrc":"4968:3:40","nodeType":"YulIdentifier","src":"4968:3:40"},"nativeSrc":"4968:40:40","nodeType":"YulFunctionCall","src":"4968:40:40"},{"arguments":[{"kind":"number","nativeSrc":"5014:1:40","nodeType":"YulLiteral","src":"5014:1:40","type":"","value":"1"},{"name":"len","nativeSrc":"5017:3:40","nodeType":"YulIdentifier","src":"5017:3:40"}],"functionName":{"name":"shl","nativeSrc":"5010:3:40","nodeType":"YulIdentifier","src":"5010:3:40"},"nativeSrc":"5010:11:40","nodeType":"YulFunctionCall","src":"5010:11:40"}],"functionName":{"name":"or","nativeSrc":"4965:2:40","nodeType":"YulIdentifier","src":"4965:2:40"},"nativeSrc":"4965:57:40","nodeType":"YulFunctionCall","src":"4965:57:40"},"variableNames":[{"name":"used","nativeSrc":"4957:4:40","nodeType":"YulIdentifier","src":"4957:4:40"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4862:166:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4924:4:40","nodeType":"YulTypedName","src":"4924:4:40","type":""},{"name":"len","nativeSrc":"4930:3:40","nodeType":"YulTypedName","src":"4930:3:40","type":""}],"returnVariables":[{"name":"used","nativeSrc":"4938:4:40","nodeType":"YulTypedName","src":"4938:4:40","type":""}],"src":"4862:166:40"},{"body":{"nativeSrc":"5129:1203:40","nodeType":"YulBlock","src":"5129:1203:40","statements":[{"nativeSrc":"5139:24:40","nodeType":"YulVariableDeclaration","src":"5139:24:40","value":{"arguments":[{"name":"src","nativeSrc":"5159:3:40","nodeType":"YulIdentifier","src":"5159:3:40"}],"functionName":{"name":"mload","nativeSrc":"5153:5:40","nodeType":"YulIdentifier","src":"5153:5:40"},"nativeSrc":"5153:10:40","nodeType":"YulFunctionCall","src":"5153:10:40"},"variables":[{"name":"newLen","nativeSrc":"5143:6:40","nodeType":"YulTypedName","src":"5143:6:40","type":""}]},{"body":{"nativeSrc":"5206:22:40","nodeType":"YulBlock","src":"5206:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5208:16:40","nodeType":"YulIdentifier","src":"5208:16:40"},"nativeSrc":"5208:18:40","nodeType":"YulFunctionCall","src":"5208:18:40"},"nativeSrc":"5208:18:40","nodeType":"YulExpressionStatement","src":"5208:18:40"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"5178:6:40","nodeType":"YulIdentifier","src":"5178:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5194:2:40","nodeType":"YulLiteral","src":"5194:2:40","type":"","value":"64"},{"kind":"number","nativeSrc":"5198:1:40","nodeType":"YulLiteral","src":"5198:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5190:3:40","nodeType":"YulIdentifier","src":"5190:3:40"},"nativeSrc":"5190:10:40","nodeType":"YulFunctionCall","src":"5190:10:40"},{"kind":"number","nativeSrc":"5202:1:40","nodeType":"YulLiteral","src":"5202:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5186:3:40","nodeType":"YulIdentifier","src":"5186:3:40"},"nativeSrc":"5186:18:40","nodeType":"YulFunctionCall","src":"5186:18:40"}],"functionName":{"name":"gt","nativeSrc":"5175:2:40","nodeType":"YulIdentifier","src":"5175:2:40"},"nativeSrc":"5175:30:40","nodeType":"YulFunctionCall","src":"5175:30:40"},"nativeSrc":"5172:56:40","nodeType":"YulIf","src":"5172:56:40"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5281:4:40","nodeType":"YulIdentifier","src":"5281:4:40"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"5319:4:40","nodeType":"YulIdentifier","src":"5319:4:40"}],"functionName":{"name":"sload","nativeSrc":"5313:5:40","nodeType":"YulIdentifier","src":"5313:5:40"},"nativeSrc":"5313:11:40","nodeType":"YulFunctionCall","src":"5313:11:40"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"5287:25:40","nodeType":"YulIdentifier","src":"5287:25:40"},"nativeSrc":"5287:38:40","nodeType":"YulFunctionCall","src":"5287:38:40"},{"name":"newLen","nativeSrc":"5327:6:40","nodeType":"YulIdentifier","src":"5327:6:40"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"5237:43:40","nodeType":"YulIdentifier","src":"5237:43:40"},"nativeSrc":"5237:97:40","nodeType":"YulFunctionCall","src":"5237:97:40"},"nativeSrc":"5237:97:40","nodeType":"YulExpressionStatement","src":"5237:97:40"},{"nativeSrc":"5343:18:40","nodeType":"YulVariableDeclaration","src":"5343:18:40","value":{"kind":"number","nativeSrc":"5360:1:40","nodeType":"YulLiteral","src":"5360:1:40","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"5347:9:40","nodeType":"YulTypedName","src":"5347:9:40","type":""}]},{"nativeSrc":"5370:17:40","nodeType":"YulAssignment","src":"5370:17:40","value":{"kind":"number","nativeSrc":"5383:4:40","nodeType":"YulLiteral","src":"5383:4:40","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"5370:9:40","nodeType":"YulIdentifier","src":"5370:9:40"}]},{"cases":[{"body":{"nativeSrc":"5433:642:40","nodeType":"YulBlock","src":"5433:642:40","statements":[{"nativeSrc":"5447:35:40","nodeType":"YulVariableDeclaration","src":"5447:35:40","value":{"arguments":[{"name":"newLen","nativeSrc":"5466:6:40","nodeType":"YulIdentifier","src":"5466:6:40"},{"arguments":[{"kind":"number","nativeSrc":"5478:2:40","nodeType":"YulLiteral","src":"5478:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5474:3:40","nodeType":"YulIdentifier","src":"5474:3:40"},"nativeSrc":"5474:7:40","nodeType":"YulFunctionCall","src":"5474:7:40"}],"functionName":{"name":"and","nativeSrc":"5462:3:40","nodeType":"YulIdentifier","src":"5462:3:40"},"nativeSrc":"5462:20:40","nodeType":"YulFunctionCall","src":"5462:20:40"},"variables":[{"name":"loopEnd","nativeSrc":"5451:7:40","nodeType":"YulTypedName","src":"5451:7:40","type":""}]},{"nativeSrc":"5495:49:40","nodeType":"YulVariableDeclaration","src":"5495:49:40","value":{"arguments":[{"name":"slot","nativeSrc":"5539:4:40","nodeType":"YulIdentifier","src":"5539:4:40"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"5509:29:40","nodeType":"YulIdentifier","src":"5509:29:40"},"nativeSrc":"5509:35:40","nodeType":"YulFunctionCall","src":"5509:35:40"},"variables":[{"name":"dstPtr","nativeSrc":"5499:6:40","nodeType":"YulTypedName","src":"5499:6:40","type":""}]},{"nativeSrc":"5557:10:40","nodeType":"YulVariableDeclaration","src":"5557:10:40","value":{"kind":"number","nativeSrc":"5566:1:40","nodeType":"YulLiteral","src":"5566:1:40","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"5561:1:40","nodeType":"YulTypedName","src":"5561:1:40","type":""}]},{"body":{"nativeSrc":"5637:165:40","nodeType":"YulBlock","src":"5637:165:40","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5662:6:40","nodeType":"YulIdentifier","src":"5662:6:40"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5680:3:40","nodeType":"YulIdentifier","src":"5680:3:40"},{"name":"srcOffset","nativeSrc":"5685:9:40","nodeType":"YulIdentifier","src":"5685:9:40"}],"functionName":{"name":"add","nativeSrc":"5676:3:40","nodeType":"YulIdentifier","src":"5676:3:40"},"nativeSrc":"5676:19:40","nodeType":"YulFunctionCall","src":"5676:19:40"}],"functionName":{"name":"mload","nativeSrc":"5670:5:40","nodeType":"YulIdentifier","src":"5670:5:40"},"nativeSrc":"5670:26:40","nodeType":"YulFunctionCall","src":"5670:26:40"}],"functionName":{"name":"sstore","nativeSrc":"5655:6:40","nodeType":"YulIdentifier","src":"5655:6:40"},"nativeSrc":"5655:42:40","nodeType":"YulFunctionCall","src":"5655:42:40"},"nativeSrc":"5655:42:40","nodeType":"YulExpressionStatement","src":"5655:42:40"},{"nativeSrc":"5714:24:40","nodeType":"YulAssignment","src":"5714:24:40","value":{"arguments":[{"name":"dstPtr","nativeSrc":"5728:6:40","nodeType":"YulIdentifier","src":"5728:6:40"},{"kind":"number","nativeSrc":"5736:1:40","nodeType":"YulLiteral","src":"5736:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5724:3:40","nodeType":"YulIdentifier","src":"5724:3:40"},"nativeSrc":"5724:14:40","nodeType":"YulFunctionCall","src":"5724:14:40"},"variableNames":[{"name":"dstPtr","nativeSrc":"5714:6:40","nodeType":"YulIdentifier","src":"5714:6:40"}]},{"nativeSrc":"5755:33:40","nodeType":"YulAssignment","src":"5755:33:40","value":{"arguments":[{"name":"srcOffset","nativeSrc":"5772:9:40","nodeType":"YulIdentifier","src":"5772:9:40"},{"kind":"number","nativeSrc":"5783:4:40","nodeType":"YulLiteral","src":"5783:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5768:3:40","nodeType":"YulIdentifier","src":"5768:3:40"},"nativeSrc":"5768:20:40","nodeType":"YulFunctionCall","src":"5768:20:40"},"variableNames":[{"name":"srcOffset","nativeSrc":"5755:9:40","nodeType":"YulIdentifier","src":"5755:9:40"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"5591:1:40","nodeType":"YulIdentifier","src":"5591:1:40"},{"name":"loopEnd","nativeSrc":"5594:7:40","nodeType":"YulIdentifier","src":"5594:7:40"}],"functionName":{"name":"lt","nativeSrc":"5588:2:40","nodeType":"YulIdentifier","src":"5588:2:40"},"nativeSrc":"5588:14:40","nodeType":"YulFunctionCall","src":"5588:14:40"},"nativeSrc":"5580:222:40","nodeType":"YulForLoop","post":{"nativeSrc":"5603:21:40","nodeType":"YulBlock","src":"5603:21:40","statements":[{"nativeSrc":"5605:17:40","nodeType":"YulAssignment","src":"5605:17:40","value":{"arguments":[{"name":"i","nativeSrc":"5614:1:40","nodeType":"YulIdentifier","src":"5614:1:40"},{"kind":"number","nativeSrc":"5617:4:40","nodeType":"YulLiteral","src":"5617:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5610:3:40","nodeType":"YulIdentifier","src":"5610:3:40"},"nativeSrc":"5610:12:40","nodeType":"YulFunctionCall","src":"5610:12:40"},"variableNames":[{"name":"i","nativeSrc":"5605:1:40","nodeType":"YulIdentifier","src":"5605:1:40"}]}]},"pre":{"nativeSrc":"5584:3:40","nodeType":"YulBlock","src":"5584:3:40","statements":[]},"src":"5580:222:40"},{"body":{"nativeSrc":"5850:166:40","nodeType":"YulBlock","src":"5850:166:40","statements":[{"nativeSrc":"5868:43:40","nodeType":"YulVariableDeclaration","src":"5868:43:40","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5895:3:40","nodeType":"YulIdentifier","src":"5895:3:40"},{"name":"srcOffset","nativeSrc":"5900:9:40","nodeType":"YulIdentifier","src":"5900:9:40"}],"functionName":{"name":"add","nativeSrc":"5891:3:40","nodeType":"YulIdentifier","src":"5891:3:40"},"nativeSrc":"5891:19:40","nodeType":"YulFunctionCall","src":"5891:19:40"}],"functionName":{"name":"mload","nativeSrc":"5885:5:40","nodeType":"YulIdentifier","src":"5885:5:40"},"nativeSrc":"5885:26:40","nodeType":"YulFunctionCall","src":"5885:26:40"},"variables":[{"name":"lastValue","nativeSrc":"5872:9:40","nodeType":"YulTypedName","src":"5872:9:40","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5935:6:40","nodeType":"YulIdentifier","src":"5935:6:40"},{"arguments":[{"name":"lastValue","nativeSrc":"5947:9:40","nodeType":"YulIdentifier","src":"5947:9:40"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5974:1:40","nodeType":"YulLiteral","src":"5974:1:40","type":"","value":"3"},{"name":"newLen","nativeSrc":"5977:6:40","nodeType":"YulIdentifier","src":"5977:6:40"}],"functionName":{"name":"shl","nativeSrc":"5970:3:40","nodeType":"YulIdentifier","src":"5970:3:40"},"nativeSrc":"5970:14:40","nodeType":"YulFunctionCall","src":"5970:14:40"},{"kind":"number","nativeSrc":"5986:3:40","nodeType":"YulLiteral","src":"5986:3:40","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"5966:3:40","nodeType":"YulIdentifier","src":"5966:3:40"},"nativeSrc":"5966:24:40","nodeType":"YulFunctionCall","src":"5966:24:40"},{"arguments":[{"kind":"number","nativeSrc":"5996:1:40","nodeType":"YulLiteral","src":"5996:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5992:3:40","nodeType":"YulIdentifier","src":"5992:3:40"},"nativeSrc":"5992:6:40","nodeType":"YulFunctionCall","src":"5992:6:40"}],"functionName":{"name":"shr","nativeSrc":"5962:3:40","nodeType":"YulIdentifier","src":"5962:3:40"},"nativeSrc":"5962:37:40","nodeType":"YulFunctionCall","src":"5962:37:40"}],"functionName":{"name":"not","nativeSrc":"5958:3:40","nodeType":"YulIdentifier","src":"5958:3:40"},"nativeSrc":"5958:42:40","nodeType":"YulFunctionCall","src":"5958:42:40"}],"functionName":{"name":"and","nativeSrc":"5943:3:40","nodeType":"YulIdentifier","src":"5943:3:40"},"nativeSrc":"5943:58:40","nodeType":"YulFunctionCall","src":"5943:58:40"}],"functionName":{"name":"sstore","nativeSrc":"5928:6:40","nodeType":"YulIdentifier","src":"5928:6:40"},"nativeSrc":"5928:74:40","nodeType":"YulFunctionCall","src":"5928:74:40"},"nativeSrc":"5928:74:40","nodeType":"YulExpressionStatement","src":"5928:74:40"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"5821:7:40","nodeType":"YulIdentifier","src":"5821:7:40"},{"name":"newLen","nativeSrc":"5830:6:40","nodeType":"YulIdentifier","src":"5830:6:40"}],"functionName":{"name":"lt","nativeSrc":"5818:2:40","nodeType":"YulIdentifier","src":"5818:2:40"},"nativeSrc":"5818:19:40","nodeType":"YulFunctionCall","src":"5818:19:40"},"nativeSrc":"5815:201:40","nodeType":"YulIf","src":"5815:201:40"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6036:4:40","nodeType":"YulIdentifier","src":"6036:4:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6050:1:40","nodeType":"YulLiteral","src":"6050:1:40","type":"","value":"1"},{"name":"newLen","nativeSrc":"6053:6:40","nodeType":"YulIdentifier","src":"6053:6:40"}],"functionName":{"name":"shl","nativeSrc":"6046:3:40","nodeType":"YulIdentifier","src":"6046:3:40"},"nativeSrc":"6046:14:40","nodeType":"YulFunctionCall","src":"6046:14:40"},{"kind":"number","nativeSrc":"6062:1:40","nodeType":"YulLiteral","src":"6062:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6042:3:40","nodeType":"YulIdentifier","src":"6042:3:40"},"nativeSrc":"6042:22:40","nodeType":"YulFunctionCall","src":"6042:22:40"}],"functionName":{"name":"sstore","nativeSrc":"6029:6:40","nodeType":"YulIdentifier","src":"6029:6:40"},"nativeSrc":"6029:36:40","nodeType":"YulFunctionCall","src":"6029:36:40"},"nativeSrc":"6029:36:40","nodeType":"YulExpressionStatement","src":"6029:36:40"}]},"nativeSrc":"5426:649:40","nodeType":"YulCase","src":"5426:649:40","value":{"kind":"number","nativeSrc":"5431:1:40","nodeType":"YulLiteral","src":"5431:1:40","type":"","value":"1"}},{"body":{"nativeSrc":"6092:234:40","nodeType":"YulBlock","src":"6092:234:40","statements":[{"nativeSrc":"6106:14:40","nodeType":"YulVariableDeclaration","src":"6106:14:40","value":{"kind":"number","nativeSrc":"6119:1:40","nodeType":"YulLiteral","src":"6119:1:40","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6110:5:40","nodeType":"YulTypedName","src":"6110:5:40","type":""}]},{"body":{"nativeSrc":"6155:67:40","nodeType":"YulBlock","src":"6155:67:40","statements":[{"nativeSrc":"6173:35:40","nodeType":"YulAssignment","src":"6173:35:40","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"6192:3:40","nodeType":"YulIdentifier","src":"6192:3:40"},{"name":"srcOffset","nativeSrc":"6197:9:40","nodeType":"YulIdentifier","src":"6197:9:40"}],"functionName":{"name":"add","nativeSrc":"6188:3:40","nodeType":"YulIdentifier","src":"6188:3:40"},"nativeSrc":"6188:19:40","nodeType":"YulFunctionCall","src":"6188:19:40"}],"functionName":{"name":"mload","nativeSrc":"6182:5:40","nodeType":"YulIdentifier","src":"6182:5:40"},"nativeSrc":"6182:26:40","nodeType":"YulFunctionCall","src":"6182:26:40"},"variableNames":[{"name":"value","nativeSrc":"6173:5:40","nodeType":"YulIdentifier","src":"6173:5:40"}]}]},"condition":{"name":"newLen","nativeSrc":"6136:6:40","nodeType":"YulIdentifier","src":"6136:6:40"},"nativeSrc":"6133:89:40","nodeType":"YulIf","src":"6133:89:40"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6242:4:40","nodeType":"YulIdentifier","src":"6242:4:40"},{"arguments":[{"name":"value","nativeSrc":"6301:5:40","nodeType":"YulIdentifier","src":"6301:5:40"},{"name":"newLen","nativeSrc":"6308:6:40","nodeType":"YulIdentifier","src":"6308:6:40"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"6248:52:40","nodeType":"YulIdentifier","src":"6248:52:40"},"nativeSrc":"6248:67:40","nodeType":"YulFunctionCall","src":"6248:67:40"}],"functionName":{"name":"sstore","nativeSrc":"6235:6:40","nodeType":"YulIdentifier","src":"6235:6:40"},"nativeSrc":"6235:81:40","nodeType":"YulFunctionCall","src":"6235:81:40"},"nativeSrc":"6235:81:40","nodeType":"YulExpressionStatement","src":"6235:81:40"}]},"nativeSrc":"6084:242:40","nodeType":"YulCase","src":"6084:242:40","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"5406:6:40","nodeType":"YulIdentifier","src":"5406:6:40"},{"kind":"number","nativeSrc":"5414:2:40","nodeType":"YulLiteral","src":"5414:2:40","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"5403:2:40","nodeType":"YulIdentifier","src":"5403:2:40"},"nativeSrc":"5403:14:40","nodeType":"YulFunctionCall","src":"5403:14:40"},"nativeSrc":"5396:930:40","nodeType":"YulSwitch","src":"5396:930:40"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"5033:1299:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"5114:4:40","nodeType":"YulTypedName","src":"5114:4:40","type":""},{"name":"src","nativeSrc":"5120:3:40","nodeType":"YulTypedName","src":"5120:3:40","type":""}],"src":"5033:1299:40"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(memPtr, i), 0x20), mload(add(add(offset, i), 0x20)))\n        }\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            let _1 := 0\n            _1 := 0\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":40,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161385638038061385683398101604081905261002f916102ab565b83838383838360128484818181818d6001600160a01b03811661006c57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61007581610181565b506001600160a01b0380831660805281166100a357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156100ea57600080fd5b505af11580156100fe573d6000803e3d6000fd5b50505050505050506101146101d160201b60201c565b60ff168360ff16101561013a576040516301e9714b60e41b815260040160405180910390fd5b61014560068461034b565b61015090600a610451565b60a0525060089150610164905083826104f0565b50600961017182826104f0565b50505050505050505050506105ae565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126101fd57600080fd5b81516001600160401b03811115610216576102166101d6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610244576102446101d6565b60405281815283820160200185101561025c57600080fd5b60005b8281101561027b5760208186018101518383018201520161025f565b506000918101602001919091529392505050565b80516001600160a01b03811681146102a657600080fd5b919050565b600080600080608085870312156102c157600080fd5b84516001600160401b038111156102d757600080fd5b6102e3878288016101ec565b602087015190955090506001600160401b0381111561030157600080fd5b61030d878288016101ec565b93505061031c6040860161028f565b915061032a6060860161028f565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561036457610364610335565b92915050565b6001815b60018411156103a55780850481111561038957610389610335565b600184161561039757908102905b60019390931c92800261036e565b935093915050565b6000826103bc57506001610364565b816103c957506000610364565b81600181146103df57600281146103e957610405565b6001915050610364565b60ff8411156103fa576103fa610335565b50506001821b610364565b5060208310610133831016604e8410600b8410161715610428575081810a610364565b610435600019848461036a565b806000190482111561044957610449610335565b029392505050565b600061046060ff8416836103ad565b9392505050565b600181811c9082168061047b57607f821691505b60208210810361049b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104eb57806000526020600020601f840160051c810160208510156104c85750805b601f840160051c820191505b818110156104e857600081556001016104d4565b50505b505050565b81516001600160401b03811115610509576105096101d6565b61051d816105178454610467565b846104a1565b6020601f82116001811461055157600083156105395750848201515b600019600385901b1c1916600184901b1784556104e8565b600084815260208120601f198516915b828110156105815787850151825560209485019460019092019101610561565b508482101561059f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05161323d6106196000396000818161067301528181611b7d01528181611bf20152611d4d01526000818161053201528181610aa201528181611143015281816113ba0152818161172501528181611e45015281816120d10152612188015261323d6000f3fe6080604052600436106102675760003560e01c8063715018a611610144578063bb0b6a53116100b6578063d045a0dc1161007a578063d045a0dc146107aa578063d4243885146107bd578063dd62ed3e146107dd578063f2fde38b14610823578063fc0c546a146104b6578063ff7bd03d1461084357600080fd5b8063bb0b6a5314610709578063bc70b35414610736578063bd815db014610756578063c7c7f5b314610769578063ca5eb5e11461078a57600080fd5b806395d89b411161010857806395d89b411461064c578063963efcaa146106615780639f68b96414610695578063a9059cbb146106a9578063b731ea0a146106c9578063b98bd070146106e957600080fd5b8063715018a6146105aa5780637d25a05e146105bf57806382413eac146105fa578063857749b01461061a5780638da5cb5b1461062e57600080fd5b8063313ce567116101dd57806352ae2879116101a157806352ae2879146104b65780635535d461146104c95780635a0dfe4d146104e95780635e280f11146105205780636fc1b31e1461055457806370a082311461057457600080fd5b8063313ce5671461040857806332cb6b0c1461042a5780633400288b146104495780633b6f743b1461046957806340c10f191461049657600080fd5b8063134d4f251161022f578063134d4f2514610343578063156a0d0f1461036b57806317442b701461039257806318160ddd146103b45780631f5e1334146103d357806323b872dd146103e857600080fd5b806306fdde031461026c578063095ea7b3146102975780630d35b415146102c7578063111ecdad146102f657806313137d651461032e575b600080fd5b34801561027857600080fd5b50610281610863565b60405161028e9190612300565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612328565b6108f5565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e236600461236c565b61090f565b60405161028e939291906123a0565b34801561030257600080fd5b50600454610316906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b61034161033c366004612497565b610aa0565b005b34801561034f57600080fd5b50610358600281565b60405161ffff909116815260200161028e565b34801561037757600080fd5b506040805162b9270b60e21b8152600160208201520161028e565b34801561039e57600080fd5b506040805160018152600260208201520161028e565b3480156103c057600080fd5b506007545b60405190815260200161028e565b3480156103df57600080fd5b50610358600181565b3480156103f457600080fd5b506102b7610403366004612538565b610b60565b34801561041457600080fd5b5060125b60405160ff909116815260200161028e565b34801561043657600080fd5b506103c56a108b2a2c2802909400000081565b34801561045557600080fd5b50610341610464366004612592565b610b86565b34801561047557600080fd5b506104896104843660046125bc565b610b9c565b60405161028e919061260d565b3480156104a257600080fd5b506103416104b1366004612328565b610c03565b3480156104c257600080fd5b5030610316565b3480156104d557600080fd5b506102816104e4366004612636565b610c54565b3480156104f557600080fd5b506102b7610504366004612592565b63ffffffff919091166000908152600160205260409020541490565b34801561052c57600080fd5b506103167f000000000000000000000000000000000000000000000000000000000000000081565b34801561056057600080fd5b5061034161056f366004612669565b610cf9565b34801561058057600080fd5b506103c561058f366004612669565b6001600160a01b031660009081526005602052604090205490565b3480156105b657600080fd5b50610341610d56565b3480156105cb57600080fd5b506105e26105da366004612592565b600092915050565b6040516001600160401b03909116815260200161028e565b34801561060657600080fd5b506102b7610615366004612686565b610d6a565b34801561062657600080fd5b506006610418565b34801561063a57600080fd5b506000546001600160a01b0316610316565b34801561065857600080fd5b50610281610d7f565b34801561066d57600080fd5b506103c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a157600080fd5b5060006102b7565b3480156106b557600080fd5b506102b76106c4366004612328565b610d8e565b3480156106d557600080fd5b50600254610316906001600160a01b031681565b3480156106f557600080fd5b50610341610704366004612730565b610d9c565b34801561071557600080fd5b506103c5610724366004612771565b60016020526000908152604090205481565b34801561074257600080fd5b5061028161075136600461278c565b610db6565b610341610764366004612730565b610f5e565b61077c6107773660046127ec565b6110e8565b60405161028e929190612859565b34801561079657600080fd5b506103416107a5366004612669565b61111c565b6103416107b8366004612497565b6111a2565b3480156107c957600080fd5b506103416107d8366004612669565b6111d1565b3480156107e957600080fd5b506103c56107f83660046128ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561082f57600080fd5b5061034161083e366004612669565b611227565b34801561084f57600080fd5b506102b761085e3660046128d9565b611265565b606060088054610872906128f5565b80601f016020809104026020016040519081016040528092919081815260200182805461089e906128f5565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b60003361090381858561129b565b60019150505b92915050565b60408051808201909152600080825260208201526060610942604051806040016040528060008152602001600081525090565b600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190612929565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612946565b60408051808201825284815260208082018490528251600080825291810190935290975091925090610a5d565b604080518082019091526000815260606020820152815260200190600190039081610a355790505b509350600080610a82604089013560608a0135610a7d60208c018c612771565b6112ad565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610af0576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610b0a90610b05908a612771565b6112e9565b14610b4857610b1c6020880188612771565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610ae7565b610b5787878787878787611325565b50505050505050565b600033610b6e85828561148c565b610b7985858561150b565b60019150505b9392505050565b610b8e61156a565b610b988282611597565b5050565b60408051808201909152600080825260208201526000610bcc60408501356060860135610a7d6020880188612771565b915050600080610bdc86846115ec565b9092509050610bf9610bf16020880188612771565b83838861170f565b9695505050505050565b610c0b61156a565b6a108b2a2c2802909400000081610c2160075490565b610c2b919061298b565b1115610c4a57604051638a164f6360e01b815260040160405180910390fd5b610b9882826117f0565b600360209081526000928352604080842090915290825290208054610c78906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca4906128f5565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b505050505081565b610d0161156a565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610d5e61156a565b610d686000611826565b565b6001600160a01b03811630145b949350505050565b606060098054610872906128f5565b60003361090381858561150b565b610da461156a565b610b98610db18284612a3f565b611876565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610dea906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e16906128f5565b8015610e635780601f10610e3857610100808354040283529160200191610e63565b820191906000526020600020905b815481529060010190602001808311610e4657829003601f168201915b505050505090508051600003610eb35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610d779350505050565b6000839003610ec3579050610d77565b60028310610f4157610f0a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197d92505050565b80610f188460028188612b68565b604051602001610f2a93929190612b92565b604051602081830303815290604052915050610d77565b8383604051639a6d49cd60e01b8152600401610ae7929190612be3565b60005b818110156110675736838383818110610f7c57610f7c612bf7565b9050602002810190610f8e9190612c0d565b9050610fc1610fa06020830183612771565b602083013563ffffffff919091166000908152600160205260409020541490565b610fcb575061105f565b3063d045a0dc60c08301358360a0810135610fea610100830183612c2e565b610ffb610100890160e08a01612669565b6110096101208a018a612c2e565b6040518963ffffffff1660e01b815260040161102b9796959493929190612c89565b6000604051808303818588803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b5050505050505b600101610f61565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156110a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ce9190810190612d0f565b604051638351eea760e01b8152600401610ae79190612300565b6110f0612269565b604080518082019091526000808252602082015261110f8585856119a9565b915091505b935093915050565b61112461156a565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561118757600080fd5b505af115801561119b573d6000803e3d6000fd5b5050505050565b3330146111c25760405163029a949d60e31b815260040160405180910390fd5b610b5787878787878787610b48565b6111d961156a565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610d4b565b61122f61156a565b6001600160a01b03811661125957604051631e4fbdf760e01b815260006004820152602401610ae7565b61126281611826565b50565b600060208201803590600190839061127d9086612771565b63ffffffff1681526020810191909152604001600020541492915050565b6112a88383836001611aa4565b505050565b6000806112b985611b79565b915081905083811015611114576040516371c4efed60e01b81526004810182905260248101859052604401610ae7565b63ffffffff8116600090815260016020526040812054806109095760405163f6ff4fb760e01b815263ffffffff84166004820152602401610ae7565b60006113376113348787611bb0565b90565b905060006113638261135161134c8a8a611bc8565b611beb565b61135e60208d018d612771565b611c20565b9050602886111561142a5760006113a061138360608c0160408d01612d7c565b61139060208d018d612771565b8461139b8c8c611c6c565b611cb7565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906113f69086908d906000908790600401612d99565b600060405180830381600087803b15801561141057600080fd5b505af1158015611424573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61146360208d018d612771565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981101561150557818110156114f657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610ae7565b61150584848484036000611aa4565b50505050565b6001600160a01b03831661153557604051634b637e8f60e11b815260006004820152602401610ae7565b6001600160a01b03821661155f5760405163ec442f0560e01b815260006004820152602401610ae7565b6112a8838383611ce9565b6000546001600160a01b03163314610d685760405163118cdaa760e01b8152336004820152602401610ae7565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000611649856020013561160286611d46565b61160f60a0890189612c2e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7292505050565b909350905060008161165c57600161165f565b60025b905061167f6116716020880188612771565b8261075160808a018a612c2e565b6004549093506001600160a01b031680156117055760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906116c29088908890600401612dca565b602060405180830381865afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612def565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611772896112e9565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016117a7929190612e0c565b6040805180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612eb6565b95945050505050565b6001600160a01b03821661181a5760405163ec442f0560e01b815260006004820152602401610ae7565b610b9860008383611ce9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b815181101561194d576118a882828151811061189757611897612bf7565b60200260200101516040015161197d565b8181815181106118ba576118ba612bf7565b602002602001015160400151600360008484815181106118dc576118dc612bf7565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061191657611916612bf7565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119449190612f19565b50600101611879565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610d4b9190612fd7565b600281015161ffff8116600314610b985781604051639a6d49cd60e01b8152600401610ae79190612300565b6119b1612269565b60408051808201909152600080825260208201526000806119e833604089013560608a01356119e360208c018c612771565b611dec565b915091506000806119f989846115ec565b9092509050611a25611a0e60208b018b612771565b8383611a1f368d90038d018d613067565b8b611e12565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a73908d018d612771565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611ace5760405163e602df0560e01b815260006004820152602401610ae7565b6001600160a01b038316611af857604051634a1406b160e11b815260006004820152602401610ae7565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561150557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611b6b91815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611ba6818461309a565b61090991906130bc565b6000611bbf6020828486612b68565b610b7f916130d3565b6000611bd8602860208486612b68565b611be1916130f1565b60c01c9392505050565b60006109097f00000000000000000000000000000000000000000000000000000000000000006001600160401b0384166130bc565b60006a108b2a2c2802909400000083611c3860075490565b611c42919061298b565b1115611c6157604051638a164f6360e01b815260040160405180910390fd5b610d77848484611f1d565b6060611c7b8260288186612b68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611cd09493929190613129565b6040516020818303038152906040529050949350505050565b6001600160a01b038316158015611d1d57506a108b2a2c2802909400000081611d1160075490565b611d1b919061298b565b115b15611d3b57604051638a164f6360e01b815260040160405180910390fd5b6112a8838383611f45565b60006109097f00000000000000000000000000000000000000000000000000000000000000008361309a565b8051606090151580611dbb578484604051602001611da792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611de2565b84843385604051602001611dd29493929190613178565b6040516020818303038152906040525b9150935093915050565b600080611dfa8585856112ad565b9092509050611e09868361206f565b94509492505050565b611e1a612269565b6000611e2984600001516120a5565b602085015190915015611e4357611e4384602001516120cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611e938c6112e9565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ecf929190612e0c565b60806040518083038185885af1158015611eed573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f1291906131bb565b979650505050505050565b60006001600160a01b038416611f335761dead93505b611f3d84846117f0565b509092915050565b6001600160a01b038316611f70578060076000828254611f65919061298b565b90915550611fe29050565b6001600160a01b03831660009081526005602052604090205481811015611fc35760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610ae7565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611ffe5760078054829003905561201d565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161206291815260200190565b60405180910390a3505050565b6001600160a01b03821661209957604051634b637e8f60e11b815260006004820152602401610ae7565b610b9882600083611ce9565b60008134146120c9576040516304fb820960e51b8152346004820152602401610ae7565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121519190612929565b90506001600160a01b03811661217a576040516329b99a9560e11b815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180516001600160e01b03166323b872dd60e01b1781528451610b9896881695899361150593889360009283929091839182885af18061221b576040513d6000823e3d81fd5b50506000513d91508115612233578060011415612240565b6001600160a01b0384163b155b1561150557604051635274afe760e01b81526001600160a01b0385166004820152602401610ae7565b60405180606001604052806000801916815260200160006001600160401b031681526020016122ab604051806040016040528060008152602001600081525090565b905290565b60005b838110156122cb5781810151838201526020016122b3565b50506000910152565b600081518084526122ec8160208601602086016122b0565b601f01601f19169290920160200192915050565b602081526000610b7f60208301846122d4565b6001600160a01b038116811461126257600080fd5b6000806040838503121561233b57600080fd5b823561234681612313565b946020939093013593505050565b600060e0828403121561236657600080fd5b50919050565b60006020828403121561237e57600080fd5b81356001600160401b0381111561239457600080fd5b610d7784828501612354565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b828110156124215760bf19878603018452815180518652602081015190506040602087015261240b60408701826122d4565b95505060209384019391909101906001016123d9565b5050855160608601525050602084015160808401529050610d77565b60006060828403121561236657600080fd5b60008083601f84011261246157600080fd5b5081356001600160401b0381111561247857600080fd5b60208301915083602082850101111561249057600080fd5b9250929050565b600080600080600080600060e0888a0312156124b257600080fd5b6124bc898961243d565b96506060880135955060808801356001600160401b038111156124de57600080fd5b6124ea8a828b0161244f565b90965094505060a08801356124fe81612313565b925060c08801356001600160401b0381111561251957600080fd5b6125258a828b0161244f565b989b979a50959850939692959293505050565b60008060006060848603121561254d57600080fd5b833561255881612313565b9250602084013561256881612313565b929592945050506040919091013590565b803563ffffffff8116811461258d57600080fd5b919050565b600080604083850312156125a557600080fd5b61234683612579565b801515811461126257600080fd5b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f185828601612354565b9250506020830135612602816125ae565b809150509250929050565b815181526020808301519082015260408101610909565b803561ffff8116811461258d57600080fd5b6000806040838503121561264957600080fd5b61265283612579565b915061266060208401612624565b90509250929050565b60006020828403121561267b57600080fd5b8135610b7f81612313565b60008060008060a0858703121561269c57600080fd5b6126a6868661243d565b935060608501356001600160401b038111156126c157600080fd5b6126cd8782880161244f565b90945092505060808501356126e181612313565b939692955090935050565b60008083601f8401126126fe57600080fd5b5081356001600160401b0381111561271557600080fd5b6020830191508360208260051b850101111561249057600080fd5b6000806020838503121561274357600080fd5b82356001600160401b0381111561275957600080fd5b612765858286016126ec565b90969095509350505050565b60006020828403121561278357600080fd5b610b7f82612579565b600080600080606085870312156127a257600080fd5b6127ab85612579565b93506127b960208601612624565b925060408501356001600160401b038111156127d457600080fd5b6127e08782880161244f565b95989497509550505050565b6000806000838503608081121561280257600080fd5b84356001600160401b0381111561281857600080fd5b61282487828801612354565b9450506040601f198201121561283957600080fd5b50602084019150606084013561284e81612313565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151612894604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b7f565b600080604083850312156128be57600080fd5b82356128c981612313565b9150602083013561260281612313565b6000606082840312156128eb57600080fd5b610b7f838361243d565b600181811c9082168061290957607f821691505b60208210810361236657634e487b7160e01b600052602260045260246000fd5b60006020828403121561293b57600080fd5b8151610b7f81612313565b60006020828403121561295857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561090957610909612975565b604051606081016001600160401b03811182821017156129c0576129c061295f565b60405290565b604080519081016001600160401b03811182821017156129c0576129c061295f565b604051601f8201601f191681016001600160401b0381118282101715612a1057612a1061295f565b604052919050565b60006001600160401b03821115612a3157612a3161295f565b50601f01601f191660200190565b60006001600160401b03831115612a5857612a5861295f565b8260051b612a68602082016129e8565b84815290830190602081019036831115612a8157600080fd5b845b83811015612b5e5780356001600160401b03811115612aa157600080fd5b86016060368290031215612ab457600080fd5b612abc61299e565b612ac582612579565b8152612ad360208301612624565b602082015260408201356001600160401b03811115612af157600080fd5b919091019036601f830112612b0557600080fd5b8135612b18612b1382612a18565b6129e8565b818152366020838601011115612b2d57600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612a83565b5095945050505050565b60008085851115612b7857600080fd5b83861115612b8557600080fd5b5050820193919092039150565b60008451612ba48184602089016122b0565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d77602083018486612bba565b634e487b7160e01b600052603260045260246000fd5b6000823561013e19833603018112612c2457600080fd5b9190910192915050565b6000808335601e19843603018112612c4557600080fd5b8301803591506001600160401b03821115612c5f57600080fd5b60200191503681900382131561249057600080fd5b6001600160401b038116811461126257600080fd5b63ffffffff612c9789612579565b1681526020888101359082015260006040890135612cb481612c74565b6001600160401b03811660408401525087606083015260e06080830152612cdf60e083018789612bba565b6001600160a01b03861660a084015282810360c0840152612d01818587612bba565b9a9950505050505050505050565b600060208284031215612d2157600080fd5b81516001600160401b03811115612d3757600080fd5b8201601f81018413612d4857600080fd5b8051612d56612b1382612a18565b818152856020838501011115612d6b57600080fd5b6117e78260208301602086016122b0565b600060208284031215612d8e57600080fd5b8135610b7f81612c74565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610bf960808301846122d4565b604081526000612ddd60408301856122d4565b82810360208401526117e781856122d4565b600060208284031215612e0157600080fd5b8151610b7f816125ae565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612e4260e08401826122d4565b90506060850151603f198483030160a0850152612e5f82826122d4565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612e9757600080fd5b612e9f6129c6565b825181526020928301519281019290925250919050565b600060408284031215612ec857600080fd5b610b7f8383612e85565b601f8211156112a857806000526020600020601f840160051c81016020851015612ef95750805b601f840160051c820191505b8181101561119b5760008155600101612f05565b81516001600160401b03811115612f3257612f3261295f565b612f4681612f4084546128f5565b84612ed2565b6020601f821160018114612f7a5760008315612f625750848201515b600019600385901b1c1916600184901b17845561119b565b600084815260208120601f198516915b82811015612faa5787850151825560209485019460019092019101612f8a565b5084821015612fc85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561305b57603f19878603018452815163ffffffff815116865261ffff6020820151166020870152604081015190506060604087015261304560608701826122d4565b9550506020938401939190910190600101612fff565b50929695505050505050565b6000604082840312801561307a57600080fd5b506130836129c6565b823581526020928301359281019290925250919050565b6000826130b757634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761090957610909612975565b8035602083101561090957600019602084900360031b1b1692915050565b80356001600160c01b03198116906008841015613122576001600160c01b0319600885900360031b81901b82161691505b5092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161316881602c8501602087016122b0565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b166020820152826028820152600082516131ab8160488501602087016122b0565b9190910160480195945050505050565b600060808284031280156131ce57600080fd5b506131d761299e565b8251815260208301516131e981612c74565b60208201526131fb8460408501612e85565b6040820152939250505056fea264697066735822122015f8ac516a22ab20e5f1ed2e18ed8620e08283382831603fcff66a3f609e53fd64736f6c634300081c0033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3856 CODESIZE SUB DUP1 PUSH2 0x3856 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x2AB JUMP JUMPDEST DUP4 DUP4 DUP4 DUP4 DUP4 DUP4 PUSH1 0x12 DUP5 DUP5 DUP2 DUP2 DUP2 DUP2 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x75 DUP2 PUSH2 0x181 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x80 MSTORE DUP2 AND PUSH2 0xA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D618D81 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x114 PUSH2 0x1D1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xFF AND DUP4 PUSH1 0xFF AND LT ISZERO PUSH2 0x13A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E9714B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x145 PUSH1 0x6 DUP5 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x150 SWAP1 PUSH1 0xA PUSH2 0x451 JUMP JUMPDEST PUSH1 0xA0 MSTORE POP PUSH1 0x8 SWAP2 POP PUSH2 0x164 SWAP1 POP DUP4 DUP3 PUSH2 0x4F0 JUMP JUMPDEST POP PUSH1 0x9 PUSH2 0x171 DUP3 DUP3 PUSH2 0x4F0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x6 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x216 JUMPI PUSH2 0x216 PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x244 JUMPI PUSH2 0x244 PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP4 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x25F JUMP JUMPDEST POP PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E3 DUP8 DUP3 DUP9 ADD PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30D DUP8 DUP3 DUP9 ADD PUSH2 0x1EC JUMP JUMPDEST SWAP4 POP POP PUSH2 0x31C PUSH1 0x40 DUP7 ADD PUSH2 0x28F JUMP JUMPDEST SWAP2 POP PUSH2 0x32A PUSH1 0x60 DUP7 ADD PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH2 0x364 PUSH2 0x335 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x3A5 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x389 JUMPI PUSH2 0x389 PUSH2 0x335 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x397 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x36E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BC JUMPI POP PUSH1 0x1 PUSH2 0x364 JUMP JUMPDEST DUP2 PUSH2 0x3C9 JUMPI POP PUSH1 0x0 PUSH2 0x364 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x3DF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3E9 JUMPI PUSH2 0x405 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x364 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x3FA JUMPI PUSH2 0x3FA PUSH2 0x335 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x364 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x428 JUMPI POP DUP2 DUP2 EXP PUSH2 0x364 JUMP JUMPDEST PUSH2 0x435 PUSH1 0x0 NOT DUP5 DUP5 PUSH2 0x36A JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x449 JUMPI PUSH2 0x449 PUSH2 0x335 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x460 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x3AD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x47B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x49B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x4EB JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4C8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4D4 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x509 JUMPI PUSH2 0x509 PUSH2 0x1D6 JUMP JUMPDEST PUSH2 0x51D DUP2 PUSH2 0x517 DUP5 SLOAD PUSH2 0x467 JUMP JUMPDEST DUP5 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x551 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x539 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x4E8 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x581 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x561 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x59F JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x323D PUSH2 0x619 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x673 ADD MSTORE DUP2 DUP2 PUSH2 0x1B7D ADD MSTORE DUP2 DUP2 PUSH2 0x1BF2 ADD MSTORE PUSH2 0x1D4D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x532 ADD MSTORE DUP2 DUP2 PUSH2 0xAA2 ADD MSTORE DUP2 DUP2 PUSH2 0x1143 ADD MSTORE DUP2 DUP2 PUSH2 0x13BA ADD MSTORE DUP2 DUP2 PUSH2 0x1725 ADD MSTORE DUP2 DUP2 PUSH2 0x1E45 ADD MSTORE DUP2 DUP2 PUSH2 0x20D1 ADD MSTORE PUSH2 0x2188 ADD MSTORE PUSH2 0x323D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x267 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBB0B6A53 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xD045A0DC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD045A0DC EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0xD4243885 EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x823 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xFF7BD03D EQ PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB0B6A53 EQ PUSH2 0x709 JUMPI DUP1 PUSH4 0xBC70B354 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xBD815DB0 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xC7C7F5B3 EQ PUSH2 0x769 JUMPI DUP1 PUSH4 0xCA5EB5E1 EQ PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x963EFCAA EQ PUSH2 0x661 JUMPI DUP1 PUSH4 0x9F68B964 EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6A9 JUMPI DUP1 PUSH4 0xB731EA0A EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB98BD070 EQ PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0x7D25A05E EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x82413EAC EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x857749B0 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x52AE2879 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x52AE2879 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x5535D461 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x5A0DFE4D EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x5E280F11 EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x6FC1B31E EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x32CB6B0C EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x3400288B EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x3B6F743B EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x134D4F25 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x134D4F25 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x156A0D0F EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x17442B70 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0x1F5E1334 EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0xD35B415 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x111ECDAD EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x13137D65 EQ PUSH2 0x32E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x2B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x236C JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0xAA0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH3 0xB9270B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x2538 JUMP JUMPDEST PUSH2 0xB60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x12 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH11 0x108B2A2C28029094000000 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x464 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x25BC JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x260D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x504 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x316 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0xD56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E2 PUSH2 0x5DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 PUSH2 0x418 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0xD7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x6C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x704 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xD9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x724 CALLDATASIZE PUSH1 0x4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x751 CALLDATASIZE PUSH1 0x4 PUSH2 0x278C JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x341 PUSH2 0x764 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x77C PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x341 PUSH2 0x7B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x11A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x11D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x7F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x83E CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1227 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x85E CALLDATASIZE PUSH1 0x4 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x89E SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8EB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8EB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8CE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH2 0x942 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x983 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x2946 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP2 DUP2 ADD SWAP1 SWAP4 MSTORE SWAP1 SWAP8 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0xA5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA35 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0xA82 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP7 SWAP9 SWAP6 SWAP8 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAF0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x91AC5E4F PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD DUP1 CALLDATALOAD SWAP1 PUSH2 0xB0A SWAP1 PUSH2 0xB05 SWAP1 DUP11 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12E9 JUMP JUMPDEST EQ PUSH2 0xB48 JUMPI PUSH2 0xB1C PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x309AFAF3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1325 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xB6E DUP6 DUP3 DUP6 PUSH2 0x148C JUMP JUMPDEST PUSH2 0xB79 DUP6 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB8E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x1597 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBCC PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0xBDC DUP7 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBF9 PUSH2 0xBF1 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 DUP9 PUSH2 0x170F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC0B PUSH2 0x156A JUMP JUMPDEST PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0xC21 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC2B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x17F0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xC78 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xCA4 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCF1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCF1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xF0BE4F1E87349231D80C36B33F9E8639658EEAF474014DEE15A3E6A4D4414197 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xD68 PUSH1 0x0 PUSH2 0x1826 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ADDRESS EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH2 0xDA4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 PUSH2 0xDB1 DUP3 DUP5 PUSH2 0x2A3F JUMP JUMPDEST PUSH2 0x1876 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP2 SWAP1 PUSH2 0xDEA SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE16 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE38 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE63 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE46 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xEB3 JUMPI DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0xD77 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 SUB PUSH2 0xEC3 JUMPI SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x2 DUP4 LT PUSH2 0xF41 JUMPI PUSH2 0xF0A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x197D SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xF18 DUP5 PUSH1 0x2 DUP2 DUP9 PUSH2 0x2B68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0xD77 JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1067 JUMPI CALLDATASIZE DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xF7C JUMPI PUSH2 0xF7C PUSH2 0x2BF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF8E SWAP2 SWAP1 PUSH2 0x2C0D JUMP JUMPDEST SWAP1 POP PUSH2 0xFC1 PUSH2 0xFA0 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST PUSH2 0xFCB JUMPI POP PUSH2 0x105F JUMP JUMPDEST ADDRESS PUSH4 0xD045A0DC PUSH1 0xC0 DUP4 ADD CALLDATALOAD DUP4 PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH2 0xFEA PUSH2 0x100 DUP4 ADD DUP4 PUSH2 0x2C2E JUMP JUMPDEST PUSH2 0xFFB PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1009 PUSH2 0x120 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xF61 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E9E7099 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x10CE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8351EEA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x10F0 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x110F DUP6 DUP6 DUP6 PUSH2 0x19A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1124 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x11C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29A949D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB48 JUMP JUMPDEST PUSH2 0x11D9 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD48D879CEF83A1C0BDDA516F27B13DDB1B3F8BBAC1C9E1511BB2A659C2427760 SWAP1 PUSH1 0x20 ADD PUSH2 0xD4B JUMP JUMPDEST PUSH2 0x122F PUSH2 0x156A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1259 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH2 0x1826 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 SWAP1 DUP4 SWAP1 PUSH2 0x127D SWAP1 DUP7 PUSH2 0x2771 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12B9 DUP6 PUSH2 0x1B79 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1114 JUMPI PUSH1 0x40 MLOAD PUSH4 0x71C4EFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6FF4FB7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1337 PUSH2 0x1334 DUP8 DUP8 PUSH2 0x1BB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1363 DUP3 PUSH2 0x1351 PUSH2 0x134C DUP11 DUP11 PUSH2 0x1BC8 JUMP JUMPDEST PUSH2 0x1BEB JUMP JUMPDEST PUSH2 0x135E PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1C20 JUMP JUMPDEST SWAP1 POP PUSH1 0x28 DUP7 GT ISZERO PUSH2 0x142A JUMPI PUSH1 0x0 PUSH2 0x13A0 PUSH2 0x1383 PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0x1390 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST DUP5 PUSH2 0x139B DUP13 DUP13 PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3E5AC809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x7CB59012 SWAP1 PUSH2 0x13F6 SWAP1 DUP7 SWAP1 DUP14 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1424 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 PUSH32 0xEFED6D3500546B29533B128A29E3A94D70788727F0507505AC12EAF2E578FD9C PUSH2 0x1463 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x1505 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1505 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1535 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x155F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD68 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x238399D427B947898EDB290F5FF0F9109849B1C3BA196A42E35F00C50A54B98B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1649 DUP6 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1602 DUP7 PUSH2 0x1D46 JUMP JUMPDEST PUSH2 0x160F PUSH1 0xA0 DUP10 ADD DUP10 PUSH2 0x2C2E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D72 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x165C JUMPI PUSH1 0x1 PUSH2 0x165F JUMP JUMPDEST PUSH1 0x2 JUMPDEST SWAP1 POP PUSH2 0x167F PUSH2 0x1671 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP3 PUSH2 0x751 PUSH1 0x80 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1705 JUMPI PUSH1 0x40 MLOAD PUSH4 0x43A78EB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x43A78EB SWAP1 PUSH2 0x16C2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1703 SWAP2 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST POP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDDC28C58 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1772 DUP10 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE POP ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A7 SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17E7 SWAP2 SWAP1 PUSH2 0x2EB6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x181A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH2 0x18A8 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1897 JUMPI PUSH2 0x1897 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x197D JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x18BA JUMPI PUSH2 0x18BA PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18DC JUMPI PUSH2 0x18DC PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1916 JUMPI PUSH2 0x1916 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP2 PUSH2 0x1944 SWAP2 SWAP1 PUSH2 0x2F19 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1879 JUMP JUMPDEST POP PUSH32 0xBE4864A8E820971C0247F5992E2DA559595F7BF076A21CB5928D443D2A13B674 DUP2 PUSH1 0x40 MLOAD PUSH2 0xD4B SWAP2 SWAP1 PUSH2 0x2FD7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD MLOAD PUSH2 0xFFFF DUP2 AND PUSH1 0x3 EQ PUSH2 0xB98 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x19B1 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x19E8 CALLER PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x19E3 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1DEC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19F9 DUP10 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A25 PUSH2 0x1A0E PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1A1F CALLDATASIZE DUP14 SWAP1 SUB DUP14 ADD DUP14 PUSH2 0x3067 JUMP JUMPDEST DUP12 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP9 POP SWAP1 SWAP7 POP CALLER SWAP2 SWAP1 PUSH32 0x85496B760A4B7F8D66384B9DF21B381F5D1B1E79F229A47AAF4C232EDC2FE59A SWAP1 PUSH2 0x1A73 SWAP1 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1ACE JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1505 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B6B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x1BA6 DUP2 DUP5 PUSH2 0x309A JUMP JUMPDEST PUSH2 0x909 SWAP2 SWAP1 PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BBF PUSH1 0x20 DUP3 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0xB7F SWAP2 PUSH2 0x30D3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BD8 PUSH1 0x28 PUSH1 0x20 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0x1BE1 SWAP2 PUSH2 0x30F1 JUMP JUMPDEST PUSH1 0xC0 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH11 0x108B2A2C28029094000000 DUP4 PUSH2 0x1C38 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1C42 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0x1C61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP5 DUP5 PUSH2 0x1F1D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C7B DUP3 PUSH1 0x28 DUP2 DUP7 PUSH2 0x2B68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1CD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3129 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1D1D JUMPI POP PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0x1D11 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D1B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x1D3B JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1F45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 DUP4 PUSH2 0x309A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x1DBB JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DA7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1DE2 JUMP JUMPDEST DUP5 DUP5 CALLER DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DD2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3178 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DFA DUP6 DUP6 DUP6 PUSH2 0x12AD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E09 DUP7 DUP4 PUSH2 0x206F JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E1A PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E29 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x20A5 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1E43 JUMPI PUSH2 0x1E43 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x20CD JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2637A450 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E93 DUP13 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP10 PUSH1 0x20 ADD MLOAD GT ISZERO ISZERO DUP2 MSTORE POP DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ECF SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F12 SWAP2 SWAP1 PUSH2 0x31BB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1F33 JUMPI PUSH2 0xDEAD SWAP4 POP JUMPDEST PUSH2 0x1F3D DUP5 DUP5 PUSH2 0x17F0 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F70 JUMPI DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1F65 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1FE2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FFE JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x201D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2062 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2099 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLVALUE EQ PUSH2 0x20C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4FB8209 PUSH1 0xE5 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE4FE1D94 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2151 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x217A JUMPI PUSH1 0x40 MLOAD PUSH4 0x29B99A95 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP6 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP5 ADD SWAP1 SWAP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE DUP5 MLOAD PUSH2 0xB98 SWAP7 DUP9 AND SWAP6 DUP10 SWAP4 PUSH2 0x1505 SWAP4 DUP9 SWAP4 PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP3 DUP9 GAS CALL DUP1 PUSH2 0x221B JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x2233 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1505 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22AB PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22CB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22B3 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x22EC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB7F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x233B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2346 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP3 DUP6 ADD PUSH2 0x2354 JUMP JUMPDEST DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2421 JUMPI PUSH1 0xBF NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x40 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x240B PUSH1 0x40 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x23D9 JUMP JUMPDEST POP POP DUP6 MLOAD PUSH1 0x60 DUP7 ADD MSTORE POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x24B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24BC DUP10 DUP10 PUSH2 0x243D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24EA DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x24FE DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2525 DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x254D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2558 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2568 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2346 DUP4 PUSH2 0x2579 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25F1 DUP6 DUP3 DUP7 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x25AE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x909 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2652 DUP4 PUSH2 0x2579 JUMP JUMPDEST SWAP2 POP PUSH2 0x2660 PUSH1 0x20 DUP5 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x267B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x269C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26A6 DUP7 DUP7 PUSH2 0x243D JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26CD DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH2 0x26E1 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x26FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2765 DUP6 DUP3 DUP7 ADD PUSH2 0x26EC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP3 PUSH2 0x2579 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x27A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27AB DUP6 PUSH2 0x2579 JUMP JUMPDEST SWAP4 POP PUSH2 0x27B9 PUSH1 0x20 DUP7 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27E0 DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP6 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x2802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2818 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2824 DUP8 DUP3 DUP9 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x2839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP5 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x284E DUP2 PUSH2 0x2313 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP4 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2894 PUSH1 0x40 DUP5 ADD DUP3 DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST POP DUP3 MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x28C9 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x243D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2909 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2366 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x293B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2A10 JUMPI PUSH2 0x2A10 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2A31 JUMPI PUSH2 0x2A31 PUSH2 0x295F JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2A58 JUMPI PUSH2 0x2A58 PUSH2 0x295F JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x2A68 PUSH1 0x20 DUP3 ADD PUSH2 0x29E8 JUMP JUMPDEST DUP5 DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x2A81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B5E JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 CALLDATASIZE DUP3 SWAP1 SUB SLT ISZERO PUSH2 0x2AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ABC PUSH2 0x299E JUMP JUMPDEST PUSH2 0x2AC5 DUP3 PUSH2 0x2579 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2AD3 PUSH1 0x20 DUP4 ADD PUSH2 0x2624 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP1 CALLDATASIZE PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B18 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x29E8 JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP6 MSTORE POP POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2A83 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2BA4 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x22B0 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xD77 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2BBA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x13E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2C5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH2 0x2C97 DUP10 PUSH2 0x2579 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP9 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x2CB4 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE POP DUP8 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2CDF PUSH1 0xE0 DUP4 ADD DUP8 DUP10 PUSH2 0x2BBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2D01 DUP2 DUP6 DUP8 PUSH2 0x2BBA JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2D56 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBF9 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2DDD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x22D4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x17E7 DUP2 DUP6 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2E42 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x3F NOT DUP5 DUP4 SUB ADD PUSH1 0xA0 DUP6 ADD MSTORE PUSH2 0x2E5F DUP3 DUP3 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x80 SWAP7 SWAP1 SWAP7 ADD MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E9F PUSH2 0x29C6 JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x12A8 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2EF9 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x119B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2F05 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2F32 JUMPI PUSH2 0x2F32 PUSH2 0x295F JUMP JUMPDEST PUSH2 0x2F46 DUP2 PUSH2 0x2F40 DUP5 SLOAD PUSH2 0x28F5 JUMP JUMPDEST DUP5 PUSH2 0x2ED2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x2F62 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x119B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FAA JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2F8A JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2FC8 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x305B JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x3045 PUSH1 0x60 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2FFF JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x307A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3083 PUSH2 0x29C6 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x8 DUP5 LT ISZERO PUSH2 0x3122 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x8 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP6 PUSH1 0xC0 SHL AND DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP5 PUSH1 0xE0 SHL AND PUSH1 0x8 DUP3 ADD MSTORE DUP3 PUSH1 0xC DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3168 DUP2 PUSH1 0x2C DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x2C ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP5 PUSH1 0xC0 SHL AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x31AB DUP2 PUSH1 0x48 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x48 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x31CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31D7 PUSH2 0x299E JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x31E9 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x31FB DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0xF8 0xAC MLOAD PUSH11 0x22AB20E5F1ED2E18ED8620 0xE0 DUP3 DUP4 CODESIZE 0x28 BALANCE PUSH1 0x3F 0xCF 0xF6 PUSH11 0x3F609E53FD64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"189:1641:39:-:0;;;312:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;450:5;457:7;466:11;479:9;450:5;457:7;2761:2:33;823:11:23;836:9;823:11;836:9;823:11;836:9;498::39;-1:-1:-1;;;;;1273:26:28;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:28;;1350:1;1322:31;;;2046:51:40;2019:18;;1322:31:28;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;1047:42:11;;;;;1104:23;;1100:53;;1136:17;;-1:-1:-1;;;1136:17:11;;;;;;;;;;;1100:53;1163:8;;:31;;-1:-1:-1;;;1163:31:11;;-1:-1:-1;;;;;2064:32:40;;;1163:31:11;;;2046:51:40;1163:20:11;;;;;;2019:18:40;;1163:31:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;987:214;;965:83:10;;2831:16:24::1;:14;;;:16;;:::i;:::-;2814:33;;:14;:33;;;2810:68;;;2856:22;;-1:-1:-1::0;;;2856:22:24::1;;;;;;;;;;;2810:68;2919:33;4301:1:::0;2919:14;:33:::1;:::i;:::-;2912:41;::::0;:2:::1;:41;:::i;:::-;2888:65;::::0;-1:-1:-1;1648:5:33;;-1:-1:-1;1648:13:33;;-1:-1:-1;1656:5:33;1648;:13;:::i;:::-;-1:-1:-1;1671:7:33;:17;1681:7;1671;:17;:::i;:::-;;1582:113;;647:202:23;;;;312:199:39;;;;189:1641;;2912:187:28;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;4222:87:24:-;4301:1;;4222:87::o;14:127:40:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:40;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:40;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:40;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:40;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:40;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:40:o;985:177::-;1064:13;;-1:-1:-1;;;;;1106:31:40;;1096:42;;1086:70;;1152:1;1149;1142:12;1086:70;985:177;;;:::o;1167:728::-;1284:6;1292;1300;1308;1361:3;1349:9;1340:7;1336:23;1332:33;1329:53;;;1378:1;1375;1368:12;1329:53;1405:16;;-1:-1:-1;;;;;1433:30:40;;1430:50;;;1476:1;1473;1466:12;1430:50;1499:61;1552:7;1543:6;1532:9;1528:22;1499:61;:::i;:::-;1606:2;1591:18;;1585:25;1489:71;;-1:-1:-1;1585:25:40;-1:-1:-1;;;;;;1622:32:40;;1619:52;;;1667:1;1664;1657:12;1619:52;1690:63;1745:7;1734:8;1723:9;1719:24;1690:63;:::i;:::-;1680:73;;;1772:49;1817:2;1806:9;1802:18;1772:49;:::i;:::-;1762:59;;1840:49;1885:2;1874:9;1870:18;1840:49;:::i;:::-;1830:59;;1167:728;;;;;;;:::o;2108:127::-;2169:10;2164:3;2160:20;2157:1;2150:31;2200:4;2197:1;2190:15;2224:4;2221:1;2214:15;2240:151;2330:4;2323:12;;;2309;;;2305:31;;2348:14;;2345:40;;;2365:18;;:::i;:::-;2240:151;;;;:::o;2396:375::-;2484:1;2502:5;2516:249;2537:1;2527:8;2524:15;2516:249;;;2587:4;2582:3;2578:14;2572:4;2569:24;2566:50;;;2596:18;;:::i;:::-;2646:1;2636:8;2632:16;2629:49;;;2660:16;;;;2629:49;2743:1;2739:16;;;;;2699:15;;2516:249;;;2396:375;;;;;;:::o;2776:902::-;2825:5;2855:8;2845:80;;-1:-1:-1;2896:1:40;2910:5;;2845:80;2944:4;2934:76;;-1:-1:-1;2981:1:40;2995:5;;2934:76;3026:4;3044:1;3039:59;;;;3112:1;3107:174;;;;3019:262;;3039:59;3069:1;3060:10;;3083:5;;;3107:174;3144:3;3134:8;3131:17;3128:43;;;3151:18;;:::i;:::-;-1:-1:-1;;3207:1:40;3193:16;;3266:5;;3019:262;;3365:2;3355:8;3352:16;3346:3;3340:4;3337:13;3333:36;3327:2;3317:8;3314:16;3309:2;3303:4;3300:12;3296:35;3293:77;3290:203;;;-1:-1:-1;3402:19:40;;;3478:5;;3290:203;3525:42;-1:-1:-1;;3550:8:40;3544:4;3525:42;:::i;:::-;3603:6;3599:1;3595:6;3591:19;3582:7;3579:32;3576:58;;;3614:18;;:::i;:::-;3652:20;;2776:902;-1:-1:-1;;;2776:902:40:o;3683:140::-;3741:5;3770:47;3811:4;3801:8;3797:19;3791:4;3770:47;:::i;:::-;3761:56;3683:140;-1:-1:-1;;;3683:140:40:o;3828:380::-;3907:1;3903:12;;;;3950;;;3971:61;;4025:4;4017:6;4013:17;4003:27;;3971:61;4078:2;4070:6;4067:14;4047:18;4044:38;4041:161;;4124:10;4119:3;4115:20;4112:1;4105:31;4159:4;4156:1;4149:15;4187:4;4184:1;4177:15;4041:161;;3828:380;;;:::o;4339:518::-;4441:2;4436:3;4433:11;4430:421;;;4477:5;4474:1;4467:16;4521:4;4518:1;4508:18;4591:2;4579:10;4575:19;4572:1;4568:27;4562:4;4558:38;4627:4;4615:10;4612:20;4609:47;;;-1:-1:-1;4650:4:40;4609:47;4705:2;4700:3;4696:12;4693:1;4689:20;4683:4;4679:31;4669:41;;4760:81;4778:2;4771:5;4768:13;4760:81;;;4837:1;4823:16;;4804:1;4793:13;4760:81;;;4764:3;;4430:421;4339:518;;;:::o;5033:1299::-;5153:10;;-1:-1:-1;;;;;5175:30:40;;5172:56;;;5208:18;;:::i;:::-;5237:97;5327:6;5287:38;5319:4;5313:11;5287:38;:::i;:::-;5281:4;5237:97;:::i;:::-;5383:4;5414:2;5403:14;;5431:1;5426:649;;;;6119:1;6136:6;6133:89;;;-1:-1:-1;6188:19:40;;;6182:26;6133:89;-1:-1:-1;;4990:1:40;4986:11;;;4982:24;4978:29;4968:40;5014:1;5010:11;;;4965:57;6235:81;;5396:930;;5426:649;4286:1;4279:14;;;4323:4;4310:18;;-1:-1:-1;;5462:20:40;;;5580:222;5594:7;5591:1;5588:14;5580:222;;;5676:19;;;5670:26;5655:42;;5783:4;5768:20;;;;5736:1;5724:14;;;;5610:12;5580:222;;;5584:3;5830:6;5821:7;5818:19;5815:201;;;5891:19;;;5885:26;-1:-1:-1;;5974:1:40;5970:14;;;5986:3;5966:24;5962:37;5958:42;5943:58;5928:74;;5815:201;-1:-1:-1;;;;6062:1:40;6046:14;;;6042:22;6029:36;;-1:-1:-1;5033:1299:40:o;:::-;189:1641:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@MAX_SUPPLY_5347":{"entryPoint":null,"id":5347,"parameterSlots":0,"returnSlots":0},"@SEND_2781":{"entryPoint":null,"id":2781,"parameterSlots":0,"returnSlots":0},"@SEND_AND_CALL_2784":{"entryPoint":null,"id":2784,"parameterSlots":0,"returnSlots":0},"@_approve_4613":{"entryPoint":4763,"id":4613,"parameterSlots":3,"returnSlots":0},"@_approve_4673":{"entryPoint":6820,"id":4673,"parameterSlots":4,"returnSlots":0},"@_assertOptionsType3_2148":{"entryPoint":6525,"id":2148,"parameterSlots":1,"returnSlots":0},"@_buildMsgAndOptions_3139":{"entryPoint":5612,"id":3139,"parameterSlots":2,"returnSlots":2},"@_burn_4595":{"entryPoint":8303,"id":4595,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_5248":{"entryPoint":null,"id":5248,"parameterSlots":2,"returnSlots":0},"@_checkOwner_3917":{"entryPoint":5482,"id":3917,"parameterSlots":0,"returnSlots":0},"@_credit_2735":{"entryPoint":7965,"id":2735,"parameterSlots":3,"returnSlots":1},"@_credit_5429":{"entryPoint":7200,"id":5429,"parameterSlots":3,"returnSlots":1},"@_debitView_3336":{"entryPoint":4781,"id":3336,"parameterSlots":3,"returnSlots":2},"@_debit_2700":{"entryPoint":7660,"id":2700,"parameterSlots":4,"returnSlots":2},"@_getPeerOrRevert_1485":{"entryPoint":4841,"id":1485,"parameterSlots":1,"returnSlots":1},"@_lzReceiveSimulate_3238":{"entryPoint":null,"id":3238,"parameterSlots":7,"returnSlots":0},"@_lzReceive_3213":{"entryPoint":4901,"id":3213,"parameterSlots":7,"returnSlots":0},"@_lzSend_1781":{"entryPoint":7698,"id":1781,"parameterSlots":5,"returnSlots":1},"@_mint_4562":{"entryPoint":6128,"id":4562,"parameterSlots":2,"returnSlots":0},"@_msgSender_5302":{"entryPoint":null,"id":5302,"parameterSlots":0,"returnSlots":1},"@_payLzToken_1838":{"entryPoint":8397,"id":1838,"parameterSlots":1,"returnSlots":0},"@_payNative_1802":{"entryPoint":8357,"id":1802,"parameterSlots":1,"returnSlots":1},"@_quote_1726":{"entryPoint":5903,"id":1726,"parameterSlots":4,"returnSlots":1},"@_removeDust_3272":{"entryPoint":7033,"id":3272,"parameterSlots":1,"returnSlots":1},"@_send_3071":{"entryPoint":6569,"id":3071,"parameterSlots":3,"returnSlots":2},"@_setEnforcedOptions_2071":{"entryPoint":6262,"id":2071,"parameterSlots":1,"returnSlots":0},"@_setPeer_1457":{"entryPoint":5527,"id":1457,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_4721":{"entryPoint":5260,"id":4721,"parameterSlots":3,"returnSlots":0},"@_toLD_3285":{"entryPoint":7147,"id":3285,"parameterSlots":1,"returnSlots":1},"@_toSD_3301":{"entryPoint":7494,"id":3301,"parameterSlots":1,"returnSlots":1},"@_transferOwnership_3979":{"entryPoint":6182,"id":3979,"parameterSlots":1,"returnSlots":0},"@_transfer_4452":{"entryPoint":5387,"id":4452,"parameterSlots":3,"returnSlots":0},"@_update_4529":{"entryPoint":8005,"id":4529,"parameterSlots":3,"returnSlots":0},"@_update_5467":{"entryPoint":7401,"id":5467,"parameterSlots":3,"returnSlots":0},"@addressToBytes32_3811":{"entryPoint":null,"id":3811,"parameterSlots":1,"returnSlots":1},"@allowInitializePath_1572":{"entryPoint":4709,"id":1572,"parameterSlots":1,"returnSlots":1},"@allowance_4349":{"entryPoint":null,"id":4349,"parameterSlots":2,"returnSlots":1},"@amountSD_3778":{"entryPoint":7112,"id":3778,"parameterSlots":2,"returnSlots":1},"@approvalRequired_2667":{"entryPoint":null,"id":2667,"parameterSlots":0,"returnSlots":1},"@approve_4373":{"entryPoint":2293,"id":4373,"parameterSlots":2,"returnSlots":1},"@balanceOf_4308":{"entryPoint":null,"id":4308,"parameterSlots":1,"returnSlots":1},"@bytes32ToAddress_3831":{"entryPoint":null,"id":3831,"parameterSlots":1,"returnSlots":1},"@combineOptions_2129":{"entryPoint":3510,"id":2129,"parameterSlots":4,"returnSlots":1},"@composeMsg_3791":{"entryPoint":7276,"id":3791,"parameterSlots":2,"returnSlots":1},"@decimalConversionRate_2778":{"entryPoint":null,"id":2778,"parameterSlots":0,"returnSlots":0},"@decimals_4286":{"entryPoint":null,"id":4286,"parameterSlots":0,"returnSlots":1},"@encode_3548":{"entryPoint":7351,"id":3548,"parameterSlots":4,"returnSlots":1},"@encode_3728":{"entryPoint":7538,"id":3728,"parameterSlots":3,"returnSlots":2},"@endpoint_1386":{"entryPoint":null,"id":1386,"parameterSlots":0,"returnSlots":0},"@enforcedOptions_2006":{"entryPoint":3156,"id":2006,"parameterSlots":0,"returnSlots":0},"@isComposeMsgSender_1554":{"entryPoint":3434,"id":1554,"parameterSlots":4,"returnSlots":1},"@isComposed_3742":{"entryPoint":null,"id":3742,"parameterSlots":2,"returnSlots":1},"@isPeer_3256":{"entryPoint":null,"id":3256,"parameterSlots":2,"returnSlots":1},"@lzReceiveAndRevert_2262":{"entryPoint":3934,"id":2262,"parameterSlots":2,"returnSlots":0},"@lzReceiveSimulate_2297":{"entryPoint":4514,"id":2297,"parameterSlots":7,"returnSlots":0},"@lzReceive_1637":{"entryPoint":2720,"id":1637,"parameterSlots":7,"returnSlots":0},"@mint_5397":{"entryPoint":3075,"id":5397,"parameterSlots":2,"returnSlots":0},"@msgInspector_2786":{"entryPoint":null,"id":2786,"parameterSlots":0,"returnSlots":0},"@name_4268":{"entryPoint":2147,"id":4268,"parameterSlots":0,"returnSlots":1},"@nextNonce_1585":{"entryPoint":null,"id":1585,"parameterSlots":2,"returnSlots":1},"@oAppVersion_1370":{"entryPoint":null,"id":1370,"parameterSlots":0,"returnSlots":2},"@oApp_2178":{"entryPoint":null,"id":2178,"parameterSlots":0,"returnSlots":1},"@oftVersion_2839":{"entryPoint":null,"id":2839,"parameterSlots":0,"returnSlots":2},"@owner_3900":{"entryPoint":null,"id":3900,"parameterSlots":0,"returnSlots":1},"@peers_1390":{"entryPoint":null,"id":1390,"parameterSlots":0,"returnSlots":0},"@preCrime_2166":{"entryPoint":null,"id":2166,"parameterSlots":0,"returnSlots":0},"@quoteOFT_2933":{"entryPoint":2319,"id":2933,"parameterSlots":1,"returnSlots":3},"@quoteSend_2974":{"entryPoint":2972,"id":2974,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_3931":{"entryPoint":3414,"id":3931,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_4898":{"entryPoint":null,"id":4898,"parameterSlots":4,"returnSlots":0},"@sendTo_3758":{"entryPoint":7088,"id":3758,"parameterSlots":2,"returnSlots":1},"@send_2999":{"entryPoint":4328,"id":2999,"parameterSlots":3,"returnSlots":2},"@setDelegate_1500":{"entryPoint":4380,"id":1500,"parameterSlots":1,"returnSlots":0},"@setEnforcedOptions_2021":{"entryPoint":3484,"id":2021,"parameterSlots":2,"returnSlots":0},"@setMsgInspector_2865":{"entryPoint":3321,"id":2865,"parameterSlots":1,"returnSlots":0},"@setPeer_1437":{"entryPoint":2950,"id":1437,"parameterSlots":2,"returnSlots":0},"@setPreCrime_2195":{"entryPoint":4561,"id":2195,"parameterSlots":1,"returnSlots":0},"@sharedDecimals_2848":{"entryPoint":null,"id":2848,"parameterSlots":0,"returnSlots":1},"@symbol_4277":{"entryPoint":3455,"id":4277,"parameterSlots":0,"returnSlots":1},"@token_2658":{"entryPoint":null,"id":2658,"parameterSlots":0,"returnSlots":1},"@totalSupply_4295":{"entryPoint":null,"id":4295,"parameterSlots":0,"returnSlots":1},"@transferFrom_4405":{"entryPoint":2912,"id":4405,"parameterSlots":3,"returnSlots":1},"@transferOwnership_3959":{"entryPoint":4647,"id":3959,"parameterSlots":1,"returnSlots":0},"@transfer_4332":{"entryPoint":3470,"id":4332,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata":{"entryPoint":9964,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":9295,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_struct_MessagingFee_fromMemory":{"entryPoint":11909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_Origin_calldata":{"entryPoint":9277,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_SendParam_calldata":{"entryPoint":9044,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":9833,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":10537,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":10411,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":9528,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":9000,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":10032,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":11759,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":11535,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr":{"entryPoint":12391,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory":{"entryPoint":11958,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory":{"entryPoint":12731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr":{"entryPoint":10457,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr":{"entryPoint":9367,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address":{"entryPoint":9862,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr":{"entryPoint":9068,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool":{"entryPoint":9660,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address":{"entryPoint":10220,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":10566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint32":{"entryPoint":10097,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint32t_bytes32":{"entryPoint":9618,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint32t_uint16":{"entryPoint":9782,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr":{"entryPoint":10124,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint64":{"entryPoint":11644,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint16":{"entryPoint":9764,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint32":{"entryPoint":9593,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":11194,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_string":{"entryPoint":8916,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_OFTLimit":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12664,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":11154,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12585,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11673,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":12247,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11235,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11722,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8960,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed":{"entryPoint":9741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed":{"entryPoint":11788,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed":{"entryPoint":10329,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed":{"entryPoint":9120,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11401,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":11310,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr":{"entryPoint":11277,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":10728,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_3873":{"entryPoint":10654,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_3874":{"entryPoint":10694,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":10776,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":11112,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":10635,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12442,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12476,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":11986,"id":null,"parameterSlots":3,"returnSlots":0},"convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr":{"entryPoint":10815,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32":{"entryPoint":12499,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8":{"entryPoint":12529,"id":null,"parameterSlots":2,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":12057,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":8880,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":10485,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":10613,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":11255,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10591,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":8979,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":9646,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":11380,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:34459:40","nodeType":"YulBlock","src":"0:34459:40","statements":[{"nativeSrc":"6:3:40","nodeType":"YulBlock","src":"6:3:40","statements":[]},{"body":{"nativeSrc":"80:184:40","nodeType":"YulBlock","src":"80:184:40","statements":[{"nativeSrc":"90:10:40","nodeType":"YulVariableDeclaration","src":"90:10:40","value":{"kind":"number","nativeSrc":"99:1:40","nodeType":"YulLiteral","src":"99:1:40","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"94:1:40","nodeType":"YulTypedName","src":"94:1:40","type":""}]},{"body":{"nativeSrc":"159:63:40","nodeType":"YulBlock","src":"159:63:40","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"184:3:40","nodeType":"YulIdentifier","src":"184:3:40"},{"name":"i","nativeSrc":"189:1:40","nodeType":"YulIdentifier","src":"189:1:40"}],"functionName":{"name":"add","nativeSrc":"180:3:40","nodeType":"YulIdentifier","src":"180:3:40"},"nativeSrc":"180:11:40","nodeType":"YulFunctionCall","src":"180:11:40"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"203:3:40","nodeType":"YulIdentifier","src":"203:3:40"},{"name":"i","nativeSrc":"208:1:40","nodeType":"YulIdentifier","src":"208:1:40"}],"functionName":{"name":"add","nativeSrc":"199:3:40","nodeType":"YulIdentifier","src":"199:3:40"},"nativeSrc":"199:11:40","nodeType":"YulFunctionCall","src":"199:11:40"}],"functionName":{"name":"mload","nativeSrc":"193:5:40","nodeType":"YulIdentifier","src":"193:5:40"},"nativeSrc":"193:18:40","nodeType":"YulFunctionCall","src":"193:18:40"}],"functionName":{"name":"mstore","nativeSrc":"173:6:40","nodeType":"YulIdentifier","src":"173:6:40"},"nativeSrc":"173:39:40","nodeType":"YulFunctionCall","src":"173:39:40"},"nativeSrc":"173:39:40","nodeType":"YulExpressionStatement","src":"173:39:40"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"120:1:40","nodeType":"YulIdentifier","src":"120:1:40"},{"name":"length","nativeSrc":"123:6:40","nodeType":"YulIdentifier","src":"123:6:40"}],"functionName":{"name":"lt","nativeSrc":"117:2:40","nodeType":"YulIdentifier","src":"117:2:40"},"nativeSrc":"117:13:40","nodeType":"YulFunctionCall","src":"117:13:40"},"nativeSrc":"109:113:40","nodeType":"YulForLoop","post":{"nativeSrc":"131:19:40","nodeType":"YulBlock","src":"131:19:40","statements":[{"nativeSrc":"133:15:40","nodeType":"YulAssignment","src":"133:15:40","value":{"arguments":[{"name":"i","nativeSrc":"142:1:40","nodeType":"YulIdentifier","src":"142:1:40"},{"kind":"number","nativeSrc":"145:2:40","nodeType":"YulLiteral","src":"145:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"138:3:40","nodeType":"YulIdentifier","src":"138:3:40"},"nativeSrc":"138:10:40","nodeType":"YulFunctionCall","src":"138:10:40"},"variableNames":[{"name":"i","nativeSrc":"133:1:40","nodeType":"YulIdentifier","src":"133:1:40"}]}]},"pre":{"nativeSrc":"113:3:40","nodeType":"YulBlock","src":"113:3:40","statements":[]},"src":"109:113:40"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"242:3:40","nodeType":"YulIdentifier","src":"242:3:40"},{"name":"length","nativeSrc":"247:6:40","nodeType":"YulIdentifier","src":"247:6:40"}],"functionName":{"name":"add","nativeSrc":"238:3:40","nodeType":"YulIdentifier","src":"238:3:40"},"nativeSrc":"238:16:40","nodeType":"YulFunctionCall","src":"238:16:40"},{"kind":"number","nativeSrc":"256:1:40","nodeType":"YulLiteral","src":"256:1:40","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"231:6:40","nodeType":"YulIdentifier","src":"231:6:40"},"nativeSrc":"231:27:40","nodeType":"YulFunctionCall","src":"231:27:40"},"nativeSrc":"231:27:40","nodeType":"YulExpressionStatement","src":"231:27:40"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"14:250:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"58:3:40","nodeType":"YulTypedName","src":"58:3:40","type":""},{"name":"dst","nativeSrc":"63:3:40","nodeType":"YulTypedName","src":"63:3:40","type":""},{"name":"length","nativeSrc":"68:6:40","nodeType":"YulTypedName","src":"68:6:40","type":""}],"src":"14:250:40"},{"body":{"nativeSrc":"319:221:40","nodeType":"YulBlock","src":"319:221:40","statements":[{"nativeSrc":"329:26:40","nodeType":"YulVariableDeclaration","src":"329:26:40","value":{"arguments":[{"name":"value","nativeSrc":"349:5:40","nodeType":"YulIdentifier","src":"349:5:40"}],"functionName":{"name":"mload","nativeSrc":"343:5:40","nodeType":"YulIdentifier","src":"343:5:40"},"nativeSrc":"343:12:40","nodeType":"YulFunctionCall","src":"343:12:40"},"variables":[{"name":"length","nativeSrc":"333:6:40","nodeType":"YulTypedName","src":"333:6:40","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"371:3:40","nodeType":"YulIdentifier","src":"371:3:40"},{"name":"length","nativeSrc":"376:6:40","nodeType":"YulIdentifier","src":"376:6:40"}],"functionName":{"name":"mstore","nativeSrc":"364:6:40","nodeType":"YulIdentifier","src":"364:6:40"},"nativeSrc":"364:19:40","nodeType":"YulFunctionCall","src":"364:19:40"},"nativeSrc":"364:19:40","nodeType":"YulExpressionStatement","src":"364:19:40"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"431:5:40","nodeType":"YulIdentifier","src":"431:5:40"},{"kind":"number","nativeSrc":"438:4:40","nodeType":"YulLiteral","src":"438:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"427:3:40","nodeType":"YulIdentifier","src":"427:3:40"},"nativeSrc":"427:16:40","nodeType":"YulFunctionCall","src":"427:16:40"},{"arguments":[{"name":"pos","nativeSrc":"449:3:40","nodeType":"YulIdentifier","src":"449:3:40"},{"kind":"number","nativeSrc":"454:4:40","nodeType":"YulLiteral","src":"454:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"445:3:40","nodeType":"YulIdentifier","src":"445:3:40"},"nativeSrc":"445:14:40","nodeType":"YulFunctionCall","src":"445:14:40"},{"name":"length","nativeSrc":"461:6:40","nodeType":"YulIdentifier","src":"461:6:40"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"392:34:40","nodeType":"YulIdentifier","src":"392:34:40"},"nativeSrc":"392:76:40","nodeType":"YulFunctionCall","src":"392:76:40"},"nativeSrc":"392:76:40","nodeType":"YulExpressionStatement","src":"392:76:40"},{"nativeSrc":"477:57:40","nodeType":"YulAssignment","src":"477:57:40","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"492:3:40","nodeType":"YulIdentifier","src":"492:3:40"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"505:6:40","nodeType":"YulIdentifier","src":"505:6:40"},{"kind":"number","nativeSrc":"513:2:40","nodeType":"YulLiteral","src":"513:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"501:3:40","nodeType":"YulIdentifier","src":"501:3:40"},"nativeSrc":"501:15:40","nodeType":"YulFunctionCall","src":"501:15:40"},{"arguments":[{"kind":"number","nativeSrc":"522:2:40","nodeType":"YulLiteral","src":"522:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"518:3:40","nodeType":"YulIdentifier","src":"518:3:40"},"nativeSrc":"518:7:40","nodeType":"YulFunctionCall","src":"518:7:40"}],"functionName":{"name":"and","nativeSrc":"497:3:40","nodeType":"YulIdentifier","src":"497:3:40"},"nativeSrc":"497:29:40","nodeType":"YulFunctionCall","src":"497:29:40"}],"functionName":{"name":"add","nativeSrc":"488:3:40","nodeType":"YulIdentifier","src":"488:3:40"},"nativeSrc":"488:39:40","nodeType":"YulFunctionCall","src":"488:39:40"},{"kind":"number","nativeSrc":"529:4:40","nodeType":"YulLiteral","src":"529:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"484:3:40","nodeType":"YulIdentifier","src":"484:3:40"},"nativeSrc":"484:50:40","nodeType":"YulFunctionCall","src":"484:50:40"},"variableNames":[{"name":"end","nativeSrc":"477:3:40","nodeType":"YulIdentifier","src":"477:3:40"}]}]},"name":"abi_encode_string","nativeSrc":"269:271:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"296:5:40","nodeType":"YulTypedName","src":"296:5:40","type":""},{"name":"pos","nativeSrc":"303:3:40","nodeType":"YulTypedName","src":"303:3:40","type":""}],"returnVariables":[{"name":"end","nativeSrc":"311:3:40","nodeType":"YulTypedName","src":"311:3:40","type":""}],"src":"269:271:40"},{"body":{"nativeSrc":"666:99:40","nodeType":"YulBlock","src":"666:99:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"683:9:40","nodeType":"YulIdentifier","src":"683:9:40"},{"kind":"number","nativeSrc":"694:2:40","nodeType":"YulLiteral","src":"694:2:40","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"676:6:40","nodeType":"YulIdentifier","src":"676:6:40"},"nativeSrc":"676:21:40","nodeType":"YulFunctionCall","src":"676:21:40"},"nativeSrc":"676:21:40","nodeType":"YulExpressionStatement","src":"676:21:40"},{"nativeSrc":"706:53:40","nodeType":"YulAssignment","src":"706:53:40","value":{"arguments":[{"name":"value0","nativeSrc":"732:6:40","nodeType":"YulIdentifier","src":"732:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"744:9:40","nodeType":"YulIdentifier","src":"744:9:40"},{"kind":"number","nativeSrc":"755:2:40","nodeType":"YulLiteral","src":"755:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"740:3:40","nodeType":"YulIdentifier","src":"740:3:40"},"nativeSrc":"740:18:40","nodeType":"YulFunctionCall","src":"740:18:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"714:17:40","nodeType":"YulIdentifier","src":"714:17:40"},"nativeSrc":"714:45:40","nodeType":"YulFunctionCall","src":"714:45:40"},"variableNames":[{"name":"tail","nativeSrc":"706:4:40","nodeType":"YulIdentifier","src":"706:4:40"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"545:220:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"635:9:40","nodeType":"YulTypedName","src":"635:9:40","type":""},{"name":"value0","nativeSrc":"646:6:40","nodeType":"YulTypedName","src":"646:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"657:4:40","nodeType":"YulTypedName","src":"657:4:40","type":""}],"src":"545:220:40"},{"body":{"nativeSrc":"815:86:40","nodeType":"YulBlock","src":"815:86:40","statements":[{"body":{"nativeSrc":"879:16:40","nodeType":"YulBlock","src":"879:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"888:1:40","nodeType":"YulLiteral","src":"888:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"891:1:40","nodeType":"YulLiteral","src":"891:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"881:6:40","nodeType":"YulIdentifier","src":"881:6:40"},"nativeSrc":"881:12:40","nodeType":"YulFunctionCall","src":"881:12:40"},"nativeSrc":"881:12:40","nodeType":"YulExpressionStatement","src":"881:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"838:5:40","nodeType":"YulIdentifier","src":"838:5:40"},{"arguments":[{"name":"value","nativeSrc":"849:5:40","nodeType":"YulIdentifier","src":"849:5:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"864:3:40","nodeType":"YulLiteral","src":"864:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"869:1:40","nodeType":"YulLiteral","src":"869:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"860:3:40","nodeType":"YulIdentifier","src":"860:3:40"},"nativeSrc":"860:11:40","nodeType":"YulFunctionCall","src":"860:11:40"},{"kind":"number","nativeSrc":"873:1:40","nodeType":"YulLiteral","src":"873:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"856:3:40","nodeType":"YulIdentifier","src":"856:3:40"},"nativeSrc":"856:19:40","nodeType":"YulFunctionCall","src":"856:19:40"}],"functionName":{"name":"and","nativeSrc":"845:3:40","nodeType":"YulIdentifier","src":"845:3:40"},"nativeSrc":"845:31:40","nodeType":"YulFunctionCall","src":"845:31:40"}],"functionName":{"name":"eq","nativeSrc":"835:2:40","nodeType":"YulIdentifier","src":"835:2:40"},"nativeSrc":"835:42:40","nodeType":"YulFunctionCall","src":"835:42:40"}],"functionName":{"name":"iszero","nativeSrc":"828:6:40","nodeType":"YulIdentifier","src":"828:6:40"},"nativeSrc":"828:50:40","nodeType":"YulFunctionCall","src":"828:50:40"},"nativeSrc":"825:70:40","nodeType":"YulIf","src":"825:70:40"}]},"name":"validator_revert_address","nativeSrc":"770:131:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"804:5:40","nodeType":"YulTypedName","src":"804:5:40","type":""}],"src":"770:131:40"},{"body":{"nativeSrc":"993:280:40","nodeType":"YulBlock","src":"993:280:40","statements":[{"body":{"nativeSrc":"1039:16:40","nodeType":"YulBlock","src":"1039:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1048:1:40","nodeType":"YulLiteral","src":"1048:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1051:1:40","nodeType":"YulLiteral","src":"1051:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1041:6:40","nodeType":"YulIdentifier","src":"1041:6:40"},"nativeSrc":"1041:12:40","nodeType":"YulFunctionCall","src":"1041:12:40"},"nativeSrc":"1041:12:40","nodeType":"YulExpressionStatement","src":"1041:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1014:7:40","nodeType":"YulIdentifier","src":"1014:7:40"},{"name":"headStart","nativeSrc":"1023:9:40","nodeType":"YulIdentifier","src":"1023:9:40"}],"functionName":{"name":"sub","nativeSrc":"1010:3:40","nodeType":"YulIdentifier","src":"1010:3:40"},"nativeSrc":"1010:23:40","nodeType":"YulFunctionCall","src":"1010:23:40"},{"kind":"number","nativeSrc":"1035:2:40","nodeType":"YulLiteral","src":"1035:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1006:3:40","nodeType":"YulIdentifier","src":"1006:3:40"},"nativeSrc":"1006:32:40","nodeType":"YulFunctionCall","src":"1006:32:40"},"nativeSrc":"1003:52:40","nodeType":"YulIf","src":"1003:52:40"},{"nativeSrc":"1064:36:40","nodeType":"YulVariableDeclaration","src":"1064:36:40","value":{"arguments":[{"name":"headStart","nativeSrc":"1090:9:40","nodeType":"YulIdentifier","src":"1090:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"1077:12:40","nodeType":"YulIdentifier","src":"1077:12:40"},"nativeSrc":"1077:23:40","nodeType":"YulFunctionCall","src":"1077:23:40"},"variables":[{"name":"value","nativeSrc":"1068:5:40","nodeType":"YulTypedName","src":"1068:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1134:5:40","nodeType":"YulIdentifier","src":"1134:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1109:24:40","nodeType":"YulIdentifier","src":"1109:24:40"},"nativeSrc":"1109:31:40","nodeType":"YulFunctionCall","src":"1109:31:40"},"nativeSrc":"1109:31:40","nodeType":"YulExpressionStatement","src":"1109:31:40"},{"nativeSrc":"1149:15:40","nodeType":"YulAssignment","src":"1149:15:40","value":{"name":"value","nativeSrc":"1159:5:40","nodeType":"YulIdentifier","src":"1159:5:40"},"variableNames":[{"name":"value0","nativeSrc":"1149:6:40","nodeType":"YulIdentifier","src":"1149:6:40"}]},{"nativeSrc":"1173:16:40","nodeType":"YulVariableDeclaration","src":"1173:16:40","value":{"kind":"number","nativeSrc":"1188:1:40","nodeType":"YulLiteral","src":"1188:1:40","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1177:7:40","nodeType":"YulTypedName","src":"1177:7:40","type":""}]},{"nativeSrc":"1198:43:40","nodeType":"YulAssignment","src":"1198:43:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1226:9:40","nodeType":"YulIdentifier","src":"1226:9:40"},{"kind":"number","nativeSrc":"1237:2:40","nodeType":"YulLiteral","src":"1237:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1222:3:40","nodeType":"YulIdentifier","src":"1222:3:40"},"nativeSrc":"1222:18:40","nodeType":"YulFunctionCall","src":"1222:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"1209:12:40","nodeType":"YulIdentifier","src":"1209:12:40"},"nativeSrc":"1209:32:40","nodeType":"YulFunctionCall","src":"1209:32:40"},"variableNames":[{"name":"value_1","nativeSrc":"1198:7:40","nodeType":"YulIdentifier","src":"1198:7:40"}]},{"nativeSrc":"1250:17:40","nodeType":"YulAssignment","src":"1250:17:40","value":{"name":"value_1","nativeSrc":"1260:7:40","nodeType":"YulIdentifier","src":"1260:7:40"},"variableNames":[{"name":"value1","nativeSrc":"1250:6:40","nodeType":"YulIdentifier","src":"1250:6:40"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"906:367:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"951:9:40","nodeType":"YulTypedName","src":"951:9:40","type":""},{"name":"dataEnd","nativeSrc":"962:7:40","nodeType":"YulTypedName","src":"962:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"974:6:40","nodeType":"YulTypedName","src":"974:6:40","type":""},{"name":"value1","nativeSrc":"982:6:40","nodeType":"YulTypedName","src":"982:6:40","type":""}],"src":"906:367:40"},{"body":{"nativeSrc":"1373:92:40","nodeType":"YulBlock","src":"1373:92:40","statements":[{"nativeSrc":"1383:26:40","nodeType":"YulAssignment","src":"1383:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"1395:9:40","nodeType":"YulIdentifier","src":"1395:9:40"},{"kind":"number","nativeSrc":"1406:2:40","nodeType":"YulLiteral","src":"1406:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1391:3:40","nodeType":"YulIdentifier","src":"1391:3:40"},"nativeSrc":"1391:18:40","nodeType":"YulFunctionCall","src":"1391:18:40"},"variableNames":[{"name":"tail","nativeSrc":"1383:4:40","nodeType":"YulIdentifier","src":"1383:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1425:9:40","nodeType":"YulIdentifier","src":"1425:9:40"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1450:6:40","nodeType":"YulIdentifier","src":"1450:6:40"}],"functionName":{"name":"iszero","nativeSrc":"1443:6:40","nodeType":"YulIdentifier","src":"1443:6:40"},"nativeSrc":"1443:14:40","nodeType":"YulFunctionCall","src":"1443:14:40"}],"functionName":{"name":"iszero","nativeSrc":"1436:6:40","nodeType":"YulIdentifier","src":"1436:6:40"},"nativeSrc":"1436:22:40","nodeType":"YulFunctionCall","src":"1436:22:40"}],"functionName":{"name":"mstore","nativeSrc":"1418:6:40","nodeType":"YulIdentifier","src":"1418:6:40"},"nativeSrc":"1418:41:40","nodeType":"YulFunctionCall","src":"1418:41:40"},"nativeSrc":"1418:41:40","nodeType":"YulExpressionStatement","src":"1418:41:40"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1278:187:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1342:9:40","nodeType":"YulTypedName","src":"1342:9:40","type":""},{"name":"value0","nativeSrc":"1353:6:40","nodeType":"YulTypedName","src":"1353:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1364:4:40","nodeType":"YulTypedName","src":"1364:4:40","type":""}],"src":"1278:187:40"},{"body":{"nativeSrc":"1542:86:40","nodeType":"YulBlock","src":"1542:86:40","statements":[{"body":{"nativeSrc":"1582:16:40","nodeType":"YulBlock","src":"1582:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1591:1:40","nodeType":"YulLiteral","src":"1591:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1594:1:40","nodeType":"YulLiteral","src":"1594:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1584:6:40","nodeType":"YulIdentifier","src":"1584:6:40"},"nativeSrc":"1584:12:40","nodeType":"YulFunctionCall","src":"1584:12:40"},"nativeSrc":"1584:12:40","nodeType":"YulExpressionStatement","src":"1584:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1563:3:40","nodeType":"YulIdentifier","src":"1563:3:40"},{"name":"offset","nativeSrc":"1568:6:40","nodeType":"YulIdentifier","src":"1568:6:40"}],"functionName":{"name":"sub","nativeSrc":"1559:3:40","nodeType":"YulIdentifier","src":"1559:3:40"},"nativeSrc":"1559:16:40","nodeType":"YulFunctionCall","src":"1559:16:40"},{"kind":"number","nativeSrc":"1577:3:40","nodeType":"YulLiteral","src":"1577:3:40","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"1555:3:40","nodeType":"YulIdentifier","src":"1555:3:40"},"nativeSrc":"1555:26:40","nodeType":"YulFunctionCall","src":"1555:26:40"},"nativeSrc":"1552:46:40","nodeType":"YulIf","src":"1552:46:40"},{"nativeSrc":"1607:15:40","nodeType":"YulAssignment","src":"1607:15:40","value":{"name":"offset","nativeSrc":"1616:6:40","nodeType":"YulIdentifier","src":"1616:6:40"},"variableNames":[{"name":"value","nativeSrc":"1607:5:40","nodeType":"YulIdentifier","src":"1607:5:40"}]}]},"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"1470:158:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1516:6:40","nodeType":"YulTypedName","src":"1516:6:40","type":""},{"name":"end","nativeSrc":"1524:3:40","nodeType":"YulTypedName","src":"1524:3:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1532:5:40","nodeType":"YulTypedName","src":"1532:5:40","type":""}],"src":"1470:158:40"},{"body":{"nativeSrc":"1732:261:40","nodeType":"YulBlock","src":"1732:261:40","statements":[{"body":{"nativeSrc":"1778:16:40","nodeType":"YulBlock","src":"1778:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1787:1:40","nodeType":"YulLiteral","src":"1787:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1790:1:40","nodeType":"YulLiteral","src":"1790:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1780:6:40","nodeType":"YulIdentifier","src":"1780:6:40"},"nativeSrc":"1780:12:40","nodeType":"YulFunctionCall","src":"1780:12:40"},"nativeSrc":"1780:12:40","nodeType":"YulExpressionStatement","src":"1780:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1753:7:40","nodeType":"YulIdentifier","src":"1753:7:40"},{"name":"headStart","nativeSrc":"1762:9:40","nodeType":"YulIdentifier","src":"1762:9:40"}],"functionName":{"name":"sub","nativeSrc":"1749:3:40","nodeType":"YulIdentifier","src":"1749:3:40"},"nativeSrc":"1749:23:40","nodeType":"YulFunctionCall","src":"1749:23:40"},{"kind":"number","nativeSrc":"1774:2:40","nodeType":"YulLiteral","src":"1774:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1745:3:40","nodeType":"YulIdentifier","src":"1745:3:40"},"nativeSrc":"1745:32:40","nodeType":"YulFunctionCall","src":"1745:32:40"},"nativeSrc":"1742:52:40","nodeType":"YulIf","src":"1742:52:40"},{"nativeSrc":"1803:37:40","nodeType":"YulVariableDeclaration","src":"1803:37:40","value":{"arguments":[{"name":"headStart","nativeSrc":"1830:9:40","nodeType":"YulIdentifier","src":"1830:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"1817:12:40","nodeType":"YulIdentifier","src":"1817:12:40"},"nativeSrc":"1817:23:40","nodeType":"YulFunctionCall","src":"1817:23:40"},"variables":[{"name":"offset","nativeSrc":"1807:6:40","nodeType":"YulTypedName","src":"1807:6:40","type":""}]},{"body":{"nativeSrc":"1883:16:40","nodeType":"YulBlock","src":"1883:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1892:1:40","nodeType":"YulLiteral","src":"1892:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"1895:1:40","nodeType":"YulLiteral","src":"1895:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1885:6:40","nodeType":"YulIdentifier","src":"1885:6:40"},"nativeSrc":"1885:12:40","nodeType":"YulFunctionCall","src":"1885:12:40"},"nativeSrc":"1885:12:40","nodeType":"YulExpressionStatement","src":"1885:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1855:6:40","nodeType":"YulIdentifier","src":"1855:6:40"},{"kind":"number","nativeSrc":"1863:18:40","nodeType":"YulLiteral","src":"1863:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1852:2:40","nodeType":"YulIdentifier","src":"1852:2:40"},"nativeSrc":"1852:30:40","nodeType":"YulFunctionCall","src":"1852:30:40"},"nativeSrc":"1849:50:40","nodeType":"YulIf","src":"1849:50:40"},{"nativeSrc":"1908:79:40","nodeType":"YulAssignment","src":"1908:79:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1959:9:40","nodeType":"YulIdentifier","src":"1959:9:40"},{"name":"offset","nativeSrc":"1970:6:40","nodeType":"YulIdentifier","src":"1970:6:40"}],"functionName":{"name":"add","nativeSrc":"1955:3:40","nodeType":"YulIdentifier","src":"1955:3:40"},"nativeSrc":"1955:22:40","nodeType":"YulFunctionCall","src":"1955:22:40"},{"name":"dataEnd","nativeSrc":"1979:7:40","nodeType":"YulIdentifier","src":"1979:7:40"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"1918:36:40","nodeType":"YulIdentifier","src":"1918:36:40"},"nativeSrc":"1918:69:40","nodeType":"YulFunctionCall","src":"1918:69:40"},"variableNames":[{"name":"value0","nativeSrc":"1908:6:40","nodeType":"YulIdentifier","src":"1908:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr","nativeSrc":"1633:360:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1698:9:40","nodeType":"YulTypedName","src":"1698:9:40","type":""},{"name":"dataEnd","nativeSrc":"1709:7:40","nodeType":"YulTypedName","src":"1709:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1721:6:40","nodeType":"YulTypedName","src":"1721:6:40","type":""}],"src":"1633:360:40"},{"body":{"nativeSrc":"2050:97:40","nodeType":"YulBlock","src":"2050:97:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2067:3:40","nodeType":"YulIdentifier","src":"2067:3:40"},{"arguments":[{"name":"value","nativeSrc":"2078:5:40","nodeType":"YulIdentifier","src":"2078:5:40"}],"functionName":{"name":"mload","nativeSrc":"2072:5:40","nodeType":"YulIdentifier","src":"2072:5:40"},"nativeSrc":"2072:12:40","nodeType":"YulFunctionCall","src":"2072:12:40"}],"functionName":{"name":"mstore","nativeSrc":"2060:6:40","nodeType":"YulIdentifier","src":"2060:6:40"},"nativeSrc":"2060:25:40","nodeType":"YulFunctionCall","src":"2060:25:40"},"nativeSrc":"2060:25:40","nodeType":"YulExpressionStatement","src":"2060:25:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2105:3:40","nodeType":"YulIdentifier","src":"2105:3:40"},{"kind":"number","nativeSrc":"2110:4:40","nodeType":"YulLiteral","src":"2110:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2101:3:40","nodeType":"YulIdentifier","src":"2101:3:40"},"nativeSrc":"2101:14:40","nodeType":"YulFunctionCall","src":"2101:14:40"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2127:5:40","nodeType":"YulIdentifier","src":"2127:5:40"},{"kind":"number","nativeSrc":"2134:4:40","nodeType":"YulLiteral","src":"2134:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2123:3:40","nodeType":"YulIdentifier","src":"2123:3:40"},"nativeSrc":"2123:16:40","nodeType":"YulFunctionCall","src":"2123:16:40"}],"functionName":{"name":"mload","nativeSrc":"2117:5:40","nodeType":"YulIdentifier","src":"2117:5:40"},"nativeSrc":"2117:23:40","nodeType":"YulFunctionCall","src":"2117:23:40"}],"functionName":{"name":"mstore","nativeSrc":"2094:6:40","nodeType":"YulIdentifier","src":"2094:6:40"},"nativeSrc":"2094:47:40","nodeType":"YulFunctionCall","src":"2094:47:40"},"nativeSrc":"2094:47:40","nodeType":"YulExpressionStatement","src":"2094:47:40"}]},"name":"abi_encode_struct_OFTLimit","nativeSrc":"1998:149:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2034:5:40","nodeType":"YulTypedName","src":"2034:5:40","type":""},{"name":"pos","nativeSrc":"2041:3:40","nodeType":"YulTypedName","src":"2041:3:40","type":""}],"src":"1998:149:40"},{"body":{"nativeSrc":"2527:925:40","nodeType":"YulBlock","src":"2527:925:40","statements":[{"nativeSrc":"2537:33:40","nodeType":"YulVariableDeclaration","src":"2537:33:40","value":{"arguments":[{"name":"headStart","nativeSrc":"2555:9:40","nodeType":"YulIdentifier","src":"2555:9:40"},{"kind":"number","nativeSrc":"2566:3:40","nodeType":"YulLiteral","src":"2566:3:40","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2551:3:40","nodeType":"YulIdentifier","src":"2551:3:40"},"nativeSrc":"2551:19:40","nodeType":"YulFunctionCall","src":"2551:19:40"},"variables":[{"name":"tail_1","nativeSrc":"2541:6:40","nodeType":"YulTypedName","src":"2541:6:40","type":""}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"2606:6:40","nodeType":"YulIdentifier","src":"2606:6:40"},{"name":"headStart","nativeSrc":"2614:9:40","nodeType":"YulIdentifier","src":"2614:9:40"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"2579:26:40","nodeType":"YulIdentifier","src":"2579:26:40"},"nativeSrc":"2579:45:40","nodeType":"YulFunctionCall","src":"2579:45:40"},"nativeSrc":"2579:45:40","nodeType":"YulExpressionStatement","src":"2579:45:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2644:9:40","nodeType":"YulIdentifier","src":"2644:9:40"},{"kind":"number","nativeSrc":"2655:2:40","nodeType":"YulLiteral","src":"2655:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2640:3:40","nodeType":"YulIdentifier","src":"2640:3:40"},"nativeSrc":"2640:18:40","nodeType":"YulFunctionCall","src":"2640:18:40"},{"kind":"number","nativeSrc":"2660:3:40","nodeType":"YulLiteral","src":"2660:3:40","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:40","nodeType":"YulIdentifier","src":"2633:6:40"},"nativeSrc":"2633:31:40","nodeType":"YulFunctionCall","src":"2633:31:40"},"nativeSrc":"2633:31:40","nodeType":"YulExpressionStatement","src":"2633:31:40"},{"nativeSrc":"2673:17:40","nodeType":"YulVariableDeclaration","src":"2673:17:40","value":{"name":"tail_1","nativeSrc":"2684:6:40","nodeType":"YulIdentifier","src":"2684:6:40"},"variables":[{"name":"pos","nativeSrc":"2677:3:40","nodeType":"YulTypedName","src":"2677:3:40","type":""}]},{"nativeSrc":"2699:27:40","nodeType":"YulVariableDeclaration","src":"2699:27:40","value":{"arguments":[{"name":"value1","nativeSrc":"2719:6:40","nodeType":"YulIdentifier","src":"2719:6:40"}],"functionName":{"name":"mload","nativeSrc":"2713:5:40","nodeType":"YulIdentifier","src":"2713:5:40"},"nativeSrc":"2713:13:40","nodeType":"YulFunctionCall","src":"2713:13:40"},"variables":[{"name":"length","nativeSrc":"2703:6:40","nodeType":"YulTypedName","src":"2703:6:40","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"2742:6:40","nodeType":"YulIdentifier","src":"2742:6:40"},{"name":"length","nativeSrc":"2750:6:40","nodeType":"YulIdentifier","src":"2750:6:40"}],"functionName":{"name":"mstore","nativeSrc":"2735:6:40","nodeType":"YulIdentifier","src":"2735:6:40"},"nativeSrc":"2735:22:40","nodeType":"YulFunctionCall","src":"2735:22:40"},"nativeSrc":"2735:22:40","nodeType":"YulExpressionStatement","src":"2735:22:40"},{"nativeSrc":"2766:26:40","nodeType":"YulAssignment","src":"2766:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"2777:9:40","nodeType":"YulIdentifier","src":"2777:9:40"},{"kind":"number","nativeSrc":"2788:3:40","nodeType":"YulLiteral","src":"2788:3:40","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2773:3:40","nodeType":"YulIdentifier","src":"2773:3:40"},"nativeSrc":"2773:19:40","nodeType":"YulFunctionCall","src":"2773:19:40"},"variableNames":[{"name":"pos","nativeSrc":"2766:3:40","nodeType":"YulIdentifier","src":"2766:3:40"}]},{"nativeSrc":"2801:54:40","nodeType":"YulVariableDeclaration","src":"2801:54:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2823:9:40","nodeType":"YulIdentifier","src":"2823:9:40"},{"arguments":[{"kind":"number","nativeSrc":"2838:1:40","nodeType":"YulLiteral","src":"2838:1:40","type":"","value":"5"},{"name":"length","nativeSrc":"2841:6:40","nodeType":"YulIdentifier","src":"2841:6:40"}],"functionName":{"name":"shl","nativeSrc":"2834:3:40","nodeType":"YulIdentifier","src":"2834:3:40"},"nativeSrc":"2834:14:40","nodeType":"YulFunctionCall","src":"2834:14:40"}],"functionName":{"name":"add","nativeSrc":"2819:3:40","nodeType":"YulIdentifier","src":"2819:3:40"},"nativeSrc":"2819:30:40","nodeType":"YulFunctionCall","src":"2819:30:40"},{"kind":"number","nativeSrc":"2851:3:40","nodeType":"YulLiteral","src":"2851:3:40","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2815:3:40","nodeType":"YulIdentifier","src":"2815:3:40"},"nativeSrc":"2815:40:40","nodeType":"YulFunctionCall","src":"2815:40:40"},"variables":[{"name":"tail_2","nativeSrc":"2805:6:40","nodeType":"YulTypedName","src":"2805:6:40","type":""}]},{"nativeSrc":"2864:31:40","nodeType":"YulVariableDeclaration","src":"2864:31:40","value":{"arguments":[{"name":"value1","nativeSrc":"2882:6:40","nodeType":"YulIdentifier","src":"2882:6:40"},{"kind":"number","nativeSrc":"2890:4:40","nodeType":"YulLiteral","src":"2890:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2878:3:40","nodeType":"YulIdentifier","src":"2878:3:40"},"nativeSrc":"2878:17:40","nodeType":"YulFunctionCall","src":"2878:17:40"},"variables":[{"name":"srcPtr","nativeSrc":"2868:6:40","nodeType":"YulTypedName","src":"2868:6:40","type":""}]},{"nativeSrc":"2904:10:40","nodeType":"YulVariableDeclaration","src":"2904:10:40","value":{"kind":"number","nativeSrc":"2913:1:40","nodeType":"YulLiteral","src":"2913:1:40","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2908:1:40","nodeType":"YulTypedName","src":"2908:1:40","type":""}]},{"body":{"nativeSrc":"2972:388:40","nodeType":"YulBlock","src":"2972:388:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2993:3:40","nodeType":"YulIdentifier","src":"2993:3:40"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"3006:6:40","nodeType":"YulIdentifier","src":"3006:6:40"},{"name":"headStart","nativeSrc":"3014:9:40","nodeType":"YulIdentifier","src":"3014:9:40"}],"functionName":{"name":"sub","nativeSrc":"3002:3:40","nodeType":"YulIdentifier","src":"3002:3:40"},"nativeSrc":"3002:22:40","nodeType":"YulFunctionCall","src":"3002:22:40"},{"arguments":[{"kind":"number","nativeSrc":"3030:3:40","nodeType":"YulLiteral","src":"3030:3:40","type":"","value":"191"}],"functionName":{"name":"not","nativeSrc":"3026:3:40","nodeType":"YulIdentifier","src":"3026:3:40"},"nativeSrc":"3026:8:40","nodeType":"YulFunctionCall","src":"3026:8:40"}],"functionName":{"name":"add","nativeSrc":"2998:3:40","nodeType":"YulIdentifier","src":"2998:3:40"},"nativeSrc":"2998:37:40","nodeType":"YulFunctionCall","src":"2998:37:40"}],"functionName":{"name":"mstore","nativeSrc":"2986:6:40","nodeType":"YulIdentifier","src":"2986:6:40"},"nativeSrc":"2986:50:40","nodeType":"YulFunctionCall","src":"2986:50:40"},"nativeSrc":"2986:50:40","nodeType":"YulExpressionStatement","src":"2986:50:40"},{"nativeSrc":"3049:23:40","nodeType":"YulVariableDeclaration","src":"3049:23:40","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3065:6:40","nodeType":"YulIdentifier","src":"3065:6:40"}],"functionName":{"name":"mload","nativeSrc":"3059:5:40","nodeType":"YulIdentifier","src":"3059:5:40"},"nativeSrc":"3059:13:40","nodeType":"YulFunctionCall","src":"3059:13:40"},"variables":[{"name":"_1","nativeSrc":"3053:2:40","nodeType":"YulTypedName","src":"3053:2:40","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"3092:6:40","nodeType":"YulIdentifier","src":"3092:6:40"},{"arguments":[{"name":"_1","nativeSrc":"3106:2:40","nodeType":"YulIdentifier","src":"3106:2:40"}],"functionName":{"name":"mload","nativeSrc":"3100:5:40","nodeType":"YulIdentifier","src":"3100:5:40"},"nativeSrc":"3100:9:40","nodeType":"YulFunctionCall","src":"3100:9:40"}],"functionName":{"name":"mstore","nativeSrc":"3085:6:40","nodeType":"YulIdentifier","src":"3085:6:40"},"nativeSrc":"3085:25:40","nodeType":"YulFunctionCall","src":"3085:25:40"},"nativeSrc":"3085:25:40","nodeType":"YulExpressionStatement","src":"3085:25:40"},{"nativeSrc":"3123:40:40","nodeType":"YulVariableDeclaration","src":"3123:40:40","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3153:2:40","nodeType":"YulIdentifier","src":"3153:2:40"},{"kind":"number","nativeSrc":"3157:4:40","nodeType":"YulLiteral","src":"3157:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3149:3:40","nodeType":"YulIdentifier","src":"3149:3:40"},"nativeSrc":"3149:13:40","nodeType":"YulFunctionCall","src":"3149:13:40"}],"functionName":{"name":"mload","nativeSrc":"3143:5:40","nodeType":"YulIdentifier","src":"3143:5:40"},"nativeSrc":"3143:20:40","nodeType":"YulFunctionCall","src":"3143:20:40"},"variables":[{"name":"memberValue0","nativeSrc":"3127:12:40","nodeType":"YulTypedName","src":"3127:12:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"3187:6:40","nodeType":"YulIdentifier","src":"3187:6:40"},{"kind":"number","nativeSrc":"3195:4:40","nodeType":"YulLiteral","src":"3195:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3183:3:40","nodeType":"YulIdentifier","src":"3183:3:40"},"nativeSrc":"3183:17:40","nodeType":"YulFunctionCall","src":"3183:17:40"},{"kind":"number","nativeSrc":"3202:2:40","nodeType":"YulLiteral","src":"3202:2:40","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"3176:6:40","nodeType":"YulIdentifier","src":"3176:6:40"},"nativeSrc":"3176:29:40","nodeType":"YulFunctionCall","src":"3176:29:40"},"nativeSrc":"3176:29:40","nodeType":"YulExpressionStatement","src":"3176:29:40"},{"nativeSrc":"3218:58:40","nodeType":"YulAssignment","src":"3218:58:40","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3246:12:40","nodeType":"YulIdentifier","src":"3246:12:40"},{"arguments":[{"name":"tail_2","nativeSrc":"3264:6:40","nodeType":"YulIdentifier","src":"3264:6:40"},{"kind":"number","nativeSrc":"3272:2:40","nodeType":"YulLiteral","src":"3272:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3260:3:40","nodeType":"YulIdentifier","src":"3260:3:40"},"nativeSrc":"3260:15:40","nodeType":"YulFunctionCall","src":"3260:15:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3228:17:40","nodeType":"YulIdentifier","src":"3228:17:40"},"nativeSrc":"3228:48:40","nodeType":"YulFunctionCall","src":"3228:48:40"},"variableNames":[{"name":"tail_2","nativeSrc":"3218:6:40","nodeType":"YulIdentifier","src":"3218:6:40"}]},{"nativeSrc":"3289:27:40","nodeType":"YulAssignment","src":"3289:27:40","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3303:6:40","nodeType":"YulIdentifier","src":"3303:6:40"},{"kind":"number","nativeSrc":"3311:4:40","nodeType":"YulLiteral","src":"3311:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3299:3:40","nodeType":"YulIdentifier","src":"3299:3:40"},"nativeSrc":"3299:17:40","nodeType":"YulFunctionCall","src":"3299:17:40"},"variableNames":[{"name":"srcPtr","nativeSrc":"3289:6:40","nodeType":"YulIdentifier","src":"3289:6:40"}]},{"nativeSrc":"3329:21:40","nodeType":"YulAssignment","src":"3329:21:40","value":{"arguments":[{"name":"pos","nativeSrc":"3340:3:40","nodeType":"YulIdentifier","src":"3340:3:40"},{"kind":"number","nativeSrc":"3345:4:40","nodeType":"YulLiteral","src":"3345:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3336:3:40","nodeType":"YulIdentifier","src":"3336:3:40"},"nativeSrc":"3336:14:40","nodeType":"YulFunctionCall","src":"3336:14:40"},"variableNames":[{"name":"pos","nativeSrc":"3329:3:40","nodeType":"YulIdentifier","src":"3329:3:40"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2934:1:40","nodeType":"YulIdentifier","src":"2934:1:40"},{"name":"length","nativeSrc":"2937:6:40","nodeType":"YulIdentifier","src":"2937:6:40"}],"functionName":{"name":"lt","nativeSrc":"2931:2:40","nodeType":"YulIdentifier","src":"2931:2:40"},"nativeSrc":"2931:13:40","nodeType":"YulFunctionCall","src":"2931:13:40"},"nativeSrc":"2923:437:40","nodeType":"YulForLoop","post":{"nativeSrc":"2945:18:40","nodeType":"YulBlock","src":"2945:18:40","statements":[{"nativeSrc":"2947:14:40","nodeType":"YulAssignment","src":"2947:14:40","value":{"arguments":[{"name":"i","nativeSrc":"2956:1:40","nodeType":"YulIdentifier","src":"2956:1:40"},{"kind":"number","nativeSrc":"2959:1:40","nodeType":"YulLiteral","src":"2959:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2952:3:40","nodeType":"YulIdentifier","src":"2952:3:40"},"nativeSrc":"2952:9:40","nodeType":"YulFunctionCall","src":"2952:9:40"},"variableNames":[{"name":"i","nativeSrc":"2947:1:40","nodeType":"YulIdentifier","src":"2947:1:40"}]}]},"pre":{"nativeSrc":"2927:3:40","nodeType":"YulBlock","src":"2927:3:40","statements":[]},"src":"2923:437:40"},{"nativeSrc":"3369:14:40","nodeType":"YulAssignment","src":"3369:14:40","value":{"name":"tail_2","nativeSrc":"3377:6:40","nodeType":"YulIdentifier","src":"3377:6:40"},"variableNames":[{"name":"tail","nativeSrc":"3369:4:40","nodeType":"YulIdentifier","src":"3369:4:40"}]},{"expression":{"arguments":[{"name":"value2","nativeSrc":"3419:6:40","nodeType":"YulIdentifier","src":"3419:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"3431:9:40","nodeType":"YulIdentifier","src":"3431:9:40"},{"kind":"number","nativeSrc":"3442:2:40","nodeType":"YulLiteral","src":"3442:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3427:3:40","nodeType":"YulIdentifier","src":"3427:3:40"},"nativeSrc":"3427:18:40","nodeType":"YulFunctionCall","src":"3427:18:40"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"3392:26:40","nodeType":"YulIdentifier","src":"3392:26:40"},"nativeSrc":"3392:54:40","nodeType":"YulFunctionCall","src":"3392:54:40"},"nativeSrc":"3392:54:40","nodeType":"YulExpressionStatement","src":"3392:54:40"}]},"name":"abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed","nativeSrc":"2152:1300:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2480:9:40","nodeType":"YulTypedName","src":"2480:9:40","type":""},{"name":"value2","nativeSrc":"2491:6:40","nodeType":"YulTypedName","src":"2491:6:40","type":""},{"name":"value1","nativeSrc":"2499:6:40","nodeType":"YulTypedName","src":"2499:6:40","type":""},{"name":"value0","nativeSrc":"2507:6:40","nodeType":"YulTypedName","src":"2507:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2518:4:40","nodeType":"YulTypedName","src":"2518:4:40","type":""}],"src":"2152:1300:40"},{"body":{"nativeSrc":"3558:102:40","nodeType":"YulBlock","src":"3558:102:40","statements":[{"nativeSrc":"3568:26:40","nodeType":"YulAssignment","src":"3568:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"3580:9:40","nodeType":"YulIdentifier","src":"3580:9:40"},{"kind":"number","nativeSrc":"3591:2:40","nodeType":"YulLiteral","src":"3591:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3576:3:40","nodeType":"YulIdentifier","src":"3576:3:40"},"nativeSrc":"3576:18:40","nodeType":"YulFunctionCall","src":"3576:18:40"},"variableNames":[{"name":"tail","nativeSrc":"3568:4:40","nodeType":"YulIdentifier","src":"3568:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3610:9:40","nodeType":"YulIdentifier","src":"3610:9:40"},{"arguments":[{"name":"value0","nativeSrc":"3625:6:40","nodeType":"YulIdentifier","src":"3625:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3641:3:40","nodeType":"YulLiteral","src":"3641:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"3646:1:40","nodeType":"YulLiteral","src":"3646:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3637:3:40","nodeType":"YulIdentifier","src":"3637:3:40"},"nativeSrc":"3637:11:40","nodeType":"YulFunctionCall","src":"3637:11:40"},{"kind":"number","nativeSrc":"3650:1:40","nodeType":"YulLiteral","src":"3650:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3633:3:40","nodeType":"YulIdentifier","src":"3633:3:40"},"nativeSrc":"3633:19:40","nodeType":"YulFunctionCall","src":"3633:19:40"}],"functionName":{"name":"and","nativeSrc":"3621:3:40","nodeType":"YulIdentifier","src":"3621:3:40"},"nativeSrc":"3621:32:40","nodeType":"YulFunctionCall","src":"3621:32:40"}],"functionName":{"name":"mstore","nativeSrc":"3603:6:40","nodeType":"YulIdentifier","src":"3603:6:40"},"nativeSrc":"3603:51:40","nodeType":"YulFunctionCall","src":"3603:51:40"},"nativeSrc":"3603:51:40","nodeType":"YulExpressionStatement","src":"3603:51:40"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3457:203:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3527:9:40","nodeType":"YulTypedName","src":"3527:9:40","type":""},{"name":"value0","nativeSrc":"3538:6:40","nodeType":"YulTypedName","src":"3538:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3549:4:40","nodeType":"YulTypedName","src":"3549:4:40","type":""}],"src":"3457:203:40"},{"body":{"nativeSrc":"3734:85:40","nodeType":"YulBlock","src":"3734:85:40","statements":[{"body":{"nativeSrc":"3773:16:40","nodeType":"YulBlock","src":"3773:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3782:1:40","nodeType":"YulLiteral","src":"3782:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"3785:1:40","nodeType":"YulLiteral","src":"3785:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3775:6:40","nodeType":"YulIdentifier","src":"3775:6:40"},"nativeSrc":"3775:12:40","nodeType":"YulFunctionCall","src":"3775:12:40"},"nativeSrc":"3775:12:40","nodeType":"YulExpressionStatement","src":"3775:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"3755:3:40","nodeType":"YulIdentifier","src":"3755:3:40"},{"name":"offset","nativeSrc":"3760:6:40","nodeType":"YulIdentifier","src":"3760:6:40"}],"functionName":{"name":"sub","nativeSrc":"3751:3:40","nodeType":"YulIdentifier","src":"3751:3:40"},"nativeSrc":"3751:16:40","nodeType":"YulFunctionCall","src":"3751:16:40"},{"kind":"number","nativeSrc":"3769:2:40","nodeType":"YulLiteral","src":"3769:2:40","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3747:3:40","nodeType":"YulIdentifier","src":"3747:3:40"},"nativeSrc":"3747:25:40","nodeType":"YulFunctionCall","src":"3747:25:40"},"nativeSrc":"3744:45:40","nodeType":"YulIf","src":"3744:45:40"},{"nativeSrc":"3798:15:40","nodeType":"YulAssignment","src":"3798:15:40","value":{"name":"offset","nativeSrc":"3807:6:40","nodeType":"YulIdentifier","src":"3807:6:40"},"variableNames":[{"name":"value","nativeSrc":"3798:5:40","nodeType":"YulIdentifier","src":"3798:5:40"}]}]},"name":"abi_decode_struct_Origin_calldata","nativeSrc":"3665:154:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3708:6:40","nodeType":"YulTypedName","src":"3708:6:40","type":""},{"name":"end","nativeSrc":"3716:3:40","nodeType":"YulTypedName","src":"3716:3:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3724:5:40","nodeType":"YulTypedName","src":"3724:5:40","type":""}],"src":"3665:154:40"},{"body":{"nativeSrc":"3896:275:40","nodeType":"YulBlock","src":"3896:275:40","statements":[{"body":{"nativeSrc":"3945:16:40","nodeType":"YulBlock","src":"3945:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3954:1:40","nodeType":"YulLiteral","src":"3954:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"3957:1:40","nodeType":"YulLiteral","src":"3957:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3947:6:40","nodeType":"YulIdentifier","src":"3947:6:40"},"nativeSrc":"3947:12:40","nodeType":"YulFunctionCall","src":"3947:12:40"},"nativeSrc":"3947:12:40","nodeType":"YulExpressionStatement","src":"3947:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3924:6:40","nodeType":"YulIdentifier","src":"3924:6:40"},{"kind":"number","nativeSrc":"3932:4:40","nodeType":"YulLiteral","src":"3932:4:40","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3920:3:40","nodeType":"YulIdentifier","src":"3920:3:40"},"nativeSrc":"3920:17:40","nodeType":"YulFunctionCall","src":"3920:17:40"},{"name":"end","nativeSrc":"3939:3:40","nodeType":"YulIdentifier","src":"3939:3:40"}],"functionName":{"name":"slt","nativeSrc":"3916:3:40","nodeType":"YulIdentifier","src":"3916:3:40"},"nativeSrc":"3916:27:40","nodeType":"YulFunctionCall","src":"3916:27:40"}],"functionName":{"name":"iszero","nativeSrc":"3909:6:40","nodeType":"YulIdentifier","src":"3909:6:40"},"nativeSrc":"3909:35:40","nodeType":"YulFunctionCall","src":"3909:35:40"},"nativeSrc":"3906:55:40","nodeType":"YulIf","src":"3906:55:40"},{"nativeSrc":"3970:30:40","nodeType":"YulAssignment","src":"3970:30:40","value":{"arguments":[{"name":"offset","nativeSrc":"3993:6:40","nodeType":"YulIdentifier","src":"3993:6:40"}],"functionName":{"name":"calldataload","nativeSrc":"3980:12:40","nodeType":"YulIdentifier","src":"3980:12:40"},"nativeSrc":"3980:20:40","nodeType":"YulFunctionCall","src":"3980:20:40"},"variableNames":[{"name":"length","nativeSrc":"3970:6:40","nodeType":"YulIdentifier","src":"3970:6:40"}]},{"body":{"nativeSrc":"4043:16:40","nodeType":"YulBlock","src":"4043:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4052:1:40","nodeType":"YulLiteral","src":"4052:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4055:1:40","nodeType":"YulLiteral","src":"4055:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4045:6:40","nodeType":"YulIdentifier","src":"4045:6:40"},"nativeSrc":"4045:12:40","nodeType":"YulFunctionCall","src":"4045:12:40"},"nativeSrc":"4045:12:40","nodeType":"YulExpressionStatement","src":"4045:12:40"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4015:6:40","nodeType":"YulIdentifier","src":"4015:6:40"},{"kind":"number","nativeSrc":"4023:18:40","nodeType":"YulLiteral","src":"4023:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4012:2:40","nodeType":"YulIdentifier","src":"4012:2:40"},"nativeSrc":"4012:30:40","nodeType":"YulFunctionCall","src":"4012:30:40"},"nativeSrc":"4009:50:40","nodeType":"YulIf","src":"4009:50:40"},{"nativeSrc":"4068:29:40","nodeType":"YulAssignment","src":"4068:29:40","value":{"arguments":[{"name":"offset","nativeSrc":"4084:6:40","nodeType":"YulIdentifier","src":"4084:6:40"},{"kind":"number","nativeSrc":"4092:4:40","nodeType":"YulLiteral","src":"4092:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4080:3:40","nodeType":"YulIdentifier","src":"4080:3:40"},"nativeSrc":"4080:17:40","nodeType":"YulFunctionCall","src":"4080:17:40"},"variableNames":[{"name":"arrayPos","nativeSrc":"4068:8:40","nodeType":"YulIdentifier","src":"4068:8:40"}]},{"body":{"nativeSrc":"4149:16:40","nodeType":"YulBlock","src":"4149:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4158:1:40","nodeType":"YulLiteral","src":"4158:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4161:1:40","nodeType":"YulLiteral","src":"4161:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4151:6:40","nodeType":"YulIdentifier","src":"4151:6:40"},"nativeSrc":"4151:12:40","nodeType":"YulFunctionCall","src":"4151:12:40"},"nativeSrc":"4151:12:40","nodeType":"YulExpressionStatement","src":"4151:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4120:6:40","nodeType":"YulIdentifier","src":"4120:6:40"},{"name":"length","nativeSrc":"4128:6:40","nodeType":"YulIdentifier","src":"4128:6:40"}],"functionName":{"name":"add","nativeSrc":"4116:3:40","nodeType":"YulIdentifier","src":"4116:3:40"},"nativeSrc":"4116:19:40","nodeType":"YulFunctionCall","src":"4116:19:40"},{"kind":"number","nativeSrc":"4137:4:40","nodeType":"YulLiteral","src":"4137:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4112:3:40","nodeType":"YulIdentifier","src":"4112:3:40"},"nativeSrc":"4112:30:40","nodeType":"YulFunctionCall","src":"4112:30:40"},{"name":"end","nativeSrc":"4144:3:40","nodeType":"YulIdentifier","src":"4144:3:40"}],"functionName":{"name":"gt","nativeSrc":"4109:2:40","nodeType":"YulIdentifier","src":"4109:2:40"},"nativeSrc":"4109:39:40","nodeType":"YulFunctionCall","src":"4109:39:40"},"nativeSrc":"4106:59:40","nodeType":"YulIf","src":"4106:59:40"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"3824:347:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3859:6:40","nodeType":"YulTypedName","src":"3859:6:40","type":""},{"name":"end","nativeSrc":"3867:3:40","nodeType":"YulTypedName","src":"3867:3:40","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"3875:8:40","nodeType":"YulTypedName","src":"3875:8:40","type":""},{"name":"length","nativeSrc":"3885:6:40","nodeType":"YulTypedName","src":"3885:6:40","type":""}],"src":"3824:347:40"},{"body":{"nativeSrc":"4376:893:40","nodeType":"YulBlock","src":"4376:893:40","statements":[{"body":{"nativeSrc":"4423:16:40","nodeType":"YulBlock","src":"4423:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4432:1:40","nodeType":"YulLiteral","src":"4432:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4435:1:40","nodeType":"YulLiteral","src":"4435:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4425:6:40","nodeType":"YulIdentifier","src":"4425:6:40"},"nativeSrc":"4425:12:40","nodeType":"YulFunctionCall","src":"4425:12:40"},"nativeSrc":"4425:12:40","nodeType":"YulExpressionStatement","src":"4425:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4397:7:40","nodeType":"YulIdentifier","src":"4397:7:40"},{"name":"headStart","nativeSrc":"4406:9:40","nodeType":"YulIdentifier","src":"4406:9:40"}],"functionName":{"name":"sub","nativeSrc":"4393:3:40","nodeType":"YulIdentifier","src":"4393:3:40"},"nativeSrc":"4393:23:40","nodeType":"YulFunctionCall","src":"4393:23:40"},{"kind":"number","nativeSrc":"4418:3:40","nodeType":"YulLiteral","src":"4418:3:40","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"4389:3:40","nodeType":"YulIdentifier","src":"4389:3:40"},"nativeSrc":"4389:33:40","nodeType":"YulFunctionCall","src":"4389:33:40"},"nativeSrc":"4386:53:40","nodeType":"YulIf","src":"4386:53:40"},{"nativeSrc":"4448:63:40","nodeType":"YulAssignment","src":"4448:63:40","value":{"arguments":[{"name":"headStart","nativeSrc":"4492:9:40","nodeType":"YulIdentifier","src":"4492:9:40"},{"name":"dataEnd","nativeSrc":"4503:7:40","nodeType":"YulIdentifier","src":"4503:7:40"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"4458:33:40","nodeType":"YulIdentifier","src":"4458:33:40"},"nativeSrc":"4458:53:40","nodeType":"YulFunctionCall","src":"4458:53:40"},"variableNames":[{"name":"value0","nativeSrc":"4448:6:40","nodeType":"YulIdentifier","src":"4448:6:40"}]},{"nativeSrc":"4520:14:40","nodeType":"YulVariableDeclaration","src":"4520:14:40","value":{"kind":"number","nativeSrc":"4533:1:40","nodeType":"YulLiteral","src":"4533:1:40","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4524:5:40","nodeType":"YulTypedName","src":"4524:5:40","type":""}]},{"nativeSrc":"4543:41:40","nodeType":"YulAssignment","src":"4543:41:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4569:9:40","nodeType":"YulIdentifier","src":"4569:9:40"},{"kind":"number","nativeSrc":"4580:2:40","nodeType":"YulLiteral","src":"4580:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4565:3:40","nodeType":"YulIdentifier","src":"4565:3:40"},"nativeSrc":"4565:18:40","nodeType":"YulFunctionCall","src":"4565:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"4552:12:40","nodeType":"YulIdentifier","src":"4552:12:40"},"nativeSrc":"4552:32:40","nodeType":"YulFunctionCall","src":"4552:32:40"},"variableNames":[{"name":"value","nativeSrc":"4543:5:40","nodeType":"YulIdentifier","src":"4543:5:40"}]},{"nativeSrc":"4593:15:40","nodeType":"YulAssignment","src":"4593:15:40","value":{"name":"value","nativeSrc":"4603:5:40","nodeType":"YulIdentifier","src":"4603:5:40"},"variableNames":[{"name":"value1","nativeSrc":"4593:6:40","nodeType":"YulIdentifier","src":"4593:6:40"}]},{"nativeSrc":"4617:47:40","nodeType":"YulVariableDeclaration","src":"4617:47:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4648:9:40","nodeType":"YulIdentifier","src":"4648:9:40"},{"kind":"number","nativeSrc":"4659:3:40","nodeType":"YulLiteral","src":"4659:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4644:3:40","nodeType":"YulIdentifier","src":"4644:3:40"},"nativeSrc":"4644:19:40","nodeType":"YulFunctionCall","src":"4644:19:40"}],"functionName":{"name":"calldataload","nativeSrc":"4631:12:40","nodeType":"YulIdentifier","src":"4631:12:40"},"nativeSrc":"4631:33:40","nodeType":"YulFunctionCall","src":"4631:33:40"},"variables":[{"name":"offset","nativeSrc":"4621:6:40","nodeType":"YulTypedName","src":"4621:6:40","type":""}]},{"body":{"nativeSrc":"4707:16:40","nodeType":"YulBlock","src":"4707:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4716:1:40","nodeType":"YulLiteral","src":"4716:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"4719:1:40","nodeType":"YulLiteral","src":"4719:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4709:6:40","nodeType":"YulIdentifier","src":"4709:6:40"},"nativeSrc":"4709:12:40","nodeType":"YulFunctionCall","src":"4709:12:40"},"nativeSrc":"4709:12:40","nodeType":"YulExpressionStatement","src":"4709:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4679:6:40","nodeType":"YulIdentifier","src":"4679:6:40"},{"kind":"number","nativeSrc":"4687:18:40","nodeType":"YulLiteral","src":"4687:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4676:2:40","nodeType":"YulIdentifier","src":"4676:2:40"},"nativeSrc":"4676:30:40","nodeType":"YulFunctionCall","src":"4676:30:40"},"nativeSrc":"4673:50:40","nodeType":"YulIf","src":"4673:50:40"},{"nativeSrc":"4732:84:40","nodeType":"YulVariableDeclaration","src":"4732:84:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4788:9:40","nodeType":"YulIdentifier","src":"4788:9:40"},{"name":"offset","nativeSrc":"4799:6:40","nodeType":"YulIdentifier","src":"4799:6:40"}],"functionName":{"name":"add","nativeSrc":"4784:3:40","nodeType":"YulIdentifier","src":"4784:3:40"},"nativeSrc":"4784:22:40","nodeType":"YulFunctionCall","src":"4784:22:40"},{"name":"dataEnd","nativeSrc":"4808:7:40","nodeType":"YulIdentifier","src":"4808:7:40"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"4758:25:40","nodeType":"YulIdentifier","src":"4758:25:40"},"nativeSrc":"4758:58:40","nodeType":"YulFunctionCall","src":"4758:58:40"},"variables":[{"name":"value2_1","nativeSrc":"4736:8:40","nodeType":"YulTypedName","src":"4736:8:40","type":""},{"name":"value3_1","nativeSrc":"4746:8:40","nodeType":"YulTypedName","src":"4746:8:40","type":""}]},{"nativeSrc":"4825:18:40","nodeType":"YulAssignment","src":"4825:18:40","value":{"name":"value2_1","nativeSrc":"4835:8:40","nodeType":"YulIdentifier","src":"4835:8:40"},"variableNames":[{"name":"value2","nativeSrc":"4825:6:40","nodeType":"YulIdentifier","src":"4825:6:40"}]},{"nativeSrc":"4852:18:40","nodeType":"YulAssignment","src":"4852:18:40","value":{"name":"value3_1","nativeSrc":"4862:8:40","nodeType":"YulIdentifier","src":"4862:8:40"},"variableNames":[{"name":"value3","nativeSrc":"4852:6:40","nodeType":"YulIdentifier","src":"4852:6:40"}]},{"nativeSrc":"4879:48:40","nodeType":"YulVariableDeclaration","src":"4879:48:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4911:9:40","nodeType":"YulIdentifier","src":"4911:9:40"},{"kind":"number","nativeSrc":"4922:3:40","nodeType":"YulLiteral","src":"4922:3:40","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"4907:3:40","nodeType":"YulIdentifier","src":"4907:3:40"},"nativeSrc":"4907:19:40","nodeType":"YulFunctionCall","src":"4907:19:40"}],"functionName":{"name":"calldataload","nativeSrc":"4894:12:40","nodeType":"YulIdentifier","src":"4894:12:40"},"nativeSrc":"4894:33:40","nodeType":"YulFunctionCall","src":"4894:33:40"},"variables":[{"name":"value_1","nativeSrc":"4883:7:40","nodeType":"YulTypedName","src":"4883:7:40","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"4961:7:40","nodeType":"YulIdentifier","src":"4961:7:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4936:24:40","nodeType":"YulIdentifier","src":"4936:24:40"},"nativeSrc":"4936:33:40","nodeType":"YulFunctionCall","src":"4936:33:40"},"nativeSrc":"4936:33:40","nodeType":"YulExpressionStatement","src":"4936:33:40"},{"nativeSrc":"4978:17:40","nodeType":"YulAssignment","src":"4978:17:40","value":{"name":"value_1","nativeSrc":"4988:7:40","nodeType":"YulIdentifier","src":"4988:7:40"},"variableNames":[{"name":"value4","nativeSrc":"4978:6:40","nodeType":"YulIdentifier","src":"4978:6:40"}]},{"nativeSrc":"5004:49:40","nodeType":"YulVariableDeclaration","src":"5004:49:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5037:9:40","nodeType":"YulIdentifier","src":"5037:9:40"},{"kind":"number","nativeSrc":"5048:3:40","nodeType":"YulLiteral","src":"5048:3:40","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"5033:3:40","nodeType":"YulIdentifier","src":"5033:3:40"},"nativeSrc":"5033:19:40","nodeType":"YulFunctionCall","src":"5033:19:40"}],"functionName":{"name":"calldataload","nativeSrc":"5020:12:40","nodeType":"YulIdentifier","src":"5020:12:40"},"nativeSrc":"5020:33:40","nodeType":"YulFunctionCall","src":"5020:33:40"},"variables":[{"name":"offset_1","nativeSrc":"5008:8:40","nodeType":"YulTypedName","src":"5008:8:40","type":""}]},{"body":{"nativeSrc":"5098:16:40","nodeType":"YulBlock","src":"5098:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5107:1:40","nodeType":"YulLiteral","src":"5107:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"5110:1:40","nodeType":"YulLiteral","src":"5110:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5100:6:40","nodeType":"YulIdentifier","src":"5100:6:40"},"nativeSrc":"5100:12:40","nodeType":"YulFunctionCall","src":"5100:12:40"},"nativeSrc":"5100:12:40","nodeType":"YulExpressionStatement","src":"5100:12:40"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"5068:8:40","nodeType":"YulIdentifier","src":"5068:8:40"},{"kind":"number","nativeSrc":"5078:18:40","nodeType":"YulLiteral","src":"5078:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5065:2:40","nodeType":"YulIdentifier","src":"5065:2:40"},"nativeSrc":"5065:32:40","nodeType":"YulFunctionCall","src":"5065:32:40"},"nativeSrc":"5062:52:40","nodeType":"YulIf","src":"5062:52:40"},{"nativeSrc":"5123:86:40","nodeType":"YulVariableDeclaration","src":"5123:86:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5179:9:40","nodeType":"YulIdentifier","src":"5179:9:40"},{"name":"offset_1","nativeSrc":"5190:8:40","nodeType":"YulIdentifier","src":"5190:8:40"}],"functionName":{"name":"add","nativeSrc":"5175:3:40","nodeType":"YulIdentifier","src":"5175:3:40"},"nativeSrc":"5175:24:40","nodeType":"YulFunctionCall","src":"5175:24:40"},{"name":"dataEnd","nativeSrc":"5201:7:40","nodeType":"YulIdentifier","src":"5201:7:40"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"5149:25:40","nodeType":"YulIdentifier","src":"5149:25:40"},"nativeSrc":"5149:60:40","nodeType":"YulFunctionCall","src":"5149:60:40"},"variables":[{"name":"value5_1","nativeSrc":"5127:8:40","nodeType":"YulTypedName","src":"5127:8:40","type":""},{"name":"value6_1","nativeSrc":"5137:8:40","nodeType":"YulTypedName","src":"5137:8:40","type":""}]},{"nativeSrc":"5218:18:40","nodeType":"YulAssignment","src":"5218:18:40","value":{"name":"value5_1","nativeSrc":"5228:8:40","nodeType":"YulIdentifier","src":"5228:8:40"},"variableNames":[{"name":"value5","nativeSrc":"5218:6:40","nodeType":"YulIdentifier","src":"5218:6:40"}]},{"nativeSrc":"5245:18:40","nodeType":"YulAssignment","src":"5245:18:40","value":{"name":"value6_1","nativeSrc":"5255:8:40","nodeType":"YulIdentifier","src":"5255:8:40"},"variableNames":[{"name":"value6","nativeSrc":"5245:6:40","nodeType":"YulIdentifier","src":"5245:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr","nativeSrc":"4176:1093:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4294:9:40","nodeType":"YulTypedName","src":"4294:9:40","type":""},{"name":"dataEnd","nativeSrc":"4305:7:40","nodeType":"YulTypedName","src":"4305:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4317:6:40","nodeType":"YulTypedName","src":"4317:6:40","type":""},{"name":"value1","nativeSrc":"4325:6:40","nodeType":"YulTypedName","src":"4325:6:40","type":""},{"name":"value2","nativeSrc":"4333:6:40","nodeType":"YulTypedName","src":"4333:6:40","type":""},{"name":"value3","nativeSrc":"4341:6:40","nodeType":"YulTypedName","src":"4341:6:40","type":""},{"name":"value4","nativeSrc":"4349:6:40","nodeType":"YulTypedName","src":"4349:6:40","type":""},{"name":"value5","nativeSrc":"4357:6:40","nodeType":"YulTypedName","src":"4357:6:40","type":""},{"name":"value6","nativeSrc":"4365:6:40","nodeType":"YulTypedName","src":"4365:6:40","type":""}],"src":"4176:1093:40"},{"body":{"nativeSrc":"5373:89:40","nodeType":"YulBlock","src":"5373:89:40","statements":[{"nativeSrc":"5383:26:40","nodeType":"YulAssignment","src":"5383:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"5395:9:40","nodeType":"YulIdentifier","src":"5395:9:40"},{"kind":"number","nativeSrc":"5406:2:40","nodeType":"YulLiteral","src":"5406:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5391:3:40","nodeType":"YulIdentifier","src":"5391:3:40"},"nativeSrc":"5391:18:40","nodeType":"YulFunctionCall","src":"5391:18:40"},"variableNames":[{"name":"tail","nativeSrc":"5383:4:40","nodeType":"YulIdentifier","src":"5383:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5425:9:40","nodeType":"YulIdentifier","src":"5425:9:40"},{"arguments":[{"name":"value0","nativeSrc":"5440:6:40","nodeType":"YulIdentifier","src":"5440:6:40"},{"kind":"number","nativeSrc":"5448:6:40","nodeType":"YulLiteral","src":"5448:6:40","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"5436:3:40","nodeType":"YulIdentifier","src":"5436:3:40"},"nativeSrc":"5436:19:40","nodeType":"YulFunctionCall","src":"5436:19:40"}],"functionName":{"name":"mstore","nativeSrc":"5418:6:40","nodeType":"YulIdentifier","src":"5418:6:40"},"nativeSrc":"5418:38:40","nodeType":"YulFunctionCall","src":"5418:38:40"},"nativeSrc":"5418:38:40","nodeType":"YulExpressionStatement","src":"5418:38:40"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nativeSrc":"5274:188:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5342:9:40","nodeType":"YulTypedName","src":"5342:9:40","type":""},{"name":"value0","nativeSrc":"5353:6:40","nodeType":"YulTypedName","src":"5353:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5364:4:40","nodeType":"YulTypedName","src":"5364:4:40","type":""}],"src":"5274:188:40"},{"body":{"nativeSrc":"5592:171:40","nodeType":"YulBlock","src":"5592:171:40","statements":[{"nativeSrc":"5602:26:40","nodeType":"YulAssignment","src":"5602:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"5614:9:40","nodeType":"YulIdentifier","src":"5614:9:40"},{"kind":"number","nativeSrc":"5625:2:40","nodeType":"YulLiteral","src":"5625:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5610:3:40","nodeType":"YulIdentifier","src":"5610:3:40"},"nativeSrc":"5610:18:40","nodeType":"YulFunctionCall","src":"5610:18:40"},"variableNames":[{"name":"tail","nativeSrc":"5602:4:40","nodeType":"YulIdentifier","src":"5602:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5644:9:40","nodeType":"YulIdentifier","src":"5644:9:40"},{"arguments":[{"name":"value0","nativeSrc":"5659:6:40","nodeType":"YulIdentifier","src":"5659:6:40"},{"arguments":[{"kind":"number","nativeSrc":"5671:3:40","nodeType":"YulLiteral","src":"5671:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"5676:10:40","nodeType":"YulLiteral","src":"5676:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"5667:3:40","nodeType":"YulIdentifier","src":"5667:3:40"},"nativeSrc":"5667:20:40","nodeType":"YulFunctionCall","src":"5667:20:40"}],"functionName":{"name":"and","nativeSrc":"5655:3:40","nodeType":"YulIdentifier","src":"5655:3:40"},"nativeSrc":"5655:33:40","nodeType":"YulFunctionCall","src":"5655:33:40"}],"functionName":{"name":"mstore","nativeSrc":"5637:6:40","nodeType":"YulIdentifier","src":"5637:6:40"},"nativeSrc":"5637:52:40","nodeType":"YulFunctionCall","src":"5637:52:40"},"nativeSrc":"5637:52:40","nodeType":"YulExpressionStatement","src":"5637:52:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5709:9:40","nodeType":"YulIdentifier","src":"5709:9:40"},{"kind":"number","nativeSrc":"5720:2:40","nodeType":"YulLiteral","src":"5720:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5705:3:40","nodeType":"YulIdentifier","src":"5705:3:40"},"nativeSrc":"5705:18:40","nodeType":"YulFunctionCall","src":"5705:18:40"},{"arguments":[{"name":"value1","nativeSrc":"5729:6:40","nodeType":"YulIdentifier","src":"5729:6:40"},{"kind":"number","nativeSrc":"5737:18:40","nodeType":"YulLiteral","src":"5737:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5725:3:40","nodeType":"YulIdentifier","src":"5725:3:40"},"nativeSrc":"5725:31:40","nodeType":"YulFunctionCall","src":"5725:31:40"}],"functionName":{"name":"mstore","nativeSrc":"5698:6:40","nodeType":"YulIdentifier","src":"5698:6:40"},"nativeSrc":"5698:59:40","nodeType":"YulFunctionCall","src":"5698:59:40"},"nativeSrc":"5698:59:40","nodeType":"YulExpressionStatement","src":"5698:59:40"}]},"name":"abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed","nativeSrc":"5467:296:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5553:9:40","nodeType":"YulTypedName","src":"5553:9:40","type":""},{"name":"value1","nativeSrc":"5564:6:40","nodeType":"YulTypedName","src":"5564:6:40","type":""},{"name":"value0","nativeSrc":"5572:6:40","nodeType":"YulTypedName","src":"5572:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5583:4:40","nodeType":"YulTypedName","src":"5583:4:40","type":""}],"src":"5467:296:40"},{"body":{"nativeSrc":"5893:169:40","nodeType":"YulBlock","src":"5893:169:40","statements":[{"nativeSrc":"5903:26:40","nodeType":"YulAssignment","src":"5903:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"5915:9:40","nodeType":"YulIdentifier","src":"5915:9:40"},{"kind":"number","nativeSrc":"5926:2:40","nodeType":"YulLiteral","src":"5926:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5911:3:40","nodeType":"YulIdentifier","src":"5911:3:40"},"nativeSrc":"5911:18:40","nodeType":"YulFunctionCall","src":"5911:18:40"},"variableNames":[{"name":"tail","nativeSrc":"5903:4:40","nodeType":"YulIdentifier","src":"5903:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5945:9:40","nodeType":"YulIdentifier","src":"5945:9:40"},{"arguments":[{"name":"value0","nativeSrc":"5960:6:40","nodeType":"YulIdentifier","src":"5960:6:40"},{"kind":"number","nativeSrc":"5968:18:40","nodeType":"YulLiteral","src":"5968:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5956:3:40","nodeType":"YulIdentifier","src":"5956:3:40"},"nativeSrc":"5956:31:40","nodeType":"YulFunctionCall","src":"5956:31:40"}],"functionName":{"name":"mstore","nativeSrc":"5938:6:40","nodeType":"YulIdentifier","src":"5938:6:40"},"nativeSrc":"5938:50:40","nodeType":"YulFunctionCall","src":"5938:50:40"},"nativeSrc":"5938:50:40","nodeType":"YulExpressionStatement","src":"5938:50:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6008:9:40","nodeType":"YulIdentifier","src":"6008:9:40"},{"kind":"number","nativeSrc":"6019:2:40","nodeType":"YulLiteral","src":"6019:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6004:3:40","nodeType":"YulIdentifier","src":"6004:3:40"},"nativeSrc":"6004:18:40","nodeType":"YulFunctionCall","src":"6004:18:40"},{"arguments":[{"name":"value1","nativeSrc":"6028:6:40","nodeType":"YulIdentifier","src":"6028:6:40"},{"kind":"number","nativeSrc":"6036:18:40","nodeType":"YulLiteral","src":"6036:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"6024:3:40","nodeType":"YulIdentifier","src":"6024:3:40"},"nativeSrc":"6024:31:40","nodeType":"YulFunctionCall","src":"6024:31:40"}],"functionName":{"name":"mstore","nativeSrc":"5997:6:40","nodeType":"YulIdentifier","src":"5997:6:40"},"nativeSrc":"5997:59:40","nodeType":"YulFunctionCall","src":"5997:59:40"},"nativeSrc":"5997:59:40","nodeType":"YulExpressionStatement","src":"5997:59:40"}]},"name":"abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed","nativeSrc":"5768:294:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5854:9:40","nodeType":"YulTypedName","src":"5854:9:40","type":""},{"name":"value1","nativeSrc":"5865:6:40","nodeType":"YulTypedName","src":"5865:6:40","type":""},{"name":"value0","nativeSrc":"5873:6:40","nodeType":"YulTypedName","src":"5873:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5884:4:40","nodeType":"YulTypedName","src":"5884:4:40","type":""}],"src":"5768:294:40"},{"body":{"nativeSrc":"6168:76:40","nodeType":"YulBlock","src":"6168:76:40","statements":[{"nativeSrc":"6178:26:40","nodeType":"YulAssignment","src":"6178:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"6190:9:40","nodeType":"YulIdentifier","src":"6190:9:40"},{"kind":"number","nativeSrc":"6201:2:40","nodeType":"YulLiteral","src":"6201:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6186:3:40","nodeType":"YulIdentifier","src":"6186:3:40"},"nativeSrc":"6186:18:40","nodeType":"YulFunctionCall","src":"6186:18:40"},"variableNames":[{"name":"tail","nativeSrc":"6178:4:40","nodeType":"YulIdentifier","src":"6178:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:40","nodeType":"YulIdentifier","src":"6220:9:40"},{"name":"value0","nativeSrc":"6231:6:40","nodeType":"YulIdentifier","src":"6231:6:40"}],"functionName":{"name":"mstore","nativeSrc":"6213:6:40","nodeType":"YulIdentifier","src":"6213:6:40"},"nativeSrc":"6213:25:40","nodeType":"YulFunctionCall","src":"6213:25:40"},"nativeSrc":"6213:25:40","nodeType":"YulExpressionStatement","src":"6213:25:40"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"6067:177:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6137:9:40","nodeType":"YulTypedName","src":"6137:9:40","type":""},{"name":"value0","nativeSrc":"6148:6:40","nodeType":"YulTypedName","src":"6148:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6159:4:40","nodeType":"YulTypedName","src":"6159:4:40","type":""}],"src":"6067:177:40"},{"body":{"nativeSrc":"6353:404:40","nodeType":"YulBlock","src":"6353:404:40","statements":[{"body":{"nativeSrc":"6399:16:40","nodeType":"YulBlock","src":"6399:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6408:1:40","nodeType":"YulLiteral","src":"6408:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"6411:1:40","nodeType":"YulLiteral","src":"6411:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6401:6:40","nodeType":"YulIdentifier","src":"6401:6:40"},"nativeSrc":"6401:12:40","nodeType":"YulFunctionCall","src":"6401:12:40"},"nativeSrc":"6401:12:40","nodeType":"YulExpressionStatement","src":"6401:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6374:7:40","nodeType":"YulIdentifier","src":"6374:7:40"},{"name":"headStart","nativeSrc":"6383:9:40","nodeType":"YulIdentifier","src":"6383:9:40"}],"functionName":{"name":"sub","nativeSrc":"6370:3:40","nodeType":"YulIdentifier","src":"6370:3:40"},"nativeSrc":"6370:23:40","nodeType":"YulFunctionCall","src":"6370:23:40"},{"kind":"number","nativeSrc":"6395:2:40","nodeType":"YulLiteral","src":"6395:2:40","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6366:3:40","nodeType":"YulIdentifier","src":"6366:3:40"},"nativeSrc":"6366:32:40","nodeType":"YulFunctionCall","src":"6366:32:40"},"nativeSrc":"6363:52:40","nodeType":"YulIf","src":"6363:52:40"},{"nativeSrc":"6424:36:40","nodeType":"YulVariableDeclaration","src":"6424:36:40","value":{"arguments":[{"name":"headStart","nativeSrc":"6450:9:40","nodeType":"YulIdentifier","src":"6450:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"6437:12:40","nodeType":"YulIdentifier","src":"6437:12:40"},"nativeSrc":"6437:23:40","nodeType":"YulFunctionCall","src":"6437:23:40"},"variables":[{"name":"value","nativeSrc":"6428:5:40","nodeType":"YulTypedName","src":"6428:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6494:5:40","nodeType":"YulIdentifier","src":"6494:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6469:24:40","nodeType":"YulIdentifier","src":"6469:24:40"},"nativeSrc":"6469:31:40","nodeType":"YulFunctionCall","src":"6469:31:40"},"nativeSrc":"6469:31:40","nodeType":"YulExpressionStatement","src":"6469:31:40"},{"nativeSrc":"6509:15:40","nodeType":"YulAssignment","src":"6509:15:40","value":{"name":"value","nativeSrc":"6519:5:40","nodeType":"YulIdentifier","src":"6519:5:40"},"variableNames":[{"name":"value0","nativeSrc":"6509:6:40","nodeType":"YulIdentifier","src":"6509:6:40"}]},{"nativeSrc":"6533:47:40","nodeType":"YulVariableDeclaration","src":"6533:47:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6565:9:40","nodeType":"YulIdentifier","src":"6565:9:40"},{"kind":"number","nativeSrc":"6576:2:40","nodeType":"YulLiteral","src":"6576:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6561:3:40","nodeType":"YulIdentifier","src":"6561:3:40"},"nativeSrc":"6561:18:40","nodeType":"YulFunctionCall","src":"6561:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"6548:12:40","nodeType":"YulIdentifier","src":"6548:12:40"},"nativeSrc":"6548:32:40","nodeType":"YulFunctionCall","src":"6548:32:40"},"variables":[{"name":"value_1","nativeSrc":"6537:7:40","nodeType":"YulTypedName","src":"6537:7:40","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6614:7:40","nodeType":"YulIdentifier","src":"6614:7:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6589:24:40","nodeType":"YulIdentifier","src":"6589:24:40"},"nativeSrc":"6589:33:40","nodeType":"YulFunctionCall","src":"6589:33:40"},"nativeSrc":"6589:33:40","nodeType":"YulExpressionStatement","src":"6589:33:40"},{"nativeSrc":"6631:17:40","nodeType":"YulAssignment","src":"6631:17:40","value":{"name":"value_1","nativeSrc":"6641:7:40","nodeType":"YulIdentifier","src":"6641:7:40"},"variableNames":[{"name":"value1","nativeSrc":"6631:6:40","nodeType":"YulIdentifier","src":"6631:6:40"}]},{"nativeSrc":"6657:16:40","nodeType":"YulVariableDeclaration","src":"6657:16:40","value":{"kind":"number","nativeSrc":"6672:1:40","nodeType":"YulLiteral","src":"6672:1:40","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"6661:7:40","nodeType":"YulTypedName","src":"6661:7:40","type":""}]},{"nativeSrc":"6682:43:40","nodeType":"YulAssignment","src":"6682:43:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6710:9:40","nodeType":"YulIdentifier","src":"6710:9:40"},{"kind":"number","nativeSrc":"6721:2:40","nodeType":"YulLiteral","src":"6721:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6706:3:40","nodeType":"YulIdentifier","src":"6706:3:40"},"nativeSrc":"6706:18:40","nodeType":"YulFunctionCall","src":"6706:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"6693:12:40","nodeType":"YulIdentifier","src":"6693:12:40"},"nativeSrc":"6693:32:40","nodeType":"YulFunctionCall","src":"6693:32:40"},"variableNames":[{"name":"value_2","nativeSrc":"6682:7:40","nodeType":"YulIdentifier","src":"6682:7:40"}]},{"nativeSrc":"6734:17:40","nodeType":"YulAssignment","src":"6734:17:40","value":{"name":"value_2","nativeSrc":"6744:7:40","nodeType":"YulIdentifier","src":"6744:7:40"},"variableNames":[{"name":"value2","nativeSrc":"6734:6:40","nodeType":"YulIdentifier","src":"6734:6:40"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"6249:508:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6303:9:40","nodeType":"YulTypedName","src":"6303:9:40","type":""},{"name":"dataEnd","nativeSrc":"6314:7:40","nodeType":"YulTypedName","src":"6314:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6326:6:40","nodeType":"YulTypedName","src":"6326:6:40","type":""},{"name":"value1","nativeSrc":"6334:6:40","nodeType":"YulTypedName","src":"6334:6:40","type":""},{"name":"value2","nativeSrc":"6342:6:40","nodeType":"YulTypedName","src":"6342:6:40","type":""}],"src":"6249:508:40"},{"body":{"nativeSrc":"6859:87:40","nodeType":"YulBlock","src":"6859:87:40","statements":[{"nativeSrc":"6869:26:40","nodeType":"YulAssignment","src":"6869:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"6881:9:40","nodeType":"YulIdentifier","src":"6881:9:40"},{"kind":"number","nativeSrc":"6892:2:40","nodeType":"YulLiteral","src":"6892:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6877:3:40","nodeType":"YulIdentifier","src":"6877:3:40"},"nativeSrc":"6877:18:40","nodeType":"YulFunctionCall","src":"6877:18:40"},"variableNames":[{"name":"tail","nativeSrc":"6869:4:40","nodeType":"YulIdentifier","src":"6869:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6911:9:40","nodeType":"YulIdentifier","src":"6911:9:40"},{"arguments":[{"name":"value0","nativeSrc":"6926:6:40","nodeType":"YulIdentifier","src":"6926:6:40"},{"kind":"number","nativeSrc":"6934:4:40","nodeType":"YulLiteral","src":"6934:4:40","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6922:3:40","nodeType":"YulIdentifier","src":"6922:3:40"},"nativeSrc":"6922:17:40","nodeType":"YulFunctionCall","src":"6922:17:40"}],"functionName":{"name":"mstore","nativeSrc":"6904:6:40","nodeType":"YulIdentifier","src":"6904:6:40"},"nativeSrc":"6904:36:40","nodeType":"YulFunctionCall","src":"6904:36:40"},"nativeSrc":"6904:36:40","nodeType":"YulExpressionStatement","src":"6904:36:40"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"6762:184:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6828:9:40","nodeType":"YulTypedName","src":"6828:9:40","type":""},{"name":"value0","nativeSrc":"6839:6:40","nodeType":"YulTypedName","src":"6839:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6850:4:40","nodeType":"YulTypedName","src":"6850:4:40","type":""}],"src":"6762:184:40"},{"body":{"nativeSrc":"6999:115:40","nodeType":"YulBlock","src":"6999:115:40","statements":[{"nativeSrc":"7009:29:40","nodeType":"YulAssignment","src":"7009:29:40","value":{"arguments":[{"name":"offset","nativeSrc":"7031:6:40","nodeType":"YulIdentifier","src":"7031:6:40"}],"functionName":{"name":"calldataload","nativeSrc":"7018:12:40","nodeType":"YulIdentifier","src":"7018:12:40"},"nativeSrc":"7018:20:40","nodeType":"YulFunctionCall","src":"7018:20:40"},"variableNames":[{"name":"value","nativeSrc":"7009:5:40","nodeType":"YulIdentifier","src":"7009:5:40"}]},{"body":{"nativeSrc":"7092:16:40","nodeType":"YulBlock","src":"7092:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7101:1:40","nodeType":"YulLiteral","src":"7101:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"7104:1:40","nodeType":"YulLiteral","src":"7104:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7094:6:40","nodeType":"YulIdentifier","src":"7094:6:40"},"nativeSrc":"7094:12:40","nodeType":"YulFunctionCall","src":"7094:12:40"},"nativeSrc":"7094:12:40","nodeType":"YulExpressionStatement","src":"7094:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7060:5:40","nodeType":"YulIdentifier","src":"7060:5:40"},{"arguments":[{"name":"value","nativeSrc":"7071:5:40","nodeType":"YulIdentifier","src":"7071:5:40"},{"kind":"number","nativeSrc":"7078:10:40","nodeType":"YulLiteral","src":"7078:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"7067:3:40","nodeType":"YulIdentifier","src":"7067:3:40"},"nativeSrc":"7067:22:40","nodeType":"YulFunctionCall","src":"7067:22:40"}],"functionName":{"name":"eq","nativeSrc":"7057:2:40","nodeType":"YulIdentifier","src":"7057:2:40"},"nativeSrc":"7057:33:40","nodeType":"YulFunctionCall","src":"7057:33:40"}],"functionName":{"name":"iszero","nativeSrc":"7050:6:40","nodeType":"YulIdentifier","src":"7050:6:40"},"nativeSrc":"7050:41:40","nodeType":"YulFunctionCall","src":"7050:41:40"},"nativeSrc":"7047:61:40","nodeType":"YulIf","src":"7047:61:40"}]},"name":"abi_decode_uint32","nativeSrc":"6951:163:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6978:6:40","nodeType":"YulTypedName","src":"6978:6:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"6989:5:40","nodeType":"YulTypedName","src":"6989:5:40","type":""}],"src":"6951:163:40"},{"body":{"nativeSrc":"7205:212:40","nodeType":"YulBlock","src":"7205:212:40","statements":[{"body":{"nativeSrc":"7251:16:40","nodeType":"YulBlock","src":"7251:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7260:1:40","nodeType":"YulLiteral","src":"7260:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"7263:1:40","nodeType":"YulLiteral","src":"7263:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7253:6:40","nodeType":"YulIdentifier","src":"7253:6:40"},"nativeSrc":"7253:12:40","nodeType":"YulFunctionCall","src":"7253:12:40"},"nativeSrc":"7253:12:40","nodeType":"YulExpressionStatement","src":"7253:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7226:7:40","nodeType":"YulIdentifier","src":"7226:7:40"},{"name":"headStart","nativeSrc":"7235:9:40","nodeType":"YulIdentifier","src":"7235:9:40"}],"functionName":{"name":"sub","nativeSrc":"7222:3:40","nodeType":"YulIdentifier","src":"7222:3:40"},"nativeSrc":"7222:23:40","nodeType":"YulFunctionCall","src":"7222:23:40"},{"kind":"number","nativeSrc":"7247:2:40","nodeType":"YulLiteral","src":"7247:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7218:3:40","nodeType":"YulIdentifier","src":"7218:3:40"},"nativeSrc":"7218:32:40","nodeType":"YulFunctionCall","src":"7218:32:40"},"nativeSrc":"7215:52:40","nodeType":"YulIf","src":"7215:52:40"},{"nativeSrc":"7276:38:40","nodeType":"YulAssignment","src":"7276:38:40","value":{"arguments":[{"name":"headStart","nativeSrc":"7304:9:40","nodeType":"YulIdentifier","src":"7304:9:40"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"7286:17:40","nodeType":"YulIdentifier","src":"7286:17:40"},"nativeSrc":"7286:28:40","nodeType":"YulFunctionCall","src":"7286:28:40"},"variableNames":[{"name":"value0","nativeSrc":"7276:6:40","nodeType":"YulIdentifier","src":"7276:6:40"}]},{"nativeSrc":"7323:14:40","nodeType":"YulVariableDeclaration","src":"7323:14:40","value":{"kind":"number","nativeSrc":"7336:1:40","nodeType":"YulLiteral","src":"7336:1:40","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7327:5:40","nodeType":"YulTypedName","src":"7327:5:40","type":""}]},{"nativeSrc":"7346:41:40","nodeType":"YulAssignment","src":"7346:41:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7372:9:40","nodeType":"YulIdentifier","src":"7372:9:40"},{"kind":"number","nativeSrc":"7383:2:40","nodeType":"YulLiteral","src":"7383:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7368:3:40","nodeType":"YulIdentifier","src":"7368:3:40"},"nativeSrc":"7368:18:40","nodeType":"YulFunctionCall","src":"7368:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"7355:12:40","nodeType":"YulIdentifier","src":"7355:12:40"},"nativeSrc":"7355:32:40","nodeType":"YulFunctionCall","src":"7355:32:40"},"variableNames":[{"name":"value","nativeSrc":"7346:5:40","nodeType":"YulIdentifier","src":"7346:5:40"}]},{"nativeSrc":"7396:15:40","nodeType":"YulAssignment","src":"7396:15:40","value":{"name":"value","nativeSrc":"7406:5:40","nodeType":"YulIdentifier","src":"7406:5:40"},"variableNames":[{"name":"value1","nativeSrc":"7396:6:40","nodeType":"YulIdentifier","src":"7396:6:40"}]}]},"name":"abi_decode_tuple_t_uint32t_bytes32","nativeSrc":"7119:298:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7163:9:40","nodeType":"YulTypedName","src":"7163:9:40","type":""},{"name":"dataEnd","nativeSrc":"7174:7:40","nodeType":"YulTypedName","src":"7174:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7186:6:40","nodeType":"YulTypedName","src":"7186:6:40","type":""},{"name":"value1","nativeSrc":"7194:6:40","nodeType":"YulTypedName","src":"7194:6:40","type":""}],"src":"7119:298:40"},{"body":{"nativeSrc":"7464:76:40","nodeType":"YulBlock","src":"7464:76:40","statements":[{"body":{"nativeSrc":"7518:16:40","nodeType":"YulBlock","src":"7518:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7527:1:40","nodeType":"YulLiteral","src":"7527:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"7530:1:40","nodeType":"YulLiteral","src":"7530:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7520:6:40","nodeType":"YulIdentifier","src":"7520:6:40"},"nativeSrc":"7520:12:40","nodeType":"YulFunctionCall","src":"7520:12:40"},"nativeSrc":"7520:12:40","nodeType":"YulExpressionStatement","src":"7520:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7487:5:40","nodeType":"YulIdentifier","src":"7487:5:40"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7508:5:40","nodeType":"YulIdentifier","src":"7508:5:40"}],"functionName":{"name":"iszero","nativeSrc":"7501:6:40","nodeType":"YulIdentifier","src":"7501:6:40"},"nativeSrc":"7501:13:40","nodeType":"YulFunctionCall","src":"7501:13:40"}],"functionName":{"name":"iszero","nativeSrc":"7494:6:40","nodeType":"YulIdentifier","src":"7494:6:40"},"nativeSrc":"7494:21:40","nodeType":"YulFunctionCall","src":"7494:21:40"}],"functionName":{"name":"eq","nativeSrc":"7484:2:40","nodeType":"YulIdentifier","src":"7484:2:40"},"nativeSrc":"7484:32:40","nodeType":"YulFunctionCall","src":"7484:32:40"}],"functionName":{"name":"iszero","nativeSrc":"7477:6:40","nodeType":"YulIdentifier","src":"7477:6:40"},"nativeSrc":"7477:40:40","nodeType":"YulFunctionCall","src":"7477:40:40"},"nativeSrc":"7474:60:40","nodeType":"YulIf","src":"7474:60:40"}]},"name":"validator_revert_bool","nativeSrc":"7422:118:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7453:5:40","nodeType":"YulTypedName","src":"7453:5:40","type":""}],"src":"7422:118:40"},{"body":{"nativeSrc":"7658:376:40","nodeType":"YulBlock","src":"7658:376:40","statements":[{"body":{"nativeSrc":"7704:16:40","nodeType":"YulBlock","src":"7704:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7713:1:40","nodeType":"YulLiteral","src":"7713:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"7716:1:40","nodeType":"YulLiteral","src":"7716:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7706:6:40","nodeType":"YulIdentifier","src":"7706:6:40"},"nativeSrc":"7706:12:40","nodeType":"YulFunctionCall","src":"7706:12:40"},"nativeSrc":"7706:12:40","nodeType":"YulExpressionStatement","src":"7706:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7679:7:40","nodeType":"YulIdentifier","src":"7679:7:40"},{"name":"headStart","nativeSrc":"7688:9:40","nodeType":"YulIdentifier","src":"7688:9:40"}],"functionName":{"name":"sub","nativeSrc":"7675:3:40","nodeType":"YulIdentifier","src":"7675:3:40"},"nativeSrc":"7675:23:40","nodeType":"YulFunctionCall","src":"7675:23:40"},{"kind":"number","nativeSrc":"7700:2:40","nodeType":"YulLiteral","src":"7700:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7671:3:40","nodeType":"YulIdentifier","src":"7671:3:40"},"nativeSrc":"7671:32:40","nodeType":"YulFunctionCall","src":"7671:32:40"},"nativeSrc":"7668:52:40","nodeType":"YulIf","src":"7668:52:40"},{"nativeSrc":"7729:37:40","nodeType":"YulVariableDeclaration","src":"7729:37:40","value":{"arguments":[{"name":"headStart","nativeSrc":"7756:9:40","nodeType":"YulIdentifier","src":"7756:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"7743:12:40","nodeType":"YulIdentifier","src":"7743:12:40"},"nativeSrc":"7743:23:40","nodeType":"YulFunctionCall","src":"7743:23:40"},"variables":[{"name":"offset","nativeSrc":"7733:6:40","nodeType":"YulTypedName","src":"7733:6:40","type":""}]},{"body":{"nativeSrc":"7809:16:40","nodeType":"YulBlock","src":"7809:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7818:1:40","nodeType":"YulLiteral","src":"7818:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"7821:1:40","nodeType":"YulLiteral","src":"7821:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7811:6:40","nodeType":"YulIdentifier","src":"7811:6:40"},"nativeSrc":"7811:12:40","nodeType":"YulFunctionCall","src":"7811:12:40"},"nativeSrc":"7811:12:40","nodeType":"YulExpressionStatement","src":"7811:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7781:6:40","nodeType":"YulIdentifier","src":"7781:6:40"},{"kind":"number","nativeSrc":"7789:18:40","nodeType":"YulLiteral","src":"7789:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7778:2:40","nodeType":"YulIdentifier","src":"7778:2:40"},"nativeSrc":"7778:30:40","nodeType":"YulFunctionCall","src":"7778:30:40"},"nativeSrc":"7775:50:40","nodeType":"YulIf","src":"7775:50:40"},{"nativeSrc":"7834:79:40","nodeType":"YulAssignment","src":"7834:79:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7885:9:40","nodeType":"YulIdentifier","src":"7885:9:40"},{"name":"offset","nativeSrc":"7896:6:40","nodeType":"YulIdentifier","src":"7896:6:40"}],"functionName":{"name":"add","nativeSrc":"7881:3:40","nodeType":"YulIdentifier","src":"7881:3:40"},"nativeSrc":"7881:22:40","nodeType":"YulFunctionCall","src":"7881:22:40"},{"name":"dataEnd","nativeSrc":"7905:7:40","nodeType":"YulIdentifier","src":"7905:7:40"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"7844:36:40","nodeType":"YulIdentifier","src":"7844:36:40"},"nativeSrc":"7844:69:40","nodeType":"YulFunctionCall","src":"7844:69:40"},"variableNames":[{"name":"value0","nativeSrc":"7834:6:40","nodeType":"YulIdentifier","src":"7834:6:40"}]},{"nativeSrc":"7922:45:40","nodeType":"YulVariableDeclaration","src":"7922:45:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7952:9:40","nodeType":"YulIdentifier","src":"7952:9:40"},{"kind":"number","nativeSrc":"7963:2:40","nodeType":"YulLiteral","src":"7963:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7948:3:40","nodeType":"YulIdentifier","src":"7948:3:40"},"nativeSrc":"7948:18:40","nodeType":"YulFunctionCall","src":"7948:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"7935:12:40","nodeType":"YulIdentifier","src":"7935:12:40"},"nativeSrc":"7935:32:40","nodeType":"YulFunctionCall","src":"7935:32:40"},"variables":[{"name":"value","nativeSrc":"7926:5:40","nodeType":"YulTypedName","src":"7926:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7998:5:40","nodeType":"YulIdentifier","src":"7998:5:40"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7976:21:40","nodeType":"YulIdentifier","src":"7976:21:40"},"nativeSrc":"7976:28:40","nodeType":"YulFunctionCall","src":"7976:28:40"},"nativeSrc":"7976:28:40","nodeType":"YulExpressionStatement","src":"7976:28:40"},{"nativeSrc":"8013:15:40","nodeType":"YulAssignment","src":"8013:15:40","value":{"name":"value","nativeSrc":"8023:5:40","nodeType":"YulIdentifier","src":"8023:5:40"},"variableNames":[{"name":"value1","nativeSrc":"8013:6:40","nodeType":"YulIdentifier","src":"8013:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool","nativeSrc":"7545:489:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7616:9:40","nodeType":"YulTypedName","src":"7616:9:40","type":""},{"name":"dataEnd","nativeSrc":"7627:7:40","nodeType":"YulTypedName","src":"7627:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7639:6:40","nodeType":"YulTypedName","src":"7639:6:40","type":""},{"name":"value1","nativeSrc":"7647:6:40","nodeType":"YulTypedName","src":"7647:6:40","type":""}],"src":"7545:489:40"},{"body":{"nativeSrc":"8196:96:40","nodeType":"YulBlock","src":"8196:96:40","statements":[{"nativeSrc":"8206:26:40","nodeType":"YulAssignment","src":"8206:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"8218:9:40","nodeType":"YulIdentifier","src":"8218:9:40"},{"kind":"number","nativeSrc":"8229:2:40","nodeType":"YulLiteral","src":"8229:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8214:3:40","nodeType":"YulIdentifier","src":"8214:3:40"},"nativeSrc":"8214:18:40","nodeType":"YulFunctionCall","src":"8214:18:40"},"variableNames":[{"name":"tail","nativeSrc":"8206:4:40","nodeType":"YulIdentifier","src":"8206:4:40"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8268:6:40","nodeType":"YulIdentifier","src":"8268:6:40"},{"name":"headStart","nativeSrc":"8276:9:40","nodeType":"YulIdentifier","src":"8276:9:40"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"8241:26:40","nodeType":"YulIdentifier","src":"8241:26:40"},"nativeSrc":"8241:45:40","nodeType":"YulFunctionCall","src":"8241:45:40"},"nativeSrc":"8241:45:40","nodeType":"YulExpressionStatement","src":"8241:45:40"}]},"name":"abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed","nativeSrc":"8039:253:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8165:9:40","nodeType":"YulTypedName","src":"8165:9:40","type":""},{"name":"value0","nativeSrc":"8176:6:40","nodeType":"YulTypedName","src":"8176:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8187:4:40","nodeType":"YulTypedName","src":"8187:4:40","type":""}],"src":"8039:253:40"},{"body":{"nativeSrc":"8345:111:40","nodeType":"YulBlock","src":"8345:111:40","statements":[{"nativeSrc":"8355:29:40","nodeType":"YulAssignment","src":"8355:29:40","value":{"arguments":[{"name":"offset","nativeSrc":"8377:6:40","nodeType":"YulIdentifier","src":"8377:6:40"}],"functionName":{"name":"calldataload","nativeSrc":"8364:12:40","nodeType":"YulIdentifier","src":"8364:12:40"},"nativeSrc":"8364:20:40","nodeType":"YulFunctionCall","src":"8364:20:40"},"variableNames":[{"name":"value","nativeSrc":"8355:5:40","nodeType":"YulIdentifier","src":"8355:5:40"}]},{"body":{"nativeSrc":"8434:16:40","nodeType":"YulBlock","src":"8434:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8443:1:40","nodeType":"YulLiteral","src":"8443:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"8446:1:40","nodeType":"YulLiteral","src":"8446:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8436:6:40","nodeType":"YulIdentifier","src":"8436:6:40"},"nativeSrc":"8436:12:40","nodeType":"YulFunctionCall","src":"8436:12:40"},"nativeSrc":"8436:12:40","nodeType":"YulExpressionStatement","src":"8436:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8406:5:40","nodeType":"YulIdentifier","src":"8406:5:40"},{"arguments":[{"name":"value","nativeSrc":"8417:5:40","nodeType":"YulIdentifier","src":"8417:5:40"},{"kind":"number","nativeSrc":"8424:6:40","nodeType":"YulLiteral","src":"8424:6:40","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"8413:3:40","nodeType":"YulIdentifier","src":"8413:3:40"},"nativeSrc":"8413:18:40","nodeType":"YulFunctionCall","src":"8413:18:40"}],"functionName":{"name":"eq","nativeSrc":"8403:2:40","nodeType":"YulIdentifier","src":"8403:2:40"},"nativeSrc":"8403:29:40","nodeType":"YulFunctionCall","src":"8403:29:40"}],"functionName":{"name":"iszero","nativeSrc":"8396:6:40","nodeType":"YulIdentifier","src":"8396:6:40"},"nativeSrc":"8396:37:40","nodeType":"YulFunctionCall","src":"8396:37:40"},"nativeSrc":"8393:57:40","nodeType":"YulIf","src":"8393:57:40"}]},"name":"abi_decode_uint16","nativeSrc":"8297:159:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8324:6:40","nodeType":"YulTypedName","src":"8324:6:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8335:5:40","nodeType":"YulTypedName","src":"8335:5:40","type":""}],"src":"8297:159:40"},{"body":{"nativeSrc":"8546:171:40","nodeType":"YulBlock","src":"8546:171:40","statements":[{"body":{"nativeSrc":"8592:16:40","nodeType":"YulBlock","src":"8592:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8601:1:40","nodeType":"YulLiteral","src":"8601:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"8604:1:40","nodeType":"YulLiteral","src":"8604:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8594:6:40","nodeType":"YulIdentifier","src":"8594:6:40"},"nativeSrc":"8594:12:40","nodeType":"YulFunctionCall","src":"8594:12:40"},"nativeSrc":"8594:12:40","nodeType":"YulExpressionStatement","src":"8594:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8567:7:40","nodeType":"YulIdentifier","src":"8567:7:40"},{"name":"headStart","nativeSrc":"8576:9:40","nodeType":"YulIdentifier","src":"8576:9:40"}],"functionName":{"name":"sub","nativeSrc":"8563:3:40","nodeType":"YulIdentifier","src":"8563:3:40"},"nativeSrc":"8563:23:40","nodeType":"YulFunctionCall","src":"8563:23:40"},{"kind":"number","nativeSrc":"8588:2:40","nodeType":"YulLiteral","src":"8588:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8559:3:40","nodeType":"YulIdentifier","src":"8559:3:40"},"nativeSrc":"8559:32:40","nodeType":"YulFunctionCall","src":"8559:32:40"},"nativeSrc":"8556:52:40","nodeType":"YulIf","src":"8556:52:40"},{"nativeSrc":"8617:38:40","nodeType":"YulAssignment","src":"8617:38:40","value":{"arguments":[{"name":"headStart","nativeSrc":"8645:9:40","nodeType":"YulIdentifier","src":"8645:9:40"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"8627:17:40","nodeType":"YulIdentifier","src":"8627:17:40"},"nativeSrc":"8627:28:40","nodeType":"YulFunctionCall","src":"8627:28:40"},"variableNames":[{"name":"value0","nativeSrc":"8617:6:40","nodeType":"YulIdentifier","src":"8617:6:40"}]},{"nativeSrc":"8664:47:40","nodeType":"YulAssignment","src":"8664:47:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8696:9:40","nodeType":"YulIdentifier","src":"8696:9:40"},{"kind":"number","nativeSrc":"8707:2:40","nodeType":"YulLiteral","src":"8707:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8692:3:40","nodeType":"YulIdentifier","src":"8692:3:40"},"nativeSrc":"8692:18:40","nodeType":"YulFunctionCall","src":"8692:18:40"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"8674:17:40","nodeType":"YulIdentifier","src":"8674:17:40"},"nativeSrc":"8674:37:40","nodeType":"YulFunctionCall","src":"8674:37:40"},"variableNames":[{"name":"value1","nativeSrc":"8664:6:40","nodeType":"YulIdentifier","src":"8664:6:40"}]}]},"name":"abi_decode_tuple_t_uint32t_uint16","nativeSrc":"8461:256:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8504:9:40","nodeType":"YulTypedName","src":"8504:9:40","type":""},{"name":"dataEnd","nativeSrc":"8515:7:40","nodeType":"YulTypedName","src":"8515:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8527:6:40","nodeType":"YulTypedName","src":"8527:6:40","type":""},{"name":"value1","nativeSrc":"8535:6:40","nodeType":"YulTypedName","src":"8535:6:40","type":""}],"src":"8461:256:40"},{"body":{"nativeSrc":"8841:99:40","nodeType":"YulBlock","src":"8841:99:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8858:9:40","nodeType":"YulIdentifier","src":"8858:9:40"},{"kind":"number","nativeSrc":"8869:2:40","nodeType":"YulLiteral","src":"8869:2:40","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8851:6:40","nodeType":"YulIdentifier","src":"8851:6:40"},"nativeSrc":"8851:21:40","nodeType":"YulFunctionCall","src":"8851:21:40"},"nativeSrc":"8851:21:40","nodeType":"YulExpressionStatement","src":"8851:21:40"},{"nativeSrc":"8881:53:40","nodeType":"YulAssignment","src":"8881:53:40","value":{"arguments":[{"name":"value0","nativeSrc":"8907:6:40","nodeType":"YulIdentifier","src":"8907:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"8919:9:40","nodeType":"YulIdentifier","src":"8919:9:40"},{"kind":"number","nativeSrc":"8930:2:40","nodeType":"YulLiteral","src":"8930:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8915:3:40","nodeType":"YulIdentifier","src":"8915:3:40"},"nativeSrc":"8915:18:40","nodeType":"YulFunctionCall","src":"8915:18:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"8889:17:40","nodeType":"YulIdentifier","src":"8889:17:40"},"nativeSrc":"8889:45:40","nodeType":"YulFunctionCall","src":"8889:45:40"},"variableNames":[{"name":"tail","nativeSrc":"8881:4:40","nodeType":"YulIdentifier","src":"8881:4:40"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"8722:218:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8810:9:40","nodeType":"YulTypedName","src":"8810:9:40","type":""},{"name":"value0","nativeSrc":"8821:6:40","nodeType":"YulTypedName","src":"8821:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8832:4:40","nodeType":"YulTypedName","src":"8832:4:40","type":""}],"src":"8722:218:40"},{"body":{"nativeSrc":"9074:102:40","nodeType":"YulBlock","src":"9074:102:40","statements":[{"nativeSrc":"9084:26:40","nodeType":"YulAssignment","src":"9084:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"9096:9:40","nodeType":"YulIdentifier","src":"9096:9:40"},{"kind":"number","nativeSrc":"9107:2:40","nodeType":"YulLiteral","src":"9107:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9092:3:40","nodeType":"YulIdentifier","src":"9092:3:40"},"nativeSrc":"9092:18:40","nodeType":"YulFunctionCall","src":"9092:18:40"},"variableNames":[{"name":"tail","nativeSrc":"9084:4:40","nodeType":"YulIdentifier","src":"9084:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9126:9:40","nodeType":"YulIdentifier","src":"9126:9:40"},{"arguments":[{"name":"value0","nativeSrc":"9141:6:40","nodeType":"YulIdentifier","src":"9141:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9157:3:40","nodeType":"YulLiteral","src":"9157:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"9162:1:40","nodeType":"YulLiteral","src":"9162:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9153:3:40","nodeType":"YulIdentifier","src":"9153:3:40"},"nativeSrc":"9153:11:40","nodeType":"YulFunctionCall","src":"9153:11:40"},{"kind":"number","nativeSrc":"9166:1:40","nodeType":"YulLiteral","src":"9166:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9149:3:40","nodeType":"YulIdentifier","src":"9149:3:40"},"nativeSrc":"9149:19:40","nodeType":"YulFunctionCall","src":"9149:19:40"}],"functionName":{"name":"and","nativeSrc":"9137:3:40","nodeType":"YulIdentifier","src":"9137:3:40"},"nativeSrc":"9137:32:40","nodeType":"YulFunctionCall","src":"9137:32:40"}],"functionName":{"name":"mstore","nativeSrc":"9119:6:40","nodeType":"YulIdentifier","src":"9119:6:40"},"nativeSrc":"9119:51:40","nodeType":"YulFunctionCall","src":"9119:51:40"},"nativeSrc":"9119:51:40","nodeType":"YulExpressionStatement","src":"9119:51:40"}]},"name":"abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed","nativeSrc":"8945:231:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9043:9:40","nodeType":"YulTypedName","src":"9043:9:40","type":""},{"name":"value0","nativeSrc":"9054:6:40","nodeType":"YulTypedName","src":"9054:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9065:4:40","nodeType":"YulTypedName","src":"9065:4:40","type":""}],"src":"8945:231:40"},{"body":{"nativeSrc":"9251:177:40","nodeType":"YulBlock","src":"9251:177:40","statements":[{"body":{"nativeSrc":"9297:16:40","nodeType":"YulBlock","src":"9297:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9306:1:40","nodeType":"YulLiteral","src":"9306:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"9309:1:40","nodeType":"YulLiteral","src":"9309:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9299:6:40","nodeType":"YulIdentifier","src":"9299:6:40"},"nativeSrc":"9299:12:40","nodeType":"YulFunctionCall","src":"9299:12:40"},"nativeSrc":"9299:12:40","nodeType":"YulExpressionStatement","src":"9299:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9272:7:40","nodeType":"YulIdentifier","src":"9272:7:40"},{"name":"headStart","nativeSrc":"9281:9:40","nodeType":"YulIdentifier","src":"9281:9:40"}],"functionName":{"name":"sub","nativeSrc":"9268:3:40","nodeType":"YulIdentifier","src":"9268:3:40"},"nativeSrc":"9268:23:40","nodeType":"YulFunctionCall","src":"9268:23:40"},{"kind":"number","nativeSrc":"9293:2:40","nodeType":"YulLiteral","src":"9293:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9264:3:40","nodeType":"YulIdentifier","src":"9264:3:40"},"nativeSrc":"9264:32:40","nodeType":"YulFunctionCall","src":"9264:32:40"},"nativeSrc":"9261:52:40","nodeType":"YulIf","src":"9261:52:40"},{"nativeSrc":"9322:36:40","nodeType":"YulVariableDeclaration","src":"9322:36:40","value":{"arguments":[{"name":"headStart","nativeSrc":"9348:9:40","nodeType":"YulIdentifier","src":"9348:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"9335:12:40","nodeType":"YulIdentifier","src":"9335:12:40"},"nativeSrc":"9335:23:40","nodeType":"YulFunctionCall","src":"9335:23:40"},"variables":[{"name":"value","nativeSrc":"9326:5:40","nodeType":"YulTypedName","src":"9326:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9392:5:40","nodeType":"YulIdentifier","src":"9392:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9367:24:40","nodeType":"YulIdentifier","src":"9367:24:40"},"nativeSrc":"9367:31:40","nodeType":"YulFunctionCall","src":"9367:31:40"},"nativeSrc":"9367:31:40","nodeType":"YulExpressionStatement","src":"9367:31:40"},{"nativeSrc":"9407:15:40","nodeType":"YulAssignment","src":"9407:15:40","value":{"name":"value","nativeSrc":"9417:5:40","nodeType":"YulIdentifier","src":"9417:5:40"},"variableNames":[{"name":"value0","nativeSrc":"9407:6:40","nodeType":"YulIdentifier","src":"9407:6:40"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"9181:247:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9217:9:40","nodeType":"YulTypedName","src":"9217:9:40","type":""},{"name":"dataEnd","nativeSrc":"9228:7:40","nodeType":"YulTypedName","src":"9228:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9240:6:40","nodeType":"YulTypedName","src":"9240:6:40","type":""}],"src":"9181:247:40"},{"body":{"nativeSrc":"9532:101:40","nodeType":"YulBlock","src":"9532:101:40","statements":[{"nativeSrc":"9542:26:40","nodeType":"YulAssignment","src":"9542:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"9554:9:40","nodeType":"YulIdentifier","src":"9554:9:40"},{"kind":"number","nativeSrc":"9565:2:40","nodeType":"YulLiteral","src":"9565:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9550:3:40","nodeType":"YulIdentifier","src":"9550:3:40"},"nativeSrc":"9550:18:40","nodeType":"YulFunctionCall","src":"9550:18:40"},"variableNames":[{"name":"tail","nativeSrc":"9542:4:40","nodeType":"YulIdentifier","src":"9542:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9584:9:40","nodeType":"YulIdentifier","src":"9584:9:40"},{"arguments":[{"name":"value0","nativeSrc":"9599:6:40","nodeType":"YulIdentifier","src":"9599:6:40"},{"kind":"number","nativeSrc":"9607:18:40","nodeType":"YulLiteral","src":"9607:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"9595:3:40","nodeType":"YulIdentifier","src":"9595:3:40"},"nativeSrc":"9595:31:40","nodeType":"YulFunctionCall","src":"9595:31:40"}],"functionName":{"name":"mstore","nativeSrc":"9577:6:40","nodeType":"YulIdentifier","src":"9577:6:40"},"nativeSrc":"9577:50:40","nodeType":"YulFunctionCall","src":"9577:50:40"},"nativeSrc":"9577:50:40","nodeType":"YulExpressionStatement","src":"9577:50:40"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"9433:200:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9501:9:40","nodeType":"YulTypedName","src":"9501:9:40","type":""},{"name":"value0","nativeSrc":"9512:6:40","nodeType":"YulTypedName","src":"9512:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9523:4:40","nodeType":"YulTypedName","src":"9523:4:40","type":""}],"src":"9433:200:40"},{"body":{"nativeSrc":"9785:521:40","nodeType":"YulBlock","src":"9785:521:40","statements":[{"body":{"nativeSrc":"9832:16:40","nodeType":"YulBlock","src":"9832:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9841:1:40","nodeType":"YulLiteral","src":"9841:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"9844:1:40","nodeType":"YulLiteral","src":"9844:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9834:6:40","nodeType":"YulIdentifier","src":"9834:6:40"},"nativeSrc":"9834:12:40","nodeType":"YulFunctionCall","src":"9834:12:40"},"nativeSrc":"9834:12:40","nodeType":"YulExpressionStatement","src":"9834:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9806:7:40","nodeType":"YulIdentifier","src":"9806:7:40"},{"name":"headStart","nativeSrc":"9815:9:40","nodeType":"YulIdentifier","src":"9815:9:40"}],"functionName":{"name":"sub","nativeSrc":"9802:3:40","nodeType":"YulIdentifier","src":"9802:3:40"},"nativeSrc":"9802:23:40","nodeType":"YulFunctionCall","src":"9802:23:40"},{"kind":"number","nativeSrc":"9827:3:40","nodeType":"YulLiteral","src":"9827:3:40","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"9798:3:40","nodeType":"YulIdentifier","src":"9798:3:40"},"nativeSrc":"9798:33:40","nodeType":"YulFunctionCall","src":"9798:33:40"},"nativeSrc":"9795:53:40","nodeType":"YulIf","src":"9795:53:40"},{"nativeSrc":"9857:63:40","nodeType":"YulAssignment","src":"9857:63:40","value":{"arguments":[{"name":"headStart","nativeSrc":"9901:9:40","nodeType":"YulIdentifier","src":"9901:9:40"},{"name":"dataEnd","nativeSrc":"9912:7:40","nodeType":"YulIdentifier","src":"9912:7:40"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"9867:33:40","nodeType":"YulIdentifier","src":"9867:33:40"},"nativeSrc":"9867:53:40","nodeType":"YulFunctionCall","src":"9867:53:40"},"variableNames":[{"name":"value0","nativeSrc":"9857:6:40","nodeType":"YulIdentifier","src":"9857:6:40"}]},{"nativeSrc":"9929:46:40","nodeType":"YulVariableDeclaration","src":"9929:46:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9960:9:40","nodeType":"YulIdentifier","src":"9960:9:40"},{"kind":"number","nativeSrc":"9971:2:40","nodeType":"YulLiteral","src":"9971:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9956:3:40","nodeType":"YulIdentifier","src":"9956:3:40"},"nativeSrc":"9956:18:40","nodeType":"YulFunctionCall","src":"9956:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"9943:12:40","nodeType":"YulIdentifier","src":"9943:12:40"},"nativeSrc":"9943:32:40","nodeType":"YulFunctionCall","src":"9943:32:40"},"variables":[{"name":"offset","nativeSrc":"9933:6:40","nodeType":"YulTypedName","src":"9933:6:40","type":""}]},{"body":{"nativeSrc":"10018:16:40","nodeType":"YulBlock","src":"10018:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10027:1:40","nodeType":"YulLiteral","src":"10027:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"10030:1:40","nodeType":"YulLiteral","src":"10030:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10020:6:40","nodeType":"YulIdentifier","src":"10020:6:40"},"nativeSrc":"10020:12:40","nodeType":"YulFunctionCall","src":"10020:12:40"},"nativeSrc":"10020:12:40","nodeType":"YulExpressionStatement","src":"10020:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9990:6:40","nodeType":"YulIdentifier","src":"9990:6:40"},{"kind":"number","nativeSrc":"9998:18:40","nodeType":"YulLiteral","src":"9998:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9987:2:40","nodeType":"YulIdentifier","src":"9987:2:40"},"nativeSrc":"9987:30:40","nodeType":"YulFunctionCall","src":"9987:30:40"},"nativeSrc":"9984:50:40","nodeType":"YulIf","src":"9984:50:40"},{"nativeSrc":"10043:84:40","nodeType":"YulVariableDeclaration","src":"10043:84:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10099:9:40","nodeType":"YulIdentifier","src":"10099:9:40"},{"name":"offset","nativeSrc":"10110:6:40","nodeType":"YulIdentifier","src":"10110:6:40"}],"functionName":{"name":"add","nativeSrc":"10095:3:40","nodeType":"YulIdentifier","src":"10095:3:40"},"nativeSrc":"10095:22:40","nodeType":"YulFunctionCall","src":"10095:22:40"},{"name":"dataEnd","nativeSrc":"10119:7:40","nodeType":"YulIdentifier","src":"10119:7:40"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"10069:25:40","nodeType":"YulIdentifier","src":"10069:25:40"},"nativeSrc":"10069:58:40","nodeType":"YulFunctionCall","src":"10069:58:40"},"variables":[{"name":"value1_1","nativeSrc":"10047:8:40","nodeType":"YulTypedName","src":"10047:8:40","type":""},{"name":"value2_1","nativeSrc":"10057:8:40","nodeType":"YulTypedName","src":"10057:8:40","type":""}]},{"nativeSrc":"10136:18:40","nodeType":"YulAssignment","src":"10136:18:40","value":{"name":"value1_1","nativeSrc":"10146:8:40","nodeType":"YulIdentifier","src":"10146:8:40"},"variableNames":[{"name":"value1","nativeSrc":"10136:6:40","nodeType":"YulIdentifier","src":"10136:6:40"}]},{"nativeSrc":"10163:18:40","nodeType":"YulAssignment","src":"10163:18:40","value":{"name":"value2_1","nativeSrc":"10173:8:40","nodeType":"YulIdentifier","src":"10173:8:40"},"variableNames":[{"name":"value2","nativeSrc":"10163:6:40","nodeType":"YulIdentifier","src":"10163:6:40"}]},{"nativeSrc":"10190:46:40","nodeType":"YulVariableDeclaration","src":"10190:46:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10220:9:40","nodeType":"YulIdentifier","src":"10220:9:40"},{"kind":"number","nativeSrc":"10231:3:40","nodeType":"YulLiteral","src":"10231:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10216:3:40","nodeType":"YulIdentifier","src":"10216:3:40"},"nativeSrc":"10216:19:40","nodeType":"YulFunctionCall","src":"10216:19:40"}],"functionName":{"name":"calldataload","nativeSrc":"10203:12:40","nodeType":"YulIdentifier","src":"10203:12:40"},"nativeSrc":"10203:33:40","nodeType":"YulFunctionCall","src":"10203:33:40"},"variables":[{"name":"value","nativeSrc":"10194:5:40","nodeType":"YulTypedName","src":"10194:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10270:5:40","nodeType":"YulIdentifier","src":"10270:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10245:24:40","nodeType":"YulIdentifier","src":"10245:24:40"},"nativeSrc":"10245:31:40","nodeType":"YulFunctionCall","src":"10245:31:40"},"nativeSrc":"10245:31:40","nodeType":"YulExpressionStatement","src":"10245:31:40"},{"nativeSrc":"10285:15:40","nodeType":"YulAssignment","src":"10285:15:40","value":{"name":"value","nativeSrc":"10295:5:40","nodeType":"YulIdentifier","src":"10295:5:40"},"variableNames":[{"name":"value3","nativeSrc":"10285:6:40","nodeType":"YulIdentifier","src":"10285:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address","nativeSrc":"9638:668:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9727:9:40","nodeType":"YulTypedName","src":"9727:9:40","type":""},{"name":"dataEnd","nativeSrc":"9738:7:40","nodeType":"YulTypedName","src":"9738:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9750:6:40","nodeType":"YulTypedName","src":"9750:6:40","type":""},{"name":"value1","nativeSrc":"9758:6:40","nodeType":"YulTypedName","src":"9758:6:40","type":""},{"name":"value2","nativeSrc":"9766:6:40","nodeType":"YulTypedName","src":"9766:6:40","type":""},{"name":"value3","nativeSrc":"9774:6:40","nodeType":"YulTypedName","src":"9774:6:40","type":""}],"src":"9638:668:40"},{"body":{"nativeSrc":"10423:283:40","nodeType":"YulBlock","src":"10423:283:40","statements":[{"body":{"nativeSrc":"10472:16:40","nodeType":"YulBlock","src":"10472:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10481:1:40","nodeType":"YulLiteral","src":"10481:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"10484:1:40","nodeType":"YulLiteral","src":"10484:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10474:6:40","nodeType":"YulIdentifier","src":"10474:6:40"},"nativeSrc":"10474:12:40","nodeType":"YulFunctionCall","src":"10474:12:40"},"nativeSrc":"10474:12:40","nodeType":"YulExpressionStatement","src":"10474:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10451:6:40","nodeType":"YulIdentifier","src":"10451:6:40"},{"kind":"number","nativeSrc":"10459:4:40","nodeType":"YulLiteral","src":"10459:4:40","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10447:3:40","nodeType":"YulIdentifier","src":"10447:3:40"},"nativeSrc":"10447:17:40","nodeType":"YulFunctionCall","src":"10447:17:40"},{"name":"end","nativeSrc":"10466:3:40","nodeType":"YulIdentifier","src":"10466:3:40"}],"functionName":{"name":"slt","nativeSrc":"10443:3:40","nodeType":"YulIdentifier","src":"10443:3:40"},"nativeSrc":"10443:27:40","nodeType":"YulFunctionCall","src":"10443:27:40"}],"functionName":{"name":"iszero","nativeSrc":"10436:6:40","nodeType":"YulIdentifier","src":"10436:6:40"},"nativeSrc":"10436:35:40","nodeType":"YulFunctionCall","src":"10436:35:40"},"nativeSrc":"10433:55:40","nodeType":"YulIf","src":"10433:55:40"},{"nativeSrc":"10497:30:40","nodeType":"YulAssignment","src":"10497:30:40","value":{"arguments":[{"name":"offset","nativeSrc":"10520:6:40","nodeType":"YulIdentifier","src":"10520:6:40"}],"functionName":{"name":"calldataload","nativeSrc":"10507:12:40","nodeType":"YulIdentifier","src":"10507:12:40"},"nativeSrc":"10507:20:40","nodeType":"YulFunctionCall","src":"10507:20:40"},"variableNames":[{"name":"length","nativeSrc":"10497:6:40","nodeType":"YulIdentifier","src":"10497:6:40"}]},{"body":{"nativeSrc":"10570:16:40","nodeType":"YulBlock","src":"10570:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10579:1:40","nodeType":"YulLiteral","src":"10579:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"10582:1:40","nodeType":"YulLiteral","src":"10582:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10572:6:40","nodeType":"YulIdentifier","src":"10572:6:40"},"nativeSrc":"10572:12:40","nodeType":"YulFunctionCall","src":"10572:12:40"},"nativeSrc":"10572:12:40","nodeType":"YulExpressionStatement","src":"10572:12:40"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"10542:6:40","nodeType":"YulIdentifier","src":"10542:6:40"},{"kind":"number","nativeSrc":"10550:18:40","nodeType":"YulLiteral","src":"10550:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10539:2:40","nodeType":"YulIdentifier","src":"10539:2:40"},"nativeSrc":"10539:30:40","nodeType":"YulFunctionCall","src":"10539:30:40"},"nativeSrc":"10536:50:40","nodeType":"YulIf","src":"10536:50:40"},{"nativeSrc":"10595:29:40","nodeType":"YulAssignment","src":"10595:29:40","value":{"arguments":[{"name":"offset","nativeSrc":"10611:6:40","nodeType":"YulIdentifier","src":"10611:6:40"},{"kind":"number","nativeSrc":"10619:4:40","nodeType":"YulLiteral","src":"10619:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10607:3:40","nodeType":"YulIdentifier","src":"10607:3:40"},"nativeSrc":"10607:17:40","nodeType":"YulFunctionCall","src":"10607:17:40"},"variableNames":[{"name":"arrayPos","nativeSrc":"10595:8:40","nodeType":"YulIdentifier","src":"10595:8:40"}]},{"body":{"nativeSrc":"10684:16:40","nodeType":"YulBlock","src":"10684:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10693:1:40","nodeType":"YulLiteral","src":"10693:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"10696:1:40","nodeType":"YulLiteral","src":"10696:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10686:6:40","nodeType":"YulIdentifier","src":"10686:6:40"},"nativeSrc":"10686:12:40","nodeType":"YulFunctionCall","src":"10686:12:40"},"nativeSrc":"10686:12:40","nodeType":"YulExpressionStatement","src":"10686:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10647:6:40","nodeType":"YulIdentifier","src":"10647:6:40"},{"arguments":[{"kind":"number","nativeSrc":"10659:1:40","nodeType":"YulLiteral","src":"10659:1:40","type":"","value":"5"},{"name":"length","nativeSrc":"10662:6:40","nodeType":"YulIdentifier","src":"10662:6:40"}],"functionName":{"name":"shl","nativeSrc":"10655:3:40","nodeType":"YulIdentifier","src":"10655:3:40"},"nativeSrc":"10655:14:40","nodeType":"YulFunctionCall","src":"10655:14:40"}],"functionName":{"name":"add","nativeSrc":"10643:3:40","nodeType":"YulIdentifier","src":"10643:3:40"},"nativeSrc":"10643:27:40","nodeType":"YulFunctionCall","src":"10643:27:40"},{"kind":"number","nativeSrc":"10672:4:40","nodeType":"YulLiteral","src":"10672:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10639:3:40","nodeType":"YulIdentifier","src":"10639:3:40"},"nativeSrc":"10639:38:40","nodeType":"YulFunctionCall","src":"10639:38:40"},{"name":"end","nativeSrc":"10679:3:40","nodeType":"YulIdentifier","src":"10679:3:40"}],"functionName":{"name":"gt","nativeSrc":"10636:2:40","nodeType":"YulIdentifier","src":"10636:2:40"},"nativeSrc":"10636:47:40","nodeType":"YulFunctionCall","src":"10636:47:40"},"nativeSrc":"10633:67:40","nodeType":"YulIf","src":"10633:67:40"}]},"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"10311:395:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10386:6:40","nodeType":"YulTypedName","src":"10386:6:40","type":""},{"name":"end","nativeSrc":"10394:3:40","nodeType":"YulTypedName","src":"10394:3:40","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"10402:8:40","nodeType":"YulTypedName","src":"10402:8:40","type":""},{"name":"length","nativeSrc":"10412:6:40","nodeType":"YulTypedName","src":"10412:6:40","type":""}],"src":"10311:395:40"},{"body":{"nativeSrc":"10855:360:40","nodeType":"YulBlock","src":"10855:360:40","statements":[{"body":{"nativeSrc":"10901:16:40","nodeType":"YulBlock","src":"10901:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10910:1:40","nodeType":"YulLiteral","src":"10910:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"10913:1:40","nodeType":"YulLiteral","src":"10913:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10903:6:40","nodeType":"YulIdentifier","src":"10903:6:40"},"nativeSrc":"10903:12:40","nodeType":"YulFunctionCall","src":"10903:12:40"},"nativeSrc":"10903:12:40","nodeType":"YulExpressionStatement","src":"10903:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10876:7:40","nodeType":"YulIdentifier","src":"10876:7:40"},{"name":"headStart","nativeSrc":"10885:9:40","nodeType":"YulIdentifier","src":"10885:9:40"}],"functionName":{"name":"sub","nativeSrc":"10872:3:40","nodeType":"YulIdentifier","src":"10872:3:40"},"nativeSrc":"10872:23:40","nodeType":"YulFunctionCall","src":"10872:23:40"},{"kind":"number","nativeSrc":"10897:2:40","nodeType":"YulLiteral","src":"10897:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10868:3:40","nodeType":"YulIdentifier","src":"10868:3:40"},"nativeSrc":"10868:32:40","nodeType":"YulFunctionCall","src":"10868:32:40"},"nativeSrc":"10865:52:40","nodeType":"YulIf","src":"10865:52:40"},{"nativeSrc":"10926:37:40","nodeType":"YulVariableDeclaration","src":"10926:37:40","value":{"arguments":[{"name":"headStart","nativeSrc":"10953:9:40","nodeType":"YulIdentifier","src":"10953:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"10940:12:40","nodeType":"YulIdentifier","src":"10940:12:40"},"nativeSrc":"10940:23:40","nodeType":"YulFunctionCall","src":"10940:23:40"},"variables":[{"name":"offset","nativeSrc":"10930:6:40","nodeType":"YulTypedName","src":"10930:6:40","type":""}]},{"body":{"nativeSrc":"11006:16:40","nodeType":"YulBlock","src":"11006:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11015:1:40","nodeType":"YulLiteral","src":"11015:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"11018:1:40","nodeType":"YulLiteral","src":"11018:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11008:6:40","nodeType":"YulIdentifier","src":"11008:6:40"},"nativeSrc":"11008:12:40","nodeType":"YulFunctionCall","src":"11008:12:40"},"nativeSrc":"11008:12:40","nodeType":"YulExpressionStatement","src":"11008:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10978:6:40","nodeType":"YulIdentifier","src":"10978:6:40"},{"kind":"number","nativeSrc":"10986:18:40","nodeType":"YulLiteral","src":"10986:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10975:2:40","nodeType":"YulIdentifier","src":"10975:2:40"},"nativeSrc":"10975:30:40","nodeType":"YulFunctionCall","src":"10975:30:40"},"nativeSrc":"10972:50:40","nodeType":"YulIf","src":"10972:50:40"},{"nativeSrc":"11031:124:40","nodeType":"YulVariableDeclaration","src":"11031:124:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11127:9:40","nodeType":"YulIdentifier","src":"11127:9:40"},{"name":"offset","nativeSrc":"11138:6:40","nodeType":"YulIdentifier","src":"11138:6:40"}],"functionName":{"name":"add","nativeSrc":"11123:3:40","nodeType":"YulIdentifier","src":"11123:3:40"},"nativeSrc":"11123:22:40","nodeType":"YulFunctionCall","src":"11123:22:40"},{"name":"dataEnd","nativeSrc":"11147:7:40","nodeType":"YulIdentifier","src":"11147:7:40"}],"functionName":{"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"11057:65:40","nodeType":"YulIdentifier","src":"11057:65:40"},"nativeSrc":"11057:98:40","nodeType":"YulFunctionCall","src":"11057:98:40"},"variables":[{"name":"value0_1","nativeSrc":"11035:8:40","nodeType":"YulTypedName","src":"11035:8:40","type":""},{"name":"value1_1","nativeSrc":"11045:8:40","nodeType":"YulTypedName","src":"11045:8:40","type":""}]},{"nativeSrc":"11164:18:40","nodeType":"YulAssignment","src":"11164:18:40","value":{"name":"value0_1","nativeSrc":"11174:8:40","nodeType":"YulIdentifier","src":"11174:8:40"},"variableNames":[{"name":"value0","nativeSrc":"11164:6:40","nodeType":"YulIdentifier","src":"11164:6:40"}]},{"nativeSrc":"11191:18:40","nodeType":"YulAssignment","src":"11191:18:40","value":{"name":"value1_1","nativeSrc":"11201:8:40","nodeType":"YulIdentifier","src":"11201:8:40"},"variableNames":[{"name":"value1","nativeSrc":"11191:6:40","nodeType":"YulIdentifier","src":"11191:6:40"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"10711:504:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10813:9:40","nodeType":"YulTypedName","src":"10813:9:40","type":""},{"name":"dataEnd","nativeSrc":"10824:7:40","nodeType":"YulTypedName","src":"10824:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10836:6:40","nodeType":"YulTypedName","src":"10836:6:40","type":""},{"name":"value1","nativeSrc":"10844:6:40","nodeType":"YulTypedName","src":"10844:6:40","type":""}],"src":"10711:504:40"},{"body":{"nativeSrc":"11289:115:40","nodeType":"YulBlock","src":"11289:115:40","statements":[{"body":{"nativeSrc":"11335:16:40","nodeType":"YulBlock","src":"11335:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11344:1:40","nodeType":"YulLiteral","src":"11344:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"11347:1:40","nodeType":"YulLiteral","src":"11347:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11337:6:40","nodeType":"YulIdentifier","src":"11337:6:40"},"nativeSrc":"11337:12:40","nodeType":"YulFunctionCall","src":"11337:12:40"},"nativeSrc":"11337:12:40","nodeType":"YulExpressionStatement","src":"11337:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11310:7:40","nodeType":"YulIdentifier","src":"11310:7:40"},{"name":"headStart","nativeSrc":"11319:9:40","nodeType":"YulIdentifier","src":"11319:9:40"}],"functionName":{"name":"sub","nativeSrc":"11306:3:40","nodeType":"YulIdentifier","src":"11306:3:40"},"nativeSrc":"11306:23:40","nodeType":"YulFunctionCall","src":"11306:23:40"},{"kind":"number","nativeSrc":"11331:2:40","nodeType":"YulLiteral","src":"11331:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11302:3:40","nodeType":"YulIdentifier","src":"11302:3:40"},"nativeSrc":"11302:32:40","nodeType":"YulFunctionCall","src":"11302:32:40"},"nativeSrc":"11299:52:40","nodeType":"YulIf","src":"11299:52:40"},{"nativeSrc":"11360:38:40","nodeType":"YulAssignment","src":"11360:38:40","value":{"arguments":[{"name":"headStart","nativeSrc":"11388:9:40","nodeType":"YulIdentifier","src":"11388:9:40"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"11370:17:40","nodeType":"YulIdentifier","src":"11370:17:40"},"nativeSrc":"11370:28:40","nodeType":"YulFunctionCall","src":"11370:28:40"},"variableNames":[{"name":"value0","nativeSrc":"11360:6:40","nodeType":"YulIdentifier","src":"11360:6:40"}]}]},"name":"abi_decode_tuple_t_uint32","nativeSrc":"11220:184:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11255:9:40","nodeType":"YulTypedName","src":"11255:9:40","type":""},{"name":"dataEnd","nativeSrc":"11266:7:40","nodeType":"YulTypedName","src":"11266:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11278:6:40","nodeType":"YulTypedName","src":"11278:6:40","type":""}],"src":"11220:184:40"},{"body":{"nativeSrc":"11510:76:40","nodeType":"YulBlock","src":"11510:76:40","statements":[{"nativeSrc":"11520:26:40","nodeType":"YulAssignment","src":"11520:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"11532:9:40","nodeType":"YulIdentifier","src":"11532:9:40"},{"kind":"number","nativeSrc":"11543:2:40","nodeType":"YulLiteral","src":"11543:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11528:3:40","nodeType":"YulIdentifier","src":"11528:3:40"},"nativeSrc":"11528:18:40","nodeType":"YulFunctionCall","src":"11528:18:40"},"variableNames":[{"name":"tail","nativeSrc":"11520:4:40","nodeType":"YulIdentifier","src":"11520:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11562:9:40","nodeType":"YulIdentifier","src":"11562:9:40"},{"name":"value0","nativeSrc":"11573:6:40","nodeType":"YulIdentifier","src":"11573:6:40"}],"functionName":{"name":"mstore","nativeSrc":"11555:6:40","nodeType":"YulIdentifier","src":"11555:6:40"},"nativeSrc":"11555:25:40","nodeType":"YulFunctionCall","src":"11555:25:40"},"nativeSrc":"11555:25:40","nodeType":"YulExpressionStatement","src":"11555:25:40"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"11409:177:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11479:9:40","nodeType":"YulTypedName","src":"11479:9:40","type":""},{"name":"value0","nativeSrc":"11490:6:40","nodeType":"YulTypedName","src":"11490:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11501:4:40","nodeType":"YulTypedName","src":"11501:4:40","type":""}],"src":"11409:177:40"},{"body":{"nativeSrc":"11712:432:40","nodeType":"YulBlock","src":"11712:432:40","statements":[{"body":{"nativeSrc":"11758:16:40","nodeType":"YulBlock","src":"11758:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11767:1:40","nodeType":"YulLiteral","src":"11767:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"11770:1:40","nodeType":"YulLiteral","src":"11770:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11760:6:40","nodeType":"YulIdentifier","src":"11760:6:40"},"nativeSrc":"11760:12:40","nodeType":"YulFunctionCall","src":"11760:12:40"},"nativeSrc":"11760:12:40","nodeType":"YulExpressionStatement","src":"11760:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11733:7:40","nodeType":"YulIdentifier","src":"11733:7:40"},{"name":"headStart","nativeSrc":"11742:9:40","nodeType":"YulIdentifier","src":"11742:9:40"}],"functionName":{"name":"sub","nativeSrc":"11729:3:40","nodeType":"YulIdentifier","src":"11729:3:40"},"nativeSrc":"11729:23:40","nodeType":"YulFunctionCall","src":"11729:23:40"},{"kind":"number","nativeSrc":"11754:2:40","nodeType":"YulLiteral","src":"11754:2:40","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"11725:3:40","nodeType":"YulIdentifier","src":"11725:3:40"},"nativeSrc":"11725:32:40","nodeType":"YulFunctionCall","src":"11725:32:40"},"nativeSrc":"11722:52:40","nodeType":"YulIf","src":"11722:52:40"},{"nativeSrc":"11783:38:40","nodeType":"YulAssignment","src":"11783:38:40","value":{"arguments":[{"name":"headStart","nativeSrc":"11811:9:40","nodeType":"YulIdentifier","src":"11811:9:40"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"11793:17:40","nodeType":"YulIdentifier","src":"11793:17:40"},"nativeSrc":"11793:28:40","nodeType":"YulFunctionCall","src":"11793:28:40"},"variableNames":[{"name":"value0","nativeSrc":"11783:6:40","nodeType":"YulIdentifier","src":"11783:6:40"}]},{"nativeSrc":"11830:47:40","nodeType":"YulAssignment","src":"11830:47:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11862:9:40","nodeType":"YulIdentifier","src":"11862:9:40"},{"kind":"number","nativeSrc":"11873:2:40","nodeType":"YulLiteral","src":"11873:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11858:3:40","nodeType":"YulIdentifier","src":"11858:3:40"},"nativeSrc":"11858:18:40","nodeType":"YulFunctionCall","src":"11858:18:40"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"11840:17:40","nodeType":"YulIdentifier","src":"11840:17:40"},"nativeSrc":"11840:37:40","nodeType":"YulFunctionCall","src":"11840:37:40"},"variableNames":[{"name":"value1","nativeSrc":"11830:6:40","nodeType":"YulIdentifier","src":"11830:6:40"}]},{"nativeSrc":"11886:46:40","nodeType":"YulVariableDeclaration","src":"11886:46:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11917:9:40","nodeType":"YulIdentifier","src":"11917:9:40"},{"kind":"number","nativeSrc":"11928:2:40","nodeType":"YulLiteral","src":"11928:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11913:3:40","nodeType":"YulIdentifier","src":"11913:3:40"},"nativeSrc":"11913:18:40","nodeType":"YulFunctionCall","src":"11913:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"11900:12:40","nodeType":"YulIdentifier","src":"11900:12:40"},"nativeSrc":"11900:32:40","nodeType":"YulFunctionCall","src":"11900:32:40"},"variables":[{"name":"offset","nativeSrc":"11890:6:40","nodeType":"YulTypedName","src":"11890:6:40","type":""}]},{"body":{"nativeSrc":"11975:16:40","nodeType":"YulBlock","src":"11975:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11984:1:40","nodeType":"YulLiteral","src":"11984:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"11987:1:40","nodeType":"YulLiteral","src":"11987:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11977:6:40","nodeType":"YulIdentifier","src":"11977:6:40"},"nativeSrc":"11977:12:40","nodeType":"YulFunctionCall","src":"11977:12:40"},"nativeSrc":"11977:12:40","nodeType":"YulExpressionStatement","src":"11977:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11947:6:40","nodeType":"YulIdentifier","src":"11947:6:40"},{"kind":"number","nativeSrc":"11955:18:40","nodeType":"YulLiteral","src":"11955:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11944:2:40","nodeType":"YulIdentifier","src":"11944:2:40"},"nativeSrc":"11944:30:40","nodeType":"YulFunctionCall","src":"11944:30:40"},"nativeSrc":"11941:50:40","nodeType":"YulIf","src":"11941:50:40"},{"nativeSrc":"12000:84:40","nodeType":"YulVariableDeclaration","src":"12000:84:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12056:9:40","nodeType":"YulIdentifier","src":"12056:9:40"},{"name":"offset","nativeSrc":"12067:6:40","nodeType":"YulIdentifier","src":"12067:6:40"}],"functionName":{"name":"add","nativeSrc":"12052:3:40","nodeType":"YulIdentifier","src":"12052:3:40"},"nativeSrc":"12052:22:40","nodeType":"YulFunctionCall","src":"12052:22:40"},{"name":"dataEnd","nativeSrc":"12076:7:40","nodeType":"YulIdentifier","src":"12076:7:40"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"12026:25:40","nodeType":"YulIdentifier","src":"12026:25:40"},"nativeSrc":"12026:58:40","nodeType":"YulFunctionCall","src":"12026:58:40"},"variables":[{"name":"value2_1","nativeSrc":"12004:8:40","nodeType":"YulTypedName","src":"12004:8:40","type":""},{"name":"value3_1","nativeSrc":"12014:8:40","nodeType":"YulTypedName","src":"12014:8:40","type":""}]},{"nativeSrc":"12093:18:40","nodeType":"YulAssignment","src":"12093:18:40","value":{"name":"value2_1","nativeSrc":"12103:8:40","nodeType":"YulIdentifier","src":"12103:8:40"},"variableNames":[{"name":"value2","nativeSrc":"12093:6:40","nodeType":"YulIdentifier","src":"12093:6:40"}]},{"nativeSrc":"12120:18:40","nodeType":"YulAssignment","src":"12120:18:40","value":{"name":"value3_1","nativeSrc":"12130:8:40","nodeType":"YulIdentifier","src":"12130:8:40"},"variableNames":[{"name":"value3","nativeSrc":"12120:6:40","nodeType":"YulIdentifier","src":"12120:6:40"}]}]},"name":"abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr","nativeSrc":"11591:553:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11654:9:40","nodeType":"YulTypedName","src":"11654:9:40","type":""},{"name":"dataEnd","nativeSrc":"11665:7:40","nodeType":"YulTypedName","src":"11665:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11677:6:40","nodeType":"YulTypedName","src":"11677:6:40","type":""},{"name":"value1","nativeSrc":"11685:6:40","nodeType":"YulTypedName","src":"11685:6:40","type":""},{"name":"value2","nativeSrc":"11693:6:40","nodeType":"YulTypedName","src":"11693:6:40","type":""},{"name":"value3","nativeSrc":"11701:6:40","nodeType":"YulTypedName","src":"11701:6:40","type":""}],"src":"11591:553:40"},{"body":{"nativeSrc":"12287:360:40","nodeType":"YulBlock","src":"12287:360:40","statements":[{"body":{"nativeSrc":"12333:16:40","nodeType":"YulBlock","src":"12333:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12342:1:40","nodeType":"YulLiteral","src":"12342:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"12345:1:40","nodeType":"YulLiteral","src":"12345:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12335:6:40","nodeType":"YulIdentifier","src":"12335:6:40"},"nativeSrc":"12335:12:40","nodeType":"YulFunctionCall","src":"12335:12:40"},"nativeSrc":"12335:12:40","nodeType":"YulExpressionStatement","src":"12335:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12308:7:40","nodeType":"YulIdentifier","src":"12308:7:40"},{"name":"headStart","nativeSrc":"12317:9:40","nodeType":"YulIdentifier","src":"12317:9:40"}],"functionName":{"name":"sub","nativeSrc":"12304:3:40","nodeType":"YulIdentifier","src":"12304:3:40"},"nativeSrc":"12304:23:40","nodeType":"YulFunctionCall","src":"12304:23:40"},{"kind":"number","nativeSrc":"12329:2:40","nodeType":"YulLiteral","src":"12329:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"12300:3:40","nodeType":"YulIdentifier","src":"12300:3:40"},"nativeSrc":"12300:32:40","nodeType":"YulFunctionCall","src":"12300:32:40"},"nativeSrc":"12297:52:40","nodeType":"YulIf","src":"12297:52:40"},{"nativeSrc":"12358:37:40","nodeType":"YulVariableDeclaration","src":"12358:37:40","value":{"arguments":[{"name":"headStart","nativeSrc":"12385:9:40","nodeType":"YulIdentifier","src":"12385:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"12372:12:40","nodeType":"YulIdentifier","src":"12372:12:40"},"nativeSrc":"12372:23:40","nodeType":"YulFunctionCall","src":"12372:23:40"},"variables":[{"name":"offset","nativeSrc":"12362:6:40","nodeType":"YulTypedName","src":"12362:6:40","type":""}]},{"body":{"nativeSrc":"12438:16:40","nodeType":"YulBlock","src":"12438:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12447:1:40","nodeType":"YulLiteral","src":"12447:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"12450:1:40","nodeType":"YulLiteral","src":"12450:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12440:6:40","nodeType":"YulIdentifier","src":"12440:6:40"},"nativeSrc":"12440:12:40","nodeType":"YulFunctionCall","src":"12440:12:40"},"nativeSrc":"12440:12:40","nodeType":"YulExpressionStatement","src":"12440:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12410:6:40","nodeType":"YulIdentifier","src":"12410:6:40"},{"kind":"number","nativeSrc":"12418:18:40","nodeType":"YulLiteral","src":"12418:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12407:2:40","nodeType":"YulIdentifier","src":"12407:2:40"},"nativeSrc":"12407:30:40","nodeType":"YulFunctionCall","src":"12407:30:40"},"nativeSrc":"12404:50:40","nodeType":"YulIf","src":"12404:50:40"},{"nativeSrc":"12463:124:40","nodeType":"YulVariableDeclaration","src":"12463:124:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12559:9:40","nodeType":"YulIdentifier","src":"12559:9:40"},{"name":"offset","nativeSrc":"12570:6:40","nodeType":"YulIdentifier","src":"12570:6:40"}],"functionName":{"name":"add","nativeSrc":"12555:3:40","nodeType":"YulIdentifier","src":"12555:3:40"},"nativeSrc":"12555:22:40","nodeType":"YulFunctionCall","src":"12555:22:40"},{"name":"dataEnd","nativeSrc":"12579:7:40","nodeType":"YulIdentifier","src":"12579:7:40"}],"functionName":{"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"12489:65:40","nodeType":"YulIdentifier","src":"12489:65:40"},"nativeSrc":"12489:98:40","nodeType":"YulFunctionCall","src":"12489:98:40"},"variables":[{"name":"value0_1","nativeSrc":"12467:8:40","nodeType":"YulTypedName","src":"12467:8:40","type":""},{"name":"value1_1","nativeSrc":"12477:8:40","nodeType":"YulTypedName","src":"12477:8:40","type":""}]},{"nativeSrc":"12596:18:40","nodeType":"YulAssignment","src":"12596:18:40","value":{"name":"value0_1","nativeSrc":"12606:8:40","nodeType":"YulIdentifier","src":"12606:8:40"},"variableNames":[{"name":"value0","nativeSrc":"12596:6:40","nodeType":"YulIdentifier","src":"12596:6:40"}]},{"nativeSrc":"12623:18:40","nodeType":"YulAssignment","src":"12623:18:40","value":{"name":"value1_1","nativeSrc":"12633:8:40","nodeType":"YulIdentifier","src":"12633:8:40"},"variableNames":[{"name":"value1","nativeSrc":"12623:6:40","nodeType":"YulIdentifier","src":"12623:6:40"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"12149:498:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12245:9:40","nodeType":"YulTypedName","src":"12245:9:40","type":""},{"name":"dataEnd","nativeSrc":"12256:7:40","nodeType":"YulTypedName","src":"12256:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12268:6:40","nodeType":"YulTypedName","src":"12268:6:40","type":""},{"name":"value1","nativeSrc":"12276:6:40","nodeType":"YulTypedName","src":"12276:6:40","type":""}],"src":"12149:498:40"},{"body":{"nativeSrc":"12815:492:40","nodeType":"YulBlock","src":"12815:492:40","statements":[{"nativeSrc":"12825:33:40","nodeType":"YulVariableDeclaration","src":"12825:33:40","value":{"arguments":[{"name":"dataEnd","nativeSrc":"12839:7:40","nodeType":"YulIdentifier","src":"12839:7:40"},{"name":"headStart","nativeSrc":"12848:9:40","nodeType":"YulIdentifier","src":"12848:9:40"}],"functionName":{"name":"sub","nativeSrc":"12835:3:40","nodeType":"YulIdentifier","src":"12835:3:40"},"nativeSrc":"12835:23:40","nodeType":"YulFunctionCall","src":"12835:23:40"},"variables":[{"name":"_1","nativeSrc":"12829:2:40","nodeType":"YulTypedName","src":"12829:2:40","type":""}]},{"body":{"nativeSrc":"12883:16:40","nodeType":"YulBlock","src":"12883:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12892:1:40","nodeType":"YulLiteral","src":"12892:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"12895:1:40","nodeType":"YulLiteral","src":"12895:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12885:6:40","nodeType":"YulIdentifier","src":"12885:6:40"},"nativeSrc":"12885:12:40","nodeType":"YulFunctionCall","src":"12885:12:40"},"nativeSrc":"12885:12:40","nodeType":"YulExpressionStatement","src":"12885:12:40"}]},"condition":{"arguments":[{"name":"_1","nativeSrc":"12874:2:40","nodeType":"YulIdentifier","src":"12874:2:40"},{"kind":"number","nativeSrc":"12878:3:40","nodeType":"YulLiteral","src":"12878:3:40","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"12870:3:40","nodeType":"YulIdentifier","src":"12870:3:40"},"nativeSrc":"12870:12:40","nodeType":"YulFunctionCall","src":"12870:12:40"},"nativeSrc":"12867:32:40","nodeType":"YulIf","src":"12867:32:40"},{"nativeSrc":"12908:37:40","nodeType":"YulVariableDeclaration","src":"12908:37:40","value":{"arguments":[{"name":"headStart","nativeSrc":"12935:9:40","nodeType":"YulIdentifier","src":"12935:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"12922:12:40","nodeType":"YulIdentifier","src":"12922:12:40"},"nativeSrc":"12922:23:40","nodeType":"YulFunctionCall","src":"12922:23:40"},"variables":[{"name":"offset","nativeSrc":"12912:6:40","nodeType":"YulTypedName","src":"12912:6:40","type":""}]},{"body":{"nativeSrc":"12988:16:40","nodeType":"YulBlock","src":"12988:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12997:1:40","nodeType":"YulLiteral","src":"12997:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"13000:1:40","nodeType":"YulLiteral","src":"13000:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12990:6:40","nodeType":"YulIdentifier","src":"12990:6:40"},"nativeSrc":"12990:12:40","nodeType":"YulFunctionCall","src":"12990:12:40"},"nativeSrc":"12990:12:40","nodeType":"YulExpressionStatement","src":"12990:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12960:6:40","nodeType":"YulIdentifier","src":"12960:6:40"},{"kind":"number","nativeSrc":"12968:18:40","nodeType":"YulLiteral","src":"12968:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12957:2:40","nodeType":"YulIdentifier","src":"12957:2:40"},"nativeSrc":"12957:30:40","nodeType":"YulFunctionCall","src":"12957:30:40"},"nativeSrc":"12954:50:40","nodeType":"YulIf","src":"12954:50:40"},{"nativeSrc":"13013:79:40","nodeType":"YulAssignment","src":"13013:79:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13064:9:40","nodeType":"YulIdentifier","src":"13064:9:40"},{"name":"offset","nativeSrc":"13075:6:40","nodeType":"YulIdentifier","src":"13075:6:40"}],"functionName":{"name":"add","nativeSrc":"13060:3:40","nodeType":"YulIdentifier","src":"13060:3:40"},"nativeSrc":"13060:22:40","nodeType":"YulFunctionCall","src":"13060:22:40"},{"name":"dataEnd","nativeSrc":"13084:7:40","nodeType":"YulIdentifier","src":"13084:7:40"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"13023:36:40","nodeType":"YulIdentifier","src":"13023:36:40"},"nativeSrc":"13023:69:40","nodeType":"YulFunctionCall","src":"13023:69:40"},"variableNames":[{"name":"value0","nativeSrc":"13013:6:40","nodeType":"YulIdentifier","src":"13013:6:40"}]},{"body":{"nativeSrc":"13130:16:40","nodeType":"YulBlock","src":"13130:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13139:1:40","nodeType":"YulLiteral","src":"13139:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"13142:1:40","nodeType":"YulLiteral","src":"13142:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13132:6:40","nodeType":"YulIdentifier","src":"13132:6:40"},"nativeSrc":"13132:12:40","nodeType":"YulFunctionCall","src":"13132:12:40"},"nativeSrc":"13132:12:40","nodeType":"YulExpressionStatement","src":"13132:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"13112:2:40","nodeType":"YulIdentifier","src":"13112:2:40"},{"arguments":[{"kind":"number","nativeSrc":"13120:2:40","nodeType":"YulLiteral","src":"13120:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"13116:3:40","nodeType":"YulIdentifier","src":"13116:3:40"},"nativeSrc":"13116:7:40","nodeType":"YulFunctionCall","src":"13116:7:40"}],"functionName":{"name":"add","nativeSrc":"13108:3:40","nodeType":"YulIdentifier","src":"13108:3:40"},"nativeSrc":"13108:16:40","nodeType":"YulFunctionCall","src":"13108:16:40"},{"kind":"number","nativeSrc":"13126:2:40","nodeType":"YulLiteral","src":"13126:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"13104:3:40","nodeType":"YulIdentifier","src":"13104:3:40"},"nativeSrc":"13104:25:40","nodeType":"YulFunctionCall","src":"13104:25:40"},"nativeSrc":"13101:45:40","nodeType":"YulIf","src":"13101:45:40"},{"nativeSrc":"13155:28:40","nodeType":"YulAssignment","src":"13155:28:40","value":{"arguments":[{"name":"headStart","nativeSrc":"13169:9:40","nodeType":"YulIdentifier","src":"13169:9:40"},{"kind":"number","nativeSrc":"13180:2:40","nodeType":"YulLiteral","src":"13180:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13165:3:40","nodeType":"YulIdentifier","src":"13165:3:40"},"nativeSrc":"13165:18:40","nodeType":"YulFunctionCall","src":"13165:18:40"},"variableNames":[{"name":"value1","nativeSrc":"13155:6:40","nodeType":"YulIdentifier","src":"13155:6:40"}]},{"nativeSrc":"13192:45:40","nodeType":"YulVariableDeclaration","src":"13192:45:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13222:9:40","nodeType":"YulIdentifier","src":"13222:9:40"},{"kind":"number","nativeSrc":"13233:2:40","nodeType":"YulLiteral","src":"13233:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13218:3:40","nodeType":"YulIdentifier","src":"13218:3:40"},"nativeSrc":"13218:18:40","nodeType":"YulFunctionCall","src":"13218:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"13205:12:40","nodeType":"YulIdentifier","src":"13205:12:40"},"nativeSrc":"13205:32:40","nodeType":"YulFunctionCall","src":"13205:32:40"},"variables":[{"name":"value","nativeSrc":"13196:5:40","nodeType":"YulTypedName","src":"13196:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13271:5:40","nodeType":"YulIdentifier","src":"13271:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13246:24:40","nodeType":"YulIdentifier","src":"13246:24:40"},"nativeSrc":"13246:31:40","nodeType":"YulFunctionCall","src":"13246:31:40"},"nativeSrc":"13246:31:40","nodeType":"YulExpressionStatement","src":"13246:31:40"},{"nativeSrc":"13286:15:40","nodeType":"YulAssignment","src":"13286:15:40","value":{"name":"value","nativeSrc":"13296:5:40","nodeType":"YulIdentifier","src":"13296:5:40"},"variableNames":[{"name":"value2","nativeSrc":"13286:6:40","nodeType":"YulIdentifier","src":"13286:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address","nativeSrc":"12652:655:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12765:9:40","nodeType":"YulTypedName","src":"12765:9:40","type":""},{"name":"dataEnd","nativeSrc":"12776:7:40","nodeType":"YulTypedName","src":"12776:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12788:6:40","nodeType":"YulTypedName","src":"12788:6:40","type":""},{"name":"value1","nativeSrc":"12796:6:40","nodeType":"YulTypedName","src":"12796:6:40","type":""},{"name":"value2","nativeSrc":"12804:6:40","nodeType":"YulTypedName","src":"12804:6:40","type":""}],"src":"12652:655:40"},{"body":{"nativeSrc":"13561:360:40","nodeType":"YulBlock","src":"13561:360:40","statements":[{"nativeSrc":"13571:27:40","nodeType":"YulAssignment","src":"13571:27:40","value":{"arguments":[{"name":"headStart","nativeSrc":"13583:9:40","nodeType":"YulIdentifier","src":"13583:9:40"},{"kind":"number","nativeSrc":"13594:3:40","nodeType":"YulLiteral","src":"13594:3:40","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"13579:3:40","nodeType":"YulIdentifier","src":"13579:3:40"},"nativeSrc":"13579:19:40","nodeType":"YulFunctionCall","src":"13579:19:40"},"variableNames":[{"name":"tail","nativeSrc":"13571:4:40","nodeType":"YulIdentifier","src":"13571:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13614:9:40","nodeType":"YulIdentifier","src":"13614:9:40"},{"arguments":[{"name":"value0","nativeSrc":"13631:6:40","nodeType":"YulIdentifier","src":"13631:6:40"}],"functionName":{"name":"mload","nativeSrc":"13625:5:40","nodeType":"YulIdentifier","src":"13625:5:40"},"nativeSrc":"13625:13:40","nodeType":"YulFunctionCall","src":"13625:13:40"}],"functionName":{"name":"mstore","nativeSrc":"13607:6:40","nodeType":"YulIdentifier","src":"13607:6:40"},"nativeSrc":"13607:32:40","nodeType":"YulFunctionCall","src":"13607:32:40"},"nativeSrc":"13607:32:40","nodeType":"YulExpressionStatement","src":"13607:32:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13659:9:40","nodeType":"YulIdentifier","src":"13659:9:40"},{"kind":"number","nativeSrc":"13670:4:40","nodeType":"YulLiteral","src":"13670:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13655:3:40","nodeType":"YulIdentifier","src":"13655:3:40"},"nativeSrc":"13655:20:40","nodeType":"YulFunctionCall","src":"13655:20:40"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"13691:6:40","nodeType":"YulIdentifier","src":"13691:6:40"},{"kind":"number","nativeSrc":"13699:4:40","nodeType":"YulLiteral","src":"13699:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13687:3:40","nodeType":"YulIdentifier","src":"13687:3:40"},"nativeSrc":"13687:17:40","nodeType":"YulFunctionCall","src":"13687:17:40"}],"functionName":{"name":"mload","nativeSrc":"13681:5:40","nodeType":"YulIdentifier","src":"13681:5:40"},"nativeSrc":"13681:24:40","nodeType":"YulFunctionCall","src":"13681:24:40"},{"kind":"number","nativeSrc":"13707:18:40","nodeType":"YulLiteral","src":"13707:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13677:3:40","nodeType":"YulIdentifier","src":"13677:3:40"},"nativeSrc":"13677:49:40","nodeType":"YulFunctionCall","src":"13677:49:40"}],"functionName":{"name":"mstore","nativeSrc":"13648:6:40","nodeType":"YulIdentifier","src":"13648:6:40"},"nativeSrc":"13648:79:40","nodeType":"YulFunctionCall","src":"13648:79:40"},"nativeSrc":"13648:79:40","nodeType":"YulExpressionStatement","src":"13648:79:40"},{"nativeSrc":"13736:44:40","nodeType":"YulVariableDeclaration","src":"13736:44:40","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"13766:6:40","nodeType":"YulIdentifier","src":"13766:6:40"},{"kind":"number","nativeSrc":"13774:4:40","nodeType":"YulLiteral","src":"13774:4:40","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"13762:3:40","nodeType":"YulIdentifier","src":"13762:3:40"},"nativeSrc":"13762:17:40","nodeType":"YulFunctionCall","src":"13762:17:40"}],"functionName":{"name":"mload","nativeSrc":"13756:5:40","nodeType":"YulIdentifier","src":"13756:5:40"},"nativeSrc":"13756:24:40","nodeType":"YulFunctionCall","src":"13756:24:40"},"variables":[{"name":"memberValue0","nativeSrc":"13740:12:40","nodeType":"YulTypedName","src":"13740:12:40","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"13816:12:40","nodeType":"YulIdentifier","src":"13816:12:40"},{"arguments":[{"name":"headStart","nativeSrc":"13834:9:40","nodeType":"YulIdentifier","src":"13834:9:40"},{"kind":"number","nativeSrc":"13845:4:40","nodeType":"YulLiteral","src":"13845:4:40","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"13830:3:40","nodeType":"YulIdentifier","src":"13830:3:40"},"nativeSrc":"13830:20:40","nodeType":"YulFunctionCall","src":"13830:20:40"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"13789:26:40","nodeType":"YulIdentifier","src":"13789:26:40"},"nativeSrc":"13789:62:40","nodeType":"YulFunctionCall","src":"13789:62:40"},"nativeSrc":"13789:62:40","nodeType":"YulExpressionStatement","src":"13789:62:40"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"13887:6:40","nodeType":"YulIdentifier","src":"13887:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"13899:9:40","nodeType":"YulIdentifier","src":"13899:9:40"},{"kind":"number","nativeSrc":"13910:3:40","nodeType":"YulLiteral","src":"13910:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13895:3:40","nodeType":"YulIdentifier","src":"13895:3:40"},"nativeSrc":"13895:19:40","nodeType":"YulFunctionCall","src":"13895:19:40"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"13860:26:40","nodeType":"YulIdentifier","src":"13860:26:40"},"nativeSrc":"13860:55:40","nodeType":"YulFunctionCall","src":"13860:55:40"},"nativeSrc":"13860:55:40","nodeType":"YulExpressionStatement","src":"13860:55:40"}]},"name":"abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed","nativeSrc":"13312:609:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13522:9:40","nodeType":"YulTypedName","src":"13522:9:40","type":""},{"name":"value1","nativeSrc":"13533:6:40","nodeType":"YulTypedName","src":"13533:6:40","type":""},{"name":"value0","nativeSrc":"13541:6:40","nodeType":"YulTypedName","src":"13541:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13552:4:40","nodeType":"YulTypedName","src":"13552:4:40","type":""}],"src":"13312:609:40"},{"body":{"nativeSrc":"14013:301:40","nodeType":"YulBlock","src":"14013:301:40","statements":[{"body":{"nativeSrc":"14059:16:40","nodeType":"YulBlock","src":"14059:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14068:1:40","nodeType":"YulLiteral","src":"14068:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"14071:1:40","nodeType":"YulLiteral","src":"14071:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14061:6:40","nodeType":"YulIdentifier","src":"14061:6:40"},"nativeSrc":"14061:12:40","nodeType":"YulFunctionCall","src":"14061:12:40"},"nativeSrc":"14061:12:40","nodeType":"YulExpressionStatement","src":"14061:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14034:7:40","nodeType":"YulIdentifier","src":"14034:7:40"},{"name":"headStart","nativeSrc":"14043:9:40","nodeType":"YulIdentifier","src":"14043:9:40"}],"functionName":{"name":"sub","nativeSrc":"14030:3:40","nodeType":"YulIdentifier","src":"14030:3:40"},"nativeSrc":"14030:23:40","nodeType":"YulFunctionCall","src":"14030:23:40"},{"kind":"number","nativeSrc":"14055:2:40","nodeType":"YulLiteral","src":"14055:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"14026:3:40","nodeType":"YulIdentifier","src":"14026:3:40"},"nativeSrc":"14026:32:40","nodeType":"YulFunctionCall","src":"14026:32:40"},"nativeSrc":"14023:52:40","nodeType":"YulIf","src":"14023:52:40"},{"nativeSrc":"14084:36:40","nodeType":"YulVariableDeclaration","src":"14084:36:40","value":{"arguments":[{"name":"headStart","nativeSrc":"14110:9:40","nodeType":"YulIdentifier","src":"14110:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"14097:12:40","nodeType":"YulIdentifier","src":"14097:12:40"},"nativeSrc":"14097:23:40","nodeType":"YulFunctionCall","src":"14097:23:40"},"variables":[{"name":"value","nativeSrc":"14088:5:40","nodeType":"YulTypedName","src":"14088:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14154:5:40","nodeType":"YulIdentifier","src":"14154:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14129:24:40","nodeType":"YulIdentifier","src":"14129:24:40"},"nativeSrc":"14129:31:40","nodeType":"YulFunctionCall","src":"14129:31:40"},"nativeSrc":"14129:31:40","nodeType":"YulExpressionStatement","src":"14129:31:40"},{"nativeSrc":"14169:15:40","nodeType":"YulAssignment","src":"14169:15:40","value":{"name":"value","nativeSrc":"14179:5:40","nodeType":"YulIdentifier","src":"14179:5:40"},"variableNames":[{"name":"value0","nativeSrc":"14169:6:40","nodeType":"YulIdentifier","src":"14169:6:40"}]},{"nativeSrc":"14193:47:40","nodeType":"YulVariableDeclaration","src":"14193:47:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14225:9:40","nodeType":"YulIdentifier","src":"14225:9:40"},{"kind":"number","nativeSrc":"14236:2:40","nodeType":"YulLiteral","src":"14236:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14221:3:40","nodeType":"YulIdentifier","src":"14221:3:40"},"nativeSrc":"14221:18:40","nodeType":"YulFunctionCall","src":"14221:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"14208:12:40","nodeType":"YulIdentifier","src":"14208:12:40"},"nativeSrc":"14208:32:40","nodeType":"YulFunctionCall","src":"14208:32:40"},"variables":[{"name":"value_1","nativeSrc":"14197:7:40","nodeType":"YulTypedName","src":"14197:7:40","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14274:7:40","nodeType":"YulIdentifier","src":"14274:7:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14249:24:40","nodeType":"YulIdentifier","src":"14249:24:40"},"nativeSrc":"14249:33:40","nodeType":"YulFunctionCall","src":"14249:33:40"},"nativeSrc":"14249:33:40","nodeType":"YulExpressionStatement","src":"14249:33:40"},{"nativeSrc":"14291:17:40","nodeType":"YulAssignment","src":"14291:17:40","value":{"name":"value_1","nativeSrc":"14301:7:40","nodeType":"YulIdentifier","src":"14301:7:40"},"variableNames":[{"name":"value1","nativeSrc":"14291:6:40","nodeType":"YulIdentifier","src":"14291:6:40"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"13926:388:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13971:9:40","nodeType":"YulTypedName","src":"13971:9:40","type":""},{"name":"dataEnd","nativeSrc":"13982:7:40","nodeType":"YulTypedName","src":"13982:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13994:6:40","nodeType":"YulTypedName","src":"13994:6:40","type":""},{"name":"value1","nativeSrc":"14002:6:40","nodeType":"YulTypedName","src":"14002:6:40","type":""}],"src":"13926:388:40"},{"body":{"nativeSrc":"14413:140:40","nodeType":"YulBlock","src":"14413:140:40","statements":[{"body":{"nativeSrc":"14459:16:40","nodeType":"YulBlock","src":"14459:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14468:1:40","nodeType":"YulLiteral","src":"14468:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"14471:1:40","nodeType":"YulLiteral","src":"14471:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14461:6:40","nodeType":"YulIdentifier","src":"14461:6:40"},"nativeSrc":"14461:12:40","nodeType":"YulFunctionCall","src":"14461:12:40"},"nativeSrc":"14461:12:40","nodeType":"YulExpressionStatement","src":"14461:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14434:7:40","nodeType":"YulIdentifier","src":"14434:7:40"},{"name":"headStart","nativeSrc":"14443:9:40","nodeType":"YulIdentifier","src":"14443:9:40"}],"functionName":{"name":"sub","nativeSrc":"14430:3:40","nodeType":"YulIdentifier","src":"14430:3:40"},"nativeSrc":"14430:23:40","nodeType":"YulFunctionCall","src":"14430:23:40"},{"kind":"number","nativeSrc":"14455:2:40","nodeType":"YulLiteral","src":"14455:2:40","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14426:3:40","nodeType":"YulIdentifier","src":"14426:3:40"},"nativeSrc":"14426:32:40","nodeType":"YulFunctionCall","src":"14426:32:40"},"nativeSrc":"14423:52:40","nodeType":"YulIf","src":"14423:52:40"},{"nativeSrc":"14484:63:40","nodeType":"YulAssignment","src":"14484:63:40","value":{"arguments":[{"name":"headStart","nativeSrc":"14528:9:40","nodeType":"YulIdentifier","src":"14528:9:40"},{"name":"dataEnd","nativeSrc":"14539:7:40","nodeType":"YulIdentifier","src":"14539:7:40"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"14494:33:40","nodeType":"YulIdentifier","src":"14494:33:40"},"nativeSrc":"14494:53:40","nodeType":"YulFunctionCall","src":"14494:53:40"},"variableNames":[{"name":"value0","nativeSrc":"14484:6:40","nodeType":"YulIdentifier","src":"14484:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr","nativeSrc":"14319:234:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14379:9:40","nodeType":"YulTypedName","src":"14379:9:40","type":""},{"name":"dataEnd","nativeSrc":"14390:7:40","nodeType":"YulTypedName","src":"14390:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14402:6:40","nodeType":"YulTypedName","src":"14402:6:40","type":""}],"src":"14319:234:40"},{"body":{"nativeSrc":"14613:325:40","nodeType":"YulBlock","src":"14613:325:40","statements":[{"nativeSrc":"14623:22:40","nodeType":"YulAssignment","src":"14623:22:40","value":{"arguments":[{"kind":"number","nativeSrc":"14637:1:40","nodeType":"YulLiteral","src":"14637:1:40","type":"","value":"1"},{"name":"data","nativeSrc":"14640:4:40","nodeType":"YulIdentifier","src":"14640:4:40"}],"functionName":{"name":"shr","nativeSrc":"14633:3:40","nodeType":"YulIdentifier","src":"14633:3:40"},"nativeSrc":"14633:12:40","nodeType":"YulFunctionCall","src":"14633:12:40"},"variableNames":[{"name":"length","nativeSrc":"14623:6:40","nodeType":"YulIdentifier","src":"14623:6:40"}]},{"nativeSrc":"14654:38:40","nodeType":"YulVariableDeclaration","src":"14654:38:40","value":{"arguments":[{"name":"data","nativeSrc":"14684:4:40","nodeType":"YulIdentifier","src":"14684:4:40"},{"kind":"number","nativeSrc":"14690:1:40","nodeType":"YulLiteral","src":"14690:1:40","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14680:3:40","nodeType":"YulIdentifier","src":"14680:3:40"},"nativeSrc":"14680:12:40","nodeType":"YulFunctionCall","src":"14680:12:40"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"14658:18:40","nodeType":"YulTypedName","src":"14658:18:40","type":""}]},{"body":{"nativeSrc":"14731:31:40","nodeType":"YulBlock","src":"14731:31:40","statements":[{"nativeSrc":"14733:27:40","nodeType":"YulAssignment","src":"14733:27:40","value":{"arguments":[{"name":"length","nativeSrc":"14747:6:40","nodeType":"YulIdentifier","src":"14747:6:40"},{"kind":"number","nativeSrc":"14755:4:40","nodeType":"YulLiteral","src":"14755:4:40","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"14743:3:40","nodeType":"YulIdentifier","src":"14743:3:40"},"nativeSrc":"14743:17:40","nodeType":"YulFunctionCall","src":"14743:17:40"},"variableNames":[{"name":"length","nativeSrc":"14733:6:40","nodeType":"YulIdentifier","src":"14733:6:40"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"14711:18:40","nodeType":"YulIdentifier","src":"14711:18:40"}],"functionName":{"name":"iszero","nativeSrc":"14704:6:40","nodeType":"YulIdentifier","src":"14704:6:40"},"nativeSrc":"14704:26:40","nodeType":"YulFunctionCall","src":"14704:26:40"},"nativeSrc":"14701:61:40","nodeType":"YulIf","src":"14701:61:40"},{"body":{"nativeSrc":"14821:111:40","nodeType":"YulBlock","src":"14821:111:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14842:1:40","nodeType":"YulLiteral","src":"14842:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14849:3:40","nodeType":"YulLiteral","src":"14849:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"14854:10:40","nodeType":"YulLiteral","src":"14854:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14845:3:40","nodeType":"YulIdentifier","src":"14845:3:40"},"nativeSrc":"14845:20:40","nodeType":"YulFunctionCall","src":"14845:20:40"}],"functionName":{"name":"mstore","nativeSrc":"14835:6:40","nodeType":"YulIdentifier","src":"14835:6:40"},"nativeSrc":"14835:31:40","nodeType":"YulFunctionCall","src":"14835:31:40"},"nativeSrc":"14835:31:40","nodeType":"YulExpressionStatement","src":"14835:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14886:1:40","nodeType":"YulLiteral","src":"14886:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"14889:4:40","nodeType":"YulLiteral","src":"14889:4:40","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"14879:6:40","nodeType":"YulIdentifier","src":"14879:6:40"},"nativeSrc":"14879:15:40","nodeType":"YulFunctionCall","src":"14879:15:40"},"nativeSrc":"14879:15:40","nodeType":"YulExpressionStatement","src":"14879:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14914:1:40","nodeType":"YulLiteral","src":"14914:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"14917:4:40","nodeType":"YulLiteral","src":"14917:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14907:6:40","nodeType":"YulIdentifier","src":"14907:6:40"},"nativeSrc":"14907:15:40","nodeType":"YulFunctionCall","src":"14907:15:40"},"nativeSrc":"14907:15:40","nodeType":"YulExpressionStatement","src":"14907:15:40"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"14777:18:40","nodeType":"YulIdentifier","src":"14777:18:40"},{"arguments":[{"name":"length","nativeSrc":"14800:6:40","nodeType":"YulIdentifier","src":"14800:6:40"},{"kind":"number","nativeSrc":"14808:2:40","nodeType":"YulLiteral","src":"14808:2:40","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"14797:2:40","nodeType":"YulIdentifier","src":"14797:2:40"},"nativeSrc":"14797:14:40","nodeType":"YulFunctionCall","src":"14797:14:40"}],"functionName":{"name":"eq","nativeSrc":"14774:2:40","nodeType":"YulIdentifier","src":"14774:2:40"},"nativeSrc":"14774:38:40","nodeType":"YulFunctionCall","src":"14774:38:40"},"nativeSrc":"14771:161:40","nodeType":"YulIf","src":"14771:161:40"}]},"name":"extract_byte_array_length","nativeSrc":"14558:380:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14593:4:40","nodeType":"YulTypedName","src":"14593:4:40","type":""}],"returnVariables":[{"name":"length","nativeSrc":"14602:6:40","nodeType":"YulTypedName","src":"14602:6:40","type":""}],"src":"14558:380:40"},{"body":{"nativeSrc":"15024:170:40","nodeType":"YulBlock","src":"15024:170:40","statements":[{"body":{"nativeSrc":"15070:16:40","nodeType":"YulBlock","src":"15070:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15079:1:40","nodeType":"YulLiteral","src":"15079:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"15082:1:40","nodeType":"YulLiteral","src":"15082:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15072:6:40","nodeType":"YulIdentifier","src":"15072:6:40"},"nativeSrc":"15072:12:40","nodeType":"YulFunctionCall","src":"15072:12:40"},"nativeSrc":"15072:12:40","nodeType":"YulExpressionStatement","src":"15072:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15045:7:40","nodeType":"YulIdentifier","src":"15045:7:40"},{"name":"headStart","nativeSrc":"15054:9:40","nodeType":"YulIdentifier","src":"15054:9:40"}],"functionName":{"name":"sub","nativeSrc":"15041:3:40","nodeType":"YulIdentifier","src":"15041:3:40"},"nativeSrc":"15041:23:40","nodeType":"YulFunctionCall","src":"15041:23:40"},{"kind":"number","nativeSrc":"15066:2:40","nodeType":"YulLiteral","src":"15066:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15037:3:40","nodeType":"YulIdentifier","src":"15037:3:40"},"nativeSrc":"15037:32:40","nodeType":"YulFunctionCall","src":"15037:32:40"},"nativeSrc":"15034:52:40","nodeType":"YulIf","src":"15034:52:40"},{"nativeSrc":"15095:29:40","nodeType":"YulVariableDeclaration","src":"15095:29:40","value":{"arguments":[{"name":"headStart","nativeSrc":"15114:9:40","nodeType":"YulIdentifier","src":"15114:9:40"}],"functionName":{"name":"mload","nativeSrc":"15108:5:40","nodeType":"YulIdentifier","src":"15108:5:40"},"nativeSrc":"15108:16:40","nodeType":"YulFunctionCall","src":"15108:16:40"},"variables":[{"name":"value","nativeSrc":"15099:5:40","nodeType":"YulTypedName","src":"15099:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"15158:5:40","nodeType":"YulIdentifier","src":"15158:5:40"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15133:24:40","nodeType":"YulIdentifier","src":"15133:24:40"},"nativeSrc":"15133:31:40","nodeType":"YulFunctionCall","src":"15133:31:40"},"nativeSrc":"15133:31:40","nodeType":"YulExpressionStatement","src":"15133:31:40"},{"nativeSrc":"15173:15:40","nodeType":"YulAssignment","src":"15173:15:40","value":{"name":"value","nativeSrc":"15183:5:40","nodeType":"YulIdentifier","src":"15183:5:40"},"variableNames":[{"name":"value0","nativeSrc":"15173:6:40","nodeType":"YulIdentifier","src":"15173:6:40"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14943:251:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14990:9:40","nodeType":"YulTypedName","src":"14990:9:40","type":""},{"name":"dataEnd","nativeSrc":"15001:7:40","nodeType":"YulTypedName","src":"15001:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15013:6:40","nodeType":"YulTypedName","src":"15013:6:40","type":""}],"src":"14943:251:40"},{"body":{"nativeSrc":"15280:149:40","nodeType":"YulBlock","src":"15280:149:40","statements":[{"body":{"nativeSrc":"15326:16:40","nodeType":"YulBlock","src":"15326:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15335:1:40","nodeType":"YulLiteral","src":"15335:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"15338:1:40","nodeType":"YulLiteral","src":"15338:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15328:6:40","nodeType":"YulIdentifier","src":"15328:6:40"},"nativeSrc":"15328:12:40","nodeType":"YulFunctionCall","src":"15328:12:40"},"nativeSrc":"15328:12:40","nodeType":"YulExpressionStatement","src":"15328:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15301:7:40","nodeType":"YulIdentifier","src":"15301:7:40"},{"name":"headStart","nativeSrc":"15310:9:40","nodeType":"YulIdentifier","src":"15310:9:40"}],"functionName":{"name":"sub","nativeSrc":"15297:3:40","nodeType":"YulIdentifier","src":"15297:3:40"},"nativeSrc":"15297:23:40","nodeType":"YulFunctionCall","src":"15297:23:40"},{"kind":"number","nativeSrc":"15322:2:40","nodeType":"YulLiteral","src":"15322:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15293:3:40","nodeType":"YulIdentifier","src":"15293:3:40"},"nativeSrc":"15293:32:40","nodeType":"YulFunctionCall","src":"15293:32:40"},"nativeSrc":"15290:52:40","nodeType":"YulIf","src":"15290:52:40"},{"nativeSrc":"15351:14:40","nodeType":"YulVariableDeclaration","src":"15351:14:40","value":{"kind":"number","nativeSrc":"15364:1:40","nodeType":"YulLiteral","src":"15364:1:40","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"15355:5:40","nodeType":"YulTypedName","src":"15355:5:40","type":""}]},{"nativeSrc":"15374:25:40","nodeType":"YulAssignment","src":"15374:25:40","value":{"arguments":[{"name":"headStart","nativeSrc":"15389:9:40","nodeType":"YulIdentifier","src":"15389:9:40"}],"functionName":{"name":"mload","nativeSrc":"15383:5:40","nodeType":"YulIdentifier","src":"15383:5:40"},"nativeSrc":"15383:16:40","nodeType":"YulFunctionCall","src":"15383:16:40"},"variableNames":[{"name":"value","nativeSrc":"15374:5:40","nodeType":"YulIdentifier","src":"15374:5:40"}]},{"nativeSrc":"15408:15:40","nodeType":"YulAssignment","src":"15408:15:40","value":{"name":"value","nativeSrc":"15418:5:40","nodeType":"YulIdentifier","src":"15418:5:40"},"variableNames":[{"name":"value0","nativeSrc":"15408:6:40","nodeType":"YulIdentifier","src":"15408:6:40"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"15199:230:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15246:9:40","nodeType":"YulTypedName","src":"15246:9:40","type":""},{"name":"dataEnd","nativeSrc":"15257:7:40","nodeType":"YulTypedName","src":"15257:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15269:6:40","nodeType":"YulTypedName","src":"15269:6:40","type":""}],"src":"15199:230:40"},{"body":{"nativeSrc":"15466:95:40","nodeType":"YulBlock","src":"15466:95:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15483:1:40","nodeType":"YulLiteral","src":"15483:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15490:3:40","nodeType":"YulLiteral","src":"15490:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"15495:10:40","nodeType":"YulLiteral","src":"15495:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15486:3:40","nodeType":"YulIdentifier","src":"15486:3:40"},"nativeSrc":"15486:20:40","nodeType":"YulFunctionCall","src":"15486:20:40"}],"functionName":{"name":"mstore","nativeSrc":"15476:6:40","nodeType":"YulIdentifier","src":"15476:6:40"},"nativeSrc":"15476:31:40","nodeType":"YulFunctionCall","src":"15476:31:40"},"nativeSrc":"15476:31:40","nodeType":"YulExpressionStatement","src":"15476:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15523:1:40","nodeType":"YulLiteral","src":"15523:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"15526:4:40","nodeType":"YulLiteral","src":"15526:4:40","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"15516:6:40","nodeType":"YulIdentifier","src":"15516:6:40"},"nativeSrc":"15516:15:40","nodeType":"YulFunctionCall","src":"15516:15:40"},"nativeSrc":"15516:15:40","nodeType":"YulExpressionStatement","src":"15516:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15547:1:40","nodeType":"YulLiteral","src":"15547:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"15550:4:40","nodeType":"YulLiteral","src":"15550:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15540:6:40","nodeType":"YulIdentifier","src":"15540:6:40"},"nativeSrc":"15540:15:40","nodeType":"YulFunctionCall","src":"15540:15:40"},"nativeSrc":"15540:15:40","nodeType":"YulExpressionStatement","src":"15540:15:40"}]},"name":"panic_error_0x41","nativeSrc":"15434:127:40","nodeType":"YulFunctionDefinition","src":"15434:127:40"},{"body":{"nativeSrc":"15693:136:40","nodeType":"YulBlock","src":"15693:136:40","statements":[{"nativeSrc":"15703:26:40","nodeType":"YulAssignment","src":"15703:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"15715:9:40","nodeType":"YulIdentifier","src":"15715:9:40"},{"kind":"number","nativeSrc":"15726:2:40","nodeType":"YulLiteral","src":"15726:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15711:3:40","nodeType":"YulIdentifier","src":"15711:3:40"},"nativeSrc":"15711:18:40","nodeType":"YulFunctionCall","src":"15711:18:40"},"variableNames":[{"name":"tail","nativeSrc":"15703:4:40","nodeType":"YulIdentifier","src":"15703:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15745:9:40","nodeType":"YulIdentifier","src":"15745:9:40"},{"arguments":[{"name":"value0","nativeSrc":"15760:6:40","nodeType":"YulIdentifier","src":"15760:6:40"},{"kind":"number","nativeSrc":"15768:10:40","nodeType":"YulLiteral","src":"15768:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"15756:3:40","nodeType":"YulIdentifier","src":"15756:3:40"},"nativeSrc":"15756:23:40","nodeType":"YulFunctionCall","src":"15756:23:40"}],"functionName":{"name":"mstore","nativeSrc":"15738:6:40","nodeType":"YulIdentifier","src":"15738:6:40"},"nativeSrc":"15738:42:40","nodeType":"YulFunctionCall","src":"15738:42:40"},"nativeSrc":"15738:42:40","nodeType":"YulExpressionStatement","src":"15738:42:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15800:9:40","nodeType":"YulIdentifier","src":"15800:9:40"},{"kind":"number","nativeSrc":"15811:2:40","nodeType":"YulLiteral","src":"15811:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15796:3:40","nodeType":"YulIdentifier","src":"15796:3:40"},"nativeSrc":"15796:18:40","nodeType":"YulFunctionCall","src":"15796:18:40"},{"name":"value1","nativeSrc":"15816:6:40","nodeType":"YulIdentifier","src":"15816:6:40"}],"functionName":{"name":"mstore","nativeSrc":"15789:6:40","nodeType":"YulIdentifier","src":"15789:6:40"},"nativeSrc":"15789:34:40","nodeType":"YulFunctionCall","src":"15789:34:40"},"nativeSrc":"15789:34:40","nodeType":"YulExpressionStatement","src":"15789:34:40"}]},"name":"abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed","nativeSrc":"15566:263:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15654:9:40","nodeType":"YulTypedName","src":"15654:9:40","type":""},{"name":"value1","nativeSrc":"15665:6:40","nodeType":"YulTypedName","src":"15665:6:40","type":""},{"name":"value0","nativeSrc":"15673:6:40","nodeType":"YulTypedName","src":"15673:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15684:4:40","nodeType":"YulTypedName","src":"15684:4:40","type":""}],"src":"15566:263:40"},{"body":{"nativeSrc":"15866:95:40","nodeType":"YulBlock","src":"15866:95:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15883:1:40","nodeType":"YulLiteral","src":"15883:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15890:3:40","nodeType":"YulLiteral","src":"15890:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"15895:10:40","nodeType":"YulLiteral","src":"15895:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15886:3:40","nodeType":"YulIdentifier","src":"15886:3:40"},"nativeSrc":"15886:20:40","nodeType":"YulFunctionCall","src":"15886:20:40"}],"functionName":{"name":"mstore","nativeSrc":"15876:6:40","nodeType":"YulIdentifier","src":"15876:6:40"},"nativeSrc":"15876:31:40","nodeType":"YulFunctionCall","src":"15876:31:40"},"nativeSrc":"15876:31:40","nodeType":"YulExpressionStatement","src":"15876:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15923:1:40","nodeType":"YulLiteral","src":"15923:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"15926:4:40","nodeType":"YulLiteral","src":"15926:4:40","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"15916:6:40","nodeType":"YulIdentifier","src":"15916:6:40"},"nativeSrc":"15916:15:40","nodeType":"YulFunctionCall","src":"15916:15:40"},"nativeSrc":"15916:15:40","nodeType":"YulExpressionStatement","src":"15916:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15947:1:40","nodeType":"YulLiteral","src":"15947:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"15950:4:40","nodeType":"YulLiteral","src":"15950:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15940:6:40","nodeType":"YulIdentifier","src":"15940:6:40"},"nativeSrc":"15940:15:40","nodeType":"YulFunctionCall","src":"15940:15:40"},"nativeSrc":"15940:15:40","nodeType":"YulExpressionStatement","src":"15940:15:40"}]},"name":"panic_error_0x11","nativeSrc":"15834:127:40","nodeType":"YulFunctionDefinition","src":"15834:127:40"},{"body":{"nativeSrc":"16014:77:40","nodeType":"YulBlock","src":"16014:77:40","statements":[{"nativeSrc":"16024:16:40","nodeType":"YulAssignment","src":"16024:16:40","value":{"arguments":[{"name":"x","nativeSrc":"16035:1:40","nodeType":"YulIdentifier","src":"16035:1:40"},{"name":"y","nativeSrc":"16038:1:40","nodeType":"YulIdentifier","src":"16038:1:40"}],"functionName":{"name":"add","nativeSrc":"16031:3:40","nodeType":"YulIdentifier","src":"16031:3:40"},"nativeSrc":"16031:9:40","nodeType":"YulFunctionCall","src":"16031:9:40"},"variableNames":[{"name":"sum","nativeSrc":"16024:3:40","nodeType":"YulIdentifier","src":"16024:3:40"}]},{"body":{"nativeSrc":"16063:22:40","nodeType":"YulBlock","src":"16063:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16065:16:40","nodeType":"YulIdentifier","src":"16065:16:40"},"nativeSrc":"16065:18:40","nodeType":"YulFunctionCall","src":"16065:18:40"},"nativeSrc":"16065:18:40","nodeType":"YulExpressionStatement","src":"16065:18:40"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"16055:1:40","nodeType":"YulIdentifier","src":"16055:1:40"},{"name":"sum","nativeSrc":"16058:3:40","nodeType":"YulIdentifier","src":"16058:3:40"}],"functionName":{"name":"gt","nativeSrc":"16052:2:40","nodeType":"YulIdentifier","src":"16052:2:40"},"nativeSrc":"16052:10:40","nodeType":"YulFunctionCall","src":"16052:10:40"},"nativeSrc":"16049:36:40","nodeType":"YulIf","src":"16049:36:40"}]},"name":"checked_add_t_uint256","nativeSrc":"15966:125:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15997:1:40","nodeType":"YulTypedName","src":"15997:1:40","type":""},{"name":"y","nativeSrc":"16000:1:40","nodeType":"YulTypedName","src":"16000:1:40","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16006:3:40","nodeType":"YulTypedName","src":"16006:3:40","type":""}],"src":"15966:125:40"},{"body":{"nativeSrc":"16142:207:40","nodeType":"YulBlock","src":"16142:207:40","statements":[{"nativeSrc":"16152:19:40","nodeType":"YulAssignment","src":"16152:19:40","value":{"arguments":[{"kind":"number","nativeSrc":"16168:2:40","nodeType":"YulLiteral","src":"16168:2:40","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"16162:5:40","nodeType":"YulIdentifier","src":"16162:5:40"},"nativeSrc":"16162:9:40","nodeType":"YulFunctionCall","src":"16162:9:40"},"variableNames":[{"name":"memPtr","nativeSrc":"16152:6:40","nodeType":"YulIdentifier","src":"16152:6:40"}]},{"nativeSrc":"16180:35:40","nodeType":"YulVariableDeclaration","src":"16180:35:40","value":{"arguments":[{"name":"memPtr","nativeSrc":"16202:6:40","nodeType":"YulIdentifier","src":"16202:6:40"},{"kind":"number","nativeSrc":"16210:4:40","nodeType":"YulLiteral","src":"16210:4:40","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"16198:3:40","nodeType":"YulIdentifier","src":"16198:3:40"},"nativeSrc":"16198:17:40","nodeType":"YulFunctionCall","src":"16198:17:40"},"variables":[{"name":"newFreePtr","nativeSrc":"16184:10:40","nodeType":"YulTypedName","src":"16184:10:40","type":""}]},{"body":{"nativeSrc":"16290:22:40","nodeType":"YulBlock","src":"16290:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16292:16:40","nodeType":"YulIdentifier","src":"16292:16:40"},"nativeSrc":"16292:18:40","nodeType":"YulFunctionCall","src":"16292:18:40"},"nativeSrc":"16292:18:40","nodeType":"YulExpressionStatement","src":"16292:18:40"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16233:10:40","nodeType":"YulIdentifier","src":"16233:10:40"},{"kind":"number","nativeSrc":"16245:18:40","nodeType":"YulLiteral","src":"16245:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16230:2:40","nodeType":"YulIdentifier","src":"16230:2:40"},"nativeSrc":"16230:34:40","nodeType":"YulFunctionCall","src":"16230:34:40"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16269:10:40","nodeType":"YulIdentifier","src":"16269:10:40"},{"name":"memPtr","nativeSrc":"16281:6:40","nodeType":"YulIdentifier","src":"16281:6:40"}],"functionName":{"name":"lt","nativeSrc":"16266:2:40","nodeType":"YulIdentifier","src":"16266:2:40"},"nativeSrc":"16266:22:40","nodeType":"YulFunctionCall","src":"16266:22:40"}],"functionName":{"name":"or","nativeSrc":"16227:2:40","nodeType":"YulIdentifier","src":"16227:2:40"},"nativeSrc":"16227:62:40","nodeType":"YulFunctionCall","src":"16227:62:40"},"nativeSrc":"16224:88:40","nodeType":"YulIf","src":"16224:88:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16328:2:40","nodeType":"YulLiteral","src":"16328:2:40","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"16332:10:40","nodeType":"YulIdentifier","src":"16332:10:40"}],"functionName":{"name":"mstore","nativeSrc":"16321:6:40","nodeType":"YulIdentifier","src":"16321:6:40"},"nativeSrc":"16321:22:40","nodeType":"YulFunctionCall","src":"16321:22:40"},"nativeSrc":"16321:22:40","nodeType":"YulExpressionStatement","src":"16321:22:40"}]},"name":"allocate_memory_3873","nativeSrc":"16096:253:40","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"16131:6:40","nodeType":"YulTypedName","src":"16131:6:40","type":""}],"src":"16096:253:40"},{"body":{"nativeSrc":"16400:211:40","nodeType":"YulBlock","src":"16400:211:40","statements":[{"nativeSrc":"16410:21:40","nodeType":"YulAssignment","src":"16410:21:40","value":{"arguments":[{"kind":"number","nativeSrc":"16426:4:40","nodeType":"YulLiteral","src":"16426:4:40","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"16420:5:40","nodeType":"YulIdentifier","src":"16420:5:40"},"nativeSrc":"16420:11:40","nodeType":"YulFunctionCall","src":"16420:11:40"},"variableNames":[{"name":"memPtr","nativeSrc":"16410:6:40","nodeType":"YulIdentifier","src":"16410:6:40"}]},{"nativeSrc":"16440:35:40","nodeType":"YulVariableDeclaration","src":"16440:35:40","value":{"arguments":[{"name":"memPtr","nativeSrc":"16462:6:40","nodeType":"YulIdentifier","src":"16462:6:40"},{"kind":"number","nativeSrc":"16470:4:40","nodeType":"YulLiteral","src":"16470:4:40","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"16458:3:40","nodeType":"YulIdentifier","src":"16458:3:40"},"nativeSrc":"16458:17:40","nodeType":"YulFunctionCall","src":"16458:17:40"},"variables":[{"name":"newFreePtr","nativeSrc":"16444:10:40","nodeType":"YulTypedName","src":"16444:10:40","type":""}]},{"body":{"nativeSrc":"16550:22:40","nodeType":"YulBlock","src":"16550:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16552:16:40","nodeType":"YulIdentifier","src":"16552:16:40"},"nativeSrc":"16552:18:40","nodeType":"YulFunctionCall","src":"16552:18:40"},"nativeSrc":"16552:18:40","nodeType":"YulExpressionStatement","src":"16552:18:40"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16493:10:40","nodeType":"YulIdentifier","src":"16493:10:40"},{"kind":"number","nativeSrc":"16505:18:40","nodeType":"YulLiteral","src":"16505:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16490:2:40","nodeType":"YulIdentifier","src":"16490:2:40"},"nativeSrc":"16490:34:40","nodeType":"YulFunctionCall","src":"16490:34:40"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16529:10:40","nodeType":"YulIdentifier","src":"16529:10:40"},{"name":"memPtr","nativeSrc":"16541:6:40","nodeType":"YulIdentifier","src":"16541:6:40"}],"functionName":{"name":"lt","nativeSrc":"16526:2:40","nodeType":"YulIdentifier","src":"16526:2:40"},"nativeSrc":"16526:22:40","nodeType":"YulFunctionCall","src":"16526:22:40"}],"functionName":{"name":"or","nativeSrc":"16487:2:40","nodeType":"YulIdentifier","src":"16487:2:40"},"nativeSrc":"16487:62:40","nodeType":"YulFunctionCall","src":"16487:62:40"},"nativeSrc":"16484:88:40","nodeType":"YulIf","src":"16484:88:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16588:4:40","nodeType":"YulLiteral","src":"16588:4:40","type":"","value":"0x40"},{"name":"newFreePtr","nativeSrc":"16594:10:40","nodeType":"YulIdentifier","src":"16594:10:40"}],"functionName":{"name":"mstore","nativeSrc":"16581:6:40","nodeType":"YulIdentifier","src":"16581:6:40"},"nativeSrc":"16581:24:40","nodeType":"YulFunctionCall","src":"16581:24:40"},"nativeSrc":"16581:24:40","nodeType":"YulExpressionStatement","src":"16581:24:40"}]},"name":"allocate_memory_3874","nativeSrc":"16354:257:40","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"16389:6:40","nodeType":"YulTypedName","src":"16389:6:40","type":""}],"src":"16354:257:40"},{"body":{"nativeSrc":"16661:230:40","nodeType":"YulBlock","src":"16661:230:40","statements":[{"nativeSrc":"16671:19:40","nodeType":"YulAssignment","src":"16671:19:40","value":{"arguments":[{"kind":"number","nativeSrc":"16687:2:40","nodeType":"YulLiteral","src":"16687:2:40","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"16681:5:40","nodeType":"YulIdentifier","src":"16681:5:40"},"nativeSrc":"16681:9:40","nodeType":"YulFunctionCall","src":"16681:9:40"},"variableNames":[{"name":"memPtr","nativeSrc":"16671:6:40","nodeType":"YulIdentifier","src":"16671:6:40"}]},{"nativeSrc":"16699:58:40","nodeType":"YulVariableDeclaration","src":"16699:58:40","value":{"arguments":[{"name":"memPtr","nativeSrc":"16721:6:40","nodeType":"YulIdentifier","src":"16721:6:40"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"16737:4:40","nodeType":"YulIdentifier","src":"16737:4:40"},{"kind":"number","nativeSrc":"16743:2:40","nodeType":"YulLiteral","src":"16743:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16733:3:40","nodeType":"YulIdentifier","src":"16733:3:40"},"nativeSrc":"16733:13:40","nodeType":"YulFunctionCall","src":"16733:13:40"},{"arguments":[{"kind":"number","nativeSrc":"16752:2:40","nodeType":"YulLiteral","src":"16752:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"16748:3:40","nodeType":"YulIdentifier","src":"16748:3:40"},"nativeSrc":"16748:7:40","nodeType":"YulFunctionCall","src":"16748:7:40"}],"functionName":{"name":"and","nativeSrc":"16729:3:40","nodeType":"YulIdentifier","src":"16729:3:40"},"nativeSrc":"16729:27:40","nodeType":"YulFunctionCall","src":"16729:27:40"}],"functionName":{"name":"add","nativeSrc":"16717:3:40","nodeType":"YulIdentifier","src":"16717:3:40"},"nativeSrc":"16717:40:40","nodeType":"YulFunctionCall","src":"16717:40:40"},"variables":[{"name":"newFreePtr","nativeSrc":"16703:10:40","nodeType":"YulTypedName","src":"16703:10:40","type":""}]},{"body":{"nativeSrc":"16832:22:40","nodeType":"YulBlock","src":"16832:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16834:16:40","nodeType":"YulIdentifier","src":"16834:16:40"},"nativeSrc":"16834:18:40","nodeType":"YulFunctionCall","src":"16834:18:40"},"nativeSrc":"16834:18:40","nodeType":"YulExpressionStatement","src":"16834:18:40"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16775:10:40","nodeType":"YulIdentifier","src":"16775:10:40"},{"kind":"number","nativeSrc":"16787:18:40","nodeType":"YulLiteral","src":"16787:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16772:2:40","nodeType":"YulIdentifier","src":"16772:2:40"},"nativeSrc":"16772:34:40","nodeType":"YulFunctionCall","src":"16772:34:40"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16811:10:40","nodeType":"YulIdentifier","src":"16811:10:40"},{"name":"memPtr","nativeSrc":"16823:6:40","nodeType":"YulIdentifier","src":"16823:6:40"}],"functionName":{"name":"lt","nativeSrc":"16808:2:40","nodeType":"YulIdentifier","src":"16808:2:40"},"nativeSrc":"16808:22:40","nodeType":"YulFunctionCall","src":"16808:22:40"}],"functionName":{"name":"or","nativeSrc":"16769:2:40","nodeType":"YulIdentifier","src":"16769:2:40"},"nativeSrc":"16769:62:40","nodeType":"YulFunctionCall","src":"16769:62:40"},"nativeSrc":"16766:88:40","nodeType":"YulIf","src":"16766:88:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16870:2:40","nodeType":"YulLiteral","src":"16870:2:40","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"16874:10:40","nodeType":"YulIdentifier","src":"16874:10:40"}],"functionName":{"name":"mstore","nativeSrc":"16863:6:40","nodeType":"YulIdentifier","src":"16863:6:40"},"nativeSrc":"16863:22:40","nodeType":"YulFunctionCall","src":"16863:22:40"},"nativeSrc":"16863:22:40","nodeType":"YulExpressionStatement","src":"16863:22:40"}]},"name":"allocate_memory","nativeSrc":"16616:275:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"16641:4:40","nodeType":"YulTypedName","src":"16641:4:40","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"16650:6:40","nodeType":"YulTypedName","src":"16650:6:40","type":""}],"src":"16616:275:40"},{"body":{"nativeSrc":"16953:129:40","nodeType":"YulBlock","src":"16953:129:40","statements":[{"body":{"nativeSrc":"16997:22:40","nodeType":"YulBlock","src":"16997:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16999:16:40","nodeType":"YulIdentifier","src":"16999:16:40"},"nativeSrc":"16999:18:40","nodeType":"YulFunctionCall","src":"16999:18:40"},"nativeSrc":"16999:18:40","nodeType":"YulExpressionStatement","src":"16999:18:40"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"16969:6:40","nodeType":"YulIdentifier","src":"16969:6:40"},{"kind":"number","nativeSrc":"16977:18:40","nodeType":"YulLiteral","src":"16977:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16966:2:40","nodeType":"YulIdentifier","src":"16966:2:40"},"nativeSrc":"16966:30:40","nodeType":"YulFunctionCall","src":"16966:30:40"},"nativeSrc":"16963:56:40","nodeType":"YulIf","src":"16963:56:40"},{"nativeSrc":"17028:48:40","nodeType":"YulAssignment","src":"17028:48:40","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"17048:6:40","nodeType":"YulIdentifier","src":"17048:6:40"},{"kind":"number","nativeSrc":"17056:2:40","nodeType":"YulLiteral","src":"17056:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"17044:3:40","nodeType":"YulIdentifier","src":"17044:3:40"},"nativeSrc":"17044:15:40","nodeType":"YulFunctionCall","src":"17044:15:40"},{"arguments":[{"kind":"number","nativeSrc":"17065:2:40","nodeType":"YulLiteral","src":"17065:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"17061:3:40","nodeType":"YulIdentifier","src":"17061:3:40"},"nativeSrc":"17061:7:40","nodeType":"YulFunctionCall","src":"17061:7:40"}],"functionName":{"name":"and","nativeSrc":"17040:3:40","nodeType":"YulIdentifier","src":"17040:3:40"},"nativeSrc":"17040:29:40","nodeType":"YulFunctionCall","src":"17040:29:40"},{"kind":"number","nativeSrc":"17071:4:40","nodeType":"YulLiteral","src":"17071:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17036:3:40","nodeType":"YulIdentifier","src":"17036:3:40"},"nativeSrc":"17036:40:40","nodeType":"YulFunctionCall","src":"17036:40:40"},"variableNames":[{"name":"size","nativeSrc":"17028:4:40","nodeType":"YulIdentifier","src":"17028:4:40"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"16896:186:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"16933:6:40","nodeType":"YulTypedName","src":"16933:6:40","type":""}],"returnVariables":[{"name":"size","nativeSrc":"16944:4:40","nodeType":"YulTypedName","src":"16944:4:40","type":""}],"src":"16896:186:40"},{"body":{"nativeSrc":"17293:1578:40","nodeType":"YulBlock","src":"17293:1578:40","statements":[{"body":{"nativeSrc":"17337:22:40","nodeType":"YulBlock","src":"17337:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"17339:16:40","nodeType":"YulIdentifier","src":"17339:16:40"},"nativeSrc":"17339:18:40","nodeType":"YulFunctionCall","src":"17339:18:40"},"nativeSrc":"17339:18:40","nodeType":"YulExpressionStatement","src":"17339:18:40"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"17309:6:40","nodeType":"YulIdentifier","src":"17309:6:40"},{"kind":"number","nativeSrc":"17317:18:40","nodeType":"YulLiteral","src":"17317:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17306:2:40","nodeType":"YulIdentifier","src":"17306:2:40"},"nativeSrc":"17306:30:40","nodeType":"YulFunctionCall","src":"17306:30:40"},"nativeSrc":"17303:56:40","nodeType":"YulIf","src":"17303:56:40"},{"nativeSrc":"17368:24:40","nodeType":"YulVariableDeclaration","src":"17368:24:40","value":{"arguments":[{"kind":"number","nativeSrc":"17382:1:40","nodeType":"YulLiteral","src":"17382:1:40","type":"","value":"5"},{"name":"length","nativeSrc":"17385:6:40","nodeType":"YulIdentifier","src":"17385:6:40"}],"functionName":{"name":"shl","nativeSrc":"17378:3:40","nodeType":"YulIdentifier","src":"17378:3:40"},"nativeSrc":"17378:14:40","nodeType":"YulFunctionCall","src":"17378:14:40"},"variables":[{"name":"_1","nativeSrc":"17372:2:40","nodeType":"YulTypedName","src":"17372:2:40","type":""}]},{"nativeSrc":"17401:41:40","nodeType":"YulVariableDeclaration","src":"17401:41:40","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"17432:2:40","nodeType":"YulIdentifier","src":"17432:2:40"},{"kind":"number","nativeSrc":"17436:4:40","nodeType":"YulLiteral","src":"17436:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17428:3:40","nodeType":"YulIdentifier","src":"17428:3:40"},"nativeSrc":"17428:13:40","nodeType":"YulFunctionCall","src":"17428:13:40"}],"functionName":{"name":"allocate_memory","nativeSrc":"17412:15:40","nodeType":"YulIdentifier","src":"17412:15:40"},"nativeSrc":"17412:30:40","nodeType":"YulFunctionCall","src":"17412:30:40"},"variables":[{"name":"dst","nativeSrc":"17405:3:40","nodeType":"YulTypedName","src":"17405:3:40","type":""}]},{"nativeSrc":"17451:16:40","nodeType":"YulVariableDeclaration","src":"17451:16:40","value":{"name":"dst","nativeSrc":"17464:3:40","nodeType":"YulIdentifier","src":"17464:3:40"},"variables":[{"name":"array","nativeSrc":"17455:5:40","nodeType":"YulTypedName","src":"17455:5:40","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"17483:3:40","nodeType":"YulIdentifier","src":"17483:3:40"},{"name":"length","nativeSrc":"17488:6:40","nodeType":"YulIdentifier","src":"17488:6:40"}],"functionName":{"name":"mstore","nativeSrc":"17476:6:40","nodeType":"YulIdentifier","src":"17476:6:40"},"nativeSrc":"17476:19:40","nodeType":"YulFunctionCall","src":"17476:19:40"},"nativeSrc":"17476:19:40","nodeType":"YulExpressionStatement","src":"17476:19:40"},{"nativeSrc":"17504:21:40","nodeType":"YulAssignment","src":"17504:21:40","value":{"arguments":[{"name":"dst","nativeSrc":"17515:3:40","nodeType":"YulIdentifier","src":"17515:3:40"},{"kind":"number","nativeSrc":"17520:4:40","nodeType":"YulLiteral","src":"17520:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17511:3:40","nodeType":"YulIdentifier","src":"17511:3:40"},"nativeSrc":"17511:14:40","nodeType":"YulFunctionCall","src":"17511:14:40"},"variableNames":[{"name":"dst","nativeSrc":"17504:3:40","nodeType":"YulIdentifier","src":"17504:3:40"}]},{"nativeSrc":"17534:28:40","nodeType":"YulVariableDeclaration","src":"17534:28:40","value":{"arguments":[{"name":"value","nativeSrc":"17552:5:40","nodeType":"YulIdentifier","src":"17552:5:40"},{"name":"_1","nativeSrc":"17559:2:40","nodeType":"YulIdentifier","src":"17559:2:40"}],"functionName":{"name":"add","nativeSrc":"17548:3:40","nodeType":"YulIdentifier","src":"17548:3:40"},"nativeSrc":"17548:14:40","nodeType":"YulFunctionCall","src":"17548:14:40"},"variables":[{"name":"srcEnd","nativeSrc":"17538:6:40","nodeType":"YulTypedName","src":"17538:6:40","type":""}]},{"body":{"nativeSrc":"17601:16:40","nodeType":"YulBlock","src":"17601:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17610:1:40","nodeType":"YulLiteral","src":"17610:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"17613:1:40","nodeType":"YulLiteral","src":"17613:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17603:6:40","nodeType":"YulIdentifier","src":"17603:6:40"},"nativeSrc":"17603:12:40","nodeType":"YulFunctionCall","src":"17603:12:40"},"nativeSrc":"17603:12:40","nodeType":"YulExpressionStatement","src":"17603:12:40"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"17577:6:40","nodeType":"YulIdentifier","src":"17577:6:40"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"17585:12:40","nodeType":"YulIdentifier","src":"17585:12:40"},"nativeSrc":"17585:14:40","nodeType":"YulFunctionCall","src":"17585:14:40"}],"functionName":{"name":"gt","nativeSrc":"17574:2:40","nodeType":"YulIdentifier","src":"17574:2:40"},"nativeSrc":"17574:26:40","nodeType":"YulFunctionCall","src":"17574:26:40"},"nativeSrc":"17571:46:40","nodeType":"YulIf","src":"17571:46:40"},{"nativeSrc":"17626:16:40","nodeType":"YulVariableDeclaration","src":"17626:16:40","value":{"name":"value","nativeSrc":"17637:5:40","nodeType":"YulIdentifier","src":"17637:5:40"},"variables":[{"name":"src","nativeSrc":"17630:3:40","nodeType":"YulTypedName","src":"17630:3:40","type":""}]},{"body":{"nativeSrc":"17709:1129:40","nodeType":"YulBlock","src":"17709:1129:40","statements":[{"nativeSrc":"17723:36:40","nodeType":"YulVariableDeclaration","src":"17723:36:40","value":{"arguments":[{"name":"src","nativeSrc":"17755:3:40","nodeType":"YulIdentifier","src":"17755:3:40"}],"functionName":{"name":"calldataload","nativeSrc":"17742:12:40","nodeType":"YulIdentifier","src":"17742:12:40"},"nativeSrc":"17742:17:40","nodeType":"YulFunctionCall","src":"17742:17:40"},"variables":[{"name":"innerOffset","nativeSrc":"17727:11:40","nodeType":"YulTypedName","src":"17727:11:40","type":""}]},{"body":{"nativeSrc":"17811:16:40","nodeType":"YulBlock","src":"17811:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17820:1:40","nodeType":"YulLiteral","src":"17820:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"17823:1:40","nodeType":"YulLiteral","src":"17823:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17813:6:40","nodeType":"YulIdentifier","src":"17813:6:40"},"nativeSrc":"17813:12:40","nodeType":"YulFunctionCall","src":"17813:12:40"},"nativeSrc":"17813:12:40","nodeType":"YulExpressionStatement","src":"17813:12:40"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"17778:11:40","nodeType":"YulIdentifier","src":"17778:11:40"},{"kind":"number","nativeSrc":"17791:18:40","nodeType":"YulLiteral","src":"17791:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17775:2:40","nodeType":"YulIdentifier","src":"17775:2:40"},"nativeSrc":"17775:35:40","nodeType":"YulFunctionCall","src":"17775:35:40"},"nativeSrc":"17772:55:40","nodeType":"YulIf","src":"17772:55:40"},{"nativeSrc":"17840:33:40","nodeType":"YulVariableDeclaration","src":"17840:33:40","value":{"arguments":[{"name":"value","nativeSrc":"17854:5:40","nodeType":"YulIdentifier","src":"17854:5:40"},{"name":"innerOffset","nativeSrc":"17861:11:40","nodeType":"YulIdentifier","src":"17861:11:40"}],"functionName":{"name":"add","nativeSrc":"17850:3:40","nodeType":"YulIdentifier","src":"17850:3:40"},"nativeSrc":"17850:23:40","nodeType":"YulFunctionCall","src":"17850:23:40"},"variables":[{"name":"_2","nativeSrc":"17844:2:40","nodeType":"YulTypedName","src":"17844:2:40","type":""}]},{"body":{"nativeSrc":"17924:16:40","nodeType":"YulBlock","src":"17924:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17933:1:40","nodeType":"YulLiteral","src":"17933:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"17936:1:40","nodeType":"YulLiteral","src":"17936:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17926:6:40","nodeType":"YulIdentifier","src":"17926:6:40"},"nativeSrc":"17926:12:40","nodeType":"YulFunctionCall","src":"17926:12:40"},"nativeSrc":"17926:12:40","nodeType":"YulExpressionStatement","src":"17926:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"17897:12:40","nodeType":"YulIdentifier","src":"17897:12:40"},"nativeSrc":"17897:14:40","nodeType":"YulFunctionCall","src":"17897:14:40"},{"name":"_2","nativeSrc":"17913:2:40","nodeType":"YulIdentifier","src":"17913:2:40"}],"functionName":{"name":"sub","nativeSrc":"17893:3:40","nodeType":"YulIdentifier","src":"17893:3:40"},"nativeSrc":"17893:23:40","nodeType":"YulFunctionCall","src":"17893:23:40"},{"kind":"number","nativeSrc":"17918:4:40","nodeType":"YulLiteral","src":"17918:4:40","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"17889:3:40","nodeType":"YulIdentifier","src":"17889:3:40"},"nativeSrc":"17889:34:40","nodeType":"YulFunctionCall","src":"17889:34:40"},"nativeSrc":"17886:54:40","nodeType":"YulIf","src":"17886:54:40"},{"nativeSrc":"17953:37:40","nodeType":"YulVariableDeclaration","src":"17953:37:40","value":{"arguments":[],"functionName":{"name":"allocate_memory_3873","nativeSrc":"17968:20:40","nodeType":"YulIdentifier","src":"17968:20:40"},"nativeSrc":"17968:22:40","nodeType":"YulFunctionCall","src":"17968:22:40"},"variables":[{"name":"value_1","nativeSrc":"17957:7:40","nodeType":"YulTypedName","src":"17957:7:40","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"18010:7:40","nodeType":"YulIdentifier","src":"18010:7:40"},{"arguments":[{"name":"_2","nativeSrc":"18037:2:40","nodeType":"YulIdentifier","src":"18037:2:40"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"18019:17:40","nodeType":"YulIdentifier","src":"18019:17:40"},"nativeSrc":"18019:21:40","nodeType":"YulFunctionCall","src":"18019:21:40"}],"functionName":{"name":"mstore","nativeSrc":"18003:6:40","nodeType":"YulIdentifier","src":"18003:6:40"},"nativeSrc":"18003:38:40","nodeType":"YulFunctionCall","src":"18003:38:40"},"nativeSrc":"18003:38:40","nodeType":"YulExpressionStatement","src":"18003:38:40"},{"expression":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"18065:7:40","nodeType":"YulIdentifier","src":"18065:7:40"},{"kind":"number","nativeSrc":"18074:4:40","nodeType":"YulLiteral","src":"18074:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18061:3:40","nodeType":"YulIdentifier","src":"18061:3:40"},"nativeSrc":"18061:18:40","nodeType":"YulFunctionCall","src":"18061:18:40"},{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"18103:2:40","nodeType":"YulIdentifier","src":"18103:2:40"},{"kind":"number","nativeSrc":"18107:4:40","nodeType":"YulLiteral","src":"18107:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18099:3:40","nodeType":"YulIdentifier","src":"18099:3:40"},"nativeSrc":"18099:13:40","nodeType":"YulFunctionCall","src":"18099:13:40"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"18081:17:40","nodeType":"YulIdentifier","src":"18081:17:40"},"nativeSrc":"18081:32:40","nodeType":"YulFunctionCall","src":"18081:32:40"}],"functionName":{"name":"mstore","nativeSrc":"18054:6:40","nodeType":"YulIdentifier","src":"18054:6:40"},"nativeSrc":"18054:60:40","nodeType":"YulFunctionCall","src":"18054:60:40"},"nativeSrc":"18054:60:40","nodeType":"YulExpressionStatement","src":"18054:60:40"},{"nativeSrc":"18127:39:40","nodeType":"YulVariableDeclaration","src":"18127:39:40","value":{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"18158:2:40","nodeType":"YulIdentifier","src":"18158:2:40"},{"kind":"number","nativeSrc":"18162:2:40","nodeType":"YulLiteral","src":"18162:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18154:3:40","nodeType":"YulIdentifier","src":"18154:3:40"},"nativeSrc":"18154:11:40","nodeType":"YulFunctionCall","src":"18154:11:40"}],"functionName":{"name":"calldataload","nativeSrc":"18141:12:40","nodeType":"YulIdentifier","src":"18141:12:40"},"nativeSrc":"18141:25:40","nodeType":"YulFunctionCall","src":"18141:25:40"},"variables":[{"name":"offset","nativeSrc":"18131:6:40","nodeType":"YulTypedName","src":"18131:6:40","type":""}]},{"body":{"nativeSrc":"18213:16:40","nodeType":"YulBlock","src":"18213:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18222:1:40","nodeType":"YulLiteral","src":"18222:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"18225:1:40","nodeType":"YulLiteral","src":"18225:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18215:6:40","nodeType":"YulIdentifier","src":"18215:6:40"},"nativeSrc":"18215:12:40","nodeType":"YulFunctionCall","src":"18215:12:40"},"nativeSrc":"18215:12:40","nodeType":"YulExpressionStatement","src":"18215:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"18185:6:40","nodeType":"YulIdentifier","src":"18185:6:40"},{"kind":"number","nativeSrc":"18193:18:40","nodeType":"YulLiteral","src":"18193:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"18182:2:40","nodeType":"YulIdentifier","src":"18182:2:40"},"nativeSrc":"18182:30:40","nodeType":"YulFunctionCall","src":"18182:30:40"},"nativeSrc":"18179:50:40","nodeType":"YulIf","src":"18179:50:40"},{"nativeSrc":"18242:25:40","nodeType":"YulVariableDeclaration","src":"18242:25:40","value":{"arguments":[{"name":"_2","nativeSrc":"18256:2:40","nodeType":"YulIdentifier","src":"18256:2:40"},{"name":"offset","nativeSrc":"18260:6:40","nodeType":"YulIdentifier","src":"18260:6:40"}],"functionName":{"name":"add","nativeSrc":"18252:3:40","nodeType":"YulIdentifier","src":"18252:3:40"},"nativeSrc":"18252:15:40","nodeType":"YulFunctionCall","src":"18252:15:40"},"variables":[{"name":"_3","nativeSrc":"18246:2:40","nodeType":"YulTypedName","src":"18246:2:40","type":""}]},{"body":{"nativeSrc":"18326:16:40","nodeType":"YulBlock","src":"18326:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18335:1:40","nodeType":"YulLiteral","src":"18335:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"18338:1:40","nodeType":"YulLiteral","src":"18338:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18328:6:40","nodeType":"YulIdentifier","src":"18328:6:40"},"nativeSrc":"18328:12:40","nodeType":"YulFunctionCall","src":"18328:12:40"},"nativeSrc":"18328:12:40","nodeType":"YulExpressionStatement","src":"18328:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nativeSrc":"18298:2:40","nodeType":"YulIdentifier","src":"18298:2:40"},{"kind":"number","nativeSrc":"18302:4:40","nodeType":"YulLiteral","src":"18302:4:40","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"18294:3:40","nodeType":"YulIdentifier","src":"18294:3:40"},"nativeSrc":"18294:13:40","nodeType":"YulFunctionCall","src":"18294:13:40"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"18309:12:40","nodeType":"YulIdentifier","src":"18309:12:40"},"nativeSrc":"18309:14:40","nodeType":"YulFunctionCall","src":"18309:14:40"}],"functionName":{"name":"slt","nativeSrc":"18290:3:40","nodeType":"YulIdentifier","src":"18290:3:40"},"nativeSrc":"18290:34:40","nodeType":"YulFunctionCall","src":"18290:34:40"}],"functionName":{"name":"iszero","nativeSrc":"18283:6:40","nodeType":"YulIdentifier","src":"18283:6:40"},"nativeSrc":"18283:42:40","nodeType":"YulFunctionCall","src":"18283:42:40"},"nativeSrc":"18280:62:40","nodeType":"YulIf","src":"18280:62:40"},{"nativeSrc":"18355:32:40","nodeType":"YulVariableDeclaration","src":"18355:32:40","value":{"arguments":[{"name":"_3","nativeSrc":"18384:2:40","nodeType":"YulIdentifier","src":"18384:2:40"}],"functionName":{"name":"calldataload","nativeSrc":"18371:12:40","nodeType":"YulIdentifier","src":"18371:12:40"},"nativeSrc":"18371:16:40","nodeType":"YulFunctionCall","src":"18371:16:40"},"variables":[{"name":"length_1","nativeSrc":"18359:8:40","nodeType":"YulTypedName","src":"18359:8:40","type":""}]},{"nativeSrc":"18400:69:40","nodeType":"YulVariableDeclaration","src":"18400:69:40","value":{"arguments":[{"arguments":[{"name":"length_1","nativeSrc":"18459:8:40","nodeType":"YulIdentifier","src":"18459:8:40"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"18431:27:40","nodeType":"YulIdentifier","src":"18431:27:40"},"nativeSrc":"18431:37:40","nodeType":"YulFunctionCall","src":"18431:37:40"}],"functionName":{"name":"allocate_memory","nativeSrc":"18415:15:40","nodeType":"YulIdentifier","src":"18415:15:40"},"nativeSrc":"18415:54:40","nodeType":"YulFunctionCall","src":"18415:54:40"},"variables":[{"name":"array_1","nativeSrc":"18404:7:40","nodeType":"YulTypedName","src":"18404:7:40","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"18489:7:40","nodeType":"YulIdentifier","src":"18489:7:40"},{"name":"length_1","nativeSrc":"18498:8:40","nodeType":"YulIdentifier","src":"18498:8:40"}],"functionName":{"name":"mstore","nativeSrc":"18482:6:40","nodeType":"YulIdentifier","src":"18482:6:40"},"nativeSrc":"18482:25:40","nodeType":"YulFunctionCall","src":"18482:25:40"},"nativeSrc":"18482:25:40","nodeType":"YulExpressionStatement","src":"18482:25:40"},{"body":{"nativeSrc":"18572:16:40","nodeType":"YulBlock","src":"18572:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18581:1:40","nodeType":"YulLiteral","src":"18581:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"18584:1:40","nodeType":"YulLiteral","src":"18584:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18574:6:40","nodeType":"YulIdentifier","src":"18574:6:40"},"nativeSrc":"18574:12:40","nodeType":"YulFunctionCall","src":"18574:12:40"},"nativeSrc":"18574:12:40","nodeType":"YulExpressionStatement","src":"18574:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nativeSrc":"18534:2:40","nodeType":"YulIdentifier","src":"18534:2:40"},{"name":"length_1","nativeSrc":"18538:8:40","nodeType":"YulIdentifier","src":"18538:8:40"}],"functionName":{"name":"add","nativeSrc":"18530:3:40","nodeType":"YulIdentifier","src":"18530:3:40"},"nativeSrc":"18530:17:40","nodeType":"YulFunctionCall","src":"18530:17:40"},{"kind":"number","nativeSrc":"18549:4:40","nodeType":"YulLiteral","src":"18549:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18526:3:40","nodeType":"YulIdentifier","src":"18526:3:40"},"nativeSrc":"18526:28:40","nodeType":"YulFunctionCall","src":"18526:28:40"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"18556:12:40","nodeType":"YulIdentifier","src":"18556:12:40"},"nativeSrc":"18556:14:40","nodeType":"YulFunctionCall","src":"18556:14:40"}],"functionName":{"name":"gt","nativeSrc":"18523:2:40","nodeType":"YulIdentifier","src":"18523:2:40"},"nativeSrc":"18523:48:40","nodeType":"YulFunctionCall","src":"18523:48:40"},"nativeSrc":"18520:68:40","nodeType":"YulIf","src":"18520:68:40"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"18618:7:40","nodeType":"YulIdentifier","src":"18618:7:40"},{"kind":"number","nativeSrc":"18627:4:40","nodeType":"YulLiteral","src":"18627:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18614:3:40","nodeType":"YulIdentifier","src":"18614:3:40"},"nativeSrc":"18614:18:40","nodeType":"YulFunctionCall","src":"18614:18:40"},{"arguments":[{"name":"_3","nativeSrc":"18638:2:40","nodeType":"YulIdentifier","src":"18638:2:40"},{"kind":"number","nativeSrc":"18642:4:40","nodeType":"YulLiteral","src":"18642:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18634:3:40","nodeType":"YulIdentifier","src":"18634:3:40"},"nativeSrc":"18634:13:40","nodeType":"YulFunctionCall","src":"18634:13:40"},{"name":"length_1","nativeSrc":"18649:8:40","nodeType":"YulIdentifier","src":"18649:8:40"}],"functionName":{"name":"calldatacopy","nativeSrc":"18601:12:40","nodeType":"YulIdentifier","src":"18601:12:40"},"nativeSrc":"18601:57:40","nodeType":"YulFunctionCall","src":"18601:57:40"},"nativeSrc":"18601:57:40","nodeType":"YulExpressionStatement","src":"18601:57:40"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"18686:7:40","nodeType":"YulIdentifier","src":"18686:7:40"},{"name":"length_1","nativeSrc":"18695:8:40","nodeType":"YulIdentifier","src":"18695:8:40"}],"functionName":{"name":"add","nativeSrc":"18682:3:40","nodeType":"YulIdentifier","src":"18682:3:40"},"nativeSrc":"18682:22:40","nodeType":"YulFunctionCall","src":"18682:22:40"},{"kind":"number","nativeSrc":"18706:4:40","nodeType":"YulLiteral","src":"18706:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18678:3:40","nodeType":"YulIdentifier","src":"18678:3:40"},"nativeSrc":"18678:33:40","nodeType":"YulFunctionCall","src":"18678:33:40"},{"kind":"number","nativeSrc":"18713:1:40","nodeType":"YulLiteral","src":"18713:1:40","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"18671:6:40","nodeType":"YulIdentifier","src":"18671:6:40"},"nativeSrc":"18671:44:40","nodeType":"YulFunctionCall","src":"18671:44:40"},"nativeSrc":"18671:44:40","nodeType":"YulExpressionStatement","src":"18671:44:40"},{"expression":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"18739:7:40","nodeType":"YulIdentifier","src":"18739:7:40"},{"kind":"number","nativeSrc":"18748:2:40","nodeType":"YulLiteral","src":"18748:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18735:3:40","nodeType":"YulIdentifier","src":"18735:3:40"},"nativeSrc":"18735:16:40","nodeType":"YulFunctionCall","src":"18735:16:40"},{"name":"array_1","nativeSrc":"18753:7:40","nodeType":"YulIdentifier","src":"18753:7:40"}],"functionName":{"name":"mstore","nativeSrc":"18728:6:40","nodeType":"YulIdentifier","src":"18728:6:40"},"nativeSrc":"18728:33:40","nodeType":"YulFunctionCall","src":"18728:33:40"},"nativeSrc":"18728:33:40","nodeType":"YulExpressionStatement","src":"18728:33:40"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"18781:3:40","nodeType":"YulIdentifier","src":"18781:3:40"},{"name":"value_1","nativeSrc":"18786:7:40","nodeType":"YulIdentifier","src":"18786:7:40"}],"functionName":{"name":"mstore","nativeSrc":"18774:6:40","nodeType":"YulIdentifier","src":"18774:6:40"},"nativeSrc":"18774:20:40","nodeType":"YulFunctionCall","src":"18774:20:40"},"nativeSrc":"18774:20:40","nodeType":"YulExpressionStatement","src":"18774:20:40"},{"nativeSrc":"18807:21:40","nodeType":"YulAssignment","src":"18807:21:40","value":{"arguments":[{"name":"dst","nativeSrc":"18818:3:40","nodeType":"YulIdentifier","src":"18818:3:40"},{"kind":"number","nativeSrc":"18823:4:40","nodeType":"YulLiteral","src":"18823:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18814:3:40","nodeType":"YulIdentifier","src":"18814:3:40"},"nativeSrc":"18814:14:40","nodeType":"YulFunctionCall","src":"18814:14:40"},"variableNames":[{"name":"dst","nativeSrc":"18807:3:40","nodeType":"YulIdentifier","src":"18807:3:40"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"17662:3:40","nodeType":"YulIdentifier","src":"17662:3:40"},{"name":"srcEnd","nativeSrc":"17667:6:40","nodeType":"YulIdentifier","src":"17667:6:40"}],"functionName":{"name":"lt","nativeSrc":"17659:2:40","nodeType":"YulIdentifier","src":"17659:2:40"},"nativeSrc":"17659:15:40","nodeType":"YulFunctionCall","src":"17659:15:40"},"nativeSrc":"17651:1187:40","nodeType":"YulForLoop","post":{"nativeSrc":"17675:25:40","nodeType":"YulBlock","src":"17675:25:40","statements":[{"nativeSrc":"17677:21:40","nodeType":"YulAssignment","src":"17677:21:40","value":{"arguments":[{"name":"src","nativeSrc":"17688:3:40","nodeType":"YulIdentifier","src":"17688:3:40"},{"kind":"number","nativeSrc":"17693:4:40","nodeType":"YulLiteral","src":"17693:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17684:3:40","nodeType":"YulIdentifier","src":"17684:3:40"},"nativeSrc":"17684:14:40","nodeType":"YulFunctionCall","src":"17684:14:40"},"variableNames":[{"name":"src","nativeSrc":"17677:3:40","nodeType":"YulIdentifier","src":"17677:3:40"}]}]},"pre":{"nativeSrc":"17655:3:40","nodeType":"YulBlock","src":"17655:3:40","statements":[]},"src":"17651:1187:40"},{"nativeSrc":"18847:18:40","nodeType":"YulAssignment","src":"18847:18:40","value":{"name":"array","nativeSrc":"18860:5:40","nodeType":"YulIdentifier","src":"18860:5:40"},"variableNames":[{"name":"converted","nativeSrc":"18847:9:40","nodeType":"YulIdentifier","src":"18847:9:40"}]}]},"name":"convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","nativeSrc":"17087:1784:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"17261:5:40","nodeType":"YulTypedName","src":"17261:5:40","type":""},{"name":"length","nativeSrc":"17268:6:40","nodeType":"YulTypedName","src":"17268:6:40","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"17279:9:40","nodeType":"YulTypedName","src":"17279:9:40","type":""}],"src":"17087:1784:40"},{"body":{"nativeSrc":"19006:201:40","nodeType":"YulBlock","src":"19006:201:40","statements":[{"body":{"nativeSrc":"19044:16:40","nodeType":"YulBlock","src":"19044:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19053:1:40","nodeType":"YulLiteral","src":"19053:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"19056:1:40","nodeType":"YulLiteral","src":"19056:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19046:6:40","nodeType":"YulIdentifier","src":"19046:6:40"},"nativeSrc":"19046:12:40","nodeType":"YulFunctionCall","src":"19046:12:40"},"nativeSrc":"19046:12:40","nodeType":"YulExpressionStatement","src":"19046:12:40"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"19022:10:40","nodeType":"YulIdentifier","src":"19022:10:40"},{"name":"endIndex","nativeSrc":"19034:8:40","nodeType":"YulIdentifier","src":"19034:8:40"}],"functionName":{"name":"gt","nativeSrc":"19019:2:40","nodeType":"YulIdentifier","src":"19019:2:40"},"nativeSrc":"19019:24:40","nodeType":"YulFunctionCall","src":"19019:24:40"},"nativeSrc":"19016:44:40","nodeType":"YulIf","src":"19016:44:40"},{"body":{"nativeSrc":"19093:16:40","nodeType":"YulBlock","src":"19093:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19102:1:40","nodeType":"YulLiteral","src":"19102:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"19105:1:40","nodeType":"YulLiteral","src":"19105:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19095:6:40","nodeType":"YulIdentifier","src":"19095:6:40"},"nativeSrc":"19095:12:40","nodeType":"YulFunctionCall","src":"19095:12:40"},"nativeSrc":"19095:12:40","nodeType":"YulExpressionStatement","src":"19095:12:40"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"19075:8:40","nodeType":"YulIdentifier","src":"19075:8:40"},{"name":"length","nativeSrc":"19085:6:40","nodeType":"YulIdentifier","src":"19085:6:40"}],"functionName":{"name":"gt","nativeSrc":"19072:2:40","nodeType":"YulIdentifier","src":"19072:2:40"},"nativeSrc":"19072:20:40","nodeType":"YulFunctionCall","src":"19072:20:40"},"nativeSrc":"19069:40:40","nodeType":"YulIf","src":"19069:40:40"},{"nativeSrc":"19118:36:40","nodeType":"YulAssignment","src":"19118:36:40","value":{"arguments":[{"name":"offset","nativeSrc":"19135:6:40","nodeType":"YulIdentifier","src":"19135:6:40"},{"name":"startIndex","nativeSrc":"19143:10:40","nodeType":"YulIdentifier","src":"19143:10:40"}],"functionName":{"name":"add","nativeSrc":"19131:3:40","nodeType":"YulIdentifier","src":"19131:3:40"},"nativeSrc":"19131:23:40","nodeType":"YulFunctionCall","src":"19131:23:40"},"variableNames":[{"name":"offsetOut","nativeSrc":"19118:9:40","nodeType":"YulIdentifier","src":"19118:9:40"}]},{"nativeSrc":"19163:38:40","nodeType":"YulAssignment","src":"19163:38:40","value":{"arguments":[{"name":"endIndex","nativeSrc":"19180:8:40","nodeType":"YulIdentifier","src":"19180:8:40"},{"name":"startIndex","nativeSrc":"19190:10:40","nodeType":"YulIdentifier","src":"19190:10:40"}],"functionName":{"name":"sub","nativeSrc":"19176:3:40","nodeType":"YulIdentifier","src":"19176:3:40"},"nativeSrc":"19176:25:40","nodeType":"YulFunctionCall","src":"19176:25:40"},"variableNames":[{"name":"lengthOut","nativeSrc":"19163:9:40","nodeType":"YulIdentifier","src":"19163:9:40"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"18876:331:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"18940:6:40","nodeType":"YulTypedName","src":"18940:6:40","type":""},{"name":"length","nativeSrc":"18948:6:40","nodeType":"YulTypedName","src":"18948:6:40","type":""},{"name":"startIndex","nativeSrc":"18956:10:40","nodeType":"YulTypedName","src":"18956:10:40","type":""},{"name":"endIndex","nativeSrc":"18968:8:40","nodeType":"YulTypedName","src":"18968:8:40","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"18981:9:40","nodeType":"YulTypedName","src":"18981:9:40","type":""},{"name":"lengthOut","nativeSrc":"18992:9:40","nodeType":"YulTypedName","src":"18992:9:40","type":""}],"src":"18876:331:40"},{"body":{"nativeSrc":"19411:277:40","nodeType":"YulBlock","src":"19411:277:40","statements":[{"nativeSrc":"19421:27:40","nodeType":"YulVariableDeclaration","src":"19421:27:40","value":{"arguments":[{"name":"value0","nativeSrc":"19441:6:40","nodeType":"YulIdentifier","src":"19441:6:40"}],"functionName":{"name":"mload","nativeSrc":"19435:5:40","nodeType":"YulIdentifier","src":"19435:5:40"},"nativeSrc":"19435:13:40","nodeType":"YulFunctionCall","src":"19435:13:40"},"variables":[{"name":"length","nativeSrc":"19425:6:40","nodeType":"YulTypedName","src":"19425:6:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"19496:6:40","nodeType":"YulIdentifier","src":"19496:6:40"},{"kind":"number","nativeSrc":"19504:4:40","nodeType":"YulLiteral","src":"19504:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19492:3:40","nodeType":"YulIdentifier","src":"19492:3:40"},"nativeSrc":"19492:17:40","nodeType":"YulFunctionCall","src":"19492:17:40"},{"name":"pos","nativeSrc":"19511:3:40","nodeType":"YulIdentifier","src":"19511:3:40"},{"name":"length","nativeSrc":"19516:6:40","nodeType":"YulIdentifier","src":"19516:6:40"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"19457:34:40","nodeType":"YulIdentifier","src":"19457:34:40"},"nativeSrc":"19457:66:40","nodeType":"YulFunctionCall","src":"19457:66:40"},"nativeSrc":"19457:66:40","nodeType":"YulExpressionStatement","src":"19457:66:40"},{"nativeSrc":"19532:29:40","nodeType":"YulVariableDeclaration","src":"19532:29:40","value":{"arguments":[{"name":"pos","nativeSrc":"19549:3:40","nodeType":"YulIdentifier","src":"19549:3:40"},{"name":"length","nativeSrc":"19554:6:40","nodeType":"YulIdentifier","src":"19554:6:40"}],"functionName":{"name":"add","nativeSrc":"19545:3:40","nodeType":"YulIdentifier","src":"19545:3:40"},"nativeSrc":"19545:16:40","nodeType":"YulFunctionCall","src":"19545:16:40"},"variables":[{"name":"end_1","nativeSrc":"19536:5:40","nodeType":"YulTypedName","src":"19536:5:40","type":""}]},{"expression":{"arguments":[{"name":"end_1","nativeSrc":"19583:5:40","nodeType":"YulIdentifier","src":"19583:5:40"},{"name":"value1","nativeSrc":"19590:6:40","nodeType":"YulIdentifier","src":"19590:6:40"},{"name":"value2","nativeSrc":"19598:6:40","nodeType":"YulIdentifier","src":"19598:6:40"}],"functionName":{"name":"calldatacopy","nativeSrc":"19570:12:40","nodeType":"YulIdentifier","src":"19570:12:40"},"nativeSrc":"19570:35:40","nodeType":"YulFunctionCall","src":"19570:35:40"},"nativeSrc":"19570:35:40","nodeType":"YulExpressionStatement","src":"19570:35:40"},{"nativeSrc":"19614:28:40","nodeType":"YulVariableDeclaration","src":"19614:28:40","value":{"arguments":[{"name":"end_1","nativeSrc":"19628:5:40","nodeType":"YulIdentifier","src":"19628:5:40"},{"name":"value2","nativeSrc":"19635:6:40","nodeType":"YulIdentifier","src":"19635:6:40"}],"functionName":{"name":"add","nativeSrc":"19624:3:40","nodeType":"YulIdentifier","src":"19624:3:40"},"nativeSrc":"19624:18:40","nodeType":"YulFunctionCall","src":"19624:18:40"},"variables":[{"name":"_1","nativeSrc":"19618:2:40","nodeType":"YulTypedName","src":"19618:2:40","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"19658:2:40","nodeType":"YulIdentifier","src":"19658:2:40"},{"kind":"number","nativeSrc":"19662:1:40","nodeType":"YulLiteral","src":"19662:1:40","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"19651:6:40","nodeType":"YulIdentifier","src":"19651:6:40"},"nativeSrc":"19651:13:40","nodeType":"YulFunctionCall","src":"19651:13:40"},"nativeSrc":"19651:13:40","nodeType":"YulExpressionStatement","src":"19651:13:40"},{"nativeSrc":"19673:9:40","nodeType":"YulAssignment","src":"19673:9:40","value":{"name":"_1","nativeSrc":"19680:2:40","nodeType":"YulIdentifier","src":"19680:2:40"},"variableNames":[{"name":"end","nativeSrc":"19673:3:40","nodeType":"YulIdentifier","src":"19673:3:40"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"19212:476:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"19371:3:40","nodeType":"YulTypedName","src":"19371:3:40","type":""},{"name":"value2","nativeSrc":"19376:6:40","nodeType":"YulTypedName","src":"19376:6:40","type":""},{"name":"value1","nativeSrc":"19384:6:40","nodeType":"YulTypedName","src":"19384:6:40","type":""},{"name":"value0","nativeSrc":"19392:6:40","nodeType":"YulTypedName","src":"19392:6:40","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19403:3:40","nodeType":"YulTypedName","src":"19403:3:40","type":""}],"src":"19212:476:40"},{"body":{"nativeSrc":"19759:200:40","nodeType":"YulBlock","src":"19759:200:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"19776:3:40","nodeType":"YulIdentifier","src":"19776:3:40"},{"name":"length","nativeSrc":"19781:6:40","nodeType":"YulIdentifier","src":"19781:6:40"}],"functionName":{"name":"mstore","nativeSrc":"19769:6:40","nodeType":"YulIdentifier","src":"19769:6:40"},"nativeSrc":"19769:19:40","nodeType":"YulFunctionCall","src":"19769:19:40"},"nativeSrc":"19769:19:40","nodeType":"YulExpressionStatement","src":"19769:19:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19814:3:40","nodeType":"YulIdentifier","src":"19814:3:40"},{"kind":"number","nativeSrc":"19819:4:40","nodeType":"YulLiteral","src":"19819:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19810:3:40","nodeType":"YulIdentifier","src":"19810:3:40"},"nativeSrc":"19810:14:40","nodeType":"YulFunctionCall","src":"19810:14:40"},{"name":"start","nativeSrc":"19826:5:40","nodeType":"YulIdentifier","src":"19826:5:40"},{"name":"length","nativeSrc":"19833:6:40","nodeType":"YulIdentifier","src":"19833:6:40"}],"functionName":{"name":"calldatacopy","nativeSrc":"19797:12:40","nodeType":"YulIdentifier","src":"19797:12:40"},"nativeSrc":"19797:43:40","nodeType":"YulFunctionCall","src":"19797:43:40"},"nativeSrc":"19797:43:40","nodeType":"YulExpressionStatement","src":"19797:43:40"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19864:3:40","nodeType":"YulIdentifier","src":"19864:3:40"},{"name":"length","nativeSrc":"19869:6:40","nodeType":"YulIdentifier","src":"19869:6:40"}],"functionName":{"name":"add","nativeSrc":"19860:3:40","nodeType":"YulIdentifier","src":"19860:3:40"},"nativeSrc":"19860:16:40","nodeType":"YulFunctionCall","src":"19860:16:40"},{"kind":"number","nativeSrc":"19878:4:40","nodeType":"YulLiteral","src":"19878:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19856:3:40","nodeType":"YulIdentifier","src":"19856:3:40"},"nativeSrc":"19856:27:40","nodeType":"YulFunctionCall","src":"19856:27:40"},{"kind":"number","nativeSrc":"19885:1:40","nodeType":"YulLiteral","src":"19885:1:40","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"19849:6:40","nodeType":"YulIdentifier","src":"19849:6:40"},"nativeSrc":"19849:38:40","nodeType":"YulFunctionCall","src":"19849:38:40"},"nativeSrc":"19849:38:40","nodeType":"YulExpressionStatement","src":"19849:38:40"},{"nativeSrc":"19896:57:40","nodeType":"YulAssignment","src":"19896:57:40","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19911:3:40","nodeType":"YulIdentifier","src":"19911:3:40"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"19924:6:40","nodeType":"YulIdentifier","src":"19924:6:40"},{"kind":"number","nativeSrc":"19932:2:40","nodeType":"YulLiteral","src":"19932:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"19920:3:40","nodeType":"YulIdentifier","src":"19920:3:40"},"nativeSrc":"19920:15:40","nodeType":"YulFunctionCall","src":"19920:15:40"},{"arguments":[{"kind":"number","nativeSrc":"19941:2:40","nodeType":"YulLiteral","src":"19941:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"19937:3:40","nodeType":"YulIdentifier","src":"19937:3:40"},"nativeSrc":"19937:7:40","nodeType":"YulFunctionCall","src":"19937:7:40"}],"functionName":{"name":"and","nativeSrc":"19916:3:40","nodeType":"YulIdentifier","src":"19916:3:40"},"nativeSrc":"19916:29:40","nodeType":"YulFunctionCall","src":"19916:29:40"}],"functionName":{"name":"add","nativeSrc":"19907:3:40","nodeType":"YulIdentifier","src":"19907:3:40"},"nativeSrc":"19907:39:40","nodeType":"YulFunctionCall","src":"19907:39:40"},{"kind":"number","nativeSrc":"19948:4:40","nodeType":"YulLiteral","src":"19948:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19903:3:40","nodeType":"YulIdentifier","src":"19903:3:40"},"nativeSrc":"19903:50:40","nodeType":"YulFunctionCall","src":"19903:50:40"},"variableNames":[{"name":"end","nativeSrc":"19896:3:40","nodeType":"YulIdentifier","src":"19896:3:40"}]}]},"name":"abi_encode_bytes_calldata","nativeSrc":"19693:266:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"19728:5:40","nodeType":"YulTypedName","src":"19728:5:40","type":""},{"name":"length","nativeSrc":"19735:6:40","nodeType":"YulTypedName","src":"19735:6:40","type":""},{"name":"pos","nativeSrc":"19743:3:40","nodeType":"YulTypedName","src":"19743:3:40","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19751:3:40","nodeType":"YulTypedName","src":"19751:3:40","type":""}],"src":"19693:266:40"},{"body":{"nativeSrc":"20093:115:40","nodeType":"YulBlock","src":"20093:115:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20110:9:40","nodeType":"YulIdentifier","src":"20110:9:40"},{"kind":"number","nativeSrc":"20121:2:40","nodeType":"YulLiteral","src":"20121:2:40","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"20103:6:40","nodeType":"YulIdentifier","src":"20103:6:40"},"nativeSrc":"20103:21:40","nodeType":"YulFunctionCall","src":"20103:21:40"},"nativeSrc":"20103:21:40","nodeType":"YulExpressionStatement","src":"20103:21:40"},{"nativeSrc":"20133:69:40","nodeType":"YulAssignment","src":"20133:69:40","value":{"arguments":[{"name":"value0","nativeSrc":"20167:6:40","nodeType":"YulIdentifier","src":"20167:6:40"},{"name":"value1","nativeSrc":"20175:6:40","nodeType":"YulIdentifier","src":"20175:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"20187:9:40","nodeType":"YulIdentifier","src":"20187:9:40"},{"kind":"number","nativeSrc":"20198:2:40","nodeType":"YulLiteral","src":"20198:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20183:3:40","nodeType":"YulIdentifier","src":"20183:3:40"},"nativeSrc":"20183:18:40","nodeType":"YulFunctionCall","src":"20183:18:40"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"20141:25:40","nodeType":"YulIdentifier","src":"20141:25:40"},"nativeSrc":"20141:61:40","nodeType":"YulFunctionCall","src":"20141:61:40"},"variableNames":[{"name":"tail","nativeSrc":"20133:4:40","nodeType":"YulIdentifier","src":"20133:4:40"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"19964:244:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20054:9:40","nodeType":"YulTypedName","src":"20054:9:40","type":""},{"name":"value1","nativeSrc":"20065:6:40","nodeType":"YulTypedName","src":"20065:6:40","type":""},{"name":"value0","nativeSrc":"20073:6:40","nodeType":"YulTypedName","src":"20073:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20084:4:40","nodeType":"YulTypedName","src":"20084:4:40","type":""}],"src":"19964:244:40"},{"body":{"nativeSrc":"20245:95:40","nodeType":"YulBlock","src":"20245:95:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20262:1:40","nodeType":"YulLiteral","src":"20262:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"20269:3:40","nodeType":"YulLiteral","src":"20269:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"20274:10:40","nodeType":"YulLiteral","src":"20274:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"20265:3:40","nodeType":"YulIdentifier","src":"20265:3:40"},"nativeSrc":"20265:20:40","nodeType":"YulFunctionCall","src":"20265:20:40"}],"functionName":{"name":"mstore","nativeSrc":"20255:6:40","nodeType":"YulIdentifier","src":"20255:6:40"},"nativeSrc":"20255:31:40","nodeType":"YulFunctionCall","src":"20255:31:40"},"nativeSrc":"20255:31:40","nodeType":"YulExpressionStatement","src":"20255:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20302:1:40","nodeType":"YulLiteral","src":"20302:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"20305:4:40","nodeType":"YulLiteral","src":"20305:4:40","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"20295:6:40","nodeType":"YulIdentifier","src":"20295:6:40"},"nativeSrc":"20295:15:40","nodeType":"YulFunctionCall","src":"20295:15:40"},"nativeSrc":"20295:15:40","nodeType":"YulExpressionStatement","src":"20295:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20326:1:40","nodeType":"YulLiteral","src":"20326:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"20329:4:40","nodeType":"YulLiteral","src":"20329:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"20319:6:40","nodeType":"YulIdentifier","src":"20319:6:40"},"nativeSrc":"20319:15:40","nodeType":"YulFunctionCall","src":"20319:15:40"},"nativeSrc":"20319:15:40","nodeType":"YulExpressionStatement","src":"20319:15:40"}]},"name":"panic_error_0x32","nativeSrc":"20213:127:40","nodeType":"YulFunctionDefinition","src":"20213:127:40"},{"body":{"nativeSrc":"20453:223:40","nodeType":"YulBlock","src":"20453:223:40","statements":[{"nativeSrc":"20463:51:40","nodeType":"YulVariableDeclaration","src":"20463:51:40","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"20502:11:40","nodeType":"YulIdentifier","src":"20502:11:40"}],"functionName":{"name":"calldataload","nativeSrc":"20489:12:40","nodeType":"YulIdentifier","src":"20489:12:40"},"nativeSrc":"20489:25:40","nodeType":"YulFunctionCall","src":"20489:25:40"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"20467:18:40","nodeType":"YulTypedName","src":"20467:18:40","type":""}]},{"body":{"nativeSrc":"20604:16:40","nodeType":"YulBlock","src":"20604:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20613:1:40","nodeType":"YulLiteral","src":"20613:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"20616:1:40","nodeType":"YulLiteral","src":"20616:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20606:6:40","nodeType":"YulIdentifier","src":"20606:6:40"},"nativeSrc":"20606:12:40","nodeType":"YulFunctionCall","src":"20606:12:40"},"nativeSrc":"20606:12:40","nodeType":"YulExpressionStatement","src":"20606:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"20537:18:40","nodeType":"YulIdentifier","src":"20537:18:40"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20565:12:40","nodeType":"YulIdentifier","src":"20565:12:40"},"nativeSrc":"20565:14:40","nodeType":"YulFunctionCall","src":"20565:14:40"},{"name":"base_ref","nativeSrc":"20581:8:40","nodeType":"YulIdentifier","src":"20581:8:40"}],"functionName":{"name":"sub","nativeSrc":"20561:3:40","nodeType":"YulIdentifier","src":"20561:3:40"},"nativeSrc":"20561:29:40","nodeType":"YulFunctionCall","src":"20561:29:40"},{"arguments":[{"kind":"number","nativeSrc":"20596:3:40","nodeType":"YulLiteral","src":"20596:3:40","type":"","value":"318"}],"functionName":{"name":"not","nativeSrc":"20592:3:40","nodeType":"YulIdentifier","src":"20592:3:40"},"nativeSrc":"20592:8:40","nodeType":"YulFunctionCall","src":"20592:8:40"}],"functionName":{"name":"add","nativeSrc":"20557:3:40","nodeType":"YulIdentifier","src":"20557:3:40"},"nativeSrc":"20557:44:40","nodeType":"YulFunctionCall","src":"20557:44:40"}],"functionName":{"name":"slt","nativeSrc":"20533:3:40","nodeType":"YulIdentifier","src":"20533:3:40"},"nativeSrc":"20533:69:40","nodeType":"YulFunctionCall","src":"20533:69:40"}],"functionName":{"name":"iszero","nativeSrc":"20526:6:40","nodeType":"YulIdentifier","src":"20526:6:40"},"nativeSrc":"20526:77:40","nodeType":"YulFunctionCall","src":"20526:77:40"},"nativeSrc":"20523:97:40","nodeType":"YulIf","src":"20523:97:40"},{"nativeSrc":"20629:41:40","nodeType":"YulAssignment","src":"20629:41:40","value":{"arguments":[{"name":"base_ref","nativeSrc":"20641:8:40","nodeType":"YulIdentifier","src":"20641:8:40"},{"name":"rel_offset_of_tail","nativeSrc":"20651:18:40","nodeType":"YulIdentifier","src":"20651:18:40"}],"functionName":{"name":"add","nativeSrc":"20637:3:40","nodeType":"YulIdentifier","src":"20637:3:40"},"nativeSrc":"20637:33:40","nodeType":"YulFunctionCall","src":"20637:33:40"},"variableNames":[{"name":"addr","nativeSrc":"20629:4:40","nodeType":"YulIdentifier","src":"20629:4:40"}]}]},"name":"access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr","nativeSrc":"20345:331:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"20418:8:40","nodeType":"YulTypedName","src":"20418:8:40","type":""},{"name":"ptr_to_tail","nativeSrc":"20428:11:40","nodeType":"YulTypedName","src":"20428:11:40","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"20444:4:40","nodeType":"YulTypedName","src":"20444:4:40","type":""}],"src":"20345:331:40"},{"body":{"nativeSrc":"20775:427:40","nodeType":"YulBlock","src":"20775:427:40","statements":[{"nativeSrc":"20785:51:40","nodeType":"YulVariableDeclaration","src":"20785:51:40","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"20824:11:40","nodeType":"YulIdentifier","src":"20824:11:40"}],"functionName":{"name":"calldataload","nativeSrc":"20811:12:40","nodeType":"YulIdentifier","src":"20811:12:40"},"nativeSrc":"20811:25:40","nodeType":"YulFunctionCall","src":"20811:25:40"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"20789:18:40","nodeType":"YulTypedName","src":"20789:18:40","type":""}]},{"body":{"nativeSrc":"20925:16:40","nodeType":"YulBlock","src":"20925:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20934:1:40","nodeType":"YulLiteral","src":"20934:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"20937:1:40","nodeType":"YulLiteral","src":"20937:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20927:6:40","nodeType":"YulIdentifier","src":"20927:6:40"},"nativeSrc":"20927:12:40","nodeType":"YulFunctionCall","src":"20927:12:40"},"nativeSrc":"20927:12:40","nodeType":"YulExpressionStatement","src":"20927:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"20859:18:40","nodeType":"YulIdentifier","src":"20859:18:40"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20887:12:40","nodeType":"YulIdentifier","src":"20887:12:40"},"nativeSrc":"20887:14:40","nodeType":"YulFunctionCall","src":"20887:14:40"},{"name":"base_ref","nativeSrc":"20903:8:40","nodeType":"YulIdentifier","src":"20903:8:40"}],"functionName":{"name":"sub","nativeSrc":"20883:3:40","nodeType":"YulIdentifier","src":"20883:3:40"},"nativeSrc":"20883:29:40","nodeType":"YulFunctionCall","src":"20883:29:40"},{"arguments":[{"kind":"number","nativeSrc":"20918:2:40","nodeType":"YulLiteral","src":"20918:2:40","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"20914:3:40","nodeType":"YulIdentifier","src":"20914:3:40"},"nativeSrc":"20914:7:40","nodeType":"YulFunctionCall","src":"20914:7:40"}],"functionName":{"name":"add","nativeSrc":"20879:3:40","nodeType":"YulIdentifier","src":"20879:3:40"},"nativeSrc":"20879:43:40","nodeType":"YulFunctionCall","src":"20879:43:40"}],"functionName":{"name":"slt","nativeSrc":"20855:3:40","nodeType":"YulIdentifier","src":"20855:3:40"},"nativeSrc":"20855:68:40","nodeType":"YulFunctionCall","src":"20855:68:40"}],"functionName":{"name":"iszero","nativeSrc":"20848:6:40","nodeType":"YulIdentifier","src":"20848:6:40"},"nativeSrc":"20848:76:40","nodeType":"YulFunctionCall","src":"20848:76:40"},"nativeSrc":"20845:96:40","nodeType":"YulIf","src":"20845:96:40"},{"nativeSrc":"20950:47:40","nodeType":"YulVariableDeclaration","src":"20950:47:40","value":{"arguments":[{"name":"base_ref","nativeSrc":"20968:8:40","nodeType":"YulIdentifier","src":"20968:8:40"},{"name":"rel_offset_of_tail","nativeSrc":"20978:18:40","nodeType":"YulIdentifier","src":"20978:18:40"}],"functionName":{"name":"add","nativeSrc":"20964:3:40","nodeType":"YulIdentifier","src":"20964:3:40"},"nativeSrc":"20964:33:40","nodeType":"YulFunctionCall","src":"20964:33:40"},"variables":[{"name":"addr_1","nativeSrc":"20954:6:40","nodeType":"YulTypedName","src":"20954:6:40","type":""}]},{"nativeSrc":"21006:30:40","nodeType":"YulAssignment","src":"21006:30:40","value":{"arguments":[{"name":"addr_1","nativeSrc":"21029:6:40","nodeType":"YulIdentifier","src":"21029:6:40"}],"functionName":{"name":"calldataload","nativeSrc":"21016:12:40","nodeType":"YulIdentifier","src":"21016:12:40"},"nativeSrc":"21016:20:40","nodeType":"YulFunctionCall","src":"21016:20:40"},"variableNames":[{"name":"length","nativeSrc":"21006:6:40","nodeType":"YulIdentifier","src":"21006:6:40"}]},{"body":{"nativeSrc":"21079:16:40","nodeType":"YulBlock","src":"21079:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21088:1:40","nodeType":"YulLiteral","src":"21088:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"21091:1:40","nodeType":"YulLiteral","src":"21091:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21081:6:40","nodeType":"YulIdentifier","src":"21081:6:40"},"nativeSrc":"21081:12:40","nodeType":"YulFunctionCall","src":"21081:12:40"},"nativeSrc":"21081:12:40","nodeType":"YulExpressionStatement","src":"21081:12:40"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"21051:6:40","nodeType":"YulIdentifier","src":"21051:6:40"},{"kind":"number","nativeSrc":"21059:18:40","nodeType":"YulLiteral","src":"21059:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"21048:2:40","nodeType":"YulIdentifier","src":"21048:2:40"},"nativeSrc":"21048:30:40","nodeType":"YulFunctionCall","src":"21048:30:40"},"nativeSrc":"21045:50:40","nodeType":"YulIf","src":"21045:50:40"},{"nativeSrc":"21104:25:40","nodeType":"YulAssignment","src":"21104:25:40","value":{"arguments":[{"name":"addr_1","nativeSrc":"21116:6:40","nodeType":"YulIdentifier","src":"21116:6:40"},{"kind":"number","nativeSrc":"21124:4:40","nodeType":"YulLiteral","src":"21124:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21112:3:40","nodeType":"YulIdentifier","src":"21112:3:40"},"nativeSrc":"21112:17:40","nodeType":"YulFunctionCall","src":"21112:17:40"},"variableNames":[{"name":"addr","nativeSrc":"21104:4:40","nodeType":"YulIdentifier","src":"21104:4:40"}]},{"body":{"nativeSrc":"21180:16:40","nodeType":"YulBlock","src":"21180:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21189:1:40","nodeType":"YulLiteral","src":"21189:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"21192:1:40","nodeType":"YulLiteral","src":"21192:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21182:6:40","nodeType":"YulIdentifier","src":"21182:6:40"},"nativeSrc":"21182:12:40","nodeType":"YulFunctionCall","src":"21182:12:40"},"nativeSrc":"21182:12:40","nodeType":"YulExpressionStatement","src":"21182:12:40"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"21145:4:40","nodeType":"YulIdentifier","src":"21145:4:40"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"21155:12:40","nodeType":"YulIdentifier","src":"21155:12:40"},"nativeSrc":"21155:14:40","nodeType":"YulFunctionCall","src":"21155:14:40"},{"name":"length","nativeSrc":"21171:6:40","nodeType":"YulIdentifier","src":"21171:6:40"}],"functionName":{"name":"sub","nativeSrc":"21151:3:40","nodeType":"YulIdentifier","src":"21151:3:40"},"nativeSrc":"21151:27:40","nodeType":"YulFunctionCall","src":"21151:27:40"}],"functionName":{"name":"sgt","nativeSrc":"21141:3:40","nodeType":"YulIdentifier","src":"21141:3:40"},"nativeSrc":"21141:38:40","nodeType":"YulFunctionCall","src":"21141:38:40"},"nativeSrc":"21138:58:40","nodeType":"YulIf","src":"21138:58:40"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"20681:521:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"20732:8:40","nodeType":"YulTypedName","src":"20732:8:40","type":""},{"name":"ptr_to_tail","nativeSrc":"20742:11:40","nodeType":"YulTypedName","src":"20742:11:40","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"20758:4:40","nodeType":"YulTypedName","src":"20758:4:40","type":""},{"name":"length","nativeSrc":"20764:6:40","nodeType":"YulTypedName","src":"20764:6:40","type":""}],"src":"20681:521:40"},{"body":{"nativeSrc":"21251:85:40","nodeType":"YulBlock","src":"21251:85:40","statements":[{"body":{"nativeSrc":"21314:16:40","nodeType":"YulBlock","src":"21314:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21323:1:40","nodeType":"YulLiteral","src":"21323:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"21326:1:40","nodeType":"YulLiteral","src":"21326:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21316:6:40","nodeType":"YulIdentifier","src":"21316:6:40"},"nativeSrc":"21316:12:40","nodeType":"YulFunctionCall","src":"21316:12:40"},"nativeSrc":"21316:12:40","nodeType":"YulExpressionStatement","src":"21316:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"21274:5:40","nodeType":"YulIdentifier","src":"21274:5:40"},{"arguments":[{"name":"value","nativeSrc":"21285:5:40","nodeType":"YulIdentifier","src":"21285:5:40"},{"kind":"number","nativeSrc":"21292:18:40","nodeType":"YulLiteral","src":"21292:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"21281:3:40","nodeType":"YulIdentifier","src":"21281:3:40"},"nativeSrc":"21281:30:40","nodeType":"YulFunctionCall","src":"21281:30:40"}],"functionName":{"name":"eq","nativeSrc":"21271:2:40","nodeType":"YulIdentifier","src":"21271:2:40"},"nativeSrc":"21271:41:40","nodeType":"YulFunctionCall","src":"21271:41:40"}],"functionName":{"name":"iszero","nativeSrc":"21264:6:40","nodeType":"YulIdentifier","src":"21264:6:40"},"nativeSrc":"21264:49:40","nodeType":"YulFunctionCall","src":"21264:49:40"},"nativeSrc":"21261:69:40","nodeType":"YulIf","src":"21261:69:40"}]},"name":"validator_revert_uint64","nativeSrc":"21207:129:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"21240:5:40","nodeType":"YulTypedName","src":"21240:5:40","type":""}],"src":"21207:129:40"},{"body":{"nativeSrc":"21656:725:40","nodeType":"YulBlock","src":"21656:725:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21673:9:40","nodeType":"YulIdentifier","src":"21673:9:40"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21706:6:40","nodeType":"YulIdentifier","src":"21706:6:40"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"21688:17:40","nodeType":"YulIdentifier","src":"21688:17:40"},"nativeSrc":"21688:25:40","nodeType":"YulFunctionCall","src":"21688:25:40"},{"kind":"number","nativeSrc":"21715:10:40","nodeType":"YulLiteral","src":"21715:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"21684:3:40","nodeType":"YulIdentifier","src":"21684:3:40"},"nativeSrc":"21684:42:40","nodeType":"YulFunctionCall","src":"21684:42:40"}],"functionName":{"name":"mstore","nativeSrc":"21666:6:40","nodeType":"YulIdentifier","src":"21666:6:40"},"nativeSrc":"21666:61:40","nodeType":"YulFunctionCall","src":"21666:61:40"},"nativeSrc":"21666:61:40","nodeType":"YulExpressionStatement","src":"21666:61:40"},{"nativeSrc":"21736:14:40","nodeType":"YulVariableDeclaration","src":"21736:14:40","value":{"kind":"number","nativeSrc":"21749:1:40","nodeType":"YulLiteral","src":"21749:1:40","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"21740:5:40","nodeType":"YulTypedName","src":"21740:5:40","type":""}]},{"nativeSrc":"21759:40:40","nodeType":"YulAssignment","src":"21759:40:40","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21785:6:40","nodeType":"YulIdentifier","src":"21785:6:40"},{"kind":"number","nativeSrc":"21793:4:40","nodeType":"YulLiteral","src":"21793:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21781:3:40","nodeType":"YulIdentifier","src":"21781:3:40"},"nativeSrc":"21781:17:40","nodeType":"YulFunctionCall","src":"21781:17:40"}],"functionName":{"name":"calldataload","nativeSrc":"21768:12:40","nodeType":"YulIdentifier","src":"21768:12:40"},"nativeSrc":"21768:31:40","nodeType":"YulFunctionCall","src":"21768:31:40"},"variableNames":[{"name":"value","nativeSrc":"21759:5:40","nodeType":"YulIdentifier","src":"21759:5:40"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21819:9:40","nodeType":"YulIdentifier","src":"21819:9:40"},{"kind":"number","nativeSrc":"21830:4:40","nodeType":"YulLiteral","src":"21830:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21815:3:40","nodeType":"YulIdentifier","src":"21815:3:40"},"nativeSrc":"21815:20:40","nodeType":"YulFunctionCall","src":"21815:20:40"},{"name":"value","nativeSrc":"21837:5:40","nodeType":"YulIdentifier","src":"21837:5:40"}],"functionName":{"name":"mstore","nativeSrc":"21808:6:40","nodeType":"YulIdentifier","src":"21808:6:40"},"nativeSrc":"21808:35:40","nodeType":"YulFunctionCall","src":"21808:35:40"},"nativeSrc":"21808:35:40","nodeType":"YulExpressionStatement","src":"21808:35:40"},{"nativeSrc":"21852:46:40","nodeType":"YulVariableDeclaration","src":"21852:46:40","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21884:6:40","nodeType":"YulIdentifier","src":"21884:6:40"},{"kind":"number","nativeSrc":"21892:4:40","nodeType":"YulLiteral","src":"21892:4:40","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"21880:3:40","nodeType":"YulIdentifier","src":"21880:3:40"},"nativeSrc":"21880:17:40","nodeType":"YulFunctionCall","src":"21880:17:40"}],"functionName":{"name":"calldataload","nativeSrc":"21867:12:40","nodeType":"YulIdentifier","src":"21867:12:40"},"nativeSrc":"21867:31:40","nodeType":"YulFunctionCall","src":"21867:31:40"},"variables":[{"name":"value_1","nativeSrc":"21856:7:40","nodeType":"YulTypedName","src":"21856:7:40","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"21931:7:40","nodeType":"YulIdentifier","src":"21931:7:40"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"21907:23:40","nodeType":"YulIdentifier","src":"21907:23:40"},"nativeSrc":"21907:32:40","nodeType":"YulFunctionCall","src":"21907:32:40"},"nativeSrc":"21907:32:40","nodeType":"YulExpressionStatement","src":"21907:32:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21959:9:40","nodeType":"YulIdentifier","src":"21959:9:40"},{"kind":"number","nativeSrc":"21970:4:40","nodeType":"YulLiteral","src":"21970:4:40","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"21955:3:40","nodeType":"YulIdentifier","src":"21955:3:40"},"nativeSrc":"21955:20:40","nodeType":"YulFunctionCall","src":"21955:20:40"},{"arguments":[{"name":"value_1","nativeSrc":"21981:7:40","nodeType":"YulIdentifier","src":"21981:7:40"},{"kind":"number","nativeSrc":"21990:18:40","nodeType":"YulLiteral","src":"21990:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"21977:3:40","nodeType":"YulIdentifier","src":"21977:3:40"},"nativeSrc":"21977:32:40","nodeType":"YulFunctionCall","src":"21977:32:40"}],"functionName":{"name":"mstore","nativeSrc":"21948:6:40","nodeType":"YulIdentifier","src":"21948:6:40"},"nativeSrc":"21948:62:40","nodeType":"YulFunctionCall","src":"21948:62:40"},"nativeSrc":"21948:62:40","nodeType":"YulExpressionStatement","src":"21948:62:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22030:9:40","nodeType":"YulIdentifier","src":"22030:9:40"},{"kind":"number","nativeSrc":"22041:2:40","nodeType":"YulLiteral","src":"22041:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"22026:3:40","nodeType":"YulIdentifier","src":"22026:3:40"},"nativeSrc":"22026:18:40","nodeType":"YulFunctionCall","src":"22026:18:40"},{"name":"value1","nativeSrc":"22046:6:40","nodeType":"YulIdentifier","src":"22046:6:40"}],"functionName":{"name":"mstore","nativeSrc":"22019:6:40","nodeType":"YulIdentifier","src":"22019:6:40"},"nativeSrc":"22019:34:40","nodeType":"YulFunctionCall","src":"22019:34:40"},"nativeSrc":"22019:34:40","nodeType":"YulExpressionStatement","src":"22019:34:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22073:9:40","nodeType":"YulIdentifier","src":"22073:9:40"},{"kind":"number","nativeSrc":"22084:3:40","nodeType":"YulLiteral","src":"22084:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"22069:3:40","nodeType":"YulIdentifier","src":"22069:3:40"},"nativeSrc":"22069:19:40","nodeType":"YulFunctionCall","src":"22069:19:40"},{"kind":"number","nativeSrc":"22090:3:40","nodeType":"YulLiteral","src":"22090:3:40","type":"","value":"224"}],"functionName":{"name":"mstore","nativeSrc":"22062:6:40","nodeType":"YulIdentifier","src":"22062:6:40"},"nativeSrc":"22062:32:40","nodeType":"YulFunctionCall","src":"22062:32:40"},"nativeSrc":"22062:32:40","nodeType":"YulExpressionStatement","src":"22062:32:40"},{"nativeSrc":"22103:76:40","nodeType":"YulVariableDeclaration","src":"22103:76:40","value":{"arguments":[{"name":"value2","nativeSrc":"22143:6:40","nodeType":"YulIdentifier","src":"22143:6:40"},{"name":"value3","nativeSrc":"22151:6:40","nodeType":"YulIdentifier","src":"22151:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"22163:9:40","nodeType":"YulIdentifier","src":"22163:9:40"},{"kind":"number","nativeSrc":"22174:3:40","nodeType":"YulLiteral","src":"22174:3:40","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"22159:3:40","nodeType":"YulIdentifier","src":"22159:3:40"},"nativeSrc":"22159:19:40","nodeType":"YulFunctionCall","src":"22159:19:40"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"22117:25:40","nodeType":"YulIdentifier","src":"22117:25:40"},"nativeSrc":"22117:62:40","nodeType":"YulFunctionCall","src":"22117:62:40"},"variables":[{"name":"tail_1","nativeSrc":"22107:6:40","nodeType":"YulTypedName","src":"22107:6:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22199:9:40","nodeType":"YulIdentifier","src":"22199:9:40"},{"kind":"number","nativeSrc":"22210:3:40","nodeType":"YulLiteral","src":"22210:3:40","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"22195:3:40","nodeType":"YulIdentifier","src":"22195:3:40"},"nativeSrc":"22195:19:40","nodeType":"YulFunctionCall","src":"22195:19:40"},{"arguments":[{"name":"value4","nativeSrc":"22220:6:40","nodeType":"YulIdentifier","src":"22220:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22236:3:40","nodeType":"YulLiteral","src":"22236:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"22241:1:40","nodeType":"YulLiteral","src":"22241:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"22232:3:40","nodeType":"YulIdentifier","src":"22232:3:40"},"nativeSrc":"22232:11:40","nodeType":"YulFunctionCall","src":"22232:11:40"},{"kind":"number","nativeSrc":"22245:1:40","nodeType":"YulLiteral","src":"22245:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"22228:3:40","nodeType":"YulIdentifier","src":"22228:3:40"},"nativeSrc":"22228:19:40","nodeType":"YulFunctionCall","src":"22228:19:40"}],"functionName":{"name":"and","nativeSrc":"22216:3:40","nodeType":"YulIdentifier","src":"22216:3:40"},"nativeSrc":"22216:32:40","nodeType":"YulFunctionCall","src":"22216:32:40"}],"functionName":{"name":"mstore","nativeSrc":"22188:6:40","nodeType":"YulIdentifier","src":"22188:6:40"},"nativeSrc":"22188:61:40","nodeType":"YulFunctionCall","src":"22188:61:40"},"nativeSrc":"22188:61:40","nodeType":"YulExpressionStatement","src":"22188:61:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22269:9:40","nodeType":"YulIdentifier","src":"22269:9:40"},{"kind":"number","nativeSrc":"22280:3:40","nodeType":"YulLiteral","src":"22280:3:40","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"22265:3:40","nodeType":"YulIdentifier","src":"22265:3:40"},"nativeSrc":"22265:19:40","nodeType":"YulFunctionCall","src":"22265:19:40"},{"arguments":[{"name":"tail_1","nativeSrc":"22290:6:40","nodeType":"YulIdentifier","src":"22290:6:40"},{"name":"headStart","nativeSrc":"22298:9:40","nodeType":"YulIdentifier","src":"22298:9:40"}],"functionName":{"name":"sub","nativeSrc":"22286:3:40","nodeType":"YulIdentifier","src":"22286:3:40"},"nativeSrc":"22286:22:40","nodeType":"YulFunctionCall","src":"22286:22:40"}],"functionName":{"name":"mstore","nativeSrc":"22258:6:40","nodeType":"YulIdentifier","src":"22258:6:40"},"nativeSrc":"22258:51:40","nodeType":"YulFunctionCall","src":"22258:51:40"},"nativeSrc":"22258:51:40","nodeType":"YulExpressionStatement","src":"22258:51:40"},{"nativeSrc":"22318:57:40","nodeType":"YulAssignment","src":"22318:57:40","value":{"arguments":[{"name":"value5","nativeSrc":"22352:6:40","nodeType":"YulIdentifier","src":"22352:6:40"},{"name":"value6","nativeSrc":"22360:6:40","nodeType":"YulIdentifier","src":"22360:6:40"},{"name":"tail_1","nativeSrc":"22368:6:40","nodeType":"YulIdentifier","src":"22368:6:40"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"22326:25:40","nodeType":"YulIdentifier","src":"22326:25:40"},"nativeSrc":"22326:49:40","nodeType":"YulFunctionCall","src":"22326:49:40"},"variableNames":[{"name":"tail","nativeSrc":"22318:4:40","nodeType":"YulIdentifier","src":"22318:4:40"}]}]},"name":"abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"21341:1040:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21577:9:40","nodeType":"YulTypedName","src":"21577:9:40","type":""},{"name":"value6","nativeSrc":"21588:6:40","nodeType":"YulTypedName","src":"21588:6:40","type":""},{"name":"value5","nativeSrc":"21596:6:40","nodeType":"YulTypedName","src":"21596:6:40","type":""},{"name":"value4","nativeSrc":"21604:6:40","nodeType":"YulTypedName","src":"21604:6:40","type":""},{"name":"value3","nativeSrc":"21612:6:40","nodeType":"YulTypedName","src":"21612:6:40","type":""},{"name":"value2","nativeSrc":"21620:6:40","nodeType":"YulTypedName","src":"21620:6:40","type":""},{"name":"value1","nativeSrc":"21628:6:40","nodeType":"YulTypedName","src":"21628:6:40","type":""},{"name":"value0","nativeSrc":"21636:6:40","nodeType":"YulTypedName","src":"21636:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21647:4:40","nodeType":"YulTypedName","src":"21647:4:40","type":""}],"src":"21341:1040:40"},{"body":{"nativeSrc":"22476:577:40","nodeType":"YulBlock","src":"22476:577:40","statements":[{"body":{"nativeSrc":"22522:16:40","nodeType":"YulBlock","src":"22522:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22531:1:40","nodeType":"YulLiteral","src":"22531:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"22534:1:40","nodeType":"YulLiteral","src":"22534:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22524:6:40","nodeType":"YulIdentifier","src":"22524:6:40"},"nativeSrc":"22524:12:40","nodeType":"YulFunctionCall","src":"22524:12:40"},"nativeSrc":"22524:12:40","nodeType":"YulExpressionStatement","src":"22524:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"22497:7:40","nodeType":"YulIdentifier","src":"22497:7:40"},{"name":"headStart","nativeSrc":"22506:9:40","nodeType":"YulIdentifier","src":"22506:9:40"}],"functionName":{"name":"sub","nativeSrc":"22493:3:40","nodeType":"YulIdentifier","src":"22493:3:40"},"nativeSrc":"22493:23:40","nodeType":"YulFunctionCall","src":"22493:23:40"},{"kind":"number","nativeSrc":"22518:2:40","nodeType":"YulLiteral","src":"22518:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"22489:3:40","nodeType":"YulIdentifier","src":"22489:3:40"},"nativeSrc":"22489:32:40","nodeType":"YulFunctionCall","src":"22489:32:40"},"nativeSrc":"22486:52:40","nodeType":"YulIf","src":"22486:52:40"},{"nativeSrc":"22547:30:40","nodeType":"YulVariableDeclaration","src":"22547:30:40","value":{"arguments":[{"name":"headStart","nativeSrc":"22567:9:40","nodeType":"YulIdentifier","src":"22567:9:40"}],"functionName":{"name":"mload","nativeSrc":"22561:5:40","nodeType":"YulIdentifier","src":"22561:5:40"},"nativeSrc":"22561:16:40","nodeType":"YulFunctionCall","src":"22561:16:40"},"variables":[{"name":"offset","nativeSrc":"22551:6:40","nodeType":"YulTypedName","src":"22551:6:40","type":""}]},{"body":{"nativeSrc":"22620:16:40","nodeType":"YulBlock","src":"22620:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22629:1:40","nodeType":"YulLiteral","src":"22629:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"22632:1:40","nodeType":"YulLiteral","src":"22632:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22622:6:40","nodeType":"YulIdentifier","src":"22622:6:40"},"nativeSrc":"22622:12:40","nodeType":"YulFunctionCall","src":"22622:12:40"},"nativeSrc":"22622:12:40","nodeType":"YulExpressionStatement","src":"22622:12:40"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"22592:6:40","nodeType":"YulIdentifier","src":"22592:6:40"},{"kind":"number","nativeSrc":"22600:18:40","nodeType":"YulLiteral","src":"22600:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"22589:2:40","nodeType":"YulIdentifier","src":"22589:2:40"},"nativeSrc":"22589:30:40","nodeType":"YulFunctionCall","src":"22589:30:40"},"nativeSrc":"22586:50:40","nodeType":"YulIf","src":"22586:50:40"},{"nativeSrc":"22645:32:40","nodeType":"YulVariableDeclaration","src":"22645:32:40","value":{"arguments":[{"name":"headStart","nativeSrc":"22659:9:40","nodeType":"YulIdentifier","src":"22659:9:40"},{"name":"offset","nativeSrc":"22670:6:40","nodeType":"YulIdentifier","src":"22670:6:40"}],"functionName":{"name":"add","nativeSrc":"22655:3:40","nodeType":"YulIdentifier","src":"22655:3:40"},"nativeSrc":"22655:22:40","nodeType":"YulFunctionCall","src":"22655:22:40"},"variables":[{"name":"_1","nativeSrc":"22649:2:40","nodeType":"YulTypedName","src":"22649:2:40","type":""}]},{"body":{"nativeSrc":"22725:16:40","nodeType":"YulBlock","src":"22725:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22734:1:40","nodeType":"YulLiteral","src":"22734:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"22737:1:40","nodeType":"YulLiteral","src":"22737:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22727:6:40","nodeType":"YulIdentifier","src":"22727:6:40"},"nativeSrc":"22727:12:40","nodeType":"YulFunctionCall","src":"22727:12:40"},"nativeSrc":"22727:12:40","nodeType":"YulExpressionStatement","src":"22727:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22704:2:40","nodeType":"YulIdentifier","src":"22704:2:40"},{"kind":"number","nativeSrc":"22708:4:40","nodeType":"YulLiteral","src":"22708:4:40","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"22700:3:40","nodeType":"YulIdentifier","src":"22700:3:40"},"nativeSrc":"22700:13:40","nodeType":"YulFunctionCall","src":"22700:13:40"},{"name":"dataEnd","nativeSrc":"22715:7:40","nodeType":"YulIdentifier","src":"22715:7:40"}],"functionName":{"name":"slt","nativeSrc":"22696:3:40","nodeType":"YulIdentifier","src":"22696:3:40"},"nativeSrc":"22696:27:40","nodeType":"YulFunctionCall","src":"22696:27:40"}],"functionName":{"name":"iszero","nativeSrc":"22689:6:40","nodeType":"YulIdentifier","src":"22689:6:40"},"nativeSrc":"22689:35:40","nodeType":"YulFunctionCall","src":"22689:35:40"},"nativeSrc":"22686:55:40","nodeType":"YulIf","src":"22686:55:40"},{"nativeSrc":"22750:23:40","nodeType":"YulVariableDeclaration","src":"22750:23:40","value":{"arguments":[{"name":"_1","nativeSrc":"22770:2:40","nodeType":"YulIdentifier","src":"22770:2:40"}],"functionName":{"name":"mload","nativeSrc":"22764:5:40","nodeType":"YulIdentifier","src":"22764:5:40"},"nativeSrc":"22764:9:40","nodeType":"YulFunctionCall","src":"22764:9:40"},"variables":[{"name":"length","nativeSrc":"22754:6:40","nodeType":"YulTypedName","src":"22754:6:40","type":""}]},{"nativeSrc":"22782:65:40","nodeType":"YulVariableDeclaration","src":"22782:65:40","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"22839:6:40","nodeType":"YulIdentifier","src":"22839:6:40"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"22811:27:40","nodeType":"YulIdentifier","src":"22811:27:40"},"nativeSrc":"22811:35:40","nodeType":"YulFunctionCall","src":"22811:35:40"}],"functionName":{"name":"allocate_memory","nativeSrc":"22795:15:40","nodeType":"YulIdentifier","src":"22795:15:40"},"nativeSrc":"22795:52:40","nodeType":"YulFunctionCall","src":"22795:52:40"},"variables":[{"name":"array","nativeSrc":"22786:5:40","nodeType":"YulTypedName","src":"22786:5:40","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"22863:5:40","nodeType":"YulIdentifier","src":"22863:5:40"},{"name":"length","nativeSrc":"22870:6:40","nodeType":"YulIdentifier","src":"22870:6:40"}],"functionName":{"name":"mstore","nativeSrc":"22856:6:40","nodeType":"YulIdentifier","src":"22856:6:40"},"nativeSrc":"22856:21:40","nodeType":"YulFunctionCall","src":"22856:21:40"},"nativeSrc":"22856:21:40","nodeType":"YulExpressionStatement","src":"22856:21:40"},{"body":{"nativeSrc":"22927:16:40","nodeType":"YulBlock","src":"22927:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22936:1:40","nodeType":"YulLiteral","src":"22936:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"22939:1:40","nodeType":"YulLiteral","src":"22939:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22929:6:40","nodeType":"YulIdentifier","src":"22929:6:40"},"nativeSrc":"22929:12:40","nodeType":"YulFunctionCall","src":"22929:12:40"},"nativeSrc":"22929:12:40","nodeType":"YulExpressionStatement","src":"22929:12:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22900:2:40","nodeType":"YulIdentifier","src":"22900:2:40"},{"name":"length","nativeSrc":"22904:6:40","nodeType":"YulIdentifier","src":"22904:6:40"}],"functionName":{"name":"add","nativeSrc":"22896:3:40","nodeType":"YulIdentifier","src":"22896:3:40"},"nativeSrc":"22896:15:40","nodeType":"YulFunctionCall","src":"22896:15:40"},{"kind":"number","nativeSrc":"22913:2:40","nodeType":"YulLiteral","src":"22913:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22892:3:40","nodeType":"YulIdentifier","src":"22892:3:40"},"nativeSrc":"22892:24:40","nodeType":"YulFunctionCall","src":"22892:24:40"},{"name":"dataEnd","nativeSrc":"22918:7:40","nodeType":"YulIdentifier","src":"22918:7:40"}],"functionName":{"name":"gt","nativeSrc":"22889:2:40","nodeType":"YulIdentifier","src":"22889:2:40"},"nativeSrc":"22889:37:40","nodeType":"YulFunctionCall","src":"22889:37:40"},"nativeSrc":"22886:57:40","nodeType":"YulIf","src":"22886:57:40"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22991:2:40","nodeType":"YulIdentifier","src":"22991:2:40"},{"kind":"number","nativeSrc":"22995:2:40","nodeType":"YulLiteral","src":"22995:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22987:3:40","nodeType":"YulIdentifier","src":"22987:3:40"},"nativeSrc":"22987:11:40","nodeType":"YulFunctionCall","src":"22987:11:40"},{"arguments":[{"name":"array","nativeSrc":"23004:5:40","nodeType":"YulIdentifier","src":"23004:5:40"},{"kind":"number","nativeSrc":"23011:2:40","nodeType":"YulLiteral","src":"23011:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23000:3:40","nodeType":"YulIdentifier","src":"23000:3:40"},"nativeSrc":"23000:14:40","nodeType":"YulFunctionCall","src":"23000:14:40"},{"name":"length","nativeSrc":"23016:6:40","nodeType":"YulIdentifier","src":"23016:6:40"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"22952:34:40","nodeType":"YulIdentifier","src":"22952:34:40"},"nativeSrc":"22952:71:40","nodeType":"YulFunctionCall","src":"22952:71:40"},"nativeSrc":"22952:71:40","nodeType":"YulExpressionStatement","src":"22952:71:40"},{"nativeSrc":"23032:15:40","nodeType":"YulAssignment","src":"23032:15:40","value":{"name":"array","nativeSrc":"23042:5:40","nodeType":"YulIdentifier","src":"23042:5:40"},"variableNames":[{"name":"value0","nativeSrc":"23032:6:40","nodeType":"YulIdentifier","src":"23032:6:40"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"22386:667:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22442:9:40","nodeType":"YulTypedName","src":"22442:9:40","type":""},{"name":"dataEnd","nativeSrc":"22453:7:40","nodeType":"YulTypedName","src":"22453:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"22465:6:40","nodeType":"YulTypedName","src":"22465:6:40","type":""}],"src":"22386:667:40"},{"body":{"nativeSrc":"23187:119:40","nodeType":"YulBlock","src":"23187:119:40","statements":[{"nativeSrc":"23197:26:40","nodeType":"YulAssignment","src":"23197:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"23209:9:40","nodeType":"YulIdentifier","src":"23209:9:40"},{"kind":"number","nativeSrc":"23220:2:40","nodeType":"YulLiteral","src":"23220:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23205:3:40","nodeType":"YulIdentifier","src":"23205:3:40"},"nativeSrc":"23205:18:40","nodeType":"YulFunctionCall","src":"23205:18:40"},"variableNames":[{"name":"tail","nativeSrc":"23197:4:40","nodeType":"YulIdentifier","src":"23197:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23239:9:40","nodeType":"YulIdentifier","src":"23239:9:40"},{"name":"value0","nativeSrc":"23250:6:40","nodeType":"YulIdentifier","src":"23250:6:40"}],"functionName":{"name":"mstore","nativeSrc":"23232:6:40","nodeType":"YulIdentifier","src":"23232:6:40"},"nativeSrc":"23232:25:40","nodeType":"YulFunctionCall","src":"23232:25:40"},"nativeSrc":"23232:25:40","nodeType":"YulExpressionStatement","src":"23232:25:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23277:9:40","nodeType":"YulIdentifier","src":"23277:9:40"},{"kind":"number","nativeSrc":"23288:2:40","nodeType":"YulLiteral","src":"23288:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23273:3:40","nodeType":"YulIdentifier","src":"23273:3:40"},"nativeSrc":"23273:18:40","nodeType":"YulFunctionCall","src":"23273:18:40"},{"name":"value1","nativeSrc":"23293:6:40","nodeType":"YulIdentifier","src":"23293:6:40"}],"functionName":{"name":"mstore","nativeSrc":"23266:6:40","nodeType":"YulIdentifier","src":"23266:6:40"},"nativeSrc":"23266:34:40","nodeType":"YulFunctionCall","src":"23266:34:40"},"nativeSrc":"23266:34:40","nodeType":"YulExpressionStatement","src":"23266:34:40"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"23058:248:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23148:9:40","nodeType":"YulTypedName","src":"23148:9:40","type":""},{"name":"value1","nativeSrc":"23159:6:40","nodeType":"YulTypedName","src":"23159:6:40","type":""},{"name":"value0","nativeSrc":"23167:6:40","nodeType":"YulTypedName","src":"23167:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23178:4:40","nodeType":"YulTypedName","src":"23178:4:40","type":""}],"src":"23058:248:40"},{"body":{"nativeSrc":"23410:93:40","nodeType":"YulBlock","src":"23410:93:40","statements":[{"nativeSrc":"23420:26:40","nodeType":"YulAssignment","src":"23420:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"23432:9:40","nodeType":"YulIdentifier","src":"23432:9:40"},{"kind":"number","nativeSrc":"23443:2:40","nodeType":"YulLiteral","src":"23443:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23428:3:40","nodeType":"YulIdentifier","src":"23428:3:40"},"nativeSrc":"23428:18:40","nodeType":"YulFunctionCall","src":"23428:18:40"},"variableNames":[{"name":"tail","nativeSrc":"23420:4:40","nodeType":"YulIdentifier","src":"23420:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23462:9:40","nodeType":"YulIdentifier","src":"23462:9:40"},{"arguments":[{"name":"value0","nativeSrc":"23477:6:40","nodeType":"YulIdentifier","src":"23477:6:40"},{"kind":"number","nativeSrc":"23485:10:40","nodeType":"YulLiteral","src":"23485:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"23473:3:40","nodeType":"YulIdentifier","src":"23473:3:40"},"nativeSrc":"23473:23:40","nodeType":"YulFunctionCall","src":"23473:23:40"}],"functionName":{"name":"mstore","nativeSrc":"23455:6:40","nodeType":"YulIdentifier","src":"23455:6:40"},"nativeSrc":"23455:42:40","nodeType":"YulFunctionCall","src":"23455:42:40"},"nativeSrc":"23455:42:40","nodeType":"YulExpressionStatement","src":"23455:42:40"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nativeSrc":"23311:192:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23379:9:40","nodeType":"YulTypedName","src":"23379:9:40","type":""},{"name":"value0","nativeSrc":"23390:6:40","nodeType":"YulTypedName","src":"23390:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23401:4:40","nodeType":"YulTypedName","src":"23401:4:40","type":""}],"src":"23311:192:40"},{"body":{"nativeSrc":"23577:176:40","nodeType":"YulBlock","src":"23577:176:40","statements":[{"body":{"nativeSrc":"23623:16:40","nodeType":"YulBlock","src":"23623:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23632:1:40","nodeType":"YulLiteral","src":"23632:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"23635:1:40","nodeType":"YulLiteral","src":"23635:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23625:6:40","nodeType":"YulIdentifier","src":"23625:6:40"},"nativeSrc":"23625:12:40","nodeType":"YulFunctionCall","src":"23625:12:40"},"nativeSrc":"23625:12:40","nodeType":"YulExpressionStatement","src":"23625:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"23598:7:40","nodeType":"YulIdentifier","src":"23598:7:40"},{"name":"headStart","nativeSrc":"23607:9:40","nodeType":"YulIdentifier","src":"23607:9:40"}],"functionName":{"name":"sub","nativeSrc":"23594:3:40","nodeType":"YulIdentifier","src":"23594:3:40"},"nativeSrc":"23594:23:40","nodeType":"YulFunctionCall","src":"23594:23:40"},{"kind":"number","nativeSrc":"23619:2:40","nodeType":"YulLiteral","src":"23619:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"23590:3:40","nodeType":"YulIdentifier","src":"23590:3:40"},"nativeSrc":"23590:32:40","nodeType":"YulFunctionCall","src":"23590:32:40"},"nativeSrc":"23587:52:40","nodeType":"YulIf","src":"23587:52:40"},{"nativeSrc":"23648:36:40","nodeType":"YulVariableDeclaration","src":"23648:36:40","value":{"arguments":[{"name":"headStart","nativeSrc":"23674:9:40","nodeType":"YulIdentifier","src":"23674:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"23661:12:40","nodeType":"YulIdentifier","src":"23661:12:40"},"nativeSrc":"23661:23:40","nodeType":"YulFunctionCall","src":"23661:23:40"},"variables":[{"name":"value","nativeSrc":"23652:5:40","nodeType":"YulTypedName","src":"23652:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23717:5:40","nodeType":"YulIdentifier","src":"23717:5:40"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"23693:23:40","nodeType":"YulIdentifier","src":"23693:23:40"},"nativeSrc":"23693:30:40","nodeType":"YulFunctionCall","src":"23693:30:40"},"nativeSrc":"23693:30:40","nodeType":"YulExpressionStatement","src":"23693:30:40"},{"nativeSrc":"23732:15:40","nodeType":"YulAssignment","src":"23732:15:40","value":{"name":"value","nativeSrc":"23742:5:40","nodeType":"YulIdentifier","src":"23742:5:40"},"variableNames":[{"name":"value0","nativeSrc":"23732:6:40","nodeType":"YulIdentifier","src":"23732:6:40"}]}]},"name":"abi_decode_tuple_t_uint64","nativeSrc":"23508:245:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23543:9:40","nodeType":"YulTypedName","src":"23543:9:40","type":""},{"name":"dataEnd","nativeSrc":"23554:7:40","nodeType":"YulTypedName","src":"23554:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"23566:6:40","nodeType":"YulTypedName","src":"23566:6:40","type":""}],"src":"23508:245:40"},{"body":{"nativeSrc":"23968:269:40","nodeType":"YulBlock","src":"23968:269:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23985:9:40","nodeType":"YulIdentifier","src":"23985:9:40"},{"arguments":[{"name":"value0","nativeSrc":"24000:6:40","nodeType":"YulIdentifier","src":"24000:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24016:3:40","nodeType":"YulLiteral","src":"24016:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"24021:1:40","nodeType":"YulLiteral","src":"24021:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24012:3:40","nodeType":"YulIdentifier","src":"24012:3:40"},"nativeSrc":"24012:11:40","nodeType":"YulFunctionCall","src":"24012:11:40"},{"kind":"number","nativeSrc":"24025:1:40","nodeType":"YulLiteral","src":"24025:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24008:3:40","nodeType":"YulIdentifier","src":"24008:3:40"},"nativeSrc":"24008:19:40","nodeType":"YulFunctionCall","src":"24008:19:40"}],"functionName":{"name":"and","nativeSrc":"23996:3:40","nodeType":"YulIdentifier","src":"23996:3:40"},"nativeSrc":"23996:32:40","nodeType":"YulFunctionCall","src":"23996:32:40"}],"functionName":{"name":"mstore","nativeSrc":"23978:6:40","nodeType":"YulIdentifier","src":"23978:6:40"},"nativeSrc":"23978:51:40","nodeType":"YulFunctionCall","src":"23978:51:40"},"nativeSrc":"23978:51:40","nodeType":"YulExpressionStatement","src":"23978:51:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24049:9:40","nodeType":"YulIdentifier","src":"24049:9:40"},{"kind":"number","nativeSrc":"24060:2:40","nodeType":"YulLiteral","src":"24060:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24045:3:40","nodeType":"YulIdentifier","src":"24045:3:40"},"nativeSrc":"24045:18:40","nodeType":"YulFunctionCall","src":"24045:18:40"},{"name":"value1","nativeSrc":"24065:6:40","nodeType":"YulIdentifier","src":"24065:6:40"}],"functionName":{"name":"mstore","nativeSrc":"24038:6:40","nodeType":"YulIdentifier","src":"24038:6:40"},"nativeSrc":"24038:34:40","nodeType":"YulFunctionCall","src":"24038:34:40"},"nativeSrc":"24038:34:40","nodeType":"YulExpressionStatement","src":"24038:34:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24092:9:40","nodeType":"YulIdentifier","src":"24092:9:40"},{"kind":"number","nativeSrc":"24103:2:40","nodeType":"YulLiteral","src":"24103:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24088:3:40","nodeType":"YulIdentifier","src":"24088:3:40"},"nativeSrc":"24088:18:40","nodeType":"YulFunctionCall","src":"24088:18:40"},{"arguments":[{"name":"value2","nativeSrc":"24112:6:40","nodeType":"YulIdentifier","src":"24112:6:40"},{"kind":"number","nativeSrc":"24120:6:40","nodeType":"YulLiteral","src":"24120:6:40","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"24108:3:40","nodeType":"YulIdentifier","src":"24108:3:40"},"nativeSrc":"24108:19:40","nodeType":"YulFunctionCall","src":"24108:19:40"}],"functionName":{"name":"mstore","nativeSrc":"24081:6:40","nodeType":"YulIdentifier","src":"24081:6:40"},"nativeSrc":"24081:47:40","nodeType":"YulFunctionCall","src":"24081:47:40"},"nativeSrc":"24081:47:40","nodeType":"YulExpressionStatement","src":"24081:47:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24148:9:40","nodeType":"YulIdentifier","src":"24148:9:40"},{"kind":"number","nativeSrc":"24159:2:40","nodeType":"YulLiteral","src":"24159:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"24144:3:40","nodeType":"YulIdentifier","src":"24144:3:40"},"nativeSrc":"24144:18:40","nodeType":"YulFunctionCall","src":"24144:18:40"},{"kind":"number","nativeSrc":"24164:3:40","nodeType":"YulLiteral","src":"24164:3:40","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"24137:6:40","nodeType":"YulIdentifier","src":"24137:6:40"},"nativeSrc":"24137:31:40","nodeType":"YulFunctionCall","src":"24137:31:40"},"nativeSrc":"24137:31:40","nodeType":"YulExpressionStatement","src":"24137:31:40"},{"nativeSrc":"24177:54:40","nodeType":"YulAssignment","src":"24177:54:40","value":{"arguments":[{"name":"value3","nativeSrc":"24203:6:40","nodeType":"YulIdentifier","src":"24203:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"24215:9:40","nodeType":"YulIdentifier","src":"24215:9:40"},{"kind":"number","nativeSrc":"24226:3:40","nodeType":"YulLiteral","src":"24226:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"24211:3:40","nodeType":"YulIdentifier","src":"24211:3:40"},"nativeSrc":"24211:19:40","nodeType":"YulFunctionCall","src":"24211:19:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"24185:17:40","nodeType":"YulIdentifier","src":"24185:17:40"},"nativeSrc":"24185:46:40","nodeType":"YulFunctionCall","src":"24185:46:40"},"variableNames":[{"name":"tail","nativeSrc":"24177:4:40","nodeType":"YulIdentifier","src":"24177:4:40"}]}]},"name":"abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"23758:479:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23913:9:40","nodeType":"YulTypedName","src":"23913:9:40","type":""},{"name":"value3","nativeSrc":"23924:6:40","nodeType":"YulTypedName","src":"23924:6:40","type":""},{"name":"value2","nativeSrc":"23932:6:40","nodeType":"YulTypedName","src":"23932:6:40","type":""},{"name":"value1","nativeSrc":"23940:6:40","nodeType":"YulTypedName","src":"23940:6:40","type":""},{"name":"value0","nativeSrc":"23948:6:40","nodeType":"YulTypedName","src":"23948:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23959:4:40","nodeType":"YulTypedName","src":"23959:4:40","type":""}],"src":"23758:479:40"},{"body":{"nativeSrc":"24369:136:40","nodeType":"YulBlock","src":"24369:136:40","statements":[{"nativeSrc":"24379:26:40","nodeType":"YulAssignment","src":"24379:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"24391:9:40","nodeType":"YulIdentifier","src":"24391:9:40"},{"kind":"number","nativeSrc":"24402:2:40","nodeType":"YulLiteral","src":"24402:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24387:3:40","nodeType":"YulIdentifier","src":"24387:3:40"},"nativeSrc":"24387:18:40","nodeType":"YulFunctionCall","src":"24387:18:40"},"variableNames":[{"name":"tail","nativeSrc":"24379:4:40","nodeType":"YulIdentifier","src":"24379:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24421:9:40","nodeType":"YulIdentifier","src":"24421:9:40"},{"arguments":[{"name":"value0","nativeSrc":"24436:6:40","nodeType":"YulIdentifier","src":"24436:6:40"},{"kind":"number","nativeSrc":"24444:10:40","nodeType":"YulLiteral","src":"24444:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"24432:3:40","nodeType":"YulIdentifier","src":"24432:3:40"},"nativeSrc":"24432:23:40","nodeType":"YulFunctionCall","src":"24432:23:40"}],"functionName":{"name":"mstore","nativeSrc":"24414:6:40","nodeType":"YulIdentifier","src":"24414:6:40"},"nativeSrc":"24414:42:40","nodeType":"YulFunctionCall","src":"24414:42:40"},"nativeSrc":"24414:42:40","nodeType":"YulExpressionStatement","src":"24414:42:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24476:9:40","nodeType":"YulIdentifier","src":"24476:9:40"},{"kind":"number","nativeSrc":"24487:2:40","nodeType":"YulLiteral","src":"24487:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24472:3:40","nodeType":"YulIdentifier","src":"24472:3:40"},"nativeSrc":"24472:18:40","nodeType":"YulFunctionCall","src":"24472:18:40"},{"name":"value1","nativeSrc":"24492:6:40","nodeType":"YulIdentifier","src":"24492:6:40"}],"functionName":{"name":"mstore","nativeSrc":"24465:6:40","nodeType":"YulIdentifier","src":"24465:6:40"},"nativeSrc":"24465:34:40","nodeType":"YulFunctionCall","src":"24465:34:40"},"nativeSrc":"24465:34:40","nodeType":"YulExpressionStatement","src":"24465:34:40"}]},"name":"abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed","nativeSrc":"24242:263:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24330:9:40","nodeType":"YulTypedName","src":"24330:9:40","type":""},{"name":"value1","nativeSrc":"24341:6:40","nodeType":"YulTypedName","src":"24341:6:40","type":""},{"name":"value0","nativeSrc":"24349:6:40","nodeType":"YulTypedName","src":"24349:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24360:4:40","nodeType":"YulTypedName","src":"24360:4:40","type":""}],"src":"24242:263:40"},{"body":{"nativeSrc":"24667:188:40","nodeType":"YulBlock","src":"24667:188:40","statements":[{"nativeSrc":"24677:26:40","nodeType":"YulAssignment","src":"24677:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"24689:9:40","nodeType":"YulIdentifier","src":"24689:9:40"},{"kind":"number","nativeSrc":"24700:2:40","nodeType":"YulLiteral","src":"24700:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"24685:3:40","nodeType":"YulIdentifier","src":"24685:3:40"},"nativeSrc":"24685:18:40","nodeType":"YulFunctionCall","src":"24685:18:40"},"variableNames":[{"name":"tail","nativeSrc":"24677:4:40","nodeType":"YulIdentifier","src":"24677:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24719:9:40","nodeType":"YulIdentifier","src":"24719:9:40"},{"arguments":[{"name":"value0","nativeSrc":"24734:6:40","nodeType":"YulIdentifier","src":"24734:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24750:3:40","nodeType":"YulLiteral","src":"24750:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"24755:1:40","nodeType":"YulLiteral","src":"24755:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24746:3:40","nodeType":"YulIdentifier","src":"24746:3:40"},"nativeSrc":"24746:11:40","nodeType":"YulFunctionCall","src":"24746:11:40"},{"kind":"number","nativeSrc":"24759:1:40","nodeType":"YulLiteral","src":"24759:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24742:3:40","nodeType":"YulIdentifier","src":"24742:3:40"},"nativeSrc":"24742:19:40","nodeType":"YulFunctionCall","src":"24742:19:40"}],"functionName":{"name":"and","nativeSrc":"24730:3:40","nodeType":"YulIdentifier","src":"24730:3:40"},"nativeSrc":"24730:32:40","nodeType":"YulFunctionCall","src":"24730:32:40"}],"functionName":{"name":"mstore","nativeSrc":"24712:6:40","nodeType":"YulIdentifier","src":"24712:6:40"},"nativeSrc":"24712:51:40","nodeType":"YulFunctionCall","src":"24712:51:40"},"nativeSrc":"24712:51:40","nodeType":"YulExpressionStatement","src":"24712:51:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24783:9:40","nodeType":"YulIdentifier","src":"24783:9:40"},{"kind":"number","nativeSrc":"24794:2:40","nodeType":"YulLiteral","src":"24794:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24779:3:40","nodeType":"YulIdentifier","src":"24779:3:40"},"nativeSrc":"24779:18:40","nodeType":"YulFunctionCall","src":"24779:18:40"},{"name":"value1","nativeSrc":"24799:6:40","nodeType":"YulIdentifier","src":"24799:6:40"}],"functionName":{"name":"mstore","nativeSrc":"24772:6:40","nodeType":"YulIdentifier","src":"24772:6:40"},"nativeSrc":"24772:34:40","nodeType":"YulFunctionCall","src":"24772:34:40"},"nativeSrc":"24772:34:40","nodeType":"YulExpressionStatement","src":"24772:34:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24826:9:40","nodeType":"YulIdentifier","src":"24826:9:40"},{"kind":"number","nativeSrc":"24837:2:40","nodeType":"YulLiteral","src":"24837:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24822:3:40","nodeType":"YulIdentifier","src":"24822:3:40"},"nativeSrc":"24822:18:40","nodeType":"YulFunctionCall","src":"24822:18:40"},{"name":"value2","nativeSrc":"24842:6:40","nodeType":"YulIdentifier","src":"24842:6:40"}],"functionName":{"name":"mstore","nativeSrc":"24815:6:40","nodeType":"YulIdentifier","src":"24815:6:40"},"nativeSrc":"24815:34:40","nodeType":"YulFunctionCall","src":"24815:34:40"},"nativeSrc":"24815:34:40","nodeType":"YulExpressionStatement","src":"24815:34:40"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"24510:345:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24620:9:40","nodeType":"YulTypedName","src":"24620:9:40","type":""},{"name":"value2","nativeSrc":"24631:6:40","nodeType":"YulTypedName","src":"24631:6:40","type":""},{"name":"value1","nativeSrc":"24639:6:40","nodeType":"YulTypedName","src":"24639:6:40","type":""},{"name":"value0","nativeSrc":"24647:6:40","nodeType":"YulTypedName","src":"24647:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24658:4:40","nodeType":"YulTypedName","src":"24658:4:40","type":""}],"src":"24510:345:40"},{"body":{"nativeSrc":"25025:214:40","nodeType":"YulBlock","src":"25025:214:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25042:9:40","nodeType":"YulIdentifier","src":"25042:9:40"},{"kind":"number","nativeSrc":"25053:2:40","nodeType":"YulLiteral","src":"25053:2:40","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"25035:6:40","nodeType":"YulIdentifier","src":"25035:6:40"},"nativeSrc":"25035:21:40","nodeType":"YulFunctionCall","src":"25035:21:40"},"nativeSrc":"25035:21:40","nodeType":"YulExpressionStatement","src":"25035:21:40"},{"nativeSrc":"25065:59:40","nodeType":"YulVariableDeclaration","src":"25065:59:40","value":{"arguments":[{"name":"value0","nativeSrc":"25097:6:40","nodeType":"YulIdentifier","src":"25097:6:40"},{"arguments":[{"name":"headStart","nativeSrc":"25109:9:40","nodeType":"YulIdentifier","src":"25109:9:40"},{"kind":"number","nativeSrc":"25120:2:40","nodeType":"YulLiteral","src":"25120:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25105:3:40","nodeType":"YulIdentifier","src":"25105:3:40"},"nativeSrc":"25105:18:40","nodeType":"YulFunctionCall","src":"25105:18:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25079:17:40","nodeType":"YulIdentifier","src":"25079:17:40"},"nativeSrc":"25079:45:40","nodeType":"YulFunctionCall","src":"25079:45:40"},"variables":[{"name":"tail_1","nativeSrc":"25069:6:40","nodeType":"YulTypedName","src":"25069:6:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25144:9:40","nodeType":"YulIdentifier","src":"25144:9:40"},{"kind":"number","nativeSrc":"25155:2:40","nodeType":"YulLiteral","src":"25155:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"25140:3:40","nodeType":"YulIdentifier","src":"25140:3:40"},"nativeSrc":"25140:18:40","nodeType":"YulFunctionCall","src":"25140:18:40"},{"arguments":[{"name":"tail_1","nativeSrc":"25164:6:40","nodeType":"YulIdentifier","src":"25164:6:40"},{"name":"headStart","nativeSrc":"25172:9:40","nodeType":"YulIdentifier","src":"25172:9:40"}],"functionName":{"name":"sub","nativeSrc":"25160:3:40","nodeType":"YulIdentifier","src":"25160:3:40"},"nativeSrc":"25160:22:40","nodeType":"YulFunctionCall","src":"25160:22:40"}],"functionName":{"name":"mstore","nativeSrc":"25133:6:40","nodeType":"YulIdentifier","src":"25133:6:40"},"nativeSrc":"25133:50:40","nodeType":"YulFunctionCall","src":"25133:50:40"},"nativeSrc":"25133:50:40","nodeType":"YulExpressionStatement","src":"25133:50:40"},{"nativeSrc":"25192:41:40","nodeType":"YulAssignment","src":"25192:41:40","value":{"arguments":[{"name":"value1","nativeSrc":"25218:6:40","nodeType":"YulIdentifier","src":"25218:6:40"},{"name":"tail_1","nativeSrc":"25226:6:40","nodeType":"YulIdentifier","src":"25226:6:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25200:17:40","nodeType":"YulIdentifier","src":"25200:17:40"},"nativeSrc":"25200:33:40","nodeType":"YulFunctionCall","src":"25200:33:40"},"variableNames":[{"name":"tail","nativeSrc":"25192:4:40","nodeType":"YulIdentifier","src":"25192:4:40"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"24860:379:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24986:9:40","nodeType":"YulTypedName","src":"24986:9:40","type":""},{"name":"value1","nativeSrc":"24997:6:40","nodeType":"YulTypedName","src":"24997:6:40","type":""},{"name":"value0","nativeSrc":"25005:6:40","nodeType":"YulTypedName","src":"25005:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25016:4:40","nodeType":"YulTypedName","src":"25016:4:40","type":""}],"src":"24860:379:40"},{"body":{"nativeSrc":"25322:167:40","nodeType":"YulBlock","src":"25322:167:40","statements":[{"body":{"nativeSrc":"25368:16:40","nodeType":"YulBlock","src":"25368:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"25377:1:40","nodeType":"YulLiteral","src":"25377:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"25380:1:40","nodeType":"YulLiteral","src":"25380:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"25370:6:40","nodeType":"YulIdentifier","src":"25370:6:40"},"nativeSrc":"25370:12:40","nodeType":"YulFunctionCall","src":"25370:12:40"},"nativeSrc":"25370:12:40","nodeType":"YulExpressionStatement","src":"25370:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"25343:7:40","nodeType":"YulIdentifier","src":"25343:7:40"},{"name":"headStart","nativeSrc":"25352:9:40","nodeType":"YulIdentifier","src":"25352:9:40"}],"functionName":{"name":"sub","nativeSrc":"25339:3:40","nodeType":"YulIdentifier","src":"25339:3:40"},"nativeSrc":"25339:23:40","nodeType":"YulFunctionCall","src":"25339:23:40"},{"kind":"number","nativeSrc":"25364:2:40","nodeType":"YulLiteral","src":"25364:2:40","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"25335:3:40","nodeType":"YulIdentifier","src":"25335:3:40"},"nativeSrc":"25335:32:40","nodeType":"YulFunctionCall","src":"25335:32:40"},"nativeSrc":"25332:52:40","nodeType":"YulIf","src":"25332:52:40"},{"nativeSrc":"25393:29:40","nodeType":"YulVariableDeclaration","src":"25393:29:40","value":{"arguments":[{"name":"headStart","nativeSrc":"25412:9:40","nodeType":"YulIdentifier","src":"25412:9:40"}],"functionName":{"name":"mload","nativeSrc":"25406:5:40","nodeType":"YulIdentifier","src":"25406:5:40"},"nativeSrc":"25406:16:40","nodeType":"YulFunctionCall","src":"25406:16:40"},"variables":[{"name":"value","nativeSrc":"25397:5:40","nodeType":"YulTypedName","src":"25397:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"25453:5:40","nodeType":"YulIdentifier","src":"25453:5:40"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"25431:21:40","nodeType":"YulIdentifier","src":"25431:21:40"},"nativeSrc":"25431:28:40","nodeType":"YulFunctionCall","src":"25431:28:40"},"nativeSrc":"25431:28:40","nodeType":"YulExpressionStatement","src":"25431:28:40"},{"nativeSrc":"25468:15:40","nodeType":"YulAssignment","src":"25468:15:40","value":{"name":"value","nativeSrc":"25478:5:40","nodeType":"YulIdentifier","src":"25478:5:40"},"variableNames":[{"name":"value0","nativeSrc":"25468:6:40","nodeType":"YulIdentifier","src":"25468:6:40"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"25244:245:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25288:9:40","nodeType":"YulTypedName","src":"25288:9:40","type":""},{"name":"dataEnd","nativeSrc":"25299:7:40","nodeType":"YulTypedName","src":"25299:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"25311:6:40","nodeType":"YulTypedName","src":"25311:6:40","type":""}],"src":"25244:245:40"},{"body":{"nativeSrc":"25685:696:40","nodeType":"YulBlock","src":"25685:696:40","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25702:9:40","nodeType":"YulIdentifier","src":"25702:9:40"},{"kind":"number","nativeSrc":"25713:2:40","nodeType":"YulLiteral","src":"25713:2:40","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"25695:6:40","nodeType":"YulIdentifier","src":"25695:6:40"},"nativeSrc":"25695:21:40","nodeType":"YulFunctionCall","src":"25695:21:40"},"nativeSrc":"25695:21:40","nodeType":"YulExpressionStatement","src":"25695:21:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25736:9:40","nodeType":"YulIdentifier","src":"25736:9:40"},{"kind":"number","nativeSrc":"25747:2:40","nodeType":"YulLiteral","src":"25747:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25732:3:40","nodeType":"YulIdentifier","src":"25732:3:40"},"nativeSrc":"25732:18:40","nodeType":"YulFunctionCall","src":"25732:18:40"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25762:6:40","nodeType":"YulIdentifier","src":"25762:6:40"}],"functionName":{"name":"mload","nativeSrc":"25756:5:40","nodeType":"YulIdentifier","src":"25756:5:40"},"nativeSrc":"25756:13:40","nodeType":"YulFunctionCall","src":"25756:13:40"},{"kind":"number","nativeSrc":"25771:10:40","nodeType":"YulLiteral","src":"25771:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"25752:3:40","nodeType":"YulIdentifier","src":"25752:3:40"},"nativeSrc":"25752:30:40","nodeType":"YulFunctionCall","src":"25752:30:40"}],"functionName":{"name":"mstore","nativeSrc":"25725:6:40","nodeType":"YulIdentifier","src":"25725:6:40"},"nativeSrc":"25725:58:40","nodeType":"YulFunctionCall","src":"25725:58:40"},"nativeSrc":"25725:58:40","nodeType":"YulExpressionStatement","src":"25725:58:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25803:9:40","nodeType":"YulIdentifier","src":"25803:9:40"},{"kind":"number","nativeSrc":"25814:2:40","nodeType":"YulLiteral","src":"25814:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"25799:3:40","nodeType":"YulIdentifier","src":"25799:3:40"},"nativeSrc":"25799:18:40","nodeType":"YulFunctionCall","src":"25799:18:40"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25829:6:40","nodeType":"YulIdentifier","src":"25829:6:40"},{"kind":"number","nativeSrc":"25837:4:40","nodeType":"YulLiteral","src":"25837:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25825:3:40","nodeType":"YulIdentifier","src":"25825:3:40"},"nativeSrc":"25825:17:40","nodeType":"YulFunctionCall","src":"25825:17:40"}],"functionName":{"name":"mload","nativeSrc":"25819:5:40","nodeType":"YulIdentifier","src":"25819:5:40"},"nativeSrc":"25819:24:40","nodeType":"YulFunctionCall","src":"25819:24:40"}],"functionName":{"name":"mstore","nativeSrc":"25792:6:40","nodeType":"YulIdentifier","src":"25792:6:40"},"nativeSrc":"25792:52:40","nodeType":"YulFunctionCall","src":"25792:52:40"},"nativeSrc":"25792:52:40","nodeType":"YulExpressionStatement","src":"25792:52:40"},{"nativeSrc":"25853:42:40","nodeType":"YulVariableDeclaration","src":"25853:42:40","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25883:6:40","nodeType":"YulIdentifier","src":"25883:6:40"},{"kind":"number","nativeSrc":"25891:2:40","nodeType":"YulLiteral","src":"25891:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25879:3:40","nodeType":"YulIdentifier","src":"25879:3:40"},"nativeSrc":"25879:15:40","nodeType":"YulFunctionCall","src":"25879:15:40"}],"functionName":{"name":"mload","nativeSrc":"25873:5:40","nodeType":"YulIdentifier","src":"25873:5:40"},"nativeSrc":"25873:22:40","nodeType":"YulFunctionCall","src":"25873:22:40"},"variables":[{"name":"memberValue0","nativeSrc":"25857:12:40","nodeType":"YulTypedName","src":"25857:12:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25915:9:40","nodeType":"YulIdentifier","src":"25915:9:40"},{"kind":"number","nativeSrc":"25926:3:40","nodeType":"YulLiteral","src":"25926:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"25911:3:40","nodeType":"YulIdentifier","src":"25911:3:40"},"nativeSrc":"25911:19:40","nodeType":"YulFunctionCall","src":"25911:19:40"},{"kind":"number","nativeSrc":"25932:4:40","nodeType":"YulLiteral","src":"25932:4:40","type":"","value":"0xa0"}],"functionName":{"name":"mstore","nativeSrc":"25904:6:40","nodeType":"YulIdentifier","src":"25904:6:40"},"nativeSrc":"25904:33:40","nodeType":"YulFunctionCall","src":"25904:33:40"},"nativeSrc":"25904:33:40","nodeType":"YulExpressionStatement","src":"25904:33:40"},{"nativeSrc":"25946:66:40","nodeType":"YulVariableDeclaration","src":"25946:66:40","value":{"arguments":[{"name":"memberValue0","nativeSrc":"25978:12:40","nodeType":"YulIdentifier","src":"25978:12:40"},{"arguments":[{"name":"headStart","nativeSrc":"25996:9:40","nodeType":"YulIdentifier","src":"25996:9:40"},{"kind":"number","nativeSrc":"26007:3:40","nodeType":"YulLiteral","src":"26007:3:40","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"25992:3:40","nodeType":"YulIdentifier","src":"25992:3:40"},"nativeSrc":"25992:19:40","nodeType":"YulFunctionCall","src":"25992:19:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25960:17:40","nodeType":"YulIdentifier","src":"25960:17:40"},"nativeSrc":"25960:52:40","nodeType":"YulFunctionCall","src":"25960:52:40"},"variables":[{"name":"tail_1","nativeSrc":"25950:6:40","nodeType":"YulTypedName","src":"25950:6:40","type":""}]},{"nativeSrc":"26021:44:40","nodeType":"YulVariableDeclaration","src":"26021:44:40","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"26053:6:40","nodeType":"YulIdentifier","src":"26053:6:40"},{"kind":"number","nativeSrc":"26061:2:40","nodeType":"YulLiteral","src":"26061:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"26049:3:40","nodeType":"YulIdentifier","src":"26049:3:40"},"nativeSrc":"26049:15:40","nodeType":"YulFunctionCall","src":"26049:15:40"}],"functionName":{"name":"mload","nativeSrc":"26043:5:40","nodeType":"YulIdentifier","src":"26043:5:40"},"nativeSrc":"26043:22:40","nodeType":"YulFunctionCall","src":"26043:22:40"},"variables":[{"name":"memberValue0_1","nativeSrc":"26025:14:40","nodeType":"YulTypedName","src":"26025:14:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26085:9:40","nodeType":"YulIdentifier","src":"26085:9:40"},{"kind":"number","nativeSrc":"26096:4:40","nodeType":"YulLiteral","src":"26096:4:40","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"26081:3:40","nodeType":"YulIdentifier","src":"26081:3:40"},"nativeSrc":"26081:20:40","nodeType":"YulFunctionCall","src":"26081:20:40"},{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"26111:6:40","nodeType":"YulIdentifier","src":"26111:6:40"},{"name":"headStart","nativeSrc":"26119:9:40","nodeType":"YulIdentifier","src":"26119:9:40"}],"functionName":{"name":"sub","nativeSrc":"26107:3:40","nodeType":"YulIdentifier","src":"26107:3:40"},"nativeSrc":"26107:22:40","nodeType":"YulFunctionCall","src":"26107:22:40"},{"arguments":[{"kind":"number","nativeSrc":"26135:2:40","nodeType":"YulLiteral","src":"26135:2:40","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"26131:3:40","nodeType":"YulIdentifier","src":"26131:3:40"},"nativeSrc":"26131:7:40","nodeType":"YulFunctionCall","src":"26131:7:40"}],"functionName":{"name":"add","nativeSrc":"26103:3:40","nodeType":"YulIdentifier","src":"26103:3:40"},"nativeSrc":"26103:36:40","nodeType":"YulFunctionCall","src":"26103:36:40"}],"functionName":{"name":"mstore","nativeSrc":"26074:6:40","nodeType":"YulIdentifier","src":"26074:6:40"},"nativeSrc":"26074:66:40","nodeType":"YulFunctionCall","src":"26074:66:40"},"nativeSrc":"26074:66:40","nodeType":"YulExpressionStatement","src":"26074:66:40"},{"nativeSrc":"26149:55:40","nodeType":"YulVariableDeclaration","src":"26149:55:40","value":{"arguments":[{"name":"memberValue0_1","nativeSrc":"26181:14:40","nodeType":"YulIdentifier","src":"26181:14:40"},{"name":"tail_1","nativeSrc":"26197:6:40","nodeType":"YulIdentifier","src":"26197:6:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"26163:17:40","nodeType":"YulIdentifier","src":"26163:17:40"},"nativeSrc":"26163:41:40","nodeType":"YulFunctionCall","src":"26163:41:40"},"variables":[{"name":"tail_2","nativeSrc":"26153:6:40","nodeType":"YulTypedName","src":"26153:6:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26224:9:40","nodeType":"YulIdentifier","src":"26224:9:40"},{"kind":"number","nativeSrc":"26235:3:40","nodeType":"YulLiteral","src":"26235:3:40","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"26220:3:40","nodeType":"YulIdentifier","src":"26220:3:40"},"nativeSrc":"26220:19:40","nodeType":"YulFunctionCall","src":"26220:19:40"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"26265:6:40","nodeType":"YulIdentifier","src":"26265:6:40"},{"kind":"number","nativeSrc":"26273:3:40","nodeType":"YulLiteral","src":"26273:3:40","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"26261:3:40","nodeType":"YulIdentifier","src":"26261:3:40"},"nativeSrc":"26261:16:40","nodeType":"YulFunctionCall","src":"26261:16:40"}],"functionName":{"name":"mload","nativeSrc":"26255:5:40","nodeType":"YulIdentifier","src":"26255:5:40"},"nativeSrc":"26255:23:40","nodeType":"YulFunctionCall","src":"26255:23:40"}],"functionName":{"name":"iszero","nativeSrc":"26248:6:40","nodeType":"YulIdentifier","src":"26248:6:40"},"nativeSrc":"26248:31:40","nodeType":"YulFunctionCall","src":"26248:31:40"}],"functionName":{"name":"iszero","nativeSrc":"26241:6:40","nodeType":"YulIdentifier","src":"26241:6:40"},"nativeSrc":"26241:39:40","nodeType":"YulFunctionCall","src":"26241:39:40"}],"functionName":{"name":"mstore","nativeSrc":"26213:6:40","nodeType":"YulIdentifier","src":"26213:6:40"},"nativeSrc":"26213:68:40","nodeType":"YulFunctionCall","src":"26213:68:40"},"nativeSrc":"26213:68:40","nodeType":"YulExpressionStatement","src":"26213:68:40"},{"nativeSrc":"26290:14:40","nodeType":"YulAssignment","src":"26290:14:40","value":{"name":"tail_2","nativeSrc":"26298:6:40","nodeType":"YulIdentifier","src":"26298:6:40"},"variableNames":[{"name":"tail","nativeSrc":"26290:4:40","nodeType":"YulIdentifier","src":"26290:4:40"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26324:9:40","nodeType":"YulIdentifier","src":"26324:9:40"},{"kind":"number","nativeSrc":"26335:4:40","nodeType":"YulLiteral","src":"26335:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"26320:3:40","nodeType":"YulIdentifier","src":"26320:3:40"},"nativeSrc":"26320:20:40","nodeType":"YulFunctionCall","src":"26320:20:40"},{"arguments":[{"name":"value1","nativeSrc":"26346:6:40","nodeType":"YulIdentifier","src":"26346:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"26362:3:40","nodeType":"YulLiteral","src":"26362:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"26367:1:40","nodeType":"YulLiteral","src":"26367:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"26358:3:40","nodeType":"YulIdentifier","src":"26358:3:40"},"nativeSrc":"26358:11:40","nodeType":"YulFunctionCall","src":"26358:11:40"},{"kind":"number","nativeSrc":"26371:1:40","nodeType":"YulLiteral","src":"26371:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"26354:3:40","nodeType":"YulIdentifier","src":"26354:3:40"},"nativeSrc":"26354:19:40","nodeType":"YulFunctionCall","src":"26354:19:40"}],"functionName":{"name":"and","nativeSrc":"26342:3:40","nodeType":"YulIdentifier","src":"26342:3:40"},"nativeSrc":"26342:32:40","nodeType":"YulFunctionCall","src":"26342:32:40"}],"functionName":{"name":"mstore","nativeSrc":"26313:6:40","nodeType":"YulIdentifier","src":"26313:6:40"},"nativeSrc":"26313:62:40","nodeType":"YulFunctionCall","src":"26313:62:40"},"nativeSrc":"26313:62:40","nodeType":"YulExpressionStatement","src":"26313:62:40"}]},"name":"abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed","nativeSrc":"25494:887:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25646:9:40","nodeType":"YulTypedName","src":"25646:9:40","type":""},{"name":"value1","nativeSrc":"25657:6:40","nodeType":"YulTypedName","src":"25657:6:40","type":""},{"name":"value0","nativeSrc":"25665:6:40","nodeType":"YulTypedName","src":"25665:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25676:4:40","nodeType":"YulTypedName","src":"25676:4:40","type":""}],"src":"25494:887:40"},{"body":{"nativeSrc":"26466:308:40","nodeType":"YulBlock","src":"26466:308:40","statements":[{"body":{"nativeSrc":"26510:16:40","nodeType":"YulBlock","src":"26510:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26519:1:40","nodeType":"YulLiteral","src":"26519:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"26522:1:40","nodeType":"YulLiteral","src":"26522:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"26512:6:40","nodeType":"YulIdentifier","src":"26512:6:40"},"nativeSrc":"26512:12:40","nodeType":"YulFunctionCall","src":"26512:12:40"},"nativeSrc":"26512:12:40","nodeType":"YulExpressionStatement","src":"26512:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"26487:3:40","nodeType":"YulIdentifier","src":"26487:3:40"},{"name":"headStart","nativeSrc":"26492:9:40","nodeType":"YulIdentifier","src":"26492:9:40"}],"functionName":{"name":"sub","nativeSrc":"26483:3:40","nodeType":"YulIdentifier","src":"26483:3:40"},"nativeSrc":"26483:19:40","nodeType":"YulFunctionCall","src":"26483:19:40"},{"kind":"number","nativeSrc":"26504:4:40","nodeType":"YulLiteral","src":"26504:4:40","type":"","value":"0x40"}],"functionName":{"name":"slt","nativeSrc":"26479:3:40","nodeType":"YulIdentifier","src":"26479:3:40"},"nativeSrc":"26479:30:40","nodeType":"YulFunctionCall","src":"26479:30:40"},"nativeSrc":"26476:50:40","nodeType":"YulIf","src":"26476:50:40"},{"nativeSrc":"26535:31:40","nodeType":"YulAssignment","src":"26535:31:40","value":{"arguments":[],"functionName":{"name":"allocate_memory_3874","nativeSrc":"26544:20:40","nodeType":"YulIdentifier","src":"26544:20:40"},"nativeSrc":"26544:22:40","nodeType":"YulFunctionCall","src":"26544:22:40"},"variableNames":[{"name":"value","nativeSrc":"26535:5:40","nodeType":"YulIdentifier","src":"26535:5:40"}]},{"nativeSrc":"26575:16:40","nodeType":"YulVariableDeclaration","src":"26575:16:40","value":{"kind":"number","nativeSrc":"26590:1:40","nodeType":"YulLiteral","src":"26590:1:40","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"26579:7:40","nodeType":"YulTypedName","src":"26579:7:40","type":""}]},{"nativeSrc":"26600:27:40","nodeType":"YulAssignment","src":"26600:27:40","value":{"arguments":[{"name":"headStart","nativeSrc":"26617:9:40","nodeType":"YulIdentifier","src":"26617:9:40"}],"functionName":{"name":"mload","nativeSrc":"26611:5:40","nodeType":"YulIdentifier","src":"26611:5:40"},"nativeSrc":"26611:16:40","nodeType":"YulFunctionCall","src":"26611:16:40"},"variableNames":[{"name":"value_1","nativeSrc":"26600:7:40","nodeType":"YulIdentifier","src":"26600:7:40"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"26643:5:40","nodeType":"YulIdentifier","src":"26643:5:40"},{"name":"value_1","nativeSrc":"26650:7:40","nodeType":"YulIdentifier","src":"26650:7:40"}],"functionName":{"name":"mstore","nativeSrc":"26636:6:40","nodeType":"YulIdentifier","src":"26636:6:40"},"nativeSrc":"26636:22:40","nodeType":"YulFunctionCall","src":"26636:22:40"},"nativeSrc":"26636:22:40","nodeType":"YulExpressionStatement","src":"26636:22:40"},{"nativeSrc":"26667:16:40","nodeType":"YulVariableDeclaration","src":"26667:16:40","value":{"kind":"number","nativeSrc":"26682:1:40","nodeType":"YulLiteral","src":"26682:1:40","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"26671:7:40","nodeType":"YulTypedName","src":"26671:7:40","type":""}]},{"nativeSrc":"26692:36:40","nodeType":"YulAssignment","src":"26692:36:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26713:9:40","nodeType":"YulIdentifier","src":"26713:9:40"},{"kind":"number","nativeSrc":"26724:2:40","nodeType":"YulLiteral","src":"26724:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26709:3:40","nodeType":"YulIdentifier","src":"26709:3:40"},"nativeSrc":"26709:18:40","nodeType":"YulFunctionCall","src":"26709:18:40"}],"functionName":{"name":"mload","nativeSrc":"26703:5:40","nodeType":"YulIdentifier","src":"26703:5:40"},"nativeSrc":"26703:25:40","nodeType":"YulFunctionCall","src":"26703:25:40"},"variableNames":[{"name":"value_2","nativeSrc":"26692:7:40","nodeType":"YulIdentifier","src":"26692:7:40"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"26748:5:40","nodeType":"YulIdentifier","src":"26748:5:40"},{"kind":"number","nativeSrc":"26755:2:40","nodeType":"YulLiteral","src":"26755:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26744:3:40","nodeType":"YulIdentifier","src":"26744:3:40"},"nativeSrc":"26744:14:40","nodeType":"YulFunctionCall","src":"26744:14:40"},{"name":"value_2","nativeSrc":"26760:7:40","nodeType":"YulIdentifier","src":"26760:7:40"}],"functionName":{"name":"mstore","nativeSrc":"26737:6:40","nodeType":"YulIdentifier","src":"26737:6:40"},"nativeSrc":"26737:31:40","nodeType":"YulFunctionCall","src":"26737:31:40"},"nativeSrc":"26737:31:40","nodeType":"YulExpressionStatement","src":"26737:31:40"}]},"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"26386:388:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26437:9:40","nodeType":"YulTypedName","src":"26437:9:40","type":""},{"name":"end","nativeSrc":"26448:3:40","nodeType":"YulTypedName","src":"26448:3:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"26456:5:40","nodeType":"YulTypedName","src":"26456:5:40","type":""}],"src":"26386:388:40"},{"body":{"nativeSrc":"26888:148:40","nodeType":"YulBlock","src":"26888:148:40","statements":[{"body":{"nativeSrc":"26934:16:40","nodeType":"YulBlock","src":"26934:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26943:1:40","nodeType":"YulLiteral","src":"26943:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"26946:1:40","nodeType":"YulLiteral","src":"26946:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"26936:6:40","nodeType":"YulIdentifier","src":"26936:6:40"},"nativeSrc":"26936:12:40","nodeType":"YulFunctionCall","src":"26936:12:40"},"nativeSrc":"26936:12:40","nodeType":"YulExpressionStatement","src":"26936:12:40"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"26909:7:40","nodeType":"YulIdentifier","src":"26909:7:40"},{"name":"headStart","nativeSrc":"26918:9:40","nodeType":"YulIdentifier","src":"26918:9:40"}],"functionName":{"name":"sub","nativeSrc":"26905:3:40","nodeType":"YulIdentifier","src":"26905:3:40"},"nativeSrc":"26905:23:40","nodeType":"YulFunctionCall","src":"26905:23:40"},{"kind":"number","nativeSrc":"26930:2:40","nodeType":"YulLiteral","src":"26930:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"26901:3:40","nodeType":"YulIdentifier","src":"26901:3:40"},"nativeSrc":"26901:32:40","nodeType":"YulFunctionCall","src":"26901:32:40"},"nativeSrc":"26898:52:40","nodeType":"YulIf","src":"26898:52:40"},{"nativeSrc":"26959:71:40","nodeType":"YulAssignment","src":"26959:71:40","value":{"arguments":[{"name":"headStart","nativeSrc":"27011:9:40","nodeType":"YulIdentifier","src":"27011:9:40"},{"name":"dataEnd","nativeSrc":"27022:7:40","nodeType":"YulIdentifier","src":"27022:7:40"}],"functionName":{"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"26969:41:40","nodeType":"YulIdentifier","src":"26969:41:40"},"nativeSrc":"26969:61:40","nodeType":"YulFunctionCall","src":"26969:61:40"},"variableNames":[{"name":"value0","nativeSrc":"26959:6:40","nodeType":"YulIdentifier","src":"26959:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory","nativeSrc":"26779:257:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26854:9:40","nodeType":"YulTypedName","src":"26854:9:40","type":""},{"name":"dataEnd","nativeSrc":"26865:7:40","nodeType":"YulTypedName","src":"26865:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"26877:6:40","nodeType":"YulTypedName","src":"26877:6:40","type":""}],"src":"26779:257:40"},{"body":{"nativeSrc":"27096:65:40","nodeType":"YulBlock","src":"27096:65:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"27113:1:40","nodeType":"YulLiteral","src":"27113:1:40","type":"","value":"0"},{"name":"ptr","nativeSrc":"27116:3:40","nodeType":"YulIdentifier","src":"27116:3:40"}],"functionName":{"name":"mstore","nativeSrc":"27106:6:40","nodeType":"YulIdentifier","src":"27106:6:40"},"nativeSrc":"27106:14:40","nodeType":"YulFunctionCall","src":"27106:14:40"},"nativeSrc":"27106:14:40","nodeType":"YulExpressionStatement","src":"27106:14:40"},{"nativeSrc":"27129:26:40","nodeType":"YulAssignment","src":"27129:26:40","value":{"arguments":[{"kind":"number","nativeSrc":"27147:1:40","nodeType":"YulLiteral","src":"27147:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"27150:4:40","nodeType":"YulLiteral","src":"27150:4:40","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"27137:9:40","nodeType":"YulIdentifier","src":"27137:9:40"},"nativeSrc":"27137:18:40","nodeType":"YulFunctionCall","src":"27137:18:40"},"variableNames":[{"name":"data","nativeSrc":"27129:4:40","nodeType":"YulIdentifier","src":"27129:4:40"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"27041:120:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"27079:3:40","nodeType":"YulTypedName","src":"27079:3:40","type":""}],"returnVariables":[{"name":"data","nativeSrc":"27087:4:40","nodeType":"YulTypedName","src":"27087:4:40","type":""}],"src":"27041:120:40"},{"body":{"nativeSrc":"27246:437:40","nodeType":"YulBlock","src":"27246:437:40","statements":[{"body":{"nativeSrc":"27279:398:40","nodeType":"YulBlock","src":"27279:398:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"27300:1:40","nodeType":"YulLiteral","src":"27300:1:40","type":"","value":"0"},{"name":"array","nativeSrc":"27303:5:40","nodeType":"YulIdentifier","src":"27303:5:40"}],"functionName":{"name":"mstore","nativeSrc":"27293:6:40","nodeType":"YulIdentifier","src":"27293:6:40"},"nativeSrc":"27293:16:40","nodeType":"YulFunctionCall","src":"27293:16:40"},"nativeSrc":"27293:16:40","nodeType":"YulExpressionStatement","src":"27293:16:40"},{"nativeSrc":"27322:30:40","nodeType":"YulVariableDeclaration","src":"27322:30:40","value":{"arguments":[{"kind":"number","nativeSrc":"27344:1:40","nodeType":"YulLiteral","src":"27344:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"27347:4:40","nodeType":"YulLiteral","src":"27347:4:40","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"27334:9:40","nodeType":"YulIdentifier","src":"27334:9:40"},"nativeSrc":"27334:18:40","nodeType":"YulFunctionCall","src":"27334:18:40"},"variables":[{"name":"data","nativeSrc":"27326:4:40","nodeType":"YulTypedName","src":"27326:4:40","type":""}]},{"nativeSrc":"27365:57:40","nodeType":"YulVariableDeclaration","src":"27365:57:40","value":{"arguments":[{"name":"data","nativeSrc":"27388:4:40","nodeType":"YulIdentifier","src":"27388:4:40"},{"arguments":[{"kind":"number","nativeSrc":"27398:1:40","nodeType":"YulLiteral","src":"27398:1:40","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"27405:10:40","nodeType":"YulIdentifier","src":"27405:10:40"},{"kind":"number","nativeSrc":"27417:2:40","nodeType":"YulLiteral","src":"27417:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"27401:3:40","nodeType":"YulIdentifier","src":"27401:3:40"},"nativeSrc":"27401:19:40","nodeType":"YulFunctionCall","src":"27401:19:40"}],"functionName":{"name":"shr","nativeSrc":"27394:3:40","nodeType":"YulIdentifier","src":"27394:3:40"},"nativeSrc":"27394:27:40","nodeType":"YulFunctionCall","src":"27394:27:40"}],"functionName":{"name":"add","nativeSrc":"27384:3:40","nodeType":"YulIdentifier","src":"27384:3:40"},"nativeSrc":"27384:38:40","nodeType":"YulFunctionCall","src":"27384:38:40"},"variables":[{"name":"deleteStart","nativeSrc":"27369:11:40","nodeType":"YulTypedName","src":"27369:11:40","type":""}]},{"body":{"nativeSrc":"27459:23:40","nodeType":"YulBlock","src":"27459:23:40","statements":[{"nativeSrc":"27461:19:40","nodeType":"YulAssignment","src":"27461:19:40","value":{"name":"data","nativeSrc":"27476:4:40","nodeType":"YulIdentifier","src":"27476:4:40"},"variableNames":[{"name":"deleteStart","nativeSrc":"27461:11:40","nodeType":"YulIdentifier","src":"27461:11:40"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"27441:10:40","nodeType":"YulIdentifier","src":"27441:10:40"},{"kind":"number","nativeSrc":"27453:4:40","nodeType":"YulLiteral","src":"27453:4:40","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"27438:2:40","nodeType":"YulIdentifier","src":"27438:2:40"},"nativeSrc":"27438:20:40","nodeType":"YulFunctionCall","src":"27438:20:40"},"nativeSrc":"27435:47:40","nodeType":"YulIf","src":"27435:47:40"},{"nativeSrc":"27495:41:40","nodeType":"YulVariableDeclaration","src":"27495:41:40","value":{"arguments":[{"name":"data","nativeSrc":"27509:4:40","nodeType":"YulIdentifier","src":"27509:4:40"},{"arguments":[{"kind":"number","nativeSrc":"27519:1:40","nodeType":"YulLiteral","src":"27519:1:40","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"27526:3:40","nodeType":"YulIdentifier","src":"27526:3:40"},{"kind":"number","nativeSrc":"27531:2:40","nodeType":"YulLiteral","src":"27531:2:40","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"27522:3:40","nodeType":"YulIdentifier","src":"27522:3:40"},"nativeSrc":"27522:12:40","nodeType":"YulFunctionCall","src":"27522:12:40"}],"functionName":{"name":"shr","nativeSrc":"27515:3:40","nodeType":"YulIdentifier","src":"27515:3:40"},"nativeSrc":"27515:20:40","nodeType":"YulFunctionCall","src":"27515:20:40"}],"functionName":{"name":"add","nativeSrc":"27505:3:40","nodeType":"YulIdentifier","src":"27505:3:40"},"nativeSrc":"27505:31:40","nodeType":"YulFunctionCall","src":"27505:31:40"},"variables":[{"name":"_1","nativeSrc":"27499:2:40","nodeType":"YulTypedName","src":"27499:2:40","type":""}]},{"nativeSrc":"27549:24:40","nodeType":"YulVariableDeclaration","src":"27549:24:40","value":{"name":"deleteStart","nativeSrc":"27562:11:40","nodeType":"YulIdentifier","src":"27562:11:40"},"variables":[{"name":"start","nativeSrc":"27553:5:40","nodeType":"YulTypedName","src":"27553:5:40","type":""}]},{"body":{"nativeSrc":"27647:20:40","nodeType":"YulBlock","src":"27647:20:40","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"27656:5:40","nodeType":"YulIdentifier","src":"27656:5:40"},{"kind":"number","nativeSrc":"27663:1:40","nodeType":"YulLiteral","src":"27663:1:40","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"27649:6:40","nodeType":"YulIdentifier","src":"27649:6:40"},"nativeSrc":"27649:16:40","nodeType":"YulFunctionCall","src":"27649:16:40"},"nativeSrc":"27649:16:40","nodeType":"YulExpressionStatement","src":"27649:16:40"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"27597:5:40","nodeType":"YulIdentifier","src":"27597:5:40"},{"name":"_1","nativeSrc":"27604:2:40","nodeType":"YulIdentifier","src":"27604:2:40"}],"functionName":{"name":"lt","nativeSrc":"27594:2:40","nodeType":"YulIdentifier","src":"27594:2:40"},"nativeSrc":"27594:13:40","nodeType":"YulFunctionCall","src":"27594:13:40"},"nativeSrc":"27586:81:40","nodeType":"YulForLoop","post":{"nativeSrc":"27608:26:40","nodeType":"YulBlock","src":"27608:26:40","statements":[{"nativeSrc":"27610:22:40","nodeType":"YulAssignment","src":"27610:22:40","value":{"arguments":[{"name":"start","nativeSrc":"27623:5:40","nodeType":"YulIdentifier","src":"27623:5:40"},{"kind":"number","nativeSrc":"27630:1:40","nodeType":"YulLiteral","src":"27630:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"27619:3:40","nodeType":"YulIdentifier","src":"27619:3:40"},"nativeSrc":"27619:13:40","nodeType":"YulFunctionCall","src":"27619:13:40"},"variableNames":[{"name":"start","nativeSrc":"27610:5:40","nodeType":"YulIdentifier","src":"27610:5:40"}]}]},"pre":{"nativeSrc":"27590:3:40","nodeType":"YulBlock","src":"27590:3:40","statements":[]},"src":"27586:81:40"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"27262:3:40","nodeType":"YulIdentifier","src":"27262:3:40"},{"kind":"number","nativeSrc":"27267:2:40","nodeType":"YulLiteral","src":"27267:2:40","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"27259:2:40","nodeType":"YulIdentifier","src":"27259:2:40"},"nativeSrc":"27259:11:40","nodeType":"YulFunctionCall","src":"27259:11:40"},"nativeSrc":"27256:421:40","nodeType":"YulIf","src":"27256:421:40"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"27166:517:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"27218:5:40","nodeType":"YulTypedName","src":"27218:5:40","type":""},{"name":"len","nativeSrc":"27225:3:40","nodeType":"YulTypedName","src":"27225:3:40","type":""},{"name":"startIndex","nativeSrc":"27230:10:40","nodeType":"YulTypedName","src":"27230:10:40","type":""}],"src":"27166:517:40"},{"body":{"nativeSrc":"27773:81:40","nodeType":"YulBlock","src":"27773:81:40","statements":[{"nativeSrc":"27783:65:40","nodeType":"YulAssignment","src":"27783:65:40","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"27798:4:40","nodeType":"YulIdentifier","src":"27798:4:40"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"27816:1:40","nodeType":"YulLiteral","src":"27816:1:40","type":"","value":"3"},{"name":"len","nativeSrc":"27819:3:40","nodeType":"YulIdentifier","src":"27819:3:40"}],"functionName":{"name":"shl","nativeSrc":"27812:3:40","nodeType":"YulIdentifier","src":"27812:3:40"},"nativeSrc":"27812:11:40","nodeType":"YulFunctionCall","src":"27812:11:40"},{"arguments":[{"kind":"number","nativeSrc":"27829:1:40","nodeType":"YulLiteral","src":"27829:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"27825:3:40","nodeType":"YulIdentifier","src":"27825:3:40"},"nativeSrc":"27825:6:40","nodeType":"YulFunctionCall","src":"27825:6:40"}],"functionName":{"name":"shr","nativeSrc":"27808:3:40","nodeType":"YulIdentifier","src":"27808:3:40"},"nativeSrc":"27808:24:40","nodeType":"YulFunctionCall","src":"27808:24:40"}],"functionName":{"name":"not","nativeSrc":"27804:3:40","nodeType":"YulIdentifier","src":"27804:3:40"},"nativeSrc":"27804:29:40","nodeType":"YulFunctionCall","src":"27804:29:40"}],"functionName":{"name":"and","nativeSrc":"27794:3:40","nodeType":"YulIdentifier","src":"27794:3:40"},"nativeSrc":"27794:40:40","nodeType":"YulFunctionCall","src":"27794:40:40"},{"arguments":[{"kind":"number","nativeSrc":"27840:1:40","nodeType":"YulLiteral","src":"27840:1:40","type":"","value":"1"},{"name":"len","nativeSrc":"27843:3:40","nodeType":"YulIdentifier","src":"27843:3:40"}],"functionName":{"name":"shl","nativeSrc":"27836:3:40","nodeType":"YulIdentifier","src":"27836:3:40"},"nativeSrc":"27836:11:40","nodeType":"YulFunctionCall","src":"27836:11:40"}],"functionName":{"name":"or","nativeSrc":"27791:2:40","nodeType":"YulIdentifier","src":"27791:2:40"},"nativeSrc":"27791:57:40","nodeType":"YulFunctionCall","src":"27791:57:40"},"variableNames":[{"name":"used","nativeSrc":"27783:4:40","nodeType":"YulIdentifier","src":"27783:4:40"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"27688:166:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"27750:4:40","nodeType":"YulTypedName","src":"27750:4:40","type":""},{"name":"len","nativeSrc":"27756:3:40","nodeType":"YulTypedName","src":"27756:3:40","type":""}],"returnVariables":[{"name":"used","nativeSrc":"27764:4:40","nodeType":"YulTypedName","src":"27764:4:40","type":""}],"src":"27688:166:40"},{"body":{"nativeSrc":"27953:1201:40","nodeType":"YulBlock","src":"27953:1201:40","statements":[{"nativeSrc":"27963:24:40","nodeType":"YulVariableDeclaration","src":"27963:24:40","value":{"arguments":[{"name":"src","nativeSrc":"27983:3:40","nodeType":"YulIdentifier","src":"27983:3:40"}],"functionName":{"name":"mload","nativeSrc":"27977:5:40","nodeType":"YulIdentifier","src":"27977:5:40"},"nativeSrc":"27977:10:40","nodeType":"YulFunctionCall","src":"27977:10:40"},"variables":[{"name":"newLen","nativeSrc":"27967:6:40","nodeType":"YulTypedName","src":"27967:6:40","type":""}]},{"body":{"nativeSrc":"28030:22:40","nodeType":"YulBlock","src":"28030:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"28032:16:40","nodeType":"YulIdentifier","src":"28032:16:40"},"nativeSrc":"28032:18:40","nodeType":"YulFunctionCall","src":"28032:18:40"},"nativeSrc":"28032:18:40","nodeType":"YulExpressionStatement","src":"28032:18:40"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"28002:6:40","nodeType":"YulIdentifier","src":"28002:6:40"},{"kind":"number","nativeSrc":"28010:18:40","nodeType":"YulLiteral","src":"28010:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"27999:2:40","nodeType":"YulIdentifier","src":"27999:2:40"},"nativeSrc":"27999:30:40","nodeType":"YulFunctionCall","src":"27999:30:40"},"nativeSrc":"27996:56:40","nodeType":"YulIf","src":"27996:56:40"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28104:4:40","nodeType":"YulIdentifier","src":"28104:4:40"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"28142:4:40","nodeType":"YulIdentifier","src":"28142:4:40"}],"functionName":{"name":"sload","nativeSrc":"28136:5:40","nodeType":"YulIdentifier","src":"28136:5:40"},"nativeSrc":"28136:11:40","nodeType":"YulFunctionCall","src":"28136:11:40"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"28110:25:40","nodeType":"YulIdentifier","src":"28110:25:40"},"nativeSrc":"28110:38:40","nodeType":"YulFunctionCall","src":"28110:38:40"},{"name":"newLen","nativeSrc":"28150:6:40","nodeType":"YulIdentifier","src":"28150:6:40"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"28061:42:40","nodeType":"YulIdentifier","src":"28061:42:40"},"nativeSrc":"28061:96:40","nodeType":"YulFunctionCall","src":"28061:96:40"},"nativeSrc":"28061:96:40","nodeType":"YulExpressionStatement","src":"28061:96:40"},{"nativeSrc":"28166:18:40","nodeType":"YulVariableDeclaration","src":"28166:18:40","value":{"kind":"number","nativeSrc":"28183:1:40","nodeType":"YulLiteral","src":"28183:1:40","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"28170:9:40","nodeType":"YulTypedName","src":"28170:9:40","type":""}]},{"nativeSrc":"28193:17:40","nodeType":"YulAssignment","src":"28193:17:40","value":{"kind":"number","nativeSrc":"28206:4:40","nodeType":"YulLiteral","src":"28206:4:40","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"28193:9:40","nodeType":"YulIdentifier","src":"28193:9:40"}]},{"cases":[{"body":{"nativeSrc":"28256:641:40","nodeType":"YulBlock","src":"28256:641:40","statements":[{"nativeSrc":"28270:35:40","nodeType":"YulVariableDeclaration","src":"28270:35:40","value":{"arguments":[{"name":"newLen","nativeSrc":"28289:6:40","nodeType":"YulIdentifier","src":"28289:6:40"},{"arguments":[{"kind":"number","nativeSrc":"28301:2:40","nodeType":"YulLiteral","src":"28301:2:40","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"28297:3:40","nodeType":"YulIdentifier","src":"28297:3:40"},"nativeSrc":"28297:7:40","nodeType":"YulFunctionCall","src":"28297:7:40"}],"functionName":{"name":"and","nativeSrc":"28285:3:40","nodeType":"YulIdentifier","src":"28285:3:40"},"nativeSrc":"28285:20:40","nodeType":"YulFunctionCall","src":"28285:20:40"},"variables":[{"name":"loopEnd","nativeSrc":"28274:7:40","nodeType":"YulTypedName","src":"28274:7:40","type":""}]},{"nativeSrc":"28318:48:40","nodeType":"YulVariableDeclaration","src":"28318:48:40","value":{"arguments":[{"name":"slot","nativeSrc":"28361:4:40","nodeType":"YulIdentifier","src":"28361:4:40"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"28332:28:40","nodeType":"YulIdentifier","src":"28332:28:40"},"nativeSrc":"28332:34:40","nodeType":"YulFunctionCall","src":"28332:34:40"},"variables":[{"name":"dstPtr","nativeSrc":"28322:6:40","nodeType":"YulTypedName","src":"28322:6:40","type":""}]},{"nativeSrc":"28379:10:40","nodeType":"YulVariableDeclaration","src":"28379:10:40","value":{"kind":"number","nativeSrc":"28388:1:40","nodeType":"YulLiteral","src":"28388:1:40","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"28383:1:40","nodeType":"YulTypedName","src":"28383:1:40","type":""}]},{"body":{"nativeSrc":"28459:165:40","nodeType":"YulBlock","src":"28459:165:40","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"28484:6:40","nodeType":"YulIdentifier","src":"28484:6:40"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28502:3:40","nodeType":"YulIdentifier","src":"28502:3:40"},{"name":"srcOffset","nativeSrc":"28507:9:40","nodeType":"YulIdentifier","src":"28507:9:40"}],"functionName":{"name":"add","nativeSrc":"28498:3:40","nodeType":"YulIdentifier","src":"28498:3:40"},"nativeSrc":"28498:19:40","nodeType":"YulFunctionCall","src":"28498:19:40"}],"functionName":{"name":"mload","nativeSrc":"28492:5:40","nodeType":"YulIdentifier","src":"28492:5:40"},"nativeSrc":"28492:26:40","nodeType":"YulFunctionCall","src":"28492:26:40"}],"functionName":{"name":"sstore","nativeSrc":"28477:6:40","nodeType":"YulIdentifier","src":"28477:6:40"},"nativeSrc":"28477:42:40","nodeType":"YulFunctionCall","src":"28477:42:40"},"nativeSrc":"28477:42:40","nodeType":"YulExpressionStatement","src":"28477:42:40"},{"nativeSrc":"28536:24:40","nodeType":"YulAssignment","src":"28536:24:40","value":{"arguments":[{"name":"dstPtr","nativeSrc":"28550:6:40","nodeType":"YulIdentifier","src":"28550:6:40"},{"kind":"number","nativeSrc":"28558:1:40","nodeType":"YulLiteral","src":"28558:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28546:3:40","nodeType":"YulIdentifier","src":"28546:3:40"},"nativeSrc":"28546:14:40","nodeType":"YulFunctionCall","src":"28546:14:40"},"variableNames":[{"name":"dstPtr","nativeSrc":"28536:6:40","nodeType":"YulIdentifier","src":"28536:6:40"}]},{"nativeSrc":"28577:33:40","nodeType":"YulAssignment","src":"28577:33:40","value":{"arguments":[{"name":"srcOffset","nativeSrc":"28594:9:40","nodeType":"YulIdentifier","src":"28594:9:40"},{"kind":"number","nativeSrc":"28605:4:40","nodeType":"YulLiteral","src":"28605:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"28590:3:40","nodeType":"YulIdentifier","src":"28590:3:40"},"nativeSrc":"28590:20:40","nodeType":"YulFunctionCall","src":"28590:20:40"},"variableNames":[{"name":"srcOffset","nativeSrc":"28577:9:40","nodeType":"YulIdentifier","src":"28577:9:40"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"28413:1:40","nodeType":"YulIdentifier","src":"28413:1:40"},{"name":"loopEnd","nativeSrc":"28416:7:40","nodeType":"YulIdentifier","src":"28416:7:40"}],"functionName":{"name":"lt","nativeSrc":"28410:2:40","nodeType":"YulIdentifier","src":"28410:2:40"},"nativeSrc":"28410:14:40","nodeType":"YulFunctionCall","src":"28410:14:40"},"nativeSrc":"28402:222:40","nodeType":"YulForLoop","post":{"nativeSrc":"28425:21:40","nodeType":"YulBlock","src":"28425:21:40","statements":[{"nativeSrc":"28427:17:40","nodeType":"YulAssignment","src":"28427:17:40","value":{"arguments":[{"name":"i","nativeSrc":"28436:1:40","nodeType":"YulIdentifier","src":"28436:1:40"},{"kind":"number","nativeSrc":"28439:4:40","nodeType":"YulLiteral","src":"28439:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"28432:3:40","nodeType":"YulIdentifier","src":"28432:3:40"},"nativeSrc":"28432:12:40","nodeType":"YulFunctionCall","src":"28432:12:40"},"variableNames":[{"name":"i","nativeSrc":"28427:1:40","nodeType":"YulIdentifier","src":"28427:1:40"}]}]},"pre":{"nativeSrc":"28406:3:40","nodeType":"YulBlock","src":"28406:3:40","statements":[]},"src":"28402:222:40"},{"body":{"nativeSrc":"28672:166:40","nodeType":"YulBlock","src":"28672:166:40","statements":[{"nativeSrc":"28690:43:40","nodeType":"YulVariableDeclaration","src":"28690:43:40","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28717:3:40","nodeType":"YulIdentifier","src":"28717:3:40"},{"name":"srcOffset","nativeSrc":"28722:9:40","nodeType":"YulIdentifier","src":"28722:9:40"}],"functionName":{"name":"add","nativeSrc":"28713:3:40","nodeType":"YulIdentifier","src":"28713:3:40"},"nativeSrc":"28713:19:40","nodeType":"YulFunctionCall","src":"28713:19:40"}],"functionName":{"name":"mload","nativeSrc":"28707:5:40","nodeType":"YulIdentifier","src":"28707:5:40"},"nativeSrc":"28707:26:40","nodeType":"YulFunctionCall","src":"28707:26:40"},"variables":[{"name":"lastValue","nativeSrc":"28694:9:40","nodeType":"YulTypedName","src":"28694:9:40","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"28757:6:40","nodeType":"YulIdentifier","src":"28757:6:40"},{"arguments":[{"name":"lastValue","nativeSrc":"28769:9:40","nodeType":"YulIdentifier","src":"28769:9:40"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28796:1:40","nodeType":"YulLiteral","src":"28796:1:40","type":"","value":"3"},{"name":"newLen","nativeSrc":"28799:6:40","nodeType":"YulIdentifier","src":"28799:6:40"}],"functionName":{"name":"shl","nativeSrc":"28792:3:40","nodeType":"YulIdentifier","src":"28792:3:40"},"nativeSrc":"28792:14:40","nodeType":"YulFunctionCall","src":"28792:14:40"},{"kind":"number","nativeSrc":"28808:3:40","nodeType":"YulLiteral","src":"28808:3:40","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"28788:3:40","nodeType":"YulIdentifier","src":"28788:3:40"},"nativeSrc":"28788:24:40","nodeType":"YulFunctionCall","src":"28788:24:40"},{"arguments":[{"kind":"number","nativeSrc":"28818:1:40","nodeType":"YulLiteral","src":"28818:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"28814:3:40","nodeType":"YulIdentifier","src":"28814:3:40"},"nativeSrc":"28814:6:40","nodeType":"YulFunctionCall","src":"28814:6:40"}],"functionName":{"name":"shr","nativeSrc":"28784:3:40","nodeType":"YulIdentifier","src":"28784:3:40"},"nativeSrc":"28784:37:40","nodeType":"YulFunctionCall","src":"28784:37:40"}],"functionName":{"name":"not","nativeSrc":"28780:3:40","nodeType":"YulIdentifier","src":"28780:3:40"},"nativeSrc":"28780:42:40","nodeType":"YulFunctionCall","src":"28780:42:40"}],"functionName":{"name":"and","nativeSrc":"28765:3:40","nodeType":"YulIdentifier","src":"28765:3:40"},"nativeSrc":"28765:58:40","nodeType":"YulFunctionCall","src":"28765:58:40"}],"functionName":{"name":"sstore","nativeSrc":"28750:6:40","nodeType":"YulIdentifier","src":"28750:6:40"},"nativeSrc":"28750:74:40","nodeType":"YulFunctionCall","src":"28750:74:40"},"nativeSrc":"28750:74:40","nodeType":"YulExpressionStatement","src":"28750:74:40"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"28643:7:40","nodeType":"YulIdentifier","src":"28643:7:40"},{"name":"newLen","nativeSrc":"28652:6:40","nodeType":"YulIdentifier","src":"28652:6:40"}],"functionName":{"name":"lt","nativeSrc":"28640:2:40","nodeType":"YulIdentifier","src":"28640:2:40"},"nativeSrc":"28640:19:40","nodeType":"YulFunctionCall","src":"28640:19:40"},"nativeSrc":"28637:201:40","nodeType":"YulIf","src":"28637:201:40"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28858:4:40","nodeType":"YulIdentifier","src":"28858:4:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28872:1:40","nodeType":"YulLiteral","src":"28872:1:40","type":"","value":"1"},{"name":"newLen","nativeSrc":"28875:6:40","nodeType":"YulIdentifier","src":"28875:6:40"}],"functionName":{"name":"shl","nativeSrc":"28868:3:40","nodeType":"YulIdentifier","src":"28868:3:40"},"nativeSrc":"28868:14:40","nodeType":"YulFunctionCall","src":"28868:14:40"},{"kind":"number","nativeSrc":"28884:1:40","nodeType":"YulLiteral","src":"28884:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28864:3:40","nodeType":"YulIdentifier","src":"28864:3:40"},"nativeSrc":"28864:22:40","nodeType":"YulFunctionCall","src":"28864:22:40"}],"functionName":{"name":"sstore","nativeSrc":"28851:6:40","nodeType":"YulIdentifier","src":"28851:6:40"},"nativeSrc":"28851:36:40","nodeType":"YulFunctionCall","src":"28851:36:40"},"nativeSrc":"28851:36:40","nodeType":"YulExpressionStatement","src":"28851:36:40"}]},"nativeSrc":"28249:648:40","nodeType":"YulCase","src":"28249:648:40","value":{"kind":"number","nativeSrc":"28254:1:40","nodeType":"YulLiteral","src":"28254:1:40","type":"","value":"1"}},{"body":{"nativeSrc":"28914:234:40","nodeType":"YulBlock","src":"28914:234:40","statements":[{"nativeSrc":"28928:14:40","nodeType":"YulVariableDeclaration","src":"28928:14:40","value":{"kind":"number","nativeSrc":"28941:1:40","nodeType":"YulLiteral","src":"28941:1:40","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"28932:5:40","nodeType":"YulTypedName","src":"28932:5:40","type":""}]},{"body":{"nativeSrc":"28977:67:40","nodeType":"YulBlock","src":"28977:67:40","statements":[{"nativeSrc":"28995:35:40","nodeType":"YulAssignment","src":"28995:35:40","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"29014:3:40","nodeType":"YulIdentifier","src":"29014:3:40"},{"name":"srcOffset","nativeSrc":"29019:9:40","nodeType":"YulIdentifier","src":"29019:9:40"}],"functionName":{"name":"add","nativeSrc":"29010:3:40","nodeType":"YulIdentifier","src":"29010:3:40"},"nativeSrc":"29010:19:40","nodeType":"YulFunctionCall","src":"29010:19:40"}],"functionName":{"name":"mload","nativeSrc":"29004:5:40","nodeType":"YulIdentifier","src":"29004:5:40"},"nativeSrc":"29004:26:40","nodeType":"YulFunctionCall","src":"29004:26:40"},"variableNames":[{"name":"value","nativeSrc":"28995:5:40","nodeType":"YulIdentifier","src":"28995:5:40"}]}]},"condition":{"name":"newLen","nativeSrc":"28958:6:40","nodeType":"YulIdentifier","src":"28958:6:40"},"nativeSrc":"28955:89:40","nodeType":"YulIf","src":"28955:89:40"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"29064:4:40","nodeType":"YulIdentifier","src":"29064:4:40"},{"arguments":[{"name":"value","nativeSrc":"29123:5:40","nodeType":"YulIdentifier","src":"29123:5:40"},{"name":"newLen","nativeSrc":"29130:6:40","nodeType":"YulIdentifier","src":"29130:6:40"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"29070:52:40","nodeType":"YulIdentifier","src":"29070:52:40"},"nativeSrc":"29070:67:40","nodeType":"YulFunctionCall","src":"29070:67:40"}],"functionName":{"name":"sstore","nativeSrc":"29057:6:40","nodeType":"YulIdentifier","src":"29057:6:40"},"nativeSrc":"29057:81:40","nodeType":"YulFunctionCall","src":"29057:81:40"},"nativeSrc":"29057:81:40","nodeType":"YulExpressionStatement","src":"29057:81:40"}]},"nativeSrc":"28906:242:40","nodeType":"YulCase","src":"28906:242:40","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"28229:6:40","nodeType":"YulIdentifier","src":"28229:6:40"},{"kind":"number","nativeSrc":"28237:2:40","nodeType":"YulLiteral","src":"28237:2:40","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"28226:2:40","nodeType":"YulIdentifier","src":"28226:2:40"},"nativeSrc":"28226:14:40","nodeType":"YulFunctionCall","src":"28226:14:40"},"nativeSrc":"28219:929:40","nodeType":"YulSwitch","src":"28219:929:40"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"27859:1295:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"27938:4:40","nodeType":"YulTypedName","src":"27938:4:40","type":""},{"name":"src","nativeSrc":"27944:3:40","nodeType":"YulTypedName","src":"27944:3:40","type":""}],"src":"27859:1295:40"},{"body":{"nativeSrc":"29384:874:40","nodeType":"YulBlock","src":"29384:874:40","statements":[{"nativeSrc":"29394:32:40","nodeType":"YulVariableDeclaration","src":"29394:32:40","value":{"arguments":[{"name":"headStart","nativeSrc":"29412:9:40","nodeType":"YulIdentifier","src":"29412:9:40"},{"kind":"number","nativeSrc":"29423:2:40","nodeType":"YulLiteral","src":"29423:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29408:3:40","nodeType":"YulIdentifier","src":"29408:3:40"},"nativeSrc":"29408:18:40","nodeType":"YulFunctionCall","src":"29408:18:40"},"variables":[{"name":"tail_1","nativeSrc":"29398:6:40","nodeType":"YulTypedName","src":"29398:6:40","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"29442:9:40","nodeType":"YulIdentifier","src":"29442:9:40"},{"kind":"number","nativeSrc":"29453:2:40","nodeType":"YulLiteral","src":"29453:2:40","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"29435:6:40","nodeType":"YulIdentifier","src":"29435:6:40"},"nativeSrc":"29435:21:40","nodeType":"YulFunctionCall","src":"29435:21:40"},"nativeSrc":"29435:21:40","nodeType":"YulExpressionStatement","src":"29435:21:40"},{"nativeSrc":"29465:17:40","nodeType":"YulVariableDeclaration","src":"29465:17:40","value":{"name":"tail_1","nativeSrc":"29476:6:40","nodeType":"YulIdentifier","src":"29476:6:40"},"variables":[{"name":"pos","nativeSrc":"29469:3:40","nodeType":"YulTypedName","src":"29469:3:40","type":""}]},{"nativeSrc":"29491:27:40","nodeType":"YulVariableDeclaration","src":"29491:27:40","value":{"arguments":[{"name":"value0","nativeSrc":"29511:6:40","nodeType":"YulIdentifier","src":"29511:6:40"}],"functionName":{"name":"mload","nativeSrc":"29505:5:40","nodeType":"YulIdentifier","src":"29505:5:40"},"nativeSrc":"29505:13:40","nodeType":"YulFunctionCall","src":"29505:13:40"},"variables":[{"name":"length","nativeSrc":"29495:6:40","nodeType":"YulTypedName","src":"29495:6:40","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"29534:6:40","nodeType":"YulIdentifier","src":"29534:6:40"},{"name":"length","nativeSrc":"29542:6:40","nodeType":"YulIdentifier","src":"29542:6:40"}],"functionName":{"name":"mstore","nativeSrc":"29527:6:40","nodeType":"YulIdentifier","src":"29527:6:40"},"nativeSrc":"29527:22:40","nodeType":"YulFunctionCall","src":"29527:22:40"},"nativeSrc":"29527:22:40","nodeType":"YulExpressionStatement","src":"29527:22:40"},{"nativeSrc":"29558:25:40","nodeType":"YulAssignment","src":"29558:25:40","value":{"arguments":[{"name":"headStart","nativeSrc":"29569:9:40","nodeType":"YulIdentifier","src":"29569:9:40"},{"kind":"number","nativeSrc":"29580:2:40","nodeType":"YulLiteral","src":"29580:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29565:3:40","nodeType":"YulIdentifier","src":"29565:3:40"},"nativeSrc":"29565:18:40","nodeType":"YulFunctionCall","src":"29565:18:40"},"variableNames":[{"name":"pos","nativeSrc":"29558:3:40","nodeType":"YulIdentifier","src":"29558:3:40"}]},{"nativeSrc":"29592:53:40","nodeType":"YulVariableDeclaration","src":"29592:53:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"29614:9:40","nodeType":"YulIdentifier","src":"29614:9:40"},{"arguments":[{"kind":"number","nativeSrc":"29629:1:40","nodeType":"YulLiteral","src":"29629:1:40","type":"","value":"5"},{"name":"length","nativeSrc":"29632:6:40","nodeType":"YulIdentifier","src":"29632:6:40"}],"functionName":{"name":"shl","nativeSrc":"29625:3:40","nodeType":"YulIdentifier","src":"29625:3:40"},"nativeSrc":"29625:14:40","nodeType":"YulFunctionCall","src":"29625:14:40"}],"functionName":{"name":"add","nativeSrc":"29610:3:40","nodeType":"YulIdentifier","src":"29610:3:40"},"nativeSrc":"29610:30:40","nodeType":"YulFunctionCall","src":"29610:30:40"},{"kind":"number","nativeSrc":"29642:2:40","nodeType":"YulLiteral","src":"29642:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29606:3:40","nodeType":"YulIdentifier","src":"29606:3:40"},"nativeSrc":"29606:39:40","nodeType":"YulFunctionCall","src":"29606:39:40"},"variables":[{"name":"tail_2","nativeSrc":"29596:6:40","nodeType":"YulTypedName","src":"29596:6:40","type":""}]},{"nativeSrc":"29654:29:40","nodeType":"YulVariableDeclaration","src":"29654:29:40","value":{"arguments":[{"name":"value0","nativeSrc":"29672:6:40","nodeType":"YulIdentifier","src":"29672:6:40"},{"kind":"number","nativeSrc":"29680:2:40","nodeType":"YulLiteral","src":"29680:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29668:3:40","nodeType":"YulIdentifier","src":"29668:3:40"},"nativeSrc":"29668:15:40","nodeType":"YulFunctionCall","src":"29668:15:40"},"variables":[{"name":"srcPtr","nativeSrc":"29658:6:40","nodeType":"YulTypedName","src":"29658:6:40","type":""}]},{"nativeSrc":"29692:10:40","nodeType":"YulVariableDeclaration","src":"29692:10:40","value":{"kind":"number","nativeSrc":"29701:1:40","nodeType":"YulLiteral","src":"29701:1:40","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"29696:1:40","nodeType":"YulTypedName","src":"29696:1:40","type":""}]},{"body":{"nativeSrc":"29760:469:40","nodeType":"YulBlock","src":"29760:469:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"29781:3:40","nodeType":"YulIdentifier","src":"29781:3:40"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29794:6:40","nodeType":"YulIdentifier","src":"29794:6:40"},{"name":"headStart","nativeSrc":"29802:9:40","nodeType":"YulIdentifier","src":"29802:9:40"}],"functionName":{"name":"sub","nativeSrc":"29790:3:40","nodeType":"YulIdentifier","src":"29790:3:40"},"nativeSrc":"29790:22:40","nodeType":"YulFunctionCall","src":"29790:22:40"},{"arguments":[{"kind":"number","nativeSrc":"29818:2:40","nodeType":"YulLiteral","src":"29818:2:40","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"29814:3:40","nodeType":"YulIdentifier","src":"29814:3:40"},"nativeSrc":"29814:7:40","nodeType":"YulFunctionCall","src":"29814:7:40"}],"functionName":{"name":"add","nativeSrc":"29786:3:40","nodeType":"YulIdentifier","src":"29786:3:40"},"nativeSrc":"29786:36:40","nodeType":"YulFunctionCall","src":"29786:36:40"}],"functionName":{"name":"mstore","nativeSrc":"29774:6:40","nodeType":"YulIdentifier","src":"29774:6:40"},"nativeSrc":"29774:49:40","nodeType":"YulFunctionCall","src":"29774:49:40"},"nativeSrc":"29774:49:40","nodeType":"YulExpressionStatement","src":"29774:49:40"},{"nativeSrc":"29836:23:40","nodeType":"YulVariableDeclaration","src":"29836:23:40","value":{"arguments":[{"name":"srcPtr","nativeSrc":"29852:6:40","nodeType":"YulIdentifier","src":"29852:6:40"}],"functionName":{"name":"mload","nativeSrc":"29846:5:40","nodeType":"YulIdentifier","src":"29846:5:40"},"nativeSrc":"29846:13:40","nodeType":"YulFunctionCall","src":"29846:13:40"},"variables":[{"name":"_1","nativeSrc":"29840:2:40","nodeType":"YulTypedName","src":"29840:2:40","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"29879:6:40","nodeType":"YulIdentifier","src":"29879:6:40"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29897:2:40","nodeType":"YulIdentifier","src":"29897:2:40"}],"functionName":{"name":"mload","nativeSrc":"29891:5:40","nodeType":"YulIdentifier","src":"29891:5:40"},"nativeSrc":"29891:9:40","nodeType":"YulFunctionCall","src":"29891:9:40"},{"kind":"number","nativeSrc":"29902:10:40","nodeType":"YulLiteral","src":"29902:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"29887:3:40","nodeType":"YulIdentifier","src":"29887:3:40"},"nativeSrc":"29887:26:40","nodeType":"YulFunctionCall","src":"29887:26:40"}],"functionName":{"name":"mstore","nativeSrc":"29872:6:40","nodeType":"YulIdentifier","src":"29872:6:40"},"nativeSrc":"29872:42:40","nodeType":"YulFunctionCall","src":"29872:42:40"},"nativeSrc":"29872:42:40","nodeType":"YulExpressionStatement","src":"29872:42:40"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29938:6:40","nodeType":"YulIdentifier","src":"29938:6:40"},{"kind":"number","nativeSrc":"29946:2:40","nodeType":"YulLiteral","src":"29946:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29934:3:40","nodeType":"YulIdentifier","src":"29934:3:40"},"nativeSrc":"29934:15:40","nodeType":"YulFunctionCall","src":"29934:15:40"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29965:2:40","nodeType":"YulIdentifier","src":"29965:2:40"},{"kind":"number","nativeSrc":"29969:2:40","nodeType":"YulLiteral","src":"29969:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29961:3:40","nodeType":"YulIdentifier","src":"29961:3:40"},"nativeSrc":"29961:11:40","nodeType":"YulFunctionCall","src":"29961:11:40"}],"functionName":{"name":"mload","nativeSrc":"29955:5:40","nodeType":"YulIdentifier","src":"29955:5:40"},"nativeSrc":"29955:18:40","nodeType":"YulFunctionCall","src":"29955:18:40"},{"kind":"number","nativeSrc":"29975:6:40","nodeType":"YulLiteral","src":"29975:6:40","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"29951:3:40","nodeType":"YulIdentifier","src":"29951:3:40"},"nativeSrc":"29951:31:40","nodeType":"YulFunctionCall","src":"29951:31:40"}],"functionName":{"name":"mstore","nativeSrc":"29927:6:40","nodeType":"YulIdentifier","src":"29927:6:40"},"nativeSrc":"29927:56:40","nodeType":"YulFunctionCall","src":"29927:56:40"},"nativeSrc":"29927:56:40","nodeType":"YulExpressionStatement","src":"29927:56:40"},{"nativeSrc":"29996:38:40","nodeType":"YulVariableDeclaration","src":"29996:38:40","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"30026:2:40","nodeType":"YulIdentifier","src":"30026:2:40"},{"kind":"number","nativeSrc":"30030:2:40","nodeType":"YulLiteral","src":"30030:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"30022:3:40","nodeType":"YulIdentifier","src":"30022:3:40"},"nativeSrc":"30022:11:40","nodeType":"YulFunctionCall","src":"30022:11:40"}],"functionName":{"name":"mload","nativeSrc":"30016:5:40","nodeType":"YulIdentifier","src":"30016:5:40"},"nativeSrc":"30016:18:40","nodeType":"YulFunctionCall","src":"30016:18:40"},"variables":[{"name":"memberValue0","nativeSrc":"30000:12:40","nodeType":"YulTypedName","src":"30000:12:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"30058:6:40","nodeType":"YulIdentifier","src":"30058:6:40"},{"kind":"number","nativeSrc":"30066:2:40","nodeType":"YulLiteral","src":"30066:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"30054:3:40","nodeType":"YulIdentifier","src":"30054:3:40"},"nativeSrc":"30054:15:40","nodeType":"YulFunctionCall","src":"30054:15:40"},{"kind":"number","nativeSrc":"30071:4:40","nodeType":"YulLiteral","src":"30071:4:40","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"30047:6:40","nodeType":"YulIdentifier","src":"30047:6:40"},"nativeSrc":"30047:29:40","nodeType":"YulFunctionCall","src":"30047:29:40"},"nativeSrc":"30047:29:40","nodeType":"YulExpressionStatement","src":"30047:29:40"},{"nativeSrc":"30089:60:40","nodeType":"YulAssignment","src":"30089:60:40","value":{"arguments":[{"name":"memberValue0","nativeSrc":"30117:12:40","nodeType":"YulIdentifier","src":"30117:12:40"},{"arguments":[{"name":"tail_2","nativeSrc":"30135:6:40","nodeType":"YulIdentifier","src":"30135:6:40"},{"kind":"number","nativeSrc":"30143:4:40","nodeType":"YulLiteral","src":"30143:4:40","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"30131:3:40","nodeType":"YulIdentifier","src":"30131:3:40"},"nativeSrc":"30131:17:40","nodeType":"YulFunctionCall","src":"30131:17:40"}],"functionName":{"name":"abi_encode_string","nativeSrc":"30099:17:40","nodeType":"YulIdentifier","src":"30099:17:40"},"nativeSrc":"30099:50:40","nodeType":"YulFunctionCall","src":"30099:50:40"},"variableNames":[{"name":"tail_2","nativeSrc":"30089:6:40","nodeType":"YulIdentifier","src":"30089:6:40"}]},{"nativeSrc":"30162:25:40","nodeType":"YulAssignment","src":"30162:25:40","value":{"arguments":[{"name":"srcPtr","nativeSrc":"30176:6:40","nodeType":"YulIdentifier","src":"30176:6:40"},{"kind":"number","nativeSrc":"30184:2:40","nodeType":"YulLiteral","src":"30184:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30172:3:40","nodeType":"YulIdentifier","src":"30172:3:40"},"nativeSrc":"30172:15:40","nodeType":"YulFunctionCall","src":"30172:15:40"},"variableNames":[{"name":"srcPtr","nativeSrc":"30162:6:40","nodeType":"YulIdentifier","src":"30162:6:40"}]},{"nativeSrc":"30200:19:40","nodeType":"YulAssignment","src":"30200:19:40","value":{"arguments":[{"name":"pos","nativeSrc":"30211:3:40","nodeType":"YulIdentifier","src":"30211:3:40"},{"kind":"number","nativeSrc":"30216:2:40","nodeType":"YulLiteral","src":"30216:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30207:3:40","nodeType":"YulIdentifier","src":"30207:3:40"},"nativeSrc":"30207:12:40","nodeType":"YulFunctionCall","src":"30207:12:40"},"variableNames":[{"name":"pos","nativeSrc":"30200:3:40","nodeType":"YulIdentifier","src":"30200:3:40"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"29722:1:40","nodeType":"YulIdentifier","src":"29722:1:40"},{"name":"length","nativeSrc":"29725:6:40","nodeType":"YulIdentifier","src":"29725:6:40"}],"functionName":{"name":"lt","nativeSrc":"29719:2:40","nodeType":"YulIdentifier","src":"29719:2:40"},"nativeSrc":"29719:13:40","nodeType":"YulFunctionCall","src":"29719:13:40"},"nativeSrc":"29711:518:40","nodeType":"YulForLoop","post":{"nativeSrc":"29733:18:40","nodeType":"YulBlock","src":"29733:18:40","statements":[{"nativeSrc":"29735:14:40","nodeType":"YulAssignment","src":"29735:14:40","value":{"arguments":[{"name":"i","nativeSrc":"29744:1:40","nodeType":"YulIdentifier","src":"29744:1:40"},{"kind":"number","nativeSrc":"29747:1:40","nodeType":"YulLiteral","src":"29747:1:40","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"29740:3:40","nodeType":"YulIdentifier","src":"29740:3:40"},"nativeSrc":"29740:9:40","nodeType":"YulFunctionCall","src":"29740:9:40"},"variableNames":[{"name":"i","nativeSrc":"29735:1:40","nodeType":"YulIdentifier","src":"29735:1:40"}]}]},"pre":{"nativeSrc":"29715:3:40","nodeType":"YulBlock","src":"29715:3:40","statements":[]},"src":"29711:518:40"},{"nativeSrc":"30238:14:40","nodeType":"YulAssignment","src":"30238:14:40","value":{"name":"tail_2","nativeSrc":"30246:6:40","nodeType":"YulIdentifier","src":"30246:6:40"},"variableNames":[{"name":"tail","nativeSrc":"30238:4:40","nodeType":"YulIdentifier","src":"30238:4:40"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"29159:1099:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"29353:9:40","nodeType":"YulTypedName","src":"29353:9:40","type":""},{"name":"value0","nativeSrc":"29364:6:40","nodeType":"YulTypedName","src":"29364:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"29375:4:40","nodeType":"YulTypedName","src":"29375:4:40","type":""}],"src":"29159:1099:40"},{"body":{"nativeSrc":"30361:389:40","nodeType":"YulBlock","src":"30361:389:40","statements":[{"nativeSrc":"30371:42:40","nodeType":"YulVariableDeclaration","src":"30371:42:40","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"30389:7:40","nodeType":"YulIdentifier","src":"30389:7:40"},{"name":"headStart","nativeSrc":"30398:9:40","nodeType":"YulIdentifier","src":"30398:9:40"}],"functionName":{"name":"sub","nativeSrc":"30385:3:40","nodeType":"YulIdentifier","src":"30385:3:40"},"nativeSrc":"30385:23:40","nodeType":"YulFunctionCall","src":"30385:23:40"},{"kind":"number","nativeSrc":"30410:2:40","nodeType":"YulLiteral","src":"30410:2:40","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"30381:3:40","nodeType":"YulIdentifier","src":"30381:3:40"},"nativeSrc":"30381:32:40","nodeType":"YulFunctionCall","src":"30381:32:40"},"variables":[{"name":"_1","nativeSrc":"30375:2:40","nodeType":"YulTypedName","src":"30375:2:40","type":""}]},{"body":{"nativeSrc":"30428:16:40","nodeType":"YulBlock","src":"30428:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"30437:1:40","nodeType":"YulLiteral","src":"30437:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"30440:1:40","nodeType":"YulLiteral","src":"30440:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"30430:6:40","nodeType":"YulIdentifier","src":"30430:6:40"},"nativeSrc":"30430:12:40","nodeType":"YulFunctionCall","src":"30430:12:40"},"nativeSrc":"30430:12:40","nodeType":"YulExpressionStatement","src":"30430:12:40"}]},"condition":{"name":"_1","nativeSrc":"30425:2:40","nodeType":"YulIdentifier","src":"30425:2:40"},"nativeSrc":"30422:22:40","nodeType":"YulIf","src":"30422:22:40"},{"nativeSrc":"30453:7:40","nodeType":"YulAssignment","src":"30453:7:40","value":{"kind":"number","nativeSrc":"30459:1:40","nodeType":"YulLiteral","src":"30459:1:40","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"30453:2:40","nodeType":"YulIdentifier","src":"30453:2:40"}]},{"nativeSrc":"30469:35:40","nodeType":"YulVariableDeclaration","src":"30469:35:40","value":{"arguments":[],"functionName":{"name":"allocate_memory_3874","nativeSrc":"30482:20:40","nodeType":"YulIdentifier","src":"30482:20:40"},"nativeSrc":"30482:22:40","nodeType":"YulFunctionCall","src":"30482:22:40"},"variables":[{"name":"value","nativeSrc":"30473:5:40","nodeType":"YulTypedName","src":"30473:5:40","type":""}]},{"nativeSrc":"30513:16:40","nodeType":"YulVariableDeclaration","src":"30513:16:40","value":{"kind":"number","nativeSrc":"30528:1:40","nodeType":"YulLiteral","src":"30528:1:40","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"30517:7:40","nodeType":"YulTypedName","src":"30517:7:40","type":""}]},{"nativeSrc":"30538:34:40","nodeType":"YulAssignment","src":"30538:34:40","value":{"arguments":[{"name":"headStart","nativeSrc":"30562:9:40","nodeType":"YulIdentifier","src":"30562:9:40"}],"functionName":{"name":"calldataload","nativeSrc":"30549:12:40","nodeType":"YulIdentifier","src":"30549:12:40"},"nativeSrc":"30549:23:40","nodeType":"YulFunctionCall","src":"30549:23:40"},"variableNames":[{"name":"value_1","nativeSrc":"30538:7:40","nodeType":"YulIdentifier","src":"30538:7:40"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"30588:5:40","nodeType":"YulIdentifier","src":"30588:5:40"},{"name":"value_1","nativeSrc":"30595:7:40","nodeType":"YulIdentifier","src":"30595:7:40"}],"functionName":{"name":"mstore","nativeSrc":"30581:6:40","nodeType":"YulIdentifier","src":"30581:6:40"},"nativeSrc":"30581:22:40","nodeType":"YulFunctionCall","src":"30581:22:40"},"nativeSrc":"30581:22:40","nodeType":"YulExpressionStatement","src":"30581:22:40"},{"nativeSrc":"30612:16:40","nodeType":"YulVariableDeclaration","src":"30612:16:40","value":{"kind":"number","nativeSrc":"30627:1:40","nodeType":"YulLiteral","src":"30627:1:40","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"30616:7:40","nodeType":"YulTypedName","src":"30616:7:40","type":""}]},{"nativeSrc":"30637:43:40","nodeType":"YulAssignment","src":"30637:43:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30665:9:40","nodeType":"YulIdentifier","src":"30665:9:40"},{"kind":"number","nativeSrc":"30676:2:40","nodeType":"YulLiteral","src":"30676:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30661:3:40","nodeType":"YulIdentifier","src":"30661:3:40"},"nativeSrc":"30661:18:40","nodeType":"YulFunctionCall","src":"30661:18:40"}],"functionName":{"name":"calldataload","nativeSrc":"30648:12:40","nodeType":"YulIdentifier","src":"30648:12:40"},"nativeSrc":"30648:32:40","nodeType":"YulFunctionCall","src":"30648:32:40"},"variableNames":[{"name":"value_2","nativeSrc":"30637:7:40","nodeType":"YulIdentifier","src":"30637:7:40"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"30700:5:40","nodeType":"YulIdentifier","src":"30700:5:40"},{"kind":"number","nativeSrc":"30707:2:40","nodeType":"YulLiteral","src":"30707:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30696:3:40","nodeType":"YulIdentifier","src":"30696:3:40"},"nativeSrc":"30696:14:40","nodeType":"YulFunctionCall","src":"30696:14:40"},{"name":"value_2","nativeSrc":"30712:7:40","nodeType":"YulIdentifier","src":"30712:7:40"}],"functionName":{"name":"mstore","nativeSrc":"30689:6:40","nodeType":"YulIdentifier","src":"30689:6:40"},"nativeSrc":"30689:31:40","nodeType":"YulFunctionCall","src":"30689:31:40"},"nativeSrc":"30689:31:40","nodeType":"YulExpressionStatement","src":"30689:31:40"},{"nativeSrc":"30729:15:40","nodeType":"YulAssignment","src":"30729:15:40","value":{"name":"value","nativeSrc":"30739:5:40","nodeType":"YulIdentifier","src":"30739:5:40"},"variableNames":[{"name":"value0","nativeSrc":"30729:6:40","nodeType":"YulIdentifier","src":"30729:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr","nativeSrc":"30263:487:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30327:9:40","nodeType":"YulTypedName","src":"30327:9:40","type":""},{"name":"dataEnd","nativeSrc":"30338:7:40","nodeType":"YulTypedName","src":"30338:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"30350:6:40","nodeType":"YulTypedName","src":"30350:6:40","type":""}],"src":"30263:487:40"},{"body":{"nativeSrc":"30910:179:40","nodeType":"YulBlock","src":"30910:179:40","statements":[{"nativeSrc":"30920:26:40","nodeType":"YulAssignment","src":"30920:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"30932:9:40","nodeType":"YulIdentifier","src":"30932:9:40"},{"kind":"number","nativeSrc":"30943:2:40","nodeType":"YulLiteral","src":"30943:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"30928:3:40","nodeType":"YulIdentifier","src":"30928:3:40"},"nativeSrc":"30928:18:40","nodeType":"YulFunctionCall","src":"30928:18:40"},"variableNames":[{"name":"tail","nativeSrc":"30920:4:40","nodeType":"YulIdentifier","src":"30920:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"30962:9:40","nodeType":"YulIdentifier","src":"30962:9:40"},{"arguments":[{"name":"value0","nativeSrc":"30977:6:40","nodeType":"YulIdentifier","src":"30977:6:40"},{"kind":"number","nativeSrc":"30985:10:40","nodeType":"YulLiteral","src":"30985:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"30973:3:40","nodeType":"YulIdentifier","src":"30973:3:40"},"nativeSrc":"30973:23:40","nodeType":"YulFunctionCall","src":"30973:23:40"}],"functionName":{"name":"mstore","nativeSrc":"30955:6:40","nodeType":"YulIdentifier","src":"30955:6:40"},"nativeSrc":"30955:42:40","nodeType":"YulFunctionCall","src":"30955:42:40"},"nativeSrc":"30955:42:40","nodeType":"YulExpressionStatement","src":"30955:42:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"31017:9:40","nodeType":"YulIdentifier","src":"31017:9:40"},{"kind":"number","nativeSrc":"31028:2:40","nodeType":"YulLiteral","src":"31028:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"31013:3:40","nodeType":"YulIdentifier","src":"31013:3:40"},"nativeSrc":"31013:18:40","nodeType":"YulFunctionCall","src":"31013:18:40"},{"name":"value1","nativeSrc":"31033:6:40","nodeType":"YulIdentifier","src":"31033:6:40"}],"functionName":{"name":"mstore","nativeSrc":"31006:6:40","nodeType":"YulIdentifier","src":"31006:6:40"},"nativeSrc":"31006:34:40","nodeType":"YulFunctionCall","src":"31006:34:40"},"nativeSrc":"31006:34:40","nodeType":"YulExpressionStatement","src":"31006:34:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"31060:9:40","nodeType":"YulIdentifier","src":"31060:9:40"},{"kind":"number","nativeSrc":"31071:2:40","nodeType":"YulLiteral","src":"31071:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"31056:3:40","nodeType":"YulIdentifier","src":"31056:3:40"},"nativeSrc":"31056:18:40","nodeType":"YulFunctionCall","src":"31056:18:40"},{"name":"value2","nativeSrc":"31076:6:40","nodeType":"YulIdentifier","src":"31076:6:40"}],"functionName":{"name":"mstore","nativeSrc":"31049:6:40","nodeType":"YulIdentifier","src":"31049:6:40"},"nativeSrc":"31049:34:40","nodeType":"YulFunctionCall","src":"31049:34:40"},"nativeSrc":"31049:34:40","nodeType":"YulExpressionStatement","src":"31049:34:40"}]},"name":"abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"30755:334:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30863:9:40","nodeType":"YulTypedName","src":"30863:9:40","type":""},{"name":"value2","nativeSrc":"30874:6:40","nodeType":"YulTypedName","src":"30874:6:40","type":""},{"name":"value1","nativeSrc":"30882:6:40","nodeType":"YulTypedName","src":"30882:6:40","type":""},{"name":"value0","nativeSrc":"30890:6:40","nodeType":"YulTypedName","src":"30890:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"30901:4:40","nodeType":"YulTypedName","src":"30901:4:40","type":""}],"src":"30755:334:40"},{"body":{"nativeSrc":"31140:171:40","nodeType":"YulBlock","src":"31140:171:40","statements":[{"body":{"nativeSrc":"31171:111:40","nodeType":"YulBlock","src":"31171:111:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"31192:1:40","nodeType":"YulLiteral","src":"31192:1:40","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"31199:3:40","nodeType":"YulLiteral","src":"31199:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"31204:10:40","nodeType":"YulLiteral","src":"31204:10:40","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"31195:3:40","nodeType":"YulIdentifier","src":"31195:3:40"},"nativeSrc":"31195:20:40","nodeType":"YulFunctionCall","src":"31195:20:40"}],"functionName":{"name":"mstore","nativeSrc":"31185:6:40","nodeType":"YulIdentifier","src":"31185:6:40"},"nativeSrc":"31185:31:40","nodeType":"YulFunctionCall","src":"31185:31:40"},"nativeSrc":"31185:31:40","nodeType":"YulExpressionStatement","src":"31185:31:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31236:1:40","nodeType":"YulLiteral","src":"31236:1:40","type":"","value":"4"},{"kind":"number","nativeSrc":"31239:4:40","nodeType":"YulLiteral","src":"31239:4:40","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"31229:6:40","nodeType":"YulIdentifier","src":"31229:6:40"},"nativeSrc":"31229:15:40","nodeType":"YulFunctionCall","src":"31229:15:40"},"nativeSrc":"31229:15:40","nodeType":"YulExpressionStatement","src":"31229:15:40"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31264:1:40","nodeType":"YulLiteral","src":"31264:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"31267:4:40","nodeType":"YulLiteral","src":"31267:4:40","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"31257:6:40","nodeType":"YulIdentifier","src":"31257:6:40"},"nativeSrc":"31257:15:40","nodeType":"YulFunctionCall","src":"31257:15:40"},"nativeSrc":"31257:15:40","nodeType":"YulExpressionStatement","src":"31257:15:40"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"31160:1:40","nodeType":"YulIdentifier","src":"31160:1:40"}],"functionName":{"name":"iszero","nativeSrc":"31153:6:40","nodeType":"YulIdentifier","src":"31153:6:40"},"nativeSrc":"31153:9:40","nodeType":"YulFunctionCall","src":"31153:9:40"},"nativeSrc":"31150:132:40","nodeType":"YulIf","src":"31150:132:40"},{"nativeSrc":"31291:14:40","nodeType":"YulAssignment","src":"31291:14:40","value":{"arguments":[{"name":"x","nativeSrc":"31300:1:40","nodeType":"YulIdentifier","src":"31300:1:40"},{"name":"y","nativeSrc":"31303:1:40","nodeType":"YulIdentifier","src":"31303:1:40"}],"functionName":{"name":"div","nativeSrc":"31296:3:40","nodeType":"YulIdentifier","src":"31296:3:40"},"nativeSrc":"31296:9:40","nodeType":"YulFunctionCall","src":"31296:9:40"},"variableNames":[{"name":"r","nativeSrc":"31291:1:40","nodeType":"YulIdentifier","src":"31291:1:40"}]}]},"name":"checked_div_t_uint256","nativeSrc":"31094:217:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"31125:1:40","nodeType":"YulTypedName","src":"31125:1:40","type":""},{"name":"y","nativeSrc":"31128:1:40","nodeType":"YulTypedName","src":"31128:1:40","type":""}],"returnVariables":[{"name":"r","nativeSrc":"31134:1:40","nodeType":"YulTypedName","src":"31134:1:40","type":""}],"src":"31094:217:40"},{"body":{"nativeSrc":"31368:116:40","nodeType":"YulBlock","src":"31368:116:40","statements":[{"nativeSrc":"31378:20:40","nodeType":"YulAssignment","src":"31378:20:40","value":{"arguments":[{"name":"x","nativeSrc":"31393:1:40","nodeType":"YulIdentifier","src":"31393:1:40"},{"name":"y","nativeSrc":"31396:1:40","nodeType":"YulIdentifier","src":"31396:1:40"}],"functionName":{"name":"mul","nativeSrc":"31389:3:40","nodeType":"YulIdentifier","src":"31389:3:40"},"nativeSrc":"31389:9:40","nodeType":"YulFunctionCall","src":"31389:9:40"},"variableNames":[{"name":"product","nativeSrc":"31378:7:40","nodeType":"YulIdentifier","src":"31378:7:40"}]},{"body":{"nativeSrc":"31456:22:40","nodeType":"YulBlock","src":"31456:22:40","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"31458:16:40","nodeType":"YulIdentifier","src":"31458:16:40"},"nativeSrc":"31458:18:40","nodeType":"YulFunctionCall","src":"31458:18:40"},"nativeSrc":"31458:18:40","nodeType":"YulExpressionStatement","src":"31458:18:40"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"31427:1:40","nodeType":"YulIdentifier","src":"31427:1:40"}],"functionName":{"name":"iszero","nativeSrc":"31420:6:40","nodeType":"YulIdentifier","src":"31420:6:40"},"nativeSrc":"31420:9:40","nodeType":"YulFunctionCall","src":"31420:9:40"},{"arguments":[{"name":"y","nativeSrc":"31434:1:40","nodeType":"YulIdentifier","src":"31434:1:40"},{"arguments":[{"name":"product","nativeSrc":"31441:7:40","nodeType":"YulIdentifier","src":"31441:7:40"},{"name":"x","nativeSrc":"31450:1:40","nodeType":"YulIdentifier","src":"31450:1:40"}],"functionName":{"name":"div","nativeSrc":"31437:3:40","nodeType":"YulIdentifier","src":"31437:3:40"},"nativeSrc":"31437:15:40","nodeType":"YulFunctionCall","src":"31437:15:40"}],"functionName":{"name":"eq","nativeSrc":"31431:2:40","nodeType":"YulIdentifier","src":"31431:2:40"},"nativeSrc":"31431:22:40","nodeType":"YulFunctionCall","src":"31431:22:40"}],"functionName":{"name":"or","nativeSrc":"31417:2:40","nodeType":"YulIdentifier","src":"31417:2:40"},"nativeSrc":"31417:37:40","nodeType":"YulFunctionCall","src":"31417:37:40"}],"functionName":{"name":"iszero","nativeSrc":"31410:6:40","nodeType":"YulIdentifier","src":"31410:6:40"},"nativeSrc":"31410:45:40","nodeType":"YulFunctionCall","src":"31410:45:40"},"nativeSrc":"31407:71:40","nodeType":"YulIf","src":"31407:71:40"}]},"name":"checked_mul_t_uint256","nativeSrc":"31316:168:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"31347:1:40","nodeType":"YulTypedName","src":"31347:1:40","type":""},{"name":"y","nativeSrc":"31350:1:40","nodeType":"YulTypedName","src":"31350:1:40","type":""}],"returnVariables":[{"name":"product","nativeSrc":"31356:7:40","nodeType":"YulTypedName","src":"31356:7:40","type":""}],"src":"31316:168:40"},{"body":{"nativeSrc":"31590:154:40","nodeType":"YulBlock","src":"31590:154:40","statements":[{"nativeSrc":"31600:28:40","nodeType":"YulAssignment","src":"31600:28:40","value":{"arguments":[{"name":"array","nativeSrc":"31622:5:40","nodeType":"YulIdentifier","src":"31622:5:40"}],"functionName":{"name":"calldataload","nativeSrc":"31609:12:40","nodeType":"YulIdentifier","src":"31609:12:40"},"nativeSrc":"31609:19:40","nodeType":"YulFunctionCall","src":"31609:19:40"},"variableNames":[{"name":"value","nativeSrc":"31600:5:40","nodeType":"YulIdentifier","src":"31600:5:40"}]},{"body":{"nativeSrc":"31660:78:40","nodeType":"YulBlock","src":"31660:78:40","statements":[{"nativeSrc":"31674:54:40","nodeType":"YulAssignment","src":"31674:54:40","value":{"arguments":[{"name":"value","nativeSrc":"31687:5:40","nodeType":"YulIdentifier","src":"31687:5:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"31702:1:40","nodeType":"YulLiteral","src":"31702:1:40","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"31709:2:40","nodeType":"YulLiteral","src":"31709:2:40","type":"","value":"32"},{"name":"len","nativeSrc":"31713:3:40","nodeType":"YulIdentifier","src":"31713:3:40"}],"functionName":{"name":"sub","nativeSrc":"31705:3:40","nodeType":"YulIdentifier","src":"31705:3:40"},"nativeSrc":"31705:12:40","nodeType":"YulFunctionCall","src":"31705:12:40"}],"functionName":{"name":"shl","nativeSrc":"31698:3:40","nodeType":"YulIdentifier","src":"31698:3:40"},"nativeSrc":"31698:20:40","nodeType":"YulFunctionCall","src":"31698:20:40"},{"arguments":[{"kind":"number","nativeSrc":"31724:1:40","nodeType":"YulLiteral","src":"31724:1:40","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"31720:3:40","nodeType":"YulIdentifier","src":"31720:3:40"},"nativeSrc":"31720:6:40","nodeType":"YulFunctionCall","src":"31720:6:40"}],"functionName":{"name":"shl","nativeSrc":"31694:3:40","nodeType":"YulIdentifier","src":"31694:3:40"},"nativeSrc":"31694:33:40","nodeType":"YulFunctionCall","src":"31694:33:40"}],"functionName":{"name":"and","nativeSrc":"31683:3:40","nodeType":"YulIdentifier","src":"31683:3:40"},"nativeSrc":"31683:45:40","nodeType":"YulFunctionCall","src":"31683:45:40"},"variableNames":[{"name":"value","nativeSrc":"31674:5:40","nodeType":"YulIdentifier","src":"31674:5:40"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"31643:3:40","nodeType":"YulIdentifier","src":"31643:3:40"},{"kind":"number","nativeSrc":"31648:2:40","nodeType":"YulLiteral","src":"31648:2:40","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"31640:2:40","nodeType":"YulIdentifier","src":"31640:2:40"},"nativeSrc":"31640:11:40","nodeType":"YulFunctionCall","src":"31640:11:40"},"nativeSrc":"31637:101:40","nodeType":"YulIf","src":"31637:101:40"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32","nativeSrc":"31489:255:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"31565:5:40","nodeType":"YulTypedName","src":"31565:5:40","type":""},{"name":"len","nativeSrc":"31572:3:40","nodeType":"YulTypedName","src":"31572:3:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"31580:5:40","nodeType":"YulTypedName","src":"31580:5:40","type":""}],"src":"31489:255:40"},{"body":{"nativeSrc":"31849:262:40","nodeType":"YulBlock","src":"31849:262:40","statements":[{"nativeSrc":"31859:29:40","nodeType":"YulVariableDeclaration","src":"31859:29:40","value":{"arguments":[{"name":"array","nativeSrc":"31882:5:40","nodeType":"YulIdentifier","src":"31882:5:40"}],"functionName":{"name":"calldataload","nativeSrc":"31869:12:40","nodeType":"YulIdentifier","src":"31869:12:40"},"nativeSrc":"31869:19:40","nodeType":"YulFunctionCall","src":"31869:19:40"},"variables":[{"name":"_1","nativeSrc":"31863:2:40","nodeType":"YulTypedName","src":"31863:2:40","type":""}]},{"nativeSrc":"31897:46:40","nodeType":"YulAssignment","src":"31897:46:40","value":{"arguments":[{"name":"_1","nativeSrc":"31910:2:40","nodeType":"YulIdentifier","src":"31910:2:40"},{"arguments":[{"kind":"number","nativeSrc":"31918:3:40","nodeType":"YulLiteral","src":"31918:3:40","type":"","value":"192"},{"kind":"number","nativeSrc":"31923:18:40","nodeType":"YulLiteral","src":"31923:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"31914:3:40","nodeType":"YulIdentifier","src":"31914:3:40"},"nativeSrc":"31914:28:40","nodeType":"YulFunctionCall","src":"31914:28:40"}],"functionName":{"name":"and","nativeSrc":"31906:3:40","nodeType":"YulIdentifier","src":"31906:3:40"},"nativeSrc":"31906:37:40","nodeType":"YulFunctionCall","src":"31906:37:40"},"variableNames":[{"name":"value","nativeSrc":"31897:5:40","nodeType":"YulIdentifier","src":"31897:5:40"}]},{"body":{"nativeSrc":"31974:131:40","nodeType":"YulBlock","src":"31974:131:40","statements":[{"nativeSrc":"31988:107:40","nodeType":"YulAssignment","src":"31988:107:40","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"32005:2:40","nodeType":"YulIdentifier","src":"32005:2:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32017:1:40","nodeType":"YulLiteral","src":"32017:1:40","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"32024:1:40","nodeType":"YulLiteral","src":"32024:1:40","type":"","value":"8"},{"name":"len","nativeSrc":"32027:3:40","nodeType":"YulIdentifier","src":"32027:3:40"}],"functionName":{"name":"sub","nativeSrc":"32020:3:40","nodeType":"YulIdentifier","src":"32020:3:40"},"nativeSrc":"32020:11:40","nodeType":"YulFunctionCall","src":"32020:11:40"}],"functionName":{"name":"shl","nativeSrc":"32013:3:40","nodeType":"YulIdentifier","src":"32013:3:40"},"nativeSrc":"32013:19:40","nodeType":"YulFunctionCall","src":"32013:19:40"},{"arguments":[{"kind":"number","nativeSrc":"32038:3:40","nodeType":"YulLiteral","src":"32038:3:40","type":"","value":"192"},{"kind":"number","nativeSrc":"32043:18:40","nodeType":"YulLiteral","src":"32043:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32034:3:40","nodeType":"YulIdentifier","src":"32034:3:40"},"nativeSrc":"32034:28:40","nodeType":"YulFunctionCall","src":"32034:28:40"}],"functionName":{"name":"shl","nativeSrc":"32009:3:40","nodeType":"YulIdentifier","src":"32009:3:40"},"nativeSrc":"32009:54:40","nodeType":"YulFunctionCall","src":"32009:54:40"}],"functionName":{"name":"and","nativeSrc":"32001:3:40","nodeType":"YulIdentifier","src":"32001:3:40"},"nativeSrc":"32001:63:40","nodeType":"YulFunctionCall","src":"32001:63:40"},{"arguments":[{"kind":"number","nativeSrc":"32070:3:40","nodeType":"YulLiteral","src":"32070:3:40","type":"","value":"192"},{"kind":"number","nativeSrc":"32075:18:40","nodeType":"YulLiteral","src":"32075:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32066:3:40","nodeType":"YulIdentifier","src":"32066:3:40"},"nativeSrc":"32066:28:40","nodeType":"YulFunctionCall","src":"32066:28:40"}],"functionName":{"name":"and","nativeSrc":"31997:3:40","nodeType":"YulIdentifier","src":"31997:3:40"},"nativeSrc":"31997:98:40","nodeType":"YulFunctionCall","src":"31997:98:40"},"variableNames":[{"name":"value","nativeSrc":"31988:5:40","nodeType":"YulIdentifier","src":"31988:5:40"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"31958:3:40","nodeType":"YulIdentifier","src":"31958:3:40"},{"kind":"number","nativeSrc":"31963:1:40","nodeType":"YulLiteral","src":"31963:1:40","type":"","value":"8"}],"functionName":{"name":"lt","nativeSrc":"31955:2:40","nodeType":"YulIdentifier","src":"31955:2:40"},"nativeSrc":"31955:10:40","nodeType":"YulFunctionCall","src":"31955:10:40"},"nativeSrc":"31952:153:40","nodeType":"YulIf","src":"31952:153:40"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8","nativeSrc":"31749:362:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"31824:5:40","nodeType":"YulTypedName","src":"31824:5:40","type":""},{"name":"len","nativeSrc":"31831:3:40","nodeType":"YulTypedName","src":"31831:3:40","type":""}],"returnVariables":[{"name":"value","nativeSrc":"31839:5:40","nodeType":"YulTypedName","src":"31839:5:40","type":""}],"src":"31749:362:40"},{"body":{"nativeSrc":"32333:351:40","nodeType":"YulBlock","src":"32333:351:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"32350:3:40","nodeType":"YulIdentifier","src":"32350:3:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32363:3:40","nodeType":"YulLiteral","src":"32363:3:40","type":"","value":"192"},{"name":"value0","nativeSrc":"32368:6:40","nodeType":"YulIdentifier","src":"32368:6:40"}],"functionName":{"name":"shl","nativeSrc":"32359:3:40","nodeType":"YulIdentifier","src":"32359:3:40"},"nativeSrc":"32359:16:40","nodeType":"YulFunctionCall","src":"32359:16:40"},{"arguments":[{"kind":"number","nativeSrc":"32381:3:40","nodeType":"YulLiteral","src":"32381:3:40","type":"","value":"192"},{"kind":"number","nativeSrc":"32386:18:40","nodeType":"YulLiteral","src":"32386:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32377:3:40","nodeType":"YulIdentifier","src":"32377:3:40"},"nativeSrc":"32377:28:40","nodeType":"YulFunctionCall","src":"32377:28:40"}],"functionName":{"name":"and","nativeSrc":"32355:3:40","nodeType":"YulIdentifier","src":"32355:3:40"},"nativeSrc":"32355:51:40","nodeType":"YulFunctionCall","src":"32355:51:40"}],"functionName":{"name":"mstore","nativeSrc":"32343:6:40","nodeType":"YulIdentifier","src":"32343:6:40"},"nativeSrc":"32343:64:40","nodeType":"YulFunctionCall","src":"32343:64:40"},"nativeSrc":"32343:64:40","nodeType":"YulExpressionStatement","src":"32343:64:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32427:3:40","nodeType":"YulIdentifier","src":"32427:3:40"},{"kind":"number","nativeSrc":"32432:1:40","nodeType":"YulLiteral","src":"32432:1:40","type":"","value":"8"}],"functionName":{"name":"add","nativeSrc":"32423:3:40","nodeType":"YulIdentifier","src":"32423:3:40"},"nativeSrc":"32423:11:40","nodeType":"YulFunctionCall","src":"32423:11:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32444:3:40","nodeType":"YulLiteral","src":"32444:3:40","type":"","value":"224"},{"name":"value1","nativeSrc":"32449:6:40","nodeType":"YulIdentifier","src":"32449:6:40"}],"functionName":{"name":"shl","nativeSrc":"32440:3:40","nodeType":"YulIdentifier","src":"32440:3:40"},"nativeSrc":"32440:16:40","nodeType":"YulFunctionCall","src":"32440:16:40"},{"arguments":[{"kind":"number","nativeSrc":"32462:3:40","nodeType":"YulLiteral","src":"32462:3:40","type":"","value":"224"},{"kind":"number","nativeSrc":"32467:10:40","nodeType":"YulLiteral","src":"32467:10:40","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"32458:3:40","nodeType":"YulIdentifier","src":"32458:3:40"},"nativeSrc":"32458:20:40","nodeType":"YulFunctionCall","src":"32458:20:40"}],"functionName":{"name":"and","nativeSrc":"32436:3:40","nodeType":"YulIdentifier","src":"32436:3:40"},"nativeSrc":"32436:43:40","nodeType":"YulFunctionCall","src":"32436:43:40"}],"functionName":{"name":"mstore","nativeSrc":"32416:6:40","nodeType":"YulIdentifier","src":"32416:6:40"},"nativeSrc":"32416:64:40","nodeType":"YulFunctionCall","src":"32416:64:40"},"nativeSrc":"32416:64:40","nodeType":"YulExpressionStatement","src":"32416:64:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32500:3:40","nodeType":"YulIdentifier","src":"32500:3:40"},{"kind":"number","nativeSrc":"32505:2:40","nodeType":"YulLiteral","src":"32505:2:40","type":"","value":"12"}],"functionName":{"name":"add","nativeSrc":"32496:3:40","nodeType":"YulIdentifier","src":"32496:3:40"},"nativeSrc":"32496:12:40","nodeType":"YulFunctionCall","src":"32496:12:40"},{"name":"value2","nativeSrc":"32510:6:40","nodeType":"YulIdentifier","src":"32510:6:40"}],"functionName":{"name":"mstore","nativeSrc":"32489:6:40","nodeType":"YulIdentifier","src":"32489:6:40"},"nativeSrc":"32489:28:40","nodeType":"YulFunctionCall","src":"32489:28:40"},"nativeSrc":"32489:28:40","nodeType":"YulExpressionStatement","src":"32489:28:40"},{"nativeSrc":"32526:27:40","nodeType":"YulVariableDeclaration","src":"32526:27:40","value":{"arguments":[{"name":"value3","nativeSrc":"32546:6:40","nodeType":"YulIdentifier","src":"32546:6:40"}],"functionName":{"name":"mload","nativeSrc":"32540:5:40","nodeType":"YulIdentifier","src":"32540:5:40"},"nativeSrc":"32540:13:40","nodeType":"YulFunctionCall","src":"32540:13:40"},"variables":[{"name":"length","nativeSrc":"32530:6:40","nodeType":"YulTypedName","src":"32530:6:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"32601:6:40","nodeType":"YulIdentifier","src":"32601:6:40"},{"kind":"number","nativeSrc":"32609:4:40","nodeType":"YulLiteral","src":"32609:4:40","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"32597:3:40","nodeType":"YulIdentifier","src":"32597:3:40"},"nativeSrc":"32597:17:40","nodeType":"YulFunctionCall","src":"32597:17:40"},{"arguments":[{"name":"pos","nativeSrc":"32620:3:40","nodeType":"YulIdentifier","src":"32620:3:40"},{"kind":"number","nativeSrc":"32625:2:40","nodeType":"YulLiteral","src":"32625:2:40","type":"","value":"44"}],"functionName":{"name":"add","nativeSrc":"32616:3:40","nodeType":"YulIdentifier","src":"32616:3:40"},"nativeSrc":"32616:12:40","nodeType":"YulFunctionCall","src":"32616:12:40"},{"name":"length","nativeSrc":"32630:6:40","nodeType":"YulIdentifier","src":"32630:6:40"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"32562:34:40","nodeType":"YulIdentifier","src":"32562:34:40"},"nativeSrc":"32562:75:40","nodeType":"YulFunctionCall","src":"32562:75:40"},"nativeSrc":"32562:75:40","nodeType":"YulExpressionStatement","src":"32562:75:40"},{"nativeSrc":"32646:32:40","nodeType":"YulAssignment","src":"32646:32:40","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32661:3:40","nodeType":"YulIdentifier","src":"32661:3:40"},{"name":"length","nativeSrc":"32666:6:40","nodeType":"YulIdentifier","src":"32666:6:40"}],"functionName":{"name":"add","nativeSrc":"32657:3:40","nodeType":"YulIdentifier","src":"32657:3:40"},"nativeSrc":"32657:16:40","nodeType":"YulFunctionCall","src":"32657:16:40"},{"kind":"number","nativeSrc":"32675:2:40","nodeType":"YulLiteral","src":"32675:2:40","type":"","value":"44"}],"functionName":{"name":"add","nativeSrc":"32653:3:40","nodeType":"YulIdentifier","src":"32653:3:40"},"nativeSrc":"32653:25:40","nodeType":"YulFunctionCall","src":"32653:25:40"},"variableNames":[{"name":"end","nativeSrc":"32646:3:40","nodeType":"YulIdentifier","src":"32646:3:40"}]}]},"name":"abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"32116:568:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"32285:3:40","nodeType":"YulTypedName","src":"32285:3:40","type":""},{"name":"value3","nativeSrc":"32290:6:40","nodeType":"YulTypedName","src":"32290:6:40","type":""},{"name":"value2","nativeSrc":"32298:6:40","nodeType":"YulTypedName","src":"32298:6:40","type":""},{"name":"value1","nativeSrc":"32306:6:40","nodeType":"YulTypedName","src":"32306:6:40","type":""},{"name":"value0","nativeSrc":"32314:6:40","nodeType":"YulTypedName","src":"32314:6:40","type":""}],"returnVariables":[{"name":"end","nativeSrc":"32325:3:40","nodeType":"YulTypedName","src":"32325:3:40","type":""}],"src":"32116:568:40"},{"body":{"nativeSrc":"32834:145:40","nodeType":"YulBlock","src":"32834:145:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"32851:3:40","nodeType":"YulIdentifier","src":"32851:3:40"},{"name":"value0","nativeSrc":"32856:6:40","nodeType":"YulIdentifier","src":"32856:6:40"}],"functionName":{"name":"mstore","nativeSrc":"32844:6:40","nodeType":"YulIdentifier","src":"32844:6:40"},"nativeSrc":"32844:19:40","nodeType":"YulFunctionCall","src":"32844:19:40"},"nativeSrc":"32844:19:40","nodeType":"YulExpressionStatement","src":"32844:19:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32883:3:40","nodeType":"YulIdentifier","src":"32883:3:40"},{"kind":"number","nativeSrc":"32888:2:40","nodeType":"YulLiteral","src":"32888:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"32879:3:40","nodeType":"YulIdentifier","src":"32879:3:40"},"nativeSrc":"32879:12:40","nodeType":"YulFunctionCall","src":"32879:12:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32901:3:40","nodeType":"YulLiteral","src":"32901:3:40","type":"","value":"192"},{"name":"value1","nativeSrc":"32906:6:40","nodeType":"YulIdentifier","src":"32906:6:40"}],"functionName":{"name":"shl","nativeSrc":"32897:3:40","nodeType":"YulIdentifier","src":"32897:3:40"},"nativeSrc":"32897:16:40","nodeType":"YulFunctionCall","src":"32897:16:40"},{"arguments":[{"kind":"number","nativeSrc":"32919:3:40","nodeType":"YulLiteral","src":"32919:3:40","type":"","value":"192"},{"kind":"number","nativeSrc":"32924:18:40","nodeType":"YulLiteral","src":"32924:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32915:3:40","nodeType":"YulIdentifier","src":"32915:3:40"},"nativeSrc":"32915:28:40","nodeType":"YulFunctionCall","src":"32915:28:40"}],"functionName":{"name":"and","nativeSrc":"32893:3:40","nodeType":"YulIdentifier","src":"32893:3:40"},"nativeSrc":"32893:51:40","nodeType":"YulFunctionCall","src":"32893:51:40"}],"functionName":{"name":"mstore","nativeSrc":"32872:6:40","nodeType":"YulIdentifier","src":"32872:6:40"},"nativeSrc":"32872:73:40","nodeType":"YulFunctionCall","src":"32872:73:40"},"nativeSrc":"32872:73:40","nodeType":"YulExpressionStatement","src":"32872:73:40"},{"nativeSrc":"32954:19:40","nodeType":"YulAssignment","src":"32954:19:40","value":{"arguments":[{"name":"pos","nativeSrc":"32965:3:40","nodeType":"YulIdentifier","src":"32965:3:40"},{"kind":"number","nativeSrc":"32970:2:40","nodeType":"YulLiteral","src":"32970:2:40","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"32961:3:40","nodeType":"YulIdentifier","src":"32961:3:40"},"nativeSrc":"32961:12:40","nodeType":"YulFunctionCall","src":"32961:12:40"},"variableNames":[{"name":"end","nativeSrc":"32954:3:40","nodeType":"YulIdentifier","src":"32954:3:40"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed","nativeSrc":"32689:290:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"32802:3:40","nodeType":"YulTypedName","src":"32802:3:40","type":""},{"name":"value1","nativeSrc":"32807:6:40","nodeType":"YulTypedName","src":"32807:6:40","type":""},{"name":"value0","nativeSrc":"32815:6:40","nodeType":"YulTypedName","src":"32815:6:40","type":""}],"returnVariables":[{"name":"end","nativeSrc":"32826:3:40","nodeType":"YulTypedName","src":"32826:3:40","type":""}],"src":"32689:290:40"},{"body":{"nativeSrc":"33203:313:40","nodeType":"YulBlock","src":"33203:313:40","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"33220:3:40","nodeType":"YulIdentifier","src":"33220:3:40"},{"name":"value0","nativeSrc":"33225:6:40","nodeType":"YulIdentifier","src":"33225:6:40"}],"functionName":{"name":"mstore","nativeSrc":"33213:6:40","nodeType":"YulIdentifier","src":"33213:6:40"},"nativeSrc":"33213:19:40","nodeType":"YulFunctionCall","src":"33213:19:40"},"nativeSrc":"33213:19:40","nodeType":"YulExpressionStatement","src":"33213:19:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33252:3:40","nodeType":"YulIdentifier","src":"33252:3:40"},{"kind":"number","nativeSrc":"33257:2:40","nodeType":"YulLiteral","src":"33257:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33248:3:40","nodeType":"YulIdentifier","src":"33248:3:40"},"nativeSrc":"33248:12:40","nodeType":"YulFunctionCall","src":"33248:12:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"33270:3:40","nodeType":"YulLiteral","src":"33270:3:40","type":"","value":"192"},{"name":"value1","nativeSrc":"33275:6:40","nodeType":"YulIdentifier","src":"33275:6:40"}],"functionName":{"name":"shl","nativeSrc":"33266:3:40","nodeType":"YulIdentifier","src":"33266:3:40"},"nativeSrc":"33266:16:40","nodeType":"YulFunctionCall","src":"33266:16:40"},{"arguments":[{"kind":"number","nativeSrc":"33288:3:40","nodeType":"YulLiteral","src":"33288:3:40","type":"","value":"192"},{"kind":"number","nativeSrc":"33293:18:40","nodeType":"YulLiteral","src":"33293:18:40","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"33284:3:40","nodeType":"YulIdentifier","src":"33284:3:40"},"nativeSrc":"33284:28:40","nodeType":"YulFunctionCall","src":"33284:28:40"}],"functionName":{"name":"and","nativeSrc":"33262:3:40","nodeType":"YulIdentifier","src":"33262:3:40"},"nativeSrc":"33262:51:40","nodeType":"YulFunctionCall","src":"33262:51:40"}],"functionName":{"name":"mstore","nativeSrc":"33241:6:40","nodeType":"YulIdentifier","src":"33241:6:40"},"nativeSrc":"33241:73:40","nodeType":"YulFunctionCall","src":"33241:73:40"},"nativeSrc":"33241:73:40","nodeType":"YulExpressionStatement","src":"33241:73:40"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33334:3:40","nodeType":"YulIdentifier","src":"33334:3:40"},{"kind":"number","nativeSrc":"33339:2:40","nodeType":"YulLiteral","src":"33339:2:40","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"33330:3:40","nodeType":"YulIdentifier","src":"33330:3:40"},"nativeSrc":"33330:12:40","nodeType":"YulFunctionCall","src":"33330:12:40"},{"name":"value2","nativeSrc":"33344:6:40","nodeType":"YulIdentifier","src":"33344:6:40"}],"functionName":{"name":"mstore","nativeSrc":"33323:6:40","nodeType":"YulIdentifier","src":"33323:6:40"},"nativeSrc":"33323:28:40","nodeType":"YulFunctionCall","src":"33323:28:40"},"nativeSrc":"33323:28:40","nodeType":"YulExpressionStatement","src":"33323:28:40"},{"nativeSrc":"33360:27:40","nodeType":"YulVariableDeclaration","src":"33360:27:40","value":{"arguments":[{"name":"value3","nativeSrc":"33380:6:40","nodeType":"YulIdentifier","src":"33380:6:40"}],"functionName":{"name":"mload","nativeSrc":"33374:5:40","nodeType":"YulIdentifier","src":"33374:5:40"},"nativeSrc":"33374:13:40","nodeType":"YulFunctionCall","src":"33374:13:40"},"variables":[{"name":"length","nativeSrc":"33364:6:40","nodeType":"YulTypedName","src":"33364:6:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"33435:6:40","nodeType":"YulIdentifier","src":"33435:6:40"},{"kind":"number","nativeSrc":"33443:2:40","nodeType":"YulLiteral","src":"33443:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33431:3:40","nodeType":"YulIdentifier","src":"33431:3:40"},"nativeSrc":"33431:15:40","nodeType":"YulFunctionCall","src":"33431:15:40"},{"arguments":[{"name":"pos","nativeSrc":"33452:3:40","nodeType":"YulIdentifier","src":"33452:3:40"},{"kind":"number","nativeSrc":"33457:2:40","nodeType":"YulLiteral","src":"33457:2:40","type":"","value":"72"}],"functionName":{"name":"add","nativeSrc":"33448:3:40","nodeType":"YulIdentifier","src":"33448:3:40"},"nativeSrc":"33448:12:40","nodeType":"YulFunctionCall","src":"33448:12:40"},{"name":"length","nativeSrc":"33462:6:40","nodeType":"YulIdentifier","src":"33462:6:40"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"33396:34:40","nodeType":"YulIdentifier","src":"33396:34:40"},"nativeSrc":"33396:73:40","nodeType":"YulFunctionCall","src":"33396:73:40"},"nativeSrc":"33396:73:40","nodeType":"YulExpressionStatement","src":"33396:73:40"},{"nativeSrc":"33478:32:40","nodeType":"YulAssignment","src":"33478:32:40","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33493:3:40","nodeType":"YulIdentifier","src":"33493:3:40"},{"name":"length","nativeSrc":"33498:6:40","nodeType":"YulIdentifier","src":"33498:6:40"}],"functionName":{"name":"add","nativeSrc":"33489:3:40","nodeType":"YulIdentifier","src":"33489:3:40"},"nativeSrc":"33489:16:40","nodeType":"YulFunctionCall","src":"33489:16:40"},{"kind":"number","nativeSrc":"33507:2:40","nodeType":"YulLiteral","src":"33507:2:40","type":"","value":"72"}],"functionName":{"name":"add","nativeSrc":"33485:3:40","nodeType":"YulIdentifier","src":"33485:3:40"},"nativeSrc":"33485:25:40","nodeType":"YulFunctionCall","src":"33485:25:40"},"variableNames":[{"name":"end","nativeSrc":"33478:3:40","nodeType":"YulIdentifier","src":"33478:3:40"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"32984:532:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"33155:3:40","nodeType":"YulTypedName","src":"33155:3:40","type":""},{"name":"value3","nativeSrc":"33160:6:40","nodeType":"YulTypedName","src":"33160:6:40","type":""},{"name":"value2","nativeSrc":"33168:6:40","nodeType":"YulTypedName","src":"33168:6:40","type":""},{"name":"value1","nativeSrc":"33176:6:40","nodeType":"YulTypedName","src":"33176:6:40","type":""},{"name":"value0","nativeSrc":"33184:6:40","nodeType":"YulTypedName","src":"33184:6:40","type":""}],"returnVariables":[{"name":"end","nativeSrc":"33195:3:40","nodeType":"YulTypedName","src":"33195:3:40","type":""}],"src":"32984:532:40"},{"body":{"nativeSrc":"33634:447:40","nodeType":"YulBlock","src":"33634:447:40","statements":[{"nativeSrc":"33644:43:40","nodeType":"YulVariableDeclaration","src":"33644:43:40","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"33662:7:40","nodeType":"YulIdentifier","src":"33662:7:40"},{"name":"headStart","nativeSrc":"33671:9:40","nodeType":"YulIdentifier","src":"33671:9:40"}],"functionName":{"name":"sub","nativeSrc":"33658:3:40","nodeType":"YulIdentifier","src":"33658:3:40"},"nativeSrc":"33658:23:40","nodeType":"YulFunctionCall","src":"33658:23:40"},{"kind":"number","nativeSrc":"33683:3:40","nodeType":"YulLiteral","src":"33683:3:40","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"33654:3:40","nodeType":"YulIdentifier","src":"33654:3:40"},"nativeSrc":"33654:33:40","nodeType":"YulFunctionCall","src":"33654:33:40"},"variables":[{"name":"_1","nativeSrc":"33648:2:40","nodeType":"YulTypedName","src":"33648:2:40","type":""}]},{"body":{"nativeSrc":"33702:16:40","nodeType":"YulBlock","src":"33702:16:40","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"33711:1:40","nodeType":"YulLiteral","src":"33711:1:40","type":"","value":"0"},{"kind":"number","nativeSrc":"33714:1:40","nodeType":"YulLiteral","src":"33714:1:40","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"33704:6:40","nodeType":"YulIdentifier","src":"33704:6:40"},"nativeSrc":"33704:12:40","nodeType":"YulFunctionCall","src":"33704:12:40"},"nativeSrc":"33704:12:40","nodeType":"YulExpressionStatement","src":"33704:12:40"}]},"condition":{"name":"_1","nativeSrc":"33699:2:40","nodeType":"YulIdentifier","src":"33699:2:40"},"nativeSrc":"33696:22:40","nodeType":"YulIf","src":"33696:22:40"},{"nativeSrc":"33727:7:40","nodeType":"YulAssignment","src":"33727:7:40","value":{"kind":"number","nativeSrc":"33733:1:40","nodeType":"YulLiteral","src":"33733:1:40","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"33727:2:40","nodeType":"YulIdentifier","src":"33727:2:40"}]},{"nativeSrc":"33743:35:40","nodeType":"YulVariableDeclaration","src":"33743:35:40","value":{"arguments":[],"functionName":{"name":"allocate_memory_3873","nativeSrc":"33756:20:40","nodeType":"YulIdentifier","src":"33756:20:40"},"nativeSrc":"33756:22:40","nodeType":"YulFunctionCall","src":"33756:22:40"},"variables":[{"name":"value","nativeSrc":"33747:5:40","nodeType":"YulTypedName","src":"33747:5:40","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"33794:5:40","nodeType":"YulIdentifier","src":"33794:5:40"},{"arguments":[{"name":"headStart","nativeSrc":"33807:9:40","nodeType":"YulIdentifier","src":"33807:9:40"}],"functionName":{"name":"mload","nativeSrc":"33801:5:40","nodeType":"YulIdentifier","src":"33801:5:40"},"nativeSrc":"33801:16:40","nodeType":"YulFunctionCall","src":"33801:16:40"}],"functionName":{"name":"mstore","nativeSrc":"33787:6:40","nodeType":"YulIdentifier","src":"33787:6:40"},"nativeSrc":"33787:31:40","nodeType":"YulFunctionCall","src":"33787:31:40"},"nativeSrc":"33787:31:40","nodeType":"YulExpressionStatement","src":"33787:31:40"},{"nativeSrc":"33827:40:40","nodeType":"YulVariableDeclaration","src":"33827:40:40","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"33852:9:40","nodeType":"YulIdentifier","src":"33852:9:40"},{"kind":"number","nativeSrc":"33863:2:40","nodeType":"YulLiteral","src":"33863:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33848:3:40","nodeType":"YulIdentifier","src":"33848:3:40"},"nativeSrc":"33848:18:40","nodeType":"YulFunctionCall","src":"33848:18:40"}],"functionName":{"name":"mload","nativeSrc":"33842:5:40","nodeType":"YulIdentifier","src":"33842:5:40"},"nativeSrc":"33842:25:40","nodeType":"YulFunctionCall","src":"33842:25:40"},"variables":[{"name":"value_1","nativeSrc":"33831:7:40","nodeType":"YulTypedName","src":"33831:7:40","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"33900:7:40","nodeType":"YulIdentifier","src":"33900:7:40"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"33876:23:40","nodeType":"YulIdentifier","src":"33876:23:40"},"nativeSrc":"33876:32:40","nodeType":"YulFunctionCall","src":"33876:32:40"},"nativeSrc":"33876:32:40","nodeType":"YulExpressionStatement","src":"33876:32:40"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"33928:5:40","nodeType":"YulIdentifier","src":"33928:5:40"},{"kind":"number","nativeSrc":"33935:2:40","nodeType":"YulLiteral","src":"33935:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33924:3:40","nodeType":"YulIdentifier","src":"33924:3:40"},"nativeSrc":"33924:14:40","nodeType":"YulFunctionCall","src":"33924:14:40"},{"name":"value_1","nativeSrc":"33940:7:40","nodeType":"YulIdentifier","src":"33940:7:40"}],"functionName":{"name":"mstore","nativeSrc":"33917:6:40","nodeType":"YulIdentifier","src":"33917:6:40"},"nativeSrc":"33917:31:40","nodeType":"YulFunctionCall","src":"33917:31:40"},"nativeSrc":"33917:31:40","nodeType":"YulExpressionStatement","src":"33917:31:40"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"33968:5:40","nodeType":"YulIdentifier","src":"33968:5:40"},{"kind":"number","nativeSrc":"33975:2:40","nodeType":"YulLiteral","src":"33975:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"33964:3:40","nodeType":"YulIdentifier","src":"33964:3:40"},"nativeSrc":"33964:14:40","nodeType":"YulFunctionCall","src":"33964:14:40"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34026:9:40","nodeType":"YulIdentifier","src":"34026:9:40"},{"kind":"number","nativeSrc":"34037:2:40","nodeType":"YulLiteral","src":"34037:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34022:3:40","nodeType":"YulIdentifier","src":"34022:3:40"},"nativeSrc":"34022:18:40","nodeType":"YulFunctionCall","src":"34022:18:40"},{"name":"dataEnd","nativeSrc":"34042:7:40","nodeType":"YulIdentifier","src":"34042:7:40"}],"functionName":{"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"33980:41:40","nodeType":"YulIdentifier","src":"33980:41:40"},"nativeSrc":"33980:70:40","nodeType":"YulFunctionCall","src":"33980:70:40"}],"functionName":{"name":"mstore","nativeSrc":"33957:6:40","nodeType":"YulIdentifier","src":"33957:6:40"},"nativeSrc":"33957:94:40","nodeType":"YulFunctionCall","src":"33957:94:40"},"nativeSrc":"33957:94:40","nodeType":"YulExpressionStatement","src":"33957:94:40"},{"nativeSrc":"34060:15:40","nodeType":"YulAssignment","src":"34060:15:40","value":{"name":"value","nativeSrc":"34070:5:40","nodeType":"YulIdentifier","src":"34070:5:40"},"variableNames":[{"name":"value0","nativeSrc":"34060:6:40","nodeType":"YulIdentifier","src":"34060:6:40"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory","nativeSrc":"33521:560:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"33600:9:40","nodeType":"YulTypedName","src":"33600:9:40","type":""},{"name":"dataEnd","nativeSrc":"33611:7:40","nodeType":"YulTypedName","src":"33611:7:40","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"33623:6:40","nodeType":"YulTypedName","src":"33623:6:40","type":""}],"src":"33521:560:40"},{"body":{"nativeSrc":"34243:214:40","nodeType":"YulBlock","src":"34243:214:40","statements":[{"nativeSrc":"34253:26:40","nodeType":"YulAssignment","src":"34253:26:40","value":{"arguments":[{"name":"headStart","nativeSrc":"34265:9:40","nodeType":"YulIdentifier","src":"34265:9:40"},{"kind":"number","nativeSrc":"34276:2:40","nodeType":"YulLiteral","src":"34276:2:40","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"34261:3:40","nodeType":"YulIdentifier","src":"34261:3:40"},"nativeSrc":"34261:18:40","nodeType":"YulFunctionCall","src":"34261:18:40"},"variableNames":[{"name":"tail","nativeSrc":"34253:4:40","nodeType":"YulIdentifier","src":"34253:4:40"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"34295:9:40","nodeType":"YulIdentifier","src":"34295:9:40"},{"arguments":[{"name":"value0","nativeSrc":"34310:6:40","nodeType":"YulIdentifier","src":"34310:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"34326:3:40","nodeType":"YulLiteral","src":"34326:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"34331:1:40","nodeType":"YulLiteral","src":"34331:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"34322:3:40","nodeType":"YulIdentifier","src":"34322:3:40"},"nativeSrc":"34322:11:40","nodeType":"YulFunctionCall","src":"34322:11:40"},{"kind":"number","nativeSrc":"34335:1:40","nodeType":"YulLiteral","src":"34335:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"34318:3:40","nodeType":"YulIdentifier","src":"34318:3:40"},"nativeSrc":"34318:19:40","nodeType":"YulFunctionCall","src":"34318:19:40"}],"functionName":{"name":"and","nativeSrc":"34306:3:40","nodeType":"YulIdentifier","src":"34306:3:40"},"nativeSrc":"34306:32:40","nodeType":"YulFunctionCall","src":"34306:32:40"}],"functionName":{"name":"mstore","nativeSrc":"34288:6:40","nodeType":"YulIdentifier","src":"34288:6:40"},"nativeSrc":"34288:51:40","nodeType":"YulFunctionCall","src":"34288:51:40"},"nativeSrc":"34288:51:40","nodeType":"YulExpressionStatement","src":"34288:51:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34359:9:40","nodeType":"YulIdentifier","src":"34359:9:40"},{"kind":"number","nativeSrc":"34370:2:40","nodeType":"YulLiteral","src":"34370:2:40","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"34355:3:40","nodeType":"YulIdentifier","src":"34355:3:40"},"nativeSrc":"34355:18:40","nodeType":"YulFunctionCall","src":"34355:18:40"},{"arguments":[{"name":"value1","nativeSrc":"34379:6:40","nodeType":"YulIdentifier","src":"34379:6:40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"34395:3:40","nodeType":"YulLiteral","src":"34395:3:40","type":"","value":"160"},{"kind":"number","nativeSrc":"34400:1:40","nodeType":"YulLiteral","src":"34400:1:40","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"34391:3:40","nodeType":"YulIdentifier","src":"34391:3:40"},"nativeSrc":"34391:11:40","nodeType":"YulFunctionCall","src":"34391:11:40"},{"kind":"number","nativeSrc":"34404:1:40","nodeType":"YulLiteral","src":"34404:1:40","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"34387:3:40","nodeType":"YulIdentifier","src":"34387:3:40"},"nativeSrc":"34387:19:40","nodeType":"YulFunctionCall","src":"34387:19:40"}],"functionName":{"name":"and","nativeSrc":"34375:3:40","nodeType":"YulIdentifier","src":"34375:3:40"},"nativeSrc":"34375:32:40","nodeType":"YulFunctionCall","src":"34375:32:40"}],"functionName":{"name":"mstore","nativeSrc":"34348:6:40","nodeType":"YulIdentifier","src":"34348:6:40"},"nativeSrc":"34348:60:40","nodeType":"YulFunctionCall","src":"34348:60:40"},"nativeSrc":"34348:60:40","nodeType":"YulExpressionStatement","src":"34348:60:40"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34428:9:40","nodeType":"YulIdentifier","src":"34428:9:40"},{"kind":"number","nativeSrc":"34439:2:40","nodeType":"YulLiteral","src":"34439:2:40","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34424:3:40","nodeType":"YulIdentifier","src":"34424:3:40"},"nativeSrc":"34424:18:40","nodeType":"YulFunctionCall","src":"34424:18:40"},{"name":"value2","nativeSrc":"34444:6:40","nodeType":"YulIdentifier","src":"34444:6:40"}],"functionName":{"name":"mstore","nativeSrc":"34417:6:40","nodeType":"YulIdentifier","src":"34417:6:40"},"nativeSrc":"34417:34:40","nodeType":"YulFunctionCall","src":"34417:34:40"},"nativeSrc":"34417:34:40","nodeType":"YulExpressionStatement","src":"34417:34:40"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"34086:371:40","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"34196:9:40","nodeType":"YulTypedName","src":"34196:9:40","type":""},{"name":"value2","nativeSrc":"34207:6:40","nodeType":"YulTypedName","src":"34207:6:40","type":""},{"name":"value1","nativeSrc":"34215:6:40","nodeType":"YulTypedName","src":"34215:6:40","type":""},{"name":"value0","nativeSrc":"34223:6:40","nodeType":"YulTypedName","src":"34223:6:40","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"34234:4:40","nodeType":"YulTypedName","src":"34234:4:40","type":""}],"src":"34086:371:40"}]},"contents":"{\n    { }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_struct_SendParam_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 224) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_struct_OFTLimit(value, pos)\n    {\n        mstore(pos, mload(value))\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n    }\n    function abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 160)\n        abi_encode_struct_OFTLimit(value0, headStart)\n        mstore(add(headStart, 64), 160)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 192)\n        let tail_2 := add(add(headStart, shl(5, length)), 192)\n        let srcPtr := add(value1, 0x20)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(191)))\n            let _1 := mload(srcPtr)\n            mstore(tail_2, mload(_1))\n            let memberValue0 := mload(add(_1, 0x20))\n            mstore(add(tail_2, 0x20), 64)\n            tail_2 := abi_encode_string(memberValue0, add(tail_2, 64))\n            srcPtr := add(srcPtr, 0x20)\n            pos := add(pos, 0x20)\n        }\n        tail := tail_2\n        abi_encode_struct_OFTLimit(value2, add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_struct_Origin_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 96) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n        let value := 0\n        value := calldataload(add(headStart, 96))\n        value1 := value\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value_1 := calldataload(add(headStart, 160))\n        validator_revert_address(value_1)\n        value4 := value_1\n        let offset_1 := calldataload(add(headStart, 192))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        abi_encode_struct_OFTLimit(value0, headStart)\n    }\n    function abi_decode_uint16(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint32t_uint16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        value1 := abi_decode_uint16(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let value := calldataload(add(headStart, 128))\n        validator_revert_address(value)\n        value3 := value\n    }\n    function abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        value1 := abi_decode_uint16(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n        if slt(add(_1, not(31)), 64) { revert(0, 0) }\n        value1 := add(headStart, 32)\n        let value := calldataload(add(headStart, 96))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), 0xffffffffffffffff))\n        let memberValue0 := mload(add(value0, 0x40))\n        abi_encode_struct_OFTLimit(memberValue0, add(headStart, 0x40))\n        abi_encode_struct_OFTLimit(value1, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function allocate_memory_3873() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_3874() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let _1 := shl(5, length)\n        let dst := allocate_memory(add(_1, 0x20))\n        let array := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(value, _1)\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff) { revert(0, 0) }\n            let _2 := add(value, innerOffset)\n            if slt(sub(calldatasize(), _2), 0x60) { revert(0, 0) }\n            let value_1 := allocate_memory_3873()\n            mstore(value_1, abi_decode_uint32(_2))\n            mstore(add(value_1, 0x20), abi_decode_uint16(add(_2, 0x20)))\n            let offset := calldataload(add(_2, 64))\n            if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n            let _3 := add(_2, offset)\n            if iszero(slt(add(_3, 0x1f), calldatasize())) { revert(0, 0) }\n            let length_1 := calldataload(_3)\n            let array_1 := allocate_memory(array_allocation_size_bytes(length_1))\n            mstore(array_1, length_1)\n            if gt(add(add(_3, length_1), 0x20), calldatasize()) { revert(0, 0) }\n            calldatacopy(add(array_1, 0x20), add(_3, 0x20), length_1)\n            mstore(add(add(array_1, length_1), 0x20), 0)\n            mstore(add(value_1, 64), array_1)\n            mstore(dst, value_1)\n            dst := add(dst, 0x20)\n        }\n        converted := array\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        calldatacopy(end_1, value1, value2)\n        let _1 := add(end_1, value2)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(318)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(abi_decode_uint32(value0), 0xffffffff))\n        let value := 0\n        value := calldataload(add(value0, 0x20))\n        mstore(add(headStart, 0x20), value)\n        let value_1 := calldataload(add(value0, 0x40))\n        validator_revert_uint64(value_1)\n        mstore(add(headStart, 0x40), and(value_1, 0xffffffffffffffff))\n        mstore(add(headStart, 96), value1)\n        mstore(add(headStart, 128), 224)\n        let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 224))\n        mstore(add(headStart, 160), and(value4, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 192), sub(tail_1, headStart))\n        tail := abi_encode_bytes_calldata(value5, value6, tail_1)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), length)\n        value0 := array\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffff))\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_string(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string(value1, tail_1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), and(mload(value0), 0xffffffff))\n        mstore(add(headStart, 96), mload(add(value0, 0x20)))\n        let memberValue0 := mload(add(value0, 64))\n        mstore(add(headStart, 128), 0xa0)\n        let tail_1 := abi_encode_string(memberValue0, add(headStart, 224))\n        let memberValue0_1 := mload(add(value0, 96))\n        mstore(add(headStart, 0xa0), add(sub(tail_1, headStart), not(63)))\n        let tail_2 := abi_encode_string(memberValue0_1, tail_1)\n        mstore(add(headStart, 192), iszero(iszero(mload(add(value0, 128)))))\n        tail := tail_2\n        mstore(add(headStart, 0x20), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_struct_MessagingFee_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n        value := allocate_memory_3874()\n        let value_1 := 0\n        value_1 := mload(headStart)\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(headStart, 32))\n        mstore(add(value, 32), value_2)\n    }\n    function abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_struct_MessagingFee_fromMemory(headStart, dataEnd)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let _1 := mload(srcPtr)\n            mstore(tail_2, and(mload(_1), 0xffffffff))\n            mstore(add(tail_2, 32), and(mload(add(_1, 32)), 0xffff))\n            let memberValue0 := mload(add(_1, 64))\n            mstore(add(tail_2, 64), 0x60)\n            tail_2 := abi_encode_string(memberValue0, add(tail_2, 0x60))\n            srcPtr := add(srcPtr, 32)\n            pos := add(pos, 32)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 64)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_3874()\n        let value_1 := 0\n        value_1 := calldataload(headStart)\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 32))\n        mstore(add(value, 32), value_2)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32(array, len) -> value\n    {\n        value := calldataload(array)\n        if lt(len, 32)\n        {\n            value := and(value, shl(shl(3, sub(32, len)), not(0)))\n        }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(192, 0xffffffffffffffff))\n        if lt(len, 8)\n        {\n            value := and(and(_1, shl(shl(3, sub(8, len)), shl(192, 0xffffffffffffffff))), shl(192, 0xffffffffffffffff))\n        }\n    }\n    function abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(shl(192, value0), shl(192, 0xffffffffffffffff)))\n        mstore(add(pos, 8), and(shl(224, value1), shl(224, 0xffffffff)))\n        mstore(add(pos, 12), value2)\n        let length := mload(value3)\n        copy_memory_to_memory_with_cleanup(add(value3, 0x20), add(pos, 44), length)\n        end := add(add(pos, length), 44)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(192, value1), shl(192, 0xffffffffffffffff)))\n        end := add(pos, 40)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(192, value1), shl(192, 0xffffffffffffffff)))\n        mstore(add(pos, 40), value2)\n        let length := mload(value3)\n        copy_memory_to_memory_with_cleanup(add(value3, 32), add(pos, 72), length)\n        end := add(add(pos, length), 72)\n    }\n    function abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 128)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_3873()\n        mstore(value, mload(headStart))\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(value, 32), value_1)\n        mstore(add(value, 64), abi_decode_struct_MessagingFee_fromMemory(add(headStart, 64), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n}","id":40,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"1386":[{"length":32,"start":1330},{"length":32,"start":2722},{"length":32,"start":4419},{"length":32,"start":5050},{"length":32,"start":5925},{"length":32,"start":7749},{"length":32,"start":8401},{"length":32,"start":8584}],"2778":[{"length":32,"start":1651},{"length":32,"start":7037},{"length":32,"start":7154},{"length":32,"start":7501}]},"linkReferences":{},"object":"6080604052600436106102675760003560e01c8063715018a611610144578063bb0b6a53116100b6578063d045a0dc1161007a578063d045a0dc146107aa578063d4243885146107bd578063dd62ed3e146107dd578063f2fde38b14610823578063fc0c546a146104b6578063ff7bd03d1461084357600080fd5b8063bb0b6a5314610709578063bc70b35414610736578063bd815db014610756578063c7c7f5b314610769578063ca5eb5e11461078a57600080fd5b806395d89b411161010857806395d89b411461064c578063963efcaa146106615780639f68b96414610695578063a9059cbb146106a9578063b731ea0a146106c9578063b98bd070146106e957600080fd5b8063715018a6146105aa5780637d25a05e146105bf57806382413eac146105fa578063857749b01461061a5780638da5cb5b1461062e57600080fd5b8063313ce567116101dd57806352ae2879116101a157806352ae2879146104b65780635535d461146104c95780635a0dfe4d146104e95780635e280f11146105205780636fc1b31e1461055457806370a082311461057457600080fd5b8063313ce5671461040857806332cb6b0c1461042a5780633400288b146104495780633b6f743b1461046957806340c10f191461049657600080fd5b8063134d4f251161022f578063134d4f2514610343578063156a0d0f1461036b57806317442b701461039257806318160ddd146103b45780631f5e1334146103d357806323b872dd146103e857600080fd5b806306fdde031461026c578063095ea7b3146102975780630d35b415146102c7578063111ecdad146102f657806313137d651461032e575b600080fd5b34801561027857600080fd5b50610281610863565b60405161028e9190612300565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612328565b6108f5565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e236600461236c565b61090f565b60405161028e939291906123a0565b34801561030257600080fd5b50600454610316906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b61034161033c366004612497565b610aa0565b005b34801561034f57600080fd5b50610358600281565b60405161ffff909116815260200161028e565b34801561037757600080fd5b506040805162b9270b60e21b8152600160208201520161028e565b34801561039e57600080fd5b506040805160018152600260208201520161028e565b3480156103c057600080fd5b506007545b60405190815260200161028e565b3480156103df57600080fd5b50610358600181565b3480156103f457600080fd5b506102b7610403366004612538565b610b60565b34801561041457600080fd5b5060125b60405160ff909116815260200161028e565b34801561043657600080fd5b506103c56a108b2a2c2802909400000081565b34801561045557600080fd5b50610341610464366004612592565b610b86565b34801561047557600080fd5b506104896104843660046125bc565b610b9c565b60405161028e919061260d565b3480156104a257600080fd5b506103416104b1366004612328565b610c03565b3480156104c257600080fd5b5030610316565b3480156104d557600080fd5b506102816104e4366004612636565b610c54565b3480156104f557600080fd5b506102b7610504366004612592565b63ffffffff919091166000908152600160205260409020541490565b34801561052c57600080fd5b506103167f000000000000000000000000000000000000000000000000000000000000000081565b34801561056057600080fd5b5061034161056f366004612669565b610cf9565b34801561058057600080fd5b506103c561058f366004612669565b6001600160a01b031660009081526005602052604090205490565b3480156105b657600080fd5b50610341610d56565b3480156105cb57600080fd5b506105e26105da366004612592565b600092915050565b6040516001600160401b03909116815260200161028e565b34801561060657600080fd5b506102b7610615366004612686565b610d6a565b34801561062657600080fd5b506006610418565b34801561063a57600080fd5b506000546001600160a01b0316610316565b34801561065857600080fd5b50610281610d7f565b34801561066d57600080fd5b506103c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a157600080fd5b5060006102b7565b3480156106b557600080fd5b506102b76106c4366004612328565b610d8e565b3480156106d557600080fd5b50600254610316906001600160a01b031681565b3480156106f557600080fd5b50610341610704366004612730565b610d9c565b34801561071557600080fd5b506103c5610724366004612771565b60016020526000908152604090205481565b34801561074257600080fd5b5061028161075136600461278c565b610db6565b610341610764366004612730565b610f5e565b61077c6107773660046127ec565b6110e8565b60405161028e929190612859565b34801561079657600080fd5b506103416107a5366004612669565b61111c565b6103416107b8366004612497565b6111a2565b3480156107c957600080fd5b506103416107d8366004612669565b6111d1565b3480156107e957600080fd5b506103c56107f83660046128ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561082f57600080fd5b5061034161083e366004612669565b611227565b34801561084f57600080fd5b506102b761085e3660046128d9565b611265565b606060088054610872906128f5565b80601f016020809104026020016040519081016040528092919081815260200182805461089e906128f5565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b60003361090381858561129b565b60019150505b92915050565b60408051808201909152600080825260208201526060610942604051806040016040528060008152602001600081525090565b600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190612929565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612946565b60408051808201825284815260208082018490528251600080825291810190935290975091925090610a5d565b604080518082019091526000815260606020820152815260200190600190039081610a355790505b509350600080610a82604089013560608a0135610a7d60208c018c612771565b6112ad565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610af0576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610b0a90610b05908a612771565b6112e9565b14610b4857610b1c6020880188612771565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610ae7565b610b5787878787878787611325565b50505050505050565b600033610b6e85828561148c565b610b7985858561150b565b60019150505b9392505050565b610b8e61156a565b610b988282611597565b5050565b60408051808201909152600080825260208201526000610bcc60408501356060860135610a7d6020880188612771565b915050600080610bdc86846115ec565b9092509050610bf9610bf16020880188612771565b83838861170f565b9695505050505050565b610c0b61156a565b6a108b2a2c2802909400000081610c2160075490565b610c2b919061298b565b1115610c4a57604051638a164f6360e01b815260040160405180910390fd5b610b9882826117f0565b600360209081526000928352604080842090915290825290208054610c78906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca4906128f5565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b505050505081565b610d0161156a565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610d5e61156a565b610d686000611826565b565b6001600160a01b03811630145b949350505050565b606060098054610872906128f5565b60003361090381858561150b565b610da461156a565b610b98610db18284612a3f565b611876565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610dea906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e16906128f5565b8015610e635780601f10610e3857610100808354040283529160200191610e63565b820191906000526020600020905b815481529060010190602001808311610e4657829003601f168201915b505050505090508051600003610eb35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610d779350505050565b6000839003610ec3579050610d77565b60028310610f4157610f0a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197d92505050565b80610f188460028188612b68565b604051602001610f2a93929190612b92565b604051602081830303815290604052915050610d77565b8383604051639a6d49cd60e01b8152600401610ae7929190612be3565b60005b818110156110675736838383818110610f7c57610f7c612bf7565b9050602002810190610f8e9190612c0d565b9050610fc1610fa06020830183612771565b602083013563ffffffff919091166000908152600160205260409020541490565b610fcb575061105f565b3063d045a0dc60c08301358360a0810135610fea610100830183612c2e565b610ffb610100890160e08a01612669565b6110096101208a018a612c2e565b6040518963ffffffff1660e01b815260040161102b9796959493929190612c89565b6000604051808303818588803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b5050505050505b600101610f61565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156110a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ce9190810190612d0f565b604051638351eea760e01b8152600401610ae79190612300565b6110f0612269565b604080518082019091526000808252602082015261110f8585856119a9565b915091505b935093915050565b61112461156a565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561118757600080fd5b505af115801561119b573d6000803e3d6000fd5b5050505050565b3330146111c25760405163029a949d60e31b815260040160405180910390fd5b610b5787878787878787610b48565b6111d961156a565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610d4b565b61122f61156a565b6001600160a01b03811661125957604051631e4fbdf760e01b815260006004820152602401610ae7565b61126281611826565b50565b600060208201803590600190839061127d9086612771565b63ffffffff1681526020810191909152604001600020541492915050565b6112a88383836001611aa4565b505050565b6000806112b985611b79565b915081905083811015611114576040516371c4efed60e01b81526004810182905260248101859052604401610ae7565b63ffffffff8116600090815260016020526040812054806109095760405163f6ff4fb760e01b815263ffffffff84166004820152602401610ae7565b60006113376113348787611bb0565b90565b905060006113638261135161134c8a8a611bc8565b611beb565b61135e60208d018d612771565b611c20565b9050602886111561142a5760006113a061138360608c0160408d01612d7c565b61139060208d018d612771565b8461139b8c8c611c6c565b611cb7565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906113f69086908d906000908790600401612d99565b600060405180830381600087803b15801561141057600080fd5b505af1158015611424573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61146360208d018d612771565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981101561150557818110156114f657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610ae7565b61150584848484036000611aa4565b50505050565b6001600160a01b03831661153557604051634b637e8f60e11b815260006004820152602401610ae7565b6001600160a01b03821661155f5760405163ec442f0560e01b815260006004820152602401610ae7565b6112a8838383611ce9565b6000546001600160a01b03163314610d685760405163118cdaa760e01b8152336004820152602401610ae7565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000611649856020013561160286611d46565b61160f60a0890189612c2e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7292505050565b909350905060008161165c57600161165f565b60025b905061167f6116716020880188612771565b8261075160808a018a612c2e565b6004549093506001600160a01b031680156117055760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906116c29088908890600401612dca565b602060405180830381865afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612def565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611772896112e9565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016117a7929190612e0c565b6040805180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612eb6565b95945050505050565b6001600160a01b03821661181a5760405163ec442f0560e01b815260006004820152602401610ae7565b610b9860008383611ce9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b815181101561194d576118a882828151811061189757611897612bf7565b60200260200101516040015161197d565b8181815181106118ba576118ba612bf7565b602002602001015160400151600360008484815181106118dc576118dc612bf7565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061191657611916612bf7565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119449190612f19565b50600101611879565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610d4b9190612fd7565b600281015161ffff8116600314610b985781604051639a6d49cd60e01b8152600401610ae79190612300565b6119b1612269565b60408051808201909152600080825260208201526000806119e833604089013560608a01356119e360208c018c612771565b611dec565b915091506000806119f989846115ec565b9092509050611a25611a0e60208b018b612771565b8383611a1f368d90038d018d613067565b8b611e12565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a73908d018d612771565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611ace5760405163e602df0560e01b815260006004820152602401610ae7565b6001600160a01b038316611af857604051634a1406b160e11b815260006004820152602401610ae7565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561150557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611b6b91815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611ba6818461309a565b61090991906130bc565b6000611bbf6020828486612b68565b610b7f916130d3565b6000611bd8602860208486612b68565b611be1916130f1565b60c01c9392505050565b60006109097f00000000000000000000000000000000000000000000000000000000000000006001600160401b0384166130bc565b60006a108b2a2c2802909400000083611c3860075490565b611c42919061298b565b1115611c6157604051638a164f6360e01b815260040160405180910390fd5b610d77848484611f1d565b6060611c7b8260288186612b68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611cd09493929190613129565b6040516020818303038152906040529050949350505050565b6001600160a01b038316158015611d1d57506a108b2a2c2802909400000081611d1160075490565b611d1b919061298b565b115b15611d3b57604051638a164f6360e01b815260040160405180910390fd5b6112a8838383611f45565b60006109097f00000000000000000000000000000000000000000000000000000000000000008361309a565b8051606090151580611dbb578484604051602001611da792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611de2565b84843385604051602001611dd29493929190613178565b6040516020818303038152906040525b9150935093915050565b600080611dfa8585856112ad565b9092509050611e09868361206f565b94509492505050565b611e1a612269565b6000611e2984600001516120a5565b602085015190915015611e4357611e4384602001516120cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611e938c6112e9565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ecf929190612e0c565b60806040518083038185885af1158015611eed573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f1291906131bb565b979650505050505050565b60006001600160a01b038416611f335761dead93505b611f3d84846117f0565b509092915050565b6001600160a01b038316611f70578060076000828254611f65919061298b565b90915550611fe29050565b6001600160a01b03831660009081526005602052604090205481811015611fc35760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610ae7565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611ffe5760078054829003905561201d565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161206291815260200190565b60405180910390a3505050565b6001600160a01b03821661209957604051634b637e8f60e11b815260006004820152602401610ae7565b610b9882600083611ce9565b60008134146120c9576040516304fb820960e51b8152346004820152602401610ae7565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121519190612929565b90506001600160a01b03811661217a576040516329b99a9560e11b815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180516001600160e01b03166323b872dd60e01b1781528451610b9896881695899361150593889360009283929091839182885af18061221b576040513d6000823e3d81fd5b50506000513d91508115612233578060011415612240565b6001600160a01b0384163b155b1561150557604051635274afe760e01b81526001600160a01b0385166004820152602401610ae7565b60405180606001604052806000801916815260200160006001600160401b031681526020016122ab604051806040016040528060008152602001600081525090565b905290565b60005b838110156122cb5781810151838201526020016122b3565b50506000910152565b600081518084526122ec8160208601602086016122b0565b601f01601f19169290920160200192915050565b602081526000610b7f60208301846122d4565b6001600160a01b038116811461126257600080fd5b6000806040838503121561233b57600080fd5b823561234681612313565b946020939093013593505050565b600060e0828403121561236657600080fd5b50919050565b60006020828403121561237e57600080fd5b81356001600160401b0381111561239457600080fd5b610d7784828501612354565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b828110156124215760bf19878603018452815180518652602081015190506040602087015261240b60408701826122d4565b95505060209384019391909101906001016123d9565b5050855160608601525050602084015160808401529050610d77565b60006060828403121561236657600080fd5b60008083601f84011261246157600080fd5b5081356001600160401b0381111561247857600080fd5b60208301915083602082850101111561249057600080fd5b9250929050565b600080600080600080600060e0888a0312156124b257600080fd5b6124bc898961243d565b96506060880135955060808801356001600160401b038111156124de57600080fd5b6124ea8a828b0161244f565b90965094505060a08801356124fe81612313565b925060c08801356001600160401b0381111561251957600080fd5b6125258a828b0161244f565b989b979a50959850939692959293505050565b60008060006060848603121561254d57600080fd5b833561255881612313565b9250602084013561256881612313565b929592945050506040919091013590565b803563ffffffff8116811461258d57600080fd5b919050565b600080604083850312156125a557600080fd5b61234683612579565b801515811461126257600080fd5b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f185828601612354565b9250506020830135612602816125ae565b809150509250929050565b815181526020808301519082015260408101610909565b803561ffff8116811461258d57600080fd5b6000806040838503121561264957600080fd5b61265283612579565b915061266060208401612624565b90509250929050565b60006020828403121561267b57600080fd5b8135610b7f81612313565b60008060008060a0858703121561269c57600080fd5b6126a6868661243d565b935060608501356001600160401b038111156126c157600080fd5b6126cd8782880161244f565b90945092505060808501356126e181612313565b939692955090935050565b60008083601f8401126126fe57600080fd5b5081356001600160401b0381111561271557600080fd5b6020830191508360208260051b850101111561249057600080fd5b6000806020838503121561274357600080fd5b82356001600160401b0381111561275957600080fd5b612765858286016126ec565b90969095509350505050565b60006020828403121561278357600080fd5b610b7f82612579565b600080600080606085870312156127a257600080fd5b6127ab85612579565b93506127b960208601612624565b925060408501356001600160401b038111156127d457600080fd5b6127e08782880161244f565b95989497509550505050565b6000806000838503608081121561280257600080fd5b84356001600160401b0381111561281857600080fd5b61282487828801612354565b9450506040601f198201121561283957600080fd5b50602084019150606084013561284e81612313565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151612894604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b7f565b600080604083850312156128be57600080fd5b82356128c981612313565b9150602083013561260281612313565b6000606082840312156128eb57600080fd5b610b7f838361243d565b600181811c9082168061290957607f821691505b60208210810361236657634e487b7160e01b600052602260045260246000fd5b60006020828403121561293b57600080fd5b8151610b7f81612313565b60006020828403121561295857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561090957610909612975565b604051606081016001600160401b03811182821017156129c0576129c061295f565b60405290565b604080519081016001600160401b03811182821017156129c0576129c061295f565b604051601f8201601f191681016001600160401b0381118282101715612a1057612a1061295f565b604052919050565b60006001600160401b03821115612a3157612a3161295f565b50601f01601f191660200190565b60006001600160401b03831115612a5857612a5861295f565b8260051b612a68602082016129e8565b84815290830190602081019036831115612a8157600080fd5b845b83811015612b5e5780356001600160401b03811115612aa157600080fd5b86016060368290031215612ab457600080fd5b612abc61299e565b612ac582612579565b8152612ad360208301612624565b602082015260408201356001600160401b03811115612af157600080fd5b919091019036601f830112612b0557600080fd5b8135612b18612b1382612a18565b6129e8565b818152366020838601011115612b2d57600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612a83565b5095945050505050565b60008085851115612b7857600080fd5b83861115612b8557600080fd5b5050820193919092039150565b60008451612ba48184602089016122b0565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d77602083018486612bba565b634e487b7160e01b600052603260045260246000fd5b6000823561013e19833603018112612c2457600080fd5b9190910192915050565b6000808335601e19843603018112612c4557600080fd5b8301803591506001600160401b03821115612c5f57600080fd5b60200191503681900382131561249057600080fd5b6001600160401b038116811461126257600080fd5b63ffffffff612c9789612579565b1681526020888101359082015260006040890135612cb481612c74565b6001600160401b03811660408401525087606083015260e06080830152612cdf60e083018789612bba565b6001600160a01b03861660a084015282810360c0840152612d01818587612bba565b9a9950505050505050505050565b600060208284031215612d2157600080fd5b81516001600160401b03811115612d3757600080fd5b8201601f81018413612d4857600080fd5b8051612d56612b1382612a18565b818152856020838501011115612d6b57600080fd5b6117e78260208301602086016122b0565b600060208284031215612d8e57600080fd5b8135610b7f81612c74565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610bf960808301846122d4565b604081526000612ddd60408301856122d4565b82810360208401526117e781856122d4565b600060208284031215612e0157600080fd5b8151610b7f816125ae565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612e4260e08401826122d4565b90506060850151603f198483030160a0850152612e5f82826122d4565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612e9757600080fd5b612e9f6129c6565b825181526020928301519281019290925250919050565b600060408284031215612ec857600080fd5b610b7f8383612e85565b601f8211156112a857806000526020600020601f840160051c81016020851015612ef95750805b601f840160051c820191505b8181101561119b5760008155600101612f05565b81516001600160401b03811115612f3257612f3261295f565b612f4681612f4084546128f5565b84612ed2565b6020601f821160018114612f7a5760008315612f625750848201515b600019600385901b1c1916600184901b17845561119b565b600084815260208120601f198516915b82811015612faa5787850151825560209485019460019092019101612f8a565b5084821015612fc85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561305b57603f19878603018452815163ffffffff815116865261ffff6020820151166020870152604081015190506060604087015261304560608701826122d4565b9550506020938401939190910190600101612fff565b50929695505050505050565b6000604082840312801561307a57600080fd5b506130836129c6565b823581526020928301359281019290925250919050565b6000826130b757634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761090957610909612975565b8035602083101561090957600019602084900360031b1b1692915050565b80356001600160c01b03198116906008841015613122576001600160c01b0319600885900360031b81901b82161691505b5092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161316881602c8501602087016122b0565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b166020820152826028820152600082516131ab8160488501602087016122b0565b9190910160480195945050505050565b600060808284031280156131ce57600080fd5b506131d761299e565b8251815260208301516131e981612c74565b60208201526131fb8460408501612e85565b6040820152939250505056fea264697066735822122015f8ac516a22ab20e5f1ed2e18ed8620e08283382831603fcff66a3f609e53fd64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x267 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBB0B6A53 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xD045A0DC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD045A0DC EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0xD4243885 EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x823 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xFF7BD03D EQ PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB0B6A53 EQ PUSH2 0x709 JUMPI DUP1 PUSH4 0xBC70B354 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xBD815DB0 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xC7C7F5B3 EQ PUSH2 0x769 JUMPI DUP1 PUSH4 0xCA5EB5E1 EQ PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x963EFCAA EQ PUSH2 0x661 JUMPI DUP1 PUSH4 0x9F68B964 EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6A9 JUMPI DUP1 PUSH4 0xB731EA0A EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB98BD070 EQ PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0x7D25A05E EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x82413EAC EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x857749B0 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x52AE2879 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x52AE2879 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x5535D461 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x5A0DFE4D EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x5E280F11 EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x6FC1B31E EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x32CB6B0C EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x3400288B EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x3B6F743B EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x134D4F25 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x134D4F25 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x156A0D0F EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x17442B70 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0x1F5E1334 EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0xD35B415 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x111ECDAD EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x13137D65 EQ PUSH2 0x32E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x2B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x236C JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0xAA0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH3 0xB9270B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x2538 JUMP JUMPDEST PUSH2 0xB60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x12 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH11 0x108B2A2C28029094000000 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x464 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x25BC JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x260D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x504 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x316 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0xD56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E2 PUSH2 0x5DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 PUSH2 0x418 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0xD7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x6C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x704 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xD9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x724 CALLDATASIZE PUSH1 0x4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x751 CALLDATASIZE PUSH1 0x4 PUSH2 0x278C JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x341 PUSH2 0x764 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x77C PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x341 PUSH2 0x7B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x11A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x11D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x7F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x83E CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1227 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x85E CALLDATASIZE PUSH1 0x4 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x89E SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8EB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8EB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8CE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH2 0x942 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x983 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x2946 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP2 DUP2 ADD SWAP1 SWAP4 MSTORE SWAP1 SWAP8 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0xA5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA35 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0xA82 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP7 SWAP9 SWAP6 SWAP8 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAF0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x91AC5E4F PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD DUP1 CALLDATALOAD SWAP1 PUSH2 0xB0A SWAP1 PUSH2 0xB05 SWAP1 DUP11 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12E9 JUMP JUMPDEST EQ PUSH2 0xB48 JUMPI PUSH2 0xB1C PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x309AFAF3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1325 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xB6E DUP6 DUP3 DUP6 PUSH2 0x148C JUMP JUMPDEST PUSH2 0xB79 DUP6 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB8E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x1597 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBCC PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0xBDC DUP7 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBF9 PUSH2 0xBF1 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 DUP9 PUSH2 0x170F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC0B PUSH2 0x156A JUMP JUMPDEST PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0xC21 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC2B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x17F0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xC78 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xCA4 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCF1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCF1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xF0BE4F1E87349231D80C36B33F9E8639658EEAF474014DEE15A3E6A4D4414197 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xD68 PUSH1 0x0 PUSH2 0x1826 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ADDRESS EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH2 0xDA4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 PUSH2 0xDB1 DUP3 DUP5 PUSH2 0x2A3F JUMP JUMPDEST PUSH2 0x1876 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP2 SWAP1 PUSH2 0xDEA SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE16 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE38 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE63 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE46 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xEB3 JUMPI DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0xD77 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 SUB PUSH2 0xEC3 JUMPI SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x2 DUP4 LT PUSH2 0xF41 JUMPI PUSH2 0xF0A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x197D SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xF18 DUP5 PUSH1 0x2 DUP2 DUP9 PUSH2 0x2B68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0xD77 JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1067 JUMPI CALLDATASIZE DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xF7C JUMPI PUSH2 0xF7C PUSH2 0x2BF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF8E SWAP2 SWAP1 PUSH2 0x2C0D JUMP JUMPDEST SWAP1 POP PUSH2 0xFC1 PUSH2 0xFA0 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST PUSH2 0xFCB JUMPI POP PUSH2 0x105F JUMP JUMPDEST ADDRESS PUSH4 0xD045A0DC PUSH1 0xC0 DUP4 ADD CALLDATALOAD DUP4 PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH2 0xFEA PUSH2 0x100 DUP4 ADD DUP4 PUSH2 0x2C2E JUMP JUMPDEST PUSH2 0xFFB PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1009 PUSH2 0x120 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xF61 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E9E7099 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x10CE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8351EEA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x10F0 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x110F DUP6 DUP6 DUP6 PUSH2 0x19A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1124 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x11C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29A949D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB48 JUMP JUMPDEST PUSH2 0x11D9 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD48D879CEF83A1C0BDDA516F27B13DDB1B3F8BBAC1C9E1511BB2A659C2427760 SWAP1 PUSH1 0x20 ADD PUSH2 0xD4B JUMP JUMPDEST PUSH2 0x122F PUSH2 0x156A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1259 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH2 0x1826 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 SWAP1 DUP4 SWAP1 PUSH2 0x127D SWAP1 DUP7 PUSH2 0x2771 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12B9 DUP6 PUSH2 0x1B79 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1114 JUMPI PUSH1 0x40 MLOAD PUSH4 0x71C4EFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6FF4FB7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1337 PUSH2 0x1334 DUP8 DUP8 PUSH2 0x1BB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1363 DUP3 PUSH2 0x1351 PUSH2 0x134C DUP11 DUP11 PUSH2 0x1BC8 JUMP JUMPDEST PUSH2 0x1BEB JUMP JUMPDEST PUSH2 0x135E PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1C20 JUMP JUMPDEST SWAP1 POP PUSH1 0x28 DUP7 GT ISZERO PUSH2 0x142A JUMPI PUSH1 0x0 PUSH2 0x13A0 PUSH2 0x1383 PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0x1390 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST DUP5 PUSH2 0x139B DUP13 DUP13 PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3E5AC809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x7CB59012 SWAP1 PUSH2 0x13F6 SWAP1 DUP7 SWAP1 DUP14 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1424 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 PUSH32 0xEFED6D3500546B29533B128A29E3A94D70788727F0507505AC12EAF2E578FD9C PUSH2 0x1463 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x1505 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1505 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1535 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x155F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD68 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x238399D427B947898EDB290F5FF0F9109849B1C3BA196A42E35F00C50A54B98B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1649 DUP6 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1602 DUP7 PUSH2 0x1D46 JUMP JUMPDEST PUSH2 0x160F PUSH1 0xA0 DUP10 ADD DUP10 PUSH2 0x2C2E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D72 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x165C JUMPI PUSH1 0x1 PUSH2 0x165F JUMP JUMPDEST PUSH1 0x2 JUMPDEST SWAP1 POP PUSH2 0x167F PUSH2 0x1671 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP3 PUSH2 0x751 PUSH1 0x80 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1705 JUMPI PUSH1 0x40 MLOAD PUSH4 0x43A78EB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x43A78EB SWAP1 PUSH2 0x16C2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1703 SWAP2 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST POP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDDC28C58 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1772 DUP10 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE POP ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A7 SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17E7 SWAP2 SWAP1 PUSH2 0x2EB6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x181A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH2 0x18A8 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1897 JUMPI PUSH2 0x1897 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x197D JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x18BA JUMPI PUSH2 0x18BA PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18DC JUMPI PUSH2 0x18DC PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1916 JUMPI PUSH2 0x1916 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP2 PUSH2 0x1944 SWAP2 SWAP1 PUSH2 0x2F19 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1879 JUMP JUMPDEST POP PUSH32 0xBE4864A8E820971C0247F5992E2DA559595F7BF076A21CB5928D443D2A13B674 DUP2 PUSH1 0x40 MLOAD PUSH2 0xD4B SWAP2 SWAP1 PUSH2 0x2FD7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD MLOAD PUSH2 0xFFFF DUP2 AND PUSH1 0x3 EQ PUSH2 0xB98 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x19B1 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x19E8 CALLER PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x19E3 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1DEC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19F9 DUP10 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A25 PUSH2 0x1A0E PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1A1F CALLDATASIZE DUP14 SWAP1 SUB DUP14 ADD DUP14 PUSH2 0x3067 JUMP JUMPDEST DUP12 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP9 POP SWAP1 SWAP7 POP CALLER SWAP2 SWAP1 PUSH32 0x85496B760A4B7F8D66384B9DF21B381F5D1B1E79F229A47AAF4C232EDC2FE59A SWAP1 PUSH2 0x1A73 SWAP1 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1ACE JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1505 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B6B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x1BA6 DUP2 DUP5 PUSH2 0x309A JUMP JUMPDEST PUSH2 0x909 SWAP2 SWAP1 PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BBF PUSH1 0x20 DUP3 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0xB7F SWAP2 PUSH2 0x30D3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BD8 PUSH1 0x28 PUSH1 0x20 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0x1BE1 SWAP2 PUSH2 0x30F1 JUMP JUMPDEST PUSH1 0xC0 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH11 0x108B2A2C28029094000000 DUP4 PUSH2 0x1C38 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1C42 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0x1C61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP5 DUP5 PUSH2 0x1F1D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C7B DUP3 PUSH1 0x28 DUP2 DUP7 PUSH2 0x2B68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1CD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3129 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1D1D JUMPI POP PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0x1D11 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D1B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x1D3B JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1F45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 DUP4 PUSH2 0x309A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x1DBB JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DA7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1DE2 JUMP JUMPDEST DUP5 DUP5 CALLER DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DD2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3178 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DFA DUP6 DUP6 DUP6 PUSH2 0x12AD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E09 DUP7 DUP4 PUSH2 0x206F JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E1A PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E29 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x20A5 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1E43 JUMPI PUSH2 0x1E43 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x20CD JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2637A450 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E93 DUP13 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP10 PUSH1 0x20 ADD MLOAD GT ISZERO ISZERO DUP2 MSTORE POP DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ECF SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F12 SWAP2 SWAP1 PUSH2 0x31BB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1F33 JUMPI PUSH2 0xDEAD SWAP4 POP JUMPDEST PUSH2 0x1F3D DUP5 DUP5 PUSH2 0x17F0 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F70 JUMPI DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1F65 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1FE2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FFE JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x201D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2062 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2099 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLVALUE EQ PUSH2 0x20C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4FB8209 PUSH1 0xE5 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE4FE1D94 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2151 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x217A JUMPI PUSH1 0x40 MLOAD PUSH4 0x29B99A95 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP6 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP5 ADD SWAP1 SWAP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE DUP5 MLOAD PUSH2 0xB98 SWAP7 DUP9 AND SWAP6 DUP10 SWAP4 PUSH2 0x1505 SWAP4 DUP9 SWAP4 PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP3 DUP9 GAS CALL DUP1 PUSH2 0x221B JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x2233 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1505 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22AB PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22CB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22B3 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x22EC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB7F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x233B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2346 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP3 DUP6 ADD PUSH2 0x2354 JUMP JUMPDEST DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2421 JUMPI PUSH1 0xBF NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x40 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x240B PUSH1 0x40 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x23D9 JUMP JUMPDEST POP POP DUP6 MLOAD PUSH1 0x60 DUP7 ADD MSTORE POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x24B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24BC DUP10 DUP10 PUSH2 0x243D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24EA DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x24FE DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2525 DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x254D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2558 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2568 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2346 DUP4 PUSH2 0x2579 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25F1 DUP6 DUP3 DUP7 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x25AE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x909 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2652 DUP4 PUSH2 0x2579 JUMP JUMPDEST SWAP2 POP PUSH2 0x2660 PUSH1 0x20 DUP5 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x267B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x269C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26A6 DUP7 DUP7 PUSH2 0x243D JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26CD DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH2 0x26E1 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x26FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2765 DUP6 DUP3 DUP7 ADD PUSH2 0x26EC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP3 PUSH2 0x2579 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x27A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27AB DUP6 PUSH2 0x2579 JUMP JUMPDEST SWAP4 POP PUSH2 0x27B9 PUSH1 0x20 DUP7 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27E0 DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP6 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x2802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2818 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2824 DUP8 DUP3 DUP9 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x2839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP5 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x284E DUP2 PUSH2 0x2313 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP4 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2894 PUSH1 0x40 DUP5 ADD DUP3 DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST POP DUP3 MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x28C9 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x243D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2909 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2366 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x293B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2A10 JUMPI PUSH2 0x2A10 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2A31 JUMPI PUSH2 0x2A31 PUSH2 0x295F JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2A58 JUMPI PUSH2 0x2A58 PUSH2 0x295F JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x2A68 PUSH1 0x20 DUP3 ADD PUSH2 0x29E8 JUMP JUMPDEST DUP5 DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x2A81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B5E JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 CALLDATASIZE DUP3 SWAP1 SUB SLT ISZERO PUSH2 0x2AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ABC PUSH2 0x299E JUMP JUMPDEST PUSH2 0x2AC5 DUP3 PUSH2 0x2579 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2AD3 PUSH1 0x20 DUP4 ADD PUSH2 0x2624 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP1 CALLDATASIZE PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B18 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x29E8 JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP6 MSTORE POP POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2A83 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2BA4 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x22B0 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xD77 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2BBA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x13E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2C5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH2 0x2C97 DUP10 PUSH2 0x2579 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP9 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x2CB4 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE POP DUP8 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2CDF PUSH1 0xE0 DUP4 ADD DUP8 DUP10 PUSH2 0x2BBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2D01 DUP2 DUP6 DUP8 PUSH2 0x2BBA JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2D56 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBF9 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2DDD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x22D4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x17E7 DUP2 DUP6 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2E42 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x3F NOT DUP5 DUP4 SUB ADD PUSH1 0xA0 DUP6 ADD MSTORE PUSH2 0x2E5F DUP3 DUP3 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x80 SWAP7 SWAP1 SWAP7 ADD MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E9F PUSH2 0x29C6 JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x12A8 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2EF9 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x119B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2F05 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2F32 JUMPI PUSH2 0x2F32 PUSH2 0x295F JUMP JUMPDEST PUSH2 0x2F46 DUP2 PUSH2 0x2F40 DUP5 SLOAD PUSH2 0x28F5 JUMP JUMPDEST DUP5 PUSH2 0x2ED2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x2F62 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x119B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FAA JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2F8A JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2FC8 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x305B JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x3045 PUSH1 0x60 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2FFF JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x307A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3083 PUSH2 0x29C6 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x8 DUP5 LT ISZERO PUSH2 0x3122 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x8 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP6 PUSH1 0xC0 SHL AND DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP5 PUSH1 0xE0 SHL AND PUSH1 0x8 DUP3 ADD MSTORE DUP3 PUSH1 0xC DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3168 DUP2 PUSH1 0x2C DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x2C ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP5 PUSH1 0xC0 SHL AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x31AB DUP2 PUSH1 0x48 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x48 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x31CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31D7 PUSH2 0x299E JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x31E9 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x31FB DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0xF8 0xAC MLOAD PUSH11 0x22AB20E5F1ED2E18ED8620 0xE0 DUP3 DUP4 CODESIZE 0x28 BALANCE PUSH1 0x3F 0xCF 0xF6 PUSH11 0x3F609E53FD64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"189:1641:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3979:186;;;;;;;;;;-1:-1:-1;3979:186:33;;;;;:::i;:::-;;:::i;:::-;;;1443:14:40;;1436:22;1418:41;;1406:2;1391:18;3979:186:33;1278:187:40;5176:1276:24;;;;;;;;;;-1:-1:-1;5176:1276:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2330:27::-;;;;;;;;;;-1:-1:-1;2330:27:24;;;;-1:-1:-1;;;;;2330:27:24;;;;;;-1:-1:-1;;;;;3621:32:40;;;3603:51;;3591:2;3576:18;2330:27:24;3457:203:40;4368:708:12;;;;;;:::i;:::-;;:::i;:::-;;2204:40:24;;;;;;;;;;;;2243:1;2204:40;;;;;5448:6:40;5436:19;;;5418:38;;5406:2;5391:18;2204:40:24;5274:188:40;3475:140:24;;;;;;;;;;-1:-1:-1;3475:140:24;;;-1:-1:-1;;;5637:52:40;;3606:1:24;5720:2:40;5705:18;;5698:59;5610:18;3475:140:24;5467:296:40;1287:235:10;;;;;;;;;;-1:-1:-1;1287:235:10;;;843:1:13;5938:50:40;;678:1:12;6019:2:40;6004:18;;5997:59;5911:18;1287:235:10;5768:294:40;2830:97:33;;;;;;;;;;-1:-1:-1;2908:12:33;;2830:97;;;6213:25:40;;;6201:2;6186:18;2830:97:33;6067:177:40;2167:31:24;;;;;;;;;;;;2197:1;2167:31;;4757:244:33;;;;;;;;;;-1:-1:-1;4757:244:33;;;;;:::i;:::-;;:::i;2688:82::-;;;;;;;;;;-1:-1:-1;2761:2:33;2688:82;;;6934:4:40;6922:17;;;6904:36;;6892:2;6877:18;2688:82:33;6762:184:40;215:58:39;;;;;;;;;;;;252:21;215:58;;1724:108:11;;;;;;;;;;-1:-1:-1;1724:108:11;;;;;:::i;:::-;;:::i;6903:774:24:-;;;;;;;;;;-1:-1:-1;6903:774:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;686:201:39:-;;;;;;;;;;-1:-1:-1;686:201:39;;;;;:::i;:::-;;:::i;875:93:19:-;;;;;;;;;;-1:-1:-1;956:4:19;875:93;;538::18;;;;;;;;;;-1:-1:-1;538:93:18;;;;;:::i;:::-;;:::i;16151:132:24:-;;;;;;;;;;-1:-1:-1;16151:132:24;;;;;:::i;:::-;16256:11;;;;;16233:4;16256:11;;;:5;:11;;;;;;:20;;16151:132;446:46:11;;;;;;;;;;;;;;;4657:163:24;;;;;;;;;;-1:-1:-1;4657:163:24;;;;;:::i;:::-;;:::i;2985:116:33:-;;;;;;;;;;-1:-1:-1;2985:116:33;;;;;:::i;:::-;-1:-1:-1;;;;;3076:18:33;3050:7;3076:18;;;:9;:18;;;;;;;2985:116;2293:101:28;;;;;;;;;;;;;:::i;3507:128:12:-;;;;;;;;;;-1:-1:-1;3507:128:12;;;;;:::i;:::-;3596:12;3507:128;;;;;;;;-1:-1:-1;;;;;9595:31:40;;;9577:50;;9565:2;9550:18;3507:128:12;9433:200:40;2013:216:12;;;;;;;;;;-1:-1:-1;2013:216:12;;;;;:::i;:::-;;:::i;4222:87:24:-;;;;;;;;;;-1:-1:-1;4301:1:24;4222:87;;1638:85:28;;;;;;;;;;-1:-1:-1;1684:7:28;1710:6;-1:-1:-1;;;;;1710:6:28;1638:85;;1962:93:33;;;;;;;;;;;;;:::i;1861:46:24:-;;;;;;;;;;;;;;;1460:94:23;;;;;;;;;;-1:-1:-1;1519:4:23;1460:94;;3296:178:33;;;;;;;;;;-1:-1:-1;3296:178:33;;;;;:::i;:::-;;:::i;559:23:19:-;;;;;;;;;;-1:-1:-1;559:23:19;;;;-1:-1:-1;;;;;559:23:19;;;1391:156:18;;;;;;;;;;-1:-1:-1;1391:156:18;;;;;:::i;:::-;;:::i;569:48:11:-;;;;;;;;;;-1:-1:-1;569:48:11;;;;;:::i;:::-;;;;;;;;;;;;;;3510:981:18;;;;;;;;;;-1:-1:-1;3510:981:18;;;;;:::i;:::-;;:::i;1698:1333:19:-;;;;;;:::i;:::-;;:::i;8365:290:24:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3252:105:11:-;;;;;;;;;;-1:-1:-1;3252:105:11;;;;;:::i;:::-;;:::i;3679:409:19:-;;;;;;:::i;:::-;;:::i;1100:139::-;;;;;;;;;;-1:-1:-1;1100:139:19;;;;;:::i;:::-;;:::i;3532:140:33:-;;;;;;;;;;-1:-1:-1;3532:140:33;;;;;:::i;:::-;-1:-1:-1;;;;;3638:18:33;;;3612:7;3638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3532:140;2543:215:28;;;;;;;;;;-1:-1:-1;2543:215:28;;;;;:::i;:::-;;:::i;2771:149:12:-;;;;;;;;;;-1:-1:-1;2771:149:12;;;;;:::i;:::-;;:::i;1760:89:33:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3979:186::-;4052:4;735:10:37;4106:31:33;735:10:37;4122:7:33;4131:5;4106:8;:31::i;:::-;4154:4;4147:11;;;3979:186;;;;;:::o;5176:1276:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;5328:35:24;5365:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;5365:28:24;5409:19;5483;5512:4;-1:-1:-1;;;;;5512:10:24;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5505:32:24;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5601;;;;;;;;;;;;;;;;;;5752:21;;-1:-1:-1;5752:21:24;;;;;;;;;5601:34;;-1:-1:-1;5601:34:24;;-1:-1:-1;5752:21:24;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5752:21:24;;;;;;;;;;;;;;;-1:-1:-1;5736:37:24;-1:-1:-1;6210:20:24;;6260:120;6284:19;;;;6317:22;;;;6353:17;;;;6284:10;6353:17;:::i;:::-;6260:10;:120::i;:::-;6403:42;;;;;;;;;;;;;;;;5176:1276;;;;-1:-1:-1;;;;;;5176:1276:24:o;4368:708:12:-;4681:8;-1:-1:-1;;;;;4673:31:12;4694:10;4673:31;4669:68;;4713:24;;-1:-1:-1;;;4713:24:12;;4726:10;4713:24;;;3603:51:40;3576:18;;4713:24:12;;;;;;;;4669:68;4873:14;;;;;;4837:32;;4854:14;;4873:7;4854:14;:::i;:::-;4837:16;:32::i;:::-;:50;4833:103;;4905:14;;;;:7;:14;:::i;:::-;4896:40;;-1:-1:-1;;;4896:40:12;;15768:10:40;15756:23;;;4896:40:12;;;15738:42:40;4921:14:12;;;;15796:18:40;;;15789:34;15711:18;;4896:40:12;15566:263:40;4833:103:12;5010:59;5021:7;5030:5;5037:8;;5047:9;5058:10;;5010;:59::i;:::-;4368:708;;;;;;;:::o;4757:244:33:-;4844:4;735:10:37;4900:37:33;4916:4;735:10:37;4931:5:33;4900:15;:37::i;:::-;4947:26;4957:4;4963:2;4967:5;4947:9;:26::i;:::-;4990:4;4983:11;;;4757:244;;;;;;:::o;1724:108:11:-;1531:13:28;:11;:13::i;:::-;1804:21:11::1;1813:4;1819:5;1804:8;:21::i;:::-;1724:108:::0;;:::o;6903:774:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;7237:24:24;7265:74;7276:19;;;;7297:22;;;;7321:17;;;;7276:10;7321:17;:::i;7265:74::-;7234:105;;;7428:20;7450;7474:49;7494:10;7506:16;7474:19;:49::i;:::-;7427:96;;-1:-1:-1;7427:96:24;-1:-1:-1;7612:58:24;7619:17;;;;:10;:17;:::i;:::-;7638:7;7647;7656:13;7612:6;:58::i;:::-;7605:65;6903:774;-1:-1:-1;;;;;;6903:774:24:o;686:201:39:-;1531:13:28;:11;:13::i;:::-;252:21:39::1;779:7;763:13;2908:12:33::0;;;2830:97;763:13:39::1;:23;;;;:::i;:::-;:36;759:93;;;822:19;;-1:-1:-1::0;;;822:19:39::1;;;;;;;;;;;759:93;861:19;867:3;872:7;861:5;:19::i;538:93:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4657:163:24:-;1531:13:28;:11;:13::i;:::-;4740:12:24::1;:28:::0;;-1:-1:-1;;;;;;4740:28:24::1;-1:-1:-1::0;;;;;4740:28:24;::::1;::::0;;::::1;::::0;;;4783:30:::1;::::0;3603:51:40;;;4783:30:24::1;::::0;3591:2:40;3576:18;4783:30:24::1;;;;;;;;4657:163:::0;:::o;2293:101:28:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2013:216:12:-;-1:-1:-1;;;;;2198:24:12;;2217:4;2198:24;2013:216;;;;;;;:::o;1962:93:33:-;2009:13;2041:7;2034:14;;;;;:::i;3296:178::-;3365:4;735:10:37;3419:27:33;735:10:37;3436:2:33;3440:5;3419:9;:27::i;1391:156:18:-;1531:13:28;:11;:13::i;:::-;1503:37:18::1;;1523:16:::0;;1503:37:::1;:::i;:::-;:19;:37::i;3510:981::-:0;3701:21;;;3677;3701;;;:15;:21;;;;;;;;:31;;;;;;;;;;3677:55;;3653:12;;3677:21;3701:31;3677:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3861:8;:15;3880:1;3861:20;3857:46;;3890:13;;3883:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3883:20:18;;-1:-1:-1;3883:20:18;;-1:-1:-1;;;;3883:20:18;3857:46;3988:1;3964:25;;;3960:46;;3998:8;-1:-1:-1;3991:15:18;;3960:46;4153:1;4129:25;;4125:267;;4170:34;4190:13;;4170:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4170:19:18;;-1:-1:-1;;;4170:34:18:i;:::-;4353:8;4363:17;:13;4377:1;4363:13;;:17;:::i;:::-;4340:41;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4333:48;;;;;4125:267;4470:13;;4455:29;;-1:-1:-1;;;4455:29:18;;;;;;;;;:::i;1698:1333:19:-;1799:9;1794:1037;1814:19;;;1794:1037;;;1854:29;1886:8;;1895:1;1886:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1854:43;-1:-1:-1;1980:50:19;1987:20;;;;1854:43;1987:20;:::i;:::-;2009;;;;16256:11:24;;;;;16233:4;16256:11;;;:5;:11;;;;;;:20;;16151:132;1980:50:19;1975:65;;2032:8;;;1975:65;2602:4;:22;2633:12;;;;:6;2696:11;;;;2725:14;;;;2633:6;2725:14;:::i;:::-;2757:15;;;;;;;;:::i;:::-;2790:16;;;;:6;:16;:::i;:::-;2602:218;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1840:991;1794:1037;1835:3;;1794:1037;;;;2988:10;-1:-1:-1;;;;;2978:43:19;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2978:45:19;;;;;;;;;;;;:::i;:::-;2961:63;;-1:-1:-1;;;2961:63:19;;;;;;;;:::i;8365:290:24:-;8526:34;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;8609:39:24;8615:10;8627:4;8633:14;8609:5;:39::i;:::-;8602:46;;;;8365:290;;;;;;;:::o;3252:105:11:-;1531:13:28;:11;:13::i;:::-;3319:31:11::1;::::0;-1:-1:-1;;;3319:31:11;;-1:-1:-1;;;;;3621:32:40;;;3319:31:11::1;::::0;::::1;3603:51:40::0;3319:8:11::1;:20;::::0;::::1;::::0;3576:18:40;;3319:31:11::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3252:105:::0;:::o;3679:409:19:-;3958:10;3980:4;3958:27;3954:50;;3994:10;;-1:-1:-1;;;3994:10:19;;;;;;;;;;;3954:50;4014:67;4033:7;4042:5;4049:8;;4059:9;4070:10;;4014:18;:67::i;1100:139::-;1531:13:28;:11;:13::i;:::-;1175:8:19::1;:20:::0;;-1:-1:-1;;;;;;1175:20:19::1;-1:-1:-1::0;;;;;1175:20:19;::::1;::::0;;::::1;::::0;;;1210:22:::1;::::0;3603:51:40;;;1210:22:19::1;::::0;3591:2:40;3576:18;1210:22:19::1;3457:203:40::0;2543:215:28;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:28;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:28;;2700:1:::1;2672:31;::::0;::::1;3603:51:40::0;3576:18;;2672:31:28::1;3457:203:40::0;2623:91:28::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;2771:149:12:-;2853:4;2900:13;;;;;;2876:5;;2853:4;;2882:13;;2900:6;2882:13;:::i;:::-;2876:20;;;;;;;;;;;;;-1:-1:-1;2876:20:12;;:37;;2771:149;-1:-1:-1;;2771:149:12:o;8707:128:33:-;8791:37;8800:5;8807:7;8816:5;8823:4;8791:8;:37::i;:::-;8707:128;;;:::o;18168:668:24:-;18310:20;18332:24;18506:22;18518:9;18506:11;:22::i;:::-;18491:37;;18654:12;18635:31;;18736:12;18717:16;:31;18713:117;;;18771:48;;-1:-1:-1;;;18771:48:24;;;;;23232:25:40;;;23273:18;;;23266:34;;;23205:18;;18771:48:24;23058:248:40;2718:196:11;2822:11;;;2788:7;2822:11;;;:5;:11;;;;;;;2843:43;;2874:12;;-1:-1:-1;;;2874:12:11;;23485:10:40;23473:23;;2874:12:11;;;23455:42:40;23428:18;;2874:12:11;23311:192:40;12944:1806:24;13421:17;13441:36;:17;:8;;:15;:17::i;:::-;2891:2:27;2780:123;13441:36:24;13421:56;;13610:24;13637:62;13645:9;13656:26;13662:19;:8;;:17;:19::i;:::-;13656:5;:26::i;:::-;13684:14;;;;:7;:14;:::i;:::-;13637:7;:62::i;:::-;13610:89;-1:-1:-1;243:2:27;-1:-1:-1;;13710:955:24;;;13814:23;13840:175;13883:13;;;;;;;;:::i;:::-;13914:14;;;;:7;:14;:::i;:::-;13946:16;13980:21;:8;;:19;:21::i;:::-;13840:25;:175::i;:::-;14562:92;;-1:-1:-1;;;14562:92:24;;13814:201;;-1:-1:-1;;;;;;14562:8:24;:20;;;;:92;;14583:9;;14594:5;;14601:1;;13814:201;;14562:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13737:928;13710:955;-1:-1:-1;;;;;14680:63:24;;14692:5;14680:63;14699:14;;;;:7;:14;:::i;:::-;14680:63;;;15768:10:40;15756:23;;;15738:42;;15811:2;15796:18;;15789:34;;;15711:18;14680:63:24;;;;;;;13247:1503;;12944:1806;;;;;;;:::o;10396:476:33:-;-1:-1:-1;;;;;3638:18:33;;;10495:24;3638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10561:36:33;;10557:309;;;10636:5;10617:16;:24;10613:130;;;10668:60;;-1:-1:-1;;;10668:60:33;;-1:-1:-1;;;;;24730:32:40;;10668:60:33;;;24712:51:40;24779:18;;;24772:34;;;24822:18;;;24815:34;;;24685:18;;10668:60:33;24510:345:40;10613:130:33;10784:57;10793:5;10800:7;10828:5;10809:16;:24;10835:5;10784:8;:57::i;:::-;10485:387;10396:476;;;:::o;5374:300::-;-1:-1:-1;;;;;5457:18:33;;5453:86;;5498:30;;-1:-1:-1;;;5498:30:33;;5525:1;5498:30;;;3603:51:40;3576:18;;5498:30:33;3457:203:40;5453:86:33;-1:-1:-1;;;;;5552:16:33;;5548:86;;5591:32;;-1:-1:-1;;;5591:32:33;;5620:1;5591:32;;;3603:51:40;3576:18;;5591:32:33;3457:203:40;5548:86:33;5643:24;5651:4;5657:2;5661:5;5643:7;:24::i;1796:162:28:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:28;735:10:37;1855:23:28;1851:101;;1901:40;;-1:-1:-1;;;1901:40:28;;735:10:37;1901:40:28;;;3603:51:40;3576:18;;1901:40:28;3457:203:40;2286:134:11;2359:11;;;;;;;:5;:11;;;;;;;;;:19;;;2393:20;;15738:42:40;;;15796:18;;15789:34;;;2393:20:11;;15711:18:40;2393:20:11;;;;;;;2286:134;;:::o;10990:1436:24:-;11122:20;11144;11176:15;11347:324;11379:10;:13;;;11406:16;11412:9;11406:5;:16::i;:::-;11640:21;;;;:10;:21;:::i;:::-;11347:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11347:18:24;;-1:-1:-1;;;11347:324:24:i;:::-;11323:348;;-1:-1:-1;11323:348:24;-1:-1:-1;11751:14:24;11323:348;11768:33;;2197:1;11768:33;;;2243:1;11768:33;11751:50;-1:-1:-1;11923:67:24;11938:17;;;;:10;:17;:::i;:::-;11957:7;11966:23;;;;:10;:23;:::i;11923:67::-;12248:12;;11913:77;;-1:-1:-1;;;;;;12248:12:24;12340:23;;12336:83;;12365:54;;-1:-1:-1;;;12365:54:24;;-1:-1:-1;;;;;12365:36:24;;;;;:54;;12402:7;;12411;;12365:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12336:83;11166:1260;;;10990:1436;;;;;:::o;2038:391:13:-;-1:-1:-1;;;;;;;;;;;;;;;;;2259:8:13;-1:-1:-1;;;;;2259:14:13;;2291:86;;;;;;;;2307:7;2291:86;;;;;;2316:25;2333:7;2316:16;:25::i;:::-;2291:86;;;;2343:8;2291:86;;;;2353:8;2291:86;;;;2363:13;2291:86;;;;;2403:4;2259:163;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2240:182;2038:391;-1:-1:-1;;;;;2038:391:13:o;7439:208:33:-;-1:-1:-1;;;;;7509:21:33;;7505:91;;7553:32;;-1:-1:-1;;;7553:32:33;;7582:1;7553:32;;;3603:51:40;3576:18;;7553:32:33;3457:203:40;7505:91:33;7605:35;7621:1;7625:7;7634:5;7605:7;:35::i;2912:187:28:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2237:514:18:-;2345:9;2340:354;2364:16;:23;2360:1;:27;2340:354;;;2522:48;2542:16;2559:1;2542:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2522:19;:48::i;:::-;2656:16;2673:1;2656:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2584:15;:40;2600:16;2617:1;2600:19;;;;;;;;:::i;:::-;;;;;;;:23;;;2584:40;;;;;;;;;;;;;;;:69;2625:16;2642:1;2625:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2584:69;;;;;;;;;;;;;;;:99;;;;;;:::i;:::-;-1:-1:-1;2389:3:18;;2340:354;;;;2709:35;2727:16;2709:35;;;;;;:::i;4631:264::-;4801:1;4787:16;;4781:23;4827:28;;;463:1;4827:28;4823:65;;4879:8;4864:24;;-1:-1:-1;;;4864:24:18;;;;;;;;:::i;9363:1333:24:-;9517:34;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;9915:20:24;;9965:140;9985:10;10009:19;;;;10042:22;;;;10078:17;;;;10009:10;10078:17;:::i;:::-;9965:6;:140::i;:::-;9914:191;;;;10194:20;10216;10240:49;10260:10;10272:16;10240:19;:49::i;:::-;10193:96;;-1:-1:-1;10193:96:24;-1:-1:-1;10412:66:24;10420:17;;;;:10;:17;:::i;:::-;10439:7;10448;10412:66;;;;;;;10457:4;10412:66;:::i;:::-;10463:14;10412:7;:66::i;:::-;10544:42;;;;;;;;;;;;;;;;;;;10610:15;;10399:79;;-1:-1:-1;10544:42:24;;-1:-1:-1;10646:10:24;;10610:15;10602:87;;10627:17;;;;:10;:17;:::i;:::-;10602:87;;;30985:10:40;30973:23;;;30955:42;;31028:2;31013:18;;31006:34;;;31056:18;;31049:34;;;30943:2;30928:18;10602:87:24;;;;;;;9583:1113;;;;9363:1333;;;;;;:::o;9682:432:33:-;-1:-1:-1;;;;;9794:19:33;;9790:89;;9836:32;;-1:-1:-1;;;9836:32:33;;9865:1;9836:32;;;3603:51:40;3576:18;;9836:32:33;3457:203:40;9790:89:33;-1:-1:-1;;;;;9892:21:33;;9888:90;;9936:31;;-1:-1:-1;;;9936:31:33;;9964:1;9936:31;;;3603:51:40;3576:18;;9936:31:33;3457:203:40;9888:90:33;-1:-1:-1;;;;;9987:18:33;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10032:76;;;;10082:7;-1:-1:-1;;;;;10066:31:33;10075:5;-1:-1:-1;;;;;10066:31:33;;10091:5;10066:31;;;;6213:25:40;;6201:2;6186:18;;6067:177;10066:31:33;;;;;;;;9682:432;;;;:::o;16677:172:24:-;16748:16;16821:21;16784:33;16821:21;16784:9;:33;:::i;:::-;16783:59;;;;:::i;1573:123:27:-;1633:7;1667:21;188:2;1633:7;1667:4;;:21;:::i;:::-;1659:30;;;:::i;1874:152::-;1936:6;1975:42;243:2;188;1975:4;;:42;:::i;:::-;1968:50;;;:::i;:::-;1961:58;;;1874:152;-1:-1:-1;;;1874:152:27:o;17073:139:24:-;17137:16;17172:33;17184:21;-1:-1:-1;;;;;17172:33:24;;;:::i;1002:374:39:-;1132:24;252:21;1240:9;1224:13;2908:12:33;;;2830:97;1224:13:39;:25;;;;:::i;:::-;:38;1220:95;;;1285:19;;-1:-1:-1;;;1285:19:39;;;;;;;;;;;1220:95;1331:38;1345:3;1350:9;1361:7;1331:13;:38::i;2186:130:27:-;2250:12;2281:28;:4;243:2;2281:4;;:28;:::i;:::-;2274:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:35:27;;2186:130;-1:-1:-1;;;;;;2186:130:27:o;640:284:26:-;824:17;877:6;885:7;894:9;905:11;860:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;853:64;;640:284;;;;;;:::o;1542:286:39:-;-1:-1:-1;;;;;1671:18:39;;;:57;;;;;252:21;1709:6;1693:13;2908:12:33;;;2830:97;1693:13:39;:22;;;;:::i;:::-;:35;1671:57;1667:114;;;1751:19;;-1:-1:-1;;;1751:19:39;;;;;;;;;;;1667:114;1790:31;1804:4;1810:2;1814:6;1790:13;:31::i;17436:147:24:-;17501:15;17542:33;17554:21;17542:9;:33;:::i;598:506:27:-;791:18;;732:17;;791:22;;;934:163;;1074:7;1083:13;1057:40;;;;;;;;32844:19:40;;;32919:3;32897:16;-1:-1:-1;;;;;;32893:51:40;32888:2;32879:12;;32872:73;32970:2;32961:12;;32689:290;1057:40:27;;;;;;;;;;;;;934:163;;;976:7;985:13;1017:10;1030:11;959:83;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;934:163;927:170;;598:506;;;;;;:::o;2037:567:23:-;2198:20;2220:24;2291:44;2302:9;2313:12;2327:7;2291:10;:44::i;:::-;2256:79;;-1:-1:-1;2256:79:23;-1:-1:-1;2571:26:23;2577:5;2256:79;2571:5;:26::i;:::-;2037:567;;;;;;;:::o;3188:766:13:-;3389:31;;:::i;:::-;3554:20;3577:26;3588:4;:14;;;3577:10;:26::i;:::-;3617:15;;;;3554:49;;-1:-1:-1;3617:19:13;3613:53;;3638:28;3650:4;:15;;;3638:11;:28::i;:::-;3755:8;-1:-1:-1;;;;;3755:13:13;;3777:12;3809:92;;;;;;;;3825:7;3809:92;;;;;;3834:25;3851:7;3834:16;:25::i;:::-;3809:92;;;;3861:8;3809:92;;;;3871:8;3809:92;;;;3899:1;3881:4;:15;;;:19;3809:92;;;;;3919:14;3755:192;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3677:270;3188:766;-1:-1:-1;;;;;;;3188:766:13:o;2939:462:23:-;3073:24;-1:-1:-1;;;;;3113:19:23;;3109:46;;3148:6;3134:21;;3109:46;3251:21;3257:3;3262:9;3251:5;:21::i;:::-;-1:-1:-1;3385:9:23;;2939:462;-1:-1:-1;;2939:462:23:o;5989:1107:33:-;-1:-1:-1;;;;;6078:18:33;;6074:540;;6230:5;6214:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6074:540:33;;-1:-1:-1;6074:540:33;;-1:-1:-1;;;;;6288:15:33;;6266:19;6288:15;;;:9;:15;;;;;;6321:19;;;6317:115;;;6367:50;;-1:-1:-1;;;6367:50:33;;-1:-1:-1;;;;;24730:32:40;;6367:50:33;;;24712:51:40;24779:18;;;24772:34;;;24822:18;;;24815:34;;;24685:18;;6367:50:33;24510:345:40;6317:115:33;-1:-1:-1;;;;;6552:15:33;;;;;;:9;:15;;;;;6570:19;;;;6552:37;;6074:540;-1:-1:-1;;;;;6628:16:33;;6624:425;;6791:12;:21;;;;;;;6624:425;;;-1:-1:-1;;;;;7002:13:33;;;;;;:9;:13;;;;;:22;;;;;;6624:425;7079:2;-1:-1:-1;;;;;7064:25:33;7073:4;-1:-1:-1;;;;;7064:25:33;;7083:5;7064:25;;;;6213::40;;6201:2;6186:18;;6067:177;7064:25:33;;;;;;;;5989:1107;;;:::o;7965:206::-;-1:-1:-1;;;;;8035:21:33;;8031:89;;8079:30;;-1:-1:-1;;;8079:30:33;;8106:1;8079:30;;;3603:51:40;3576:18;;8079:30:33;3457:203:40;8031:89:33;8129:35;8137:7;8154:1;8158:5;8129:7;:35::i;4650:191:13:-;4716:17;4762:10;4749:9;:23;4745:62;;4781:26;;-1:-1:-1;;;4781:26:13;;4797:9;4781:26;;;6213:25:40;6186:18;;4781:26:13;6067:177:40;4745:62:13;-1:-1:-1;4824:10:13;4650:191::o;5218:410::-;5371:15;5389:8;-1:-1:-1;;;;;5389:16:13;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5371:36;-1:-1:-1;;;;;;5421:21:13;;5417:54;;5451:20;;-1:-1:-1;;;5451:20:13;;;;;;;;;;;5417:54;1745:53:36;;;5578:10:13;1745:53:36;;;34288:51:40;;;5598:8:13;-1:-1:-1;;;;;34375:32:40;;;34355:18;;;34348:60;34424:18;;;;34417:34;;;1745:53:36;;;;;;;;;;34261:18:40;;;;1745:53:36;;;;;;;;;-1:-1:-1;;;;;1745:53:36;-1:-1:-1;;;1745:53:36;;;8600:11;;5545:76:13;;:32;;;5609:11;;1718:81:36;;5545:32:13;;-1:-1:-1;;;;1745:53:36;;-1:-1:-1;;;5545:32:13;8566:5:36;8561:60;8673:7;8663:176;;8717:4;8711:11;8762:16;8759:1;8754:3;8739:40;8808:16;8803:3;8796:29;8663:176;-1:-1:-1;;8916:1:36;8910:8;8866:16;;-1:-1:-1;8942:15:36;;:68;;8994:11;9009:1;8994:16;;8942:68;;;-1:-1:-1;;;;;8960:26:36;;;:31;8942:68;8938:146;;;9033:40;;-1:-1:-1;;;9033:40:36;;-1:-1:-1;;;;;3621:32:40;;9033:40:36;;;3603:51:40;3576:18;;9033:40:36;3457:203:40;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:250:40:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:40;238:16;;231:27;14:250::o;269:271::-;311:3;349:5;343:12;376:6;371:3;364:19;392:76;461:6;454:4;449:3;445:14;438:4;431:5;427:16;392:76;:::i;:::-;522:2;501:15;-1:-1:-1;;497:29:40;488:39;;;;529:4;484:50;;269:271;-1:-1:-1;;269:271:40:o;545:220::-;694:2;683:9;676:21;657:4;714:45;755:2;744:9;740:18;732:6;714:45;:::i;770:131::-;-1:-1:-1;;;;;845:31:40;;835:42;;825:70;;891:1;888;881:12;906:367;974:6;982;1035:2;1023:9;1014:7;1010:23;1006:32;1003:52;;;1051:1;1048;1041:12;1003:52;1090:9;1077:23;1109:31;1134:5;1109:31;:::i;:::-;1159:5;1237:2;1222:18;;;;1209:32;;-1:-1:-1;;;906:367:40:o;1470:158::-;1532:5;1577:3;1568:6;1563:3;1559:16;1555:26;1552:46;;;1594:1;1591;1584:12;1552:46;-1:-1:-1;1616:6:40;1470:158;-1:-1:-1;1470:158:40:o;1633:360::-;1721:6;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1830:9;1817:23;-1:-1:-1;;;;;1855:6:40;1852:30;1849:50;;;1895:1;1892;1885:12;1849:50;1918:69;1979:7;1970:6;1959:9;1955:22;1918:69;:::i;2152:1300::-;2072:12;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;;2094:47;2518:4;2566:3;2551:19;;2660:3;2655:2;2644:9;2640:18;2633:31;2684:6;2719;2713:13;2750:6;2742;2735:22;2788:3;2777:9;2773:19;2766:26;;2851:3;2841:6;2838:1;2834:14;2823:9;2819:30;2815:40;2801:54;;2890:4;2882:6;2878:17;2913:1;2923:437;2937:6;2934:1;2931:13;2923:437;;;3030:3;3026:8;3014:9;3006:6;3002:22;2998:37;2993:3;2986:50;3065:6;3059:13;3106:2;3100:9;3092:6;3085:25;3157:4;3153:2;3149:13;3143:20;3123:40;;3202:2;3195:4;3187:6;3183:17;3176:29;3228:48;3272:2;3264:6;3260:15;3246:12;3228:48;:::i;:::-;3218:58;-1:-1:-1;;3311:4:40;3336:14;;;;3299:17;;;;;2959:1;2952:9;2923:437;;;-1:-1:-1;;2072:12:40;;3442:2;3427:18;;2060:25;-1:-1:-1;;2134:4:40;2123:16;;2117:23;2101:14;;;2094:47;3377:6;-1:-1:-1;3392:54:40;1998:149;3665:154;3724:5;3769:2;3760:6;3755:3;3751:16;3747:25;3744:45;;;3785:1;3782;3775:12;3824:347;3875:8;3885:6;3939:3;3932:4;3924:6;3920:17;3916:27;3906:55;;3957:1;3954;3947:12;3906:55;-1:-1:-1;3980:20:40;;-1:-1:-1;;;;;4012:30:40;;4009:50;;;4055:1;4052;4045:12;4009:50;4092:4;4084:6;4080:17;4068:29;;4144:3;4137:4;4128:6;4120;4116:19;4112:30;4109:39;4106:59;;;4161:1;4158;4151:12;4106:59;3824:347;;;;;:::o;4176:1093::-;4317:6;4325;4333;4341;4349;4357;4365;4418:3;4406:9;4397:7;4393:23;4389:33;4386:53;;;4435:1;4432;4425:12;4386:53;4458;4503:7;4492:9;4458:53;:::i;:::-;4448:63;-1:-1:-1;4580:2:40;4565:18;;4552:32;;-1:-1:-1;4659:3:40;4644:19;;4631:33;-1:-1:-1;;;;;4676:30:40;;4673:50;;;4719:1;4716;4709:12;4673:50;4758:58;4808:7;4799:6;4788:9;4784:22;4758:58;:::i;:::-;4835:8;;-1:-1:-1;4732:84:40;-1:-1:-1;;4922:3:40;4907:19;;4894:33;4936;4894;4936;:::i;:::-;4988:7;-1:-1:-1;5048:3:40;5033:19;;5020:33;-1:-1:-1;;;;;5065:32:40;;5062:52;;;5110:1;5107;5100:12;5062:52;5149:60;5201:7;5190:8;5179:9;5175:24;5149:60;:::i;:::-;4176:1093;;;;-1:-1:-1;4176:1093:40;;-1:-1:-1;4176:1093:40;;;;5123:86;;-1:-1:-1;;;4176:1093:40:o;6249:508::-;6326:6;6334;6342;6395:2;6383:9;6374:7;6370:23;6366:32;6363:52;;;6411:1;6408;6401:12;6363:52;6450:9;6437:23;6469:31;6494:5;6469:31;:::i;:::-;6519:5;-1:-1:-1;6576:2:40;6561:18;;6548:32;6589:33;6548:32;6589:33;:::i;:::-;6249:508;;6641:7;;-1:-1:-1;;;6721:2:40;6706:18;;;;6693:32;;6249:508::o;6951:163::-;7018:20;;7078:10;7067:22;;7057:33;;7047:61;;7104:1;7101;7094:12;7047:61;6951:163;;;:::o;7119:298::-;7186:6;7194;7247:2;7235:9;7226:7;7222:23;7218:32;7215:52;;;7263:1;7260;7253:12;7215:52;7286:28;7304:9;7286:28;:::i;7422:118::-;7508:5;7501:13;7494:21;7487:5;7484:32;7474:60;;7530:1;7527;7520:12;7545:489;7639:6;7647;7700:2;7688:9;7679:7;7675:23;7671:32;7668:52;;;7716:1;7713;7706:12;7668:52;7756:9;7743:23;-1:-1:-1;;;;;7781:6:40;7778:30;7775:50;;;7821:1;7818;7811:12;7775:50;7844:69;7905:7;7896:6;7885:9;7881:22;7844:69;:::i;:::-;7834:79;;;7963:2;7952:9;7948:18;7935:32;7976:28;7998:5;7976:28;:::i;:::-;8023:5;8013:15;;;7545:489;;;;;:::o;8039:253::-;2072:12;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;;2094:47;8229:2;8214:18;;8241:45;1998:149;8297:159;8364:20;;8424:6;8413:18;;8403:29;;8393:57;;8446:1;8443;8436:12;8461:256;8527:6;8535;8588:2;8576:9;8567:7;8563:23;8559:32;8556:52;;;8604:1;8601;8594:12;8556:52;8627:28;8645:9;8627:28;:::i;:::-;8617:38;;8674:37;8707:2;8696:9;8692:18;8674:37;:::i;:::-;8664:47;;8461:256;;;;;:::o;9181:247::-;9240:6;9293:2;9281:9;9272:7;9268:23;9264:32;9261:52;;;9309:1;9306;9299:12;9261:52;9348:9;9335:23;9367:31;9392:5;9367:31;:::i;9638:668::-;9750:6;9758;9766;9774;9827:3;9815:9;9806:7;9802:23;9798:33;9795:53;;;9844:1;9841;9834:12;9795:53;9867;9912:7;9901:9;9867:53;:::i;:::-;9857:63;;9971:2;9960:9;9956:18;9943:32;-1:-1:-1;;;;;9990:6:40;9987:30;9984:50;;;10030:1;10027;10020:12;9984:50;10069:58;10119:7;10110:6;10099:9;10095:22;10069:58;:::i;:::-;10146:8;;-1:-1:-1;10043:84:40;-1:-1:-1;;10231:3:40;10216:19;;10203:33;10245:31;10203:33;10245:31;:::i;:::-;9638:668;;;;-1:-1:-1;9638:668:40;;-1:-1:-1;;9638:668:40:o;10311:395::-;10402:8;10412:6;10466:3;10459:4;10451:6;10447:17;10443:27;10433:55;;10484:1;10481;10474:12;10433:55;-1:-1:-1;10507:20:40;;-1:-1:-1;;;;;10539:30:40;;10536:50;;;10582:1;10579;10572:12;10536:50;10619:4;10611:6;10607:17;10595:29;;10679:3;10672:4;10662:6;10659:1;10655:14;10647:6;10643:27;10639:38;10636:47;10633:67;;;10696:1;10693;10686:12;10711:504;10836:6;10844;10897:2;10885:9;10876:7;10872:23;10868:32;10865:52;;;10913:1;10910;10903:12;10865:52;10953:9;10940:23;-1:-1:-1;;;;;10978:6:40;10975:30;10972:50;;;11018:1;11015;11008:12;10972:50;11057:98;11147:7;11138:6;11127:9;11123:22;11057:98;:::i;:::-;11174:8;;11031:124;;-1:-1:-1;10711:504:40;-1:-1:-1;;;;10711:504:40:o;11220:184::-;11278:6;11331:2;11319:9;11310:7;11306:23;11302:32;11299:52;;;11347:1;11344;11337:12;11299:52;11370:28;11388:9;11370:28;:::i;11591:553::-;11677:6;11685;11693;11701;11754:2;11742:9;11733:7;11729:23;11725:32;11722:52;;;11770:1;11767;11760:12;11722:52;11793:28;11811:9;11793:28;:::i;:::-;11783:38;;11840:37;11873:2;11862:9;11858:18;11840:37;:::i;:::-;11830:47;;11928:2;11917:9;11913:18;11900:32;-1:-1:-1;;;;;11947:6:40;11944:30;11941:50;;;11987:1;11984;11977:12;11941:50;12026:58;12076:7;12067:6;12056:9;12052:22;12026:58;:::i;:::-;11591:553;;;;-1:-1:-1;12103:8:40;-1:-1:-1;;;;11591:553:40:o;12652:655::-;12788:6;12796;12804;12848:9;12839:7;12835:23;12878:3;12874:2;12870:12;12867:32;;;12895:1;12892;12885:12;12867:32;12935:9;12922:23;-1:-1:-1;;;;;12960:6:40;12957:30;12954:50;;;13000:1;12997;12990:12;12954:50;13023:69;13084:7;13075:6;13064:9;13060:22;13023:69;:::i;:::-;13013:79;-1:-1:-1;;13126:2:40;-1:-1:-1;;13108:16:40;;13104:25;13101:45;;;13142:1;13139;13132:12;13101:45;;13180:2;13169:9;13165:18;13155:28;;13233:2;13222:9;13218:18;13205:32;13246:31;13271:5;13246:31;:::i;:::-;13296:5;13286:15;;;12652:655;;;;;:::o;13312:609::-;13552:4;13594:3;13583:9;13579:19;13571:27;;13631:6;13625:13;13614:9;13607:32;-1:-1:-1;;;;;13699:4:40;13691:6;13687:17;13681:24;13677:49;13670:4;13659:9;13655:20;13648:79;13774:4;13766:6;13762:17;13756:24;13789:62;13845:4;13834:9;13830:20;13816:12;2072;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;2094:47;1998:149;13789:62;-1:-1:-1;2072:12:40;;13910:3;13895:19;;2060:25;2134:4;2123:16;;2117:23;2101:14;;;2094:47;13860:55;1998:149;13926:388;13994:6;14002;14055:2;14043:9;14034:7;14030:23;14026:32;14023:52;;;14071:1;14068;14061:12;14023:52;14110:9;14097:23;14129:31;14154:5;14129:31;:::i;:::-;14179:5;-1:-1:-1;14236:2:40;14221:18;;14208:32;14249:33;14208:32;14249:33;:::i;14319:234::-;14402:6;14455:2;14443:9;14434:7;14430:23;14426:32;14423:52;;;14471:1;14468;14461:12;14423:52;14494:53;14539:7;14528:9;14494:53;:::i;14558:380::-;14637:1;14633:12;;;;14680;;;14701:61;;14755:4;14747:6;14743:17;14733:27;;14701:61;14808:2;14800:6;14797:14;14777:18;14774:38;14771:161;;14854:10;14849:3;14845:20;14842:1;14835:31;14889:4;14886:1;14879:15;14917:4;14914:1;14907:15;14943:251;15013:6;15066:2;15054:9;15045:7;15041:23;15037:32;15034:52;;;15082:1;15079;15072:12;15034:52;15114:9;15108:16;15133:31;15158:5;15133:31;:::i;15199:230::-;15269:6;15322:2;15310:9;15301:7;15297:23;15293:32;15290:52;;;15338:1;15335;15328:12;15290:52;-1:-1:-1;15383:16:40;;15199:230;-1:-1:-1;15199:230:40:o;15434:127::-;15495:10;15490:3;15486:20;15483:1;15476:31;15526:4;15523:1;15516:15;15550:4;15547:1;15540:15;15834:127;15895:10;15890:3;15886:20;15883:1;15876:31;15926:4;15923:1;15916:15;15950:4;15947:1;15940:15;15966:125;16031:9;;;16052:10;;;16049:36;;;16065:18;;:::i;16096:253::-;16168:2;16162:9;16210:4;16198:17;;-1:-1:-1;;;;;16230:34:40;;16266:22;;;16227:62;16224:88;;;16292:18;;:::i;:::-;16328:2;16321:22;16096:253;:::o;16354:257::-;16426:4;16420:11;;;16458:17;;-1:-1:-1;;;;;16490:34:40;;16526:22;;;16487:62;16484:88;;;16552:18;;:::i;16616:275::-;16687:2;16681:9;16752:2;16733:13;;-1:-1:-1;;16729:27:40;16717:40;;-1:-1:-1;;;;;16772:34:40;;16808:22;;;16769:62;16766:88;;;16834:18;;:::i;:::-;16870:2;16863:22;16616:275;;-1:-1:-1;16616:275:40:o;16896:186::-;16944:4;-1:-1:-1;;;;;16969:6:40;16966:30;16963:56;;;16999:18;;:::i;:::-;-1:-1:-1;17065:2:40;17044:15;-1:-1:-1;;17040:29:40;17071:4;17036:40;;16896:186::o;17087:1784::-;17279:9;-1:-1:-1;;;;;17309:6:40;17306:30;17303:56;;;17339:18;;:::i;:::-;17385:6;17382:1;17378:14;17412:30;17436:4;17432:2;17428:13;17412:30;:::i;:::-;17476:19;;;17548:14;;;;17520:4;17511:14;;;17585;17574:26;;17571:46;;;17613:1;17610;17603:12;17571:46;17637:5;17651:1187;17667:6;17662:3;17659:15;17651:1187;;;17755:3;17742:17;-1:-1:-1;;;;;17778:11:40;17775:35;17772:55;;;17823:1;17820;17813:12;17772:55;17850:23;;17918:4;17897:14;17893:23;;;17889:34;17886:54;;;17936:1;17933;17926:12;17886:54;17968:22;;:::i;:::-;18019:21;18037:2;18019:21;:::i;:::-;18010:7;18003:38;18081:32;18107:4;18103:2;18099:13;18081:32;:::i;:::-;18074:4;18065:7;18061:18;18054:60;18162:2;18158;18154:11;18141:25;-1:-1:-1;;;;;18185:6:40;18182:30;18179:50;;;18225:1;18222;18215:12;18179:50;18252:15;;;;;18309:14;18302:4;18294:13;;18290:34;18280:62;;18338:1;18335;18328:12;18280:62;18384:2;18371:16;18415:54;18431:37;18459:8;18431:37;:::i;:::-;18415:54;:::i;:::-;18498:8;18489:7;18482:25;18556:14;18549:4;18538:8;18534:2;18530:17;18526:28;18523:48;18520:68;;;18584:1;18581;18574:12;18520:68;18649:8;18642:4;18638:2;18634:13;18627:4;18618:7;18614:18;18601:57;18713:1;18706:4;18695:8;18686:7;18682:22;18678:33;18671:44;18753:7;18748:2;18739:7;18735:16;18728:33;;;18786:7;18781:3;18774:20;;;18823:4;18818:3;18814:14;18807:21;;17693:4;17688:3;17684:14;17677:21;;17651:1187;;;-1:-1:-1;18860:5:40;17087:1784;-1:-1:-1;;;;;17087:1784:40:o;18876:331::-;18981:9;18992;19034:8;19022:10;19019:24;19016:44;;;19056:1;19053;19046:12;19016:44;19085:6;19075:8;19072:20;19069:40;;;19105:1;19102;19095:12;19069:40;-1:-1:-1;;19131:23:40;;;19176:25;;;;;-1:-1:-1;18876:331:40:o;19212:476::-;19403:3;19441:6;19435:13;19457:66;19516:6;19511:3;19504:4;19496:6;19492:17;19457:66;:::i;:::-;19545:16;;19598:6;19590;19545:16;19570:35;19662:1;19624:18;;19651:13;;;-1:-1:-1;19624:18:40;;19212:476;-1:-1:-1;;;19212:476:40:o;19693:266::-;19781:6;19776:3;19769:19;19833:6;19826:5;19819:4;19814:3;19810:14;19797:43;-1:-1:-1;19885:1:40;19860:16;;;19878:4;19856:27;;;19849:38;;;;19941:2;19920:15;;;-1:-1:-1;;19916:29:40;19907:39;;;19903:50;;19693:266::o;19964:244::-;20121:2;20110:9;20103:21;20084:4;20141:61;20198:2;20187:9;20183:18;20175:6;20167;20141:61;:::i;20213:127::-;20274:10;20269:3;20265:20;20262:1;20255:31;20305:4;20302:1;20295:15;20329:4;20326:1;20319:15;20345:331;20444:4;20502:11;20489:25;20596:3;20592:8;20581;20565:14;20561:29;20557:44;20537:18;20533:69;20523:97;;20616:1;20613;20606:12;20523:97;20637:33;;;;;20345:331;-1:-1:-1;;20345:331:40:o;20681:521::-;20758:4;20764:6;20824:11;20811:25;20918:2;20914:7;20903:8;20887:14;20883:29;20879:43;20859:18;20855:68;20845:96;;20937:1;20934;20927:12;20845:96;20964:33;;21016:20;;;-1:-1:-1;;;;;;21048:30:40;;21045:50;;;21091:1;21088;21081:12;21045:50;21124:4;21112:17;;-1:-1:-1;21155:14:40;21151:27;;;21141:38;;21138:58;;;21192:1;21189;21182:12;21207:129;-1:-1:-1;;;;;21285:5:40;21281:30;21274:5;21271:41;21261:69;;21326:1;21323;21316:12;21341:1040;21715:10;21688:25;21706:6;21688:25;:::i;:::-;21684:42;21666:61;;21793:4;21781:17;;;21768:31;21815:20;;;21808:35;21647:4;21892;21880:17;;21867:31;21907:32;21867:31;21907:32;:::i;:::-;-1:-1:-1;;;;;21981:7:40;21977:32;21970:4;21959:9;21955:20;21948:62;;22046:6;22041:2;22030:9;22026:18;22019:34;22090:3;22084;22073:9;22069:19;22062:32;22117:62;22174:3;22163:9;22159:19;22151:6;22143;22117:62;:::i;:::-;-1:-1:-1;;;;;22216:32:40;;22236:3;22195:19;;22188:61;22286:22;;;22280:3;22265:19;;22258:51;22326:49;22290:6;22360;22352;22326:49;:::i;:::-;22318:57;21341:1040;-1:-1:-1;;;;;;;;;;21341:1040:40:o;22386:667::-;22465:6;22518:2;22506:9;22497:7;22493:23;22489:32;22486:52;;;22534:1;22531;22524:12;22486:52;22567:9;22561:16;-1:-1:-1;;;;;22592:6:40;22589:30;22586:50;;;22632:1;22629;22622:12;22586:50;22655:22;;22708:4;22700:13;;22696:27;-1:-1:-1;22686:55:40;;22737:1;22734;22727:12;22686:55;22770:2;22764:9;22795:52;22811:35;22839:6;22811:35;:::i;22795:52::-;22870:6;22863:5;22856:21;22918:7;22913:2;22904:6;22900:2;22896:15;22892:24;22889:37;22886:57;;;22939:1;22936;22929:12;22886:57;22952:71;23016:6;23011:2;23004:5;23000:14;22995:2;22991;22987:11;22952:71;:::i;23508:245::-;23566:6;23619:2;23607:9;23598:7;23594:23;23590:32;23587:52;;;23635:1;23632;23625:12;23587:52;23674:9;23661:23;23693:30;23717:5;23693:30;:::i;23758:479::-;24025:1;24021;24016:3;24012:11;24008:19;24000:6;23996:32;23985:9;23978:51;24065:6;24060:2;24049:9;24045:18;24038:34;24120:6;24112;24108:19;24103:2;24092:9;24088:18;24081:47;24164:3;24159:2;24148:9;24144:18;24137:31;23959:4;24185:46;24226:3;24215:9;24211:19;24203:6;24185:46;:::i;24860:379::-;25053:2;25042:9;25035:21;25016:4;25079:45;25120:2;25109:9;25105:18;25097:6;25079:45;:::i;:::-;25172:9;25164:6;25160:22;25155:2;25144:9;25140:18;25133:50;25200:33;25226:6;25218;25200:33;:::i;25244:245::-;25311:6;25364:2;25352:9;25343:7;25339:23;25335:32;25332:52;;;25380:1;25377;25370:12;25332:52;25412:9;25406:16;25431:28;25453:5;25431:28;:::i;25494:887::-;25713:2;25702:9;25695:21;25771:10;25762:6;25756:13;25752:30;25747:2;25736:9;25732:18;25725:58;25837:4;25829:6;25825:17;25819:24;25814:2;25803:9;25799:18;25792:52;25676:4;25891:2;25883:6;25879:15;25873:22;25932:4;25926:3;25915:9;25911:19;25904:33;25960:52;26007:3;25996:9;25992:19;25978:12;25960:52;:::i;:::-;25946:66;;26061:2;26053:6;26049:15;26043:22;26135:2;26131:7;26119:9;26111:6;26107:22;26103:36;26096:4;26085:9;26081:20;26074:66;26163:41;26197:6;26181:14;26163:41;:::i;:::-;26273:3;26261:16;;;;26255:23;26248:31;26241:39;26235:3;26220:19;;26213:68;-1:-1:-1;;;;;;;;26342:32:40;;;;26335:4;26320:20;;;26313:62;26149:55;25494:887::o;26386:388::-;26456:5;26504:4;26492:9;26487:3;26483:19;26479:30;26476:50;;;26522:1;26519;26512:12;26476:50;26544:22;;:::i;:::-;26611:16;;26636:22;;26724:2;26709:18;;;26703:25;26744:14;;;26737:31;;;;-1:-1:-1;26535:31:40;26386:388;-1:-1:-1;26386:388:40:o;26779:257::-;26877:6;26930:2;26918:9;26909:7;26905:23;26901:32;26898:52;;;26946:1;26943;26936:12;26898:52;26969:61;27022:7;27011:9;26969:61;:::i;27166:517::-;27267:2;27262:3;27259:11;27256:421;;;27303:5;27300:1;27293:16;27347:4;27344:1;27334:18;27417:2;27405:10;27401:19;27398:1;27394:27;27388:4;27384:38;27453:4;27441:10;27438:20;27435:47;;;-1:-1:-1;27476:4:40;27435:47;27531:2;27526:3;27522:12;27519:1;27515:20;27509:4;27505:31;27495:41;;27586:81;27604:2;27597:5;27594:13;27586:81;;;27663:1;27649:16;;27630:1;27619:13;27586:81;;27859:1295;27983:3;27977:10;-1:-1:-1;;;;;28002:6:40;27999:30;27996:56;;;28032:18;;:::i;:::-;28061:96;28150:6;28110:38;28142:4;28136:11;28110:38;:::i;:::-;28104:4;28061:96;:::i;:::-;28206:4;28237:2;28226:14;;28254:1;28249:648;;;;28941:1;28958:6;28955:89;;;-1:-1:-1;29010:19:40;;;29004:26;28955:89;-1:-1:-1;;27816:1:40;27812:11;;;27808:24;27804:29;27794:40;27840:1;27836:11;;;27791:57;29057:81;;28219:929;;28249:648;27113:1;27106:14;;;27150:4;27137:18;;-1:-1:-1;;28285:20:40;;;28402:222;28416:7;28413:1;28410:14;28402:222;;;28498:19;;;28492:26;28477:42;;28605:4;28590:20;;;;28558:1;28546:14;;;;28432:12;28402:222;;;28406:3;28652:6;28643:7;28640:19;28637:201;;;28713:19;;;28707:26;-1:-1:-1;;28796:1:40;28792:14;;;28808:3;28788:24;28784:37;28780:42;28765:58;28750:74;;28637:201;-1:-1:-1;;;;28884:1:40;28868:14;;;28864:22;28851:36;;-1:-1:-1;27859:1295:40:o;29159:1099::-;29375:4;29423:2;29412:9;29408:18;29453:2;29442:9;29435:21;29476:6;29511;29505:13;29542:6;29534;29527:22;29580:2;29569:9;29565:18;29558:25;;29642:2;29632:6;29629:1;29625:14;29614:9;29610:30;29606:39;29592:53;;29680:2;29672:6;29668:15;29701:1;29711:518;29725:6;29722:1;29719:13;29711:518;;;29818:2;29814:7;29802:9;29794:6;29790:22;29786:36;29781:3;29774:49;29852:6;29846:13;29902:10;29897:2;29891:9;29887:26;29879:6;29872:42;29975:6;29969:2;29965;29961:11;29955:18;29951:31;29946:2;29938:6;29934:15;29927:56;30030:2;30026;30022:11;30016:18;29996:38;;30071:4;30066:2;30058:6;30054:15;30047:29;30099:50;30143:4;30135:6;30131:17;30117:12;30099:50;:::i;:::-;30089:60;-1:-1:-1;;30184:2:40;30207:12;;;;30172:15;;;;;29747:1;29740:9;29711:518;;;-1:-1:-1;30246:6:40;;29159:1099;-1:-1:-1;;;;;;29159:1099:40:o;30263:487::-;30350:6;30410:2;30398:9;30389:7;30385:23;30381:32;30425:2;30422:22;;;30440:1;30437;30430:12;30422:22;-1:-1:-1;30482:22:40;;:::i;:::-;30549:23;;30581:22;;30676:2;30661:18;;;30648:32;30696:14;;;30689:31;;;;-1:-1:-1;30588:5:40;30263:487;-1:-1:-1;30263:487:40:o;31094:217::-;31134:1;31160;31150:132;;31204:10;31199:3;31195:20;31192:1;31185:31;31239:4;31236:1;31229:15;31267:4;31264:1;31257:15;31150:132;-1:-1:-1;31296:9:40;;31094:217::o;31316:168::-;31389:9;;;31420;;31437:15;;;31431:22;;31417:37;31407:71;;31458:18;;:::i;31489:255::-;31609:19;;31648:2;31640:11;;31637:101;;;-1:-1:-1;;31709:2:40;31705:12;;;31702:1;31698:20;31694:33;31683:45;31489:255;;;;:::o;31749:362::-;31869:19;;-1:-1:-1;;;;;;31906:37:40;;;31963:1;31955:10;;31952:153;;;-1:-1:-1;;;;;;32024:1:40;32020:11;;;32017:1;32013:19;32009:54;;;32001:63;;31997:98;;-1:-1:-1;31952:153:40;;31749:362;;;;:::o;32116:568::-;-1:-1:-1;;;;;32381:3:40;32377:28;32368:6;32363:3;32359:16;32355:51;32350:3;32343:64;32467:10;32462:3;32458:20;32449:6;32444:3;32440:16;32436:43;32432:1;32427:3;32423:11;32416:64;32510:6;32505:2;32500:3;32496:12;32489:28;32325:3;32546:6;32540:13;32562:75;32630:6;32625:2;32620:3;32616:12;32609:4;32601:6;32597:17;32562:75;:::i;:::-;32657:16;;;;32675:2;32653:25;;32116:568;-1:-1:-1;;;;;32116:568:40:o;32984:532::-;33225:6;33220:3;33213:19;-1:-1:-1;;;;;33288:3:40;33284:28;33275:6;33270:3;33266:16;33262:51;33257:2;33252:3;33248:12;33241:73;33344:6;33339:2;33334:3;33330:12;33323:28;33195:3;33380:6;33374:13;33396:73;33462:6;33457:2;33452:3;33448:12;33443:2;33435:6;33431:15;33396:73;:::i;:::-;33489:16;;;;33507:2;33485:25;;32984:532;-1:-1:-1;;;;;32984:532:40:o;33521:560::-;33623:6;33683:3;33671:9;33662:7;33658:23;33654:33;33699:2;33696:22;;;33714:1;33711;33704:12;33696:22;-1:-1:-1;33756:22:40;;:::i;:::-;33807:9;33801:16;33794:5;33787:31;33863:2;33852:9;33848:18;33842:25;33876:32;33900:7;33876:32;:::i;:::-;33935:2;33924:14;;33917:31;33980:70;34042:7;34037:2;34022:18;;33980:70;:::i;:::-;33975:2;33964:14;;33957:94;33968:5;33521:560;-1:-1:-1;;;33521:560:40:o"},"gasEstimates":{"creation":{"codeDepositCost":"2572200","executionCost":"infinite","totalCost":"infinite"},"external":{"MAX_SUPPLY()":"263","SEND()":"338","SEND_AND_CALL()":"250","allowInitializePath((uint32,bytes32,uint64))":"infinite","allowance(address,address)":"infinite","approvalRequired()":"287","approve(address,uint256)":"24779","balanceOf(address)":"2686","combineOptions(uint32,uint16,bytes)":"infinite","decimalConversionRate()":"infinite","decimals()":"236","endpoint()":"infinite","enforcedOptions(uint32,uint16)":"infinite","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"844","isPeer(uint32,bytes32)":"2641","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"infinite","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"infinite","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"infinite","mint(address,uint256)":"infinite","msgInspector()":"2450","name()":"infinite","nextNonce(uint32,bytes32)":"458","oApp()":"257","oAppVersion()":"285","oftVersion()":"269","owner()":"2465","peers(uint32)":"2552","preCrime()":"2470","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"infinite","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"infinite","renounceOwnership()":"infinite","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"infinite","setDelegate(address)":"infinite","setEnforcedOptions((uint32,uint16,bytes)[])":"infinite","setMsgInspector(address)":"27916","setPeer(uint32,bytes32)":"26127","setPreCrime(address)":"27860","sharedDecimals()":"313","symbol()":"infinite","token()":"344","totalSupply()":"2393","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite"},"internal":{"_credit(address,uint256,uint32)":"infinite","_update(address,address,uint256)":"infinite"}},"methodIdentifiers":{"MAX_SUPPLY()":"32cb6b0c","SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","allowance(address,address)":"dd62ed3e","approvalRequired()":"9f68b964","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","decimals()":"313ce567","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","mint(address,uint256)":"40c10f19","msgInspector()":"111ecdad","name()":"06fdde03","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","symbol()":"95d89b41","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_lzEndpoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"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\":\"MaxSupplyExceeded\",\"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\":[{\"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\":\"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\":\"MAX_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":[{\"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\":\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"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\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\"}],\"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\":[],\"name\":\"renounceOwnership\",\"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\":\"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\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"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\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"mint(address,uint256)\":{\"details\":\"Mints new tokens to the specified address\",\"params\":{\"_amount\":\"The amount of tokens to mint\",\"_to\":\"The address to mint tokens to\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SSE.sol\":\"SSE\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ERC20 } from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport { IOFT, OFTCore } from \\\"./OFTCore.sol\\\";\\n\\n/**\\n * @title OFT Contract\\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\\n */\\nabstract contract OFT is OFTCore, ERC20 {\\n    /**\\n     * @dev Constructor for the OFT contract.\\n     * @param _name The name of the OFT.\\n     * @param _symbol The symbol of the OFT.\\n     * @param _lzEndpoint The LayerZero endpoint address.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\\n\\n    /**\\n     * @dev Retrieves the address of the underlying ERC20 implementation.\\n     * @return The address of the OFT token.\\n     *\\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\\n     */\\n    function token() public view returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\\n     */\\n    function approvalRequired() external pure virtual returns (bool) {\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Burns tokens from the sender's specified balance.\\n     * @param _from The address to debit the tokens from.\\n     * @param _amountLD The amount of tokens to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination chain ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\\n\\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\\n        // therefore amountSentLD CAN differ from amountReceivedLD.\\n\\n        // @dev Default OFT burns on src.\\n        _burn(_from, amountSentLD);\\n    }\\n\\n    /**\\n     * @dev Credits tokens to the specified address.\\n     * @param _to The address to credit the tokens to.\\n     * @param _amountLD The amount of tokens to credit in local decimals.\\n     * @dev _srcEid The source chain ID.\\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 /*_srcEid*/\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\\n        // @dev Default OFT mints on dst.\\n        _mint(_to, _amountLD);\\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\\n        return _amountLD;\\n    }\\n}\\n\",\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/SSE.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport {OFT} from \\\"@layerzerolabs/oft-evm/contracts/OFT.sol\\\";\\n\\ncontract SSE is OFT {\\n    uint256 public constant MAX_SUPPLY = 20_000_000 * 10 ** 18;\\n\\n    error MaxSupplyExceeded();\\n\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}\\n\\n    /**\\n     * @dev Mints new tokens to the specified address\\n     * @param _to The address to mint tokens to\\n     * @param _amount The amount of tokens to mint\\n     */\\n    function mint(address _to, uint256 _amount) external onlyOwner {\\n        if (totalSupply() + _amount > MAX_SUPPLY) {\\n            revert MaxSupplyExceeded();\\n        }\\n        _mint(_to, _amount);\\n    }\\n\\n    /**\\n     * @dev Override _credit method to enforce max supply limit during cross-chain transfers\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        // Check if minting would exceed max supply\\n        if (totalSupply() + _amountLD > MAX_SUPPLY) {\\n            revert MaxSupplyExceeded();\\n        }\\n        return super._credit(_to, _amountLD, _srcEid);\\n    }\\n\\n    /**\\n     * @dev Override _update to enforce max supply limit for all minting operations\\n     * This is used by both _mint and cross-chain transfers\\n     */\\n    function _update(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual override {\\n        if (from == address(0) && totalSupply() + amount > MAX_SUPPLY) {\\n            revert MaxSupplyExceeded();\\n        }\\n        super._update(from, to, amount);\\n    }\\n}\\n\",\"keccak256\":\"0x660b6fbc3c9fd6a7b7edf03784ac2af61cc3f89eac563ebf4dbf9b63211bd89b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"contracts/SSE.sol:SSE","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"contracts/SSE.sol:SSE","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"contracts/SSE.sol:SSE","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"contracts/SSE.sol:SSE","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"contracts/SSE.sol:SSE","label":"msgInspector","offset":0,"slot":"4","type":"t_address"},{"astId":4230,"contract":"contracts/SSE.sol:SSE","label":"_balances","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":4236,"contract":"contracts/SSE.sol:SSE","label":"_allowances","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4238,"contract":"contracts/SSE.sol:SSE","label":"_totalSupply","offset":0,"slot":"7","type":"t_uint256"},{"astId":4240,"contract":"contracts/SSE.sol:SSE","label":"_name","offset":0,"slot":"8","type":"t_string_storage"},{"astId":4242,"contract":"contracts/SSE.sol:SSE","label":"_symbol","offset":0,"slot":"9","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}}}}}