Commit a73df9c0 authored by elenadimitrova's avatar elenadimitrova Committed by Kelvin Fichter

Upgrade to solidity 0.8.7

parent 7f57ac87
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
import { Reverter } from './Reverter.sol'; import { Reverter } from './Reverter.sol';
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract ERC20 { contract ERC20 {
event Transfer(address indexed _from, address indexed _to, uint256 _value); event Transfer(address indexed _from, address indexed _to, uint256 _value);
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
// Can't do this until the package is published. // Can't do this until the package is published.
//import { iOVM_L1BlockNumber } from "@eth-optimism/contracts/iOVM_L1BlockNumber"; //import { iOVM_L1BlockNumber } from "@eth-optimism/contracts/iOVM_L1BlockNumber";
......
...@@ -18,7 +18,7 @@ copies or substantial portions of the Software. ...@@ -18,7 +18,7 @@ copies or substantial portions of the Software.
*/ */
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
// Can't do this until the package is published. // Can't do this until the package is published.
//import { iOVM_L1BlockNumber } from "@eth-optimism/contracts/iOVM_L1BlockNumber"; //import { iOVM_L1BlockNumber } from "@eth-optimism/contracts/iOVM_L1BlockNumber";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract Reverter { contract Reverter {
string constant public revertMessage = "This is a simple reversion."; string constant public revertMessage = "This is a simple reversion.";
......
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract ICrossDomainMessenger { contract ICrossDomainMessenger {
address public xDomainMessageSender; address public xDomainMessageSender;
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract TestOOG { contract TestOOG {
function runOutOfGas() public { function runOutOfGas() public {
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract ValueContext { contract ValueContext {
function getSelfBalance() external payable returns(uint256) { function getSelfBalance() external payable returns(uint256) {
......
...@@ -16,7 +16,7 @@ const config: HardhatUserConfig = { ...@@ -16,7 +16,7 @@ const config: HardhatUserConfig = {
mocha: { mocha: {
timeout: 50000, timeout: 50000,
}, },
solidity: '0.8.4', solidity: '0.8.7',
gasReporter: { gasReporter: {
enabled: enableGasReport, enabled: enableGasReport,
currency: 'USD', currency: 'USD',
......
...@@ -19,7 +19,7 @@ const config: HardhatUserConfig = { ...@@ -19,7 +19,7 @@ const config: HardhatUserConfig = {
timeout: 50000, timeout: 50000,
}, },
solidity: { solidity: {
version: '0.8.4', version: '0.8.7',
settings: { settings: {
optimizer: { optimizer: {
enabled: true, enabled: true,
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol"; import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title IL1ERC20Bridge * @title IL1ERC20Bridge
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
import "./IL1ERC20Bridge.sol"; import "./IL1ERC20Bridge.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_AddressResolver } from "../../libraries/resolver/Lib_AddressResolver.sol"; import { Lib_AddressResolver } from "../../libraries/resolver/Lib_AddressResolver.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Interface Imports */ /* Interface Imports */
import { IL1StandardBridge } from "./IL1StandardBridge.sol"; import { IL1StandardBridge } from "./IL1StandardBridge.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol"; import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_Buffer } from "../../libraries/utils/Lib_Buffer.sol"; import { Lib_Buffer } from "../../libraries/utils/Lib_Buffer.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol"; import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title IChainStorageContainer * @title IChainStorageContainer
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol"; import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol"; import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Interface Imports */ /* Interface Imports */
import { IBondManager } from "./IBondManager.sol"; import { IBondManager } from "./IBondManager.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title IBondManager * @title IBondManager
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Interface Imports */ /* Interface Imports */
import { ICrossDomainMessenger } from "../../libraries/bridge/ICrossDomainMessenger.sol"; import { ICrossDomainMessenger } from "../../libraries/bridge/ICrossDomainMessenger.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title IL2ERC20Bridge * @title IL2ERC20Bridge
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_CrossDomainUtils } from "../../libraries/bridge/Lib_CrossDomainUtils.sol"; import { Lib_CrossDomainUtils } from "../../libraries/bridge/Lib_CrossDomainUtils.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Interface Imports */ /* Interface Imports */
import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol"; import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Contract Imports */ /* Contract Imports */
import { L2StandardERC20 } from "../../libraries/standards/L2StandardERC20.sol"; import { L2StandardERC20 } from "../../libraries/standards/L2StandardERC20.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title OVM_DeployerWhitelist * @title OVM_DeployerWhitelist
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol"; import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Internal Imports */ /* Internal Imports */
import { iOVM_GasPriceOracle } from "./iOVM_GasPriceOracle.sol"; import { iOVM_GasPriceOracle } from "./iOVM_GasPriceOracle.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Interface Imports */ /* Interface Imports */
import { iOVM_L2ToL1MessagePasser } from "./iOVM_L2ToL1MessagePasser.sol"; import { iOVM_L2ToL1MessagePasser } from "./iOVM_L2ToL1MessagePasser.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol"; import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title iOVM_L1BlockNumber * @title iOVM_L1BlockNumber
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title iOVM_L1MessageSender * @title iOVM_L1MessageSender
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title iOVM_L2ToL1MessagePasser * @title iOVM_L2ToL1MessagePasser
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
import { iL1ChugSplashDeployer } from "./interfaces/iL1ChugSplashDeployer.sol"; import { iL1ChugSplashDeployer } from "./interfaces/iL1ChugSplashDeployer.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title iL1ChugSplashDeployer * @title iL1ChugSplashDeployer
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Interface Imports */ /* Interface Imports */
import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol"; import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title ICrossDomainMessenger * @title ICrossDomainMessenger
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_RLPReader } from "../rlp/Lib_RLPReader.sol"; import { Lib_RLPReader } from "../rlp/Lib_RLPReader.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_RLPReader } from "../rlp/Lib_RLPReader.sol"; import { Lib_RLPReader } from "../rlp/Lib_RLPReader.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_DefaultValues * @title Lib_DefaultValues
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_PredeployAddresses * @title Lib_PredeployAddresses
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* External Imports */ /* External Imports */
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_AddressManager } from "./Lib_AddressManager.sol"; import { Lib_AddressManager } from "./Lib_AddressManager.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_AddressManager } from "./Lib_AddressManager.sol"; import { Lib_AddressManager } from "./Lib_AddressManager.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_RLPReader * @title Lib_RLPReader
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_RLPWriter * @title Lib_RLPWriter
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
......
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/// @title Interface for WETH9. Also contains the non-ERC20 events /// @title Interface for WETH9. Also contains the non-ERC20 events
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_BytesUtils } from "../utils/Lib_BytesUtils.sol"; import { Lib_BytesUtils } from "../utils/Lib_BytesUtils.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_MerkleTrie } from "./Lib_MerkleTrie.sol"; import { Lib_MerkleTrie } from "./Lib_MerkleTrie.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_Buffer * @title Lib_Buffer
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_Byte32Utils * @title Lib_Byte32Utils
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_BytesUtils * @title Lib_BytesUtils
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/** /**
* @title Lib_MerkleTree * @title Lib_MerkleTree
......
// SPDX-License-Identifier: UNLICENSED // SPDX-License-Identifier: UNLICENSED
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract Helper_GasMeasurer { contract Helper_GasMeasurer {
function measureCallGas( function measureCallGas(
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract Helper_SimpleProxy { contract Helper_SimpleProxy {
address internal owner; address internal owner;
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
// a test ERC20 token with an open mint function // a test ERC20 token with an open mint function
contract TestERC20 { contract TestERC20 {
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol"; import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_RLPReader } from "../../libraries/rlp/Lib_RLPReader.sol"; import { Lib_RLPReader } from "../../libraries/rlp/Lib_RLPReader.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_RLPWriter } from "../../libraries/rlp/Lib_RLPWriter.sol"; import { Lib_RLPWriter } from "../../libraries/rlp/Lib_RLPWriter.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_MerkleTrie } from "../../libraries/trie/Lib_MerkleTrie.sol"; import { Lib_MerkleTrie } from "../../libraries/trie/Lib_MerkleTrie.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_SecureMerkleTrie } from "../../libraries/trie/Lib_SecureMerkleTrie.sol"; import { Lib_SecureMerkleTrie } from "../../libraries/trie/Lib_SecureMerkleTrie.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_Buffer } from "../../libraries/utils/Lib_Buffer.sol"; import { Lib_Buffer } from "../../libraries/utils/Lib_Buffer.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_Bytes32Utils } from "../../libraries/utils/Lib_Bytes32Utils.sol"; import { Lib_Bytes32Utils } from "../../libraries/utils/Lib_Bytes32Utils.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_BytesUtils } from "../../libraries/utils/Lib_BytesUtils.sol"; import { Lib_BytesUtils } from "../../libraries/utils/Lib_BytesUtils.sol";
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
/* Library Imports */ /* Library Imports */
import { Lib_MerkleTree } from "../../libraries/utils/Lib_MerkleTree.sol"; import { Lib_MerkleTree } from "../../libraries/utils/Lib_MerkleTree.sol";
......
...@@ -59,7 +59,7 @@ const config: HardhatUserConfig = { ...@@ -59,7 +59,7 @@ const config: HardhatUserConfig = {
solidity: { solidity: {
compilers: [ compilers: [
{ {
version: '0.7.6', version: '0.8.7',
}, },
{ {
version: '0.5.17', // Required for WETH9 version: '0.5.17', // Required for WETH9
......
...@@ -8,7 +8,7 @@ const config: HardhatUserConfig = { ...@@ -8,7 +8,7 @@ const config: HardhatUserConfig = {
sources: './test/test-contracts', sources: './test/test-contracts',
}, },
solidity: { solidity: {
version: '0.8.4', version: '0.8.7',
}, },
} }
......
// SPDX-License-Identifier: MIT // SPDX-License-Identifier: MIT
pragma solidity ^0.8.4; pragma solidity ^0.8.7;
contract MockL2CrossDomainMessenger { contract MockL2CrossDomainMessenger {
struct MessageData { struct MessageData {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment