Copyright (c) 2017, 2022 Oracle and/or its affiliates. Copyright (c) 2018, 2023 Oracle and/or its affiliates. Copyright (c) 2018, 2024 Oracle and/or its affiliates. Copyright (c) 2019, 2023 Oracle and/or its affiliates. Copyright (c) 2022 Oracle and/or its affiliates. Copyright (c) 2022, 2023 Oracle and/or its affiliates. Copyright (c) 2022, 2024 Oracle and/or its affiliates. Copyright (c) 2023 Oracle and/or its affiliates.