<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/eda7ab532053bebdab947e6ecda9d0cdff3cb0b9">https://github.com/macports/macports-ports/commit/eda7ab532053bebdab947e6ecda9d0cdff3cb0b9</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit eda7ab532053bebdab947e6ecda9d0cdff3cb0b9
</span>Author: Renee Otten <reneeotten@macports.org>
AuthorDate: Sat Jun 22 09:02:19 2024 -0400

<span style='display:block; white-space:pre;color:#404040;'>    qt6: update to 6.7.2
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    - use Python 3.12, LLVM 18
</span><span style='display:block; white-space:pre;color:#404040;'>    - support macOS 11+
</span><span style='display:block; white-space:pre;color:#404040;'>    - add new subports for QtLocation, Qt Quick Effectmaker, and QtGraphs
</span><span style='display:block; white-space:pre;color:#404040;'>    - add myself as maintainer
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/66975
</span>---
 _resources/port1.0/group/qt6_info-1.0.tcl          |  21 +-
 aqua/qt6/Portfile                                  | 344 ++++++++++-----------
 aqua/qt6/files/CVE-2023-32573-qtsvg.diff           |  37 ---
 aqua/qt6/files/CVE-2023-32762-qtbase.diff          |  13 -
 aqua/qt6/files/CVE-2023-32763-qtbase.diff          |  55 ----
 aqua/qt6/files/CVE-2023-33285-qtbase.diff          |  70 -----
 aqua/qt6/files/CVE-2023-37369-qtbase.diff          | 189 -----------
 aqua/qt6/files/CVE-2023-38197-qtbase.diff          | 217 -------------
 aqua/qt6/files/CVE-2023-51714-qtbase.diff          |  86 ------
 aqua/qt6/files/CVE-2024-25580-qtbase.diff          | 325 -------------------
 aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff      | 138 +++++++++
 aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff    |  45 ---
 aqua/qt6/files/patch-qtbase-intel_intrinsics.diff  |  20 --
 aqua/qt6/files/patch-qtbase-macdeployqt.diff       |  33 --
 aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff   | 113 -------
 aqua/qt6/files/patch-qtbase-memory_resource.diff   |  80 -----
 aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff  |  22 --
 .../files/patch-qtmultimedia-macos_10.14_sdk.diff  |  51 ---
 .../patch-qtmultimedia_no_std_unary_function.diff  |  31 --
 .../files/patch-qtpositioning-macos_10.14_sdk.diff |  17 -
 aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff |  26 --
 aqua/qt6/files/qtbase-qmake-xcode-15.patch         |  59 ----
 aqua/qt64/Portfile                                 |   2 +-
 23 files changed, 328 insertions(+), 1666 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/qt6_info-1.0.tcl b/_resources/port1.0/group/qt6_info-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 94c500c0bbd..c9df0b05c72 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/qt6_info-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/qt6_info-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,7 +35,8 @@ namespace eval  qt6             {}
</span> # please keep in order with the most recent Qt and OS versions with the lowest indices
 #
 set qt6::available_versions {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    qt6     {6.4   {21 20 19 18}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    qt6     {6.7   {23 22 21 20}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    qt64    {6.4   {23 22 21 20 19 18}}
</span> }
 
 ####################################################################################################################################
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -308,6 +309,24 @@ array set qt6::components {
</span>         libexec/qt6/lib/QtQuick3DPhysics.framework/QtQuick3DPhysics
         ""
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    qtlocation {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        6.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        libexec/qt6/lib/QtLocation.framework/QtLocation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    qtquickeffectmaker {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        6.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /opt/local/libexec/qt6/qml/QtQuickEffectMaker/defaultnodes/basic/brightness_contrast.qen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    qtgraphs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        6.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        libexec/qt6/lib/QtGraphs.framework/QtGraphs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     sqlite-plugin {
         6.0
         7.0
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/Portfile b/aqua/qt6/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 7259d7a2696..a0d02be1ab0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt6/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -8,22 +8,24 @@ PortGroup                   compiler_blacklist_versions 1.0
</span> name                        qt6
 
 categories                  aqua
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms                   {macosx >= 18} ; # upon change, please update qt6 PG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers                 {mcalhoun @MarcusCalhoun-Lopez} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms                   {macosx >= 20} ; # upon change, please update qt6 PG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers                 {mcalhoun @MarcusCalhoun-Lopez} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            {reneeotten @reneeotten} openmaintainer
</span> 
 # for OpenSSLException, see source and header files in src/network/ssl of qtbase
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# see also https://doc.qt.io/qt-6.4/qtnetwork-index.html#licenses-and-attributions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see also https://doc.qt.io/qt-6.7/qtnetwork-index.html#licenses-and-attributions
</span> license                     {LGPL-3 GPL-3 OpenSSLException}
 
 homepage                    https://www.qt.io
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version                     6.4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version                     6.7.2
</span> 
 # get Qt's version numbers
 set branch                  [join [lrange [split ${version} .] 0 1] .]
 set qt_major                [lindex [split ${version} .] 0]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# see https://www.qt.io/blog/qt-6.0-released
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://www.qt.io/blog/qt-6.7-released
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard         2011
</span> compiler.cxx_standard       2017
 
 # qcompilerdetection.h emits:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -43,15 +45,15 @@ supported_archs             arm64 x86_64
</span> # conflict with all other versions of qt6
 foreach {qt_base qt_info} ${qt6::available_versions} {
     if { ${qt_base} ne ${name} } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        conflicts-append    port:${qt_base}-qtbase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        conflicts-append    ${qt_base}-qtbase
</span>     }
 }
 
 # MacPorts LLVM/Clang version to use when required
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set llvm_version            17
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set llvm_version            18
</span> 
 # MacPorts Python branch & version to use when required
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set python_branch           3.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_branch           3.12
</span> set python_version          [join [split ${python_branch} .] ""]
 
 ############################################################################### Modules Not Considered
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -63,7 +65,7 @@ set python_version          [join [split ${python_branch} .] ""]
</span> 
 ############################################################################### Qt Dependencies
 #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://code.qt.io/cgit/qt/qt5.git/tree/.gitmodules?h=6.4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://code.qt.io/cgit/qt/qt5.git/tree/.gitmodules?h=6.7.0
</span> #
 ###############################################################################
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -85,15 +87,15 @@ set python_version          [join [split ${python_branch} .] ""]
</span> #     license replacement
 # }
 #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# module info found at https://doc.qt.io/qt-6.4/qtmodules.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# module info found at https://doc.qt.io/qt-6.7/qtmodules.html
</span> #
 ###############################################################################
 array set modules {
     qtbase {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            3cadb6bd4cefcb2db1f47e780520d3f3d863fa1d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            5087c9e5b0165e7bc3c1a4ab176b35d0cd8f52636aea903fa377bdba00891a60
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            48078536
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4dbc3cad86d53186a94ab817ed8161e61d4a124a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            49364504
</span>         }
         ""
         "port:brotli path:bin/dbus-daemon:dbus port:double-conversion port:freetype
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -106,14 +108,14 @@ array set modules {
</span>          "Qt OpenGL" "Qt Platform Headers" "Qt Print Support" "Qt XML"}
         ""
         "variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 6"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span>         "License: "
     }
     qtsvg {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            2a021623559aca5a8d23298544b3d32fd8597e42
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            88315f886cf81898705e487cedba6e6160724359d23c518c92c333c098879a4a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1726464
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            22f33e4e75d55ed9ea3eeeae3eca19640936a322 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1791468
</span>         }
         ""
         "port:zlib"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -121,14 +123,14 @@ array set modules {
</span>         {"Qt SVG"}
         ""
         "variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span>         "License: "
     }
     qtdeclarative {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            91fafeb58501d02b49a9d97ff39759cb82ccaad9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            67ded1b3b988135e3600916b34bb156fe3986c88420c6f87a6d0fd53521ba795
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            30556972
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            c723a2abaaae49a44c3e7a9d749367eda85c512f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4c29cba1af8c42d425d8eb6e01bad24cb80f4b983d71eef566a0542dfdb9b999 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            35629324
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -141,9 +143,9 @@ array set modules {
</span>     }
     qtmultimedia {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            c085075a84da5e9d9fa8b613dcdc318138ef10da
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            a4a72469e12da1e59ee032ab2e6677d620a5663c354d0ba88906d2bec1567d00
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            5941312
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            a50c11eac72ccc7485bd7af7db39424273bfe58b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            8451800
</span>         }
         ""
         "path:lib/libavcodec.dylib:ffmpeg port:pulseaudio"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -151,14 +153,14 @@ array set modules {
</span>         {"Qt Multimedia"}
         ""
         "variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span>         "License: "
     }
     qttools {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            047a22392a4f500c6bf70c50432e16543e7505f0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            867df829cd5cd3ae8efe62e825503123542764b13c96953511e567df70c5a091
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            8738280
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            e182f7a868d3ddb5bbd1fbec72a953dbd4007aa3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            9019636
</span>         }
         ""
         "port:clang-${llvm_version}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -166,14 +168,14 @@ array set modules {
</span>         {"Qt Designer" "Qt Help" "Qt UI Tools"}
         ""
         "variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span>         "License: "
     }
     qttranslations {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            47f6a8448cc96dc28119aa2748ac42130a12c2c8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            79e56b7800d49649a8a8010818538c367a829e0b7a09d5f60bd3aecf5abe972c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1466828
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            eab4065f224be17611b7c21b6c88382133d6a77e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            9845780b5dc1b7279d57836db51aeaf2e4a1160c42be09750616f39157582ca9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1547608
</span>         }
         "port:qt6-qttools"
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -181,14 +183,14 @@ array set modules {
</span>         {"translation files"}
         ""
         "variant overrides: ~examples ~tests ~debug noarch ~docs"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span>         "License: "
     }
     qtdoc {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            b39c76dbcb6159b392ad9348146d39befda2da59
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            73eac34dd629f629ca8cf5827c165b476e834731bb8262c937bc57eef4128183
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            8633284
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            52576e20b5ee4b5a9b4ef0310bd68a99089df0d8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            a0c1456cb66dc76065f287e4a607510854bb794141dd18fe7f7db9954587756d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            14497164
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -199,11 +201,26 @@ array set modules {
</span>         "revision 0"
         "License: "
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    qtlocation {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            7751af00292fd3387ffaa76d347b91de8a6f5860 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            f232da58bf1189b69f1f7029417ddfeffcfb801b275aedc720e38244f88a485d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            3166188
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "qtbase qtpositioning qtdeclarative"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {"Qt Location"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "status = preview"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "variant overrides: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "License: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     qtpositioning {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            11046a934c31c916822b01d60b4e5975153ffcdd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            b218b1e1d37c12e2935ae90600d8b42ef68f90617fe8677ec89f0b0f05bcd70c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1494352
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            e62debaa82f6210166d87a4620c4942a6a6db53c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            020009f0aa8f6b1042963a45b6e19f2784cc937949cdb673f3b876153e087b1c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            658112
</span>         }
         ""
         "port:gconf"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -216,9 +233,9 @@ array set modules {
</span>     }
     qtsensors {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            15373f978e5dd1f3b2b09e53646ae8a734b26fcb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            5f3964fa2889456736a0bdf07221105fd67853539496e2d3ba2f380a47babc48
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            2106700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            62407675be7309e4b04acbf15d0df6e1ac345992 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ead1dec787c56ed4dc02ed810af54ff1e1f6875cb5cc2506c74eeb9554e6bb59 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1497432
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -231,9 +248,9 @@ array set modules {
</span>     }
     qtconnectivity {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            df9e16e8b99e00f7261587a3acf582d65f8f1bc9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            f98c2014cc4ab7ed69e762ecddd2433b95468942bb1612f648a7e9c94ba44c9d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1108992
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            cc20d05f3c5ea5ba28a3cb568d180dfa96e3954d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            8ed321b242f0e956473a295fa31670271f9b3acb797508644cb740f89f6c08e8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1061952
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -246,9 +263,9 @@ array set modules {
</span>     }
     qt3d {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            819f7dd13b6e6d8ceb0ae96399d36aa43a970698
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            a88225f997253d1605afced4eaac5c2c4b368fd90cd5e076a90bd7d1b2ae3d71
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            104002896
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            6e3eb85d5db74b2e0e0f619181fb0852c323d1b7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            8bc087d904973133186e58471845c5df376bbfdcfcf079fda287e1cda27c8adf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            141589248
</span>         }
         ""
         "port:assimp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -261,9 +278,9 @@ array set modules {
</span>     }
     qtimageformats {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            a95630b7d6b920d22a3726b8607690359a724e83
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            0aff58062e74b84617c5da8325d8cdad5368d8f4d2a11ceafcd58329fe99b798
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1962440
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            e6f8cd5ea11686ca70a0d07c14216ba6f9f63e85 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            e1a1d8785fae67d16ad0a443b01d5f32663a6b68d275f1806ebab257485ce5d6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1974768
</span>         }
         ""
         "path:lib/pkgconfig/jasper.pc:jasper port:libmng port:tiff port:webp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -276,9 +293,9 @@ array set modules {
</span>     }
     qtserialbus {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            0f962f4b8152df25f8d66eb24b4c41c7bb7f8c10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            b6446a7516d1f04e561c00f9c50ce4d39dad72150f067722ba759f00b4b34366
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            381036
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            b70f91b4de2c3f1e98952b3f0c486e21ffb9882f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            67641ca99b455746d7d956c516dfaa5f2c48696834c71d5720d63e736d374b2b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            547596
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -291,9 +308,9 @@ array set modules {
</span>     }
     qtserialport {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            9dcb75b488458cc4a07999ce5768839e00018300
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            5f97ad9067efa39a8a2a39fbbc1e03d2191f305733d9c2f3060f8017ecfc95de
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            319400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            fac4def632d16259b58a103efd1c5a887aead699 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            21c34cd1161cb5197bcec662d26a17647b59b6fdff5c364576883c42dbd3b4fc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            271320
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -306,9 +323,9 @@ array set modules {
</span>     }
     qtwebsockets {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            7ac6871f10d33b08abd745d5c0cebaac45a745bd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            de27357eb55c5e83ae560371d7f76b36b5b2ba85caf8965c527f1d5d4b8d458f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            267624
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            f2920d67388ddea44d071891326df9bf1b427ad3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            5bde4af6ec9ce8c8632b782ab77b82d910721be2c714e6d38902521bcd1d215f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            459636
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -321,9 +338,9 @@ array set modules {
</span>     }
     qtwebchannel {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            5cc690a6fa4e1449b2e496a868522a922023bb5f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            e955044587f0e74a64c88bbbe4d6be9fd869ac89d66a96cce4752756bcbef3a8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            213316
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            5dfe524cd7d0128e26cc9f3f0235230457e75735 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ac5d96607b10e7de546eaf93bb9f65c0fd631ef9b91ef8a794e26fd57db4501c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            206584
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -336,11 +353,11 @@ array set modules {
</span>     }
     qtwebengine {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            80e059ab1380234fa324888d9b1c3c4009c908c8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            55f85af736a1dc79a41b8d95014ba27d8fce0be44293a69e64fece7fa12b2925
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            440562844
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            7edc767b416d42e1aed55ab3d3ff7ea645666462 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            c7755875594d8be382b07bf3634d44fd77012805794d8b588891709a6405ffd1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            550888844
</span>         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "path:bin/node:nodejs20 port:python${python_version} port:py${python_version}-html5lib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "path:bin/node:nodejs20 port:python${python_version} port:py${python_version}-html5lib port:py${python_version}-ply"
</span>         "port:re2 path:lib/pkgconfig/icu-uc.pc:icu port:webp \
             port:libopus path:lib/libavcodec.dylib:ffmpeg path:lib/pkgconfig/vpx.pc:libvpx \
             port:snappy path:lib/pkgconfig/glib-2.0.pc:glib2 port:zlib port:minizip port:libevent \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -355,9 +372,9 @@ array set modules {
</span>     }
     qtwebview {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            7d53b1a1189db57431daf83e21d6a33eca0945f7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            51951770495e142d8952827b4e1d28565d2cb00fce652dae6eddd9425cf3e843
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            139820
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            f5837d43e30530c5567be3b53da053783115b4e1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4ce1096903d4fec39bfcd95d4015acbf105eddf66a384303cb0fe899dd24e4fe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            138764
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -370,9 +387,9 @@ array set modules {
</span>     }
     qtcharts {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            991ea524f2d8b66ce5bee6570cb186c573d963a7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            4a61e4f5ffb55df69fc58f88255aabca44fb51935b180c03ab81e098d437c346
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            4386856
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            56238c19fd7fab4b10b719a287bab3b6366a9645 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            00f6a437458b7f2c4e81d748dbe2a077567a9e6ad8d8e3820b36c39dc5279bda \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4661448
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -385,9 +402,9 @@ array set modules {
</span>     }
     qtdatavis3d {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            2f8650abed7a1c7bd984275856c5fd6ea85b137a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            c978ac5db663560b8071ddf62e7d7e82e0c01d109d9292171f5589ce5e787995
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            5216376
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ea81be1551363d00245c1e75d1685ee78f075872 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            c0ebc87d95deb595106fc68ed7e6de05149a18917d68cff40905c57fc6694e53 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            3947856
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -400,9 +417,9 @@ array set modules {
</span>     }
     qtvirtualkeyboard {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            53c7929d232eeee86ba89d28381e80401c2022b1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            3f4685226f5b00e65c8b304a47dd96c7d9b843649fba6e75421d055825de0ee5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            3723096
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            0e065e42c34bc33cd24be199ba1aa4b44762601b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            320664b55a0960ff79c1b822dcf6e8cebe3e08b791147d41b570996d81ce180f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            3722296
</span>         }
         ""
         "port:hunspell"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -415,9 +432,9 @@ array set modules {
</span>     }
     qtscxml {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            25d44a78d1eb9e3efa4492823d3c126e85b51c1f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            fe722c016d434c02e713e3c7d5d4a845998efe69d8b645923e83f1f4f7b72f3a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1783744
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            9b7b4f59991fd9f3a12ef4275a573ffc31c7476a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            20ecf93506d48f27b492ad3dd9d88830e08d642faec3071ce53396a8ae05c86f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1168452
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -430,9 +447,9 @@ array set modules {
</span>     }
     qtspeech {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            365368ee5fe0e50a8fe374d39a8a6323dbfbb995
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            79e0d0195e0a061d384a46eef96ca604e3814043d1a9903f63b3cfc985254ae2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            219444
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            bf057d7c5e9df6b7a1eb8a40d510a996cdf5e293 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            cc8c769404e3e49713be304a73f936890a1ef2f88d590732785f34692a4814ce \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            262360
</span>         }
         ""
         "port:flite"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -445,9 +462,9 @@ array set modules {
</span>     }
     qtnetworkauth {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            88985827d6cab812578506e59cb085717f80d79a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            4d115ba572f4b8c8fbb64f4c26a40723556d252bd337a643f2266f19c7716ae5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            145000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            bbda190e9cf285ab7545f2eba68df8621a9370e2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            7f09824fcfe589eb32260c305ff9a126fe3bf93be218d372e8e9c10e212df470 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            146892
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -460,9 +477,9 @@ array set modules {
</span>     }
     qtremoteobjects {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            abb63a30db6d355274412817c565305d852ff567
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            9c9447df79cba249191d8628b6a6910658a7882d14114977f5d69c69440c186a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            366136
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            9574d4e4957cee808db8fdbae2a7a6bc3648f49a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            0b906b81aa7d6f4e47d4a298da67894433f3096a06f4c4237788c1b2cb9b7483 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            537040
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -475,9 +492,9 @@ array set modules {
</span>     }
     qtlottie {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            b2a3b0a303a549388c838720fb93bc4c356ece4f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ff6c52e04566ecadee351eb3b803237bf07d417e4bb27d2122a5879618f1693d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            91844
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            9963ba8fa95b238d3aac6b65da42db2de4eddf67 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            d9afbc9358d352a4e521d4693d5bdad6a004272b6e8a9ec7a9f851700fe3f10e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            83636
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -490,9 +507,9 @@ array set modules {
</span>     }
     qtquicktimeline {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            387c316629a5c555f1e3719959a70619d6f8e5c6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            3808c447c3a3af98c797f12f38d3c371c628c35d34123ce7a7e1f580e55e3da5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            113348
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            0ef60aa29e115d595ec5c0ad1ea7c659a33b6659 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            21eddea01cf095cede10362eea4fb8402ffd06868c88d50a757c8c1f6b0719eb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            110200
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -505,9 +522,9 @@ array set modules {
</span>     }
     qtquick3d {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            17030605c5065bd1a481f8495f11f50599a47cb4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            78a38d565d449b939ffd1b30cacd5ba3e1b97c7a8c0a02fefc810ed5d4dc8050
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            44048520
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            df0f539fc7f8f8bd0586fc965ae23fe6556382fa \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            bb8ff9aec6da2e2d3b3986cc859333a98b2f3d4bbe564c5733e8f1a089d15270 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            66202160
</span>         }
         ""
         "port:assimp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -520,9 +537,9 @@ array set modules {
</span>     }
     qtshadertools {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            488113b3273e2ec486abba0a5495a5916ff80575
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            c648b74ce3e769a20bd62792a589c540bceacfedf2f38fc7273d2c39782768f8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            1001780
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            34cc71dcd91b5ab0a05215e8aec928185b159c8f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            edfa34c0ac8c00fcaa949df1d8e7a77d89dadd6386e683ce6c3e3b117e2f7cc1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            1111256
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -535,9 +552,9 @@ array set modules {
</span>     }
     qt5compat {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            53ae2a93d8568314c696776311650901e563b3c6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            d4b249abb823d575eee9045c24d924ba8d1276e6be7735b287689991d998aa7a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            14638428
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            d84116782d286c12ad10abae6d195c7ac0a96708 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            8826b5189efc4d9bdb64fdb1aa89d0fdf4e53c60948ed7995621ed046e38c003 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            14632348
</span>         }
         ""
         "path:lib/pkgconfig/icu-uc.pc:icu port:libiconv"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -545,14 +562,14 @@ array set modules {
</span>         {"Qt 5 Core Compatibility APIs"}
         "status = deprecated"
         "variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "revision 2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span>         "License: "
     }
     qtlanguageserver {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            f03552565c952d8c97fc77760966e4b9d6059ef7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            0e881006442e19c7c4a6d229c342cc685142568e2b41f843e73cddf4c3d37975
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            153856
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            924f60b0fd6e1cc8a5f6cb2d11f094dd34979e61 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            b659fe655144ffa061e3ae509eadb42ae373230517295a96935434340e101a92 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            145660
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -565,9 +582,9 @@ array set modules {
</span>     }
     qthttpserver {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            1fbd0194e5be04caa30d2c04cec81e719eda0c58
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            c37adcadc779b972ceecd739717c4cc3b90487c3387c61eaf2aa94daaf30c179
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            121772
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            b248b0f951756bf784ab820bdc07821348205455 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            0353b9b4f98a83fec8f15046d4ff9d6ef7c874dcbb3664092fe2508f40778b86 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            163640
</span>         }
         ""
         ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -580,15 +597,45 @@ array set modules {
</span>     }
     qtquick3dphysics {
         {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            312ff38521a1ce290aaa0c1f9bc44799ea2ecd4e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ab86e8a3c44c31082022259375e7984f9955f81e9de2c846cef563c7562ddb15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            2965840
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            f6255e24e607d1979b9de5e09d23fae92e4733a0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ffc790b8b44ebc03acc1f2d085dad0cc49fffde1eea941a6ff11d3eb0b6e4140 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4703956
</span>         }
         ""
         ""
         "qtbase qtdeclarative qtquick3d qtshadertools"
         {"Qt Quick 3D Physics"}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "status = preview; GPLv3 license only"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "GPLv3 license only"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "variant overrides: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "License: {GPL-3 OpenSSLException}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    qtquickeffectmaker {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            5e531ba2ff923a2205399e37976218de03635165 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            3b0f26ce07c82c29f28d19b537b31c297799406428fbf0d31911464e717b756d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4358544
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "qtbase qtdeclarative qtquick3d qtshadertools"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {"Qt Quick Effects"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "variant overrides: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    qtgraphs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            8502878c5e6fb303f3947282e936093b7447ca04 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            d8813a266e4a56367af6c3206670c908f64794e6806402142b2e028046128600 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            4395960
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "qtbase qtdeclarative qtquick3d"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {"Qt Graphs"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "status = preview"
</span>         "variant overrides: "
         "revision 0"
         "License: {GPL-3 OpenSSLException}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -943,10 +990,6 @@ foreach {driver driver_info} [array get sql_plugins] {
</span> ###############################################################################
 # Special Cases
 ###############################################################################
<span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${name}-qtdeclarative {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtdeclarative-xcode11.3.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> subport ${name}-qttools {
     configure.env-append            LLVM_INSTALL_DIR=${prefix}/libexec/llvm-${llvm_version}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -980,81 +1023,33 @@ if { ${subport} in [list "${name}-qtwebengine" "${name}-qtwebengine-docs"] } {
</span> subport ${name}-qtwebengine {
     # manually install icudtl.dat
     post-destroot {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        xinstall -m 644 ${worksrcpath}/src/3rdparty/chromium/third_party/icu/common/icudtl.dat \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        ${destroot}${qt6.dir}/lib/QtWebEngineCore.framework/Resources/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 0644 ${worksrcpath}/src/3rdparty/chromium/third_party/icu/common/icudtl.dat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                         ${destroot}${qt6.dir}/lib/QtWebEngineCore.framework/Resources/
</span>     }
 }
 
 subport ${name}-qtmultimedia {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtmultimedia-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     # GStreamer will be found if gstreamer1 and gstreamer1-gst-plugins-base are installed
     # however, an error will ensue since the GStreamer support requires "Linux DMA buffer support"
     # see
     #     https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/multimedia/gstreamer/CMakeLists.txt
     #     https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/multimedia/configure.cmake
     configure.args-append           -no-gstreamer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # std::unary_function removed in Xcode clang 15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append patch-qtmultimedia_no_std_unary_function.diff
</span> }
 
 subport ${name}-qt5compat {
     patchfiles-append               patch-qt5compat-find_libs.diff
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${name}-qtsvg {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               CVE-2023-32573-qtsvg.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> subport ${name}-qtspeech {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtspeech-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     # ALSA is Linux only (https://www.alsa-project.org/wiki/Main_Page)
     # Speech Dispatcher *might* be made to work on macOS (https://freebsoft.org/speechd)
     configure.args-append           -no-flite-alsa \
                                     -no-speechd
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${name}-qtpositioning {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtpositioning-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if { ${subport} eq "${name}-qtbase" || ${subport} eq "${name}-qtbase-docs" } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append {*}{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2023-32762-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2023-32763-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2023-33285-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2023-37369-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2023-38197-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2023-51714-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    CVE-2024-25580-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # allow building with macOS 10.14 SDK
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/ticket/64345
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtbase-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # error: no matching function for call to '_mm256_maskz_cvtps_ph'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # note: candidate function not viable: requires 2 arguments, but 3 were provided
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/ticket/67802
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtbase-intel_intrinsics.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/ticket/68204
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               qtbase-qmake-xcode-15.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/ticket/67980
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtbase-memory_resource.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Fixes deploying application libraries with .so extension.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # glib gio modules, this also applies to gstreamer since macports
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # currently uses an older version of gstreamer which uses .so
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # extensions for plugins.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://codereview.qt-project.org/c/qt/qtbase/+/507393
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtbase-macdeployqt.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # see https://trac.macports.org/ticket/68713
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append               patch-qtbase-fix-cmake-3.28.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append               CVE-2024-39936-qtbase-6.7.diff
</span> 
     configure.pre_args-replace      --prefix=${prefix} \
                                     "-prefix ${qt6.dir}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1073,8 +1068,7 @@ if { ${subport} eq "${name}-qtbase" || ${subport} eq "${name}-qtbase-docs" } {
</span>     # use -Oz instead of -O2
     configure.args-append           -optimize-size
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append           -no-testcocoon \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    -pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append           -pkg-config
</span> 
     # Third Party Libraries:
     configure.args-append           -system-zlib \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1187,7 +1181,7 @@ subport ${name}-qtbase {
</span>         reinplace                   "s|${prefix}/bin/cmake|/Applications/CMake.app/Contents/bin/cmake|g" \
                                     ${destroot}${qt6.dir}/bin/qt-cmake
         reinplace                   "s|${prefix}/bin/cmake|/Applications/CMake.app/Contents/bin/cmake|g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    ${destroot}${qt6.dir}/bin/qt-cmake-private
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                    ${destroot}${qt6.dir}/bin/qt-cmake-create
</span> 
         if { "${qt6.dir}" ne "${prefix}" } {
             # Add dummy cmake find modules that forward to the real ones
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-32573-qtsvg.diff b/aqua/qt6/files/CVE-2023-32573-qtsvg.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4e9fe95bd4f..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-32573-qtsvg.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,37 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/svg/qsvgfont_p.h    |    5 ++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/svg/qsvghandler.cpp |    2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 3 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/svg/qsvgfont_p.h.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/svg/qsvgfont_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -38,6 +38,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Q_SVG_PRIVATE_EXPORT QSvgFont : public QSvgRefCounted
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    static constexpr qreal DEFAULT_UNITS_PER_EM = 1000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QSvgFont(qreal horizAdvX);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     void setFamilyName(const QString &name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -50,9 +51,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     void draw(QPainter *p, const QPointF &point, const QString &str, qreal pixelSize, Qt::Alignment alignment) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QString m_familyName;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    qreal m_unitsPerEm;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    qreal m_ascent;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    qreal m_descent;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    qreal m_unitsPerEm = DEFAULT_UNITS_PER_EM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qreal m_horizAdvX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QHash<QChar, QSvgGlyph> m_glyphs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/svg/qsvghandler.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/svg/qsvghandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2622,7 +2622,7 @@ static bool parseFontFaceNode(QSvgStyleP
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qreal unitsPerEm = toDouble(unitsPerEmStr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (!unitsPerEm)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        unitsPerEm = 1000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        unitsPerEm = QSvgFont::DEFAULT_UNITS_PER_EM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (!name.isEmpty())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         font->setFamilyName(name);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-32762-qtbase.diff b/aqua/qt6/files/CVE-2023-32762-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2d707fdb5c1..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-32762-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,13 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/qhsts.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/qhsts.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -364,8 +364,8 @@ quoted-pair    = "\" CHAR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool QHstsHeaderParser::parse(const QList<QPair<QByteArray, QByteArray>> &headers)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     for (const auto &h : headers) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        // We use '==' since header name was already 'trimmed' for us:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (h.first == "Strict-Transport-Security") {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        // We compare directly because header name was already 'trimmed' for us:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (h.first.compare("Strict-Transport-Security", Qt::CaseInsensitive) == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             header = h.second;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             // RFC6797, 8.1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             //
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-32763-qtbase.diff b/aqua/qt6/files/CVE-2023-32763-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 858292eab21..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-32763-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,55 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/painting/qfixed_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/painting/qfixed_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -18,6 +18,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QtGui/private/qtguiglobal_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qdebug.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qpoint.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "QtCore/qnumeric.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qsize.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QT_BEGIN_NAMESPACE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -136,6 +137,22 @@ constexpr inline QFixed operator+(uint i, QFixed d) { return d+i; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr inline QFixed operator-(uint i, QFixed d) { return -(d-i); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // constexpr inline QFixed operator*(qreal d, QFixed d2) { return d2*d; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline bool qAddOverflow(QFixed v1, QFixed v2, QFixed *r)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool result = qAddOverflow(v1.value(), v2.value(), &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    r->setValue(val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline bool qMulOverflow(QFixed v1, QFixed v2, QFixed *r)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool result = qMulOverflow(v1.value(), v2.value(), &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    r->setValue(val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef QT_NO_DEBUG_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline QDebug &operator<<(QDebug &dbg, QFixed f)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { return dbg << f.toReal(); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/text/qtextlayout.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/text/qtextlayout.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2105,11 +2105,14 @@ found:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         eng->maxWidth = qMax(eng->maxWidth, line.textWidth);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         eng->minWidth = qMax(eng->minWidth, lbh.minw);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        eng->maxWidth += line.textWidth;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (qAddOverflow(eng->maxWidth, line.textWidth, &eng->maxWidth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            eng->maxWidth = QFIXED_MAX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (line.textWidth > 0 && item < eng->layoutData->items.size())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        eng->maxWidth += lbh.spaceData.textWidth;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (line.textWidth > 0 && item < eng->layoutData->items.size()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (qAddOverflow(eng->maxWidth, lbh.spaceData.textWidth, &eng->maxWidth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            eng->maxWidth = QFIXED_MAX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     line.textWidth += trailingSpace;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (lbh.spaceData.length) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-33285-qtbase.diff b/aqua/qt6/files/CVE-2023-33285-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2ff50916667..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-33285-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,70 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://codereview.qt-project.org/c/qt/qtbase/+/477644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/kernel/qdnslookup_unix.cpp.orig    2023-04-24 08:43:14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/kernel/qdnslookup_unix.cpp 2023-06-07 08:58:04
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -227,7 +227,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // responseLength in case of error, we still can extract the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // exact error code from the response.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     HEADER *header = (HEADER*)response;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const int answerCount = ntohs(header->ancount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     switch (header->rcode) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case NOERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -260,18 +259,31 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     char host[PACKETSZ], answer[PACKETSZ];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     unsigned char *p = response + sizeof(HEADER);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    int status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (status < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (ntohs(header->qdcount) == 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (status < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            reply->error = QDnsLookup::InvalidReplyError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            reply->errorString = tr("Could not expand domain name");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if ((p - response) + status + 4 >= responseLength)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            header->qdcount = 0xffff;   // invalid reply below
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            p += status + 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (ntohs(header->qdcount) > 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         reply->error = QDnsLookup::InvalidReplyError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        reply->errorString = tr("Could not expand domain name");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        reply->errorString = tr("Invalid reply received");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    p += status + 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // Extract results.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const int answerCount = ntohs(header->ancount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     int answerIndex = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     while ((p < response + responseLength) && (answerIndex < answerCount)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -283,6 +296,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         const QString name = QUrl::fromAce(host);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         p += status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if ((p - response) + 10 > responseLength) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            // probably just a truncated reply, return what we have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         const quint16 type = (p[0] << 8) | p[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         p += 2; // RR type
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         p += 2; // RR class
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -290,6 +308,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         p += 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         const quint16 size = (p[0] << 8) | p[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         p += 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if ((p - response) + size > responseLength)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return;             // truncated
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (type == QDnsLookup::A) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (size != 4) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-37369-qtbase.diff b/aqua/qt6/files/CVE-2023-37369-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 743785f0cf9..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-37369-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,189 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 72c33584a98..598b9f0428f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1245,7 +1245,9 @@ inline qsizetype QXmlStreamReaderPrivate::fastScanContentCharList()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--inline qsizetype QXmlStreamReaderPrivate::fastScanName(qint16 *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Fast scan an XML attribute name (e.g. "xml:lang").
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline QXmlStreamReaderPrivate::FastScanNameResult
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+QXmlStreamReaderPrivate::fastScanName(Value *val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qsizetype n = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     uint c;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1253,7 +1255,8 @@ inline qsizetype QXmlStreamReaderPrivate::fastScanName(Value *val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (n >= 4096) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             // This is too long to be a sensible name, and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             // can exhaust memory, or the range of decltype(*prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return {};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         switch (c) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case '\n':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1282,23 +1285,23 @@ inline qsizetype QXmlStreamReaderPrivate::fastScanName(qint16 *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case '+':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case '*':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            if (prefix && *prefix == n+1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                *prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (val && val->prefix == n + 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                val->prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 putChar(':');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 --n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case ':':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            if (prefix) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                if (*prefix == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                    *prefix = qint16(n + 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (val) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                if (val->prefix == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    val->prefix = n + 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 } else { // only one colon allowed according to the namespace spec.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                    return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             Q_FALLTHROUGH();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1307,12 +1310,12 @@ inline int QXmlStreamReaderPrivate::fastScanName(int *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        *prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        val->prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qsizetype pos = textBuffer.size() - n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     putString(textBuffer, pos);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     textBuffer.resize(pos);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return FastScanNameResult(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- enum NameChar { NameBeginning, NameNotBeginning, NotName };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1793,6 +1796,14 @@ void QXmlStreamReaderPrivate::raiseWellFormedError(const QString &message)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     raiseError(QXmlStreamReader::NotWellFormedError, message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+void QXmlStreamReaderPrivate::raiseNamePrefixTooLongError()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // TODO: add a ImplementationLimitsExceededError and use it instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    raiseError(QXmlStreamReader::NotWellFormedError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+               QXmlStream::tr("Length of XML attribute name exceeds implemnetation limits (4KiB "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                              "characters)."));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void QXmlStreamReaderPrivate::parseError()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 81ca36688cd..1b5a682b36a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1419,7 +1419,12 @@ space_opt ::= space;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qname ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case $rule_number: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            sym(1).len += fastScanName(&sym(1).prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            Value &val = sym(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (auto res = fastScanName(&val))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                val.len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 resume($rule_number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1430,7 +1435,11 @@ qname ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- name ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case $rule_number:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            sym(1).len += fastScanName();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (auto res = fastScanName())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                sym(1).len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 resume($rule_number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 8f64130d2f9..a277753f188 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -38,7 +38,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     constexpr XmlStringRef() = default;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     constexpr inline XmlStringRef(const QString *string, qsizetype pos, qsizetype length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        : m_string(string), m_pos(pos), m_size(length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        : m_string(string), m_pos(pos), m_size((Q_ASSERT(length >= 0), length))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     XmlStringRef(const QString *string)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -471,7 +471,16 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qsizetype fastScanLiteralContent();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qsizetype fastScanSpace();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     qsizetype fastScanContentCharList();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    qsizetype fastScanName(qint16 *prefix = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    struct FastScanNameResult {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        FastScanNameResult() : ok(false) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        explicit FastScanNameResult(qsizetype len) : addToLen(len), ok(true) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        operator bool() { return ok; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qsizetype operator*() { Q_ASSERT(ok); return addToLen; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qsizetype addToLen;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        bool ok;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    FastScanNameResult fastScanName(Value *val = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     inline qsizetype fastScanNMTOKEN();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -480,6 +489,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     void raiseError(QXmlStreamReader::Error error, const QString& message = QString());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     void raiseWellFormedError(const QString &message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    void raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QXmlStreamEntityResolver *entityResolver;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstreamparser_p.h b/src/corelib/serialization/qxmlstreamparser_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 17558aae641..d67d71ca01d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstreamparser_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstreamparser_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -947,7 +947,12 @@ bool QXmlStreamReaderPrivate::parse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case 262: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            sym(1).len += fastScanName(&sym(1).prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            Value &val = sym(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (auto res = fastScanName(&val))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                val.len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 resume(262);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -955,7 +960,11 @@ bool QXmlStreamReaderPrivate::parse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         } break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         case 263:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            sym(1).len += fastScanName();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (auto res = fastScanName())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                sym(1).len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 resume(263);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 return false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-38197-qtbase.diff b/aqua/qt6/files/CVE-2023-38197-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4474d87e4c8..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-38197-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,217 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 598b9f0..885354f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -126,7 +126,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     addData() or by waiting for it to arrive on the device().
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     \value UnexpectedElementError The parser encountered an element
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    that was different to those it expected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    or token that was different to those it expected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -263,13 +263,34 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   QXmlStreamReader is a well-formed XML 1.0 parser that does \e not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   include external parsed entities. As long as no error occurs, the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  application code can thus be assured that the data provided by the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  stream reader satisfies the W3C's criteria for well-formed XML. For
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  example, you can be certain that all tags are indeed nested and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  closed properly, that references to internal entities have been
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  replaced with the correct replacement text, and that attributes have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  been normalized or added according to the internal subset of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  DTD.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  application code can thus be assured, that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \list
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li the data provided by the stream reader satisfies the W3C's
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      criteria for well-formed XML,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li tokens are provided in a valid order.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \endlist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  Unless QXmlStreamReader raises an error, it guarantees the following:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \list
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li All tags are nested and closed properly.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li References to internal entities have been replaced with the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      correct replacement text.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li Attributes have been normalized or added according to the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      internal subset of the \l DTD.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li Tokens of type \l StartDocument happen before all others,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      aside from comments and processing instructions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li At most one DOCTYPE element (a token of type \l DTD) is present.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \li If present, the DOCTYPE appears before all other elements,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      aside from StartDocument, comments and processing instructions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \endlist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  In particular, once any token of type \l StartElement, \l EndElement,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \l Characters, \l EntityReference or \l EndDocument is seen, no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  tokens of type StartDocument or DTD will be seen. If one is present in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  the input stream, out of order, an error is raised.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  \note The token types \l Comment and \l ProcessingInstruction may appear
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  anywhere in the stream.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   If an error occurs while parsing, atEnd() and hasError() return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   true, and error() returns the error that occurred. The functions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -572,6 +593,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         d->token = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return readNext();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    d->checkToken();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return d->type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -691,6 +713,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     0, 8, 16, 30, 42, 55, 66, 77, 85, 89, 105, 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const char QXmlStreamReader_XmlContextString[] =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "Prolog\0"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    "Body\0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const short QXmlStreamReader_XmlContextString_indices[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    0, 7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     \property  QXmlStreamReader::namespaceProcessing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -727,6 +756,16 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                              QXmlStreamReader_tokenTypeString_indices[d->type]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \return \param ctxt (Prolog/Body) as a string.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+QString contextString(QXmlStreamReaderPrivate::XmlContext ctxt)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return QLatin1String(QXmlStreamReader_XmlContextString +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         QXmlStreamReader_XmlContextString_indices[static_cast<int>(ctxt)]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif // QT_NO_XMLSTREAMREADER
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamPrivateTagStack::QXmlStreamPrivateTagStack()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -813,6 +852,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     type = QXmlStreamReader::NoToken;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     error = QXmlStreamReader::NoError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    currentContext = XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    foundDTD = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3730,6 +3771,91 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static constexpr bool isTokenAllowedInContext(QXmlStreamReader::TokenType type,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                               QXmlStreamReaderPrivate::XmlContext loc)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    switch (type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::StartDocument:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::DTD:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return loc == QXmlStreamReaderPrivate::XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::StartElement:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::EndElement:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::Characters:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::EntityReference:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::EndDocument:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return loc == QXmlStreamReaderPrivate::XmlContext::Body;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::Comment:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::ProcessingInstruction:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::NoToken:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QXmlStreamReader::Invalid:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \brief QXmlStreamReader::isValidToken
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \return \c true if \param type is a valid token type.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \return \c false if \param type is an unexpected token,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   which indicates a non-well-formed or invalid XML stream.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+bool QXmlStreamReaderPrivate::isValidToken(QXmlStreamReader::TokenType type)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // Don't change currentContext, if Invalid or NoToken occur in the prolog
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (type == QXmlStreamReader::Invalid || type == QXmlStreamReader::NoToken)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // If a token type gets rejected in the body, there is no recovery
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const bool result = isTokenAllowedInContext(type, currentContext);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (result || currentContext == XmlContext::Body)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // First non-Prolog token observed => switch context to body and check again.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    currentContext = XmlContext::Body;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return isTokenAllowedInContext(type, currentContext);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   Checks token type and raises an error, if it is invalid
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   in the current context (prolog/body).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+void QXmlStreamReaderPrivate::checkToken()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    Q_Q(QXmlStreamReader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // The token type must be consumed, to keep track if the body has been reached.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const XmlContext context = currentContext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const bool ok = isValidToken(type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // Do nothing if an error has been raised already (going along with an unexpected token)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (error != QXmlStreamReader::Error::NoError)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!ok) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        raiseError(QXmlStreamReader::UnexpectedElementError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   QLatin1String("Unexpected token type %1 in %2.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   .arg(q->tokenString(), contextString(context)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (type != QXmlStreamReader::DTD)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // Raise error on multiple DTD tokens
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (foundDTD) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        raiseError(QXmlStreamReader::UnexpectedElementError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                   QLatin1String("Found second DTD token in %1.").arg(contextString(context)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        foundDTD = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  \fn bool QXmlStreamAttributes::hasAttribute(const QString &qualifiedName) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  \since 4.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a277753..c33f1cd 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -270,6 +270,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QStringDecoder decoder;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     bool atEnd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    enum class XmlContext
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        Prolog,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        Body,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    XmlContext currentContext = XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool foundDTD = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool isValidToken(QXmlStreamReader::TokenType type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    void checkToken();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       \sa setType()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-      */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-51714-qtbase.diff b/aqua/qt6/files/CVE-2023-51714-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e8ae0dd1215..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-51714-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,86 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ea63c28efc1d2ecb467b83a34923d12462efa96f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 12 Dec 2023 20:51:56 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] HPack: fix a Yoda Condition
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Putting the variable on the LHS of a relational operation makes the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-expression easier to read. In this case, we find that the whole
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-expression is nonsensical as an overflow protection, because if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-name.size() + value.size() overflows, the result will exactly _not_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-be > max() - 32, because UB will have happened.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-To be fixed in a follow-up commit.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-As a drive-by, add parentheses around the RHS.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I35ce598884c37c51b74756b3bd2734b9aad63c09
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 658607a34ead214fbacbc2cca44915655c318ea9)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 4f7efd41740107f90960116700e3134f5e433867)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 13c16b756900fe524f6d9534e8a07aa003c05e0c)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 1d4788a39668fb2dc5912a8d9c4272dc40e99f92)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 87de75b5cc946d196decaa6aef4792a6cac0b6db)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 834214f..ab166a6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -27,7 +27,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // 32 octets of overhead."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     const unsigned sum = unsigned(name.size() + value.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (std::numeric_limits<unsigned>::max() - 32 < sum)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (sum > (std::numeric_limits<unsigned>::max() - 32))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return HeaderSize(true, quint32(sum + 32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 9ef4ca5ecfed771dab890856130e93ef5ceabef5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 12 Dec 2023 22:08:07 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] HPack: fix incorrect integer overflow check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This code never worked:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-For the comparison with max() - 32 to trigger, on 32-bit platforms (or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Qt 5) signed interger overflow would have had to happen in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-addition of the two sizes. The compiler can therefore remove the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-overflow check as dead code.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-On Qt 6 and 64-bit platforms, the signed integer addition would be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-very unlikely to overflow, but the following truncation to uint32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-would yield the correct result only in a narrow 32-value window just
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-below UINT_MAX, if even that.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fix by using the proper tool, qAddOverflow.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 5.15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7e4950d..897f13a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -26,7 +26,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // for counting the number of references to the name and value would have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // 32 octets of overhead."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const unsigned sum = unsigned(name.size() + value.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    size_t sum;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (qAddOverflow(size_t(name.size()), size_t(value.size()), &sum))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (sum > (std::numeric_limits<unsigned>::max() - 32))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return HeaderSize(true, quint32(sum + 32));
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2024-25580-qtbase.diff b/aqua/qt6/files/CVE-2024-25580-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 8f24c8c1fcd..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2024-25580-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,325 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/gui/util/qktxhandler.cpp b/src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 32ea08144b..f9b4c807c9 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -41,7 +41,7 @@ struct KTXHeader {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     quint32 bytesOfKeyValueData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static const quint32 headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static constexpr quint32 qktxh_headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Currently unused, declared for future reference
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct KTXKeyValuePairItem {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -71,20 +71,32 @@ struct KTXMipmapLevel {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--// Returns the nearest multiple of 'rounding' greater than or equal to 'value'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--constexpr quint32 withPadding(quint32 value, quint32 rounding)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Returns the nearest multiple of 4 greater than or equal to 'value'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const std::optional<quint32> nearestMultipleOf4(quint32 value)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    Q_ASSERT(rounding > 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return value + (rounding - 1) - ((value + (rounding - 1)) % rounding);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    constexpr quint32 rounding = 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    quint32 result = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (qAddOverflow(value, rounding - 1, &result))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    result &= ~(rounding - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Returns a view with prechecked bounds
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static QByteArrayView safeView(QByteArrayView view, quint32 start, quint32 length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    quint32 end = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (qAddOverflow(start, length, &end) || end > quint32(view.length()))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return {};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return view.sliced(start, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QKtxHandler::~QKtxHandler() = default;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Q_UNUSED(suffix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return (qstrncmp(block.constData(), ktxIdentifier, KTX_IDENTIFIER_LENGTH) == 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return block.startsWith(ktxIdentifier);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -93,55 +95,122 @@ QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     const QByteArray buf = device()->readAll();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const quint32 dataSize = quint32(buf.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (dataSize < headerSize || !canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        qCDebug(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (buf.size() > std::numeric_limits<quint32>::max()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Too big KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const KTXHeader *header = reinterpret_cast<const KTXHeader *>(buf.data());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (!checkHeader(*header)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        qCDebug(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (buf.size() < qsizetype(qktxh_headerSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Invalid KTX header size in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    KTXHeader header;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(&header, buf.data(), qktxh_headerSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!checkHeader(header)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QTextureFileData texData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     texData.setData(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    texData.setSize(QSize(decode(header->pixelWidth), decode(header->pixelHeight)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    texData.setGLFormat(decode(header->glFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    texData.setGLInternalFormat(decode(header->glInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    texData.setGLBaseInternalFormat(decode(header->glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    texData.setSize(QSize(decode(header.pixelWidth), decode(header.pixelHeight)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    texData.setGLFormat(decode(header.glFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    texData.setGLInternalFormat(decode(header.glInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    texData.setGLBaseInternalFormat(decode(header.glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    texData.setNumLevels(decode(header->numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    texData.setNumFaces(decode(header->numberOfFaces));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    texData.setNumLevels(decode(header.numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    texData.setNumFaces(decode(header.numberOfFaces));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const quint32 bytesOfKeyValueData = decode(header->bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (headerSize + bytesOfKeyValueData < quint64(buf.size())) // oob check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        texData.setKeyValueMetadata(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                decodeKeyValues(QByteArrayView(buf.data() + headerSize, bytesOfKeyValueData)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    quint32 offset = headerSize + bytesOfKeyValueData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const quint32 bytesOfKeyValueData = decode(header.bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    quint32 headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (qAddOverflow(qktxh_headerSize, bytesOfKeyValueData, &headerKeyValueSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Overflow in size of key value data in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                 logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (headerKeyValueSize >= quint32(buf.size())) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // File contains key/values
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (bytesOfKeyValueData > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        auto keyValueDataView = safeView(buf, qktxh_headerSize, bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (keyValueDataView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Invalid view in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        auto keyValues = decodeKeyValues(keyValueDataView);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (!keyValues) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Could not parse key values in KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                     logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        texData.setKeyValueMetadata(*keyValues);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // Technically, any number of levels is allowed but if the value is bigger than
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // what is possible in KTX V2 (and what makes sense) we return an error.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // maxLevels = log2(max(width, height, depth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const int maxLevels = (sizeof(quint32) * 8)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            - qCountLeadingZeroBits(std::max(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    { header.pixelWidth, header.pixelHeight, header.pixelDepth }));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (texData.numLevels() > maxLevels) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Too many levels in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    constexpr int MAX_ITERATIONS = 32; // cap iterations in case of corrupt data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (texData.numFaces() != 1 && texData.numFaces() != 6) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Invalid number of faces in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    for (int level = 0; level < qMin(texData.numLevels(), MAX_ITERATIONS); level++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (offset + sizeof(quint32) > dataSize) // Corrupt file; avoid oob read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    quint32 offset = headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    for (int level = 0; level < texData.numLevels(); level++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const auto imageSizeView = safeView(buf, offset, sizeof(quint32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (imageSizeView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const quint32 imageSize = decode(qFromUnaligned<quint32>(buf.data() + offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        offset += sizeof(quint32);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const quint32 imageSize = decode(qFromUnaligned<quint32>(imageSizeView.data()));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        offset += sizeof(quint32); // overflow checked indirectly above
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        for (int face = 0; face < qMin(texData.numFaces(), MAX_ITERATIONS); face++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        for (int face = 0; face < texData.numFaces(); face++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             texData.setDataOffset(offset, level, face);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             texData.setDataLength(imageSize, level, face);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             // Add image data and padding to offset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            offset += withPadding(imageSize, 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            const auto padded = nearestMultipleOf4(imageSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (!padded) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                qWarning(lcQtGuiTextureIO, "Overflow in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            quint32 offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            if (qAddOverflow(offset, *padded, &offsetNext)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            offset = offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (!texData.isValid()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        qCDebug(lcQtGuiTextureIO, "Invalid values in header of KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning(lcQtGuiTextureIO, "Invalid values in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                 logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -187,33 +220,83 @@ bool QKtxHandler::checkHeader(const KTXHeader &header)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return is2D && (isCubeMap || isCompressedImage);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--QMap<QByteArray, QByteArray> QKtxHandler::decodeKeyValues(QByteArrayView view) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+std::optional<QMap<QByteArray, QByteArray>> QKtxHandler::decodeKeyValues(QByteArrayView view) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QMap<QByteArray, QByteArray> output;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     quint32 offset = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    while (offset < view.size() + sizeof(quint32)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    while (offset < quint32(view.size())) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const auto keyAndValueByteSizeView = safeView(view, offset, sizeof(quint32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (keyAndValueByteSizeView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Invalid view in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         const quint32 keyAndValueByteSize =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                decode(qFromUnaligned<quint32>(view.constData() + offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                decode(qFromUnaligned<quint32>(keyAndValueByteSizeView.data()));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        offset += sizeof(quint32);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (offset + keyAndValueByteSize > quint64(view.size()))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            break; // oob read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        quint32 offsetKeyAndValueStart;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (qAddOverflow(offset, quint32(sizeof(quint32)), &offsetKeyAndValueStart)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        quint32 offsetKeyAndValueEnd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (qAddOverflow(offsetKeyAndValueStart, keyAndValueByteSize, &offsetKeyAndValueEnd)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const auto keyValueView = safeView(view, offsetKeyAndValueStart, keyAndValueByteSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (keyValueView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Invalid view in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         // 'key' is a UTF-8 string ending with a null terminator, 'value' is the rest.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         // To separate the key and value we convert the complete data to utf-8 and find the first
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         // null terminator from the left, here we split the data into two.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const auto str = QString::fromUtf8(view.constData() + offset, keyAndValueByteSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const int idx = str.indexOf('\0'_L1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (idx == -1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const QByteArray key = str.left(idx).toUtf8();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const size_t keySize = key.size() + 1; // Actual data size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const QByteArray value = QByteArray::fromRawData(view.constData() + offset + keySize,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                                                         keyAndValueByteSize - keySize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        offset = withPadding(offset + keyAndValueByteSize, 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        output.insert(key, value);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const int idx = keyValueView.indexOf('\0');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (idx == -1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Invalid key in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const QByteArrayView keyView = safeView(view, offsetKeyAndValueStart, idx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (keyView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const quint32 keySize = idx + 1; // Actual data size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        quint32 offsetValueStart;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (qAddOverflow(offsetKeyAndValueStart, keySize, &offsetValueStart)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        quint32 valueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (qSubOverflow(keyAndValueByteSize, keySize, &valueSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Underflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const QByteArrayView valueView = safeView(view, offsetValueStart, valueSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (valueView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Invalid view in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        output.insert(keyView.toByteArray(), valueView.toByteArray());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const auto offsetNext = nearestMultipleOf4(offsetKeyAndValueEnd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (!offsetNext) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        offset = *offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return output;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/gui/util/qktxhandler_p.h b/src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 77ce1ca556..9cf6f65586 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -17,6 +17,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "qtexturefilehandler_p.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <optional>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QT_BEGIN_NAMESPACE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct KTXHeader;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,7 +35,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     bool checkHeader(const KTXHeader &header);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    QMap<QByteArray, QByteArray> decodeKeyValues(QByteArrayView view) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    std::optional<QMap<QByteArray, QByteArray>> decodeKeyValues(QByteArrayView view) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     quint32 decode(quint32 val) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     bool inverseEndian = false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff b/aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7dd7e82c332
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,138 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0abd99b9bc2..3631b13dc85 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/access/qhttp2protocolhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/access/qhttp2protocolhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -303,12 +303,12 @@ bool QHttp2ProtocolHandler::sendRequest()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (!prefaceSent && !sendClientPreface())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!requests.size())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!prefaceSent && !sendClientPreface())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     m_channel->state = QHttpNetworkConnectionChannel::WritingState;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // Check what was promised/pushed, maybe we do not have to send a request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // and have a response already?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6766989690c..1e4161d1fdf 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/access/qhttpnetworkconnectionchannel.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/access/qhttpnetworkconnectionchannel.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -209,6 +209,10 @@ void QHttpNetworkConnectionChannel::abort()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool QHttpNetworkConnectionChannel::sendRequest()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (waitingForPotentialAbort) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        needInvokeSendRequest = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return false; // this return value is unused
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return protocolHandler->sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -221,21 +225,28 @@ bool QHttpNetworkConnectionChannel::sendRequest()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::sendRequestDelayed()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QMetaObject::invokeMethod(this, [this] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (reply)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            protocolHandler->sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }, Qt::ConnectionType::QueuedConnection);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::_q_receiveReply()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (waitingForPotentialAbort) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        needInvokeReceiveReply = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     protocolHandler->_q_receiveReply();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::_q_readyRead()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (waitingForPotentialAbort) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        needInvokeReadyRead = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     protocolHandler->_q_readyRead();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1239,7 +1250,18 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (!h2RequestsToSend.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Similar to HTTP/1.1 counterpart below:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             const auto &pair = std::as_const(h2RequestsToSend).first();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            waitingForPotentialAbort = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             emit pair.second->encrypted();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // We don't send or handle any received data until any effects from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // emitting encrypted() have been processed. This is necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // because the user may have called abort(). We may also abort the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // whole connection if the request has been aborted and there is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // no more requests to send.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            QMetaObject::invokeMethod(this,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                      &QHttpNetworkConnectionChannel::checkAndResumeCommunication,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                      Qt::QueuedConnection);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // In case our peer has sent us its settings (window size, max concurrent streams etc.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1257,6 +1279,28 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void QHttpNetworkConnectionChannel::checkAndResumeCommunication()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Q_ASSERT(connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             || connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Because HTTP/2 requires that we send a SETTINGS frame as the first thing we do, and respond
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // to a SETTINGS frame with an ACK, we need to delay any handling until we can ensure that any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // effects from emitting encrypted() have been processed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // This function is called after encrypted() was emitted, so check for changes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!reply && h2RequestsToSend.isEmpty())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        abort();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    waitingForPotentialAbort = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (needInvokeReadyRead)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        _q_readyRead();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (needInvokeReceiveReply)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        _q_receiveReply();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (needInvokeSendRequest)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::requeueHttp2Requests()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const auto h2RequestsToSendCopy = std::exchange(h2RequestsToSend, {});
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c42290feca4..061f20fd426 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/access/qhttpnetworkconnectionchannel_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/access/qhttpnetworkconnectionchannel_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,6 +74,10 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QAbstractSocket *socket;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool ssl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool isInitialized;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool waitingForPotentialAbort = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool needInvokeReceiveReply = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool needInvokeReadyRead = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool needInvokeSendRequest = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ChannelState state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QHttpNetworkRequest request; // current request, only used for HTTP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     QHttpNetworkReply *reply; // current reply for this request, only used for HTTP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,6 +150,8 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void closeAndResendCurrentRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void resendCurrentRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void checkAndResumeCommunication();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool isSocketBusy() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool isSocketWriting() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool isSocketWaiting() const;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff b/aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 923476a4735..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,45 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 0efea8020c1d221635aaa0a71529edb392cfe3cc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Joerg Bornemann <joerg.bornemann@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 11 Sep 2023 14:48:32 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] CMake: Fix build with CMake 3.28 on macOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-FindWrapOpenGL.cmake assumed that IMPORTED_LOCATION is the absolute path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-of the library within the framework. That's not the case with CMake 3.28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-anymore. There, IMPORTED_LOCATION is the absolute path of the framework
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-directory.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The relevant upstream CMake change is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-6b01a27f901b5eb392955fea322cde44a1b782a3.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 6.2 6.5 6.6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I6b702a28318e0978c56dec83c398965aa77ef020
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cmake/FindWrapOpenGL.cmake | 8 ++++++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 6 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/cmake/FindWrapOpenGL.cmake b/cmake/FindWrapOpenGL.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 3e6abaf4dda..7295a159caf 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/FindWrapOpenGL.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ cmake/FindWrapOpenGL.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -17,14 +17,18 @@ if (OpenGL_FOUND)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if(APPLE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        # CMake 3.27 and older:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # On Darwin platforms FindOpenGL sets IMPORTED_LOCATION to the absolute path of the library
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # within the framework. This ends up as an absolute path link flag, which we don't want,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # because that makes our .prl files un-relocatable.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # Extract the framework path instead, and use that in INTERFACE_LINK_LIBRARIES,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        # which CMake ends up transforming into a reloctable -framework flag.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        # which CMake ends up transforming into a relocatable -framework flag.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         # See https://gitlab.kitware.com/cmake/cmake/-/issues/20871 for details.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        #
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        # CMake 3.28 and above:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        # IMPORTED_LOCATION is the absolute path the the OpenGL.framework folder.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         get_target_property(__opengl_fw_lib_path OpenGL::GL IMPORTED_LOCATION)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if(__opengl_fw_lib_path)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if(__opengl_fw_lib_path AND NOT __opengl_fw_lib_path MATCHES "/([^/]+)\\.framework$")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             get_filename_component(__opengl_fw_path "${__opengl_fw_lib_path}" DIRECTORY)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         endif()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-intel_intrinsics.diff b/aqua/qt6/files/patch-qtbase-intel_intrinsics.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 65d9f364154..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-intel_intrinsics.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,20 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-LLVM clang [3.9.0,9.0.0) (and so likely also Xcode clang <11.4)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-defined the _mm256_maskz_cvtps_ph intrinsic as 2-argument.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Use the equivalent intrinsic _mm256_maskz_cvt_roundps_ph instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-since clang has always defined it as 3-argument.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://trac.macports.org/ticket/67802
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/global/qfloat16.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/global/qfloat16.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -176,9 +176,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void qFloatToFloat16_tail_avx256(quint16 *out, const float *in, qsizetype len) noexcept
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     __mmask16 mask = _bzhi_u32(-1, len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     __m256 f32 = _mm256_maskz_loadu_ps(mask, in );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    __m128i f16 = _mm256_maskz_cvtps_ph(mask, f32, _MM_FROUND_TO_NEAREST_INT);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __m128i f16 = _mm256_maskz_cvt_roundps_ph(mask, f32, _MM_FROUND_TO_NEAREST_INT);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     _mm_mask_storeu_epi16(out, mask, f16);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static QT_FUNCTION_TARGET(ARCH_SKYLAKE_AVX512)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-macdeployqt.diff b/aqua/qt6/files/patch-qtbase-macdeployqt.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 82080215941..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-macdeployqt.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,33 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From c66dab56b20a47062c74fa6ecf8ea438bdc07b24 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jonas Kvinge <jonas@jkvinge.net>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 26 Sep 2023 19:02:47 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] macdeployqt: Also look for app libraries with .so extension
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-MIME-Version: 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Type: text/plain; charset=utf8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Transfer-Encoding: 8bit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fixes deploying glib-networking gio modules which uses .so file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extension.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I6b4c4e9c3bb5745ffa33d7e83c5853a9372f1ca6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/tools/macdeployqt/shared/shared.cpp | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0671ebf2f32f..413f8413f69f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/tools/macdeployqt/shared/shared.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/tools/macdeployqt/shared/shared.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -435,7 +435,7 @@ QStringList findAppLibraries(const QString &appBundlePath)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     QStringList result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // dylibs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    QDirIterator iter(appBundlePath, QStringList() << QString::fromLatin1("*.dylib"),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    QDirIterator iter(appBundlePath, QStringList() << QString::fromLatin1("*.dylib") << QString::fromLatin1("*.so"),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     while (iter.hasNext()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         iter.next();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.16.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 37605c24286..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,113 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Allow building with macOS 10.14 SDK (will still warn about
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"instance method '-charactersByApplyingModifiers:' not found"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-and "instance method '-location' not found")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Upstream-Status: Inappropriate [violates DRY]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/platform/darwin/qapplekeymapper.mm.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/platform/darwin/qapplekeymapper.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -528,7 +528,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 // we first run the event through the Carbon APIs and then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 // compare the results to Cocoa.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 auto cocoaModifiers = toCocoaModifiers(qtModifiers);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                auto *charactersWithModifiers = [NSApp.currentEvent charactersByApplyingModifiers:cocoaModifiers];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                NSString *charactersWithModifiers = [NSApp.currentEvent charactersByApplyingModifiers:cocoaModifiers];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 QChar cocoaUnicodeKey;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 if (charactersWithModifiers.length > 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/rhi/qrhimetal.mm.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/rhi/qrhimetal.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -369,15 +369,15 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     driverInfoStruct.deviceType = QRhiDriverInfo::IntegratedDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        const MTLDeviceLocation deviceLocation = [d->dev location];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        const NSUInteger deviceLocation = (NSUInteger)[d->dev location];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         switch (deviceLocation) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        case MTLDeviceLocationBuiltIn:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             driverInfoStruct.deviceType = QRhiDriverInfo::IntegratedDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        case MTLDeviceLocationSlot:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        case 1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             driverInfoStruct.deviceType = QRhiDriverInfo::DiscreteDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        case MTLDeviceLocationExternal:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        case 2:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             driverInfoStruct.deviceType = QRhiDriverInfo::ExternalDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -403,8 +403,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(Q_OS_MACOS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     caps.maxTextureSize = 16384;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     caps.baseVertexAndInstance = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (@available(macOS 10.15, *))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         caps.isAppleGPU = [d->dev supportsFamily:MTLGPUFamilyApple7];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     caps.maxThreadGroupSize = 1024;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(Q_OS_TVOS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if ([d->dev supportsFeatureSet: MTLFeatureSet(30003)]) // MTLFeatureSet_tvOS_GPUFamily2_v1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2543,6 +2545,26 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return srgb ? MTLPixelFormatASTC_12x10_sRGB : MTLPixelFormatASTC_12x10_LDR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case QRhiTexture::ASTC_12x12:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return srgb ? MTLPixelFormatASTC_12x12_sRGB : MTLPixelFormatASTC_12x12_LDR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif MAC_OS_X_VERSION_MAX_ALLOWED < 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ETC2_RGB8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ETC2_RGB8A1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ETC2_RGBA8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_4x4:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_5x4:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_5x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_6x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_6x6:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_8x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_8x6:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_8x8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_10x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_10x6:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_10x8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_10x10:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_12x10:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    case QRhiTexture::ASTC_12x12:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        qWarning("QRhiMetal: ETC2 compression not supported on this platform");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return MTLPixelFormatInvalid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case QRhiTexture::ETC2_RGB8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (d->caps.isAppleGPU) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2727,6 +2747,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     switch (m_type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case DepthStencil:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef Q_OS_MACOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (rhiD->caps.isAppleGPU) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (@available(macOS 11.0, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 desc.storageMode = MTLStorageModeMemoryless;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2735,10 +2756,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 Q_UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             desc.storageMode = MTLStorageModePrivate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             d->format = rhiD->d->dev.depth24Stencil8PixelFormatSupported
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                     ? MTLPixelFormatDepth24Unorm_Stencil8 : MTLPixelFormatDepth32Float_Stencil8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         desc.storageMode = MTLStorageModeMemoryless;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         d->format = MTLPixelFormatDepth32Float_Stencil8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/platforms/cocoa/qcocoascreen.mm.orig       2023-02-14 09:26:04.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/platforms/cocoa/qcocoascreen.mm    2023-12-28 11:31:59.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -271,9 +271,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     float refresh = CGDisplayModeGetRefreshRate(displayMode);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     m_refreshRate = refresh > 0 ? refresh : 60.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (@available(macOS 10.15, *))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         m_name = QString::fromNSString(nsScreen.localizedName);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         m_name = displayName(m_displayId);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     const bool didChangeGeometry = m_geometry != previousGeometry || m_availableGeometry != previousAvailableGeometry;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-memory_resource.diff b/aqua/qt6/files/patch-qtbase-memory_resource.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 99027d4476e..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-memory_resource.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,80 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From c70145c6bf54cda9723cccdc7ca07f8d8fd321cd Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Wed, 7 Jun 2023 02:31:42 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Opt out of standard library memory_resource on macOS < 14 and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- iOS < 17
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-MIME-Version: 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Type: text/plain; charset=UTF-8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Transfer-Encoding: 8bit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Although the header is available, and the compiler reports that the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-standard library supports memory_resource, the feature is only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-available on macOS 14 and iOS 17, as reported by
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  https://developer.apple.com/xcode/cpp/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-As long as our deployment target is lower we can't unconditionally
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use this feature. It's not clear whether the expectation is that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-consumers of the standard library on these platforms will have to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-runtime check their uses of these APIs.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Includes e84c0df50f51c61aa49b47823582b0f8de406e3d for fixing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-missing line continuations.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Task-number: QTBUG-114316
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I50c1425334b9b9842b253442e2b3aade637783ea
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit f7c8ff511c30dc4310a72b3da4b4a345efe1fba0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/corelib/global/qcompilerdetection.h | 20 +++++++++++++-------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/corelib/tools/qduplicatetracker_p.h |  2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 14 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f1218934412..70fa7f6c9f7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/global/qcompilerdetection.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/global/qcompilerdetection.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -895,16 +895,22 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #   endif // !_HAS_CONSTEXPR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  endif // !__GLIBCXX__ && !_LIBCPP_VERSION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # endif // Q_OS_QNX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# if defined(Q_CC_CLANG) && defined(Q_OS_MAC) && defined(__GNUC_LIBSTD__) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# if defined(Q_CC_CLANG) && defined(Q_OS_MAC)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#  if defined(__GNUC_LIBSTD__) && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Apple has not updated libstdc++ since 2007, which means it does not have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // <initializer_list> or std::move. Let's disable these features
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#  undef Q_COMPILER_INITIALIZER_LISTS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#  undef Q_COMPILER_RVALUE_REFS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#  undef Q_COMPILER_REF_QUALIFIERS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#   undef Q_COMPILER_INITIALIZER_LISTS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#   undef Q_COMPILER_RVALUE_REFS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#   undef Q_COMPILER_REF_QUALIFIERS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Also disable <atomic>, since it's clearly not there
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#  undef Q_COMPILER_ATOMICS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#   undef Q_COMPILER_ATOMICS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#  endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#  if defined(__cpp_lib_memory_resource) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    && ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED)  && __MAC_OS_X_VERSION_MIN_REQUIRED  < 140000) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 170000))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#   undef __cpp_lib_memory_resource // Only supported on macOS 14 and iOS 17
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#  endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# endif // defined(Q_CC_CLANG) && defined(Q_OS_DARWIN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Don't break code that is already using Q_COMPILER_DEFAULT_DELETE_MEMBERS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/tools/qduplicatetracker_p.h b/src/corelib/tools/qduplicatetracker_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 950220184f8..23465ecffed 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/tools/qduplicatetracker_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/tools/qduplicatetracker_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -16,7 +16,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <private/qglobal_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#if __has_include(<memory_resource>)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __cpp_lib_memory_resource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  include <memory_resource>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  include <qhash.h> // for the hashing helpers
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff b/aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3e23453d23e..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,22 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/qml/jsruntime/qv4engine_p.h.orig   2023-03-11 23:23:17.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/qml/jsruntime/qv4engine_p.h        2023-07-08 21:48:13.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -774,7 +774,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CHECK_STACK_LIMITS(v4) if ((v4)->checkStackLimits()) return Encode::undefined(); \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ExecutionEngineCallDepthRecorder _executionEngineCallDepthRecorder(v4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ExecutionEngineCallDepthRecorder<1> _executionEngineCallDepthRecorder(v4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- template<int Frames = 1>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct ExecutionEngineCallDepthRecorder
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/qml/jsruntime/qv4vme_moth.cpp.orig 2023-03-11 23:23:17.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/qml/jsruntime/qv4vme_moth.cpp      2023-07-08 21:59:27.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -400,7 +400,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         frame->setReturnValueUndefined();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    ExecutionEngineCallDepthRecorder executionEngineCallDepthRecorder(engine);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ExecutionEngineCallDepthRecorder<1> executionEngineCallDepthRecorder(engine);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Function *function = frame->v4Function;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Q_ASSERT(function->aotFunction);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtmultimedia-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtmultimedia-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3ec74f9580c..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtmultimedia-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,51 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/multimedia/darwin/qcoreaudioutils.mm.orig  2023-03-12 04:46:05.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/multimedia/darwin/qcoreaudioutils.mm       2023-07-08 23:42:48.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -119,11 +119,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopFrontLeft, kAudioChannelLabel_VerticalHeightLeft },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopFrontRight, kAudioChannelLabel_VerticalHeightRight },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopFrontCenter, kAudioChannelLabel_VerticalHeightCenter },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        { QAudioFormat::TopCenter, kAudioChannelLabel_CenterTopMiddle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        { QAudioFormat::TopCenter, kAudioChannelLabel_TopCenterSurround },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopBackLeft, kAudioChannelLabel_TopBackLeft },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopBackRight, kAudioChannelLabel_TopBackRight },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopSideLeft, kAudioChannelLabel_LeftTopMiddle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopSideRight, kAudioChannelLabel_RightTopMiddle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         { QAudioFormat::TopBackCenter, kAudioChannelLabel_TopBackCenter },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/multimedia/darwin/camera/qavfcamerabase.mm.orig    2023-03-12 04:46:05.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/multimedia/darwin/camera/qavfcamerabase.mm 2023-07-09 00:18:24.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -93,18 +93,20 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif // defined(Q_OS_IOS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool isFlashAvailable(AVCaptureDevice* captureDevice) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return [captureDevice isFlashAvailable];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool isTorchAvailable(AVCaptureDevice* captureDevice) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return [captureDevice isTorchAvailable];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -723,7 +725,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         AVCaptureDevice *captureDevice = device();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        return captureDevice && [captureDevice isExposureModeSupported:AVCaptureExposureModeCustom];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return captureDevice && [captureDevice isExposureModeSupported:AVCaptureExposureMode(3)]; // AVCaptureExposureModeCustom
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtmultimedia_no_std_unary_function.diff b/aqua/qt6/files/patch-qtmultimedia_no_std_unary_function.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a21340f8be7..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtmultimedia_no_std_unary_function.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,31 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 82f7f3de0e90bb7d1447cb710ffd2e1b315ae479 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Artem Dyomin <artem.dyomin@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 26 May 2023 15:15:52 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Remove std::unary_function usage
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-std::unary_function was removed with c++17
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 6.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Task-number: QTBUG-113782
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I4e330cd1f89dc14936acbccdeee8378ea4938870
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Lars Knoll <lars@knoll.priv.no>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/plugins/multimedia/darwin/camera/avfcamerautility.mm b/src/plugins/multimedia/darwin/camera/avfcamerautility.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4334613..fb73ba3 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/multimedia/darwin/camera/avfcamerautility.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/multimedia/darwin/camera/avfcamerautility.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -69,9 +69,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--struct FormatHasNoFPSRange : std::unary_function<AVCaptureDeviceFormat *, bool>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct FormatHasNoFPSRange
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    bool operator() (AVCaptureDeviceFormat *format)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    bool operator() (AVCaptureDeviceFormat *format) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         Q_ASSERT(format);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return !format.videoSupportedFrameRateRanges || !format.videoSupportedFrameRateRanges.count;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtpositioning-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtpositioning-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 78fb6eb6aa0..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtpositioning-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,17 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/position/corelocation/qgeopositioninfosource_cl.mm.orig    2023-03-12 03:16:54.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/position/corelocation/qgeopositioninfosource_cl.mm 2023-12-30 18:29:00.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -52,12 +52,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef Q_OS_TVOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (newLocation.course >= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         location.setAttribute(QGeoPositionInfo::Direction, newLocation.course);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if !defined(Q_OS_MACOS) || MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (__builtin_available(iOS 13.4, watchOS 6.2, macOS 10.15.4, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             if (newLocation.courseAccuracy >= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 location.setAttribute(QGeoPositionInfo::DirectionAccuracy,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                       newLocation.courseAccuracy);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (newLocation.speed >= 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         location.setAttribute(QGeoPositionInfo::GroundSpeed, newLocation.speed);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a06a4d2572b..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,26 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/tts/darwin/qtexttospeech_darwin.mm.orig    2023-03-12 05:16:00.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/tts/darwin/qtexttospeech_darwin.mm 2023-07-09 02:30:51.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2,6 +2,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <AVFoundation/AVFoundation.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <../../System/Library/Frameworks/AVFoundation.framework/Frameworks/AVFAudio.framework/Headers/AVSpeechSynthesis.h>  // 10.14 SDK fix
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "qtexttospeech_darwin.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -281,6 +282,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // only from macOS 10.15 and iOS 13 on
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     const QVoice::Gender gender = [avVoice]{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (@available(macos 10.15, ios 13, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             switch (avVoice.gender) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             case AVSpeechSynthesisVoiceGenderMale:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -291,6 +293,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return QVoice::Unknown;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/qtbase-qmake-xcode-15.patch b/aqua/qt6/files/qtbase-qmake-xcode-15.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index f479e4a46ec..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/qtbase-qmake-xcode-15.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,59 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From cdf64b0e47115cc473e1afd1472b4b09e130b2a5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 11 Sep 2023 17:01:52 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] qmake: Don't error out if QMAKE_DEFAULT_LIBDIRS is empty on macOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The new linker in Xcode 15 doesn't provide any default linker or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-framework paths when requested via -v, but still seems to use the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default paths documented in the ld man page.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-We trust that linker will do the right thing, even if we don't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-know of its default linker paths.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-We also need to opt out of the default fallback logic to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set the libdirs to /lib and /usr/lib.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This may result in UnixMakefileGenerator::findLibraries finding
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-different libraries than expected, if additional paths are
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-passed with -L, which will then take precedence for qmake,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-even if the linker itself will use the library from the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-SDK's default paths. This should hopefully not be an issue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-in practice, as we don't turn -lFoo into absolute paths in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-qmake, so the only risk is that we're picking up the wrong
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-prl files and adding additional dependencies that the lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-in the SDK doesn't have.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I2347b26e2df0828471373b0e15b8c9089274c65d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- mkspecs/features/toolchain.prf | 9 ++++++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 6 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0040b6c4b9f..bfad10d35bc 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mkspecs/features/toolchain.prf.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mkspecs/features/toolchain.prf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -288,9 +288,12 @@ isEmpty($${target_prefix}.INCDIRS) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                 }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        isEmpty(QMAKE_DEFAULT_LIBDIRS)|isEmpty(QMAKE_DEFAULT_INCDIRS): \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        isEmpty(QMAKE_DEFAULT_INCDIRS): \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             !integrity: \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--                error("failed to parse default search paths from compiler output")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                error("failed to parse default include paths from compiler output")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        isEmpty(QMAKE_DEFAULT_LIBDIRS): \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            !integrity:!darwin: \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                error("failed to parse default library paths from compiler output")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     } else: ghs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         cmd = $$QMAKE_CXX $$QMAKE_CXXFLAGS -$${LITERAL_HASH} -o /tmp/fake_output /tmp/fake_input.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -411,7 +414,7 @@ isEmpty($${target_prefix}.INCDIRS) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         QMAKE_DEFAULT_INCDIRS = $$split(INCLUDE, $$QMAKE_DIRLIST_SEP)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    unix:if(!cross_compile|host_build) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    unix:!darwin:if(!cross_compile|host_build) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         isEmpty(QMAKE_DEFAULT_INCDIRS): QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         isEmpty(QMAKE_DEFAULT_LIBDIRS): QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt64/Portfile b/aqua/qt64/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a7588e1c629..a390f9301c2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt64/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt64/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -43,7 +43,7 @@ supported_archs             arm64 x86_64
</span> # conflict with all other versions of qt6
 foreach {qt_base qt_info} ${qt6::available_versions} {
     if { ${qt_base} ne ${name} } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        conflicts-append    port:${qt_base}-qtbase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        conflicts-append    ${qt_base}-qtbase
</span>     }
 }
 
</pre><pre style='margin:0'>

</pre>