diff options
344 files changed, 16531 insertions, 27629 deletions
diff --git a/system/cmake/APKBUILD b/system/cmake/APKBUILD index 672caf7e0..983dd5335 100644 --- a/system/cmake/APKBUILD +++ b/system/cmake/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Valery Kartel <valery.kartel@gmail.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=cmake -pkgver=3.23.5 +pkgver=3.31.8 pkgrel=0 pkgdesc="Cross-platform build system" url="https://cmake.org" @@ -19,7 +19,7 @@ case $pkgver in esac source="https://cmake.org/files/$_v/cmake-${pkgver}.tar.gz - fix-tests-git-file-protocol-permission.patch + musl-ldso.patch " _parallel_opt() { @@ -41,6 +41,7 @@ build() { --datadir=/share/$pkgname \ --docdir=/share/doc/$pkgname \ --system-libs \ + --no-system-cppdap \ --no-system-jsoncpp \ $(_parallel_opt) make @@ -53,11 +54,13 @@ check() { ; # skip CTestTestUpload: tries to upload something during check... - #CTEST_PARALLEL_LEVEL=${JOBS} \ + # BundleUtilities fails in autobuilder env due to LD_PRELOAD hack + # RunCMake.CrosscompilingEmulator and RunCMake.add_test don't support + # running with parallel level > 1. + CTEST_PARALLEL_LEVEL=${JOBS} \ CTEST_OUTPUT_ON_FAILURE=TRUE \ bin/ctest \ - -E CTestTestUpload \ - -E BundleUtilities \ + -E '(CTestTestUpload|BundleUtilities|RunCMake\.(CrosscompilingEmulator|add_test))' \ ; } @@ -65,5 +68,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="298f02cd4a0b332184b3e49f343d8a03dcfa637004b0ee9d0a81f72b1ee568aca9caa7322dbf9fe82d9660a8c617f572404cef0c34b2f63297e9211e953cca12 cmake-3.23.5.tar.gz -353cae903076760c77a902256ea6c61102ada60c1ebd05227670cb2bb9aa8f49a4e9946513650f4e58ff94f9a1d108c427d88340b9a633df5376e8036498245e fix-tests-git-file-protocol-permission.patch" +sha512sums="07dbb5af1d449760ef92a921e43c0a0a091989ac51ce3f8b7607bf617b8b56e47c675486d3c620c04f1105b7dfa3852b926915e0888ff46ea473cd01e572f461 cmake-3.31.8.tar.gz +4ad2da9781f55686f4c5dbbb93f909748097f23760208a81109117b3b0976e02f2228253c3a916a6b26575a27f8b67012d2458c35a9cacf6668261d8cede9582 musl-ldso.patch" diff --git a/system/cmake/fix-tests-git-file-protocol-permission.patch b/system/cmake/fix-tests-git-file-protocol-permission.patch deleted file mode 100644 index c43d9a146..000000000 --- a/system/cmake/fix-tests-git-file-protocol-permission.patch +++ /dev/null @@ -1,21 +0,0 @@ -Backported: https://github.com/Kitware/CMake/commit/79ce0f434e916684d734e136b92e14f472a9d14a - -diff -ur a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt ---- a/Tests/CMakeLists.txt 2022-11-01 08:36:33.000000000 -0500 -+++ b/Tests/CMakeLists.txt 2023-02-28 15:24:14.294747915 -0600 -@@ -1586,6 +1586,7 @@ - ) - list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/ExternalProject") - set_tests_properties(ExternalProject PROPERTIES -+ ENVIRONMENT GIT_ALLOW_PROTOCOL=file - RUN_SERIAL 1 - TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) - -@@ -2678,6 +2679,7 @@ - -P "${CMake_BINARY_DIR}/Tests/CTestUpdateGIT.cmake" - ) - list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/${CTestUpdateGIT_DIR}") -+ set_property(TEST CTest.UpdateGIT PROPERTY ENVIRONMENT GIT_ALLOW_PROTOCOL=file) - endif() - - # Test CTest Update with HG diff --git a/system/cmake/musl-ldso.patch b/system/cmake/musl-ldso.patch new file mode 100644 index 000000000..7fd68e374 --- /dev/null +++ b/system/cmake/musl-ldso.patch @@ -0,0 +1,5 @@ +--- cmake-3.31.8/Tests/RunCMake/RuntimePath/Stub-fail-stderr.txt.old 2025-06-12 08:51:05.000000000 -0500 ++++ cmake-3.31.8/Tests/RunCMake/RuntimePath/Stub-fail-stderr.txt 2025-06-16 19:11:24.657917052 -0500 +@@ -1 +1 @@ +-(error while loading shared libraries: libStub\.so\.1|Library not loaded: '?@rpath/libStub\.1\.dylib'?|(Cannot|Could not) load module libStub\.a\(libStub\.so\.1\)|fatal: libStub\.so\.1: open failed|Shared object "libStub\.so\.1" not found) ++(Error loading shared library libStub\.so\.1|error while loading shared libraries: libStub\.so\.1|Library not loaded: '?@rpath/libStub\.1\.dylib'?|(Cannot|Could not) load module libStub\.a\(libStub\.so\.1\)|fatal: libStub\.so\.1: open failed|Shared object "libStub\.so\.1" not found) diff --git a/system/git/APKBUILD b/system/git/APKBUILD index 0562bfba2..2b9c75221 100644 --- a/system/git/APKBUILD +++ b/system/git/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Łukasz Jendrysik <scadu@yandex.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=git -pkgver=2.40.0 -pkgrel=1 +pkgver=2.49.0 +pkgrel=0 pkgdesc="Distributed version control system" url="https://www.git-scm.com/" arch="all" @@ -26,11 +26,9 @@ subpackages="$pkgname-doc replaces="git-perl perl-git" source="https://www.kernel.org/pub/software/scm/git/git-$pkgver.tar.xz dont-test-other-encodings.patch + endian.patch git-daemon.initd git-daemon.confd - - disable-t2082-2.patch - perl-getopt-long.patch " _gitcoredir=/usr/libexec/git-core @@ -59,6 +57,7 @@ prepare() { cat >> config.mak <<-EOF NO_SVN_TESTS=YesPlease NO_REGEX=YesPlease + NO_ICONV=YesPlease USE_ASCIIDOCTOR=1 USE_LIBPCRE2=YesPlease NO_NSEC=YesPlease @@ -72,7 +71,7 @@ build() { } check() { - make prefix=/usr DESTDIR="$pkgdir" -j1 test + GIT_SKIP_TESTS='t5564.6' make prefix=/usr DESTDIR="$pkgdir" -j1 test } package() { @@ -168,9 +167,8 @@ subtree() { make install prefix=/usr DESTDIR="$subpkgdir" } -sha512sums="a2720f8f9a0258c0bb5e23badcfd68a147682e45a5d039a42c47128296c508109d5039029db89311a35db97a9008585e84ed11b400846502c9be913d67f0fd90 git-2.40.0.tar.xz -4bcc8367478601c856e0977d46fc4842f62daf300093a576704ad27ccd9fae975f95d3fbfcb00e9fa7254b1db64cd074f49a94fb5cf0abd8d72d7edc9ab8798c dont-test-other-encodings.patch +sha512sums="81a16415890305fc6cfd14ade8bee76779feba01f51c5446f40c14211654342c68ef0911859fa6e8e9ff0a718847bb44ee4156d03a19c9165df19ba91e09e1f0 git-2.49.0.tar.xz +829d7a5cb1cfc162eee2920cfcd09798af967657751a9040f18046c9537d0b7a7b314fb84edef1ebe4114cdabafb41253cff60709779ecf91cfa49cd7542f923 dont-test-other-encodings.patch +e8c63db09327ff01527f4d5f56185c602ef8cb10e2c24f0e3e02b567166ae226053fc1428263ddecd2708d89e6ea8d99d8bf4c1f19541b7a4d4c367898e1777f endian.patch 89528cdd14c51fd568aa61cf6c5eae08ea0844e59f9af9292da5fc6c268261f4166017d002d494400945e248df6b844e2f9f9cd2d9345d516983f5a110e4c42a git-daemon.initd -fbf1f425206a76e2a8f82342537ed939ff7e623d644c086ca2ced5f69b36734695f9f80ebda1728f75a94d6cd2fcb71bf845b64239368caab418e4d368c141ec git-daemon.confd -6d7cbb701584a078328056a67bfd32dde5795a80c0911734b38bd534699fb0165ac2b486b267c5c39b90bbb0d7c5ab0ab6ada1d068748865617326da28304eb4 disable-t2082-2.patch -9800318f9e6a8b6bfd8c700cce5cc326522a607b89236a868ef46940efe0566fdadf5d69dc3e72f989d61df66be8510b8989bd4ce3fc780f017f30652c7e9efa perl-getopt-long.patch" +fbf1f425206a76e2a8f82342537ed939ff7e623d644c086ca2ced5f69b36734695f9f80ebda1728f75a94d6cd2fcb71bf845b64239368caab418e4d368c141ec git-daemon.confd" diff --git a/system/git/disable-t2082-2.patch b/system/git/disable-t2082-2.patch deleted file mode 100644 index b18a9caa7..000000000 --- a/system/git/disable-t2082-2.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- a/t/t2082-parallel-checkout-attributes.sh 2021-11-24 19:29:21.000000000 +0000 -+++ b/t/t2082-parallel-checkout-attributes.sh 2022-01-12 17:29:58.890000000 +0000 -@@ -33,33 +33,6 @@ - ) - ' - --test_expect_success 'parallel-checkout with re-encoding' ' -- set_checkout_config 2 0 && -- git init encoding && -- ( -- cd encoding && -- echo text >utf8-text && -- write_utf16 <utf8-text >utf16-text && -- -- echo "A working-tree-encoding=UTF-16" >.gitattributes && -- cp utf16-text A && -- cp utf8-text B && -- git add A B .gitattributes && -- git commit -m encoding && -- -- # Check that A is stored in UTF-8 -- git cat-file -p :A >A.internal && -- test_cmp_bin utf8-text A.internal && -- -- rm A B && -- test_checkout_workers 2 git checkout A B && -- -- # Check that A (and only A) is re-encoded during checkout -- test_cmp_bin utf16-text A && -- test_cmp_bin utf8-text B -- ) --' -- - test_expect_success 'parallel-checkout with eol conversions' ' - set_checkout_config 2 0 && - git init eol && diff --git a/system/git/dont-test-other-encodings.patch b/system/git/dont-test-other-encodings.patch index fed4a6e21..d1c917821 100644 --- a/system/git/dont-test-other-encodings.patch +++ b/system/git/dont-test-other-encodings.patch @@ -1,18 +1,8 @@ We can't support Japanese people using musl ---- git-2.14.1/t/t5100-mailinfo.sh.old 2017-08-09 14:54:31.000000000 -0500 -+++ git-2.14.1/t/t5100-mailinfo.sh 2017-09-10 23:26:39.206126739 -0500 -@@ -27,6 +27,7 @@ - - for mail in 00* - do -+ if [ $mail == 0004 ]; then continue; fi - test_expect_success "mailinfo $mail" ' - check_mailinfo "$mail" "" && - if test -f "$DATA/msg$mail--scissors" --- git-2.14.1/t/t8005-blame-i18n.sh.old 2017-08-09 14:54:31.000000000 -0500 +++ git-2.14.1/t/t8005-blame-i18n.sh 2017-09-16 00:42:35.123728809 -0500 -@@ -24,43 +24,10 @@ +@@ -31,43 +31,10 @@ git commit --author "$SJIS_NAME <sjis@localhost>" -m "$SJIS_MSG" ' @@ -58,7 +48,7 @@ We can't support Japanese people using musl summary $UTF8_MSG --- git-2.21.0/t/t0028-working-tree-encoding.sh.old 2019-02-24 16:31:46.000000000 +0000 +++ git-2.21.0/t/t0028-working-tree-encoding.sh 2019-03-08 00:49:07.580000000 +0000 -@@ -51,14 +51,6 @@ +@@ -58,14 +58,6 @@ test_cmp_bin test.utf8.raw test.utf16.git ' @@ -73,17 +63,17 @@ We can't support Japanese people using musl test_expect_success 're-encode to UTF-16-LE-BOM on checkout' ' rm test.utf16lebom && git checkout test.utf16lebom && -@@ -123,41 +115,6 @@ - test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out && - test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out +@@ -131,41 +123,6 @@ + test_grep "fatal: BOM is required .* utf-${i}" err.out && + test_grep "use UTF-${i}BE or UTF-${i}LE" err.out ' - - test_expect_success "eol conversion for UTF-${i} encoded files on checkout" ' - test_when_finished "rm -f crlf.utf${i}.raw lf.utf${i}.raw" && - test_when_finished "git reset --hard HEAD^" && - -- cat lf.utf8.raw | write_utf${i} >lf.utf${i}.raw && -- cat crlf.utf8.raw | write_utf${i} >crlf.utf${i}.raw && +- write_utf${i} <lf.utf8.raw >lf.utf${i}.raw && +- write_utf${i} <crlf.utf8.raw >crlf.utf${i}.raw && - cp crlf.utf${i}.raw eol.utf${i} && - - cat >expectIndexLF <<-EOF && diff --git a/system/git/endian.patch b/system/git/endian.patch new file mode 100644 index 000000000..83fa3e4f1 --- /dev/null +++ b/system/git/endian.patch @@ -0,0 +1,2305 @@ +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:36 +0200 +Subject: [PATCH v4 1/7] parse: fix off-by-one for minimum signed values +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +We accept a maximum value in `git_parse_signed()` that restricts the +range of accepted integers. As the intent is to pass `INT*_MAX` values +here, this maximum doesn't only act as the upper bound, but also as the +implicit lower bound of the accepted range. + +This lower bound is calculated by negating the maximum. But given that +the maximum value of a signed integer with N bits is `2^(N-1)-1` whereas +the minimum value is `-2^(N-1)` we have an off-by-one error in the lower +bound. + +Fix this off-by-one error by using `-max - 1` as lower bound instead. + +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + parse.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/parse.c b/parse.c +index 7a60a4f816c..3c47448ca67 100644 +--- a/parse.c ++++ b/parse.c +@@ -38,7 +38,7 @@ int git_parse_signed(const char *value, intmax_t *ret, intmax_t max) + errno = EINVAL; + return 0; + } +- if ((val < 0 && -max / factor > val) || ++ if ((val < 0 && (-max - 1) / factor > val) || + (val > 0 && max / factor < val)) { + errno = ERANGE; + return 0; + +-- +2.49.0.805.g082f7c87e0.dirty + + +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:37 +0200 +Subject: [PATCH v4 2/7] global: use designated initializers for options +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +While we expose macros for most of our different option types understood +by the "parse-options" subsystem, not every combination of fields that +has one as that would otherwise quickly lead to an explosion of macros. +Instead, we just initialize structures manually for those variants of +fields that don't have a macro. + +Callsites that open-code these structure initialization don't use +designated initializers though and instead just provide values for each +of the fields that they want to initialize. This has three significant +downsides: + + - Callsites need to specify all values up to the last field that they + care about. This often includes fields that should simply be left at + their default zero-initialized state, which adds distraction. + + - Any reader not deeply familiar with the layout of the structure + has a hard time figuring out what the respective initializers mean. + + - Reordering or introducing new fields in the middle of the structure + is impossible without adapting all callsites. + +Convert all sites to instead use designated initializers, which we have +started using in our codebase quite a while ago. This allows us to skip +any default-initialized fields, gives the reader context by specifying +the field names and allows us to reorder or introduce new fields where +we want to. + +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + archive.c | 35 ++++++++--- + builtin/am.c | 28 ++++++--- + builtin/clone.c | 13 ++++- + builtin/commit-tree.c | 12 +++- + builtin/commit.c | 62 +++++++++++++++----- + builtin/config.c | 13 ++++- + builtin/describe.c | 24 ++++++-- + builtin/fetch.c | 10 +++- + builtin/fmt-merge-msg.c | 25 +++++--- + builtin/gc.c | 12 +++- + builtin/grep.c | 14 +++-- + builtin/init-db.c | 13 +++-- + builtin/ls-remote.c | 11 +++- + builtin/merge.c | 37 +++++++++--- + builtin/read-tree.c | 11 +++- + builtin/rebase.c | 25 ++++++-- + builtin/revert.c | 12 +++- + builtin/show-branch.c | 12 +++- + builtin/tag.c | 23 ++++++-- + builtin/update-index.c | 131 +++++++++++++++++++++++++++++------------- + builtin/write-tree.c | 12 ++-- + diff.c | 13 +++-- + ref-filter.h | 15 +++-- + t/helper/test-parse-options.c | 38 +++++++++--- + 24 files changed, 443 insertions(+), 158 deletions(-) + +diff --git a/archive.c b/archive.c +index 8be4e7ac8db..67bba3cd301 100644 +--- a/archive.c ++++ b/archive.c +@@ -650,20 +650,37 @@ static int parse_archive_args(int argc, const char **argv, + OPT_STRING(0, "format", &format, N_("fmt"), N_("archive format")), + OPT_STRING(0, "prefix", &base, N_("prefix"), + N_("prepend prefix to each pathname in the archive")), +- { OPTION_CALLBACK, 0, "add-file", args, N_("file"), +- N_("add untracked file to archive"), 0, add_file_cb, +- (intptr_t)&base }, +- { OPTION_CALLBACK, 0, "add-virtual-file", args, +- N_("path:content"), N_("add untracked file to archive"), 0, +- add_file_cb, (intptr_t)&base }, ++ { ++ .type = OPTION_CALLBACK, ++ .long_name = "add-file", ++ .value = args, ++ .argh = N_("file"), ++ .help = N_("add untracked file to archive"), ++ .callback = add_file_cb, ++ .defval = (intptr_t) &base, ++ }, ++ { ++ .type = OPTION_CALLBACK, ++ .long_name = "add-virtual-file", ++ .value = args, ++ .argh = N_("path:content"), ++ .help = N_("add untracked file to archive"), ++ .callback = add_file_cb, ++ .defval = (intptr_t) &base, ++ }, + OPT_STRING('o', "output", &output, N_("file"), + N_("write the archive to this file")), + OPT_BOOL(0, "worktree-attributes", &worktree_attributes, + N_("read .gitattributes in working directory")), + OPT__VERBOSE(&verbose, N_("report archived files on stderr")), +- { OPTION_STRING, 0, "mtime", &mtime_option, N_("time"), +- N_("set modification time of archive entries"), +- PARSE_OPT_NONEG }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "mtime", ++ .value = &mtime_option, ++ .argh = N_("time"), ++ .help = N_("set modification time of archive entries"), ++ .flags = PARSE_OPT_NONEG, ++ }, + OPT_NUMBER_CALLBACK(&compression_level, + N_("set compression level"), number_callback), + OPT_GROUP(""), +diff --git a/builtin/am.c b/builtin/am.c +index 3b61bd4c333..4afb519830f 100644 +--- a/builtin/am.c ++++ b/builtin/am.c +@@ -2399,11 +2399,16 @@ int cmd_am(int argc, + OPT_CMDMODE(0, "quit", &resume_mode, + N_("abort the patching operation but keep HEAD where it is"), + RESUME_QUIT), +- { OPTION_CALLBACK, 0, "show-current-patch", &resume_mode, +- "(diff|raw)", +- N_("show the patch being applied"), +- PARSE_OPT_CMDMODE | PARSE_OPT_OPTARG | PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP, +- parse_opt_show_current_patch, RESUME_SHOW_PATCH_RAW }, ++ { ++ .type = OPTION_CALLBACK, ++ .long_name = "show-current-patch", ++ .value = &resume_mode, ++ .argh = "(diff|raw)", ++ .help = N_("show the patch being applied"), ++ .flags = PARSE_OPT_CMDMODE | PARSE_OPT_OPTARG | PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP, ++ .callback = parse_opt_show_current_patch, ++ .defval = RESUME_SHOW_PATCH_RAW, ++ }, + OPT_CMDMODE(0, "retry", &resume_mode, + N_("try to apply current patch again"), + RESUME_APPLY), +@@ -2416,9 +2421,16 @@ int cmd_am(int argc, + OPT_BOOL(0, "ignore-date", &state.ignore_date, + N_("use current timestamp for author date")), + OPT_RERERE_AUTOUPDATE(&state.allow_rerere_autoupdate), +- { OPTION_STRING, 'S', "gpg-sign", &state.sign_commit, N_("key-id"), +- N_("GPG-sign commits"), +- PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'S', ++ .long_name = "gpg-sign", ++ .value = &state.sign_commit, ++ .argh = N_("key-id"), ++ .help = N_("GPG-sign commits"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "", ++ }, + OPT_CALLBACK_F(0, "empty", &state.empty_type, "(stop|drop|keep)", + N_("how to handle empty patches"), + PARSE_OPT_NONEG, am_option_parse_empty), +diff --git a/builtin/clone.c b/builtin/clone.c +index 88276e5b7ab..9c3547f41e3 100644 +--- a/builtin/clone.c ++++ b/builtin/clone.c +@@ -928,9 +928,16 @@ int cmd_clone(int argc, + N_("don't use local hardlinks, always copy")), + OPT_BOOL('s', "shared", &option_shared, + N_("setup as shared repository")), +- { OPTION_CALLBACK, 0, "recurse-submodules", &option_recurse_submodules, +- N_("pathspec"), N_("initialize submodules in the clone"), +- PARSE_OPT_OPTARG, recurse_submodules_cb, (intptr_t)"." }, ++ { ++ .type = OPTION_CALLBACK, ++ .long_name = "recurse-submodules", ++ .value = &option_recurse_submodules, ++ .argh = N_("pathspec"), ++ .help = N_("initialize submodules in the clone"), ++ .flags = PARSE_OPT_OPTARG, ++ .callback = recurse_submodules_cb, ++ .defval = (intptr_t)".", ++ }, + OPT_ALIAS(0, "recursive", "recurse-submodules"), + OPT_INTEGER('j', "jobs", &max_jobs, + N_("number of submodules cloned in parallel")), +diff --git a/builtin/commit-tree.c b/builtin/commit-tree.c +index 38457600a4e..c787133d004 100644 +--- a/builtin/commit-tree.c ++++ b/builtin/commit-tree.c +@@ -111,8 +111,16 @@ int cmd_commit_tree(int argc, + OPT_CALLBACK_F('F', NULL, &buffer, N_("file"), + N_("read commit log message from file"), PARSE_OPT_NONEG, + parse_file_arg_callback), +- { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key-id"), +- N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'S', ++ .long_name = "gpg-sign", ++ .value = &sign_commit, ++ .argh = N_("key-id"), ++ .help = N_("GPG sign commit"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "", ++ }, + OPT_END() + }; + int ret; +diff --git a/builtin/commit.c b/builtin/commit.c +index 2f459682221..66bd91fd523 100644 +--- a/builtin/commit.c ++++ b/builtin/commit.c +@@ -1542,17 +1542,34 @@ struct repository *repo UNUSED) + STATUS_FORMAT_LONG), + OPT_BOOL('z', "null", &s.null_termination, + N_("terminate entries with NUL")), +- { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, +- N_("mode"), +- N_("show untracked files, optional modes: all, normal, no. (Default: all)"), +- PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, +- { OPTION_STRING, 0, "ignored", &ignored_arg, +- N_("mode"), +- N_("show ignored files, optional modes: traditional, matching, no. (Default: traditional)"), +- PARSE_OPT_OPTARG, NULL, (intptr_t)"traditional" }, +- { OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, N_("when"), +- N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"), +- PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'u', ++ .long_name = "untracked-files", ++ .value = &untracked_files_arg, ++ .argh = N_("mode"), ++ .help = N_("show untracked files, optional modes: all, normal, no. (Default: all)"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t)"all", ++ }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "ignored", ++ .value = &ignored_arg, ++ .argh = N_("mode"), ++ .help = N_("show ignored files, optional modes: traditional, matching, no. (Default: traditional)"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t)"traditional", ++ }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "ignore-submodules", ++ .value = &ignore_submodule_arg, ++ .argh = N_("when"), ++ .help = N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t)"all", ++ }, + OPT_COLUMN(0, "column", &s.colopts, N_("list untracked files in columns")), + OPT_BOOL(0, "no-renames", &no_renames, N_("do not detect renames")), + OPT_CALLBACK_F('M', "find-renames", &rename_score_arg, +@@ -1688,8 +1705,16 @@ int cmd_commit(int argc, + OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")), + OPT_CLEANUP(&cleanup_arg), + OPT_BOOL(0, "status", &include_status, N_("include status in commit message template")), +- { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key-id"), +- N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'S', ++ .long_name = "gpg-sign", ++ .value = &sign_commit, ++ .argh = N_("key-id"), ++ .help = N_("GPG sign commit"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "", ++ }, + /* end commit message options */ + + OPT_GROUP(N_("Commit contents options")), +@@ -1714,7 +1739,16 @@ int cmd_commit(int argc, + N_("terminate entries with NUL")), + OPT_BOOL(0, "amend", &amend, N_("amend previous commit")), + OPT_BOOL(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")), +- { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, N_("mode"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"), PARSE_OPT_OPTARG, NULL, (intptr_t)"all" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'u', ++ .long_name = "untracked-files", ++ .value = &untracked_files_arg, ++ .argh = N_("mode"), ++ .help = N_("show untracked files, optional modes: all, normal, no. (Default: all)"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t)"all", ++ }, + OPT_PATHSPEC_FROM_FILE(&pathspec_from_file), + OPT_PATHSPEC_FILE_NUL(&pathspec_file_nul), + /* end commit contents options */ +diff --git a/builtin/config.c b/builtin/config.c +index 53a90094e31..f70d6354772 100644 +--- a/builtin/config.c ++++ b/builtin/config.c +@@ -131,9 +131,16 @@ struct config_display_options { + #define TYPE_COLOR 6 + #define TYPE_BOOL_OR_STR 7 + +-#define OPT_CALLBACK_VALUE(s, l, v, h, i) \ +- { OPTION_CALLBACK, (s), (l), (v), NULL, (h), PARSE_OPT_NOARG | \ +- PARSE_OPT_NONEG, option_parse_type, (i) } ++#define OPT_CALLBACK_VALUE(s, l, v, h, i) { \ ++ .type = OPTION_CALLBACK, \ ++ .short_name = (s), \ ++ .long_name = (l), \ ++ .value = (v), \ ++ .help = (h), \ ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, \ ++ .callback = option_parse_type, \ ++ .defval = (i), \ ++} + + static int option_parse_type(const struct option *opt, const char *arg, + int unset) +diff --git a/builtin/describe.c b/builtin/describe.c +index e2e73f3d757..2da9f4fed01 100644 +--- a/builtin/describe.c ++++ b/builtin/describe.c +@@ -601,12 +601,24 @@ int cmd_describe(int argc, + N_("do not consider tags matching <pattern>")), + OPT_BOOL(0, "always", &always, + N_("show abbreviated commit object as fallback")), +- {OPTION_STRING, 0, "dirty", &dirty, N_("mark"), +- N_("append <mark> on dirty working tree (default: \"-dirty\")"), +- PARSE_OPT_OPTARG, NULL, (intptr_t) "-dirty"}, +- {OPTION_STRING, 0, "broken", &broken, N_("mark"), +- N_("append <mark> on broken working tree (default: \"-broken\")"), +- PARSE_OPT_OPTARG, NULL, (intptr_t) "-broken"}, ++ { ++ .type = OPTION_STRING, ++ .long_name = "dirty", ++ .value = &dirty, ++ .argh = N_("mark"), ++ .help = N_("append <mark> on dirty working tree (default: \"-dirty\")"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "-dirty", ++ }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "broken", ++ .value = &broken, ++ .argh = N_("mark"), ++ .help = N_("append <mark> on broken working tree (default: \"-broken\")"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "-broken", ++ }, + OPT_END(), + }; + +diff --git a/builtin/fetch.c b/builtin/fetch.c +index 02af5054690..3a5159d9e69 100644 +--- a/builtin/fetch.c ++++ b/builtin/fetch.c +@@ -2367,8 +2367,14 @@ int cmd_fetch(int argc, + OPT_SET_INT_F(0, "refetch", &refetch, + N_("re-fetch without negotiating common commits"), + 1, PARSE_OPT_NONEG), +- { OPTION_STRING, 0, "submodule-prefix", &submodule_prefix, N_("dir"), +- N_("prepend this to submodule path output"), PARSE_OPT_HIDDEN }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "submodule-prefix", ++ .value = &submodule_prefix, ++ .argh = N_("dir"), ++ .help = N_("prepend this to submodule path output"), ++ .flags = PARSE_OPT_HIDDEN, ++ }, + OPT_CALLBACK_F(0, "recurse-submodules-default", + &recurse_submodules_default, N_("on-demand"), + N_("default for recursive fetching of submodules " +diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c +index 189cd1096a0..240cdb474bc 100644 +--- a/builtin/fmt-merge-msg.c ++++ b/builtin/fmt-merge-msg.c +@@ -20,13 +20,24 @@ int cmd_fmt_merge_msg(int argc, + char *into_name = NULL; + int shortlog_len = -1; + struct option options[] = { +- { OPTION_INTEGER, 0, "log", &shortlog_len, N_("n"), +- N_("populate log with at most <n> entries from shortlog"), +- PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN }, +- { OPTION_INTEGER, 0, "summary", &shortlog_len, N_("n"), +- N_("alias for --log (deprecated)"), +- PARSE_OPT_OPTARG | PARSE_OPT_HIDDEN, NULL, +- DEFAULT_MERGE_LOG_LEN }, ++ { ++ .type = OPTION_INTEGER, ++ .long_name = "log", ++ .value = &shortlog_len, ++ .argh = N_("n"), ++ .help = N_("populate log with at most <n> entries from shortlog"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = DEFAULT_MERGE_LOG_LEN, ++ }, ++ { ++ .type = OPTION_INTEGER, ++ .long_name = "summary", ++ .value = &shortlog_len, ++ .argh = N_("n"), ++ .help = N_("alias for --log (deprecated)"), ++ .flags = PARSE_OPT_OPTARG | PARSE_OPT_HIDDEN, ++ .defval = DEFAULT_MERGE_LOG_LEN, ++ }, + OPT_STRING('m', "message", &message, N_("text"), + N_("use <text> as start of message")), + OPT_STRING(0, "into-name", &into_name, N_("name"), +diff --git a/builtin/gc.c b/builtin/gc.c +index 99431fd4674..6707a26bc6e 100644 +--- a/builtin/gc.c ++++ b/builtin/gc.c +@@ -699,9 +699,15 @@ struct repository *repo UNUSED) + int ret; + struct option builtin_gc_options[] = { + OPT__QUIET(&quiet, N_("suppress progress reporting")), +- { OPTION_STRING, 0, "prune", &prune_expire_arg, N_("date"), +- N_("prune unreferenced objects"), +- PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire_arg }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "prune", ++ .value = &prune_expire_arg, ++ .argh = N_("date"), ++ .help = N_("prune unreferenced objects"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t)prune_expire_arg, ++ }, + OPT_BOOL(0, "cruft", &cfg.cruft_packs, N_("pack unreferenced objects separately")), + OPT_MAGNITUDE(0, "max-cruft-size", &cfg.max_cruft_size, + N_("with --cruft, limit the size of new cruft packs")), +diff --git a/builtin/grep.c b/builtin/grep.c +index d1427290f77..c4869733e1b 100644 +--- a/builtin/grep.c ++++ b/builtin/grep.c +@@ -1017,10 +1017,16 @@ int cmd_grep(int argc, + OPT_BOOL(0, "all-match", &opt.all_match, + N_("show only matches from files that match all patterns")), + OPT_GROUP(""), +- { OPTION_STRING, 'O', "open-files-in-pager", &show_in_pager, +- N_("pager"), N_("show matching files in the pager"), +- PARSE_OPT_OPTARG | PARSE_OPT_NOCOMPLETE, +- NULL, (intptr_t)default_pager }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'O', ++ .long_name = "open-files-in-pager", ++ .value = &show_in_pager, ++ .argh = N_("pager"), ++ .help = N_("show matching files in the pager"), ++ .flags = PARSE_OPT_OPTARG | PARSE_OPT_NOCOMPLETE, ++ .defval = (intptr_t)default_pager, ++ }, + OPT_BOOL_F(0, "ext-grep", &external_grep_allowed__ignored, + N_("allow calling of grep(1) (ignored by this build)"), + PARSE_OPT_NOCOMPLETE), +diff --git a/builtin/init-db.c b/builtin/init-db.c +index 196dccdd77a..4a950e44d8d 100644 +--- a/builtin/init-db.c ++++ b/builtin/init-db.c +@@ -93,10 +93,15 @@ int cmd_init_db(int argc, + N_("directory from which templates will be used")), + OPT_SET_INT(0, "bare", &is_bare_repository_cfg, + N_("create a bare repository"), 1), +- { OPTION_CALLBACK, 0, "shared", &init_shared_repository, +- N_("permissions"), +- N_("specify that the git repository is to be shared amongst several users"), +- PARSE_OPT_OPTARG | PARSE_OPT_NONEG, shared_callback, 0}, ++ { ++ .type = OPTION_CALLBACK, ++ .long_name = "shared", ++ .value = &init_shared_repository, ++ .argh = N_("permissions"), ++ .help = N_("specify that the git repository is to be shared amongst several users"), ++ .flags = PARSE_OPT_OPTARG | PARSE_OPT_NONEG, ++ .callback = shared_callback ++ }, + OPT_BIT('q', "quiet", &flags, N_("be quiet"), INIT_DB_QUIET), + OPT_STRING(0, "separate-git-dir", &real_git_dir, N_("gitdir"), + N_("separate git dir from working tree")), +diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c +index 42f34e12361..01a4d4daa1f 100644 +--- a/builtin/ls-remote.c ++++ b/builtin/ls-remote.c +@@ -67,9 +67,14 @@ int cmd_ls_remote(int argc, + OPT__QUIET(&quiet, N_("do not print remote URL")), + OPT_STRING(0, "upload-pack", &uploadpack, N_("exec"), + N_("path of git-upload-pack on the remote host")), +- { OPTION_STRING, 0, "exec", &uploadpack, N_("exec"), +- N_("path of git-upload-pack on the remote host"), +- PARSE_OPT_HIDDEN }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "exec", ++ .value = &uploadpack, ++ .argh = N_("exec"), ++ .help = N_("path of git-upload-pack on the remote host"), ++ .flags = PARSE_OPT_HIDDEN, ++ }, + OPT_BIT('t', "tags", &flags, N_("limit to tags"), REF_TAGS), + OPT_BIT('b', "branches", &flags, N_("limit to branches"), REF_BRANCHES), + OPT_BIT_F('h', "heads", &flags, +diff --git a/builtin/merge.c b/builtin/merge.c +index ba9faf126aa..21787d45165 100644 +--- a/builtin/merge.c ++++ b/builtin/merge.c +@@ -250,9 +250,15 @@ static struct option builtin_merge_options[] = { + OPT_BOOL(0, "stat", &show_diffstat, + N_("show a diffstat at the end of the merge")), + OPT_BOOL(0, "summary", &show_diffstat, N_("(synonym to --stat)")), +- { OPTION_INTEGER, 0, "log", &shortlog_len, N_("n"), +- N_("add (at most <n>) entries from shortlog to merge commit message"), +- PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN }, ++ { ++ .type = OPTION_INTEGER, ++ .long_name = "log", ++ .value = &shortlog_len, ++ .argh = N_("n"), ++ .help = N_("add (at most <n>) entries from shortlog to merge commit message"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = DEFAULT_MERGE_LOG_LEN, ++ }, + OPT_BOOL(0, "squash", &squash, + N_("create a single commit instead of doing a merge")), + OPT_BOOL(0, "commit", &option_commit, +@@ -274,9 +280,16 @@ static struct option builtin_merge_options[] = { + OPT_CALLBACK('m', "message", &merge_msg, N_("message"), + N_("merge commit message (for a non-fast-forward merge)"), + option_parse_message), +- { OPTION_LOWLEVEL_CALLBACK, 'F', "file", &merge_msg, N_("path"), +- N_("read message from file"), PARSE_OPT_NONEG, +- NULL, 0, option_read_message }, ++ { ++ .type = OPTION_LOWLEVEL_CALLBACK, ++ .short_name = 'F', ++ .long_name = "file", ++ .value = &merge_msg, ++ .argh = N_("path"), ++ .help = N_("read message from file"), ++ .flags = PARSE_OPT_NONEG, ++ .ll_callback = option_read_message, ++ }, + OPT_STRING(0, "into-name", &into_name, N_("name"), + N_("use <name> instead of the real target")), + OPT__VERBOSITY(&verbosity), +@@ -289,8 +302,16 @@ static struct option builtin_merge_options[] = { + OPT_BOOL(0, "allow-unrelated-histories", &allow_unrelated_histories, + N_("allow merging unrelated histories")), + OPT_SET_INT(0, "progress", &show_progress, N_("force progress reporting"), 1), +- { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key-id"), +- N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'S', ++ .long_name = "gpg-sign", ++ .value = &sign_commit, ++ .argh = N_("key-id"), ++ .help = N_("GPG sign commit"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "", ++ }, + OPT_AUTOSTASH(&autostash), + OPT_BOOL(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")), + OPT_BOOL(0, "signoff", &signoff, N_("add a Signed-off-by trailer")), +diff --git a/builtin/read-tree.c b/builtin/read-tree.c +index d2a807a828b..a8f352f7cd9 100644 +--- a/builtin/read-tree.c ++++ b/builtin/read-tree.c +@@ -135,9 +135,14 @@ int cmd_read_tree(int argc, + N_("3-way merge in presence of adds and removes")), + OPT_BOOL(0, "reset", &opts.reset, + N_("same as -m, but discard unmerged entries")), +- { OPTION_STRING, 0, "prefix", &opts.prefix, N_("<subdirectory>/"), +- N_("read the tree into the index under <subdirectory>/"), +- PARSE_OPT_NONEG }, ++ { ++ .type = OPTION_STRING, ++ .long_name = "prefix", ++ .value = &opts.prefix, ++ .argh = N_("<subdirectory>/"), ++ .help = N_("read the tree into the index under <subdirectory>/"), ++ .flags = PARSE_OPT_NONEG, ++ }, + OPT_BOOL('u', NULL, &opts.update, + N_("update working tree with merge result")), + OPT_CALLBACK_F(0, "exclude-per-directory", &opts, +diff --git a/builtin/rebase.c b/builtin/rebase.c +index d4715ed35d7..d4083350090 100644 +--- a/builtin/rebase.c ++++ b/builtin/rebase.c +@@ -1122,9 +1122,15 @@ int cmd_rebase(int argc, + OPT_BIT('v', "verbose", &options.flags, + N_("display a diffstat of what changed upstream"), + REBASE_NO_QUIET | REBASE_VERBOSE | REBASE_DIFFSTAT), +- {OPTION_NEGBIT, 'n', "no-stat", &options.flags, NULL, +- N_("do not show diffstat of what changed upstream"), +- PARSE_OPT_NOARG, NULL, REBASE_DIFFSTAT }, ++ { ++ .type = OPTION_NEGBIT, ++ .short_name = 'n', ++ .long_name = "no-stat", ++ .value = &options.flags, ++ .help = N_("do not show diffstat of what changed upstream"), ++ .flags = PARSE_OPT_NOARG, ++ .defval = REBASE_DIFFSTAT, ++ }, + OPT_BOOL(0, "signoff", &options.signoff, + N_("add a Signed-off-by trailer to each commit")), + OPT_BOOL(0, "committer-date-is-author-date", +@@ -1190,9 +1196,16 @@ int cmd_rebase(int argc, + OPT_BOOL(0, "update-refs", &options.update_refs, + N_("update branches that point to commits " + "that are being rebased")), +- { OPTION_STRING, 'S', "gpg-sign", &gpg_sign, N_("key-id"), +- N_("GPG-sign commits"), +- PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'S', ++ .long_name = "gpg-sign", ++ .value = &gpg_sign, ++ .argh = N_("key-id"), ++ .help = N_("GPG-sign commits"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "", ++ }, + OPT_AUTOSTASH(&options.autostash), + OPT_STRING_LIST('x', "exec", &options.exec, N_("exec"), + N_("add exec lines after each commit of the " +diff --git a/builtin/revert.c b/builtin/revert.c +index aca6c293cdf..4f5ef975494 100644 +--- a/builtin/revert.c ++++ b/builtin/revert.c +@@ -132,8 +132,16 @@ static int run_sequencer(int argc, const char **argv, const char *prefix, + OPT_STRING(0, "strategy", &strategy, N_("strategy"), N_("merge strategy")), + OPT_STRVEC('X', "strategy-option", &opts->xopts, N_("option"), + N_("option for merge strategy")), +- { OPTION_STRING, 'S', "gpg-sign", &gpg_sign, N_("key-id"), +- N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, ++ { ++ .type = OPTION_STRING, ++ .short_name = 'S', ++ .long_name = "gpg-sign", ++ .value = &gpg_sign, ++ .argh = N_("key-id"), ++ .help = N_("GPG sign commit"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = (intptr_t) "", ++ }, + OPT_END() + }; + struct option *options = base_options; +diff --git a/builtin/show-branch.c b/builtin/show-branch.c +index fce6b404e92..dab37019d29 100644 +--- a/builtin/show-branch.c ++++ b/builtin/show-branch.c +@@ -667,9 +667,15 @@ int cmd_show_branch(int ac, + N_("show remote-tracking branches")), + OPT__COLOR(&showbranch_use_color, + N_("color '*!+-' corresponding to the branch")), +- { OPTION_INTEGER, 0, "more", &extra, N_("n"), +- N_("show <n> more commits after the common ancestor"), +- PARSE_OPT_OPTARG, NULL, (intptr_t)1 }, ++ { ++ .type = OPTION_INTEGER, ++ .long_name = "more", ++ .value = &extra, ++ .argh = N_("n"), ++ .help = N_("show <n> more commits after the common ancestor"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = 1, ++ }, + OPT_SET_INT(0, "list", &extra, N_("synonym to more=-1"), -1), + OPT_BOOL(0, "no-name", &no_name, N_("suppress naming strings")), + OPT_BOOL(0, "current", &with_current_branch, +diff --git a/builtin/tag.c b/builtin/tag.c +index d3e0943b734..b266f12bb48 100644 +--- a/builtin/tag.c ++++ b/builtin/tag.c +@@ -479,9 +479,15 @@ int cmd_tag(int argc, + int edit_flag = 0; + struct option options[] = { + OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'), +- { OPTION_INTEGER, 'n', NULL, &filter.lines, N_("n"), +- N_("print <n> lines of each tag message"), +- PARSE_OPT_OPTARG, NULL, 1 }, ++ { ++ .type = OPTION_INTEGER, ++ .short_name = 'n', ++ .value = &filter.lines, ++ .argh = N_("n"), ++ .help = N_("print <n> lines of each tag message"), ++ .flags = PARSE_OPT_OPTARG, ++ .defval = 1, ++ }, + OPT_CMDMODE('d', "delete", &cmdmode, N_("delete tags"), 'd'), + OPT_CMDMODE('v', "verify", &cmdmode, N_("verify tags"), 'v'), + +@@ -513,9 +519,14 @@ int cmd_tag(int argc, + N_("do not output a newline after empty formatted refs")), + OPT_REF_SORT(&sorting_options), + { +- OPTION_CALLBACK, 0, "points-at", &filter.points_at, N_("object"), +- N_("print only tags of the object"), PARSE_OPT_LASTARG_DEFAULT, +- parse_opt_object_name, (intptr_t) "HEAD" ++ .type = OPTION_CALLBACK, ++ .long_name = "points-at", ++ .value = &filter.points_at, ++ .argh = N_("object"), ++ .help = N_("print only tags of the object"), ++ .flags = PARSE_OPT_LASTARG_DEFAULT, ++ .callback = parse_opt_object_name, ++ .defval = (intptr_t) "HEAD", + }, + OPT_STRING( 0 , "format", &format.format, N_("format"), + N_("format to use for the output")), +diff --git a/builtin/update-index.c b/builtin/update-index.c +index b2f6b1a3fbb..ee64b022679 100644 +--- a/builtin/update-index.c ++++ b/builtin/update-index.c +@@ -964,29 +964,51 @@ int cmd_update_index(int argc, + N_("like --refresh, but ignore assume-unchanged setting"), + PARSE_OPT_NOARG | PARSE_OPT_NONEG, + really_refresh_callback), +- {OPTION_LOWLEVEL_CALLBACK, 0, "cacheinfo", NULL, +- N_("<mode>,<object>,<path>"), +- N_("add the specified entry to the index"), +- PARSE_OPT_NOARG | /* disallow --cacheinfo=<mode> form */ +- PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP, +- NULL, 0, +- cacheinfo_callback}, ++ { ++ .type = OPTION_LOWLEVEL_CALLBACK, ++ .long_name = "cacheinfo", ++ .argh = N_("<mode>,<object>,<path>"), ++ .help = N_("add the specified entry to the index"), ++ .flags = PARSE_OPT_NOARG | /* disallow --cacheinfo=<mode> form */ ++ PARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP, ++ .ll_callback = cacheinfo_callback, ++ }, + OPT_CALLBACK_F(0, "chmod", &set_executable_bit, "(+|-)x", + N_("override the executable bit of the listed files"), + PARSE_OPT_NONEG, + chmod_callback), +- {OPTION_SET_INT, 0, "assume-unchanged", &mark_valid_only, NULL, +- N_("mark files as \"not changing\""), +- PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG}, +- {OPTION_SET_INT, 0, "no-assume-unchanged", &mark_valid_only, NULL, +- N_("clear assumed-unchanged bit"), +- PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG}, +- {OPTION_SET_INT, 0, "skip-worktree", &mark_skip_worktree_only, NULL, +- N_("mark files as \"index-only\""), +- PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG}, +- {OPTION_SET_INT, 0, "no-skip-worktree", &mark_skip_worktree_only, NULL, +- N_("clear skip-worktree bit"), +- PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG}, ++ { ++ .type = OPTION_SET_INT, ++ .long_name = "assume-unchanged", ++ .value = &mark_valid_only, ++ .help = N_("mark files as \"not changing\""), ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = MARK_FLAG, ++ }, ++ { ++ .type = OPTION_SET_INT, ++ .long_name = "no-assume-unchanged", ++ .value = &mark_valid_only, ++ .help = N_("clear assumed-unchanged bit"), ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = UNMARK_FLAG, ++ }, ++ { ++ .type = OPTION_SET_INT, ++ .long_name = "skip-worktree", ++ .value = &mark_skip_worktree_only, ++ .help = N_("mark files as \"index-only\""), ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = MARK_FLAG, ++ }, ++ { ++ .type = OPTION_SET_INT, ++ .long_name = "no-skip-worktree", ++ .value = &mark_skip_worktree_only, ++ .help = N_("clear skip-worktree bit"), ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = UNMARK_FLAG, ++ }, + OPT_BOOL(0, "ignore-skip-worktree-entries", &ignore_skip_worktree_entries, + N_("do not touch index-only entries")), + OPT_SET_INT(0, "info-only", &info_only, +@@ -995,22 +1017,39 @@ int cmd_update_index(int argc, + N_("remove named paths even if present in worktree"), 1), + OPT_BOOL('z', NULL, &nul_term_line, + N_("with --stdin: input lines are terminated by null bytes")), +- {OPTION_LOWLEVEL_CALLBACK, 0, "stdin", &read_from_stdin, NULL, +- N_("read list of paths to be updated from standard input"), +- PARSE_OPT_NONEG | PARSE_OPT_NOARG, +- NULL, 0, stdin_callback}, +- {OPTION_LOWLEVEL_CALLBACK, 0, "index-info", &nul_term_line, NULL, +- N_("add entries from standard input to the index"), +- PARSE_OPT_NONEG | PARSE_OPT_NOARG, +- NULL, 0, stdin_cacheinfo_callback}, +- {OPTION_LOWLEVEL_CALLBACK, 0, "unresolve", &has_errors, NULL, +- N_("repopulate stages #2 and #3 for the listed paths"), +- PARSE_OPT_NONEG | PARSE_OPT_NOARG, +- NULL, 0, unresolve_callback}, +- {OPTION_LOWLEVEL_CALLBACK, 'g', "again", &has_errors, NULL, +- N_("only update entries that differ from HEAD"), +- PARSE_OPT_NONEG | PARSE_OPT_NOARG, +- NULL, 0, reupdate_callback}, ++ { ++ .type = OPTION_LOWLEVEL_CALLBACK, ++ .long_name = "stdin", ++ .value = &read_from_stdin, ++ .help = N_("read list of paths to be updated from standard input"), ++ .flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG, ++ .ll_callback = stdin_callback, ++ }, ++ { ++ .type = OPTION_LOWLEVEL_CALLBACK, ++ .long_name = "index-info", ++ .value = &nul_term_line, ++ .help = N_("add entries from standard input to the index"), ++ .flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG, ++ .ll_callback = stdin_cacheinfo_callback, ++ }, ++ { ++ .type = OPTION_LOWLEVEL_CALLBACK, ++ .long_name = "unresolve", ++ .value = &has_errors, ++ .help = N_("repopulate stages #2 and #3 for the listed paths"), ++ .flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG, ++ .ll_callback = unresolve_callback, ++ }, ++ { ++ .type = OPTION_LOWLEVEL_CALLBACK, ++ .short_name = 'g', ++ .long_name = "again", ++ .value = &has_errors, ++ .help = N_("only update entries that differ from HEAD"), ++ .flags = PARSE_OPT_NONEG | PARSE_OPT_NOARG, ++ .ll_callback = reupdate_callback, ++ }, + OPT_BIT(0, "ignore-missing", &refresh_args.flags, + N_("ignore files missing from worktree"), + REFRESH_IGNORE_MISSING), +@@ -1036,12 +1075,22 @@ int cmd_update_index(int argc, + N_("write out the index even if is not flagged as changed"), 1), + OPT_BOOL(0, "fsmonitor", &fsmonitor, + N_("enable or disable file system monitor")), +- {OPTION_SET_INT, 0, "fsmonitor-valid", &mark_fsmonitor_only, NULL, +- N_("mark files as fsmonitor valid"), +- PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG}, +- {OPTION_SET_INT, 0, "no-fsmonitor-valid", &mark_fsmonitor_only, NULL, +- N_("clear fsmonitor valid bit"), +- PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG}, ++ { ++ .type = OPTION_SET_INT, ++ .long_name = "fsmonitor-valid", ++ .value = &mark_fsmonitor_only, ++ .help = N_("mark files as fsmonitor valid"), ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = MARK_FLAG, ++ }, ++ { ++ .type = OPTION_SET_INT, ++ .long_name = "no-fsmonitor-valid", ++ .value = &mark_fsmonitor_only, ++ .help = N_("clear fsmonitor valid bit"), ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = UNMARK_FLAG, ++ }, + OPT_END() + }; + +diff --git a/builtin/write-tree.c b/builtin/write-tree.c +index 43f233e69b0..5a8dc377ec0 100644 +--- a/builtin/write-tree.c ++++ b/builtin/write-tree.c +@@ -31,10 +31,14 @@ int cmd_write_tree(int argc, + WRITE_TREE_MISSING_OK), + OPT_STRING(0, "prefix", &tree_prefix, N_("<prefix>/"), + N_("write tree object for a subdirectory <prefix>")), +- { OPTION_BIT, 0, "ignore-cache-tree", &flags, NULL, +- N_("only useful for debugging"), +- PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, NULL, +- WRITE_TREE_IGNORE_CACHE_TREE }, ++ { ++ .type = OPTION_BIT, ++ .long_name = "ignore-cache-tree", ++ .value = &flags, ++ .help = N_("only useful for debugging"), ++ .flags = PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, ++ .defval = WRITE_TREE_IGNORE_CACHE_TREE, ++ }, + OPT_END() + }; + +diff --git a/diff.c b/diff.c +index 08f5e00a2cc..f2fcc7f3c22 100644 +--- a/diff.c ++++ b/diff.c +@@ -5892,10 +5892,15 @@ struct option *add_diff_options(const struct option *opts, + OPT_CALLBACK_F(0, "diff-filter", options, N_("[(A|C|D|M|R|T|U|X|B)...[*]]"), + N_("select files by diff type"), + PARSE_OPT_NONEG, diff_opt_diff_filter), +- { OPTION_CALLBACK, 0, "output", options, N_("<file>"), +- N_("output to a specific file"), +- PARSE_OPT_NONEG, NULL, 0, diff_opt_output }, +- ++ { ++ .type = OPTION_CALLBACK, ++ .long_name = "output", ++ .value = options, ++ .argh = N_("<file>"), ++ .help = N_("output to a specific file"), ++ .flags = PARSE_OPT_NONEG, ++ .ll_callback = diff_opt_output, ++ }, + OPT_END() + }; + +diff --git a/ref-filter.h b/ref-filter.h +index 013d4cfa64b..c98c4fbd4c1 100644 +--- a/ref-filter.h ++++ b/ref-filter.h +@@ -114,11 +114,16 @@ struct ref_format { + } + + /* Macros for checking --merged and --no-merged options */ +-#define _OPT_MERGED_NO_MERGED(option, filter, h) \ +- { OPTION_CALLBACK, 0, option, (filter), N_("commit"), (h), \ +- PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NONEG, \ +- parse_opt_merge_filter, (intptr_t) "HEAD" \ +- } ++#define _OPT_MERGED_NO_MERGED(option, filter, h) { \ ++ .type = OPTION_CALLBACK, \ ++ .long_name = option, \ ++ .value = (filter), \ ++ .argh = N_("commit"), \ ++ .help = (h), \ ++ .flags = PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NONEG, \ ++ .callback = parse_opt_merge_filter, \ ++ .defval = (intptr_t) "HEAD", \ ++} + #define OPT_MERGED(f, h) _OPT_MERGED_NO_MERGED("merged", f, h) + #define OPT_NO_MERGED(f, h) _OPT_MERGED_NO_MERGED("no-merged", f, h) + +diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c +index bfe45ec68b0..997f55fd45b 100644 +--- a/t/helper/test-parse-options.c ++++ b/t/helper/test-parse-options.c +@@ -124,8 +124,15 @@ int cmd__parse_options(int argc, const char **argv) + struct option options[] = { + OPT_BOOL(0, "yes", &boolean, "get a boolean"), + OPT_BOOL('D', "no-doubt", &boolean, "begins with 'no-'"), +- { OPTION_SET_INT, 'B', "no-fear", &boolean, NULL, +- "be brave", PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1 }, ++ { ++ .type = OPTION_SET_INT, ++ .short_name = 'B', ++ .long_name = "no-fear", ++ .value = &boolean, ++ .help = "be brave", ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ .defval = 1, ++ }, + OPT_COUNTUP('b', "boolean", &boolean, "increment by one"), + OPT_BIT('4', "or4", &boolean, + "bitwise-or boolean with ...0100", 4), +@@ -155,12 +162,27 @@ int cmd__parse_options(int argc, const char **argv) + OPT_GROUP("Magic arguments"), + OPT_NUMBER_CALLBACK(&integer, "set integer to NUM", + number_callback), +- { OPTION_COUNTUP, '+', NULL, &boolean, NULL, "same as -b", +- PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH }, +- { OPTION_COUNTUP, 0, "ambiguous", &ambiguous, NULL, +- "positive ambiguity", PARSE_OPT_NOARG | PARSE_OPT_NONEG }, +- { OPTION_COUNTUP, 0, "no-ambiguous", &ambiguous, NULL, +- "negative ambiguity", PARSE_OPT_NOARG | PARSE_OPT_NONEG }, ++ { ++ .type = OPTION_COUNTUP, ++ .short_name = '+', ++ .value = &boolean, ++ .help = "same as -b", ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH, ++ }, ++ { ++ .type = OPTION_COUNTUP, ++ .long_name = "ambiguous", ++ .value = &ambiguous, ++ .help = "positive ambiguity", ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ }, ++ { ++ .type = OPTION_COUNTUP, ++ .long_name = "no-ambiguous", ++ .value = &ambiguous, ++ .help = "negative ambiguity", ++ .flags = PARSE_OPT_NOARG | PARSE_OPT_NONEG, ++ }, + OPT_GROUP("Standard options"), + OPT__ABBREV(&abbrev), + OPT__VERBOSE(&verbose, "be verbose"), + +-- +2.49.0.805.g082f7c87e0.dirty + + +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:38 +0200 +Subject: [PATCH v4 3/7] parse-options: support unit factors in + `OPT_INTEGER()` +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +There are two main differences between `OPT_INTEGER()` and +`OPT_MAGNITUDE()`: + + - The former parses signed integers whereas the latter parses unsigned + integers. + + - The latter parses unit factors like 'k', 'm' or 'g'. + +While the first difference makes obvious sense, there isn't really a +good reason why signed integers shouldn't support unit factors, too. + +This inconsistency will also become a bit of a problem with subsequent +commits, where we will fix a couple of callsites that pass an unsigned +integer to `OPT_INTEGER()`. There are three options: + + - We could adapt those users to instead pass a signed integer, but + this would needlessly extend the range of accepted integer values. + + - We could convert them to use `OPT_MAGNITUDE()`, as it only accepts + unsigned integers. But now we have the inconsistency that we also + start to accept unit factors. + + - We could introduce `OPT_UNSIGNED()` as equivalent to `OPT_INTEGER()` + so that it knows to only accept unsigned integers without unit + suffix. + +Introducing a whole new option type feels a bit excessive. There also +isn't really a good reason why `OPT_INTEGER()` cannot be extended to +also accept unit factors: all valid values passed to such options cannot +have a unit factors right now, so there wouldn't be any ambiguity. + +Refactor `OPT_INTEGER()` to use `git_parse_int()`, which knows to +interpret unit factors. This removes the inconsistency between the +signed and unsigned options so that we can easily fix up callsites that +pass the wrong integer type right now. + +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + Documentation/technical/api-parse-options.adoc | 6 ++++-- + parse-options.c | 8 ++++---- + t/t0040-parse-options.sh | 4 +++- + 3 files changed, 11 insertions(+), 7 deletions(-) + +diff --git a/Documentation/technical/api-parse-options.adoc b/Documentation/technical/api-parse-options.adoc +index 61fa6ee1678..63acfb419bd 100644 +--- a/Documentation/technical/api-parse-options.adoc ++++ b/Documentation/technical/api-parse-options.adoc +@@ -211,8 +211,10 @@ There are some macros to easily define options: + Use of `--no-option` will clear the list of preceding values. + + `OPT_INTEGER(short, long, &int_var, description)`:: +- Introduce an option with integer argument. +- The integer is put into `int_var`. ++ Introduce an option with integer argument. The argument must be a ++ integer and may include a suffix of 'k', 'm' or 'g' to ++ scale the provided value by 1024, 1024^2 or 1024^3 respectively. ++ The scaled value is put into `int_var`. + + `OPT_MAGNITUDE(short, long, &unsigned_long_var, description)`:: + Introduce an option with a size argument. The argument must be a +diff --git a/parse-options.c b/parse-options.c +index 35fbb3b0d63..b287436e81a 100644 +--- a/parse-options.c ++++ b/parse-options.c +@@ -73,7 +73,7 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, + enum opt_parsed flags, + const char **argp) + { +- const char *s, *arg; ++ const char *arg; + const int unset = flags & OPT_UNSET; + int err; + +@@ -185,9 +185,9 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, + if (!*arg) + return error(_("%s expects a numerical value"), + optname(opt, flags)); +- *(int *)opt->value = strtol(arg, (char **)&s, 10); +- if (*s) +- return error(_("%s expects a numerical value"), ++ if (!git_parse_int(arg, opt->value)) ++ return error(_("%s expects an integer value" ++ " with an optional k/m/g suffix"), + optname(opt, flags)); + return 0; + +diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh +index 2fe3522305f..0c538c4b437 100755 +--- a/t/t0040-parse-options.sh ++++ b/t/t0040-parse-options.sh +@@ -111,7 +111,9 @@ test_expect_success 'OPT_BOOL() no negation #2' 'check_unknown_i18n --no-no-fear + + test_expect_success 'OPT_BOOL() positivation' 'check boolean: 0 -D --doubt' + +-test_expect_success 'OPT_INT() negative' 'check integer: -2345 -i -2345' ++test_expect_success 'OPT_INTEGER() negative' 'check integer: -2345 -i -2345' ++test_expect_success 'OPT_INTEGER() kilo' 'check integer: 239616 -i 234k' ++test_expect_success 'OPT_INTEGER() negative kilo' 'check integer: -239616 -i -234k' + + test_expect_success 'OPT_MAGNITUDE() simple' ' + check magnitude: 2345678 -m 2345678 + +-- +2.49.0.805.g082f7c87e0.dirty + + +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:39 +0200 +Subject: [PATCH v4 4/7] parse-options: rename `OPT_MAGNITUDE()` to + `OPT_UNSIGNED()` +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +With the preceding commit, `OPT_INTEGER()` has learned to support unit +factors. Consequently, the major differencen between `OPT_INTEGER()` and +`OPT_MAGNITUDE()` isn't the support of unit factors anymore, as both of +them do support them now. Instead, the difference is that one handles +signed and the other handles unsigned integers. + +Adapt the name of `OPT_MAGNITUDE()` accordingly by renaming it to +`OPT_UNSIGNED()`. + +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + Documentation/technical/api-parse-options.adoc | 4 +-- + builtin/gc.c | 4 +-- + builtin/multi-pack-index.c | 2 +- + builtin/pack-objects.c | 8 ++--- + builtin/repack.c | 8 ++--- + parse-options.c | 6 ++-- + parse-options.h | 6 ++-- + t/helper/test-parse-options.c | 6 ++-- + t/t0040-parse-options.sh | 50 +++++++++++++------------- + 9 files changed, 47 insertions(+), 47 deletions(-) + +diff --git a/Documentation/technical/api-parse-options.adoc b/Documentation/technical/api-parse-options.adoc +index 63acfb419bd..880eb946425 100644 +--- a/Documentation/technical/api-parse-options.adoc ++++ b/Documentation/technical/api-parse-options.adoc +@@ -216,8 +216,8 @@ There are some macros to easily define options: + scale the provided value by 1024, 1024^2 or 1024^3 respectively. + The scaled value is put into `int_var`. + +-`OPT_MAGNITUDE(short, long, &unsigned_long_var, description)`:: +- Introduce an option with a size argument. The argument must be a ++`OPT_UNSIGNED(short, long, &unsigned_long_var, description)`:: ++ Introduce an option with an unsigned integer argument. The argument must be a + non-negative integer and may include a suffix of 'k', 'm' or 'g' to + scale the provided value by 1024, 1024^2 or 1024^3 respectively. + The scaled value is put into `unsigned_long_var`. +diff --git a/builtin/gc.c b/builtin/gc.c +index 6707a26bc6e..b32cf937cdf 100644 +--- a/builtin/gc.c ++++ b/builtin/gc.c +@@ -709,8 +709,8 @@ struct repository *repo UNUSED) + .defval = (intptr_t)prune_expire_arg, + }, + OPT_BOOL(0, "cruft", &cfg.cruft_packs, N_("pack unreferenced objects separately")), +- OPT_MAGNITUDE(0, "max-cruft-size", &cfg.max_cruft_size, +- N_("with --cruft, limit the size of new cruft packs")), ++ OPT_UNSIGNED(0, "max-cruft-size", &cfg.max_cruft_size, ++ N_("with --cruft, limit the size of new cruft packs")), + OPT_BOOL(0, "aggressive", &aggressive, N_("be more thorough (increased runtime)")), + OPT_BOOL_F(0, "auto", &opts.auto_flag, N_("enable auto-gc mode"), + PARSE_OPT_NOCOMPLETE), +diff --git a/builtin/multi-pack-index.c b/builtin/multi-pack-index.c +index 2a938466f53..e4820fd721a 100644 +--- a/builtin/multi-pack-index.c ++++ b/builtin/multi-pack-index.c +@@ -245,7 +245,7 @@ static int cmd_multi_pack_index_repack(int argc, const char **argv, + { + struct option *options; + static struct option builtin_multi_pack_index_repack_options[] = { +- OPT_MAGNITUDE(0, "batch-size", &opts.batch_size, ++ OPT_UNSIGNED(0, "batch-size", &opts.batch_size, + N_("during repack, collect pack-files of smaller size into a batch that is larger than this size")), + OPT_BIT(0, "progress", &opts.flags, + N_("force progress reporting"), MIDX_PROGRESS), +diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c +index 79e1e6fb52b..9328812e286 100644 +--- a/builtin/pack-objects.c ++++ b/builtin/pack-objects.c +@@ -4399,16 +4399,16 @@ int cmd_pack_objects(int argc, + OPT_CALLBACK_F(0, "index-version", &pack_idx_opts, N_("<version>[,<offset>]"), + N_("write the pack index file in the specified idx format version"), + PARSE_OPT_NONEG, option_parse_index_version), +- OPT_MAGNITUDE(0, "max-pack-size", &pack_size_limit, +- N_("maximum size of each output pack file")), ++ OPT_UNSIGNED(0, "max-pack-size", &pack_size_limit, ++ N_("maximum size of each output pack file")), + OPT_BOOL(0, "local", &local, + N_("ignore borrowed objects from alternate object store")), + OPT_BOOL(0, "incremental", &incremental, + N_("ignore packed objects")), + OPT_INTEGER(0, "window", &window, + N_("limit pack window by objects")), +- OPT_MAGNITUDE(0, "window-memory", &window_memory_limit, +- N_("limit pack window by memory in addition to object limit")), ++ OPT_UNSIGNED(0, "window-memory", &window_memory_limit, ++ N_("limit pack window by memory in addition to object limit")), + OPT_INTEGER(0, "depth", &depth, + N_("maximum length of delta chain allowed in the resulting pack")), + OPT_BOOL(0, "reuse-delta", &reuse_delta, +diff --git a/builtin/repack.c b/builtin/repack.c +index 75e3752353a..8bf9941b2c2 100644 +--- a/builtin/repack.c ++++ b/builtin/repack.c +@@ -1202,8 +1202,8 @@ int cmd_repack(int argc, + PACK_CRUFT), + OPT_STRING(0, "cruft-expiration", &cruft_expiration, N_("approxidate"), + N_("with --cruft, expire objects older than this")), +- OPT_MAGNITUDE(0, "max-cruft-size", &cruft_po_args.max_pack_size, +- N_("with --cruft, limit the size of new cruft packs")), ++ OPT_UNSIGNED(0, "max-cruft-size", &cruft_po_args.max_pack_size, ++ N_("with --cruft, limit the size of new cruft packs")), + OPT_BOOL('d', NULL, &delete_redundant, + N_("remove redundant packs, and run git-prune-packed")), + OPT_BOOL('f', NULL, &po_args.no_reuse_delta, +@@ -1233,8 +1233,8 @@ int cmd_repack(int argc, + N_("limits the maximum delta depth")), + OPT_STRING(0, "threads", &opt_threads, N_("n"), + N_("limits the maximum number of threads")), +- OPT_MAGNITUDE(0, "max-pack-size", &po_args.max_pack_size, +- N_("maximum size of each packfile")), ++ OPT_UNSIGNED(0, "max-pack-size", &po_args.max_pack_size, ++ N_("maximum size of each packfile")), + OPT_PARSE_LIST_OBJECTS_FILTER(&po_args.filter_options), + OPT_BOOL(0, "pack-kept-objects", &pack_kept_objects, + N_("repack objects in packs marked with .keep")), +diff --git a/parse-options.c b/parse-options.c +index b287436e81a..d23e587e98b 100644 +--- a/parse-options.c ++++ b/parse-options.c +@@ -191,7 +191,7 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, + optname(opt, flags)); + return 0; + +- case OPTION_MAGNITUDE: ++ case OPTION_UNSIGNED: + if (unset) { + *(unsigned long *)opt->value = 0; + return 0; +@@ -656,7 +656,7 @@ static void show_negated_gitcomp(const struct option *opts, int show_all, + case OPTION_STRING: + case OPTION_FILENAME: + case OPTION_INTEGER: +- case OPTION_MAGNITUDE: ++ case OPTION_UNSIGNED: + case OPTION_CALLBACK: + case OPTION_BIT: + case OPTION_NEGBIT: +@@ -708,7 +708,7 @@ static int show_gitcomp(const struct option *opts, int show_all) + case OPTION_STRING: + case OPTION_FILENAME: + case OPTION_INTEGER: +- case OPTION_MAGNITUDE: ++ case OPTION_UNSIGNED: + case OPTION_CALLBACK: + if (opts->flags & PARSE_OPT_NOARG) + break; +diff --git a/parse-options.h b/parse-options.h +index 997ffbee805..14e4df1ee21 100644 +--- a/parse-options.h ++++ b/parse-options.h +@@ -25,7 +25,7 @@ enum parse_opt_type { + /* options with arguments (usually) */ + OPTION_STRING, + OPTION_INTEGER, +- OPTION_MAGNITUDE, ++ OPTION_UNSIGNED, + OPTION_CALLBACK, + OPTION_LOWLEVEL_CALLBACK, + OPTION_FILENAME +@@ -270,8 +270,8 @@ struct option { + #define OPT_CMDMODE(s, l, v, h, i) OPT_CMDMODE_F(s, l, v, h, i, 0) + + #define OPT_INTEGER(s, l, v, h) OPT_INTEGER_F(s, l, v, h, 0) +-#define OPT_MAGNITUDE(s, l, v, h) { \ +- .type = OPTION_MAGNITUDE, \ ++#define OPT_UNSIGNED(s, l, v, h) { \ ++ .type = OPTION_UNSIGNED, \ + .short_name = (s), \ + .long_name = (l), \ + .value = (v), \ +diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c +index 997f55fd45b..fc3e2861c26 100644 +--- a/t/helper/test-parse-options.c ++++ b/t/helper/test-parse-options.c +@@ -6,7 +6,7 @@ + + static int boolean = 0; + static int integer = 0; +-static unsigned long magnitude = 0; ++static unsigned long unsigned_integer = 0; + static timestamp_t timestamp; + static int abbrev = 7; + static int verbose = -1; /* unspecified */ +@@ -140,7 +140,7 @@ int cmd__parse_options(int argc, const char **argv) + OPT_GROUP(""), + OPT_INTEGER('i', "integer", &integer, "get a integer"), + OPT_INTEGER('j', NULL, &integer, "get a integer, too"), +- OPT_MAGNITUDE('m', "magnitude", &magnitude, "get a magnitude"), ++ OPT_UNSIGNED('u', "unsigned", &unsigned_integer, "get an unsigned integer"), + OPT_SET_INT(0, "set23", &integer, "set integer to 23", 23), + OPT_CMDMODE(0, "mode1", &integer, "set integer to 1 (cmdmode option)", 1), + OPT_CMDMODE(0, "mode2", &integer, "set integer to 2 (cmdmode option)", 2), +@@ -210,7 +210,7 @@ int cmd__parse_options(int argc, const char **argv) + } + show(&expect, &ret, "boolean: %d", boolean); + show(&expect, &ret, "integer: %d", integer); +- show(&expect, &ret, "magnitude: %lu", magnitude); ++ show(&expect, &ret, "unsigned: %lu", unsigned_integer); + show(&expect, &ret, "timestamp: %"PRItime, timestamp); + show(&expect, &ret, "string: %s", string ? string : "(not set)"); + show(&expect, &ret, "abbrev: %d", abbrev); +diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh +index 0c538c4b437..65a11c8dbc8 100755 +--- a/t/t0040-parse-options.sh ++++ b/t/t0040-parse-options.sh +@@ -23,7 +23,7 @@ usage: test-tool parse-options <options> + -i, --[no-]integer <n> + get a integer + -j <n> get a integer, too +- -m, --magnitude <n> get a magnitude ++ -u, --unsigned <n> get an unsigned integer + --[no-]set23 set integer to 23 + --mode1 set integer to 1 (cmdmode option) + --mode2 set integer to 2 (cmdmode option) +@@ -115,30 +115,30 @@ test_expect_success 'OPT_INTEGER() negative' 'check integer: -2345 -i -2345' + test_expect_success 'OPT_INTEGER() kilo' 'check integer: 239616 -i 234k' + test_expect_success 'OPT_INTEGER() negative kilo' 'check integer: -239616 -i -234k' + +-test_expect_success 'OPT_MAGNITUDE() simple' ' +- check magnitude: 2345678 -m 2345678 ++test_expect_success 'OPT_UNSIGNED() simple' ' ++ check unsigned: 2345678 -u 2345678 + ' + +-test_expect_success 'OPT_MAGNITUDE() kilo' ' +- check magnitude: 239616 -m 234k ++test_expect_success 'OPT_UNSIGNED() kilo' ' ++ check unsigned: 239616 -u 234k + ' + +-test_expect_success 'OPT_MAGNITUDE() mega' ' +- check magnitude: 104857600 -m 100m ++test_expect_success 'OPT_UNSIGNED() mega' ' ++ check unsigned: 104857600 -u 100m + ' + +-test_expect_success 'OPT_MAGNITUDE() giga' ' +- check magnitude: 1073741824 -m 1g ++test_expect_success 'OPT_UNSIGNED() giga' ' ++ check unsigned: 1073741824 -u 1g + ' + +-test_expect_success 'OPT_MAGNITUDE() 3giga' ' +- check magnitude: 3221225472 -m 3g ++test_expect_success 'OPT_UNSIGNED() 3giga' ' ++ check unsigned: 3221225472 -u 3g + ' + + cat >expect <<\EOF + boolean: 2 + integer: 1729 +-magnitude: 16384 ++unsigned: 16384 + timestamp: 0 + string: 123 + abbrev: 7 +@@ -149,7 +149,7 @@ file: prefix/my.file + EOF + + test_expect_success 'short options' ' +- test-tool parse-options -s123 -b -i 1729 -m 16k -b -vv -n -F my.file \ ++ test-tool parse-options -s123 -b -i 1729 -u 16k -b -vv -n -F my.file \ + >output 2>output.err && + test_cmp expect output && + test_must_be_empty output.err +@@ -158,7 +158,7 @@ test_expect_success 'short options' ' + cat >expect <<\EOF + boolean: 2 + integer: 1729 +-magnitude: 16384 ++unsigned: 16384 + timestamp: 0 + string: 321 + abbrev: 10 +@@ -169,7 +169,7 @@ file: prefix/fi.le + EOF + + test_expect_success 'long options' ' +- test-tool parse-options --boolean --integer 1729 --magnitude 16k \ ++ test-tool parse-options --boolean --integer 1729 --unsigned 16k \ + --boolean --string2=321 --verbose --verbose --no-dry-run \ + --abbrev=10 --file fi.le --obsolete \ + >output 2>output.err && +@@ -181,7 +181,7 @@ test_expect_success 'abbreviate to something longer than SHA1 length' ' + cat >expect <<-EOF && + boolean: 0 + integer: 0 +- magnitude: 0 ++ unsigned: 0 + timestamp: 0 + string: (not set) + abbrev: 100 +@@ -255,7 +255,7 @@ test_expect_success 'superfluous value provided: cmdmode' ' + cat >expect <<\EOF + boolean: 1 + integer: 13 +-magnitude: 0 ++unsigned: 0 + timestamp: 0 + string: 123 + abbrev: 7 +@@ -278,7 +278,7 @@ test_expect_success 'intermingled arguments' ' + cat >expect <<\EOF + boolean: 0 + integer: 2 +-magnitude: 0 ++unsigned: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -345,7 +345,7 @@ cat >expect <<\EOF + Callback: "four", 0 + boolean: 5 + integer: 4 +-magnitude: 0 ++unsigned: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -370,7 +370,7 @@ test_expect_success 'OPT_CALLBACK() and callback errors work' ' + cat >expect <<\EOF + boolean: 1 + integer: 23 +-magnitude: 0 ++unsigned: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -449,7 +449,7 @@ test_expect_success 'OPT_NUMBER_CALLBACK() works' ' + cat >expect <<\EOF + boolean: 0 + integer: 0 +-magnitude: 0 ++unsigned: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -773,14 +773,14 @@ test_expect_success 'subcommands are incompatible with KEEP_DASHDASH unless in c + grep ^BUG err + ' + +-test_expect_success 'negative magnitude' ' +- test_must_fail test-tool parse-options --magnitude -1 >out 2>err && ++test_expect_success 'negative unsigned' ' ++ test_must_fail test-tool parse-options --unsigned -1 >out 2>err && + grep "non-negative integer" err && + test_must_be_empty out + ' + +-test_expect_success 'magnitude with units but no numbers' ' +- test_must_fail test-tool parse-options --magnitude m >out 2>err && ++test_expect_success 'unsigned with units but no numbers' ' ++ test_must_fail test-tool parse-options --unsigned m >out 2>err && + grep "non-negative integer" err && + test_must_be_empty out + ' + +-- +2.49.0.805.g082f7c87e0.dirty + + +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:40 +0200 +Subject: [PATCH v4 5/7] parse-options: introduce precision handling for + `OPTION_INTEGER` +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +The `OPTION_INTEGER` option type accepts a signed integer. The type of +the underlying integer is a simple `int`, which restricts the range of +values accepted by such options. But there is a catch: because the +caller provides a pointer to the value via the `.value` field, which is +a simple void pointer. This has two consequences: + + - There is no check whether the passed value is sufficiently long to + store the entire range of `int`. This can lead to integer wraparound + in the best case and out-of-bounds writes in the worst case. + + - Even when a caller knows that they want to store a value larger than + `INT_MAX` they don't have a way to do so. + +In practice this doesn't tend to be a huge issue because users typically +don't end up passing huge values to most commands. But the parsing logic +is demonstrably broken, and it is too easy to get the calling convention +wrong. + +Improve the situation by introducing a new `precision` field into the +structure. This field gets assigned automatically by `OPT_INTEGER_F()` +and tracks the size of the passed value. Like this it becomes possible +for the caller to pass arbitrarily-sized integers and the underlying +logic knows to handle it correctly by doing range checks. Furthermore, +convert the code to use `strtoimax()` intstead of `strtol()` so that we +can also parse values larger than `LONG_MAX`. + +Note that we do not yet assert signedness of the passed variable, which +is another source of bugs. This will be handled in a subsequent commit. + +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + builtin/fmt-merge-msg.c | 2 ++ + builtin/merge.c | 1 + + builtin/show-branch.c | 1 + + builtin/tag.c | 1 + + parse-options.c | 52 ++++++++++++++++++++++++++++++++----------- + parse-options.h | 6 +++++ + t/helper/test-parse-options.c | 3 +++ + t/t0040-parse-options.sh | 23 ++++++++++++++++++- + 8 files changed, 75 insertions(+), 14 deletions(-) + +diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c +index 240cdb474bc..3b6aac2cf7f 100644 +--- a/builtin/fmt-merge-msg.c ++++ b/builtin/fmt-merge-msg.c +@@ -24,6 +24,7 @@ int cmd_fmt_merge_msg(int argc, + .type = OPTION_INTEGER, + .long_name = "log", + .value = &shortlog_len, ++ .precision = sizeof(shortlog_len), + .argh = N_("n"), + .help = N_("populate log with at most <n> entries from shortlog"), + .flags = PARSE_OPT_OPTARG, +@@ -33,6 +34,7 @@ int cmd_fmt_merge_msg(int argc, + .type = OPTION_INTEGER, + .long_name = "summary", + .value = &shortlog_len, ++ .precision = sizeof(shortlog_len), + .argh = N_("n"), + .help = N_("alias for --log (deprecated)"), + .flags = PARSE_OPT_OPTARG | PARSE_OPT_HIDDEN, +diff --git a/builtin/merge.c b/builtin/merge.c +index 21787d45165..9ab10c7db0a 100644 +--- a/builtin/merge.c ++++ b/builtin/merge.c +@@ -254,6 +254,7 @@ static struct option builtin_merge_options[] = { + .type = OPTION_INTEGER, + .long_name = "log", + .value = &shortlog_len, ++ .precision = sizeof(shortlog_len), + .argh = N_("n"), + .help = N_("add (at most <n>) entries from shortlog to merge commit message"), + .flags = PARSE_OPT_OPTARG, +diff --git a/builtin/show-branch.c b/builtin/show-branch.c +index dab37019d29..b549d8c3f5b 100644 +--- a/builtin/show-branch.c ++++ b/builtin/show-branch.c +@@ -671,6 +671,7 @@ int cmd_show_branch(int ac, + .type = OPTION_INTEGER, + .long_name = "more", + .value = &extra, ++ .precision = sizeof(extra), + .argh = N_("n"), + .help = N_("show <n> more commits after the common ancestor"), + .flags = PARSE_OPT_OPTARG, +diff --git a/builtin/tag.c b/builtin/tag.c +index b266f12bb48..7597d93c71b 100644 +--- a/builtin/tag.c ++++ b/builtin/tag.c +@@ -483,6 +483,7 @@ int cmd_tag(int argc, + .type = OPTION_INTEGER, + .short_name = 'n', + .value = &filter.lines, ++ .precision = sizeof(filter.lines), + .argh = N_("n"), + .help = N_("print <n> lines of each tag message"), + .flags = PARSE_OPT_OPTARG, +diff --git a/parse-options.c b/parse-options.c +index d23e587e98b..768718a3972 100644 +--- a/parse-options.c ++++ b/parse-options.c +@@ -172,25 +172,51 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, + return (*opt->ll_callback)(p, opt, p_arg, p_unset); + } + case OPTION_INTEGER: ++ { ++ intmax_t upper_bound = INTMAX_MAX >> (bitsizeof(intmax_t) - CHAR_BIT * opt->precision); ++ intmax_t lower_bound = -upper_bound - 1; ++ intmax_t value; ++ + if (unset) { +- *(int *)opt->value = 0; +- return 0; +- } +- if (opt->flags & PARSE_OPT_OPTARG && !p->opt) { +- *(int *)opt->value = opt->defval; +- return 0; +- } +- if (get_arg(p, opt, flags, &arg)) ++ value = 0; ++ } else if (opt->flags & PARSE_OPT_OPTARG && !p->opt) { ++ value = opt->defval; ++ } else if (get_arg(p, opt, flags, &arg)) { + return -1; +- if (!*arg) ++ } else if (!*arg) { + return error(_("%s expects a numerical value"), + optname(opt, flags)); +- if (!git_parse_int(arg, opt->value)) +- return error(_("%s expects an integer value" +- " with an optional k/m/g suffix"), ++ } else if (!git_parse_signed(arg, &value, upper_bound)) { ++ if (errno == ERANGE) ++ return error(_("value %s for %s not in range [%"PRIdMAX",%"PRIdMAX"]"), ++ arg, optname(opt, flags), lower_bound, upper_bound); ++ ++ return error(_("%s expects an integer value with an optional k/m/g suffix"), + optname(opt, flags)); +- return 0; ++ } ++ ++ if (value < lower_bound) ++ return error(_("value %s for %s not in range [%"PRIdMAX",%"PRIdMAX"]"), ++ arg, optname(opt, flags), lower_bound, upper_bound); + ++ switch (opt->precision) { ++ case 1: ++ *(int8_t *)opt->value = value; ++ return 0; ++ case 2: ++ *(int16_t *)opt->value = value; ++ return 0; ++ case 4: ++ *(int32_t *)opt->value = value; ++ return 0; ++ case 8: ++ *(int64_t *)opt->value = value; ++ return 0; ++ default: ++ BUG("invalid precision for option %s", ++ optname(opt, flags)); ++ } ++ } + case OPTION_UNSIGNED: + if (unset) { + *(unsigned long *)opt->value = 0; +diff --git a/parse-options.h b/parse-options.h +index 14e4df1ee21..4c430c7273c 100644 +--- a/parse-options.h ++++ b/parse-options.h +@@ -92,6 +92,10 @@ typedef int parse_opt_subcommand_fn(int argc, const char **argv, + * `value`:: + * stores pointers to the values to be filled. + * ++ * `precision`:: ++ * precision of the integer pointed to by `value` in number of bytes. Should ++ * typically be its `sizeof()`. ++ * + * `argh`:: + * token to explain the kind of argument this option wants. Does not + * begin in capital letter, and does not end with a full stop. +@@ -151,6 +155,7 @@ struct option { + int short_name; + const char *long_name; + void *value; ++ size_t precision; + const char *argh; + const char *help; + +@@ -214,6 +219,7 @@ struct option { + .short_name = (s), \ + .long_name = (l), \ + .value = (v), \ ++ .precision = sizeof(*v), \ + .argh = N_("n"), \ + .help = (h), \ + .flags = (f), \ +diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c +index fc3e2861c26..3689aee8315 100644 +--- a/t/helper/test-parse-options.c ++++ b/t/helper/test-parse-options.c +@@ -120,6 +120,7 @@ int cmd__parse_options(int argc, const char **argv) + }; + struct string_list expect = STRING_LIST_INIT_NODUP; + struct string_list list = STRING_LIST_INIT_NODUP; ++ int16_t i16 = 0; + + struct option options[] = { + OPT_BOOL(0, "yes", &boolean, "get a boolean"), +@@ -139,6 +140,7 @@ int cmd__parse_options(int argc, const char **argv) + OPT_NEGBIT(0, "neg-or4", &boolean, "same as --no-or4", 4), + OPT_GROUP(""), + OPT_INTEGER('i', "integer", &integer, "get a integer"), ++ OPT_INTEGER(0, "i16", &i16, "get a 16 bit integer"), + OPT_INTEGER('j', NULL, &integer, "get a integer, too"), + OPT_UNSIGNED('u', "unsigned", &unsigned_integer, "get an unsigned integer"), + OPT_SET_INT(0, "set23", &integer, "set integer to 23", 23), +@@ -210,6 +212,7 @@ int cmd__parse_options(int argc, const char **argv) + } + show(&expect, &ret, "boolean: %d", boolean); + show(&expect, &ret, "integer: %d", integer); ++ show(&expect, &ret, "i16: %"PRIdMAX, (intmax_t) i16); + show(&expect, &ret, "unsigned: %lu", unsigned_integer); + show(&expect, &ret, "timestamp: %"PRItime, timestamp); + show(&expect, &ret, "string: %s", string ? string : "(not set)"); +diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh +index 65a11c8dbc8..be785547ead 100755 +--- a/t/t0040-parse-options.sh ++++ b/t/t0040-parse-options.sh +@@ -22,6 +22,7 @@ usage: test-tool parse-options <options> + + -i, --[no-]integer <n> + get a integer ++ --[no-]i16 <n> get a 16 bit integer + -j <n> get a integer, too + -u, --unsigned <n> get an unsigned integer + --[no-]set23 set integer to 23 +@@ -138,6 +139,7 @@ test_expect_success 'OPT_UNSIGNED() 3giga' ' + cat >expect <<\EOF + boolean: 2 + integer: 1729 ++i16: 0 + unsigned: 16384 + timestamp: 0 + string: 123 +@@ -158,6 +160,7 @@ test_expect_success 'short options' ' + cat >expect <<\EOF + boolean: 2 + integer: 1729 ++i16: 9000 + unsigned: 16384 + timestamp: 0 + string: 321 +@@ -169,7 +172,7 @@ file: prefix/fi.le + EOF + + test_expect_success 'long options' ' +- test-tool parse-options --boolean --integer 1729 --unsigned 16k \ ++ test-tool parse-options --boolean --integer 1729 --i16 9000 --unsigned 16k \ + --boolean --string2=321 --verbose --verbose --no-dry-run \ + --abbrev=10 --file fi.le --obsolete \ + >output 2>output.err && +@@ -181,6 +184,7 @@ test_expect_success 'abbreviate to something longer than SHA1 length' ' + cat >expect <<-EOF && + boolean: 0 + integer: 0 ++ i16: 0 + unsigned: 0 + timestamp: 0 + string: (not set) +@@ -255,6 +259,7 @@ test_expect_success 'superfluous value provided: cmdmode' ' + cat >expect <<\EOF + boolean: 1 + integer: 13 ++i16: 0 + unsigned: 0 + timestamp: 0 + string: 123 +@@ -278,6 +283,7 @@ test_expect_success 'intermingled arguments' ' + cat >expect <<\EOF + boolean: 0 + integer: 2 ++i16: 0 + unsigned: 0 + timestamp: 0 + string: (not set) +@@ -345,6 +351,7 @@ cat >expect <<\EOF + Callback: "four", 0 + boolean: 5 + integer: 4 ++i16: 0 + unsigned: 0 + timestamp: 0 + string: (not set) +@@ -370,6 +377,7 @@ test_expect_success 'OPT_CALLBACK() and callback errors work' ' + cat >expect <<\EOF + boolean: 1 + integer: 23 ++i16: 0 + unsigned: 0 + timestamp: 0 + string: (not set) +@@ -449,6 +457,7 @@ test_expect_success 'OPT_NUMBER_CALLBACK() works' ' + cat >expect <<\EOF + boolean: 0 + integer: 0 ++i16: 0 + unsigned: 0 + timestamp: 0 + string: (not set) +@@ -785,4 +794,16 @@ test_expect_success 'unsigned with units but no numbers' ' + test_must_be_empty out + ' + ++test_expect_success 'i16 limits range' ' ++ test-tool parse-options --i16 32767 >out && ++ test_grep "i16: 32767" out && ++ test_must_fail test-tool parse-options --i16 32768 2>err && ++ test_grep "value 32768 for option .i16. not in range \[-32768,32767\]" err && ++ ++ test-tool parse-options --i16 -32768 >out && ++ test_grep "i16: -32768" out && ++ test_must_fail test-tool parse-options --i16 -32769 2>err && ++ test_grep "value -32769 for option .i16. not in range \[-32768,32767\]" err ++' ++ + test_done + +-- +2.49.0.805.g082f7c87e0.dirty + + +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:41 +0200 +Subject: [PATCH v4 6/7] parse-options: introduce precision handling for + `OPTION_UNSIGNED` +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +This commit is the equivalent to the preceding commit, but instead of +introducing precision handling for `OPTION_INTEGER` we introduce it for +`OPTION_UNSIGNED`. + +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + parse-options.c | 48 +++++++++++++++++++++++++++++++++---------- + parse-options.h | 1 + + parse.c | 2 +- + parse.h | 1 + + t/helper/test-parse-options.c | 3 +++ + t/t0040-parse-options.sh | 18 +++++++++++++++- + 6 files changed, 60 insertions(+), 13 deletions(-) + +diff --git a/parse-options.c b/parse-options.c +index 768718a3972..a9a39ecaef6 100644 +--- a/parse-options.c ++++ b/parse-options.c +@@ -197,7 +197,7 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, + + if (value < lower_bound) + return error(_("value %s for %s not in range [%"PRIdMAX",%"PRIdMAX"]"), +- arg, optname(opt, flags), lower_bound, upper_bound); ++ arg, optname(opt, flags), (intmax_t)lower_bound, (intmax_t)upper_bound); + + switch (opt->precision) { + case 1: +@@ -218,21 +218,47 @@ static enum parse_opt_result do_get_value(struct parse_opt_ctx_t *p, + } + } + case OPTION_UNSIGNED: ++ { ++ uintmax_t upper_bound = UINTMAX_MAX >> (bitsizeof(uintmax_t) - CHAR_BIT * opt->precision); ++ uintmax_t value; ++ + if (unset) { +- *(unsigned long *)opt->value = 0; +- return 0; +- } +- if (opt->flags & PARSE_OPT_OPTARG && !p->opt) { +- *(unsigned long *)opt->value = opt->defval; +- return 0; +- } +- if (get_arg(p, opt, flags, &arg)) ++ value = 0; ++ } else if (opt->flags & PARSE_OPT_OPTARG && !p->opt) { ++ value = opt->defval; ++ } else if (get_arg(p, opt, flags, &arg)) { + return -1; +- if (!git_parse_ulong(arg, opt->value)) ++ } else if (!*arg) { ++ return error(_("%s expects a numerical value"), ++ optname(opt, flags)); ++ } else if (!git_parse_unsigned(arg, &value, upper_bound)) { ++ if (errno == ERANGE) ++ return error(_("value %s for %s not in range [%"PRIdMAX",%"PRIdMAX"]"), ++ arg, optname(opt, flags), (uintmax_t) 0, upper_bound); ++ + return error(_("%s expects a non-negative integer value" + " with an optional k/m/g suffix"), + optname(opt, flags)); +- return 0; ++ } ++ ++ switch (opt->precision) { ++ case 1: ++ *(uint8_t *)opt->value = value; ++ return 0; ++ case 2: ++ *(uint16_t *)opt->value = value; ++ return 0; ++ case 4: ++ *(uint32_t *)opt->value = value; ++ return 0; ++ case 8: ++ *(uint64_t *)opt->value = value; ++ return 0; ++ default: ++ BUG("invalid precision for option %s", ++ optname(opt, flags)); ++ } ++ } + + default: + BUG("opt->type %d should not happen", opt->type); +diff --git a/parse-options.h b/parse-options.h +index 4c430c7273c..dc460a26ff1 100644 +--- a/parse-options.h ++++ b/parse-options.h +@@ -281,6 +281,7 @@ struct option { + .short_name = (s), \ + .long_name = (l), \ + .value = (v), \ ++ .precision = sizeof(*v), \ + .argh = N_("n"), \ + .help = (h), \ + .flags = PARSE_OPT_NONEG, \ +diff --git a/parse.c b/parse.c +index 3c47448ca67..48313571aab 100644 +--- a/parse.c ++++ b/parse.c +@@ -51,7 +51,7 @@ int git_parse_signed(const char *value, intmax_t *ret, intmax_t max) + return 0; + } + +-static int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max) ++int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max) + { + if (value && *value) { + char *end; +diff --git a/parse.h b/parse.h +index 6bb9a54d9ac..ea32de9a91f 100644 +--- a/parse.h ++++ b/parse.h +@@ -2,6 +2,7 @@ + #define PARSE_H + + int git_parse_signed(const char *value, intmax_t *ret, intmax_t max); ++int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max); + int git_parse_ssize_t(const char *, ssize_t *); + int git_parse_ulong(const char *, unsigned long *); + int git_parse_int(const char *value, int *ret); +diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c +index 3689aee8315..f2663dd0c07 100644 +--- a/t/helper/test-parse-options.c ++++ b/t/helper/test-parse-options.c +@@ -120,6 +120,7 @@ int cmd__parse_options(int argc, const char **argv) + }; + struct string_list expect = STRING_LIST_INIT_NODUP; + struct string_list list = STRING_LIST_INIT_NODUP; ++ uint16_t u16 = 0; + int16_t i16 = 0; + + struct option options[] = { +@@ -143,6 +144,7 @@ int cmd__parse_options(int argc, const char **argv) + OPT_INTEGER(0, "i16", &i16, "get a 16 bit integer"), + OPT_INTEGER('j', NULL, &integer, "get a integer, too"), + OPT_UNSIGNED('u', "unsigned", &unsigned_integer, "get an unsigned integer"), ++ OPT_UNSIGNED(0, "u16", &u16, "get a 16 bit unsigned integer"), + OPT_SET_INT(0, "set23", &integer, "set integer to 23", 23), + OPT_CMDMODE(0, "mode1", &integer, "set integer to 1 (cmdmode option)", 1), + OPT_CMDMODE(0, "mode2", &integer, "set integer to 2 (cmdmode option)", 2), +@@ -214,6 +216,7 @@ int cmd__parse_options(int argc, const char **argv) + show(&expect, &ret, "integer: %d", integer); + show(&expect, &ret, "i16: %"PRIdMAX, (intmax_t) i16); + show(&expect, &ret, "unsigned: %lu", unsigned_integer); ++ show(&expect, &ret, "u16: %"PRIuMAX, (uintmax_t) u16); + show(&expect, &ret, "timestamp: %"PRItime, timestamp); + show(&expect, &ret, "string: %s", string ? string : "(not set)"); + show(&expect, &ret, "abbrev: %d", abbrev); +diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh +index be785547ead..ca55ea8228c 100755 +--- a/t/t0040-parse-options.sh ++++ b/t/t0040-parse-options.sh +@@ -25,6 +25,7 @@ usage: test-tool parse-options <options> + --[no-]i16 <n> get a 16 bit integer + -j <n> get a integer, too + -u, --unsigned <n> get an unsigned integer ++ --u16 <n> get a 16 bit unsigned integer + --[no-]set23 set integer to 23 + --mode1 set integer to 1 (cmdmode option) + --mode2 set integer to 2 (cmdmode option) +@@ -141,6 +142,7 @@ boolean: 2 + integer: 1729 + i16: 0 + unsigned: 16384 ++u16: 0 + timestamp: 0 + string: 123 + abbrev: 7 +@@ -162,6 +164,7 @@ boolean: 2 + integer: 1729 + i16: 9000 + unsigned: 16384 ++u16: 32768 + timestamp: 0 + string: 321 + abbrev: 10 +@@ -173,7 +176,7 @@ EOF + + test_expect_success 'long options' ' + test-tool parse-options --boolean --integer 1729 --i16 9000 --unsigned 16k \ +- --boolean --string2=321 --verbose --verbose --no-dry-run \ ++ --u16 32k --boolean --string2=321 --verbose --verbose --no-dry-run \ + --abbrev=10 --file fi.le --obsolete \ + >output 2>output.err && + test_must_be_empty output.err && +@@ -186,6 +189,7 @@ test_expect_success 'abbreviate to something longer than SHA1 length' ' + integer: 0 + i16: 0 + unsigned: 0 ++ u16: 0 + timestamp: 0 + string: (not set) + abbrev: 100 +@@ -261,6 +265,7 @@ boolean: 1 + integer: 13 + i16: 0 + unsigned: 0 ++u16: 0 + timestamp: 0 + string: 123 + abbrev: 7 +@@ -285,6 +290,7 @@ boolean: 0 + integer: 2 + i16: 0 + unsigned: 0 ++u16: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -353,6 +359,7 @@ boolean: 5 + integer: 4 + i16: 0 + unsigned: 0 ++u16: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -379,6 +386,7 @@ boolean: 1 + integer: 23 + i16: 0 + unsigned: 0 ++u16: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -459,6 +467,7 @@ boolean: 0 + integer: 0 + i16: 0 + unsigned: 0 ++u16: 0 + timestamp: 0 + string: (not set) + abbrev: 7 +@@ -806,4 +815,11 @@ test_expect_success 'i16 limits range' ' + test_grep "value -32769 for option .i16. not in range \[-32768,32767\]" err + ' + ++test_expect_success 'u16 limits range' ' ++ test-tool parse-options --u16 65535 >out && ++ test_grep "u16: 65535" out && ++ test_must_fail test-tool parse-options --u16 65536 2>err && ++ test_grep "value 65536 for option .u16. not in range \[0,65535\]" err ++' ++ + test_done + +-- +2.49.0.805.g082f7c87e0.dirty + + +From mboxrd@z Thu Jan 1 00:00:00 1970 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 17 Apr 2025 12:49:42 +0200 +Subject: [PATCH v4 7/7] parse-options: detect mismatches in integer + signedness +References: <20250417-b4-pks-parse-options-integers-v4-0-9cbc76b61cfe@pks.im> +To: git@vger.kernel.org +X-Mailer: b4 0.14.2 + +It was reported that "t5620-backfill.sh" fails on s390x and sparc64 in a +test that exercises the "--min-batch-size" command line option. The +symptom was that the option didn't seem to have an effect: we didn't +fetch objects with a batch size of 20, but instead fetched all objects +at once. + +As it turns out, the root cause is that `--min-batch-size` uses +`OPT_INTEGER()` to parse the command line option. While this macro +expects the caller to pass a pointer to an integer, we instead pass a +pointer to a `size_t`. This coincidentally works on most platforms, but +it breaks apart on the mentioned platforms because they are big endian. + +This issue isn't specific to git-backfill(1): there are a couple of +other places where we have the same type confusion going on. This +indicates that the issue really is the interface that the parse-options +subsystem provides -- it is simply too easy to get this wrong as there +isn't any kind of compiler warning, and things just work on the most +common systems. + +Address the systemic issue by introducing two new build asserts +`BARF_UNLESS_SIGNED()` and `BARF_UNLESS_UNSIGNED()`. As the names +already hint at, those macros will cause a compiler error when passed a +value that is not signed or unsigned, respectively. + +Adapt `OPT_INTEGER()`, `OPT_UNSIGNED()` as well as `OPT_MAGNITUDE()` to +use those asserts. This uncovers a small set of sites where we indeed +have the same bug as in git-backfill(1). Adapt all of them to use the +correct option. + +Reported-by: Todd Zullinger <tmz@pobox.com> +Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> +Helped-by: SZEDER Gábor <szeder.dev@gmail.com> +Helped-by: Jeff King <peff@peff.net> +Signed-off-by: Patrick Steinhardt <ps@pks.im> +--- + apply.c | 4 ++-- + builtin/backfill.c | 4 ++-- + builtin/column.c | 2 +- + builtin/grep.c | 4 ++-- + git-compat-util.h | 7 +++++++ + parse-options.h | 4 ++-- + 6 files changed, 16 insertions(+), 9 deletions(-) + +diff --git a/apply.c b/apply.c +index f274a379487..a850c7d75fe 100644 +--- a/apply.c ++++ b/apply.c +@@ -5123,8 +5123,8 @@ int apply_parse_options(int argc, const char **argv, + /* Think twice before adding "--nul" synonym to this */ + OPT_SET_INT('z', NULL, &state->line_termination, + N_("paths are separated with NUL character"), '\0'), +- OPT_INTEGER('C', NULL, &state->p_context, +- N_("ensure at least <n> lines of context match")), ++ OPT_UNSIGNED('C', NULL, &state->p_context, ++ N_("ensure at least <n> lines of context match")), + OPT_CALLBACK(0, "whitespace", state, N_("action"), + N_("detect new or modified lines that have whitespace errors"), + apply_option_parse_whitespace), +diff --git a/builtin/backfill.c b/builtin/backfill.c +index 33e1ea2f84f..d95d7a2d4d6 100644 +--- a/builtin/backfill.c ++++ b/builtin/backfill.c +@@ -123,8 +123,8 @@ int cmd_backfill(int argc, const char **argv, const char *prefix, struct reposit + .sparse = 0, + }; + struct option options[] = { +- OPT_INTEGER(0, "min-batch-size", &ctx.min_batch_size, +- N_("Minimum number of objects to request at a time")), ++ OPT_UNSIGNED(0, "min-batch-size", &ctx.min_batch_size, ++ N_("Minimum number of objects to request at a time")), + OPT_BOOL(0, "sparse", &ctx.sparse, + N_("Restrict the missing objects to the current sparse-checkout")), + OPT_END(), +diff --git a/builtin/column.c b/builtin/column.c +index 50314cc2559..ce6443d5fac 100644 +--- a/builtin/column.c ++++ b/builtin/column.c +@@ -31,7 +31,7 @@ int cmd_column(int argc, + struct option options[] = { + OPT_STRING(0, "command", &real_command, N_("name"), N_("lookup config vars")), + OPT_COLUMN(0, "mode", &colopts, N_("layout to use")), +- OPT_INTEGER(0, "raw-mode", &colopts, N_("layout to use")), ++ OPT_UNSIGNED(0, "raw-mode", &colopts, N_("layout to use")), + OPT_INTEGER(0, "width", &copts.width, N_("maximum width")), + OPT_STRING(0, "indent", &copts.indent, N_("string"), N_("padding space on left border")), + OPT_STRING(0, "nl", &copts.nl, N_("string"), N_("padding space on right border")), +diff --git a/builtin/grep.c b/builtin/grep.c +index c4869733e1b..f23a6f1dc86 100644 +--- a/builtin/grep.c ++++ b/builtin/grep.c +@@ -983,9 +983,9 @@ int cmd_grep(int argc, + OPT_CALLBACK('C', "context", &opt, N_("n"), + N_("show <n> context lines before and after matches"), + context_callback), +- OPT_INTEGER('B', "before-context", &opt.pre_context, ++ OPT_UNSIGNED('B', "before-context", &opt.pre_context, + N_("show <n> context lines before matches")), +- OPT_INTEGER('A', "after-context", &opt.post_context, ++ OPT_UNSIGNED('A', "after-context", &opt.post_context, + N_("show <n> context lines after matches")), + OPT_INTEGER(0, "threads", &num_threads, + N_("use <n> worker threads")), +diff --git a/git-compat-util.h b/git-compat-util.h +index cf733b38acd..1218fcf81a4 100644 +--- a/git-compat-util.h ++++ b/git-compat-util.h +@@ -110,12 +110,19 @@ DISABLE_WARNING(-Wsign-compare) + # define BARF_UNLESS_COPYABLE(dst, src) \ + BUILD_ASSERT_OR_ZERO(__builtin_types_compatible_p(__typeof__(*(dst)), \ + __typeof__(*(src)))) ++ ++# define BARF_UNLESS_SIGNED(var) BUILD_ASSERT_OR_ZERO(((__typeof__(var)) -1) < 0) ++# define BARF_UNLESS_UNSIGNED(var) BUILD_ASSERT_OR_ZERO(((__typeof__(var)) -1) > 0) + #else + # define BARF_UNLESS_AN_ARRAY(arr) 0 + # define BARF_UNLESS_COPYABLE(dst, src) \ + BUILD_ASSERT_OR_ZERO(0 ? ((*(dst) = *(src)), 0) : \ + sizeof(*(dst)) == sizeof(*(src))) ++ ++# define BARF_UNLESS_SIGNED(var) 0 ++# define BARF_UNLESS_UNSIGNED(var) 0 + #endif ++ + /* + * ARRAY_SIZE - get the number of elements in a visible array + * @x: the array whose size you want. +diff --git a/parse-options.h b/parse-options.h +index dc460a26ff1..91c3e3c29b3 100644 +--- a/parse-options.h ++++ b/parse-options.h +@@ -218,7 +218,7 @@ struct option { + .type = OPTION_INTEGER, \ + .short_name = (s), \ + .long_name = (l), \ +- .value = (v), \ ++ .value = (v) + BARF_UNLESS_SIGNED(*(v)), \ + .precision = sizeof(*v), \ + .argh = N_("n"), \ + .help = (h), \ +@@ -280,7 +280,7 @@ struct option { + .type = OPTION_UNSIGNED, \ + .short_name = (s), \ + .long_name = (l), \ +- .value = (v), \ ++ .value = (v) + BARF_UNLESS_UNSIGNED(*(v)), \ + .precision = sizeof(*v), \ + .argh = N_("n"), \ + .help = (h), \ + +-- +2.49.0.805.g082f7c87e0.dirty + + diff --git a/system/git/perl-getopt-long.patch b/system/git/perl-getopt-long.patch deleted file mode 100644 index dd5776033..000000000 --- a/system/git/perl-getopt-long.patch +++ /dev/null @@ -1,459 +0,0 @@ -From 46edab516bf04c190cb2e100419dee817d3f33f6 Mon Sep 17 00:00:00 2001 -From: Todd Zullinger <tmz@pobox.com> -Date: Wed, 15 Nov 2023 12:39:44 -0500 -Subject: [PATCH] send-email: remove stray characters from usage - -A few stray single quotes crept into the usage string in a2ce608244 -(send-email docs: add format-patch options, 2021-10-25). Remove them. - -Signed-off-by: Todd Zullinger <tmz@pobox.com> -Signed-off-by: Junio C Hamano <gitster@pobox.com> ---- - git-send-email.perl | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/git-send-email.perl b/git-send-email.perl -index 897cea6564fb50..85544a18bfe37e 100755 ---- a/git-send-email.perl -+++ b/git-send-email.perl -@@ -28,8 +28,8 @@ - - sub usage { - print <<EOT; --git send-email' [<options>] <file|directory> --git send-email' [<options>] <format-patch options> -+git send-email [<options>] <file|directory> -+git send-email [<options>] <format-patch options> - git send-email --dump-aliases - - Composing: -From d13a73e383076636534e10ba799af0c9a2b85357 Mon Sep 17 00:00:00 2001 -From: Todd Zullinger <tmz@pobox.com> -Date: Thu, 16 Nov 2023 14:30:10 -0500 -Subject: [PATCH] perl: bump the required Perl version to 5.8.1 from 5.8.0 - -The following commit will make use of a Getopt::Long feature which is -only present in Perl >= 5.8.1. Document that as the minimum version we -support. - -Many of our Perl scripts will continue to run with 5.8.0 but this change -allows us to adjust them as needed without breaking any promises to our -users. - -The Perl requirement was last changed in d48b284183 (perl: bump the -required Perl version to 5.8 from 5.6.[21], 2010-09-24). At that time, -5.8.0 was 8 years old. It is now over 21 years old. - -Signed-off-by: Todd Zullinger <tmz@pobox.com> -Signed-off-by: Junio C Hamano <gitster@pobox.com> ---- - Documentation/CodingGuidelines | 2 +- - INSTALL | 2 +- - contrib/diff-highlight/DiffHighlight.pm | 2 +- - contrib/mw-to-git/Git/Mediawiki.pm | 2 +- - git-archimport.perl | 2 +- - git-cvsexportcommit.perl | 2 +- - git-cvsimport.perl | 2 +- - git-cvsserver.perl | 2 +- - git-send-email.perl | 4 ++-- - git-svn.perl | 2 +- - gitweb/INSTALL | 2 +- - gitweb/gitweb.perl | 2 +- - perl/Git.pm | 2 +- - perl/Git/I18N.pm | 2 +- - perl/Git/LoadCPAN.pm | 2 +- - perl/Git/LoadCPAN/Error.pm | 2 +- - perl/Git/LoadCPAN/Mail/Address.pm | 2 +- - perl/Git/Packet.pm | 2 +- - t/t0202/test.pl | 2 +- - t/t5562/invoke-with-content-length.pl | 2 +- - t/t9700/test.pl | 2 +- - t/test-terminal.perl | 2 +- - 22 files changed, 23 insertions(+), 23 deletions(-) - -diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines -index 65af8d82cedd5f..aa0195d6ebab0b 100644 ---- a/Documentation/CodingGuidelines -+++ b/Documentation/CodingGuidelines -@@ -490,7 +490,7 @@ For Perl programs: - - - Most of the C guidelines above apply. - -- - We try to support Perl 5.8 and later ("use Perl 5.008"). -+ - We try to support Perl 5.8.1 and later ("use Perl 5.008001"). - - - use strict and use warnings are strongly preferred. - -diff --git a/INSTALL b/INSTALL -index 4b422888828d0e..06f29a8ae70022 100644 ---- a/INSTALL -+++ b/INSTALL -@@ -119,7 +119,7 @@ Issues of note: - - A POSIX-compliant shell is required to run some scripts needed - for everyday use (e.g. "bisect", "request-pull"). - -- - "Perl" version 5.8 or later is needed to use some of the -+ - "Perl" version 5.8.1 or later is needed to use some of the - features (e.g. sending patches using "git send-email", - interacting with svn repositories with "git svn"). If you can - live without these, use NO_PERL. Note that recent releases of -diff --git a/contrib/diff-highlight/DiffHighlight.pm b/contrib/diff-highlight/DiffHighlight.pm -index 376f577737591e..636add69680675 100644 ---- a/contrib/diff-highlight/DiffHighlight.pm -+++ b/contrib/diff-highlight/DiffHighlight.pm -@@ -1,6 +1,6 @@ - package DiffHighlight; - --use 5.008; -+use 5.008001; - use warnings FATAL => 'all'; - use strict; - -diff --git a/contrib/mw-to-git/Git/Mediawiki.pm b/contrib/mw-to-git/Git/Mediawiki.pm -index 917d9e2d3222c1..ff7811225ee671 100644 ---- a/contrib/mw-to-git/Git/Mediawiki.pm -+++ b/contrib/mw-to-git/Git/Mediawiki.pm -@@ -1,6 +1,6 @@ - package Git::Mediawiki; - --use 5.008; -+use 5.008001; - use strict; - use POSIX; - use Git; -diff --git a/git-archimport.perl b/git-archimport.perl -index b7c173c345544d..f5a317b89961ce 100755 ---- a/git-archimport.perl -+++ b/git-archimport.perl -@@ -54,7 +54,7 @@ =head1 Devel Notes - - =cut - --use 5.008; -+use 5.008001; - use strict; - use warnings; - use Getopt::Std; -diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl -index 289d4bc684dc26..1e03ba94d1b271 100755 ---- a/git-cvsexportcommit.perl -+++ b/git-cvsexportcommit.perl -@@ -1,6 +1,6 @@ - #!/usr/bin/perl - --use 5.008; -+use 5.008001; - use strict; - use warnings; - use Getopt::Std; -diff --git a/git-cvsimport.perl b/git-cvsimport.perl -index 7bf3c12d678974..07ea3443f7f336 100755 ---- a/git-cvsimport.perl -+++ b/git-cvsimport.perl -@@ -13,7 +13,7 @@ - # The head revision is on branch "origin" by default. - # You can change that with the '-o' option. - --use 5.008; -+use 5.008001; - use strict; - use warnings; - use Getopt::Long; -diff --git a/git-cvsserver.perl b/git-cvsserver.perl -index 7b757360e28c01..124f598bdc0705 100755 ---- a/git-cvsserver.perl -+++ b/git-cvsserver.perl -@@ -15,7 +15,7 @@ - #### - #### - --use 5.008; -+use 5.008001; - use strict; - use warnings; - use bytes; -diff --git a/git-send-email.perl b/git-send-email.perl -index 897cea6564fb50..041db702d46fcc 100755 ---- a/git-send-email.perl -+++ b/git-send-email.perl -@@ -16,7 +16,7 @@ - # and second line is the subject of the message. - # - --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - use Getopt::Long; -@@ -228,7 +228,7 @@ sub system_or_msg { - my @sprintf_args = ($cmd_name ? $cmd_name : $args->[0], $exit_code); - if (defined $msg) { - # Quiet the 'redundant' warning category, except we -- # need to support down to Perl 5.8, so we can't do a -+ # need to support down to Perl 5.8.1, so we can't do a - # "no warnings 'redundant'", since that category was - # introduced in perl 5.22, and asking for it will die - # on older perls. -diff --git a/git-svn.perl b/git-svn.perl -index be987e316f92ac..1d1c52f42468b1 100755 ---- a/git-svn.perl -+++ b/git-svn.perl -@@ -1,7 +1,7 @@ - #!/usr/bin/perl - # Copyright (C) 2006, Eric Wong <normalperson@yhbt.net> - # License: GPL v2 or later --use 5.008; -+use 5.008001; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - use strict; - use vars qw/ $AUTHOR $VERSION -diff --git a/gitweb/INSTALL b/gitweb/INSTALL -index a58e6b3c44b0ef..dadc6efa81f035 100644 ---- a/gitweb/INSTALL -+++ b/gitweb/INSTALL -@@ -29,7 +29,7 @@ Requirements - ------------ - - - Core git tools -- - Perl 5.8 -+ - Perl 5.8.1 - - Perl modules: CGI, Encode, Fcntl, File::Find, File::Basename. - - web server - -diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl -index e66eb3d9bad7cf..55e7c6567e6c47 100755 ---- a/gitweb/gitweb.perl -+++ b/gitweb/gitweb.perl -@@ -7,7 +7,7 @@ - # - # This program is licensed under the GPLv2 - --use 5.008; -+use 5.008001; - use strict; - use warnings; - # handle ACL in file access tests -diff --git a/perl/Git.pm b/perl/Git.pm -index 117765dc73c4a8..03bf570bf4c852 100644 ---- a/perl/Git.pm -+++ b/perl/Git.pm -@@ -7,7 +7,7 @@ Git - Perl interface to the Git version control system - - package Git; - --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - -diff --git a/perl/Git/I18N.pm b/perl/Git/I18N.pm -index 895e759c57a9d9..5454c3a6d2c433 100644 ---- a/perl/Git/I18N.pm -+++ b/perl/Git/I18N.pm -@@ -1,5 +1,5 @@ - package Git::I18N; --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - BEGIN { -diff --git a/perl/Git/LoadCPAN.pm b/perl/Git/LoadCPAN.pm -index 0c360bc7998607..8c7fa805f97390 100644 ---- a/perl/Git/LoadCPAN.pm -+++ b/perl/Git/LoadCPAN.pm -@@ -1,5 +1,5 @@ - package Git::LoadCPAN; --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - -diff --git a/perl/Git/LoadCPAN/Error.pm b/perl/Git/LoadCPAN/Error.pm -index 5d84c202884b7c..5cecb0fcd6930a 100644 ---- a/perl/Git/LoadCPAN/Error.pm -+++ b/perl/Git/LoadCPAN/Error.pm -@@ -1,5 +1,5 @@ - package Git::LoadCPAN::Error; --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - use Git::LoadCPAN ( -diff --git a/perl/Git/LoadCPAN/Mail/Address.pm b/perl/Git/LoadCPAN/Mail/Address.pm -index 340e88a7a56be3..9f808090a66a16 100644 ---- a/perl/Git/LoadCPAN/Mail/Address.pm -+++ b/perl/Git/LoadCPAN/Mail/Address.pm -@@ -1,5 +1,5 @@ - package Git::LoadCPAN::Mail::Address; --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - use Git::LoadCPAN ( -diff --git a/perl/Git/Packet.pm b/perl/Git/Packet.pm -index d144f5168f37ad..d896e6952399b0 100644 ---- a/perl/Git/Packet.pm -+++ b/perl/Git/Packet.pm -@@ -1,5 +1,5 @@ - package Git::Packet; --use 5.008; -+use 5.008001; - use strict; - use warnings $ENV{GIT_PERL_FATAL_WARNINGS} ? qw(FATAL all) : (); - BEGIN { -diff --git a/t/t0202/test.pl b/t/t0202/test.pl -index 2cbf7b95907384..47d96a2a13f93b 100755 ---- a/t/t0202/test.pl -+++ b/t/t0202/test.pl -@@ -1,5 +1,5 @@ - #!/usr/bin/perl --use 5.008; -+use 5.008001; - use lib (split(/:/, $ENV{GITPERLLIB})); - use strict; - use warnings; -diff --git a/t/t5562/invoke-with-content-length.pl b/t/t5562/invoke-with-content-length.pl -index 718dd9b49d493e..9babb9a375e5fb 100644 ---- a/t/t5562/invoke-with-content-length.pl -+++ b/t/t5562/invoke-with-content-length.pl -@@ -1,4 +1,4 @@ --use 5.008; -+use 5.008001; - use strict; - use warnings; - -diff --git a/t/t9700/test.pl b/t/t9700/test.pl -index 6d753708d2acb6..d8e85482ab2ba7 100755 ---- a/t/t9700/test.pl -+++ b/t/t9700/test.pl -@@ -1,7 +1,7 @@ - #!/usr/bin/perl - use lib (split(/:/, $ENV{GITPERLLIB})); - --use 5.008; -+use 5.008001; - use warnings; - use strict; - -diff --git a/t/test-terminal.perl b/t/test-terminal.perl -index 1bcf01a9a42a61..3810e9bb431903 100755 ---- a/t/test-terminal.perl -+++ b/t/test-terminal.perl -@@ -1,5 +1,5 @@ - #!/usr/bin/perl --use 5.008; -+use 5.008001; - use strict; - use warnings; - use IO::Pty; -From 6ff658cc78f36baa74c0f25314b0043a8f4b4fc6 Mon Sep 17 00:00:00 2001 -From: Todd Zullinger <tmz@pobox.com> -Date: Thu, 16 Nov 2023 14:30:11 -0500 -Subject: [PATCH] send-email: avoid duplicate specification warnings - -A warning is issued for options which are specified more than once -beginning with perl-Getopt-Long >= 2.55. In addition to causing users -to see warnings, this results in test failures which compare the output. -An example, from t9001-send-email.37: - - | +++ diff -u expect actual - | --- expect 2023-11-14 10:38:23.854346488 +0000 - | +++ actual 2023-11-14 10:38:23.848346466 +0000 - | @@ -1,2 +1,7 @@ - | +Duplicate specification "no-chain-reply-to" for option "no-chain-reply-to" - | +Duplicate specification "to-cover|to-cover!" for option "to-cover" - | +Duplicate specification "cc-cover|cc-cover!" for option "cc-cover" - | +Duplicate specification "no-thread" for option "no-thread" - | +Duplicate specification "no-to-cover" for option "no-to-cover" - | fatal: longline.patch:35 is longer than 998 characters - | warning: no patches were sent - | error: last command exited with $?=1 - | not ok 37 - reject long lines - -Remove the duplicate option specs. These are primarily the explicit -'--no-' prefix opts which were added in f471494303 (git-send-email.perl: -support no- prefix with older GetOptions, 2015-01-30). This was done -specifically to support perl-5.8.0 which includes Getopt::Long 2.32[1]. - -Getopt::Long 2.33 added support for the '--no-' prefix natively by -appending '!' to the option specification string, which was included in -perl-5.8.1 and is not present in perl-5.8.0. The previous commit bumped -the minimum supported Perl version to 5.8.1 so we no longer need to -provide the '--no-' variants for negatable options manually. - -Teach `--git-completion-helper` to output the '--no-' options. They are -not included in the options hash and would otherwise be lost. - -Signed-off-by: Todd Zullinger <tmz@pobox.com> -Signed-off-by: Junio C Hamano <gitster@pobox.com> ---- - git-send-email.perl | 19 ++++++------------- - 1 file changed, 6 insertions(+), 13 deletions(-) - -diff --git a/git-send-email.perl b/git-send-email.perl -index 041db702d46fcc..60afafb375d8f4 100755 ---- a/git-send-email.perl -+++ b/git-send-email.perl -@@ -119,13 +119,16 @@ sub completion_helper { - - foreach my $key (keys %$original_opts) { - unless (exists $not_for_completion{$key}) { -- $key =~ s/!$//; -+ my $negatable = ($key =~ s/!$//); - - if ($key =~ /[:=][si]$/) { - $key =~ s/[:=][si]$//; - push (@send_email_opts, "--$_=") foreach (split (/\|/, $key)); - } else { - push (@send_email_opts, "--$_") foreach (split (/\|/, $key)); -+ if ($negatable) { -+ push (@send_email_opts, "--no-$_") foreach (split (/\|/, $key)); -+ } - } - } - } -@@ -491,7 +494,6 @@ sub config_regexp { - "bcc=s" => \@getopt_bcc, - "no-bcc" => \$no_bcc, - "chain-reply-to!" => \$chain_reply_to, -- "no-chain-reply-to" => sub {$chain_reply_to = 0}, - "sendmail-cmd=s" => \$sendmail_cmd, - "smtp-server=s" => \$smtp_server, - "smtp-server-option=s" => \@smtp_server_options, -@@ -506,34 +508,25 @@ sub config_regexp { - "smtp-auth=s" => \$smtp_auth, - "no-smtp-auth" => sub {$smtp_auth = 'none'}, - "annotate!" => \$annotate, -- "no-annotate" => sub {$annotate = 0}, - "compose" => \$compose, - "quiet" => \$quiet, - "cc-cmd=s" => \$cc_cmd, - "suppress-from!" => \$suppress_from, -- "no-suppress-from" => sub {$suppress_from = 0}, - "suppress-cc=s" => \@suppress_cc, - "signed-off-cc|signed-off-by-cc!" => \$signed_off_by_cc, -- "no-signed-off-cc|no-signed-off-by-cc" => sub {$signed_off_by_cc = 0}, -- "cc-cover|cc-cover!" => \$cover_cc, -- "no-cc-cover" => sub {$cover_cc = 0}, -- "to-cover|to-cover!" => \$cover_to, -- "no-to-cover" => sub {$cover_to = 0}, -+ "cc-cover!" => \$cover_cc, -+ "to-cover!" => \$cover_to, - "confirm=s" => \$confirm, - "dry-run" => \$dry_run, - "envelope-sender=s" => \$envelope_sender, - "thread!" => \$thread, -- "no-thread" => sub {$thread = 0}, - "validate!" => \$validate, -- "no-validate" => sub {$validate = 0}, - "transfer-encoding=s" => \$target_xfer_encoding, - "format-patch!" => \$format_patch, -- "no-format-patch" => sub {$format_patch = 0}, - "8bit-encoding=s" => \$auto_8bit_encoding, - "compose-encoding=s" => \$compose_encoding, - "force" => \$force, - "xmailer!" => \$use_xmailer, -- "no-xmailer" => sub {$use_xmailer = 0}, - "batch-size=i" => \$batch_size, - "relogin-delay=i" => \$relogin_delay, - "git-completion-helper" => \$git_completion_helper, diff --git a/system/gmp/APKBUILD b/system/gmp/APKBUILD index e5c71a783..298dd3a48 100644 --- a/system/gmp/APKBUILD +++ b/system/gmp/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org> pkgname=gmp -pkgver=6.2.1 -pkgrel=2 +pkgver=6.3.0 +pkgrel=0 pkgdesc="A free library for arbitrary precision arithmetic" url="https://gmplib.org/" arch="all" @@ -44,4 +44,4 @@ libgmpxx() { mv "$pkgdir"/usr/lib/libgmpxx.so.* "$subpkgdir"/usr/lib/ } -sha512sums="c99be0950a1d05a0297d65641dd35b75b74466f7bf03c9e8a99895a3b2f9a0856cd17887738fa51cf7499781b65c049769271cbcb77d057d2e9f1ec52e07dd84 gmp-6.2.1.tar.xz" +sha512sums="e85a0dab5195889948a3462189f0e0598d331d3457612e2d3350799dba2e244316d256f8161df5219538eb003e4b5343f989aaa00f96321559063ed8c8f29fd2 gmp-6.3.0.tar.xz" diff --git a/system/grep/APKBUILD b/system/grep/APKBUILD index 4eada9099..8502b0c82 100644 --- a/system/grep/APKBUILD +++ b/system/grep/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=grep -pkgver=3.11 +pkgver=3.12 pkgrel=0 pkgdesc="Pattern matching utilities" url="https://www.gnu.org/software/grep/grep.html" @@ -40,6 +40,6 @@ package() { rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true } -sha512sums="f254a1905a08c8173e12fbdd4fd8baed9a200217fba9d7641f0d78e4e002c1f2a621152d67027d9b25f0bb2430898f5233dc70909d8464fd13d7dd9298e65c42 grep-3.11.tar.xz +sha512sums="c54b4db5a8b9afe098c088decd94977746305284d716666a60bac82b4edc0fae4acf828970b5b6fc7d58ecd549f638e17e6958f33a71fedcc7d7415b9228b161 grep-3.12.tar.xz 7e4bc1da5de16a036e00fef6d9387b701bbe447d21d77cc3fc28a73e0364c972dec7cdcd70a176ef339b221fad92e7feccbb1e20f3f7b114a3585b8551770de5 gnulib-tests-dont-require-gpg-passphrase.patch 9ba6b01c0c74933299afb469dadd2ea0c7e24befa34c691671a576063e32a1f0c735541e5e2bb0073d8afd814790909f7f895827aa8a2fbacdfcae380a7bcb11 fix-tests.patch" diff --git a/system/gzip/APKBUILD b/system/gzip/APKBUILD index 84cb58b78..4682daca3 100644 --- a/system/gzip/APKBUILD +++ b/system/gzip/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=gzip -pkgver=1.12 +pkgver=1.14 pkgrel=0 pkgdesc="The GNU data compression program" subpackages="$pkgname-doc" @@ -45,4 +45,4 @@ package() { ln -sf /bin/gunzip "$pkgdir"/usr/bin/uncompress } -sha512sums="09b441299039479488700b7ef267ab7f71268af0d648d32cf6b1efcac58e59f1f352fa9d4f95278e96a76dc21239be1a5acab319bc85a7501cf5d8573c83d857 gzip-1.12.tar.gz" +sha512sums="65db6f01d982a976c431d33e9725dab84fcb991c9603cb2a492a2d578a58f9ac03a14ade4b91af49e9e877d81afec61dea563cf1e599f5b2eee2087613a2d368 gzip-1.14.tar.gz" diff --git a/system/icu/APKBUILD b/system/icu/APKBUILD index 17741042d..a27b1fda6 100644 --- a/system/icu/APKBUILD +++ b/system/icu/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Sergey Lukin <sergej.lukin@gmail.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=icu -pkgver=75.1 +pkgver=77.1 # convert x.y.z to x_y_z _ver=$(printf '%s' "$pkgver" | tr . _) @@ -17,7 +17,6 @@ makedepends="" subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs" source="https://github.com/unicode-org/icu/releases/download/release-$(printf '%s' "$pkgver" | tr . -)/${pkgname}4c-$_ver-src.tgz icu-60.2-always-use-utf8.patch - islamic-calendar.patch " # secfixes: @@ -79,6 +78,5 @@ static() { mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/ } -sha512sums="70ea842f0d5f1f6c6b65696ac71d96848c4873f4d794bebc40fd87af2ad4ef064c61a786bf7bc430ce4713ec6deabb8cc1a8cc0212eab148cee2d498a3683e45 icu4c-75_1-src.tgz -f89e9f389621ed9a58548ac961fc93fca8377b91fbb0df1991049757deadf72f6f11346eb7af883040c85b28621140805636a7f90d94f3b53e666d67b9681989 icu-60.2-always-use-utf8.patch -1a4305e6145ecab171d044e4cc14e074294c73e221f780803363823bafa2f79d2efd77d63f6c0bb6df6d5f9767de38d321196d85649be929a583f1abc27dbdd0 islamic-calendar.patch" +sha512sums="a47d6d9c327d037a05ea43d1d1a06b2fd757cc02a94f7c1a238f35cfc3dfd4ab78d0612790f3a3cca0292c77412a9c2c15c8f24b718f79a857e007e66f07e7cd icu4c-77_1-src.tgz +95c37febf7b6291dd0766de0dbd8eaee14132ad1b84bc93260b9e19cb3c05a786e8780ac0cbd47bf80182f73c647d4e5f067c9b4f5fbeda13a7fcc34b3bc0341 icu-60.2-always-use-utf8.patch" diff --git a/system/icu/icu-60.2-always-use-utf8.patch b/system/icu/icu-60.2-always-use-utf8.patch index 801a907d0..17ff834a4 100644 --- a/system/icu/icu-60.2-always-use-utf8.patch +++ b/system/icu/icu-60.2-always-use-utf8.patch @@ -1,6 +1,6 @@ --- source/common/unicode/platform.h 2017-10-25 13:41:15.000000000 -0500 +++ source/common/unicode/platform.h 2018-04-04 02:07:28.851222016 -0500 -@@ -606,7 +606,7 @@ +@@ -612,7 +612,7 @@ U_PLATFORM == U_PF_EMSCRIPTEN # define U_CHARSET_IS_UTF8 1 #else diff --git a/system/icu/islamic-calendar.patch b/system/icu/islamic-calendar.patch deleted file mode 100644 index bae9734af..000000000 --- a/system/icu/islamic-calendar.patch +++ /dev/null @@ -1,14 +0,0 @@ -The addition is duplicated, causing some dates to be one year off. - -Fixes: d43d216feb ("ICU-22633 Test and fix int32_t overflow for Calendar set") - ---- source/i18n/islamcal.cpp.old 2024-04-16 16:08:53.000000000 -0500 -+++ source/i18n/islamcal.cpp 2024-08-12 00:03:20.102380147 -0500 -@@ -452,7 +452,6 @@ - // This may be called by Calendar::handleComputeJulianDay with months out of the range - // 0..11. Need to handle that here since monthStart requires months in the range 0.11. - if (month > 11) { -- eyear += (month / 12); - if (uprv_add32_overflow(eyear, (month / 12), &eyear)) { - status = U_ILLEGAL_ARGUMENT_ERROR; - return 0; diff --git a/system/iproute2/APKBUILD b/system/iproute2/APKBUILD index ec3a915eb..8060532bb 100644 --- a/system/iproute2/APKBUILD +++ b/system/iproute2/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=iproute2 -pkgver=5.17.0 +pkgver=6.15.0 pkgrel=0 pkgdesc="Advanced IP routing and network device configuration tools" url="https://wiki.linuxfoundation.org/networking/iproute2" @@ -15,26 +15,17 @@ makedepends="bison flex bash db-dev libelf-dev libmnl-dev libcap-dev bsd-compat- subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch" source="https://kernel.org/pub/linux/utils/net/iproute2/iproute2-$pkgver.tar.xz" -prepare() { - default_prepare - - sed -i '/^TARGETS=/s: arpd : :' misc/Makefile - sed -i 's:/usr/local:/usr:' tc/m_ipt.c include/iptables.h - sed -i -e 's:=/share:=/usr/share:' \ - -e 's:-Werror::' Makefile -} - build() { - ./configure - make CCOPTS="-D_GNU_SOURCE $CFLAGS" LIBDIR=/lib + ./configure --libdir=/lib --color=auto + make CCOPTS="-D_GNU_SOURCE $CFLAGS" } package() { make -j1 DESTDIR="$pkgdir" install mkdir "$pkgdir"/bin - mv "$pkgdir"/sbin/ip "$pkgdir"/bin/ip + ln -s ../sbin/ip "$pkgdir"/bin/ip mkdir "$pkgdir"/usr/share/man/man1 - mv "$pkgdir"/usr/share/man/man8/ip.8 \ + ln -s ../man8/ip.8 \ "$pkgdir"/usr/share/man/man1/ip.1 } @@ -50,4 +41,4 @@ bashcomp() { rmdir -p "$pkgdir"/usr/share 2>/dev/null || true } -sha512sums="fcffe96fb4819305ddf5c3764b100bd1d204069cf53a6bd776c2716144f574b4fc17963fc231a83ad253cce6a563814556eeb60b211ba9b0b87330186259b34d iproute2-5.17.0.tar.xz" +sha512sums="1a438941cd939e1c8e32cfe8c40e6fd826c89185f1bb0c623eaad7380a66afd9fa9e0d7cdc5e5b193d2761b7dbdc78fd0811537eecc500be633730c32ff55ad4 iproute2-6.15.0.tar.xz" diff --git a/system/isl/APKBUILD b/system/isl/APKBUILD index 413c82956..bc07ee387 100644 --- a/system/isl/APKBUILD +++ b/system/isl/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Timo Teräs <timo.teras@iki.fi> # Maintainer: Adelie Platform Group <adelie-devel@lists.adelielinux.org> pkgname=isl -pkgver=0.24 +pkgver=0.27 pkgrel=0 pkgdesc="Integer Set Library" url="https://libisl.sourceforge.io/" @@ -10,6 +10,7 @@ options="!dbg strip" # Static libs only license="MIT" depends="" depends_dev="gmp-dev" +checkdepends="!python3" # Python test fails with missing symbol error. (#1332) makedepends_host="$depends_dev" makedepends="$makedepends_host" replaces="cloog" @@ -37,4 +38,4 @@ package() { make DESTDIR="$pkgdir" INSTALL="install -D" install } -sha512sums="aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95 isl-0.24.tar.bz2" +sha512sums="e14ab1a622d3f6219b264b8e2512487aecd6725b7b88f40bc8f31651bfe7d89db4649aae12eaa0052dd904bac21607f63c83fbab73251767425d91989a969f7e isl-0.27.tar.bz2" diff --git a/system/kmod/APKBUILD b/system/kmod/APKBUILD index 171f279ce..c973ea098 100644 --- a/system/kmod/APKBUILD +++ b/system/kmod/APKBUILD @@ -1,15 +1,15 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kmod -pkgver=30 +pkgver=33 pkgrel=0 pkgdesc="Linux kernel module management utilities" -url="https://git.kernel.org/?p=utils/kernel/kmod/kmod.git;a=summary" +url="https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git/about/" arch="all" options="!check" # https://bugs.gentoo.org/408915#c3 license="GPL-2.0+" depends="" -makedepends="openssl-dev zlib-dev xz-dev zstd-dev" +makedepends="openssl-dev scdoc xz-dev zlib-dev zstd-dev" triggers="$pkgname.trigger=/lib/modules/*" subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc $pkgname-bash-completion:bashcomp:noarch" @@ -25,6 +25,7 @@ build() { --prefix=/usr \ --bindir=/bin \ --sysconfdir=/etc \ + --libdir=/lib \ --with-rootlibdir=/lib \ --with-zlib \ --with-xz \ @@ -41,11 +42,14 @@ package() { make DESTDIR="$pkgdir" install mkdir -p "$pkgdir"/sbin for i in lsmod rmmod insmod modinfo modprobe depmod; do + case $i in + lsmod|modinfo) ;; + *) rm "$pkgdir"/bin/$i;; + esac ln -sf ../bin/kmod "$pkgdir"/sbin/$i done - for i in lsmod modinfo; do - ln -s kmod "$pkgdir"/bin/$i - done + mkdir -p "$pkgdir"/usr/lib + mv "$pkgdir"/lib/pkgconfig "$pkgdir"/usr/lib/ install -Dm755 "$srcdir"/kmod-static-nodes.initd \ "$pkgdir"/etc/init.d/kmod-static-nodes } @@ -60,6 +64,6 @@ bashcomp() { } -sha512sums="e2cd34e600a72e44710760dfda9364b790b8352a99eafbd43e683e4a06f37e6b5c0b5d14e7c28070e30fc5fc6ceddedf7b97f3b6c2c5c2d91204fefd630b9a3e kmod-30.tar.xz -f2ea3527bfba182c5e15557c224a5bba8c7e2ea3d21cf604e6eb2277226dcf983c3aeb9ac44a322c7f2b4942b35135da999d63a5b946b829d3f3b09c050a0f17 strndupa.patch +sha512sums="32d79d0bb7e89012f18458d4e88325f8e19a7dba6e1d5cff01aec3e618d1757b0f7c119735bf38d02e0d056a14273fd7522fca7c61a4d12a3ea5854bb662fff8 kmod-33.tar.xz +8bc365bbff8e9602c18c6ba0ae635b6648216ba367a631818ec99851e68aba27742c5f1f0a51b0981877359da7668f6fa79584dc956757299d08c0f77b3dd559 strndupa.patch 7f0f89fe98167f71b7924f341ba701d001158225463c2f5e39f706a0224b1e952ee901b441f28cb15787563e83bb6e54eb752bf8669ae7c0ffbb11984542f354 kmod-static-nodes.initd" diff --git a/system/kmod/strndupa.patch b/system/kmod/strndupa.patch index d4527140e..bde1b23a6 100644 --- a/system/kmod/strndupa.patch +++ b/system/kmod/strndupa.patch @@ -2,7 +2,7 @@ diff --git a/libkmod/libkmod-util.c b/libkmod/libkmod-util.c index df12433..142e767 100644 --- a/shared/util.c +++ b/shared/util.c -@@ -334,7 +334,9 @@ int mkdir_p(const char *path, int len, mode_t mode) +@@ -389,7 +389,9 @@ int mkdir_p(const char *path, int len, mode_t mode) { char *start, *end; diff --git a/system/less/APKBUILD b/system/less/APKBUILD index 793d3bbab..71448ea19 100644 --- a/system/less/APKBUILD +++ b/system/less/APKBUILD @@ -1,18 +1,17 @@ # Contributor: Cameron Banta <cbanta@gmail.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=less -pkgver=590 +pkgver=678 pkgrel=0 pkgdesc="File pager" url="http://www.greenwoodsoftware.com/less/" arch="all" license="BSD-2-Clause OR GPL-3.0+" -options="!check" +depends="" makedepends="ncurses-dev" subpackages="$pkgname-doc" source="http://www.greenwoodsoftware.com/$pkgname/$pkgname-$pkgver.tar.gz - search-path-history-file.patch - search-path-lesskey-file.patch + test-tinfow.patch " prepare() { @@ -31,10 +30,13 @@ build() { make } +check() { + make check +} + package() { make DESTDIR="$pkgdir" install } -sha512sums="426fa5840fd43c17bd5a452ad35ad24f2d6684623c6914403fd0059af62266bf2138e6828c7d73a1cef26a736c0d2b8ed4ab180eea8297281dae79a4228eb903 less-590.tar.gz -d059a3b4e28c8c8473a9834e00eade8bb9ab14922235bf0344d71604ad656449dcb95763f7103a21d2443881d599178d333f1e4c88a4372d9cb526eb36ebd8b0 search-path-history-file.patch -62d92ba9ae2e152cbf47d214f92a202591f901a68e74afa7a46fbaa6af1f6c38b76e067cf5c9f4fba2ee9602857c5900a0857d5402ebd593ab2410527b5f162d search-path-lesskey-file.patch" +sha512sums="ad1983229bfb5a30c6139db60012d3a12b613011f044acb4c0ec5c0fc809b8dc9be40255bf420f65d51425152c4cfc943076ccd2ee63b196165d6ab1426ea187 less-678.tar.gz +ef417e321e8af95cfec0dbd4411f2676f1649052b8a99097472e82b52774d485a304d307183370b14a265c4e2381a0bb9a7d3e389ba17553824e6d6b5216567a test-tinfow.patch" diff --git a/system/less/search-path-history-file.patch b/system/less/search-path-history-file.patch deleted file mode 100644 index 7ec0ce9f1..000000000 --- a/system/less/search-path-history-file.patch +++ /dev/null @@ -1,88 +0,0 @@ -From 5e1f4ce2c3a2c0fd6a953c4f7ca2839370f9c3ae Mon Sep 17 00:00:00 2001 -From: Mark Nudelman <markn@greenwoodsoftware.com> -Date: Fri, 3 Dec 2021 09:38:22 -0800 -Subject: [PATCH] Add $XDG_STATE_HOME and $HOME/.local/state to list of - directories to search for the history file. - ---- - cmdbuf.c | 48 ++++++++++++++++++++++++++++++++---------------- - less.nro.VER | 6 +++--- - 2 files changed, 35 insertions(+), 19 deletions(-) - -diff --git a/cmdbuf.c b/cmdbuf.c -index cd99010d..abbda9b9 100644 ---- a/cmdbuf.c -+++ b/cmdbuf.c -@@ -1401,14 +1401,41 @@ mlist_size(ml) - /* - * Get the name of the history file. - */ -+ static char * -+histfile_find(must_exist) -+ int must_exist; -+{ -+ char *home = lgetenv("HOME"); -+ char *name = NULL; -+ -+ /* Try in $XDG_DATA_STATE, then in $HOME/.local/state, then in $XDG_DATA_HOME, then in $HOME. */ -+#if OS2 -+ if (isnullenv(home)) -+ home = lgetenv("INIT"); -+#endif -+ name = dirfile(lgetenv("XDG_STATE_HOME"), &LESSHISTFILE[1], must_exist); -+ if (name == NULL) -+ { -+ char *dir = dirfile(home, ".local/state", 1); -+ if (dir != NULL) -+ { -+ name = dirfile(dir, &LESSHISTFILE[1], must_exist); -+ free(dir); -+ } -+ } -+ if (name == NULL) -+ name = dirfile(lgetenv("XDG_DATA_HOME"), &LESSHISTFILE[1], must_exist); -+ if (name == NULL) -+ name = dirfile(home, LESSHISTFILE, must_exist); -+ return (name); -+} -+ - static char * - histfile_name(must_exist) - int must_exist; - { -- char *home; -- char *xdg; - char *name; -- -+ - /* See if filename is explicitly specified by $LESSHISTFILE. */ - name = lgetenv("LESSHISTFILE"); - if (!isnullenv(name)) -@@ -1423,25 +1450,14 @@ histfile_name(must_exist) - if (strcmp(LESSHISTFILE, "") == 0 || strcmp(LESSHISTFILE, "-") == 0) - return (NULL); - -- /* Try in $XDG_DATA_HOME first, then in $HOME. */ -- xdg = lgetenv("XDG_DATA_HOME"); -- home = lgetenv("HOME"); --#if OS2 -- if (isnullenv(home)) -- home = lgetenv("INIT"); --#endif - name = NULL; - if (!must_exist) - { - /* If we're writing the file and the file already exists, use it. */ -- name = dirfile(xdg, &LESSHISTFILE[1], 1); -- if (name == NULL) -- name = dirfile(home, LESSHISTFILE, 1); -+ name = histfile_find(1); - } - if (name == NULL) -- name = dirfile(xdg, &LESSHISTFILE[1], must_exist); -- if (name == NULL) -- name = dirfile(home, LESSHISTFILE, must_exist); -+ name = histfile_find(must_exist); - return (name); - } - diff --git a/system/less/search-path-lesskey-file.patch b/system/less/search-path-lesskey-file.patch deleted file mode 100644 index 422376930..000000000 --- a/system/less/search-path-lesskey-file.patch +++ /dev/null @@ -1,37 +0,0 @@ -From d3edebf528da8a9e15d6be518c24e90462a28698 Mon Sep 17 00:00:00 2001 -From: Mark Nudelman <markn@greenwoodsoftware.com> -Date: Tue, 19 Oct 2021 14:24:04 -0700 -Subject: [PATCH] Add $HOME/.config to possible locations of lesskey file. - ---- - NEWS | 4 ++++ - decode.c | 13 ++++++++++++- - less.nro.VER | 2 +- - 3 files changed, 17 insertions(+), 2 deletions(-) - -diff --git a/decode.c b/decode.c -index e1a55198..2eb480fa 100644 ---- a/decode.c -+++ b/decode.c -@@ -952,9 +952,20 @@ add_hometable(call_lesskey, envname, def_filename, sysvar) - filename = save(def_filename); - else /* def_filename is just basename */ - { -+ /* Remove first char (normally a dot) unless stored in $HOME. */ - char *xdg = lgetenv("XDG_CONFIG_HOME"); - if (!isnullenv(xdg)) -- filename = dirfile(xdg, def_filename+1, 1); -+ filename = dirfile(xdg, &def_filename[1], 1); -+ if (filename == NULL) -+ { -+ char *home = lgetenv("HOME"); -+ if (!isnullenv(home)) -+ { -+ char *cfg_dir = dirfile(home, ".config", 0); -+ filename = dirfile(cfg_dir, &def_filename[1], 1); -+ free(cfg_dir); -+ } -+ } - if (filename == NULL) - filename = homefile(def_filename); - } diff --git a/system/less/test-tinfow.patch b/system/less/test-tinfow.patch new file mode 100644 index 000000000..a24c45746 --- /dev/null +++ b/system/less/test-tinfow.patch @@ -0,0 +1,13 @@ +Upstream-URL: https://github.com/gwsw/less/issues/631 + +--- less-678/lesstest/Makefile.old 2025-05-01 15:42:10.000000000 -0500 ++++ less-678/lesstest/Makefile 2025-05-31 16:46:46.402951544 -0500 +@@ -1,7 +1,7 @@ + CC ?= gcc + CFLAGS ?= -Wall -O2 + LDFLAGS ?= +-TERMLIB = -lncurses ++TERMLIB = -ltinfow + srcdir ?= . + + all: lesstest lt_screen diff --git a/system/libarchive/APKBUILD b/system/libarchive/APKBUILD index 9fcca3319..4c63983d6 100644 --- a/system/libarchive/APKBUILD +++ b/system/libarchive/APKBUILD @@ -1,20 +1,20 @@ # Contributor: Sergey Lukin <sergej.lukin@gmail.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libarchive -pkgver=3.7.2 +pkgver=3.8.0 pkgrel=0 pkgdesc="Multi-format archive and compression library" url="https://www.libarchive.org/" arch="all" license="BSD-2-Clause AND BSD-3-Clause AND Public-Domain" depends="" -makedepends="zlib-dev bzip2-dev xz-dev lz4-dev acl-dev openssl-dev expat-dev - attr-dev zstd-dev" +makedepends="acl-dev attr-dev bzip2-dev expat-dev lz4-dev openssl-dev pcre2-dev + xz-dev zlib-dev zstd-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-tools" source="https://github.com/libarchive/libarchive/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz disable-locale-tests.patch disable-unaligned-access-arm32-xxhash.patch - fix-test-32-bit-zstd.patch + test-fix.patch " # secfixes: @@ -40,6 +40,7 @@ build () { --with-lz4 \ --enable-acl \ --enable-xattr \ + --enable-posix-regex-lib=libpcre2posix \ ac_cv_header_linux_fiemap_h=no make } @@ -61,7 +62,7 @@ tools() { ln -s bsdcpio "$subpkgdir"/usr/bin/cpio } -sha512sums="1af253203df3014d1fbf3e99ebdc7aa2a3f036c7c2606d0f0550c49973b0fff99ee7262f4a6e20090c0806c40e964731334360daa3b718bde40108183eacc8a1 libarchive-3.7.2.tar.gz -27cf2aaa3e70e3a2a9944fac0c96c411e669c7e1a48daad1423bff68eef0f49153e5ef9d22dc9591a65353119d7fe203a28258ab82278aeb86b46fe691bcfb6a disable-locale-tests.patch +sha512sums="e563cd10cd447daf7c5d11c657cbc3d8971add4440264fb4754ea7670a249e8b7b1c31f62f78259867960392623dba73c2d20efc57dc02564c8f55841dc8f2cc libarchive-3.8.0.tar.gz +0360eb38364af93ebe81fc59e6a2b1bdb9c1d42487560c3565c5723a57f8f5ee85638ad6906f761d9b41f7d6ad03bad800810394ea1bfcfc70e6c07b25bcfad6 disable-locale-tests.patch 56a2b13b6cd7b127c04ac50ebf49994ec91ff2467d5d0f32b8428bd4df82b167459d4630dee5d1b5119f70b04ea6fe4411d44b768e0f313fa302c9e5fe51b7cd disable-unaligned-access-arm32-xxhash.patch -f0a8e3881e742395afc74e418eceab419280152f0884fd6b9dc971d90e117de1cd0a7578c08f14f694c75b904f12fa71fb0102dde0d67a095f6369b3413f7348 fix-test-32-bit-zstd.patch" +1eee8588058ce1de122d20de1ac67f8294be5b8d1ea28dc7adf28cee86eb45e697983a051f25a38d2e0ca92b9996e1d13707b985b86ff1647c8960ffca965fea test-fix.patch" diff --git a/system/libarchive/disable-locale-tests.patch b/system/libarchive/disable-locale-tests.patch index 885490c95..0775e8cc9 100644 --- a/system/libarchive/disable-locale-tests.patch +++ b/system/libarchive/disable-locale-tests.patch @@ -1,6 +1,6 @@ --- libarchive-3.6.0/libarchive/test/test_gnutar_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_gnutar_filename_encoding.c 2022-02-20 17:08:38.820000000 -0600 -@@ -75,7 +75,7 @@ +@@ -73,7 +73,7 @@ char buff[4096]; size_t used; @@ -9,7 +9,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -116,7 +116,7 @@ +@@ -114,7 +114,7 @@ char buff[4096]; size_t used; @@ -18,7 +18,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -157,8 +157,7 @@ +@@ -155,8 +155,7 @@ char buff[4096]; size_t used; @@ -28,7 +28,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -242,7 +241,7 @@ +@@ -240,7 +239,7 @@ char buff[4096]; size_t used; @@ -37,7 +37,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -277,7 +276,7 @@ +@@ -275,7 +274,7 @@ char buff[4096]; size_t used; @@ -46,7 +46,7 @@ skipping("eucJP locale not available on this system."); return; } -@@ -357,8 +356,7 @@ +@@ -355,8 +354,7 @@ char buff[4096]; size_t used; @@ -58,7 +58,7 @@ } --- libarchive-3.6.0/libarchive/test/test_pax_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_pax_filename_encoding.c 2022-02-20 17:09:41.050000000 -0600 -@@ -342,7 +342,7 @@ +@@ -341,7 +341,7 @@ char buff[4096]; size_t used; @@ -67,7 +67,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -388,8 +388,7 @@ +@@ -387,8 +387,7 @@ char buff[4096]; size_t used; @@ -77,7 +77,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -435,7 +434,7 @@ +@@ -434,7 +433,7 @@ char buff[4096]; size_t used; @@ -86,7 +86,7 @@ skipping("eucJP locale not available on this system."); return; } -@@ -482,8 +481,7 @@ +@@ -481,8 +480,7 @@ char buff[4096]; size_t used; @@ -98,7 +98,7 @@ } --- libarchive-3.6.0/libarchive/test/test_read_format_cpio_filename.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_read_format_cpio_filename.c 2022-02-20 17:16:18.580000000 -0600 -@@ -91,7 +91,7 @@ +@@ -90,7 +90,7 @@ /* * Read UTF-8 filename in ja_JP.eucJP with "hdrcharset=UTF-8" option. */ @@ -107,7 +107,7 @@ skipping("ja_JP.eucJP locale not available on this system."); return; } -@@ -191,8 +191,7 @@ +@@ -196,8 +196,7 @@ /* * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option. */ @@ -117,7 +117,7 @@ skipping("ru_RU.KOI8-R locale not available on this system."); return; } -@@ -296,8 +295,7 @@ +@@ -301,8 +300,7 @@ /* * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option. */ @@ -127,7 +127,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -401,8 +399,7 @@ +@@ -406,8 +404,7 @@ /* * Read UTF-8 filename in ru_RU.KOI8-R with "hdrcharset=UTF-8" option. */ @@ -137,7 +137,7 @@ skipping("ru_RU.KOI8-R locale not available on this system."); return; } -@@ -454,8 +451,7 @@ +@@ -459,8 +456,7 @@ /* * Read UTF-8 filename in ru_RU.CP866 with "hdrcharset=UTF-8" option. */ @@ -147,7 +147,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -553,8 +549,7 @@ +@@ -564,8 +560,7 @@ /* * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option. */ @@ -157,7 +157,7 @@ skipping("CP932 locale not available on this system."); return; } -@@ -604,8 +599,7 @@ +@@ -615,8 +600,7 @@ /* * Read UTF-8 filename in CP932/SJIS with "hdrcharset=UTF-8" option. */ @@ -167,7 +167,7 @@ skipping("CP932 locale not available on this system."); return; } -@@ -656,8 +650,7 @@ +@@ -667,8 +661,7 @@ /* * Read CP866 filename in CP1251 with "hdrcharset=CP866" option. */ @@ -177,7 +177,7 @@ skipping("CP1251 locale not available on this system."); return; } -@@ -715,7 +708,7 @@ +@@ -726,7 +719,7 @@ /* * Read CP866 filename in CP1251 without "hdrcharset=CP866" option. */ @@ -186,7 +186,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -761,8 +754,7 @@ +@@ -772,8 +765,7 @@ /* * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. */ @@ -196,7 +196,7 @@ skipping("CP1251 locale not available on this system."); return; } -@@ -814,8 +806,7 @@ +@@ -825,8 +817,7 @@ /* * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. */ @@ -208,7 +208,7 @@ } --- libarchive-3.6.0/libarchive/test/test_read_format_gtar_filename.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_read_format_gtar_filename.c 2022-02-20 17:17:56.960000000 -0600 -@@ -89,8 +89,7 @@ +@@ -88,8 +88,7 @@ /* * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option. */ @@ -218,7 +218,7 @@ skipping("ru_RU.KOI8-R locale not available on this system."); return; } -@@ -194,8 +193,7 @@ +@@ -193,8 +192,7 @@ /* * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option. */ @@ -228,7 +228,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -299,8 +297,7 @@ +@@ -298,8 +296,7 @@ /* * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option. */ @@ -238,7 +238,7 @@ skipping("CP932 locale not available on this system."); return; } -@@ -350,8 +347,7 @@ +@@ -349,8 +346,7 @@ /* * Read CP866 filename in CP1251 with "hdrcharset=CP866" option. */ @@ -248,7 +248,7 @@ skipping("CP1251 locale not available on this system."); return; } -@@ -409,7 +405,7 @@ +@@ -408,7 +404,7 @@ /* * Read CP866 filename in CP1251 without "hdrcharset=CP866" option. */ @@ -257,7 +257,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -455,8 +451,7 @@ +@@ -454,8 +450,7 @@ /* * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. */ @@ -269,7 +269,7 @@ } --- libarchive-3.6.0/libarchive/test/test_read_format_rar.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_read_format_rar.c 2022-02-20 17:19:17.710000000 -0600 -@@ -336,8 +336,7 @@ +@@ -344,8 +344,7 @@ struct archive_entry *ae; struct archive *a; @@ -281,7 +281,7 @@ } --- libarchive-3.6.0/libarchive/test/test_read_format_zip_filename.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_read_format_zip_filename.c 2022-02-20 17:29:22.640000000 -0600 -@@ -176,7 +176,7 @@ +@@ -175,7 +175,7 @@ * because the file name in the sample file is UTF-8 and * Bit 11 of its general purpose bit flag is set. */ @@ -290,7 +290,7 @@ skipping("ja_JP.eucJP locale not availablefilename_ on " "this system."); return; -@@ -343,8 +343,7 @@ +@@ -342,8 +342,7 @@ /* * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option. */ @@ -300,7 +300,7 @@ skipping("ru_RU.KOI8-R locale not available on this system."); return; } -@@ -456,8 +455,7 @@ +@@ -455,8 +454,7 @@ /* * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option. */ @@ -310,7 +310,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -569,8 +567,7 @@ +@@ -568,8 +566,7 @@ /* * Read UTF-8 filename in ru_RU.KOI8-R with "hdrcharset=UTF-8" option. */ @@ -320,7 +320,7 @@ skipping("ru_RU.KOI8-R locale not available on this system."); return; } -@@ -633,8 +630,7 @@ +@@ -632,8 +629,7 @@ * because the file name in the sample file is UTF-8 and * Bit 11 of its general purpose bit flag is set. */ @@ -330,7 +330,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -809,8 +805,7 @@ +@@ -808,8 +804,7 @@ * because the file name in the sample file is UTF-8 and * Bit 11 of its general purpose bit flag is set. */ @@ -340,7 +340,7 @@ skipping("CP932 locale not available on this system."); return; } -@@ -884,8 +879,7 @@ +@@ -883,8 +878,7 @@ /* * Read CP866 filename in CP1251 with "hdrcharset=CP866" option. */ @@ -350,7 +350,7 @@ skipping("CP1251 locale not available on this system."); return; } -@@ -947,7 +941,7 @@ +@@ -946,7 +940,7 @@ /* * Read CP866 filename in CP1251 without "hdrcharset=CP866" option. */ @@ -359,7 +359,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -997,8 +991,7 @@ +@@ -996,8 +990,7 @@ /* * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. */ @@ -369,7 +369,7 @@ skipping("CP1251 locale not available on this system."); return; } -@@ -1056,8 +1049,7 @@ +@@ -1055,8 +1048,7 @@ * because the file name in the sample file is UTF-8 and * Bit 11 of its general purpose bit flag is set. */ @@ -381,7 +381,7 @@ } --- libarchive-3.6.0/libarchive/test/test_ustar_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_ustar_filename_encoding.c 2022-02-20 17:30:54.440000000 -0600 -@@ -75,7 +75,7 @@ +@@ -74,7 +74,7 @@ char buff[4096]; size_t used; @@ -390,7 +390,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -116,7 +116,7 @@ +@@ -115,7 +115,7 @@ char buff[4096]; size_t used; @@ -399,7 +399,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -157,8 +157,7 @@ +@@ -156,8 +156,7 @@ char buff[4096]; size_t used; @@ -409,7 +409,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -242,7 +241,7 @@ +@@ -241,7 +240,7 @@ char buff[4096]; size_t used; @@ -418,7 +418,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -277,7 +276,7 @@ +@@ -276,7 +275,7 @@ char buff[4096]; size_t used; @@ -427,7 +427,7 @@ skipping("eucJP locale not available on this system."); return; } -@@ -357,8 +356,7 @@ +@@ -356,8 +355,7 @@ char buff[4096]; size_t used; @@ -439,7 +439,7 @@ } --- libarchive-3.6.0/libarchive/test/test_zip_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_zip_filename_encoding.c 2022-02-20 17:41:15.060000000 -0600 -@@ -122,7 +122,7 @@ +@@ -124,7 +124,7 @@ char buff[4096]; size_t used; @@ -448,7 +448,7 @@ skipping("KOI8-R locale not available on this system."); return; } -@@ -222,7 +222,7 @@ +@@ -224,7 +224,7 @@ char buff[4096]; size_t used; @@ -457,7 +457,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -265,7 +265,7 @@ +@@ -267,7 +267,7 @@ char buff[4096]; size_t used; @@ -466,7 +466,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -334,7 +334,7 @@ +@@ -336,7 +336,7 @@ char buff[4096]; size_t used; @@ -475,7 +475,7 @@ skipping("eucJP locale not available on this system."); return; } -@@ -433,8 +433,7 @@ +@@ -435,8 +435,7 @@ char buff[4096]; size_t used; @@ -487,7 +487,7 @@ } --- libarchive-3.6.0/libarchive/test/test_read_format_tar_filename.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_read_format_tar_filename.c 2022-02-20 17:54:34.540000000 -0600 -@@ -47,8 +47,7 @@ +@@ -46,8 +46,7 @@ * Read filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option. * We should correctly read two filenames. */ @@ -497,7 +497,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -276,8 +275,7 @@ +@@ -275,8 +274,7 @@ * Read filename in CP1251 with "hdrcharset=KOI8-R" option. * We should correctly read two filenames. */ @@ -509,7 +509,7 @@ } --- libarchive-3.6.0/libarchive/test/test_read_format_ustar_filename.c.old 2022-02-09 06:24:12.000000000 -0600 +++ libarchive-3.6.0/libarchive/test/test_read_format_ustar_filename.c 2022-02-20 17:56:02.310000000 -0600 -@@ -90,8 +90,7 @@ +@@ -89,8 +89,7 @@ /* * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option. */ @@ -519,7 +519,7 @@ skipping("ru_RU.KOI8-R locale not available on this system."); return; } -@@ -200,8 +199,7 @@ +@@ -199,8 +198,7 @@ /* * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option. */ @@ -529,7 +529,7 @@ skipping("ru_RU.CP866 locale not available on this system."); return; } -@@ -311,8 +309,7 @@ +@@ -310,8 +308,7 @@ /* * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option. */ @@ -539,7 +539,7 @@ skipping("CP932 locale not available on this system."); return; } -@@ -365,8 +362,7 @@ +@@ -364,8 +361,7 @@ /* * Read CP866 filename in CP1251 with "hdrcharset=CP866" option. */ @@ -549,7 +549,7 @@ skipping("CP1251 locale not available on this system."); return; } -@@ -427,7 +423,7 @@ +@@ -426,7 +422,7 @@ /* * Read CP866 filename in CP1251 without "hdrcharset=CP866" option. */ @@ -558,7 +558,7 @@ skipping("Russian_Russia locale not available on this system."); return; } -@@ -476,8 +472,7 @@ +@@ -475,8 +471,7 @@ /* * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option. */ @@ -568,3 +568,14 @@ skipping("CP1251 locale not available on this system."); return; } +--- libarchive-3.8.0/libarchive/test/test_archive_string_conversion.c.old 2025-05-20 04:00:39.000000000 -0500 ++++ libarchive-3.8.0/libarchive/test/test_archive_string_conversion.c 2025-05-31 18:27:37.470770608 -0500 +@@ -995,7 +995,7 @@ + + memset(&mstr, 0, sizeof(mstr)); + +- if (setlocale(LC_ALL, "ru_RU.KOI8-R") == NULL) { ++ if (1) { + skipping("KOI8-R locale not available on this system."); + return; + } diff --git a/system/libarchive/fix-test-32-bit-zstd.patch b/system/libarchive/fix-test-32-bit-zstd.patch deleted file mode 100644 index 5f43c2626..000000000 --- a/system/libarchive/fix-test-32-bit-zstd.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 3bd918d92f8c34ba12de9c6604d96f9e262a59fc Mon Sep 17 00:00:00 2001 -From: Martin Matuska <martin@matuska.de> -Date: Tue, 12 Sep 2023 08:54:47 +0200 -Subject: [PATCH] tests: fix zstd long option test for 32-bit architectures - -Fixes #1968 ---- - libarchive/test/test_write_filter_zstd.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/libarchive/test/test_write_filter_zstd.c b/libarchive/test/test_write_filter_zstd.c -index 3cdbd812a..c9731f1b6 100644 ---- a/libarchive/test/test_write_filter_zstd.c -+++ b/libarchive/test/test_write_filter_zstd.c -@@ -161,8 +161,12 @@ DEFINE_TEST(test_write_filter_zstd) - archive_write_set_filter_option(a, NULL, "max-frame-size", "1048576")); - #endif - #if ZSTD_VERSION_NUMBER >= MINVER_LONG -- assertEqualIntA(a, ARCHIVE_OK, -- archive_write_set_filter_option(a, NULL, "long", "27")); -+ if ((int)(sizeof(size_t) == 4)) -+ assertEqualIntA(a, ARCHIVE_OK, -+ archive_write_set_filter_option(a, NULL, "long", "26")); -+ else -+ assertEqualIntA(a, ARCHIVE_OK, -+ archive_write_set_filter_option(a, NULL, "long", "27")); - assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "long", "-1")); /* negative */ - #endif diff --git a/system/libarchive/test-fix.patch b/system/libarchive/test-fix.patch new file mode 100644 index 000000000..484145dd3 --- /dev/null +++ b/system/libarchive/test-fix.patch @@ -0,0 +1,13 @@ +Upstream-URL: https://github.com/libarchive/libarchive/issues/2653 + +--- libarchive-3.8.0/test_utils/test_main.c.old 2025-05-20 04:00:39.000000000 -0500 ++++ libarchive-3.8.0/test_utils/test_main.c 2025-05-31 17:39:16.638713788 -0500 +@@ -2456,7 +2456,7 @@ + + /* Skip arbitrary third-party version numbers. */ + while (s > 0 && (*q == ' ' || *q == '-' || *q == '/' || *q == '.' || +- isalnum((unsigned char)*q))) { ++ *q == '_' || isalnum((unsigned char)*q))) { + ++q; + --s; + } diff --git a/system/libbsd/APKBUILD b/system/libbsd/APKBUILD index 66270a012..68b7c1505 100644 --- a/system/libbsd/APKBUILD +++ b/system/libbsd/APKBUILD @@ -2,24 +2,17 @@ # Contributor: Ariadne Conill <ariadne@dereferenced.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libbsd -pkgver=0.10.0 +pkgver=0.12.2 pkgrel=0 pkgdesc="Commonly used BSD functions not implemented by all libcs" url="https://libbsd.freedesktop.org/" arch="all" license="BSD-2-Clause-NetBSD AND BSD-3-Clause AND BSD-4-Clause AND BSD-5-Clause AND Expat AND ISC AND Public-Domain AND Beerware" depends="musl>=1.1.16-r22" -depends_dev="bsd-compat-headers linux-headers" -makedepends="$depends_dev autoconf automake libtool" +depends_dev="bsd-compat-headers libmd-dev linux-headers" +makedepends="$depends_dev" subpackages="$pkgname-dev $pkgname-doc" -source="https://libbsd.freedesktop.org/releases/$pkgname-$pkgver.tar.xz - disable-fpurge-test.patch - " - -prepare() { - default_prepare - autoreconf -fi -} +source="https://libbsd.freedesktop.org/releases/$pkgname-$pkgver.tar.xz" build() { ./configure \ @@ -41,5 +34,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b75529785b16c93d31401187f8a58258fbebe565dac071c8311775c913af989f62cd29d5ce2651af3ea6221cffd31cf04826577d3e546ab9ca14340f297777b9 libbsd-0.10.0.tar.xz -424828e759420afbf2d4b97f5d402be9b3d51cb90241da1f047517bb75048255ea6cbbbc1e98bffa67449a7f48efe00d8f99b38bdaac9e8c461d1e989e9697b7 disable-fpurge-test.patch" +sha512sums="ce43e4f0486d5f00d4a8119ee863eaaa2f968cae4aa3d622976bb31ad601dfc565afacef7ebade5eba33fff1c329b5296c6387c008d1e1805d878431038f8b21 libbsd-0.12.2.tar.xz" diff --git a/system/libbsd/disable-fpurge-test.patch b/system/libbsd/disable-fpurge-test.patch deleted file mode 100644 index ef6241f62..000000000 --- a/system/libbsd/disable-fpurge-test.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- libbsd-0.8.3/test/Makefile.am.old 2017-08-17 02:42:30.045825258 +0000 -+++ libbsd-0.8.3/test/Makefile.am 2017-08-17 03:49:17.928202106 +0000 -@@ -38,7 +38,6 @@ - humanize \ - fgetln \ - fparseln \ -- fpurge \ - md5 \ - proctitle-init \ - strmode \ diff --git a/system/libcap-ng/APKBUILD b/system/libcap-ng/APKBUILD index f2a2d4207..ef308a6bb 100644 --- a/system/libcap-ng/APKBUILD +++ b/system/libcap-ng/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: Zach van Rijn <me@zv.io> pkgname=libcap-ng -pkgver=0.8.3 +pkgver=0.8.5 pkgrel=0 pkgdesc="POSIX capabilities library" url="https://people.redhat.com/sgrubb/libcap-ng/index.html" @@ -41,4 +41,4 @@ utils() { mv "$pkgdir"/usr/bin/* "$subpkgdir"/usr/bin/ } -sha512sums="0ef9bc7bc6b7b59991f43b79aa6cde3e8d2c22c4b9ced2af8deae501e01d51e893033d109cb8aa0fdcba190140110993089245346334d7b114d18f1bb1b55b97 libcap-ng-0.8.3.tar.gz" +sha512sums="89fb86454847f354c012411ecdc7e17f07bb40d7e9719ca0b93ea81c436113685bbbb5c1b9cb1b7ac92d216c105c687285304135beb156aedd55ab1c61e4f269 libcap-ng-0.8.5.tar.gz" diff --git a/system/libcap/APKBUILD b/system/libcap/APKBUILD index 8aadc5445..2882ccce1 100644 --- a/system/libcap/APKBUILD +++ b/system/libcap/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Zach van Rijn <me@zv.io> pkgname=libcap -pkgver=2.68 -pkgrel=1 +pkgver=2.76 +pkgrel=0 pkgdesc="POSIX 1003.1e capabilities" arch="all" license="BSD-3-Clause OR GPL-2.0-only" @@ -44,4 +44,4 @@ package() { mv "$pkgdir"/usr/sbin "$pkgdir"/ } -sha512sums="ede3e1356aef22e18a46dc8ff0727500ab023bea698cf2bb822abb06625e272940afea52ad6457d0cd8cf1c7f435f1b568baf0a6bf0a08ae96fbf6d7502f9de2 libcap-2.68.tar.xz" +sha512sums="f9448628ce036a10ce71958b25e5dd31032c4d86d8d34d905d2dfa32890ad443804169d4c6b825fd4bfe260b5de20f046cee958e40268bcadbbe7f7731ae40ad libcap-2.76.tar.xz" diff --git a/system/libedit/APKBUILD b/system/libedit/APKBUILD index 6968aed53..72d063912 100644 --- a/system/libedit/APKBUILD +++ b/system/libedit/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libedit -pkgver=20210910.3.1 +pkgver=20250104.3.1 _realver="${pkgver%%.*}-${pkgver#*.}" pkgrel=0 pkgdesc="Library providing line editing, history, and tokenisation functions" @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b7361c277f971ebe87e0e539e5e1fb01a4ca1bbab61e199eb97774d8b60dddeb9e35796faf9cc68eb86d1890e8aac11db13b44b57ccc8302d559741fbe9d979e libedit-20210910-3.1.tar.gz" +sha512sums="4b4a8b4b1f2cb952bbb3d128605eba9bc7cd0ad35c44b2c099f067c8bea69455bd11faae4ff20384bbe0ea901b25a1249d8323dea4ccd6141a17393f62bb8df2 libedit-20250104-3.1.tar.gz" diff --git a/system/libffi/APKBUILD b/system/libffi/APKBUILD index 48f7bb2d5..da046103d 100644 --- a/system/libffi/APKBUILD +++ b/system/libffi/APKBUILD @@ -1,9 +1,9 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libffi -pkgver=3.4.4 +pkgver=3.4.8 pkgrel=0 pkgdesc="A portable foreign function interface library" -url="https://sourceware.org/libffi" +url="https://sourceware.org/libffi/" arch="all" license="MIT" depends="" @@ -21,8 +21,6 @@ build () { } check() { - rm -v testsuite/libffi.call/s55.c #979 - make check } @@ -32,4 +30,4 @@ package() { install -m644 LICENSE ""$pkgdir"/usr/share/licenses/$pkgname/" } -sha512sums="88680aeb0fa0dc0319e5cd2ba45b4b5a340bc9b4bcf20b1e0613b39cd898f177a3863aa94034d8e23a7f6f44d858a53dcd36d1bb8dee13b751ef814224061889 libffi-3.4.4.tar.gz" +sha512sums="05344c6c1a1a5b44704f6cf99277098d1ea3ac1dc11c2a691c501786a214f76184ec0637135588630db609ce79e49df3dbd00282dd61e7f21137afba70e24ffe libffi-3.4.8.tar.gz" diff --git a/system/libgcrypt/APKBUILD b/system/libgcrypt/APKBUILD index da5eb8713..baa40fc7a 100644 --- a/system/libgcrypt/APKBUILD +++ b/system/libgcrypt/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libgcrypt -pkgver=1.10.1 +pkgver=1.11.1 pkgrel=0 pkgdesc="GnuPG cryptography library" url="https://www.gnupg.org" @@ -29,13 +29,6 @@ build() { ;; esac - case "$CARCH" in - pmmx) - # https://git.adelielinux.org/adelie/packages/-/issues/511 - _arch_configure="${_arch_configure} --disable-asm" - ;; - esac - ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -58,4 +51,4 @@ package() { rm -f ${pkgdir}/usr/share/info/dir } -sha512sums="e5ca7966624fff16c3013795836a2c4377f0193dbb4ac5ad2b79654b1fa8992e17d83816569a402212dc8367a7980d4141f5d6ac282bae6b9f02186365b61f13 libgcrypt-1.10.1.tar.bz2" +sha512sums="85846d62ce785e4250a2bf8a2b13ec24837e48ab8e10d537ad4a18d650d2cca747f82fd1501feab47ad3114b9593b36c9fa7a892f48139e2a71ef61295a47678 libgcrypt-1.11.1.tar.bz2" diff --git a/system/libgpg-error/APKBUILD b/system/libgpg-error/APKBUILD index dec8c1613..a6fc5841f 100644 --- a/system/libgpg-error/APKBUILD +++ b/system/libgpg-error/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libgpg-error -pkgver=1.46 +pkgver=1.55 pkgrel=0 pkgdesc="GnuPG runtime library" url="https://www.gnupg.org" @@ -19,7 +19,8 @@ build() { --prefix=/usr \ --sysconfdir=/etc \ --mandir=/usr/share/man \ - --localstatedir=/var + --localstatedir=/var \ + --enable-install-gpg-error-config make } @@ -36,4 +37,4 @@ lisp() { mv "$pkgdir"/usr/share "$subpkgdir"/usr/share/ } -sha512sums="b06223bb2b0f67d3db5d0d9ab116361a0eda175d4667352b5c0941408d37f2b0ba8e507297e480ccebb88cbba9d0a133820b896914b07d264fb3edaac7b8c99d libgpg-error-1.46.tar.bz2" +sha512sums="d3f6ca9d9abefe81f5cbbc195fbe259d3362119018c535ad2621ee407cad3487011325a9f4c4a15442a9ac5a0fe7ce86dafd7b3d891a446516362ba6b7b9047b libgpg-error-1.55.tar.bz2" diff --git a/system/libidn/APKBUILD b/system/libidn/APKBUILD index 2cf6e7a1a..f8143e85e 100644 --- a/system/libidn/APKBUILD +++ b/system/libidn/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Michael Mason <ms13sp@gmail.com> # Maintainer: pkgname=libidn -pkgver=1.40 +pkgver=1.43 pkgrel=0 pkgdesc="Library for internationalized domain names" url="https://www.gnu.org/software/libidn/" @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="6588454c0a6153b76090057c0f3b97ef6cd78b3d7c84dd27cb9537556b7f6d2b4048485c3b82e33e9fb3c9b8d308c0899676ea92f92cf201a6454bd9af781f96 libidn-1.40.tar.gz" +sha512sums="a098d9c1df9d47181e7707a115dcfa12ba4b1aba68b1d070eff4f0578fd2e09b9c453457f83fc1a704726eac3a6f90e5a00772ab116affd07efe1e1ab9d5b0f1 libidn-1.43.tar.gz" diff --git a/system/libmd/APKBUILD b/system/libmd/APKBUILD new file mode 100644 index 000000000..361dcd8d3 --- /dev/null +++ b/system/libmd/APKBUILD @@ -0,0 +1,33 @@ +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=libmd +pkgver=1.1.0 +pkgrel=0 +pkgdesc="Message Digest functions from BSD systems" +url="https://libbsd.freedesktop.org/" +arch="all" +license="BSD-2-Clause AND BSD-2-Clause-NetBSD AND BSD-3-Clause AND Public-Domain AND Beerware" +depends="" +makedepends="" +subpackages="$pkgname-dev $pkgname-doc" +source="https://libbsd.freedesktop.org/releases/libmd-$pkgver.tar.xz" + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="5d0da3337038e474fae7377bbc646d17214e72dc848a7aadc157f49333ce7b5ac1456e45d13674bd410ea08477c6115fc4282fed6c8e6a0bf63537a418c0df96 libmd-1.1.0.tar.xz" diff --git a/system/libpipeline/APKBUILD b/system/libpipeline/APKBUILD index a772cc14e..8888a4f40 100644 --- a/system/libpipeline/APKBUILD +++ b/system/libpipeline/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libpipeline -pkgver=1.5.7 +pkgver=1.5.8 pkgrel=0 pkgdesc="C pipeline manipulation library" url="https://libpipeline.nongnu.org/" @@ -32,4 +32,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="bb3be954f5d826cef805f85d65759fb197c31adf80d92360c7d0caa486e0d4877510681390ca01c028b6e805f968f14e8bf4b3eca02e429529031787e7f14d84 libpipeline-1.5.7.tar.gz" +sha512sums="0ae94df4bd508f0e664fa5430687d64904c60d69d9565c18cacb70251f8653cb7c571325d1406c859fdd149048adce8c4b3bf028573064496d7da3436e27b9b0 libpipeline-1.5.8.tar.gz" diff --git a/system/libssh2/APKBUILD b/system/libssh2/APKBUILD index abf895908..b2a057903 100644 --- a/system/libssh2/APKBUILD +++ b/system/libssh2/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Ariadne Conill <ariadne@dereferenced.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libssh2 -pkgver=1.10.0 +pkgver=1.11.1 pkgrel=0 pkgdesc="Library for accessing SSH servers" url="https://libssh2.org/" @@ -10,12 +10,8 @@ license="BSD-3-Clause" checkdepends="openssh-server" makedepends="openssl-dev zlib-dev" subpackages="$pkgname-dev $pkgname-doc" -#< zv> heads up that ipv6 on www.libssh2.org seems to be down -#< bagder> yeah, I know. its a misconfigure thing since a while back -#source="https://www.libssh2.org/download/libssh2-$pkgver.tar.gz -source="https://github.com/libssh2/libssh2/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz +source="https://www.libssh2.org/download/libssh2-$pkgver.tar.gz test-sshd.patch - fix-tests.patch " # secfixes: @@ -31,7 +27,8 @@ build() { --mandir=/usr/share/man \ --infodir=/usr/share/info \ --localstatedir=/var \ - --disable-rpath + --disable-rpath \ + --disable-docker-tests make } @@ -43,6 +40,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e064ee1089eb8e6cd5fa2617f4fd8ff56c2721c5476775a98bdb68c6c4ee4d05c706c3bb0eb479a27a8ec0b17a8a5ef43e1d028ad3f134519aa582d3981a3a30 libssh2-1.10.0.tar.gz -d6d4dfcd96bfa08210ecfb94c71624e011f294bab0b88548f41caff48283c2102ff012a6a6e71a100aa1d6430c8470fc0175449f31ae4583b6f8cfa224983603 test-sshd.patch -d075765062e3ffefb90902c9644ecde17f9bb39eac8ab5759370a26206f5804cb71b8b2d9b8d3ce9989c209bc36483dbc25f894f8c0ec9081aaef1a489c048df fix-tests.patch" +sha512sums="8703636fc28f0b12c8171712f3d605e0466a5bb9ba06e136c3203548fc3408ab07defd71dc801d7009a337e1e02fd60e8933a2a526d5ef0ce53153058d201233 libssh2-1.11.1.tar.gz +3df4e616bfa994876d60c1a6883a3d48c6c51d20423e2a7d2fa13cfc9ce61b0079bd17f51a0fcc1cc0de2dd9e8b06b5bbc59ad20389128781929ef3d5ef7ef8d test-sshd.patch" diff --git a/system/libssh2/fix-tests.patch b/system/libssh2/fix-tests.patch deleted file mode 100644 index 29f554991..000000000 --- a/system/libssh2/fix-tests.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libssh2-1.9.0/tests/ssh2.sh.old 2022-04-27 23:22:54.532007741 -0500 -+++ libssh2-1.9.0/tests/ssh2.sh 2022-04-27 23:34:30.501706060 -0500 -@@ -27,6 +27,8 @@ - -o "AuthorizedKeysFile $srcdir/etc/user.pub" \ - -o 'UsePrivilegeSeparation no' \ - -o 'StrictModes no' \ -+ -o 'HostkeyAlgorithms +ssh-rsa' \ -+ -o 'PubkeyAcceptedAlgorithms +ssh-rsa' \ - -D \ - -e \ - $libssh2_sshd_params & diff --git a/system/libssh2/test-sshd.patch b/system/libssh2/test-sshd.patch index 5daa8ce00..a4bf65615 100644 --- a/system/libssh2/test-sshd.patch +++ b/system/libssh2/test-sshd.patch @@ -1,21 +1,12 @@ ---- libssh2-1.9.0/tests/ssh2.sh 2010-10-25 17:15:14.000000000 -0500 -+++ libssh2-1.9.0/tests/ssh2.sh 2019-09-11 18:52:25.932354801 -0500 -@@ -28,6 +28,7 @@ $SSHD -f /dev/null -h "$srcdir"/etc/host - -o 'UsePrivilegeSeparation no' \ - -o 'StrictModes no' \ - -D \ -+ -e \ - $libssh2_sshd_params & - sshdpid=$! - ---- libssh2-1.9.0/tests/ssh2.c 2019-03-26 08:08:54.000000000 -0500 -+++ libssh2-1.9.0/tests/ssh2.c 2019-09-11 19:38:03.782403778 -0500 -@@ -147,20 +147,6 @@ int main(int argc, char *argv[]) +--- libssh2-1.9.0/tests/test_ssh2.c 2019-03-26 08:08:54.000000000 -0500 ++++ libssh2-1.9.0/tests/test_ssh2.c 2019-09-11 19:38:03.782403778 -0500 +@@ -225,21 +225,6 @@ int main(int argc, char *argv[]) */ libssh2_channel_setenv(channel, "FOO", "bar"); - /* Request a terminal with 'vanilla' terminal emulation -- * See /etc/termcap for more options +- * See /etc/termcap for more options. This is useful when opening +- * an interactive shell. - */ - if(libssh2_channel_request_pty(channel, "vanilla")) { - fprintf(stderr, "Failed requesting pty\n"); @@ -28,6 +19,6 @@ - goto shutdown; - } - - ec = 0; + rc = 0; skip_shell: diff --git a/system/libucontext/APKBUILD b/system/libucontext/APKBUILD index ae05f76ff..b3e71e9ba 100644 --- a/system/libucontext/APKBUILD +++ b/system/libucontext/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libucontext -pkgver=1.2 +pkgver=1.3.2 pkgrel=0 pkgdesc="Implementation of software-defined threading" url=" " @@ -9,9 +9,7 @@ license="ISC" depends="" makedepends="" subpackages="$pkgname-dev" -source="https://distfiles.dereferenced.org/libucontext/libucontext-$pkgver.tar.xz - pmmx.patch - " +source="https://distfiles.dereferenced.org/libucontext/libucontext-$pkgver.tar.xz" case "$CTARGET_ARCH" in aarch64_be) LIBUCONTEXT_ARCH="aarch64" ;; @@ -22,16 +20,15 @@ pmmx) LIBUCONTEXT_ARCH="x86" ;; esac build() { - make ARCH="$LIBUCONTEXT_ARCH" + make ARCH="$LIBUCONTEXT_ARCH" libdir="/lib" } check() { - make ARCH="$LIBUCONTEXT_ARCH" check + make ARCH="$LIBUCONTEXT_ARCH" libdir="/lib" check } package() { - make ARCH="$LIBUCONTEXT_ARCH" DESTDIR="$pkgdir" install + make ARCH="$LIBUCONTEXT_ARCH" libdir="/lib" DESTDIR="$pkgdir" install } -sha512sums="6603f2dcd87c4d9919c1726f2964632483e1a647733ff543d5935e3e2dac548adf320f1f9fb4c494691fe99fb393d64b15369f04d3783b2ca4c40b68c3d87865 libucontext-1.2.tar.xz -e5855aaf5042856e019dcd8bbf85c1319c4ed3ea836fd64617595b1fcacc14a101f7631e9d07a8af7f624a82c59a5bc6d2c1011b961ba4fede37725b6f5e9c37 pmmx.patch" +sha512sums="3911a9a772832dad68dc4dbb78ca646cba92170d4e192948e0a6e78295f6ee27f20b637986d39450edae805c96b08f7e1716fa7904fc84258acab8691d87c4f5 libucontext-1.3.2.tar.xz" diff --git a/system/libucontext/pmmx.patch b/system/libucontext/pmmx.patch deleted file mode 100644 index 3f6019ab8..000000000 --- a/system/libucontext/pmmx.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 196db62779287efb098943c2d4f2433e4b8ea592 Mon Sep 17 00:00:00 2001 -From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> -Date: Mon, 25 Apr 2022 23:34:32 -0500 -Subject: [PATCH] Revert "x86: port to use common trampoline" - -This reverts commit 388edbe12138e8300e230e2bc9c08a8f273e98d9. ---- - arch/x86/defs.h | 3 --- - arch/x86/startcontext.S | 41 +++++++++++++++++++++++++++++++++++++++++ - arch/x86/trampoline.c | 3 --- - 3 files changed, 41 insertions(+), 6 deletions(-) - create mode 100644 arch/x86/startcontext.S - delete mode 100644 arch/x86/trampoline.c - -diff --git a/arch/x86/defs.h b/arch/x86/defs.h -index 9370869..e0166e5 100644 ---- a/arch/x86/defs.h -+++ b/arch/x86/defs.h -@@ -57,9 +57,6 @@ - - #define MCONTEXT_GREGS (20) - --#define FETCH_LINKPTR(dest) \ -- asm("movl (%%esp, %%ebx, 4), %0" : "=r" ((dest))); -- - #include "common-defs.h" - - #endif -diff --git a/arch/x86/startcontext.S b/arch/x86/startcontext.S -new file mode 100644 -index 0000000..1cbc68c ---- /dev/null -+++ b/arch/x86/startcontext.S -@@ -0,0 +1,41 @@ -+/* -+ * Copyright (c) 2018, 2020 Ariadne Conill <ariadne@dereferenced.org> -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * This software is provided 'as is' and without any warranty, express or -+ * implied. In no event shall the authors be liable for any damages arising -+ * from the use of this software. -+ */ -+ -+#include "defs.h" -+ -+FUNC(libucontext_trampoline) -+ /* get the proper context into position and test for NULL */ -+ leal (%esp,%ebx,4), %esp -+ cmpl $0, (%esp) -+ -+ /* restore global offset table, exit@plt and libucontext_setcontext@plt need this */ -+ call __i686.get_pc_thunk.bx -+ addl $_GLOBAL_OFFSET_TABLE_, %ebx -+ -+ /* if we have no linked context, lets get out of here */ -+ je no_linked_context -+ -+ /* call setcontext to switch to the linked context */ -+ call libucontext_setcontext@plt -+ movl %eax, (%esp) -+ -+no_linked_context: -+ /* we are returning into a null context, it seems, so maybe we should exit */ -+ call exit@plt -+ -+ /* something is really hosed, call hlt to force termination */ -+ hlt -+ -+__i686.get_pc_thunk.bx: -+ mov (%esp), %ebx -+ ret -+END(libucontext_trampoline) -diff --git a/arch/x86/trampoline.c b/arch/x86/trampoline.c -deleted file mode 100644 -index 699a050..0000000 ---- a/arch/x86/trampoline.c -+++ /dev/null -@@ -1,3 +0,0 @@ --#include "defs.h" --#include <libucontext/libucontext.h> --#include "common-trampoline.c" --- -2.32.0 (Apple Git-132) - diff --git a/system/libxml2/APKBUILD b/system/libxml2/APKBUILD index 02b24e0ec..3c01c9ae7 100644 --- a/system/libxml2/APKBUILD +++ b/system/libxml2/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Carlo Landmeter <clandmeter@gmail.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libxml2 -pkgver=2.13.3 +pkgver=2.13.7 pkgrel=0 pkgdesc="XML parsing library" url="https://gitlab.gnome.org/GNOME/libxml2/-/wikis/home" @@ -9,12 +9,12 @@ arch="all" options="!strip" license="MIT" depends="" -depends_dev="zlib-dev icu-dev" checkdepends="perl libarchive" -makedepends="$depends_dev python3-dev" +makedepends="$depends_dev icu-dev python3-dev zlib-dev" subpackages="$pkgname-doc $pkgname-dev py3-libxml2:py" provides="$pkgname-utils=$pkgver-r$pkgrel" source="https://download.gnome.org/sources/libxml2/${pkgver%.*}/libxml2-$pkgver.tar.xz + icu-77.patch python-segfault-fix.patch " @@ -45,6 +45,7 @@ build() { --mandir=/usr/share/man \ --infodir=/usr/share/info \ --with-icu \ + --with-zlib \ --without-iconv \ --with-python=/usr/bin/python3 \ --enable-static @@ -65,5 +66,6 @@ py() { mv "$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib/ } -sha512sums="682da3fc0e15852c3963207edb66aa201cabe9ec16f1fb2ca97d6d1273daa33fff6ed70e91589204cc09bf49961dc163b5e3d9ee38fdedac957453b0fd64b36d libxml2-2.13.3.tar.xz +sha512sums="6e69ed38cdf2aaa5df7e26b654a7aadd2d80131619184380bafc6a22811acb6b7286c819175c3b37edb194019a93ba6085852a0281934d6bb36d0b52ce138541 libxml2-2.13.7.tar.xz +226d72c42db8d9161ed7429869210bccec17e403b83df5525e2c8c7ac22326b7345f15b2072ba6d0467dd786285b02bccc8f2a4d1c4a627f4700f31f08abea9f icu-77.patch 384b3d2031cd8f77528190bbb7652faa9ccb22bc604bcf4927e59046d38830dac38010828fe1568b6514976f725981a6d3ac1aa595d31477a36db2afe491452c python-segfault-fix.patch" diff --git a/system/libxml2/icu-77.patch b/system/libxml2/icu-77.patch new file mode 100644 index 000000000..67040ee59 --- /dev/null +++ b/system/libxml2/icu-77.patch @@ -0,0 +1,87 @@ +--- libxml2-2.13.7/configure.old 2025-03-27 08:37:45.000000000 -0500 ++++ libxml2-2.13.7/configure 2025-05-31 00:21:33.827860625 -0500 +@@ -1711,7 +1711,7 @@ + LZMA_LIBS linker flags for LZMA, overriding pkg-config + ICU_CFLAGS C compiler flags for ICU, overriding pkg-config + ICU_LIBS linker flags for ICU, overriding pkg-config +- ICU_DEFS value of DEFS for icu-i18n, overriding pkg-config ++ ICU_DEFS value of DEFS for icu-uc, overriding pkg-config + + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. +@@ -16281,19 +16281,19 @@ + # If this succeeeds, we ignore the WITH_ICU directory. + + pkg_failed=no +-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icu-i18n" >&5 +-printf %s "checking for icu-i18n... " >&6; } ++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icu-uc" >&5 ++printf %s "checking for icu-uc... " >&6; } + + if test -n "$ICU_CFLAGS"; then + pkg_cv_ICU_CFLAGS="$ICU_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-i18n\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "icu-i18n") 2>&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "icu-uc") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_ICU_CFLAGS=`$PKG_CONFIG --cflags "icu-i18n" 2>/dev/null` ++ pkg_cv_ICU_CFLAGS=`$PKG_CONFIG --cflags "icu-uc" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes +@@ -16305,12 +16305,12 @@ + pkg_cv_ICU_LIBS="$ICU_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-i18n\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "icu-i18n") 2>&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "icu-uc") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_ICU_LIBS=`$PKG_CONFIG --libs "icu-i18n" 2>/dev/null` ++ pkg_cv_ICU_LIBS=`$PKG_CONFIG --libs "icu-uc" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes +@@ -16331,9 +16331,9 @@ + _pkg_short_errors_supported=no + fi + if test $_pkg_short_errors_supported = yes; then +- ICU_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "icu-i18n" 2>&1` ++ ICU_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "icu-uc" 2>&1` + else +- ICU_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "icu-i18n" 2>&1` ++ ICU_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "icu-uc" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ICU_PKG_ERRORS" >&5 +@@ -16349,18 +16349,18 @@ + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + printf "%s\n" "yes" >&6; } + +- WITH_ICU=1; XML_PC_REQUIRES="${XML_PC_REQUIRES} icu-i18n" ++ WITH_ICU=1; XML_PC_REQUIRES="${XML_PC_REQUIRES} icu-uc" + + if test -n "$ICU_DEFS"; then + pkg_cv_ICU_DEFS="$ICU_DEFS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-i18n\""; } >&5 +- ($PKG_CONFIG --exists --print-errors "icu-i18n") 2>&5 ++ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"icu-uc\""; } >&5 ++ ($PKG_CONFIG --exists --print-errors "icu-uc") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then +- pkg_cv_ICU_DEFS=`$PKG_CONFIG --variable="DEFS" "icu-i18n" 2>/dev/null` ++ pkg_cv_ICU_DEFS=`$PKG_CONFIG --variable="DEFS" "icu-uc" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes + else + pkg_failed=yes diff --git a/system/lvm2/APKBUILD b/system/lvm2/APKBUILD index 626c1da98..e624e1822 100644 --- a/system/lvm2/APKBUILD +++ b/system/lvm2/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=lvm2 -pkgver=2.03.21 +pkgver=2.03.32 pkgrel=0 pkgdesc="Logical Volume Manager 2 utilities" url="https://sourceware.org/lvm2/" @@ -16,6 +16,7 @@ makedepends_host="$depends_dev util-linux-dev" makedepends="$makedepends_build $makedepends_host" replaces="device-mapper $pkgname-dmeventd" source="https://mirrors.kernel.org/sourceware/$pkgname/LVM2.$pkgver.tgz + bashism-configure.patch fix-stdio-usage.patch mlockall-default-config.patch lvm.initd @@ -86,8 +87,9 @@ udev() { } -sha512sums="6024811c3fa92afd2fc13a10d1c3542352aa9a016f40c3ef588bd2f5f3e41245fed4b36c8a87d9f7f8dddc6e13b7253396f5c811f99665df27751676dc7b5bde LVM2.2.03.21.tgz -40e49bb34a9c07493ab6a9948e3ac1a85e22f069b69ad2a1369cb7d30a6ea6d72a27f380ad8951f55d939834e2f29c9da589ae475322ea41b4dfce72060b9557 fix-stdio-usage.patch +sha512sums="6a7acebf10274b029211b0f5b7c7a9aabf2074a8e9ce1b72fce7eadffdaf2ebb23d9d998be41ff31a9e10808ece32ec2dde3454c82103c39084ac1beffe18ec1 LVM2.2.03.32.tgz +0a16a8f42de0eafcfed994f06a7adb14097ee44937b184aea6e1526a0cfbaf27a03d4dacaa3f3f272fdb2e90fc036984a43c42271a7558b47e6b6f2e824a9e5a bashism-configure.patch +ab5eb15aff6be96fe91245749095da28ec4d1f51f039e0d36f29eecaed5596cf79ea4cda90401a9d6fa78453b5247707f6018e11fa544bfdfd5c0c4de20b028c fix-stdio-usage.patch 0f1feeddf35a7208a240b13d87f479eeb5410ccb534ccd62714355b10721c4eff77d725c72a2b5270320bef12828c32d60003f187db990fad3fef37ec08c1dff mlockall-default-config.patch a853078660fd2fd943538924f56e81dc5793294e26b8f61d93e6188893f15f4a438d33792b341c1865d61e03f4a371b7c7ee0db5f4130ef7cb7aeaeb9290086a lvm.initd 07caf8fa942290f3c953cc2463aaf55bac01d0bcb9351daf3880fa4d0eefb67fe00761c46a7a4da91cd2f8e492a12fed35853a15dc939cd80d19d3303bc3951d lvm.confd diff --git a/system/lvm2/bashism-configure.patch b/system/lvm2/bashism-configure.patch new file mode 100644 index 000000000..5c9f3258c --- /dev/null +++ b/system/lvm2/bashism-configure.patch @@ -0,0 +1,49 @@ +Upstream-URL: https://gitlab.com/lvmteam/lvm2/-/merge_requests/29 + +From b0b259e3571b5be49d912e56518c9af734f317d4 Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Mon, 2 Jun 2025 04:08:08 +0000 +Subject: [PATCH] configure: Use portable string comparison + += and == are equivalent in Bash for strings, but = is the only portable +operator for compatibility with other shells. Before this change, +running ./configure with Dash as /bin/sh resulted in: + +./configure: 14558: test: yes: unexpected operator + +and the test did not work (i.e. --enable-cmdlib --disable-shared allowed +a failed build to continue). Now, the test works in Bash and Dash. +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 342bd0047..75564a228 100755 +--- a/configure ++++ b/configure +@@ -14564,7 +14564,7 @@ printf %s "checking whether to compile liblvm2cmd.so... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CMDLIB" >&5 + printf "%s\n" "$CMDLIB" >&6; } + +-if test "$CMDLIB" == "yes" && test "$SHARED_LINK" = "no" ++if test "$CMDLIB" = "yes" && test "$SHARED_LINK" = "no" + then : + as_fn_error $? "--enable-cmdlib requires dynamic linking." "$LINENO" 5 + fi +diff --git a/configure.ac b/configure.ac +index 6fcf6f2b5..470057be4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1395,7 +1395,7 @@ AS_IF([test "$CMDLIB" != "yes"], [CMDLIB="no" LVM2CMD_LIB=], [LVM2CMD_LIB="-llvm + AC_MSG_CHECKING([whether to compile liblvm2cmd.so]) + AC_MSG_RESULT([$CMDLIB]) + +-AS_IF([test "$CMDLIB" == "yes" && test "$SHARED_LINK" = "no"], ++AS_IF([test "$CMDLIB" = "yes" && test "$SHARED_LINK" = "no"], + [AC_MSG_ERROR([--enable-cmdlib requires dynamic linking.])]) + + +-- +2.40.0 + diff --git a/system/lvm2/fix-stdio-usage.patch b/system/lvm2/fix-stdio-usage.patch index 2b3f0a91f..5a66665ea 100644 --- a/system/lvm2/fix-stdio-usage.patch +++ b/system/lvm2/fix-stdio-usage.patch @@ -10,7 +10,7 @@ Subject: [PATCH] Use `freopen()` on {stdin,stdout,stderr} +++ b/lib/log/log.c @@ -208,7 +208,11 @@ int reopen_standard_stream(FILE **stream, const char *mode) - _check_and_replace_standard_log_streams(old_stream, new_stream); + _check_and_replace_standard_log_streams(*stream, new_stream); +#ifdef __GLIBC__ *stream = new_stream; @@ -22,7 +22,7 @@ Subject: [PATCH] Use `freopen()` on {stdin,stdout,stderr} --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c -@@ -3422,7 +3422,7 @@ static int _check_standard_fds(void) +@@ -3407,7 +3407,7 @@ static int _check_standard_fds(void) int err = is_valid_fd(STDERR_FILENO); if (!is_valid_fd(STDIN_FILENO) && @@ -31,7 +31,7 @@ Subject: [PATCH] Use `freopen()` on {stdin,stdout,stderr} if (err) perror("stdin stream open"); else -@@ -3432,7 +3432,7 @@ static int _check_standard_fds(void) +@@ -3417,7 +3417,7 @@ static int _check_standard_fds(void) } if (!is_valid_fd(STDOUT_FILENO) && @@ -40,7 +40,7 @@ Subject: [PATCH] Use `freopen()` on {stdin,stdout,stderr} if (err) perror("stdout stream open"); /* else no stdout */ -@@ -3440,7 +3440,7 @@ static int _check_standard_fds(void) +@@ -3425,7 +3425,7 @@ static int _check_standard_fds(void) } if (!is_valid_fd(STDERR_FILENO) && diff --git a/system/lz4/APKBUILD b/system/lz4/APKBUILD index 3911e26f4..9b4991db7 100644 --- a/system/lz4/APKBUILD +++ b/system/lz4/APKBUILD @@ -1,20 +1,16 @@ # Contributor: Stuart Cardall <developer@it-offshore.co.uk> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=lz4 -pkgver=1.9.4 +pkgver=1.10.0 pkgrel=0 pkgdesc="LZ4: Extremely Fast Compression algorithm" url="https://github.com/lz4/lz4" arch="all" -license="BSD-2-Clause GPL-2.0-only" +license="GPL-2.0+" checkdepends="diffutils" subpackages="$pkgname-dev $pkgname-doc $pkgname-libs" source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz" -case "$CARCH" in -armhf) options="!check" ;; # FIXME -esac - # secfixes: # 1.9.3-r1: # - CVE-2021-3520 @@ -31,4 +27,9 @@ package() { make PREFIX="/usr" DESTDIR="$pkgdir" install } -sha512sums="043a9acb2417624019d73db140d83b80f1d7c43a6fd5be839193d68df8fd0b3f610d7ed4d628c2a9184f7cde9a0fd1ba9d075d8251298e3eb4b3a77f52736684 lz4-1.9.4.tar.gz" +libs() { + license="BSD-2-Clause" + default_libs +} + +sha512sums="8c4ceb217e6dc8e7e0beba99adc736aca8963867bcf9f970d621978ba11ce92855912f8b66138037a1d2ae171e8e17beb7be99281fea840106aa60373c455b28 lz4-1.10.0.tar.gz" diff --git a/system/lzip/APKBUILD b/system/lzip/APKBUILD index 9f664b6ce..c31cbf0cb 100644 --- a/system/lzip/APKBUILD +++ b/system/lzip/APKBUILD @@ -1,7 +1,7 @@ # Contributor: ScrumpyJack <scrumpyjack@st.ilet.to> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=lzip -pkgver=1.23 +pkgver=1.25 pkgrel=0 pkgdesc="Lossless data compressor" url="https://www.nongnu.org/lzip/lzip.html" @@ -28,4 +28,4 @@ package() { make DESTDIR=$pkgdir install } -sha512sums="482804205b6e92fdf9cb17fb9482df7987227c7b1bef9e42d78787acfabe73995f5b1a66f847d2176423f22dce56f1122c5b1c9670f0b778c0bdad2852369c85 lzip-1.23.tar.gz" +sha512sums="6dec5625d5668d2f6f93816b0f2d7050ef357b5ce9a9af100bde45dddc21171341c2bcb623acdde8146b7eaed2248f8e0f5f32e64f57ecc6fe6cb9a0e187b796 lzip-1.25.tar.gz" diff --git a/system/m4/APKBUILD b/system/m4/APKBUILD index 90b5145c7..f24881d02 100644 --- a/system/m4/APKBUILD +++ b/system/m4/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Zach van Rijn <me@zv.io> pkgname=m4 -pkgver=1.4.19 -pkgrel=1 +pkgver=1.4.20 +pkgrel=0 pkgdesc="GNU macro processor" url="https://www.gnu.org/software/m4" arch="all" @@ -10,12 +10,8 @@ depends="" checkdepends="diffutils" makedepends="texinfo" subpackages="$pkgname-doc $pkgname-lang" -source="https://ftp.gnu.org/gnu/m4/$pkgname-$pkgver.tar.gz - disable-mbrtowc-test.patch +source="https://ftp.gnu.org/gnu/m4/$pkgname-$pkgver.tar.xz gnulib-tests-dont-require-gpg-passphrase.patch - m4-1.4.19-test-198.patch - posix-test.patch - fix-ppc-ucontext-regs.patch " build() { @@ -36,9 +32,5 @@ package() { rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true } -sha512sums="f5dd0f02fcae65a176a16af9a8e1747c26e9440c6c224003ba458d3298b777a75ffb189aee9051fb0c4840b2a48278be4a51d959381af0b1d627570f478c58f2 m4-1.4.19.tar.gz -c39562852502282f83b9bfa46aff00c8859b19d4d4335dbdb488748b10f6df6a13ea8291784683bf967674a5a824276419af47d2395e8af18823452a8d4999da disable-mbrtowc-test.patch -fb7344bc8a7aea1f1ce87474109aaf3d5a5ca0cd86b517025c6aad9a388a9ede7c267e7095d171d8768d1c0f0d9d8009e307467352afa81484c54dc476db0ebd gnulib-tests-dont-require-gpg-passphrase.patch -f409fcfd70d55c099bba7d784bea8f99cd6ccbfe24dfc3d76a2e757df96b6c71f7e4b42f63d433259e3bec7b7e40e6569533c032c98537003a6e7314754dd6fb m4-1.4.19-test-198.patch -43c68f84c465b2e26a73ef0a5cf9bacafee70849f9de166eef45d7699438dce0ea3cacdd513daa8a8ae7fb677778290e2a78d01b551d9465de68eb167abcbc93 posix-test.patch -0d40a28e2a4d40c5f18c317e4e6bce7fda2c7316249ebf102c585eda32d069a63a1fb5ced5efcba6d2beb2d68d54d67c6b2789f881bbb488899c95130e152744 fix-ppc-ucontext-regs.patch" +sha512sums="dc7b4f61452e564b095010029bf6ce4246e5a03959989cd76b09eb8012db7424c52819143020fab21a3471ff57ab026d3eccbd00dd3969819208980565a9fec0 m4-1.4.20.tar.xz +aec2ad41e0e340491d764ca2fd3e64b06ea6874116700cbe514ef8e44d8edd4a02568dda0e012811d7e619518baa2279f409c7a65101d067da23fe842a8c904e gnulib-tests-dont-require-gpg-passphrase.patch" diff --git a/system/m4/fix-ppc-ucontext-regs.patch b/system/m4/fix-ppc-ucontext-regs.patch deleted file mode 100644 index d696da4ad..000000000 --- a/system/m4/fix-ppc-ucontext-regs.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur a/lib/sigsegv.c b/lib/sigsegv.c ---- a/lib/sigsegv.c 2022-03-05 20:30:15.030000000 +0000 -+++ b/lib/sigsegv.c 2022-03-05 20:42:49.910000000 +0000 -@@ -220,7 +220,7 @@ - # if 0 - # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1] - # else --# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1] -+# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs[1] - # endif - # endif - diff --git a/system/m4/gnulib-tests-dont-require-gpg-passphrase.patch b/system/m4/gnulib-tests-dont-require-gpg-passphrase.patch index d00fbfd6a..c414f2154 100644 --- a/system/m4/gnulib-tests-dont-require-gpg-passphrase.patch +++ b/system/m4/gnulib-tests-dont-require-gpg-passphrase.patch @@ -1,6 +1,6 @@ --- m4-1.4.18/tests/test-vc-list-files-git.sh.old 2018-01-03 18:36:29.000000000 -0600 +++ m4-1.4.18/tests/test-vc-list-files-git.sh 2018-06-18 21:57:08.305562148 -0500 -@@ -32,6 +32,7 @@ +@@ -39,6 +39,7 @@ touch d/a b c && git config user.email "you@example.com" && git config user.name "Your Name" && diff --git a/system/m4/m4-1.4.19-test-198.patch b/system/m4/m4-1.4.19-test-198.patch deleted file mode 100644 index 3ca4bd478..000000000 --- a/system/m4/m4-1.4.19-test-198.patch +++ /dev/null @@ -1,31 +0,0 @@ -From cd7f4d153ccccf601751e9fa82424412f6ecfc96 Mon Sep 17 00:00:00 2001 -From: Eric Blake <eblake@redhat.com> -Date: Tue, 1 Jun 2021 08:10:51 -0500 -Subject: [PATCH] tests: Fix 198.sysval - -In my attempt to avoid test failures on Haiku, I caused test failures -on platforms where sh is noisy when reporting a killed sub-process. - -* doc/m4.texi (Sysval): Avoid stderr noise during test. -Fixes: 17011ea76a (tests: Skip signal detection on Haiku) -Fixes: https://lists.gnu.org/archive/html/bug-m4/2021-05/msg00029.html ---- - doc/m4.texi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/doc/m4.texi b/doc/m4.texi -index 247f2be5..3b833b2a 100644 ---- a/doc/m4.texi -+++ b/doc/m4.texi -@@ -6756,6 +6756,7 @@ ifdef(`__unix__', , - ')m4exit(`77')')dnl - changequote(`[', `]') - @result{} --syscmd([/bin/sh -c 'kill -9 $$'; st=$?; test $st = 137 || test $st = 265]) -+syscmd([@{ /bin/sh -c 'kill -9 $$'; @} 2>/dev/null; st=$?; -+test $st = 137 || test $st = 265]) - @result{} - ifelse(sysval, [0], , [errprint([ skipping: shell does not send signal 9 --- -2.17.1 - diff --git a/system/m4/posix-test.patch b/system/m4/posix-test.patch deleted file mode 100644 index 058c85c6f..000000000 --- a/system/m4/posix-test.patch +++ /dev/null @@ -1,18 +0,0 @@ -This behaviour does not pass on *this* platform. - ---- m4-1.4.19/tests/test-posix_spawn_file_actions_addclose.c.old 2021-04-22 15:28:47.000000000 -0500 -+++ m4-1.4.19/tests/test-posix_spawn_file_actions_addclose.c 2022-02-09 03:27:59.030000000 -0600 -@@ -54,13 +54,6 @@ - errno = 0; - ASSERT (posix_spawn_file_actions_addclose (&actions, -1) == EBADF); - } -- /* This behaviour is not mandated by POSIX, but happens to pass on all -- platforms. */ -- { -- int bad_fd = big_fd (); -- errno = 0; -- ASSERT (posix_spawn_file_actions_addclose (&actions, bad_fd) == EBADF); -- } - - posix_spawn_file_actions_destroy (&actions); - diff --git a/system/man-pages/APKBUILD b/system/man-pages/APKBUILD index 2ee5c69f1..53ac72bfc 100644 --- a/system/man-pages/APKBUILD +++ b/system/man-pages/APKBUILD @@ -1,9 +1,9 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=man-pages -pkgver=5.13 +pkgver=6.14 _posixver=2017 -pkgrel=1 +pkgrel=0 pkgdesc="Linux man pages" url="https://www.kernel.org/doc/man-pages/" arch="noarch" @@ -12,7 +12,7 @@ license="GPL-2.0+ AND POSIX" depends="" makedepends="" install_if="docs build-tools" -source="https://cdn.kernel.org/pub/linux/docs/$pkgname/Archive/$pkgname-$pkgver.tar.xz +source="https://cdn.kernel.org/pub/linux/docs/$pkgname/$pkgname-$pkgver.tar.xz https://cdn.kernel.org/pub/linux/docs/$pkgname/$pkgname-posix/$pkgname-posix-${_posixver}-a.tar.xz " @@ -27,7 +27,7 @@ build() { } package() { - make prefix="$pkgdir"/usr install + make -R prefix="$pkgdir"/usr install find "$pkgdir"/usr/share/man -name "*.[0-9]" | xargs gzip -9 # provided by libiconv-doc @@ -50,5 +50,5 @@ package() { rm -f "$pkgdir"/usr/share/man/man1/localedef* } -sha512sums="a68c0bd5f078aff2f13f962060863e5d30734c1c562e8e9e3d5eda5a329b18ad3e9b4ebb883d31cacfc0a476f91fccb8dd4257598acd75d09dd21351893d3499 man-pages-5.13.tar.xz +sha512sums="e2981bb75e22d74ae4424dde7a9529d685693635777b072318af73e76f8156783bc74205e8fff5a433ec4d769ccaa8388078a9d061f3878b5182128e5af50693 man-pages-6.14.tar.xz dac6bd5bb3e1d5f8918bad3eb15e08eeb3e06ae160c04ccd5619bfb0c536139ac06faa62b6856656a1bb9a7496f3148e52a5227b83e4099be6e6b93230de211d man-pages-posix-2017-a.tar.xz" diff --git a/system/mawk/APKBUILD b/system/mawk/APKBUILD index 64b641031..221383e97 100644 --- a/system/mawk/APKBUILD +++ b/system/mawk/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=mawk -pkgver=1.3.4.20230525 +pkgver=1.3.4.20250131 pkgrel=0 pkgdesc="Pattern scanning and text processing language" url="https://invisible-island.net/mawk/mawk.html" @@ -37,4 +37,4 @@ package() { ln -s ../../bin/awk "$pkgdir"/usr/bin/awk } -sha512sums="704c1a94569e8e953af7b00ea81efa20df03483f57e4183935e73df62309874644f2250a307b136af34ce3df62d90170d8afe7b3a86eeacb31cf5845056126cb mawk-1.3.4-20230525.tgz" +sha512sums="100b1f5ee190d2841d5dee449c53601a6d32453e47b232de919f3489f6f7040d0c6d21f6c7d30df616b04abde2db9799c5eb16570c1f88dbc10fcd75c5838042 mawk-1.3.4-20250131.tgz" diff --git a/system/muon/APKBUILD b/system/muon/APKBUILD new file mode 100644 index 000000000..6ccf8a24d --- /dev/null +++ b/system/muon/APKBUILD @@ -0,0 +1,32 @@ +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=muon +pkgver=0.5.0 +pkgrel=0 +pkgdesc="A Meson-compatible build system" +url="https://muon.build/" +arch="all" +license="GPL-3.0-only AND MIT AND Unlicense AND Python-2.0 AND Apache-2.0" +depends="samurai" +checkdepends="python3" +makedepends="curl-dev libarchive-dev pkgconf-dev scdoc" +subpackages="$pkgname-doc" +source="https://muon.build/releases/v$pkgver/muon-v$pkgver.tar.gz" +builddir="$srcdir/$pkgname-v$pkgver" + +build() { + ./bootstrap.sh build + build/muon-bootstrap setup \ + -Dprefix=/usr \ + build + build/muon-bootstrap -C build samu +} + +check() { + build/muon-bootstrap -C build test +} + +package() { + DESTDIR="$pkgdir" build/muon-bootstrap -C build install +} + +sha512sums="3552e9b3ead9072de5a683cc1448eaab1ebd60a10653a3c8d183ec89b3b56ffce12dac4735be5f5e4ede7795e7d0abeafd3c404648ac1597cbf7d6d55f8d0ed7 muon-v0.5.0.tar.gz" diff --git a/system/nspr/APKBUILD b/system/nspr/APKBUILD index 033c5a6d6..c20fefbd2 100644 --- a/system/nspr/APKBUILD +++ b/system/nspr/APKBUILD @@ -1,11 +1,10 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=nspr -pkgver=4.35 +pkgver=4.36 pkgrel=0 pkgdesc="Netscape Portable Runtime" url="https://firefox-source-docs.mozilla.org/nspr/index.html" arch="all" -options="!check" # No test suite. license="MPL-1.1 AND GPL-2.0-only AND LGPL-2.1-only" depends="" # -dev package does not ship any symlinks so dependency cannot be autodetected @@ -40,6 +39,13 @@ build() { make CC="${CC:-gcc}" CXX="${CXX:-g++}" } +check() { + make -C "$builddir"/build/lib/tests + for i in arena base64t getopt string; do + "$builddir"/build/lib/tests/$i + done +} + package() { cd "$builddir"/build make DESTDIR="$pkgdir" install @@ -56,5 +62,5 @@ package() { "$pkgdir"/usr/include/nspr/md } -sha512sums="502815833116e25f79ddf71d1526484908aa92fbc55f8a892729cb404a4daafcc0470a89854cd080d2d20299fdb7d9662507c5362c7ae661cbacf308ac56ef7f nspr-4.35.tar.gz +sha512sums="55d21e196508ad29a179639fc8006f44b04dc2c0b5a85895e727f0a4f0ea37aeeceb936e37ac6b271b882a18e9f06d96133a60f19cee6345f8424c1c66e270ee nspr-4.36.tar.gz 1f694fc151f6578080449e3aa999c520486bbe117b8237150966ec43092db4156e81412ac889045e0c0c3bf65d459af5bdc1cf19c9fa3dab120405a60732f15a stacksize.patch" diff --git a/system/nss/APKBUILD b/system/nss/APKBUILD index f25f8d35c..834b5a857 100644 --- a/system/nss/APKBUILD +++ b/system/nss/APKBUILD @@ -1,13 +1,13 @@ # Contributor: Łukasz Jendrysik <scadu@yandex.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=nss -pkgver=3.103 +pkgver=3.112 _ver=$(printf '%s' "$pkgver" | tr . _) pkgrel=0 pkgdesc="Mozilla Network Security Services" url="https://firefox-source-docs.mozilla.org/security/nss/index.html" arch="all" -options="!check" +options="!check" # Requires builder name to resolve in the DNS + ~3hrs on gwyn license="MPL-2.0" depends="" depends_dev="nspr-dev" @@ -66,6 +66,15 @@ build() { make -C nss all } +check() { + export BUILD_OPT=1 + case "$CARCH" in + *64* | s390x) export USE_64=1;; + esac + + nss/tests/all.sh +} + package() { install -m755 -d "$pkgdir"/usr/lib/pkgconfig install -m755 -d "$pkgdir"/usr/bin @@ -157,7 +166,7 @@ tools() { mv "$pkgdir"/usr/bin "$subpkgdir"/usr/ } -sha512sums="bc7680fc34d84de7953b27f1a220681f3f5c5a501a82be210ec6134894313f6a2c9bfcc350f4802152a5e3a1fc2defc74d700445ade338d6c86a923ac8b4dc75 nss-3.103.tar.gz +sha512sums="564ae4ded323d7213f224673b0ddc584dcfae71bbdd139310854e547d9ba2877ba45462da49f71ea2fae72caea1cf10fa51d9dfef656a21957256cadc5fa4b35 nss-3.112.tar.gz 75dbd648a461940647ff373389cc73bc8ec609139cd46c91bcce866af02be6bcbb0524eb3dfb721fbd5b0bc68c20081ed6f7debf6b24317f2a7ba823e8d3c531 nss.pc.in 0f2efa8563b11da68669d281b4459289a56f5a3a906eb60382126f3adcfe47420cdcedc6ab57727a3afeeffa2bbb4c750b43bef8b5f343a75c968411dfa30e09 nss-util.pc.in 09c69d4cc39ec9deebc88696a80d0f15eb2d8c94d9daa234a2adfec941b63805eb4ce7f2e1943857b938bddcaee1beac246a0ec627b71563d9f846e6119a4a15 nss-softokn.pc.in diff --git a/system/openssl/APKBUILD b/system/openssl/APKBUILD index 9e178ca77..677942d41 100644 --- a/system/openssl/APKBUILD +++ b/system/openssl/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=openssl -pkgver=1.1.1v +pkgver=1.1.1z_p2 pkgrel=0 pkgdesc="Toolkit for SSL and TLS" url="https://www.openssl.org/" @@ -11,9 +11,14 @@ checkdepends="perl" makedepends_build="perl" subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc libcrypto1.1:libcrypto libssl1.1:libssl" -source="https://www.openssl.org/source/${pkgname}-${pkgver}.tar.gz +source="https://www.openssl.org/source/${pkgname}-${pkgver%z_p2}w.tar.gz ppc-auxv.patch ppc64.patch + x.patch + y.patch + za.patch + zb.patch + zb2.patch " # secfixes: @@ -63,6 +68,11 @@ source="https://www.openssl.org/source/${pkgname}-${pkgver}.tar.gz # 1.1.1t-r1: # - CVE-2023-0465 +unpack() { + default_unpack + mv "$pkgname-${pkgver%z_p2}w" "$pkgname-$pkgver" +} + build() { # openssl will prepend crosscompile always core CC et al CC=${CC#${CROSS_COMPILE}} @@ -131,6 +141,11 @@ libssl() { done } -sha512sums="1a67340d99026aa62bf50ff89165d9f77fe4a6690fe30d1751b5021dd3f238391afd581b41724687c322c4e3af1770c44a63766a06e9b8cab6425101153e0c7e openssl-1.1.1v.tar.gz +sha512sums="b4c625fe56a4e690b57b6a011a225ad0cb3af54bd8fb67af77b5eceac55cc7191291d96a660c5b568a08a2fbf62b4612818e7cca1bb95b2b6b4fc649b0552b6d openssl-1.1.1w.tar.gz 7fd3158c6eb3451f10e4bfd78f85c3e7aef84716eb38e00503d5cfc8e414b7bdf02e0671d0299a96a453dd2e38249dcf1281136b27b6df372f3ea08fbf78329b ppc-auxv.patch -e040f23770d52b988578f7ff84d77563340f37c026db7643db8e4ef18e795e27d10cb42cb8656da4d9c57a28283a2828729d70f940edc950c3422a54fea55509 ppc64.patch" +e040f23770d52b988578f7ff84d77563340f37c026db7643db8e4ef18e795e27d10cb42cb8656da4d9c57a28283a2828729d70f940edc950c3422a54fea55509 ppc64.patch +8116cc9e1ae192ac85ad3c85619a297748a04cbf80e91b9d72fc9857dcbfc7da449724b7d6782de97fe6367e5374d6cf06b8864355473608147b45f7fb741d8a x.patch +f696bb088cf75a4ad0307f919344b1e3361bb77a42f34c5db557cdba9e2c091ca1fe1f8d66cd4612fa2a7d64a41245bee72ba603789cf20d86b952490284756d y.patch +85f5eb3a5423ced9b01fa20d020cbbfd987e3c82467d9d196ba5f0bc327c8b09e1e39b98a479c8fc1f9a90b3eda82202995d8abe8ff536c4644b73cca630f053 za.patch +060992bff56f9e69f4dc89f3de3a74817cd21b7338e8062a9e9e52a74a08d7b461ead51fb5c7ae9fcc2c717e72e285d42922dd0c37b314b3e5d0e5cf3ae2682f zb.patch +b2c31f588aec1ef641985f08a302f815b3854e5be2291eeb2c9db4b12cf69caaa6c813ec75139e623fe3a48a6f4f02500b9b5b1ac2c83d9d053ef098c220a929 zb2.patch" diff --git a/system/openssl/x.patch b/system/openssl/x.patch new file mode 100644 index 000000000..52e575b08 --- /dev/null +++ b/system/openssl/x.patch @@ -0,0 +1,294 @@ +From 01ca0bbbe65215f6ae72bba7d63ea67fb53c4f9a Mon Sep 17 00:00:00 2001 +From: Ken Zalewski <ken.zalewski@gmail.com> +Date: Sat, 13 Jul 2024 11:00:49 -0400 +Subject: [PATCH] Patch to openssl-1.1.1x. This version addresses two + vulnerabilities: CVE-2023-5678 and CVE-2024-0727 + +--- + crypto/dh/dh_check.c | 13 +++++++++++++ + crypto/dh/dh_err.c | 2 ++ + crypto/dh/dh_key.c | 10 ++++++++++ + crypto/err/openssl.txt | 2 ++ + crypto/pkcs12/p12_add.c | 18 ++++++++++++++++++ + crypto/pkcs12/p12_mutl.c | 5 +++++ + crypto/pkcs12/p12_npas.c | 5 +++-- + crypto/pkcs12/pk12err.c | 2 ++ + crypto/pkcs7/pk7_mime.c | 9 +++++++-- + include/openssl/dh.h | 6 ++++-- + include/openssl/dherr.h | 2 ++ + include/openssl/opensslv.h | 4 ++-- + include/openssl/pkcs12err.h | 1 + + 13 files changed, 71 insertions(+), 8 deletions(-) + +diff --git a/crypto/dh/dh_check.c b/crypto/dh/dh_check.c +index ae1b03b..40dfc57 100644 +--- a/crypto/dh/dh_check.c ++++ b/crypto/dh/dh_check.c +@@ -198,6 +198,19 @@ int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *ret) + BN_CTX *ctx = NULL; + + *ret = 0; ++ ++ /* Don't do any checks at all with an excessively large modulus */ ++ if (BN_num_bits(dh->p) > OPENSSL_DH_CHECK_MAX_MODULUS_BITS) { ++ DHerr(DH_F_DH_CHECK_PUB_KEY, DH_R_MODULUS_TOO_LARGE); ++ *ret = DH_CHECK_P_NOT_PRIME | DH_CHECK_PUBKEY_INVALID; ++ return 0; ++ } ++ ++ if (dh->q != NULL && BN_ucmp(dh->p, dh->q) < 0) { ++ *ret |= DH_CHECK_INVALID_Q_VALUE | DH_CHECK_PUBKEY_INVALID; ++ return 1; ++ } ++ + ctx = BN_CTX_new(); + if (ctx == NULL) + goto err; +diff --git a/crypto/dh/dh_err.c b/crypto/dh/dh_err.c +index 92800d3..048ba66 100644 +--- a/crypto/dh/dh_err.c ++++ b/crypto/dh/dh_err.c +@@ -21,6 +21,7 @@ static const ERR_STRING_DATA DH_str_functs[] = { + {ERR_PACK(ERR_LIB_DH, DH_F_DH_CHECK, 0), "DH_check"}, + {ERR_PACK(ERR_LIB_DH, DH_F_DH_CHECK_EX, 0), "DH_check_ex"}, + {ERR_PACK(ERR_LIB_DH, DH_F_DH_CHECK_PARAMS_EX, 0), "DH_check_params_ex"}, ++ {ERR_PACK(ERR_LIB_DH, DH_F_DH_CHECK_PUB_KEY, 0), "DH_check_pub_key"}, + {ERR_PACK(ERR_LIB_DH, DH_F_DH_CHECK_PUB_KEY_EX, 0), "DH_check_pub_key_ex"}, + {ERR_PACK(ERR_LIB_DH, DH_F_DH_CMS_DECRYPT, 0), "dh_cms_decrypt"}, + {ERR_PACK(ERR_LIB_DH, DH_F_DH_CMS_SET_PEERKEY, 0), "dh_cms_set_peerkey"}, +@@ -82,6 +83,7 @@ static const ERR_STRING_DATA DH_str_reasons[] = { + {ERR_PACK(ERR_LIB_DH, 0, DH_R_PARAMETER_ENCODING_ERROR), + "parameter encoding error"}, + {ERR_PACK(ERR_LIB_DH, 0, DH_R_PEER_KEY_ERROR), "peer key error"}, ++ {ERR_PACK(ERR_LIB_DH, 0, DH_R_Q_TOO_LARGE), "q too large"}, + {ERR_PACK(ERR_LIB_DH, 0, DH_R_SHARED_INFO_ERROR), "shared info error"}, + {ERR_PACK(ERR_LIB_DH, 0, DH_R_UNABLE_TO_CHECK_GENERATOR), + "unable to check generator"}, +diff --git a/crypto/dh/dh_key.c b/crypto/dh/dh_key.c +index 117f2fa..9f5e6f6 100644 +--- a/crypto/dh/dh_key.c ++++ b/crypto/dh/dh_key.c +@@ -114,6 +114,11 @@ static int generate_key(DH *dh) + return 0; + } + ++ if (dh->q != NULL && BN_num_bits(dh->q) > OPENSSL_DH_MAX_MODULUS_BITS) { ++ DHerr(DH_F_GENERATE_KEY, DH_R_Q_TOO_LARGE); ++ return 0; ++ } ++ + ctx = BN_CTX_new(); + if (ctx == NULL) + goto err; +@@ -207,6 +212,11 @@ static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) + goto err; + } + ++ if (dh->q != NULL && BN_num_bits(dh->q) > OPENSSL_DH_MAX_MODULUS_BITS) { ++ DHerr(DH_F_COMPUTE_KEY, DH_R_Q_TOO_LARGE); ++ goto err; ++ } ++ + ctx = BN_CTX_new(); + if (ctx == NULL) + goto err; +diff --git a/crypto/err/openssl.txt b/crypto/err/openssl.txt +index c0a3cd7..ec3823e 100644 +--- a/crypto/err/openssl.txt ++++ b/crypto/err/openssl.txt +@@ -969,6 +969,7 @@ PKCS12_F_PKCS12_SETUP_MAC:122:PKCS12_setup_mac + PKCS12_F_PKCS12_SET_MAC:123:PKCS12_set_mac + PKCS12_F_PKCS12_UNPACK_AUTHSAFES:130:PKCS12_unpack_authsafes + PKCS12_F_PKCS12_UNPACK_P7DATA:131:PKCS12_unpack_p7data ++PKCS12_F_PKCS12_UNPACK_P7ENCDATA:134:PKCS12_unpack_p7encdata + PKCS12_F_PKCS12_VERIFY_MAC:126:PKCS12_verify_mac + PKCS12_F_PKCS8_ENCRYPT:125:PKCS8_encrypt + PKCS12_F_PKCS8_SET0_PBE:132:PKCS8_set0_pbe +@@ -2106,6 +2107,7 @@ DH_R_NO_PARAMETERS_SET:107:no parameters set + DH_R_NO_PRIVATE_VALUE:100:no private value + DH_R_PARAMETER_ENCODING_ERROR:105:parameter encoding error + DH_R_PEER_KEY_ERROR:111:peer key error ++DH_R_Q_TOO_LARGE:130:q too large + DH_R_SHARED_INFO_ERROR:113:shared info error + DH_R_UNABLE_TO_CHECK_GENERATOR:121:unable to check generator + DSA_R_BAD_Q_VALUE:102:bad q value +diff --git a/crypto/pkcs12/p12_add.c b/crypto/pkcs12/p12_add.c +index af184c8..6549691 100644 +--- a/crypto/pkcs12/p12_add.c ++++ b/crypto/pkcs12/p12_add.c +@@ -76,6 +76,12 @@ STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7) + PKCS12_R_CONTENT_TYPE_NOT_DATA); + return NULL; + } ++ ++ if (p7->d.data == NULL) { ++ PKCS12err(PKCS12_F_PKCS12_UNPACK_P7DATA, PKCS12_R_DECODE_ERROR); ++ return NULL; ++ } ++ + return ASN1_item_unpack(p7->d.data, ASN1_ITEM_rptr(PKCS12_SAFEBAGS)); + } + +@@ -132,6 +138,12 @@ STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass, + { + if (!PKCS7_type_is_encrypted(p7)) + return NULL; ++ ++ if (p7->d.encrypted == NULL) { ++ PKCS12err(PKCS12_F_PKCS12_UNPACK_P7ENCDATA, PKCS12_R_DECODE_ERROR); ++ return NULL; ++ } ++ + return PKCS12_item_decrypt_d2i(p7->d.encrypted->enc_data->algorithm, + ASN1_ITEM_rptr(PKCS12_SAFEBAGS), + pass, passlen, +@@ -159,6 +171,12 @@ STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12) + PKCS12_R_CONTENT_TYPE_NOT_DATA); + return NULL; + } ++ ++ if (p12->authsafes->d.data == NULL) { ++ PKCS12err(PKCS12_F_PKCS12_UNPACK_AUTHSAFES, PKCS12_R_DECODE_ERROR); ++ return NULL; ++ } ++ + return ASN1_item_unpack(p12->authsafes->d.data, + ASN1_ITEM_rptr(PKCS12_AUTHSAFES)); + } +diff --git a/crypto/pkcs12/p12_mutl.c b/crypto/pkcs12/p12_mutl.c +index 3658003..766c9c1 100644 +--- a/crypto/pkcs12/p12_mutl.c ++++ b/crypto/pkcs12/p12_mutl.c +@@ -93,6 +93,11 @@ static int pkcs12_gen_mac(PKCS12 *p12, const char *pass, int passlen, + return 0; + } + ++ if (p12->authsafes->d.data == NULL) { ++ PKCS12err(PKCS12_F_PKCS12_GEN_MAC, PKCS12_R_DECODE_ERROR); ++ return 0; ++ } ++ + salt = p12->mac->salt->data; + saltlen = p12->mac->salt->length; + if (!p12->mac->iter) +diff --git a/crypto/pkcs12/p12_npas.c b/crypto/pkcs12/p12_npas.c +index 0334289..1303376 100644 +--- a/crypto/pkcs12/p12_npas.c ++++ b/crypto/pkcs12/p12_npas.c +@@ -78,8 +78,9 @@ static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass) + bags = PKCS12_unpack_p7data(p7); + } else if (bagnid == NID_pkcs7_encrypted) { + bags = PKCS12_unpack_p7encdata(p7, oldpass, -1); +- if (!alg_get(p7->d.encrypted->enc_data->algorithm, +- &pbe_nid, &pbe_iter, &pbe_saltlen)) ++ if (p7->d.encrypted == NULL ++ || !alg_get(p7->d.encrypted->enc_data->algorithm, ++ &pbe_nid, &pbe_iter, &pbe_saltlen)) + goto err; + } else { + continue; +diff --git a/crypto/pkcs12/pk12err.c b/crypto/pkcs12/pk12err.c +index 38ce519..3eb7f2f 100644 +--- a/crypto/pkcs12/pk12err.c ++++ b/crypto/pkcs12/pk12err.c +@@ -58,6 +58,8 @@ static const ERR_STRING_DATA PKCS12_str_functs[] = { + "PKCS12_unpack_authsafes"}, + {ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_UNPACK_P7DATA, 0), + "PKCS12_unpack_p7data"}, ++ {ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_UNPACK_P7ENCDATA, 0), ++ "PKCS12_unpack_p7encdata"}, + {ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS12_VERIFY_MAC, 0), + "PKCS12_verify_mac"}, + {ERR_PACK(ERR_LIB_PKCS12, PKCS12_F_PKCS8_ENCRYPT, 0), "PKCS8_encrypt"}, +diff --git a/crypto/pkcs7/pk7_mime.c b/crypto/pkcs7/pk7_mime.c +index 19e6868..635af10 100644 +--- a/crypto/pkcs7/pk7_mime.c ++++ b/crypto/pkcs7/pk7_mime.c +@@ -30,10 +30,15 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags) + { + STACK_OF(X509_ALGOR) *mdalgs; + int ctype_nid = OBJ_obj2nid(p7->type); +- if (ctype_nid == NID_pkcs7_signed) ++ if (ctype_nid == NID_pkcs7_signed) { ++ if (p7->d.sign == NULL) { ++ return 0; ++ } + mdalgs = p7->d.sign->md_algs; +- else ++ } ++ else { + mdalgs = NULL; ++ } + + flags ^= SMIME_OLDMIME; + +diff --git a/include/openssl/dh.h b/include/openssl/dh.h +index 6c6ff36..d2a9c0d 100644 +--- a/include/openssl/dh.h ++++ b/include/openssl/dh.h +@@ -71,14 +71,16 @@ DECLARE_ASN1_ITEM(DHparams) + /* #define DH_GENERATOR_3 3 */ + # define DH_GENERATOR_5 5 + +-/* DH_check error codes */ ++/* DH_check error codes, some of them shared with DH_check_pub_key */ + # define DH_CHECK_P_NOT_PRIME 0x01 + # define DH_CHECK_P_NOT_SAFE_PRIME 0x02 + # define DH_UNABLE_TO_CHECK_GENERATOR 0x04 + # define DH_NOT_SUITABLE_GENERATOR 0x08 + # define DH_CHECK_Q_NOT_PRIME 0x10 +-# define DH_CHECK_INVALID_Q_VALUE 0x20 ++# define DH_CHECK_INVALID_Q_VALUE 0x20 /* +DH_check_pub_key */ + # define DH_CHECK_INVALID_J_VALUE 0x40 ++# define DH_MODULUS_TOO_SMALL 0x80 ++# define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ + + /* DH_check_pub_key error codes */ + # define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +diff --git a/include/openssl/dherr.h b/include/openssl/dherr.h +index 528c819..a98bb1e 100644 +--- a/include/openssl/dherr.h ++++ b/include/openssl/dherr.h +@@ -33,6 +33,7 @@ int ERR_load_DH_strings(void); + # define DH_F_DH_CHECK 126 + # define DH_F_DH_CHECK_EX 121 + # define DH_F_DH_CHECK_PARAMS_EX 122 ++# define DH_F_DH_CHECK_PUB_KEY 127 + # define DH_F_DH_CHECK_PUB_KEY_EX 123 + # define DH_F_DH_CMS_DECRYPT 114 + # define DH_F_DH_CMS_SET_PEERKEY 115 +@@ -82,6 +83,7 @@ int ERR_load_DH_strings(void); + # define DH_R_NO_PRIVATE_VALUE 100 + # define DH_R_PARAMETER_ENCODING_ERROR 105 + # define DH_R_PEER_KEY_ERROR 111 ++# define DH_R_Q_TOO_LARGE 130 + # define DH_R_SHARED_INFO_ERROR 113 + # define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h +index 5667d47..c16eafd 100644 +--- a/include/openssl/opensslv.h ++++ b/include/openssl/opensslv.h +@@ -39,8 +39,8 @@ extern "C" { + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +-# define OPENSSL_VERSION_NUMBER 0x1010117fL +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1w 11 Sep 2023" ++# define OPENSSL_VERSION_NUMBER 0x1010118fL ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1x 25 Jan 2024" + + /*- + * The macros below are to be used for shared library (.so, .dll, ...) +diff --git a/include/openssl/pkcs12err.h b/include/openssl/pkcs12err.h +index eff5eb2..0d2f15a 100644 +--- a/include/openssl/pkcs12err.h ++++ b/include/openssl/pkcs12err.h +@@ -49,6 +49,7 @@ int ERR_load_PKCS12_strings(void); + # define PKCS12_F_PKCS12_SET_MAC 123 + # define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130 + # define PKCS12_F_PKCS12_UNPACK_P7DATA 131 ++# define PKCS12_F_PKCS12_UNPACK_P7ENCDATA 134 + # define PKCS12_F_PKCS12_VERIFY_MAC 126 + # define PKCS12_F_PKCS8_ENCRYPT 125 + # define PKCS12_F_PKCS8_SET0_PBE 132 diff --git a/system/openssl/y.patch b/system/openssl/y.patch new file mode 100644 index 000000000..3c8c4ace5 --- /dev/null +++ b/system/openssl/y.patch @@ -0,0 +1,183 @@ +From 4e975e3aec06165e760953f6c51a795f3dcfd1a0 Mon Sep 17 00:00:00 2001 +From: Ken Zalewski <ken.zalewski@gmail.com> +Date: Sat, 13 Jul 2024 12:02:52 -0400 +Subject: [PATCH] Patch to openssl-1.1.1y. This version addresses two + vulnerabilities: CVE-2024-2511 and CVE-2024-4741 + +--- + include/openssl/opensslv.h | 4 ++-- + include/openssl/ssl.h | 2 +- + ssl/record/rec_layer_s3.c | 9 +++++++++ + ssl/record/record.h | 1 + + ssl/ssl_lib.c | 8 ++++++-- + ssl/ssl_local.h | 2 +- + ssl/ssl_sess.c | 28 ++++++++++++++++++++++------ + ssl/statem/statem_srvr.c | 5 ++--- + 8 files changed, 44 insertions(+), 15 deletions(-) + +diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h +index c16eafd..585109a 100644 +--- a/include/openssl/opensslv.h ++++ b/include/openssl/opensslv.h +@@ -39,8 +39,8 @@ extern "C" { + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +-# define OPENSSL_VERSION_NUMBER 0x1010118fL +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1x 25 Jan 2024" ++# define OPENSSL_VERSION_NUMBER 0x1010119fL ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1y 27 May 2024" + + /*- + * The macros below are to be used for shared library (.so, .dll, ...) +diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h +index 9af0c89..64eaca3 100644 +--- a/include/openssl/ssl.h ++++ b/include/openssl/ssl.h +@@ -1659,7 +1659,7 @@ __owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + __owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + + __owur SSL_SESSION *SSL_SESSION_new(void); +-__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src); ++__owur SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src); + const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); + const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, +diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c +index 1db1712..525c3ab 100644 +--- a/ssl/record/rec_layer_s3.c ++++ b/ssl/record/rec_layer_s3.c +@@ -81,6 +81,15 @@ int RECORD_LAYER_read_pending(const RECORD_LAYER *rl) + return SSL3_BUFFER_get_left(&rl->rbuf) != 0; + } + ++int RECORD_LAYER_data_present(const RECORD_LAYER *rl) ++{ ++ if (rl->rstate == SSL_ST_READ_BODY) ++ return 1; ++ if (RECORD_LAYER_processed_read_pending(rl)) ++ return 1; ++ return 0; ++} ++ + /* Checks if we have decrypted unread record data pending */ + int RECORD_LAYER_processed_read_pending(const RECORD_LAYER *rl) + { +diff --git a/ssl/record/record.h b/ssl/record/record.h +index af56206..513ab39 100644 +--- a/ssl/record/record.h ++++ b/ssl/record/record.h +@@ -197,6 +197,7 @@ void RECORD_LAYER_release(RECORD_LAYER *rl); + int RECORD_LAYER_read_pending(const RECORD_LAYER *rl); + int RECORD_LAYER_processed_read_pending(const RECORD_LAYER *rl); + int RECORD_LAYER_write_pending(const RECORD_LAYER *rl); ++int RECORD_LAYER_data_present(const RECORD_LAYER *rl); + void RECORD_LAYER_reset_read_sequence(RECORD_LAYER *rl); + void RECORD_LAYER_reset_write_sequence(RECORD_LAYER *rl); + int RECORD_LAYER_is_sslv2_record(RECORD_LAYER *rl); +diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c +index 47adc32..356d65c 100644 +--- a/ssl/ssl_lib.c ++++ b/ssl/ssl_lib.c +@@ -3515,9 +3515,10 @@ void ssl_update_cache(SSL *s, int mode) + + /* + * If the session_id_length is 0, we are not supposed to cache it, and it +- * would be rather hard to do anyway :-) ++ * would be rather hard to do anyway :-). Also if the session has already ++ * been marked as not_resumable we should not cache it for later reuse. + */ +- if (s->session->session_id_length == 0) ++ if (s->session->session_id_length == 0 || s->session->not_resumable) + return; + + /* +@@ -5247,6 +5248,9 @@ int SSL_free_buffers(SSL *ssl) + if (RECORD_LAYER_read_pending(rl) || RECORD_LAYER_write_pending(rl)) + return 0; + ++ if (RECORD_LAYER_data_present(rl)) ++ return 0; ++ + RECORD_LAYER_release(rl); + return 1; + } +diff --git a/ssl/ssl_local.h b/ssl/ssl_local.h +index 5c79215..5e73fa4 100644 +--- a/ssl/ssl_local.h ++++ b/ssl/ssl_local.h +@@ -2261,7 +2261,7 @@ __owur int ssl_get_new_session(SSL *s, int session); + __owur SSL_SESSION *lookup_sess_in_cache(SSL *s, const unsigned char *sess_id, + size_t sess_id_len); + __owur int ssl_get_prev_session(SSL *s, CLIENTHELLO_MSG *hello); +-__owur SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket); ++__owur SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket); + __owur int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b); + DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, ssl_cipher_id); + __owur int ssl_cipher_ptr_id_cmp(const SSL_CIPHER *const *ap, +diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c +index 68d1737..2b27a47 100644 +--- a/ssl/ssl_sess.c ++++ b/ssl/ssl_sess.c +@@ -94,16 +94,11 @@ SSL_SESSION *SSL_SESSION_new(void) + return ss; + } + +-SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src) +-{ +- return ssl_session_dup(src, 1); +-} +- + /* + * Create a new SSL_SESSION and duplicate the contents of |src| into it. If + * ticket == 0 then no ticket information is duplicated, otherwise it is. + */ +-SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket) ++static SSL_SESSION *ssl_session_dup_intern(const SSL_SESSION *src, int ticket) + { + SSL_SESSION *dest; + +@@ -226,6 +221,27 @@ SSL_SESSION *ssl_session_dup(SSL_SESSION *src, int ticket) + return NULL; + } + ++SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src) ++{ ++ return ssl_session_dup_intern(src, 1); ++} ++ ++/* ++ * Used internally when duplicating a session which might be already shared. ++ * We will have resumed the original session. Subsequently we might have marked ++ * it as non-resumable (e.g. in another thread) - but this copy should be ok to ++ * resume from. ++ */ ++SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket) ++{ ++ SSL_SESSION *sess = ssl_session_dup_intern(src, ticket); ++ ++ if (sess != NULL) ++ sess->not_resumable = 0; ++ ++ return sess; ++} ++ + const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, unsigned int *len) + { + if (len) +diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c +index 43f77a5..2f6ce8f 100644 +--- a/ssl/statem/statem_srvr.c ++++ b/ssl/statem/statem_srvr.c +@@ -2403,9 +2403,8 @@ int tls_construct_server_hello(SSL *s, WPACKET *pkt) + * so the following won't overwrite an ID that we're supposed + * to send back. + */ +- if (s->session->not_resumable || +- (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER) +- && !s->hit)) ++ if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER) ++ && !s->hit) + s->session->session_id_length = 0; + + if (usetls13) { diff --git a/system/openssl/za.patch b/system/openssl/za.patch new file mode 100644 index 000000000..90a30beb1 --- /dev/null +++ b/system/openssl/za.patch @@ -0,0 +1,108 @@ +From 72f5c8e48a09ab09dae91c869e53e3d0c75ef921 Mon Sep 17 00:00:00 2001 +From: Ken Zalewski <ken.zalewski@gmail.com> +Date: Sat, 13 Jul 2024 12:19:50 -0400 +Subject: [PATCH] Patch to openssl-1.1.1za. This version addresses one + vulnerability: CVE-2024-5535 + +--- + include/openssl/opensslv.h | 4 +-- + ssl/ssl_lib.c | 63 ++++++++++++++++++++++++-------------- + 2 files changed, 42 insertions(+), 25 deletions(-) + +diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h +index 585109a..a1a5d07 100644 +--- a/include/openssl/opensslv.h ++++ b/include/openssl/opensslv.h +@@ -39,8 +39,8 @@ extern "C" { + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +-# define OPENSSL_VERSION_NUMBER 0x1010119fL +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1y 27 May 2024" ++# define OPENSSL_VERSION_NUMBER 0x101011afL ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1za 26 Jun 2024" + + /*- + * The macros below are to be used for shared library (.so, .dll, ...) +diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c +index 356d65c..ccb1d4a 100644 +--- a/ssl/ssl_lib.c ++++ b/ssl/ssl_lib.c +@@ -2761,37 +2761,54 @@ int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + unsigned int server_len, + const unsigned char *client, unsigned int client_len) + { +- unsigned int i, j; +- const unsigned char *result; +- int status = OPENSSL_NPN_UNSUPPORTED; ++ PACKET cpkt, csubpkt, spkt, ssubpkt; ++ ++ if (!PACKET_buf_init(&cpkt, client, client_len) ++ || !PACKET_get_length_prefixed_1(&cpkt, &csubpkt) ++ || PACKET_remaining(&csubpkt) == 0) { ++ *out = NULL; ++ *outlen = 0; ++ return OPENSSL_NPN_NO_OVERLAP; ++ } ++ ++ /* ++ * Set the default opportunistic protocol. Will be overwritten if we find ++ * a match. ++ */ ++ *out = (unsigned char *)PACKET_data(&csubpkt); ++ *outlen = (unsigned char)PACKET_remaining(&csubpkt); + + /* + * For each protocol in server preference order, see if we support it. + */ +- for (i = 0; i < server_len;) { +- for (j = 0; j < client_len;) { +- if (server[i] == client[j] && +- memcmp(&server[i + 1], &client[j + 1], server[i]) == 0) { +- /* We found a match */ +- result = &server[i]; +- status = OPENSSL_NPN_NEGOTIATED; +- goto found; ++ if (PACKET_buf_init(&spkt, server, server_len)) { ++ while (PACKET_get_length_prefixed_1(&spkt, &ssubpkt)) { ++ if (PACKET_remaining(&ssubpkt) == 0) ++ continue; /* Invalid - ignore it */ ++ if (PACKET_buf_init(&cpkt, client, client_len)) { ++ while (PACKET_get_length_prefixed_1(&cpkt, &csubpkt)) { ++ if (PACKET_equal(&csubpkt, PACKET_data(&ssubpkt), ++ PACKET_remaining(&ssubpkt))) { ++ /* We found a match */ ++ *out = (unsigned char *)PACKET_data(&ssubpkt); ++ *outlen = (unsigned char)PACKET_remaining(&ssubpkt); ++ return OPENSSL_NPN_NEGOTIATED; ++ } ++ } ++ /* Ignore spurious trailing bytes in the client list */ ++ } else { ++ /* This should never happen */ ++ return OPENSSL_NPN_NO_OVERLAP; + } +- j += client[j]; +- j++; + } +- i += server[i]; +- i++; ++ /* Ignore spurious trailing bytes in the server list */ + } + +- /* There's no overlap between our protocols and the server's list. */ +- result = client; +- status = OPENSSL_NPN_NO_OVERLAP; +- +- found: +- *out = (unsigned char *)result + 1; +- *outlen = result[0]; +- return status; ++ /* ++ * There's no overlap between our protocols and the server's list. We use ++ * the default opportunistic protocol selected earlier ++ */ ++ return OPENSSL_NPN_NO_OVERLAP; + } + + #ifndef OPENSSL_NO_NEXTPROTONEG diff --git a/system/openssl/zb.patch b/system/openssl/zb.patch new file mode 100644 index 000000000..97a6239b9 --- /dev/null +++ b/system/openssl/zb.patch @@ -0,0 +1,345 @@ +From 9ad69b994ae7c73ba06d9f75efd2625102de814c Mon Sep 17 00:00:00 2001 +From: Ken Zalewski <ken.zalewski@gmail.com> +Date: Mon, 21 Oct 2024 16:24:47 -0400 +Subject: [PATCH] Patch to openssl-1.1.1zb. This version addresses one + vulnerability: CVE-2024-9143 + +--- + CHANGES | 134 +++++++++++++++++++++++++++++++++++++ + NEWS | 18 +++++ + README | 2 +- + crypto/bn/bn_gf2m.c | 28 +++++--- + include/openssl/opensslv.h | 4 +- + test/ec_internal_test.c | 51 ++++++++++++++ + 6 files changed, 226 insertions(+), 11 deletions(-) + +diff --git a/CHANGES b/CHANGES +index c440948..7d82f7a 100644 +--- a/CHANGES ++++ b/CHANGES +@@ -7,6 +7,140 @@ + https://github.com/openssl/openssl/commits/ and pick the appropriate + release branch. + ++ Changes between 1.1.1za and 1.1.1zb [16 Oct 2024] ++ ++ *) Harden BN_GF2m_poly2arr against misuse ++ ++ The BN_GF2m_poly2arr() function converts characteristic-2 field ++ (GF_{2^m}) Galois polynomials from a representation as a BIGNUM bitmask, ++ to a compact array with just the exponents of the non-zero terms. ++ ++ These polynomials are then used in BN_GF2m_mod_arr() to perform modular ++ reduction. A precondition of calling BN_GF2m_mod_arr() is that the ++ polynomial must have a non-zero constant term (i.e. the array has `0` as ++ its final element). ++ ++ Internally, callers of BN_GF2m_poly2arr() did not verify that ++ precondition, and binary EC curve parameters with an invalid polynomial ++ could lead to out of bounds memory reads and writes in BN_GF2m_mod_arr(). ++ ++ The precondition is always true for polynomials that arise from the ++ standard form of EC parameters for characteristic-two fields (X9.62). ++ See the "Finite Field Identification" section of: ++ ++ https://www.itu.int/ITU-T/formal-language/itu-t/x/x894/2018-cor1/ANSI-X9-62.html ++ ++ The OpenSSL GF(2^m) code supports only the trinomial and pentanomial ++ basis X9.62 forms. ++ ++ This commit updates BN_GF2m_poly2arr() to return `0` (failure) when ++ the constant term is zero (i.e. the input bitmask BIGNUM is not odd). ++ ++ Additionally, the return value is made unambiguous when there is not ++ enough space to also pad the array with a final `-1` sentinel value. ++ The return value is now always the number of elements (including the ++ final `-1`) that would be filled when the output array is sufficiently ++ large. Previously the same count was returned both when the array has ++ just enough room for the final `-1` and when it had only enough space ++ for non-sentinel values. ++ ++ Finally, BN_GF2m_poly2arr() is updated to reject polynomials whose ++ degree exceeds `OPENSSL_ECC_MAX_FIELD_BITS`, this guards against ++ CPU exhausition attacks via excessively large inputs. ++ ++ The above issues do not arise in processing X.509 certificates. These ++ generally have EC keys from "named curves", and RFC5840 (Section 2.1.1) ++ disallows explicit EC parameters. The TLS code in OpenSSL enforces this ++ constraint only after the certificate is decoded, but, even if explicit ++ parameters are specified, they are in X9.62 form, which cannot represent ++ problem values as noted above. ++ ++ (CVE-2024-9143) ++ [Viktor Dukhovni] ++ ++ ++ Changes between 1.1.1y and 1.1.1za [26 Jun 2024] ++ ++ *) Fix SSL_select_next_proto ++ ++ Ensure that the provided client list is non-NULL and starts with a valid ++ entry. When called from the ALPN callback the client list should already ++ have been validated by OpenSSL so this should not cause a problem. When ++ called from the NPN callback the client list is locally configured and ++ will not have already been validated. Therefore SSL_select_next_proto ++ should not assume that it is correctly formatted. ++ ++ We implement stricter checking of the client protocol list. We also do the ++ same for the server list while we are about it. ++ ++ (CVE-2024-5535) ++ [Matt Caswell] ++ ++ ++ Changes between 1.1.1x and 1.1.1y [27 May 2024] ++ ++ *) Only free the read buffers if we're not using them ++ ++ If we're part way through processing a record, or the application has ++ not released all the records then we should not free our buffer because ++ they are still needed. ++ ++ (CVE-2024-4741) ++ [Matt Caswell] ++ [Watson Ladd] ++ ++ *) Fix unconstrained session cache growth in TLSv1.3 ++ ++ In TLSv1.3 we create a new session object for each ticket that we send. ++ We do this by duplicating the original session. If SSL_OP_NO_TICKET is in ++ use then the new session will be added to the session cache. However, if ++ early data is not in use (and therefore anti-replay protection is being ++ used), then multiple threads could be resuming from the same session ++ simultaneously. If this happens and a problem occurs on one of the threads, ++ then the original session object could be marked as not_resumable. When we ++ duplicate the session object this not_resumable status gets copied into the ++ new session object. The new session object is then added to the session ++ cache even though it is not_resumable. ++ ++ Subsequently, another bug means that the session_id_length is set to 0 for ++ sessions that are marked as not_resumable - even though that session is ++ still in the cache. Once this happens the session can never be removed from ++ the cache. When that object gets to be the session cache tail object the ++ cache never shrinks again and grows indefinitely. ++ ++ (CVE-2024-2511) ++ [Matt Caswell] ++ ++ ++ Changes between 1.1.1w and 1.1.1x [25 Jan 2024] ++ ++ *) Add NULL checks where ContentInfo data can be NULL ++ ++ PKCS12 structures contain PKCS7 ContentInfo fields. These fields are ++ optional and can be NULL even if the "type" is a valid value. OpenSSL ++ was not properly accounting for this and a NULL dereference can occur ++ causing a crash. ++ ++ (CVE-2024-0727) ++ [Matt Caswell] ++ ++ *) Make DH_check_pub_key() and DH_generate_key() safer yet ++ ++ We already check for an excessively large P in DH_generate_key(), but not in ++ DH_check_pub_key(), and none of them check for an excessively large Q. ++ ++ This change adds all the missing excessive size checks of P and Q. ++ ++ It's to be noted that behaviours surrounding excessively sized P and Q ++ differ. DH_check() raises an error on the excessively sized P, but only ++ sets a flag for the excessively sized Q. This behaviour is mimicked in ++ DH_check_pub_key(). ++ ++ (CVE-2024-5678) ++ [Richard Levitte] ++ [Hugo Landau] ++ ++ + Changes between 1.1.1v and 1.1.1w [11 Sep 2023] + + *) Fix POLY1305 MAC implementation corrupting XMM registers on Windows. +diff --git a/NEWS b/NEWS +index 1b849cd..7810ece 100644 +--- a/NEWS ++++ b/NEWS +@@ -5,6 +5,24 @@ + This file gives a brief overview of the major changes between each OpenSSL + release. For more details please read the CHANGES file. + ++ Major changes between OpenSSL 1.1.1za and OpenSSL 1.1.1zb [16 Oct 2024] ++ ++ o Harden BN_GF2m_poly2arr against misuse ++ ++ Major changes between OpenSSL 1.1.1y and OpenSSL 1.1.1za [26 Jun 2024] ++ ++ o Fix SSL_select_next_proto ++ ++ Major changes between OpenSSL 1.1.1x and OpenSSL 1.1.1y [27 May 2024] ++ ++ o Only free the read buffers if we're not using them ++ o Fix unconstrained session cache growth in TLSv1.3 ++ ++ Major changes between OpenSSL 1.1.1w and OpenSSL 1.1.1x [25 Jan 2024] ++ ++ o Add NULL checks where ContentInfo data can be NULL ++ o Make DH_check_pub_key() and DH_generate_key() safer yet ++ + Major changes between OpenSSL 1.1.1v and OpenSSL 1.1.1w [11 Sep 2023] + + o Fix POLY1305 MAC implementation corrupting XMM registers on Windows +diff --git a/README b/README +index e924e15..6612eb0 100644 +--- a/README ++++ b/README +@@ -1,5 +1,5 @@ + +- OpenSSL 1.1.1w 11 Sep 2023 ++ OpenSSL 1.1.1zb 16 Oct 2024 + + Copyright (c) 1998-2023 The OpenSSL Project + Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson +diff --git a/crypto/bn/bn_gf2m.c b/crypto/bn/bn_gf2m.c +index a2ea867..6709471 100644 +--- a/crypto/bn/bn_gf2m.c ++++ b/crypto/bn/bn_gf2m.c +@@ -15,6 +15,7 @@ + #include "bn_local.h" + + #ifndef OPENSSL_NO_EC2M ++#include <openssl/ec.h> + + /* + * Maximum number of iterations before BN_GF2m_mod_solve_quad_arr should +@@ -1109,16 +1110,26 @@ int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + /* + * Convert the bit-string representation of a polynomial ( \sum_{i=0}^n a_i * + * x^i) into an array of integers corresponding to the bits with non-zero +- * coefficient. Array is terminated with -1. Up to max elements of the array +- * will be filled. Return value is total number of array elements that would +- * be filled if array was large enough. ++ * coefficient. The array is intended to be suitable for use with ++ * `BN_GF2m_mod_arr()`, and so the constant term of the polynomial must not be ++ * zero. This translates to a requirement that the input BIGNUM `a` is odd. ++ * ++ * Given sufficient room, the array is terminated with -1. Up to max elements ++ * of the array will be filled. ++ * ++ * The return value is total number of array elements that would be filled if ++ * array was large enough, including the terminating `-1`. It is `0` when `a` ++ * is not odd or the constant term is zero contrary to requirement. ++ * ++ * The return value is also `0` when the leading exponent exceeds ++ * `OPENSSL_ECC_MAX_FIELD_BITS`, this guards against CPU exhaustion attacks, + */ + int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max) + { + int i, j, k = 0; + BN_ULONG mask; + +- if (BN_is_zero(a)) ++ if (!BN_is_odd(a)) + return 0; + + for (i = a->top - 1; i >= 0; i--) { +@@ -1136,12 +1147,13 @@ int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max) + } + } + +- if (k < max) { ++ if (k > 0 && p[0] > OPENSSL_ECC_MAX_FIELD_BITS) ++ return 0; ++ ++ if (k < max) + p[k] = -1; +- k++; +- } + +- return k; ++ return k + 1; + } + + /* +diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h +index a1a5d07..ddf42b6 100644 +--- a/include/openssl/opensslv.h ++++ b/include/openssl/opensslv.h +@@ -39,8 +39,8 @@ extern "C" { + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +-# define OPENSSL_VERSION_NUMBER 0x101011afL +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1za 26 Jun 2024" ++# define OPENSSL_VERSION_NUMBER 0x101011bfL ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1zb 16 Oct 2024" + + /*- + * The macros below are to be used for shared library (.so, .dll, ...) +diff --git a/test/ec_internal_test.c b/test/ec_internal_test.c +index 390f41f..1590a18 100644 +--- a/test/ec_internal_test.c ++++ b/test/ec_internal_test.c +@@ -150,6 +150,56 @@ static int field_tests_ecp_mont(void) + } + + #ifndef OPENSSL_NO_EC2M ++/* Test that decoding of invalid GF2m field parameters fails. */ ++static int ec2m_field_sanity(void) ++{ ++ int ret = 0; ++ BN_CTX *ctx = BN_CTX_new(); ++ BIGNUM *p, *a, *b; ++ EC_GROUP *group1 = NULL, *group2 = NULL, *group3 = NULL; ++ ++ TEST_info("Testing GF2m hardening\n"); ++ ++ BN_CTX_start(ctx); ++ p = BN_CTX_get(ctx); ++ a = BN_CTX_get(ctx); ++ if (!TEST_ptr(b = BN_CTX_get(ctx)) ++ || !TEST_true(BN_one(a)) ++ || !TEST_true(BN_one(b))) ++ goto out; ++ ++ /* Even pentanomial value should be rejected */ ++ if (!TEST_true(BN_set_word(p, 0xf2))) ++ goto out; ++ if (!TEST_ptr_null(group1 = EC_GROUP_new_curve_GF2m(p, a, b, ctx))) ++ TEST_error("Zero constant term accepted in GF2m polynomial"); ++ ++ /* Odd hexanomial should also be rejected */ ++ if (!TEST_true(BN_set_word(p, 0xf3))) ++ goto out; ++ if (!TEST_ptr_null(group2 = EC_GROUP_new_curve_GF2m(p, a, b, ctx))) ++ TEST_error("Hexanomial accepted as GF2m polynomial"); ++ ++ /* Excessive polynomial degree should also be rejected */ ++ if (!TEST_true(BN_set_word(p, 0x71)) ++ || !TEST_true(BN_set_bit(p, OPENSSL_ECC_MAX_FIELD_BITS + 1))) ++ goto out; ++ if (!TEST_ptr_null(group3 = EC_GROUP_new_curve_GF2m(p, a, b, ctx))) ++ TEST_error("GF2m polynomial degree > %d accepted", ++ OPENSSL_ECC_MAX_FIELD_BITS); ++ ++ ret = group1 == NULL && group2 == NULL && group3 == NULL; ++ ++ out: ++ EC_GROUP_free(group1); ++ EC_GROUP_free(group2); ++ EC_GROUP_free(group3); ++ BN_CTX_end(ctx); ++ BN_CTX_free(ctx); ++ ++ return ret; ++} ++ + /* test EC_GF2m_simple_method directly */ + static int field_tests_ec2_simple(void) + { +@@ -367,6 +417,7 @@ int setup_tests(void) + ADD_TEST(field_tests_ecp_simple); + ADD_TEST(field_tests_ecp_mont); + #ifndef OPENSSL_NO_EC2M ++ ADD_TEST(ec2m_field_sanity); + ADD_TEST(field_tests_ec2_simple); + #endif + ADD_ALL_TESTS(field_tests_default, crv_len); diff --git a/system/openssl/zb2.patch b/system/openssl/zb2.patch new file mode 100644 index 000000000..f6405e003 --- /dev/null +++ b/system/openssl/zb2.patch @@ -0,0 +1,177 @@ +From 2a3058269d854754b66ef8bdaefb7820bd8c0908 Mon Sep 17 00:00:00 2001 +From: Ken Zalewski <ken.zalewski@gmail.com> +Date: Sun, 9 Feb 2025 11:47:12 -0500 +Subject: [PATCH] Patch to openssl-1.1.1zb p2. This version addresses one + vulnerability: CVE-2024-13176 + +--- + CHANGES | 25 +++++++++++++++++++++++++ + NEWS | 5 +++++ + README | 2 +- + crypto/bn/bn_exp.c | 21 +++++++++++++++------ + crypto/ec/ec_lib.c | 6 +++--- + include/crypto/bn.h | 3 +++ + include/openssl/opensslv.h | 2 +- + 7 files changed, 53 insertions(+), 11 deletions(-) + +diff --git a/CHANGES b/CHANGES +index 7d82f7a..66ae239 100644 +--- a/CHANGES ++++ b/CHANGES +@@ -7,6 +7,31 @@ + https://github.com/openssl/openssl/commits/ and pick the appropriate + release branch. + ++ Changes between 1.1.1zb_p1 and 1.1.1zb_p2 [20 Jan 2025] ++ ++ *) Fix timing side-channel in ECDSA signature computation ++ ++ There is a timing signal of around 300 nanoseconds when the top word of ++ the inverted ECDSA nonce value is zero. This can happen with significant ++ probability only for some of the supported elliptic curves. In particular ++ the NIST P-521 curve is affected. To be able to measure this leak, the ++ attacker process must either be located in the same physical computer or ++ must have a very fast network connection with low latency. ++ ++ Attacks on ECDSA nonce are also known as Minerva attack. ++ ++ [CVE-2024-13176] ++ [Tomas Mraz] ++ ++ ++ Changes between 1.1.1zb and 1.1.1zb_p1 [24 Oct 2024] ++ ++ *) Fix the version number for versions that require two letters. ++ ++ [V Petrischew] ++ [Ken Zalewski] ++ ++ + Changes between 1.1.1za and 1.1.1zb [16 Oct 2024] + + *) Harden BN_GF2m_poly2arr against misuse +diff --git a/NEWS b/NEWS +index 7810ece..ab46ab1 100644 +--- a/NEWS ++++ b/NEWS +@@ -5,6 +5,11 @@ + This file gives a brief overview of the major changes between each OpenSSL + release. For more details please read the CHANGES file. + ++ Major changes between OpenSSL 1.1.1zb and OpenSSL 1.1.1zb_p2 [20 Jan 2025] ++ ++ o Fix version number for versions that require two letters ++ o Fix timing side-channel in ECDSA signature computation ++ + Major changes between OpenSSL 1.1.1za and OpenSSL 1.1.1zb [16 Oct 2024] + + o Harden BN_GF2m_poly2arr against misuse +diff --git a/README b/README +index 6612eb0..a02895e 100644 +--- a/README ++++ b/README +@@ -1,5 +1,5 @@ + +- OpenSSL 1.1.1zb 16 Oct 2024 ++ OpenSSL 1.1.1zb_p2 20 Jan 2025 + + Copyright (c) 1998-2023 The OpenSSL Project + Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson +diff --git a/crypto/bn/bn_exp.c b/crypto/bn/bn_exp.c +index 517e3c2..0489658 100644 +--- a/crypto/bn/bn_exp.c ++++ b/crypto/bn/bn_exp.c +@@ -601,7 +601,7 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBUF(BIGNUM *b, int top, + * out by Colin Percival, + * http://www.daemonology.net/hyperthreading-considered-harmful/) + */ +-int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, ++int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont) + { +@@ -618,10 +618,6 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + unsigned int t4 = 0; + #endif + +- bn_check_top(a); +- bn_check_top(p); +- bn_check_top(m); +- + if (!BN_is_odd(m)) { + BNerr(BN_F_BN_MOD_EXP_MONT_CONSTTIME, BN_R_CALLED_WITH_EVEN_MODULUS); + return 0; +@@ -1141,7 +1137,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + goto err; + } else + #endif +- if (!BN_from_montgomery(rr, &tmp, mont, ctx)) ++ if (!bn_from_mont_fixed_top(rr, &tmp, mont, ctx)) + goto err; + ret = 1; + err: +@@ -1155,6 +1151,19 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + return ret; + } + ++int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, ++ const BIGNUM *m, BN_CTX *ctx, ++ BN_MONT_CTX *in_mont) ++{ ++ bn_check_top(a); ++ bn_check_top(p); ++ bn_check_top(m); ++ if (!bn_mod_exp_mont_fixed_top(rr, a, p, m, ctx, in_mont)) ++ return 0; ++ bn_correct_top(rr); ++ return 1; ++} ++ + int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont) + { +diff --git a/crypto/ec/ec_lib.c b/crypto/ec/ec_lib.c +index 08db89f..fef0c2f 100644 +--- a/crypto/ec/ec_lib.c ++++ b/crypto/ec/ec_lib.c +@@ -1155,10 +1155,10 @@ static int ec_field_inverse_mod_ord(const EC_GROUP *group, BIGNUM *r, + if (!BN_sub(e, group->order, e)) + goto err; + /*- +- * Exponent e is public. +- * No need for scatter-gather or BN_FLG_CONSTTIME. ++ * Although the exponent is public we want the result to be ++ * fixed top. + */ +- if (!BN_mod_exp_mont(r, x, e, group->order, ctx, group->mont_data)) ++ if (!bn_mod_exp_mont_fixed_top(r, x, e, group->order, ctx, group->mont_data)) + goto err; + + ret = 1; +diff --git a/include/crypto/bn.h b/include/crypto/bn.h +index 250914c..10cfc84 100644 +--- a/include/crypto/bn.h ++++ b/include/crypto/bn.h +@@ -72,6 +72,9 @@ int bn_set_words(BIGNUM *a, const BN_ULONG *words, int num_words); + */ + int bn_mul_mont_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); ++int bn_mode_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, ++ const BIGNUM *m, BN_CTX *ctx, ++ BN_MONT_CTX *in_mont); + int bn_to_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); + int bn_from_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, +diff --git a/include/openssl/opensslv.h b/include/openssl/opensslv.h +index ddf42b6..1568415 100644 +--- a/include/openssl/opensslv.h ++++ b/include/openssl/opensslv.h +@@ -40,7 +40,7 @@ extern "C" { + * major minor fix final patch/beta) + */ + # define OPENSSL_VERSION_NUMBER 0x101011bfL +-# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1zb 16 Oct 2024" ++# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1z 20 Jan 2025" + + /*- + * The macros below are to be used for shared library (.so, .dll, ...) diff --git a/system/parted/APKBUILD b/system/parted/APKBUILD index b83f7bd8b..d5d6c49ef 100644 --- a/system/parted/APKBUILD +++ b/system/parted/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=parted -pkgver=3.5 +pkgver=3.6 pkgrel=0 pkgdesc="Utility to create, destroy, resize, check and copy partitions" url="https://www.gnu.org/software/parted/parted.html" @@ -13,6 +13,7 @@ makedepends="ncurses-dev lvm2-dev bash util-linux-dev autoconf automake" checkdepends="check-dev e2fsprogs python3" source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz fix-includes.patch + modern-c.patch posix-shell.patch sysmacros.patch tests-call-name-correctly.patch @@ -41,8 +42,9 @@ package() { rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true } -sha512sums="87fc69e947de5f0b670ee5373a7cdf86180cd782f6d7280f970f217f73f55ee1b1b018563f48954f3a54fdde5974b33e07eee68c9ccdf08e621d3dc0e3ce126a parted-3.5.tar.xz +sha512sums="034a44b25718acba175212019d24f092972a791c5bd1d921ae91e17478657a77c5c5dd0c832bed7968c3a07ec6c65c0785acfac2f90c1ca5e1692f3c141693ef parted-3.6.tar.xz 55ee63c218d1867c0f2c596e7c3eec5c42af160181456cc551fe3d432eabed0ac2dd3a3955ff0c375f76aeec8071e7f55a32834b87a0d39b8ef30361f671bfdd fix-includes.patch +66c74da28033b7340767c7339b307928c396930dca9c7cdd8f226f8cf18358eedba78ceba03036ad3f9a62fc5e164171edff81670477d3bf3af81847db3879d4 modern-c.patch 507d19454aca6631fe387ca53b28f2925c325044efc7b506e81429a5b42914e56c39e1644c570840b4c4c153da742237428cba2a1ff651487f2ef8a0a8c64d1f posix-shell.patch 5d2e8f22b6cd5bdd3289996848279a945ca09acd2862e82283bb769c2e4d61a24a31e1793d81385e8f3f1f4d48417e2308c5ea39dac47e832666363dde044ba7 sysmacros.patch -8bd86d2b0401566e7757c43d849b7f913cc4ec1bf50d5641dc72d7e278ca38db2ac746cd8dcc756b245021ea1f9738875b6a831f05185b9217d3f1c287944748 tests-call-name-correctly.patch" +62b5b94441288beddd01f2e51e6770c1c7cf1fea0b4354a77849568bf8a350724f6449e7efa04719b9970fa3c0fc1451dcc9dc3368a013b8d72854b23c8ff205 tests-call-name-correctly.patch" diff --git a/system/parted/modern-c.patch b/system/parted/modern-c.patch new file mode 100644 index 000000000..1f54f6782 --- /dev/null +++ b/system/parted/modern-c.patch @@ -0,0 +1,41 @@ +From 16343bda6ce0d41edf43f8dac368db3bbb63d271 Mon Sep 17 00:00:00 2001 +From: Rudi Heitbaum <rudi@heitbaum.com> +Date: Wed, 20 Nov 2024 12:22:22 +0000 +Subject: [PATCH] bug#74444: [PATCH] parted: fix do_version declaration + +With gcc 15-20241117 compile fails with the below error, update the +do_version declaration to match the header in command.h + +../../parted/parted.c: In function '_init_commands': +../../parted/parted.c:2469:9: error: passing argument 2 of 'command_create' from incompatible pointer type [-Wincompatible-pointer-types] + 2469 | do_version, + | ^~~~~~~~~~ + | | + | int (*)(void) +In file included from ../../parted/parted.c:28: +../../parted/command.h:35:39: note: expected 'int (*)(PedDevice **, PedDisk **)' {aka 'int (*)(struct _PedDevice **, struct _PedDisk **)'} but argument is of type 'int (*)(void)' + 35 | int (*method) (PedDevice** dev, PedDisk** diskp), + | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com> +Signed-off-by: Brian C. Lane <bcl@redhat.com> +--- + parted/parted.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/parted/parted.c b/parted/parted.c +index 3abb52f..fc2aeba 100644 +--- a/parted/parted.c ++++ b/parted/parted.c +@@ -2172,7 +2172,7 @@ do_unit (PedDevice** dev, PedDisk** diskp) + } + + static int +-do_version () ++do_version (PedDevice** dev, PedDisk** diskp) + { + printf ("\n%s\n%s", + prog_name, +-- +2.39.5 + diff --git a/system/parted/tests-call-name-correctly.patch b/system/parted/tests-call-name-correctly.patch index 27a6287e8..30645842d 100644 --- a/system/parted/tests-call-name-correctly.patch +++ b/system/parted/tests-call-name-correctly.patch @@ -17,8 +17,8 @@ mkpart syntax recently changed, tests do not reflect that. dd if=/dev/null of=$dev bs=1M seek=$n_mbs || fail=1 # create 1st partition --parted --align=none -s $dev mklabel gpt mkpart p1 1MiB 2MiB > err 2>&1 || fail=1 -+parted --align=none -s $dev mklabel gpt mkpart primary 1MiB 2MiB name 1 p1 > err 2>&1 || fail=1 +-parted --align=none -s $dev mklabel gpt mkpart p1 1MiB 2048KiB > err 2>&1 || fail=1 ++parted --align=none -s $dev mklabel gpt mkpart primary 1MiB 2048KiB name 1 p1 > err 2>&1 || fail=1 compare /dev/null err || fail=1 # expect no output #parted -m -s $dev u s p > exp || fail=1 diff --git a/system/patch/APKBUILD b/system/patch/APKBUILD index 62a551259..19f07c789 100644 --- a/system/patch/APKBUILD +++ b/system/patch/APKBUILD @@ -1,23 +1,16 @@ # Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> pkgname=patch -pkgver=2.7.6 -pkgrel=5 +pkgver=2.8 +pkgrel=0 pkgdesc="Utility to apply diffs to files" url="https://www.gnu.org/software/patch/patch.html" arch="all" license="GPL-3.0+" depends="" -checkdepends="autoconf automake bash ed" -makedepends="autoconf automake" +checkdepends="bash ed" +makedepends="" subpackages="$pkgname-doc" -source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz - allow-missing.patch - CVE-2018-1000156.patch - CVE-2018-6951.patch - CVE-2018-6952.patch - CVE-2019-13636.patch - CVE-2019-13638.patch - " +source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz" # secfixes: # 2.7.6-r2: @@ -29,11 +22,6 @@ source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz # - CVE-2019-13636 # - CVE-2019-13638 -prepare() { - default_prepare - aclocal && autoheader && autoconf && automake --add-missing -} - build() { ./configure \ --build=$CBUILD \ @@ -58,10 +46,4 @@ package() { rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true } -sha512sums="fcca87bdb67a88685a8a25597f9e015f5e60197b9a269fa350ae35a7991ed8da553939b4bbc7f7d3cfd863c67142af403b04165633acbce4339056a905e87fbd patch-2.7.6.tar.xz -317c922c3adcf347024a9ffd2374a1827b19cc1f275a90e195e070cbcf16fb47788b14ffd18365ae5e1f867ed650e6f9aed6acf287bfc427107f3ed8bcd2b3af allow-missing.patch -93414b33413b493eaa15027dfbe39c00eb1c556acf9f30af4c0ca113303867c5e7ad441c2596a7f9d060b8b67735a2a1c8be5db3c779ea47302f616ef8530d5d CVE-2018-1000156.patch -db51d0b791d38dd4f1b373621ee18620ae339b172f58a79420fdaa4a4b1b1d9df239cf61bbddc4e6a4896b28b8cffc7c99161eb5e2facaec8df86a1bf7755bc0 CVE-2018-6951.patch -99df964d826d400f87e9b82bf2600d8663c59bb8f9bf4aec082adc8cf6261744f37d416e15492d6e883202ade521d4436cb41c91f516085c3e6ce8e01a8956fb CVE-2018-6952.patch -cecb80d8d48dfe66bc13c22a5ed0eb52157cc85a1b74d03d4a8ea1ebcfe5d59bae975aec34ac685adc71129dcdb794579fee0e221144412a7c1fa71c460f63c1 CVE-2019-13636.patch -d60f8c2364fca9b73aa73b5914cfd6571d11528d13fa7703ccfa93730cbdf8a6e4c9ca04cb7d02a40d33c38075890790b490052d5217e728b0948991da937980 CVE-2019-13638.patch" +sha512sums="d689d696660a662753e8660792733c3be0a94c76abfe7a28b0f9f70300c3a42d6437d081553a59bfde6e1b0d5ee13ed89be48d0b00b6da2cadbfc14a15ada603 patch-2.8.tar.xz" diff --git a/system/patch/CVE-2018-1000156.patch b/system/patch/CVE-2018-1000156.patch deleted file mode 100644 index 36f33dea2..000000000 --- a/system/patch/CVE-2018-1000156.patch +++ /dev/null @@ -1,211 +0,0 @@ -From 123eaff0d5d1aebe128295959435b9ca5909c26d Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Fri, 6 Apr 2018 12:14:49 +0200 -Subject: Fix arbitrary command execution in ed-style patches - (CVE-2018-1000156) - -* src/pch.c (do_ed_script): Write ed script to a temporary file instead -of piping it to ed: this will cause ed to abort on invalid commands -instead of rejecting them and carrying on. -* tests/ed-style: New test case. -* tests/Makefile.am (TESTS): Add test case. ---- - src/pch.c | 91 ++++++++++++++++++++++++++++++++++++++++--------------- - tests/Makefile.am | 1 + - tests/ed-style | 41 +++++++++++++++++++++++++ - 3 files changed, 108 insertions(+), 25 deletions(-) - create mode 100644 tests/ed-style - -diff --git a/src/pch.c b/src/pch.c -index 0c5cc26..4fd5a05 100644 ---- a/src/pch.c -+++ b/src/pch.c -@@ -33,6 +33,7 @@ - # include <io.h> - #endif - #include <safe.h> -+#include <sys/wait.h> - - #define INITHUNKMAX 125 /* initial dynamic allocation size */ - -@@ -2389,24 +2390,28 @@ do_ed_script (char const *inname, char const *outname, - static char const editor_program[] = EDITOR_PROGRAM; - - file_offset beginning_of_this_line; -- FILE *pipefp = 0; - size_t chars_read; -+ FILE *tmpfp = 0; -+ char const *tmpname; -+ int tmpfd; -+ pid_t pid; -+ -+ if (! dry_run && ! skip_rest_of_patch) -+ { -+ /* Write ed script to a temporary file. This causes ed to abort on -+ invalid commands such as when line numbers or ranges exceed the -+ number of available lines. When ed reads from a pipe, it rejects -+ invalid commands and treats the next line as a new command, which -+ can lead to arbitrary command execution. */ -+ -+ tmpfd = make_tempfile (&tmpname, 'e', NULL, O_RDWR | O_BINARY, 0); -+ if (tmpfd == -1) -+ pfatal ("Can't create temporary file %s", quotearg (tmpname)); -+ tmpfp = fdopen (tmpfd, "w+b"); -+ if (! tmpfp) -+ pfatal ("Can't open stream for file %s", quotearg (tmpname)); -+ } - -- if (! dry_run && ! skip_rest_of_patch) { -- int exclusive = *outname_needs_removal ? 0 : O_EXCL; -- if (inerrno != ENOENT) -- { -- *outname_needs_removal = true; -- copy_file (inname, outname, 0, exclusive, instat.st_mode, true); -- } -- sprintf (buf, "%s %s%s", editor_program, -- verbosity == VERBOSE ? "" : "- ", -- outname); -- fflush (stdout); -- pipefp = popen(buf, binary_transput ? "wb" : "w"); -- if (!pipefp) -- pfatal ("Can't open pipe to %s", quotearg (buf)); -- } - for (;;) { - char ed_command_letter; - beginning_of_this_line = file_tell (pfp); -@@ -2417,14 +2422,14 @@ do_ed_script (char const *inname, char const *outname, - } - ed_command_letter = get_ed_command_letter (buf); - if (ed_command_letter) { -- if (pipefp) -- if (! fwrite (buf, sizeof *buf, chars_read, pipefp)) -+ if (tmpfp) -+ if (! fwrite (buf, sizeof *buf, chars_read, tmpfp)) - write_fatal (); - if (ed_command_letter != 'd' && ed_command_letter != 's') { - p_pass_comments_through = true; - while ((chars_read = get_line ()) != 0) { -- if (pipefp) -- if (! fwrite (buf, sizeof *buf, chars_read, pipefp)) -+ if (tmpfp) -+ if (! fwrite (buf, sizeof *buf, chars_read, tmpfp)) - write_fatal (); - if (chars_read == 2 && strEQ (buf, ".\n")) - break; -@@ -2437,13 +2442,49 @@ do_ed_script (char const *inname, char const *outname, - break; - } - } -- if (!pipefp) -+ if (!tmpfp) - return; -- if (fwrite ("w\nq\n", sizeof (char), (size_t) 4, pipefp) == 0 -- || fflush (pipefp) != 0) -+ if (fwrite ("w\nq\n", sizeof (char), (size_t) 4, tmpfp) == 0 -+ || fflush (tmpfp) != 0) - write_fatal (); -- if (pclose (pipefp) != 0) -- fatal ("%s FAILED", editor_program); -+ -+ if (lseek (tmpfd, 0, SEEK_SET) == -1) -+ pfatal ("Can't rewind to the beginning of file %s", quotearg (tmpname)); -+ -+ if (! dry_run && ! skip_rest_of_patch) { -+ int exclusive = *outname_needs_removal ? 0 : O_EXCL; -+ *outname_needs_removal = true; -+ if (inerrno != ENOENT) -+ { -+ *outname_needs_removal = true; -+ copy_file (inname, outname, 0, exclusive, instat.st_mode, true); -+ } -+ sprintf (buf, "%s %s%s", editor_program, -+ verbosity == VERBOSE ? "" : "- ", -+ outname); -+ fflush (stdout); -+ -+ pid = fork(); -+ if (pid == -1) -+ pfatal ("Can't fork"); -+ else if (pid == 0) -+ { -+ dup2 (tmpfd, 0); -+ execl ("/bin/sh", "sh", "-c", buf, (char *) 0); -+ _exit (2); -+ } -+ else -+ { -+ int wstatus; -+ if (waitpid (pid, &wstatus, 0) == -1 -+ || ! WIFEXITED (wstatus) -+ || WEXITSTATUS (wstatus) != 0) -+ fatal ("%s FAILED", editor_program); -+ } -+ } -+ -+ fclose (tmpfp); -+ safe_unlink (tmpname); - - if (ofp) - { -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 6b6df63..16f8693 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -32,6 +32,7 @@ TESTS = \ - crlf-handling \ - dash-o-append \ - deep-directories \ -+ ed-style \ - empty-files \ - false-match \ - fifo \ -diff --git a/tests/ed-style b/tests/ed-style -new file mode 100644 -index 0000000..d8c0689 ---- /dev/null -+++ b/tests/ed-style -@@ -0,0 +1,41 @@ -+# Copyright (C) 2018 Free Software Foundation, Inc. -+# -+# Copying and distribution of this file, with or without modification, -+# in any medium, are permitted without royalty provided the copyright -+# notice and this notice are preserved. -+ -+. $srcdir/test-lib.sh -+ -+require cat -+use_local_patch -+use_tmpdir -+ -+# ============================================================== -+ -+cat > ed1.diff <<EOF -+0a -+foo -+. -+EOF -+ -+check 'patch -e foo -i ed1.diff' <<EOF -+EOF -+ -+check 'cat foo' <<EOF -+foo -+EOF -+ -+cat > ed2.diff <<EOF -+1337a -+r !echo bar -+,p -+EOF -+ -+check 'patch -e foo -i ed2.diff 2> /dev/null || echo "Status: $?"' <<EOF -+? -+Status: 2 -+EOF -+ -+check 'cat foo' <<EOF -+foo -+EOF --- -cgit v1.0-41-gc330 - diff --git a/system/patch/CVE-2018-6951.patch b/system/patch/CVE-2018-6951.patch deleted file mode 100644 index 002d8ffd9..000000000 --- a/system/patch/CVE-2018-6951.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f290f48a621867084884bfff87f8093c15195e6a Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Mon, 12 Feb 2018 16:48:24 +0100 -Subject: Fix segfault with mangled rename patch - -http://savannah.gnu.org/bugs/?53132 -* src/pch.c (intuit_diff_type): Ensure that two filenames are specified -for renames and copies (fix the existing check). ---- - src/pch.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/pch.c b/src/pch.c -index ff9ed2c..bc6278c 100644 ---- a/src/pch.c -+++ b/src/pch.c -@@ -974,7 +974,8 @@ intuit_diff_type (bool need_header, mode_t *p_file_type) - if ((pch_rename () || pch_copy ()) - && ! inname - && ! ((i == OLD || i == NEW) && -- p_name[! reverse] && -+ p_name[reverse] && p_name[! reverse] && -+ name_is_valid (p_name[reverse]) && - name_is_valid (p_name[! reverse]))) - { - say ("Cannot %s file without two valid file names\n", pch_rename () ? "rename" : "copy"); --- -cgit v1.0-41-gc330 - diff --git a/system/patch/CVE-2018-6952.patch b/system/patch/CVE-2018-6952.patch deleted file mode 100644 index d9ad374a2..000000000 --- a/system/patch/CVE-2018-6952.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 9c986353e420ead6e706262bf204d6e03322c300 Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Fri, 17 Aug 2018 13:35:40 +0200 -Subject: Fix swapping fake lines in pch_swap - -* src/pch.c (pch_swap): Fix swapping p_bfake and p_efake when there is a -blank line in the middle of a context-diff hunk: that empty line stays -in the middle of the hunk and isn't swapped. - -Fixes: https://savannah.gnu.org/bugs/index.php?53133 ---- - src/pch.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/pch.c b/src/pch.c -index e92bc64..a500ad9 100644 ---- a/src/pch.c -+++ b/src/pch.c -@@ -2122,7 +2122,7 @@ pch_swap (void) - } - if (p_efake >= 0) { /* fix non-freeable ptr range */ - if (p_efake <= i) -- n = p_end - i + 1; -+ n = p_end - p_ptrn_lines; - else - n = -i; - p_efake += n; --- -cgit v1.0-41-gc330 - diff --git a/system/patch/CVE-2019-13636.patch b/system/patch/CVE-2019-13636.patch deleted file mode 100644 index e62c3d417..000000000 --- a/system/patch/CVE-2019-13636.patch +++ /dev/null @@ -1,108 +0,0 @@ -From dce4683cbbe107a95f1f0d45fabc304acfb5d71a Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Mon, 15 Jul 2019 16:21:48 +0200 -Subject: Don't follow symlinks unless --follow-symlinks is given - -* src/inp.c (plan_a, plan_b), src/util.c (copy_to_fd, copy_file, -append_to_file): Unless the --follow-symlinks option is given, open files with -the O_NOFOLLOW flag to avoid following symlinks. So far, we were only doing -that consistently for input files. -* src/util.c (create_backup): When creating empty backup files, (re)create them -with O_CREAT | O_EXCL to avoid following symlinks in that case as well. ---- - src/inp.c | 12 ++++++++++-- - src/util.c | 14 +++++++++++--- - 2 files changed, 21 insertions(+), 5 deletions(-) - -diff --git a/src/inp.c b/src/inp.c -index 32d0919..22d7473 100644 ---- a/src/inp.c -+++ b/src/inp.c -@@ -238,8 +238,13 @@ plan_a (char const *filename) - { - if (S_ISREG (instat.st_mode)) - { -- int ifd = safe_open (filename, O_RDONLY|binary_transput, 0); -+ int flags = O_RDONLY | binary_transput; - size_t buffered = 0, n; -+ int ifd; -+ -+ if (! follow_symlinks) -+ flags |= O_NOFOLLOW; -+ ifd = safe_open (filename, flags, 0); - if (ifd < 0) - pfatal ("can't open file %s", quotearg (filename)); - -@@ -340,6 +345,7 @@ plan_a (char const *filename) - static void - plan_b (char const *filename) - { -+ int flags = O_RDONLY | binary_transput; - int ifd; - FILE *ifp; - int c; -@@ -353,7 +359,9 @@ plan_b (char const *filename) - - if (instat.st_size == 0) - filename = NULL_DEVICE; -- if ((ifd = safe_open (filename, O_RDONLY | binary_transput, 0)) < 0 -+ if (! follow_symlinks) -+ flags |= O_NOFOLLOW; -+ if ((ifd = safe_open (filename, flags, 0)) < 0 - || ! (ifp = fdopen (ifd, binary_transput ? "rb" : "r"))) - pfatal ("Can't open file %s", quotearg (filename)); - if (TMPINNAME_needs_removal) -diff --git a/src/util.c b/src/util.c -index 1cc08ba..fb38307 100644 ---- a/src/util.c -+++ b/src/util.c -@@ -388,7 +388,7 @@ create_backup (char const *to, const struct stat *to_st, bool leave_original) - - try_makedirs_errno = ENOENT; - safe_unlink (bakname); -- while ((fd = safe_open (bakname, O_CREAT | O_WRONLY | O_TRUNC, 0666)) < 0) -+ while ((fd = safe_open (bakname, O_CREAT | O_EXCL | O_WRONLY | O_TRUNC, 0666)) < 0) - { - if (errno != try_makedirs_errno) - pfatal ("Can't create file %s", quotearg (bakname)); -@@ -579,10 +579,13 @@ create_file (char const *file, int open_flags, mode_t mode, - static void - copy_to_fd (const char *from, int tofd) - { -+ int from_flags = O_RDONLY | O_BINARY; - int fromfd; - ssize_t i; - -- if ((fromfd = safe_open (from, O_RDONLY | O_BINARY, 0)) < 0) -+ if (! follow_symlinks) -+ from_flags |= O_NOFOLLOW; -+ if ((fromfd = safe_open (from, from_flags, 0)) < 0) - pfatal ("Can't reopen file %s", quotearg (from)); - while ((i = read (fromfd, buf, bufsize)) != 0) - { -@@ -625,6 +628,8 @@ copy_file (char const *from, char const *to, struct stat *tost, - else - { - assert (S_ISREG (mode)); -+ if (! follow_symlinks) -+ to_flags |= O_NOFOLLOW; - tofd = create_file (to, O_WRONLY | O_BINARY | to_flags, mode, - to_dir_known_to_exist); - copy_to_fd (from, tofd); -@@ -640,9 +645,12 @@ copy_file (char const *from, char const *to, struct stat *tost, - void - append_to_file (char const *from, char const *to) - { -+ int to_flags = O_WRONLY | O_APPEND | O_BINARY; - int tofd; - -- if ((tofd = safe_open (to, O_WRONLY | O_BINARY | O_APPEND, 0)) < 0) -+ if (! follow_symlinks) -+ to_flags |= O_NOFOLLOW; -+ if ((tofd = safe_open (to, to_flags, 0)) < 0) - pfatal ("Can't reopen file %s", quotearg (to)); - copy_to_fd (from, tofd); - if (close (tofd) != 0) --- -cgit v1.0-41-gc330 - diff --git a/system/patch/CVE-2019-13638.patch b/system/patch/CVE-2019-13638.patch deleted file mode 100644 index 38caff628..000000000 --- a/system/patch/CVE-2019-13638.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 3fcd042d26d70856e826a42b5f93dc4854d80bf0 Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Fri, 6 Apr 2018 19:36:15 +0200 -Subject: Invoke ed directly instead of using the shell - -* src/pch.c (do_ed_script): Invoke ed directly instead of using a shell -command to avoid quoting vulnerabilities. ---- - src/pch.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/src/pch.c b/src/pch.c -index 4fd5a05..16e001a 100644 ---- a/src/pch.c -+++ b/src/pch.c -@@ -2459,9 +2459,6 @@ do_ed_script (char const *inname, char const *outname, - *outname_needs_removal = true; - copy_file (inname, outname, 0, exclusive, instat.st_mode, true); - } -- sprintf (buf, "%s %s%s", editor_program, -- verbosity == VERBOSE ? "" : "- ", -- outname); - fflush (stdout); - - pid = fork(); -@@ -2470,7 +2467,8 @@ do_ed_script (char const *inname, char const *outname, - else if (pid == 0) - { - dup2 (tmpfd, 0); -- execl ("/bin/sh", "sh", "-c", buf, (char *) 0); -+ assert (outname[0] != '!' && outname[0] != '-'); -+ execlp (editor_program, editor_program, "-", outname, (char *) NULL); - _exit (2); - } - else --- -cgit v1.0-41-gc330 - diff --git a/system/patch/allow-missing.patch b/system/patch/allow-missing.patch deleted file mode 100644 index 98c9aa877..000000000 --- a/system/patch/allow-missing.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b5a91a01e5d0897facdd0f49d64b76b0f02b43e1 Mon Sep 17 00:00:00 2001 -From: Andreas Gruenbacher <agruen@gnu.org> -Date: Fri, 6 Apr 2018 11:34:51 +0200 -Subject: Allow input files to be missing for ed-style patches - -* src/pch.c (do_ed_script): Allow input files to be missing so that new -files will be created as with non-ed-style patches. ---- - src/pch.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/src/pch.c b/src/pch.c -index bc6278c..0c5cc26 100644 ---- a/src/pch.c -+++ b/src/pch.c -@@ -2394,9 +2394,11 @@ do_ed_script (char const *inname, char const *outname, - - if (! dry_run && ! skip_rest_of_patch) { - int exclusive = *outname_needs_removal ? 0 : O_EXCL; -- assert (! inerrno); -- *outname_needs_removal = true; -- copy_file (inname, outname, 0, exclusive, instat.st_mode, true); -+ if (inerrno != ENOENT) -+ { -+ *outname_needs_removal = true; -+ copy_file (inname, outname, 0, exclusive, instat.st_mode, true); -+ } - sprintf (buf, "%s %s%s", editor_program, - verbosity == VERBOSE ? "" : "- ", - outname); --- -cgit v1.0-41-gc330 - diff --git a/system/pax-utils/APKBUILD b/system/pax-utils/APKBUILD index 9d306faf2..9b64e2668 100644 --- a/system/pax-utils/APKBUILD +++ b/system/pax-utils/APKBUILD @@ -1,28 +1,31 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: Zach van Rijn <me@zv.io> pkgname=pax-utils -pkgver=1.3.4 +pkgver=1.3.8 pkgrel=0 -pkgdesc="ELF related utils for ELF 32/64 binaries" +pkgdesc="ELF utils that can check files for security relevant properties" url="https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities" arch="all" -options="!check" # depends on nx package(s) +options="!check" # depends on unpackaged py3-pyelftools license="GPL-2.0-only" depends="scanelf" -makedepends="linux-headers libcap-dev" -# ATTENTION MAINTAINERS: Generate a new tarball from upstream sources: -# git clone https://anongit.gentoo.org/git/proj/pax-utils.git -# cd pax-utils -# ./make-tarball.sh v$pkgver -source="https://distfiles.adelielinux.org/source/upstream/$pkgname-$pkgver.tar.xz" +makedepends="linux-headers libcap-dev muon xmlto" +source="https://dev.gentoo.org/~sam/distfiles/app-misc/$pkgname/$pkgname-$pkgver.tar.xz" subpackages="$pkgname-doc scanelf:_scanelf" build() { - make USE_CAP=yes + muon setup \ + -Dprefix=/usr \ + -Dlddtree_implementation=sh \ + -Duse_libcap=enabled \ + -Dbuild_manpages=enabled \ + -Duse_fuzzing=false \ + build + muon -C build samu } package() { - make DESTDIR="$pkgdir/" install + DESTDIR="$pkgdir" muon -C build install # Don't conflict with lddtree package rm -f "$pkgdir"/usr/bin/lddtree @@ -36,4 +39,4 @@ _scanelf() { mv "$pkgdir"/usr/bin/scanelf "$subpkgdir"/usr/bin/ } -sha512sums="44a475860823e8b70b1d09d69e5fba3ed8298511d07e1e7b09ce62237cb8b1ecee8fc2fc550d6853d0b9f8db3c350bf78ced49d5f210997b294dc10e36627fcd pax-utils-1.3.4.tar.xz" +sha512sums="0dde95f86802729d80b7b38af84dec636e973f6abc70600633edcb05d3d5f95c1b2861300ce478dd7f798c7a1e5eccb1011c06c53adba38e11a996b69d463656 pax-utils-1.3.8.tar.xz" diff --git a/system/perl-io-socket-ssl/APKBUILD b/system/perl-io-socket-ssl/APKBUILD index e8b9f6556..210fcabc3 100644 --- a/system/perl-io-socket-ssl/APKBUILD +++ b/system/perl-io-socket-ssl/APKBUILD @@ -5,7 +5,7 @@ _pkgreal=IO-Socket-SSL _author=SULLR _au=${_author%%"${_author#??}"} _a=${_author%%"${_author#?}"} -pkgver=2.085 +pkgver=2.095 pkgrel=0 pkgdesc="Perl module implementing SSL/TLS with IO::Socket interface" url="https://metacpan.org/release/IO-Socket-SSL" @@ -31,4 +31,4 @@ package() { find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete } -sha512sums="c4e045e88f69579d53a3663ed8f74d342fe3529e24e06d9e7d299debafdb840839c6f5bccb579b4d03f7501615439dba4661ac006312f379a2598a3030634cfd IO-Socket-SSL-2.085.tar.gz" +sha512sums="6025bc0eac4258e81eb0fc6da9297e8c3c648ed02ba0b2b66a6f604f83a7bd5d8b4a945e7c51c733754a7738ed1309316d4d1be6eccf1f7744fc58fd9fb27109 IO-Socket-SSL-2.095.tar.gz" diff --git a/system/perl-net-http/APKBUILD b/system/perl-net-http/APKBUILD index 6235d2fc0..1cff0a513 100644 --- a/system/perl-net-http/APKBUILD +++ b/system/perl-net-http/APKBUILD @@ -23,6 +23,7 @@ build() { } check() { + export NO_NETWORK_TESTING=1 #986 make test } diff --git a/system/pkgconf/APKBUILD b/system/pkgconf/APKBUILD index e67f27565..a3cb2132e 100644 --- a/system/pkgconf/APKBUILD +++ b/system/pkgconf/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=pkgconf -pkgver=1.9.4 +pkgver=2.4.3 pkgrel=0 pkgdesc="Toolkit for maintaining development package metadata" url="http://pkgconf.org/" @@ -47,4 +47,4 @@ dev() { mv "$subpkgdir"/usr/share/aclocal/pkg.m4 "$pkgdir"/usr/share/aclocal/ } -sha512sums="079436244f3942161f91c961c96d382a85082079c9843fec5ddd7fb245ba7500a9f7a201b5ef2c70a7a079fe1aacf3a52b73de5402a6f061df87bcdcf0a90755 pkgconf-1.9.4.tar.xz" +sha512sums="7e59b6aaf875ec3fc8c225985937384d2aef57d9daf64b7ea88242bf1a11349fe52cf6d1238d728f0509599982d69c761a0f01e8f8e24de028db58288760896f pkgconf-2.4.3.tar.xz" diff --git a/system/po4a/APKBUILD b/system/po4a/APKBUILD index f5cdb0755..728357272 100644 --- a/system/po4a/APKBUILD +++ b/system/po4a/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Christian Kampka <christian@kampka.net> # Maintainer: Zach van Rijn <me@zv.io> pkgname=po4a -pkgver=0.69 +pkgver=0.73 pkgrel=0 pkgdesc="Tools for helping translation of documentation" url="https://po4a.org" @@ -35,5 +35,5 @@ package() { find ${pkgdir} -name .packlist -o -name perllocal.pod -delete } -sha512sums="9cb5eec547ab18d1c3ebdda212b909fc4f5489a74641ba2d7e0a3a1d060f245d23667c16e687c678c5ccc3809c9315d20673266dcc3764172a899caa397238e3 po4a-0.69.tar.gz -be457a023383c60864bd155b13d8952f8ae523b709a464af2419695a3fb64c1ee6b4176b23811241fa9bed87c2d0c44dbf8c19178046b052b49ea191d03ccc5a disable-stats.patch" +sha512sums="5860af1da2a0ab1875a994b09ae2da481c12a6777655610e8c8ded4a6132048a33aeea10eaa756a73af1a7bf1e3e65f7ab5ded9d799904ae3240c6ec3b0a31d2 po4a-0.73.tar.gz +2765d06cb3009126af21570faea8c6bb04b570716d26ab1b519868023ac22662f0aa489de063bd55f444baa7f6403f4e0c2c8605f6b4cfa4e1a0c2762b9f2def disable-stats.patch" diff --git a/system/po4a/disable-stats.patch b/system/po4a/disable-stats.patch index 692888460..bbe6bc5e2 100644 --- a/system/po4a/disable-stats.patch +++ b/system/po4a/disable-stats.patch @@ -10,7 +10,7 @@ This is because stdout/stderr is empty. --- po4a-0.66/Po4aBuilder.pm.old 2022-01-01 18:10:18.000000000 -0600 +++ po4a-0.66/Po4aBuilder.pm 2022-05-07 19:42:25.316006467 -0500 -@@ -15,7 +15,8 @@ +@@ -22,7 +22,8 @@ $self->depends_on('docs'); $self->depends_on('distmeta'); # regenerate META.yml $self->depends_on('man') unless ($^O eq 'MSWin32'); diff --git a/system/procps/APKBUILD b/system/procps/APKBUILD index 11ccc7172..e0c3aac92 100644 --- a/system/procps/APKBUILD +++ b/system/procps/APKBUILD @@ -1,19 +1,20 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=procps -pkgver=3.3.17 +pkgver=4.0.5 pkgrel=0 pkgdesc="Utilities for monitoring your system and processes on your system" url="https://gitlab.com/procps-ng/procps" arch="all" -license="GPL-2.0+ LGPL-2.0+" +license="GPL-2.0+ AND LGPL-2.0+" depends="" checkdepends="dejagnu" makedepends_build="autoconf automake libtool gettext-tiny" makedepends_host="ncurses-dev utmps-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang libproc" source="https://gitlab.com/procps-ng/procps/-/archive/v$pkgver/procps-v$pkgver.tar.bz2 - use-utmpx.patch - add-langinfo-header.patch + shell-portability.patch + ut-hostsize.patch + utmpx.patch " builddir="$srcdir/$pkgname-v$pkgver" @@ -24,6 +25,7 @@ prepare() { } build() { + export CFLAGS="$CFLAGS -D__UT_HOSTSIZE=UT_HOSTSIZE" export LIBS="$LIBS -lutmps -lskarnet" export VERSION="$pkgver" ./configure \ @@ -70,6 +72,7 @@ libproc() { mv "$pkgdir"/lib "$subpkgdir"/ } -sha512sums="7f4ad6a76b042a2478fa866ea63d6826129b08b734c6341155134fcc73c0cf0df429c369dbd5aa65b28ebeeb1ab6ee8df4f2dab2083951bad539bce916e14b64 procps-v3.3.17.tar.bz2 -77cfd89cf75e937806dd068a83da3ad548000b941401fce49a482988dc8db82438ade2a939cf6fe795a59059275ffc4a61520b169da60f53ecef408a24042bcf use-utmpx.patch -f1085cec2fab869b94d2a4b45baf68d6316e8f2ac729cd23341ef27c871df91f83f8953a777a0e858b244d8faf5171f9c640b9e7616c9a5d9c816fa044b92a78 add-langinfo-header.patch" +sha512sums="8fc75d8c205ea18605a1f1eccf487a4236cd0503543d5c2917bcb047e760beba3b25b4ad3cb3224a48b390ec9289993bd5fed77105fa97c6b464c17708e97403 procps-v4.0.5.tar.bz2 +99bb972229204afda5236e71bdfaeaca383e9ab509cd21b78140457193b7dcc301b1306a621fe5164d975928a2d17128ed23f46502dd36c1aa10daaef28b792c shell-portability.patch +bb22cf9875f08d027825645f46d467fbfe4b7d7b0374412f44929577e7afc723b44495edd9751901c2ba2292b2a59e9e5d532324047fefd986c30675563f7f45 ut-hostsize.patch +670b4ff2e160fd4090be5c2474a08f44f3560d177de6276c734236e176148edfd877ebee3e326df6ccdb62cabb5d6281b14326a61cda7df9b7349115d9ce7853 utmpx.patch" diff --git a/system/procps/add-langinfo-header.patch b/system/procps/add-langinfo-header.patch deleted file mode 100644 index 8498271e8..000000000 --- a/system/procps/add-langinfo-header.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -ur a/proc/escape.c b/proc/escape.c ---- a/proc/escape.c 2022-05-04 06:50:01.750000000 +0000 -+++ b/proc/escape.c 2022-05-04 06:50:29.050000000 +0000 -@@ -20,6 +20,7 @@ - #include <stdio.h> - #include <sys/types.h> - #include <string.h> -+#include <langinfo.h> - #include <limits.h> - #include "procps.h" - #include "escape.h" diff --git a/system/procps/shell-portability.patch b/system/procps/shell-portability.patch new file mode 100644 index 000000000..98e161483 --- /dev/null +++ b/system/procps/shell-portability.patch @@ -0,0 +1,11 @@ +--- procps-v4.0.5/Makefile.am.old 2024-12-18 18:41:10.000000000 -0600 ++++ procps-v4.0.5/Makefile.am 2025-06-16 04:03:21.753061719 -0500 +@@ -455,7 +455,7 @@ + last_capname=`sed -n -e 's/^#define\s*CAP_LAST_CAP\s*\([A-Z_]*\)$$/\1/p' $(LNX_CAP_HEADER)`; \ + capability_count=`sed -n -e "s/^#define\s*$$last_capname\s*\([0-9]*\)$$/\1/p" $(LNX_CAP_HEADER)`; \ + sed -n -e 's/^#define\s*CAP_\([A-Z_]*\)\s*\([0-9]*\)$$/ [\2] = \"\L\1\",/p' $(LNX_CAP_HEADER) >> $@; \ +- echo -e "};\n\n" >> $@; \ ++ printf '};\n\n' >> $@; \ + echo "#define CAPABILITY_COUNT $$capability_count" >> $@; \ + echo "$$capnames_footer" >> $@; \ + echo ""; \ diff --git a/system/procps/use-utmpx.patch b/system/procps/use-utmpx.patch deleted file mode 100644 index 608ea6182..000000000 --- a/system/procps/use-utmpx.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -ur a/proc/whattime.c b/proc/whattime.c ---- a/proc/whattime.c 2022-05-04 07:08:11.390000000 +0000 -+++ b/proc/whattime.c 2022-05-04 07:08:42.860000000 +0000 -@@ -33,7 +33,7 @@ - #include <fcntl.h> - #include <unistd.h> - #include <time.h> --#include <utmp.h> -+#include <utmpx.h> - #include <sys/ioctl.h> - #include "whattime.h" - #include "sysinfo.h" -@@ -42,7 +43,7 @@ - static double av[3]; - - char *sprint_uptime(int human_readable) { -- struct utmp *utmpstruct; -+ struct utmpx *utmpstruct; - int upminutes, uphours, updays, upweeks, upyears, updecades; - int pos; - int comma; -@@ -98,13 +99,13 @@ - /* count the number of users */ - - numuser = 0; -- setutent(); -- while ((utmpstruct = getutent())) { -+ setutxent(); -+ while ((utmpstruct = getutxent())) { - if ((utmpstruct->ut_type == USER_PROCESS) && - (utmpstruct->ut_name[0] != '\0')) - numuser++; - } -- endutent(); -+ endutxent(); - - pos += sprintf(buf + pos, "%2d user%s, ", numuser, numuser == 1 ? "" : "s"); - diff --git a/system/procps/ut-hostsize.patch b/system/procps/ut-hostsize.patch new file mode 100644 index 000000000..3bc3255f7 --- /dev/null +++ b/system/procps/ut-hostsize.patch @@ -0,0 +1,14 @@ +--- procps-v4.0.5/configure.ac.old 2024-12-18 18:41:10.000000000 -0600 ++++ procps-v4.0.5/configure.ac 2025-06-16 03:13:14.743718810 -0500 +@@ -81,9 +81,9 @@ + dnl Needed for musl + if test "x$ac_cv_header_utmpx_h" = xyes + then : +-AC_CHECK_DECLS([__UT_HOSTSIZE], ++AC_CHECK_DECLS([UT_HOSTSIZE], + [AC_DEFINE([HAVE_UT_HOSTSIZE_IN_UTMPX], [1], +- [Define if __UT_HOSTSIZE in utmpx.h])], ++ [Define if UT_HOSTSIZE in utmpx.h])], + [], + [[#include <utmpx.h>]]) + fi diff --git a/system/procps/utmpx.patch b/system/procps/utmpx.patch new file mode 100644 index 000000000..c4af55ede --- /dev/null +++ b/system/procps/utmpx.patch @@ -0,0 +1,44 @@ +--- procps-v4.0.5/library/uptime.c.old 2024-12-18 18:41:10.000000000 -0600 ++++ procps-v4.0.5/library/uptime.c 2025-06-16 03:14:07.898014940 -0500 +@@ -30,7 +30,11 @@ + #include <string.h> + #include <time.h> + #include <unistd.h> ++#ifdef HAVE_UTMPX_H ++#include <utmpx.h> ++#else + #include <utmp.h> ++#endif + #ifdef WITH_SYSTEMD + #include <systemd/sd-daemon.h> + #include <systemd/sd-login.h> +@@ -63,7 +67,7 @@ + PROCPS_EXPORT int procps_users(void) + { + int numuser = 0; +-#ifdef HAVE_UTMP_X ++#ifdef HAVE_UTMPX_H + struct utmpx *ut; + #else + struct utmp *ut; +@@ -99,7 +103,7 @@ + } + #endif + +-#ifdef HAVE_UTMP_X ++#ifdef HAVE_UTMPX_H + setutxent(); + while ((ut = getutxent())) { + #else +@@ -109,7 +113,11 @@ + if ((ut->ut_type == USER_PROCESS) && (ut->ut_name[0] != '\0')) + numuser++; + } ++#ifdef HAVE_UTMPX_H ++ endutxent(); ++#else + endutent(); ++#endif + + return numuser; + } diff --git a/system/psmisc/APKBUILD b/system/psmisc/APKBUILD index b80969030..36244bc77 100644 --- a/system/psmisc/APKBUILD +++ b/system/psmisc/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: Zach van Rijn <me@zv.io> pkgname=psmisc -pkgver=23.6 +pkgver=23.7 pkgrel=0 pkgdesc="Miscellaneous utilities that use the proc filesystem" url="https://gitlab.com/psmisc/psmisc" @@ -49,5 +49,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="17ee04c2ce8bd5107b583069853dbf296ecbbf5b3bfb395d02e35691212de453e8b8cae15666a61a3041487cc0e4d1a6e7fbe105afc3a0114bd5b19682efa17a psmisc-23.6.tar.bz2 -a910611896368a088503f50a04a1c2af00d57ee20f3613e81c79cd89574805a505dff43e356ed833a464e3b59d7c1e11fd52cf0bbf32fcfece4dbd2380f23b71 fix-peekfd-on-ppc.patch" +sha512sums="facb57c8f4dcd4ed7ece729c2108f91aaaf2f2c5123c71f8f645d30c4bfb8ec147f1f222da262c37e18a7b0def7c25b66e3b5d0e216a45a016e8085f472121eb psmisc-23.7.tar.bz2 +2832aab7a76fa2e9190eeca5131bb2697464c939f451e3662b5d1a102b26a20249d096a840c58db4be50fe6759b4e810706f496b49b0b77dd7eeb5e47edacc86 fix-peekfd-on-ppc.patch" diff --git a/system/psmisc/fix-peekfd-on-ppc.patch b/system/psmisc/fix-peekfd-on-ppc.patch index b28e17efb..5368f33d7 100644 --- a/system/psmisc/fix-peekfd-on-ppc.patch +++ b/system/psmisc/fix-peekfd-on-ppc.patch @@ -1,6 +1,6 @@ --- psmisc-23.0/src/peekfd.c.old 2017-06-12 00:29:46.000000000 +0000 +++ psmisc-23.0/src/peekfd.c 2017-06-28 10:15:18.635344983 +0000 -@@ -266,11 +266,11 @@ +@@ -341,11 +341,11 @@ if (WIFSTOPPED(status)) { #ifdef PPC struct pt_regs regs; diff --git a/system/python3/APKBUILD b/system/python3/APKBUILD index 64fd5ec98..07a7b44bd 100644 --- a/system/python3/APKBUILD +++ b/system/python3/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Síle Ekaterin Liszka <sheila@vulpine.house> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=python3 -pkgver=3.11.5 +pkgver=3.11.13 _basever="${pkgver%.*}" pkgrel=0 pkgdesc="A high-level scripting language" @@ -189,6 +189,6 @@ tests() { "$subpkgdir"/usr/lib/python$_basever/ } -sha512sums="93fa640bedcea449060caac8aa691aa315a19f172fd9f0422183d17749c3512d4ecac60e7599f9ef14e3cdb3c8b4b060e484c9061b1e7ee8d958200d6041e408 Python-3.11.5.tar.xz -df1c7096a7744c94312ee6cacdd54345e384bcdf2a17148163f5f4c70f0cfa80301efbcbb2398306401ec53106e5c6922ba582a7df226e718cedb53396cc4786 musl-find_library.patch +sha512sums="70f57464d548eac4fe0d0c7f85a14b0e549a4e25ef66de4fc36b06ce72a3efe87dadfcd56ee275c10483cf802fbc9d73b61f9fb2941a46e2f92f075aeb1afe85 Python-3.11.13.tar.xz +43dcf9955c9f7bee8b509d94bcce9f3946fe082c9987a2fe3ce2bf39a63f40473a524c30af47bef9ea1913545956cd75adeb25cf095b72c971fe8c5da8f1ffd9 musl-find_library.patch 75c60afecba2e57f11d58c20aadc611ebbb5c68e05b14415c5cf2f7aa75e103986764ca22f76e6a58b2c08e2ff3acffdbf6d85d2c8c4589743a0b949a4c90687 musl-has-login_tty.patch" diff --git a/system/python3/musl-find_library.patch b/system/python3/musl-find_library.patch index 6181ede0a..b60ee20fa 100644 --- a/system/python3/musl-find_library.patch +++ b/system/python3/musl-find_library.patch @@ -1,7 +1,7 @@ diff -ru Python-2.7.12.orig/Lib/ctypes/util.py Python-2.7.12/Lib/ctypes/util.py --- Python-2.7.12.orig/Lib/ctypes/util.py 2016-06-26 00:49:30.000000000 +0300 +++ Python-2.7.12/Lib/ctypes/util.py 2016-11-03 16:05:46.954665040 +0200 -@@ -265,6 +265,41 @@ +@@ -268,6 +268,41 @@ def find_library(name, is64 = False): return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name)) diff --git a/system/rhash/APKBUILD b/system/rhash/APKBUILD index c58756509..34010792e 100644 --- a/system/rhash/APKBUILD +++ b/system/rhash/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Przemyslaw Pawelczyk <przemoc@zoho.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=rhash -pkgver=1.4.3 +pkgver=1.4.6 pkgrel=0 pkgdesc="Utility for calculation and verification of hash sums and magnet links" url="https://rhash.sourceforge.net/" @@ -31,4 +31,4 @@ package() { make -j1 DESTDIR="$pkgdir" install install-gmo install-lib-headers install-lib-so-link install-man } -sha512sums="d87ffcde28d8f25cf775c279fed457e52d24523ed9b695629dae694b3c22372247d18f6032f8ce13a0b70fa2953be408982e46659daaa7c4ab227ae89eaed9c7 rhash-1.4.3.tar.gz" +sha512sums="c125b71ec36cce2ec31057239cac8b987555f5e3b152dacb6386b905f8cc4d449c1de5b53e5a5206a2d87975681225c9b54e5826c10ffd91b3440f8595d22b15 rhash-1.4.6.tar.gz" diff --git a/system/rsync/APKBUILD b/system/rsync/APKBUILD index 09fe1740c..cfbf8695b 100644 --- a/system/rsync/APKBUILD +++ b/system/rsync/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> pkgname=rsync -pkgver=3.4.0 +pkgver=3.4.1 pkgrel=0 pkgdesc="File transfer program to keep remote files in sync" url="https://rsync.samba.org/" @@ -75,7 +75,7 @@ rrsync() { install -D -m 755 "$builddir"/support/rrsync "$subpkgdir"/usr/bin/rrsync } -sha512sums="4a0e7817e6e71e0173713ddd6b6bc7ee86237d092bd0a8c830a69f9993b76b5712a13a3ca60c7bbf42162cdc837df8783e07f8cd65c32fcb12c35f751043c56b rsync-3.4.0.tar.gz +sha512sums="a3ecde4843ddb795308dca88581b868ac0221eb6f88a1477d7a9a2ecb4e4686042966bdddbab40866f90a4715d3104daa7b83222ddf0f3387b796a86bde8e5c2 rsync-3.4.1.tar.gz 638d87c9a753b35044f6321ccd09d2c0addaab3c52c40863eb6905905576b5268bec67b496df81225528c9e39fbd92e9225d7b3037ab1fda78508d452c78158f rsyncd.initd c7527e289c81bee5e4c14b890817cdb47d14f0d26dd8dcdcbe85c7199cf27c57a0b679bdd1b115bfe00de77b52709cc5d97522a47f63c1bb5104f4a7220c9961 rsyncd.confd 3db8a2b364fc89132af6143af90513deb6be3a78c8180d47c969e33cb5edde9db88aad27758a6911f93781e3c9846aeadc80fffc761c355d6a28358853156b62 rsyncd.conf diff --git a/system/ruby/APKBUILD b/system/ruby/APKBUILD index c01d0fec0..93cb3a460 100644 --- a/system/ruby/APKBUILD +++ b/system/ruby/APKBUILD @@ -42,7 +42,7 @@ # - CVE-2020-8130 # pkgname=ruby -pkgver=3.4.1 +pkgver=3.4.4 _abiver="${pkgver%.*}.0" pkgrel=0 pkgdesc="An object-oriented language for quick and easy programming" @@ -274,7 +274,7 @@ _mvgem() { done } -sha512sums="8d2e34117696f9debf463ae1eed288fdbb5c1a12e32800e901b69218e3b7302a0066052077e2ebca851e3a635296199bd5a10437eea1d6f787f69a77bb865680 ruby-3.4.1.tar.xz +sha512sums="0d258cf790daad424c866404b5cbdc8adba0e4e13764847a89adf2335229e5184095c9f3e9594705897697e48bcc322d9a9f919b04047abb2075daca9fce8871 ruby-3.4.4.tar.xz a142199140fa711a64717429e9069fd2082319abaf4b129f561db374b3bc16e2a90cc4c849b5d28334505d1c71fed242aef3c44d983da3513d239dcb778673a5 rubygems-avoid-platform-specific-gems.patch 814fe6359505b70d8ff680adf22f20a74b4dbd3fecc9a63a6c2456ee9824257815929917b6df5394ed069a6869511b8c6dce5b95b4acbbb7867c1f3a975a0150 test_insns-lower-recursion-depth.patch 3ffc034c01110ee5531265333ca5ee8d61d08131843fe3004c5b34c88c9c1b32cb4ed89574f393177c8bd526e9c15da61ab344f93adf07b9148c561ee19e2eb5 fix-get_main_stack.patch" diff --git a/user/samurai/APKBUILD b/system/samurai/APKBUILD index 3bcd50c72..3bcd50c72 100644 --- a/user/samurai/APKBUILD +++ b/system/samurai/APKBUILD diff --git a/user/samurai/CVE-2021-30218.patch b/system/samurai/CVE-2021-30218.patch index 1d6663865..1d6663865 100644 --- a/user/samurai/CVE-2021-30218.patch +++ b/system/samurai/CVE-2021-30218.patch diff --git a/user/samurai/CVE-2021-30219.patch b/system/samurai/CVE-2021-30219.patch index fbc97b03d..fbc97b03d 100644 --- a/user/samurai/CVE-2021-30219.patch +++ b/system/samurai/CVE-2021-30219.patch diff --git a/system/scdoc/APKBUILD b/system/scdoc/APKBUILD index d496dce6a..348ccc385 100644 --- a/system/scdoc/APKBUILD +++ b/system/scdoc/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=scdoc -pkgver=1.11.2 +pkgver=1.11.3 pkgrel=0 pkgdesc="Small man page generator" url="https://git.sr.ht/~sircmpwn/scdoc" @@ -21,4 +21,4 @@ package() { make PREFIX=/usr DESTDIR=$pkgdir install } -sha512sums="3fbf1a74b222dd88410636124e4b6ca73f7e77f67d512cf430a878fefcaa5c6c13a1e9f6c0c9654de15353f94bb1bd528665acebc2293bebb325501d1eb6cda3 scdoc-1.11.2.tar.gz" +sha512sums="fbecc505b44c396890c53c05183d34336160dbd02993ee120421fc6e2a3ec78ba349747e8acfe97af956a0081c923309290ff97fb7babafbc3ca8addc9ec92f9 scdoc-1.11.3.tar.gz" diff --git a/system/strace/APKBUILD b/system/strace/APKBUILD index 7894f3ae4..55b7da853 100644 --- a/system/strace/APKBUILD +++ b/system/strace/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=strace -pkgver=6.9 +pkgver=6.15 pkgrel=0 pkgdesc="A useful diagnositic, instructional, and debugging tool" url="https://strace.io/" @@ -54,5 +54,5 @@ package() { make -j1 DESTDIR="$pkgdir" install } -sha512sums="aa80b9b6ec41082f1710f2327f7a22003cdce6d95ab0e5083ada9c5b7b40b8f7cbc7dc6c017878dc0e42c52e405e98ed1488c51d17bc3538989ff4be2c2411e1 strace-6.9.tar.xz +sha512sums="5bb21b55d52aab6883821d4aea9449138d5efafac99f72b3831de710ed1ece11bb4a21b16fab97d772397213f43d06072e1d467ae03c38198ead0e65ddcd6ab5 strace-6.15.tar.xz 6616161b6e015c5e56b7171995d28ab63a865156b7f9826b4be26beaac863f0ebc341014910ea53157a810c6afafc10ce80b2d31f4d649d28718a9be78795c6c nlattr-fix.patch" diff --git a/system/sudo/APKBUILD b/system/sudo/APKBUILD index 8010e5e88..7bcd318e1 100644 --- a/system/sudo/APKBUILD +++ b/system/sudo/APKBUILD @@ -3,7 +3,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Horst Burkhardt <horst@adelielinux.org> pkgname=sudo -pkgver=1.9.10 +pkgver=1.9.17 if [ "${pkgver%_*}" != "$pkgver" ]; then _realver=${pkgver%_*}${pkgver#*_} else @@ -78,4 +78,4 @@ package() { rm -rf "$pkgdir"/var/run } -sha512sums="65cf92b67b64413cb807da8b9602fc90b75e5b30dd1402d682ca36f276a3d6209a8a59c14e463898abc9856bc56263e5ba4bb6d44774f56a2885a9eea4a35375 sudo-1.9.10.tar.gz" +sha512sums="e94df174ca63a828d953d8400d7e68f8cb86119ca1cd845567b7b452d09bef806a6bd0a6cfc232acfdf7c85aa915f2897b29990c7df89b36c92c62aa469cd7a7 sudo-1.9.17.tar.gz" diff --git a/system/sysvinit/APKBUILD b/system/sysvinit/APKBUILD index 1532dfd35..bc7db3d00 100644 --- a/system/sysvinit/APKBUILD +++ b/system/sysvinit/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=sysvinit -pkgver=3.11 +pkgver=3.14 pkgrel=0 pkgdesc="System V-style init programs" url="https://savannah.nongnu.org/projects/sysvinit" @@ -14,8 +14,9 @@ install="sysvinit.post-upgrade sysvinit.post-install" provides="/sbin/init=0" subpackages="$pkgname-doc" source="https://github.com/slicer69/sysvinit/releases/download/$pkgver/$pkgname-$pkgver.tar.xz - inittab-2.88 + bounds.patch utmpx.patch + inittab-2.88 s6-svscanboot " @@ -71,7 +72,8 @@ package() { _install_s6_stuff } -sha512sums="12e2d11b76702b493e8f083e5409b98a1daf41a8d9fb7ef8a36416bb0310d5a26b92eaee0c9396c03cf08842258b953f79541ae147ef730f3bc54530da4d1029 sysvinit-3.11.tar.xz +sha512sums="d2b7279523b301b3d7325c5cf9acef8f9fcc35199dc0f284eee22306c2cb96b42f9a27375a7877033c4d3b16b30fb32c1be32c3665fd2cba183630e008a682a3 sysvinit-3.14.tar.xz +f845750b21d5504e56b0841f3b299ae33770399456da9db6a155d1294a1f27daa68ccc4b078ccb83f1f72d559b87674207b6703043e9a85d1479ec857ecf2c09 bounds.patch +033fb17f7e02bddf1068e5565e3a578abfd2c8caba4a67640a4da8d25e40fd38d3d2d624ebf8818465ebd1d0cd83424608df57c57730ab4283a20aead9023f70 utmpx.patch 87668b49690091a227c0384fd2400f1006d24c27cc27a25efa7eba56839ccb1eead00b58ce4b654eab9c0208d68aa2cbb888fd5f2990905845aa9688442a69a0 inittab-2.88 -78d04e33099de13b40243ac0be3e93bf4f2addcee3155c799e711ffec0dc003bf416d956d302aba92ec3e80d2dc6b2d73da0133e3466fce49531f672190ca2d9 utmpx.patch e52fd49daa5abfc583f1973f3428b1e00a71e7136a8bc6418e94b345d53ef250b3b3c3bee389fe37872b26a78d0957ae852e221428f33b2c728dfd3d50b59634 s6-svscanboot" diff --git a/system/sysvinit/bounds.patch b/system/sysvinit/bounds.patch new file mode 100644 index 000000000..bf30d56e2 --- /dev/null +++ b/system/sysvinit/bounds.patch @@ -0,0 +1,19 @@ +--- sysvinit-3.14/src/dowall.c.old 2025-06-24 02:38:56.414501867 -0500 ++++ sysvinit-3.14/src/dowall.c 2025-06-25 01:36:34.943110622 -0500 +@@ -44,6 +44,7 @@ + #ifndef HOST_NAME_MAX + # define HOST_NAME_MAX 255 + #endif ++#define MIN(a,b) (((a)<(b))?(a):(b)) + + static sigjmp_buf jbuf; + +@@ -226,7 +227,7 @@ + utmp->ut_user[0] == 0) continue; + if (strncmp(utmp->ut_line, _PATH_DEV, strlen(_PATH_DEV)) == 0) { + term[0] = 0; +- strncat(term, utmp->ut_line, sizeof(term)-1); ++ strncat(term, utmp->ut_line, MIN(UT_LINESIZE,sizeof(term)-1)); + } else + snprintf(term, sizeof(term), _PATH_DEV "%.*s", + UT_LINESIZE, utmp->ut_line); diff --git a/system/sysvinit/utmpx.patch b/system/sysvinit/utmpx.patch index e839a0834..195532b4c 100644 --- a/system/sysvinit/utmpx.patch +++ b/system/sysvinit/utmpx.patch @@ -10,7 +10,7 @@ diff -ur a/src/dowall.c b/src/dowall.c #include <pwd.h> #include <fcntl.h> #include <signal.h> -@@ -160,7 +160,7 @@ +@@ -161,7 +161,7 @@ { FILE *tp; struct sigaction sa; @@ -19,7 +19,7 @@ diff -ur a/src/dowall.c b/src/dowall.c time_t t; char term[UT_LINESIZE+ strlen(_PATH_DEV) + 1]; char line[256]; -@@ -217,9 +217,9 @@ +@@ -220,9 +220,9 @@ sigemptyset(&sa.sa_mask); sigaction(SIGALRM, &sa, NULL); @@ -31,7 +31,7 @@ diff -ur a/src/dowall.c b/src/dowall.c if(utmp->ut_type != USER_PROCESS || utmp->ut_user[0] == 0) continue; if (strncmp(utmp->ut_line, _PATH_DEV, strlen(_PATH_DEV)) == 0) { -@@ -253,7 +253,7 @@ +@@ -256,7 +256,7 @@ if (fd >= 0) close(fd); if (tp != NULL) fclose(tp); } @@ -105,7 +105,7 @@ diff -ur a/src/init.c b/src/init.c char *console_dev; /* Console device. */ int pipe_fd = -1; /* /run/initctl */ int did_boot = 0; /* Did we already do BOOT* stuff? */ -@@ -2332,12 +2328,6 @@ +@@ -2367,12 +2363,6 @@ static void redo_utmp_wtmp(void) { @@ -118,7 +118,7 @@ diff -ur a/src/init.c b/src/init.c if ((wrote_wtmp_reboot == 0) || (wrote_utmp_reboot == 0)) write_utmp_wtmp("reboot", "~~", 0, BOOT_TIME, "~"); -@@ -2879,8 +2869,6 @@ +@@ -2914,8 +2904,6 @@ console_init(); if (!reload) { @@ -127,7 +127,7 @@ diff -ur a/src/init.c b/src/init.c /* Close whatever files are open, and reset the console. */ close(0); close(1); -@@ -2894,13 +2882,6 @@ +@@ -2929,13 +2917,6 @@ setenv("PATH", PATH_DEFAULT, 1 /* Overwrite */); /* @@ -198,7 +198,7 @@ diff -ur a/src/shutdown.c b/src/shutdown.c #include <syslog.h> #include "paths.h" #include "reboot.h" -@@ -355,6 +351,9 @@ +@@ -358,6 +354,9 @@ for(i = 3; i < 20; i++) close(i); close(255); @@ -208,7 +208,7 @@ diff -ur a/src/shutdown.c b/src/shutdown.c /* First idle init. */ if (kill(1, SIGTSTP) < 0) { fprintf(stderr, "shutdown: can't idle init: %s.\r\n", strerror(errno)); -@@ -381,9 +380,6 @@ +@@ -384,9 +383,6 @@ /* Give init the chance to collect zombies. */ /* sleep(1); */ @@ -218,7 +218,7 @@ diff -ur a/src/shutdown.c b/src/shutdown.c /* This is for those who have quota installed. */ #if defined(ACCTON_OFF) # if (ACCTON_OFF > 1) && (_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)) -@@ -514,7 +510,7 @@ +@@ -517,7 +513,7 @@ struct sigaction sa; struct tm *lt; struct stat st; @@ -227,7 +227,7 @@ diff -ur a/src/shutdown.c b/src/shutdown.c time_t t, target_time; char *halttype; char *downusers[32]; -@@ -634,7 +630,7 @@ +@@ -637,7 +633,7 @@ fclose(fp); /* Now walk through /var/run/utmp to find logged in users. */ @@ -236,7 +236,7 @@ diff -ur a/src/shutdown.c b/src/shutdown.c /* See if this is a user process on a VC. */ if (ut->ut_type != USER_PROCESS) continue; -@@ -660,7 +656,7 @@ +@@ -663,7 +659,7 @@ break; } } diff --git a/system/tcl/APKBUILD b/system/tcl/APKBUILD index 7b4097e9b..87341d6f6 100644 --- a/system/tcl/APKBUILD +++ b/system/tcl/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: Zach van Rijn <me@zv.io> pkgname=tcl -pkgver=8.6.13 +pkgver=8.6.16 pkgrel=0 pkgdesc="The Tcl scripting language" url="https://tcl.sourceforge.net/" @@ -72,5 +72,5 @@ dev() { done } -sha512sums="b597f6b62fd71457e96445401a4f8aa662c2678de8a52127c60b0abddebf1fd4452ba5364420902a15b263c0118fc91167550fd1ad2d24fa4ab2204e372c027e tcl8.6.13-src.tar.gz +sha512sums="434c92f8181fb8dca6bc065b0f1f5078779086f19adf008818c90a3108596c63465ef43e9f3c1cfb3d4151a9de244d0bf0e6ee5b40e714b1ddca4a78eb43050b tcl8.6.16-src.tar.gz cd52cbe80fd2be227c9018dbe38fa0888302293402e7a57f2e231c195b7c1902f1b58bc87d19c9d123915ca757e871abf084c0ef23b1a7f187bc03ba93904cc2 tcl-stat64.patch" diff --git a/system/texinfo/APKBUILD b/system/texinfo/APKBUILD index e32cf71d6..66d457c0f 100644 --- a/system/texinfo/APKBUILD +++ b/system/texinfo/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=texinfo -pkgver=7.0.3 +pkgver=7.2 pkgrel=0 pkgdesc="Utilities to manage on-line documentation" url="https://www.gnu.org/software/texinfo/" @@ -30,4 +30,4 @@ package() { gzip "$pkgdir"/usr/share/info/* } -sha512sums="7d14f7458f2b7d0ee0b740e00a5fc2a9d61d33811aa5905d649875ec518dcb4f01be46fb0c46748f7dfe36950597a852f1473ab0648d5add225bc8f35528a8ff texinfo-7.0.3.tar.xz" +sha512sums="8e67337ae12a552fc620c43725507a4978710ea6630e98b0f5e98eb3f79a90e191dde5225699aa6217c26f171d277461f76150f0459cd07b40c3234d2f3d89bf texinfo-7.2.tar.xz" diff --git a/system/tzdata/APKBUILD b/system/tzdata/APKBUILD index de3eb0a51..0261ba76b 100644 --- a/system/tzdata/APKBUILD +++ b/system/tzdata/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=tzdata -pkgver=2023c +pkgver=2025b pkgrel=0 pkgdesc="Time zone data" url="https://www.iana.org/time-zones" @@ -47,5 +47,5 @@ package() { rm -f "$pkgdir"/usr/share/zoneinfo/localtime } -sha512sums="fa18bae9c0e7c061bc9d5f5f2eb9967f0e4ddb2baafdee9887fa30cd0c60f4aa6f21eacffb17df0d59d26ff54d08c5dcefa98159309eba497e86443624913a82 tzcode2023c.tar.gz -608bd286ebcbd0004cfdc1da183273f08aff61f90c8867661154453d77a05d421e4c46ad6d066a1fe2e87d5c82ec0f1c0224667a3b35f3180a3eb7f6ff84cbf5 tzdata2023c.tar.gz" +sha512sums="19826b12968c10fc4db7e4b07ba782bfb8590eeebaec6f719d74b92a2e642ab817bd72bceff0015ce52a838edfdb00753b3cd87dd84b35abf2606e5bee445f76 tzcode2025b.tar.gz +7d83741f3cae81fac8131994b43c55b6da7328df18b706e5ee40e9b3212bc506e6f8fc90988b18da424ed59eff69bce593f2783b7b5f18eb483a17aeb94258d6 tzdata2025b.tar.gz" diff --git a/system/util-linux/0000-utmps-paths.patch b/system/util-linux/0000-utmps-paths.patch index 861e38ff3..709a8e208 100644 --- a/system/util-linux/0000-utmps-paths.patch +++ b/system/util-linux/0000-utmps-paths.patch @@ -18,7 +18,7 @@ diff -rNU3 util-linux-2.38.1.old/include/pathnames.h util-linux-2.38.1/include/p diff -rNU3 util-linux-2.38.1.old/login-utils/login.c util-linux-2.38.1/login-utils/login.c --- util-linux-2.38.1.old/login-utils/login.c 2022-05-11 08:13:10.903531622 +0000 +++ util-linux-2.38.1/login-utils/login.c 2023-08-30 14:57:20.930021550 +0000 -@@ -71,6 +71,9 @@ +@@ -72,6 +72,9 @@ # include <libaudit.h> #endif @@ -28,7 +28,7 @@ diff -rNU3 util-linux-2.38.1.old/login-utils/login.c util-linux-2.38.1/login-uti #include "c.h" #include "pathnames.h" #include "strutils.h" -@@ -623,7 +626,8 @@ +@@ -630,7 +633,8 @@ sizeof(ut.ut_addr_v6)); } @@ -38,7 +38,7 @@ diff -rNU3 util-linux-2.38.1.old/login-utils/login.c util-linux-2.38.1/login-uti } #ifdef HAVE_LIBAUDIT -@@ -731,7 +735,7 @@ +@@ -742,7 +746,7 @@ struct utmpx *utp = NULL; struct timeval tv = { 0 }; @@ -47,7 +47,7 @@ diff -rNU3 util-linux-2.38.1.old/login-utils/login.c util-linux-2.38.1/login-uti setutxent(); /* Find pid in utmp. -@@ -794,7 +798,8 @@ +@@ -805,7 +809,8 @@ pututxline(&ut); endutxent(); diff --git a/system/util-linux/APKBUILD b/system/util-linux/APKBUILD index b532a613b..4357a8cd3 100644 --- a/system/util-linux/APKBUILD +++ b/system/util-linux/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Leonardo Arena <rnalrd@alpinelinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=util-linux -pkgver=2.38.1 +pkgver=2.41.1 case $pkgver in *.*.*) _v=${pkgver%.*};; @@ -56,6 +56,7 @@ build() { --disable-kill \ --disable-login \ --disable-chfn-chsh \ + --disable-liblastlog2 \ --without-python make } @@ -98,6 +99,6 @@ libmount() { mv "$pkgdir"/lib/libmount.so.* "$subpkgdir"/lib/ } -sha512sums="07f11147f67dfc6c8bc766dfc83266054e6ede776feada0566b447d13276b6882ee85c6fe53e8d94a17c03332106fc0549deca3cf5f2e92dda554e9bc0551957 util-linux-2.38.1.tar.xz +sha512sums="12cf37ab2d62d0378b16a40e0194ef7131ef1ad06737cca3f169cfc04b9da08a4233076c819b30705e8fb2c3b8d91a1d83aac4f036ce58b9cf5928f545e511a2 util-linux-2.41.1.tar.xz 876bb9041eca1b2cca1e9aac898f282db576f7860aba690a95c0ac629d7c5b2cdeccba504dda87ff55c2a10b67165985ce16ca41a0694a267507e1e0cafd46d9 ttydefaults.h -b1d992b58af516bd4c19dfa3f7df2680f4d0c31608fd20b5ae5eab23138df00666a8b1895d8d19d8afb66ce5f535f04a1ce81b248ae69b1f68c991d6549e6726 0000-utmps-paths.patch" +eea323f157040e7cc4a12dc98d3a2d4fe3f719307d8de164dc1673ac4b6fdd92cb0173cd3cfb2746aff3069dff7ee3fe660a350aa1ae6bc8745f5a6b11ad80ab 0000-utmps-paths.patch" diff --git a/system/utmps/APKBUILD b/system/utmps/APKBUILD index 75c22fb25..07767cc33 100644 --- a/system/utmps/APKBUILD +++ b/system/utmps/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: Laurent Bercot <ska-adelie@skarnet.org> pkgname=utmps -pkgver=0.1.3.0 +pkgver=0.1.3.1 pkgrel=0 pkgdesc="A secure utmp/wtmp implementation" url="https://skarnet.org/software/utmps/" @@ -60,7 +60,7 @@ openrc() { ln -s ../../init.d/utmps "$rldir/utmps" } -sha512sums="307010371d8c7d9e56e1823c599d84f44719e6050ccf30799f08d7a6c071ca2fbc46ef236d5e2422dc1b96f8a7582ae735635302c28becd6aac3263302c385d9 utmps-0.1.3.0.tar.gz +sha512sums="9dd4ba69d771bc85298de7789140d2603a2dd8ce38cf71e21725c2cd3b5986caddac4f2bba1a72a3956af055a695af5bf486f3eb7427ffa6fcf6fb1f8e054a27 utmps-0.1.3.1.tar.gz 0ec30284c64c6ea9f25142c5f4a643bd48b137fe85781b650104f5137ffa4dfc35ca7be3e41e3acd3403ebe1d8c5378073afa4e2f3607d3d794fcd9f98ed51c4 utmpd.run 9e875a5cd37be531320a8e582afed2c980dd0a1bdfc2f6f3d826d5e5389fc6ab93f973ed1506edb23f4c73cf24a2357aefe856148eaacff86c2aafe376c575e2 wtmpd.run 503bdbb3d244243934b9b4e3deea0bf92a95f88417c822ad9cf6202584d4724d5e182a0d88d7f09069e435a8a97230b85d2b264736c85c893da193fd5ec34c71 btmpd.run diff --git a/system/xmlto/APKBUILD b/system/xmlto/APKBUILD index cbba646f5..ff9811e02 100644 --- a/system/xmlto/APKBUILD +++ b/system/xmlto/APKBUILD @@ -2,18 +2,19 @@ # Contributor: Molly Miller <adelie@m-squa.red> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=xmlto -pkgver=0.0.28 -pkgrel=3 +pkgver=0.0.29 +pkgrel=0 pkgdesc="Tool for converting XML files to various formats" url="https://pagure.io/xmlto/" arch="all" license="GPL-2.0+" depends="libxslt perl-yaml-syck perl-test-pod bash docbook-xsl" -makedepends="bash" +makedepends="autoconf automake bash" subpackages="$pkgname-doc" source="https://releases.pagure.org/xmlto/xmlto-$pkgver.tar.bz2" build() { + autoreconf -vif ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -31,4 +32,4 @@ package() { make -j1 DESTDIR="$pkgdir" install } -sha512sums="6e0c4968d4f1b7a3b132904182aa72a73f6167553eabdeb65cfafa6295ef7b960541685769d04144207963cca77b0c44db4f9fbb2796348ffcb37b3b399f18f1 xmlto-0.0.28.tar.bz2" +sha512sums="fcf76a4cbe22d09126924d3e4a735ad5e448c22aa3b553e54766ecc7579f5b0d467b52e79301e495201fdc955de411a2a26081b8089643851f3794efa8b55158 xmlto-0.0.29.tar.bz2" diff --git a/system/xz/APKBUILD b/system/xz/APKBUILD index 0b52b0f85..c60ca30be 100644 --- a/system/xz/APKBUILD +++ b/system/xz/APKBUILD @@ -1,12 +1,12 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=xz -pkgver=5.4.2 +pkgver=5.8.1 pkgrel=0 pkgdesc="Library and command line tools for XZ and LZMA compressed files" url="https://tukaani.org/xz/" arch="all" -license="Public-Domain AND LGPL-2.1+" +license="0BSD AND LGPL-2.1+" depends="" makedepends="" subpackages="$pkgname-doc $pkgname-dev $pkgname-lang $pkgname-libs" @@ -43,5 +43,5 @@ package() { "$pkgdir"/usr/share/licenses/$pkgname } -sha512sums="149f980338bea3d66de1ff5994b2b236ae1773135eda68b62b009df0c9dcdf5467f8cb2c06da95a71b6556d60bd3d21f475feced34d5dfdb80ee95416a2f9737 xz-5.4.2.tar.gz -54bbe1f8aae954d2550941f69a509e210d0f6bee2393494dcf445a14d14046953c125177b4cc9fa79ec55b81379dfe4ae0187f106abd2f3cc4331782a5c0b4fd dont-use-libdir-for-pkgconfig.patch" +sha512sums="151b2a47fdf00274c4fd71ceada8fb6c892bdac44070847ebf3259e602b97c95ee5ee88974e03d7aa821ab4f16d5c38e50dfb2baf660cf39c199878a666e19ad xz-5.8.1.tar.gz +e70d945e7a6f572c073312a1807f4a6384d670e61a637ed291b1ed2324d876e533902dee7f4e18e8d0fc86bd23d0703aaebc611d32839c9c6f6b016f544669ee dont-use-libdir-for-pkgconfig.patch" diff --git a/system/xz/dont-use-libdir-for-pkgconfig.patch b/system/xz/dont-use-libdir-for-pkgconfig.patch index c6b1c480c..332d1e79c 100644 --- a/system/xz/dont-use-libdir-for-pkgconfig.patch +++ b/system/xz/dont-use-libdir-for-pkgconfig.patch @@ -11,10 +11,10 @@ --- xz-5.2.4/src/liblzma/Makefile.in.old 2018-04-29 16:01:26.000000000 +0000 +++ xz-5.2.4/src/liblzma/Makefile.in 2018-07-19 02:18:33.600000000 +0000 -@@ -879,7 +879,7 @@ +@@ -883,7 +883,7 @@ - liblzma_la_LDFLAGS = -no-undefined -version-info 9:2:4 $(am__append_1) \ - $(am__append_2) $(am__append_48) + liblzma_la_LDFLAGS = -no-undefined -version-info 13:1:8 \ + $(am__append_1) $(am__append_2) $(am__append_47) -pkgconfigdir = $(libdir)/pkgconfig +pkgconfigdir = /usr/lib/pkgconfig pkgconfig_DATA = liblzma.pc diff --git a/system/zsh/APKBUILD b/system/zsh/APKBUILD index 6ae71a896..f5d0ba889 100644 --- a/system/zsh/APKBUILD +++ b/system/zsh/APKBUILD @@ -3,8 +3,8 @@ # Contributor: Natanael Copa <ncopa@alpinelinux.org> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=zsh -pkgver=5.8.1 -pkgrel=1 +pkgver=5.9 +pkgrel=0 pkgdesc="A very advanced and programmable command interpreter (shell)" url="https://www.zsh.org/" arch="all" @@ -14,6 +14,7 @@ makedepends_host="ncurses-dev pcre-dev utmps-dev" install="zsh.post-install zsh.post-upgrade zsh.pre-deinstall" # Note the custom fetch() function source="https://www.zsh.org/pub/$pkgname-$pkgver.tar.xz + datetime-test-fix.patch fix-deprecated-egrep.patch skel @@ -51,7 +52,7 @@ _comps="android-tools:Unix/_adb rsync:Unix/_rsync subversion:Unix/_subversion tmux:Unix/_tmux - zfs:Unix/_zfs*:Unix/_zpool" + " for _i in $_comps; do subpackages="$subpackages ${_i%%:*}-zsh-completion:_completion:noarch" done @@ -114,8 +115,8 @@ check() { rm "$builddir"/Test/B03print.ztst # Not guaranteed to work portably (requires atime) rm "$builddir"/Test/C02cond.ztst - # PPC? - rm "$builddir"/Test/V09datetime.ztst + # Breaks with musl locale: https://zsh.org/workers/50246 + rm "$builddir"/Test/E02xtrace.ztst make test } @@ -181,8 +182,9 @@ _submv() { mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/ } -sha512sums="f54a5a47ed15d134902613f6169c985680afc45a67538505e11b66b348fcb367145e9b8ae2d9eac185e07ef5f97254b85df01ba97294002a8c036fd02ed5e76d zsh-5.8.1.tar.xz -fdb5c46637c7e981c0889ea9f3acd450dcd51deab57bbce11c3778c0811a36fe16dfbe06aa997c1eaa4e5c056e99fb747d4a2c93b72b9acad8e590923bfaa4fe fix-deprecated-egrep.patch +sha512sums="d9138b7f379ad942a5f46819d2dd52d31f3a1129f2a0d1b53d4c5cd43c318b60396da6d37c57c477b8e958fb750209aca0ae93f8c9dd42ac958de006a0ff067e zsh-5.9.tar.xz +e1d0f931a7dd12343741226f81532ca402336eaed1d255b434aebbeecdc386dfc7a13e7390c74c40be88e0f5093c3aa0bca7fb5718027daaae9187b33d3f5e34 datetime-test-fix.patch +08bf4c2f14fd04f6844dc3d6d2488bd109e5ea488a5a22a263829ae52264f63a4b3978a7840b4c1e1dd0b9a63e8e7e92303769f0ce4a8d991a9d283cdd8e70c5 fix-deprecated-egrep.patch d820fcf65bb3c52f23e968110b5df1188fc0b64079312f64d22ffe35de3b4f3055d4d629b3b0f97a1bfaddf62dbc80676af31c3a1a79645632082abfc854cf97 skel 63167188e22bf8933eb420a5ba068ab897531b90c8d8b8ec892f26a9180267a971013046a72b810d5b9d3add427cf650df608b0e008cd0789681ed1371b172c3 zprofile 1675e016f97333cad89b587f4292d81b6bc10e27b75482e3e0c3808539c95bd49b907b6579fb98d817f77f2f2384c0df5afa3e2b6f43b6ae9b466925cd9ccffc zshrc" diff --git a/system/zsh/datetime-test-fix.patch b/system/zsh/datetime-test-fix.patch new file mode 100644 index 000000000..3703fb417 --- /dev/null +++ b/system/zsh/datetime-test-fix.patch @@ -0,0 +1,14 @@ +# Ref: https://bugs.gentoo.org/833981 +--- a/Test/V09datetime.ztst ++++ b/Test/V09datetime.ztst +@@ -79,8 +79,8 @@ + >1973^@03^@03 + + # We assume '%@' is not a valid format on any OSs. +-# The result can be '%@' (Linux), '@' (BSDs) or an error (Cygwin). +- [[ $(strftime '%@' 0 2> /dev/null) == (%|)@ || $? != 0 ]] ++# The result can be '%@' (Linux), '\n' (Linux with musl libc) '@', (BSDs) or an error (Cygwin). ++ [[ $(strftime '%@' 0 2> /dev/null) == (%|)@ || $? != 0 || $'\n' ]] + 0:bad format specifier + + # This test may fail at 23:59:59.xxx on New Year's Eve :/ diff --git a/system/zsh/fix-deprecated-egrep.patch b/system/zsh/fix-deprecated-egrep.patch index 58d141002..c5ec96f7b 100644 --- a/system/zsh/fix-deprecated-egrep.patch +++ b/system/zsh/fix-deprecated-egrep.patch @@ -25,7 +25,7 @@ diff -ur a/Test/D07multibyte.ztst b/Test/D07multibyte.ztst diff -ur a/Test/E01options.ztst b/Test/E01options.ztst --- a/Test/E01options.ztst 2023-04-06 03:22:25.019387496 +0000 +++ b/Test/E01options.ztst 2023-04-06 03:22:45.338578392 +0000 -@@ -649,7 +649,7 @@ +@@ -651,7 +651,7 @@ >noktarg1 >0 1 @@ -37,7 +37,7 @@ diff -ur a/Test/E01options.ztst b/Test/E01options.ztst diff -ur a/Test/V07pcre.ztst b/Test/V07pcre.ztst --- a/Test/V07pcre.ztst 2023-04-06 03:22:25.019387496 +0000 +++ b/Test/V07pcre.ztst 2023-04-06 03:24:15.802995141 +0000 -@@ -13,7 +13,7 @@ +@@ -12,7 +12,7 @@ unset -m LC_\* mb_ok= langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8 @@ -61,8 +61,8 @@ diff -ur a/Test/X02zlevi.ztst b/Test/X02zlevi.ztst diff -ur a/Test/X03zlebindkey.ztst b/Test/X03zlebindkey.ztst --- a/Test/X03zlebindkey.ztst 2023-04-06 03:22:25.015387655 +0000 +++ b/Test/X03zlebindkey.ztst 2023-04-06 03:24:02.531518995 +0000 -@@ -5,7 +5,7 @@ - %prep +@@ -6,7 +6,7 @@ + unset -m LC_\* ZSH_TEST_LANG= langs=(en_{US,GB}.{UTF-,utf}8 en.UTF-8 - $(locale -a 2>/dev/null | egrep 'utf8|UTF-8')) diff --git a/system/zstd/APKBUILD b/system/zstd/APKBUILD index 6ed1b2fd3..6c41ccc29 100644 --- a/system/zstd/APKBUILD +++ b/system/zstd/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=zstd -pkgver=1.5.4 +pkgver=1.5.7 pkgrel=0 pkgdesc="Fast real-time compression algorithm" url="https://facebook.github.io/zstd/" @@ -18,15 +18,15 @@ source="https://github.com/facebook/zstd/releases/download/v$pkgver/zstd-$pkgver # - CVE-2021-24032 build() { - make PREFIX="/usr" + make PREFIX="/usr" LIBDIR="/lib" PKGCONFIGDIR="/usr/lib/pkgconfig" } check() { - make PREFIX="/usr" check + make PREFIX="/usr" LIBDIR="/lib" PKGCONFIGDIR="/usr/lib/pkgconfig" check } package() { - make PREFIX="/usr" DESTDIR="$pkgdir" install + make PREFIX="/usr" LIBDIR="/lib" PKGCONFIGDIR="/usr/lib/pkgconfig" DESTDIR="$pkgdir" install } -sha512sums="2896a6dd6b60cc251720356babcbab6018c874eb2149121b26e28041496fc355a9cb5fd1b39c91558fcfbafb789b3d721264a0f9b5734f893d5f3cdf97016394 zstd-1.5.4.tar.gz" +sha512sums="b4de208f179b68d4c6454139ca60d66ed3ef3893a560d6159a056640f83d3ee67cdf6ffb88971cdba35449dba4b597eaa8b4ae908127ef7fd58c89f40bf9a705 zstd-1.5.7.tar.gz" diff --git a/user/arcticfox/APKBUILD b/user/arcticfox/APKBUILD index 78349f11a..1bdde8db9 100644 --- a/user/arcticfox/APKBUILD +++ b/user/arcticfox/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=arcticfox -pkgver=45.1 +pkgver=46.0 pkgrel=0 pkgdesc="Arctic Fox web browser (fork of Firefox with PPC support)" url="https://github.com/rmottola/Arctic-Fox/wiki" @@ -21,6 +21,7 @@ source="arcticfox-$pkgver.tar.gz::https://github.com/rmottola/Arctic-Fox/archive arcticfox.desktop hunspell.patch + icu-77.patch override-cxx-version.patch stackwalk-x86-ppc.patch " @@ -127,10 +128,11 @@ dev() { default_dev } -sha512sums="0b24bc8cf201a78517c7934c119b1e21d511068e8ea06c8b7f5ce65e5867e9f091cc0c8c65b0f8c78e8637d27dd3d505126d355c8ca5693f1b0417020b838800 arcticfox-45.1.tar.gz +sha512sums="946e3431d6c89dfe613bfa3982bb606e62fa21966cb5adb2afd59c9b6d775b8c00df5d9fe4562b8e1bf084c6480e01cbecc22dc447c669457f880859d981bb57 arcticfox-46.0.tar.gz ce5312b4fcf07d0dd0496366f6e3be406ef19a389f67a3eb8e3df62232d9eb08ed1a5e212dee1725d907bb025bc3da19b6d0b0d97210893846eb8206890fe8de mozconfig 27ea43eb45fc68f3d2469d5f07636e10801dee11635a430ec8ec922ed790bb426b072da94df885e4dfa1ea8b7a24f2f56dd92f9b0f51e162330f161216bd6de6 Python-2.7.15.tar.xz d4f9a2a64cb8c1e679a13429e62cfd2e8a44cf54896c2999258571ab990711fbc3d078ce655efd90437e60ef113af1e5277f416f5cf78dfea21f82c481f6929b arcticfox.desktop 50cc077df6d17358f5dcffcabb1a75087b58ac46f60d9d5fc8f2d407e93a26d89778e4c09a5203f2a55bc9f9ddb247f4482483d30f495bc9e3393fad37a322d7 hunspell.patch -bf63b06c030b388711554a4eff36fc50f2af802b59a9f1d7c5b42f11fcc1dd806d53980bdd89bf9518fc51ba25a812c892dfaf47e9d50b33a82ebad9462da92a override-cxx-version.patch -a0f97b8b3e5b0d93b155f1678a3d5984b52ede440202656d35237a6e7025b4a1315c114a1a87c3974d0d43b0f637e186b2be6422c44ba5f111ede53893e39c54 stackwalk-x86-ppc.patch" +db462cb571a9567f7c5e1c9822dba258fcfa578024be8d66f55331d421a3af3ad6d3a37e61e26c3d117c9caf347c7f5f41f18d6ce984f5dabfd4cdd7679b8e74 icu-77.patch +808973c93ae96b73fe615407bd4fd0482e3416fd4c15b309f3590e79a8be2ebcdd4728b346454a9aeeb9a291acbf0a93e9b04f658e88c2a3bfecafdd1b18c573 override-cxx-version.patch +4eeaa0abac910a967dd281fe230f9c9bc0f808c2fcf4dd0e1c96d501c9cb64d805b93b5872b70aef6552184b15d246a5d61d260e6829141f6d0ced4fce7415fa stackwalk-x86-ppc.patch" diff --git a/user/arcticfox/icu-77.patch b/user/arcticfox/icu-77.patch new file mode 100644 index 000000000..5acb7d0b0 --- /dev/null +++ b/user/arcticfox/icu-77.patch @@ -0,0 +1,11 @@ +--- Arctic-Fox-46.0/build/autoconf/icu.m4.old 2025-06-14 08:55:06.000000000 -0500 ++++ Arctic-Fox-46.0/build/autoconf/icu.m4 2025-06-27 02:24:47.370672196 -0500 +@@ -15,7 +15,7 @@ + MOZ_SYSTEM_ICU=1) + + if test -n "$MOZ_SYSTEM_ICU"; then +- PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1) ++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1 icu-uc >= 50.1) + CFLAGS="$CFLAGS $MOZ_ICU_CFLAGS" + CXXFLAGS="$CXXFLAGS $MOZ_ICU_CFLAGS" + fi diff --git a/user/arcticfox/override-cxx-version.patch b/user/arcticfox/override-cxx-version.patch index 6486c702e..9c0f4a82b 100644 --- a/user/arcticfox/override-cxx-version.patch +++ b/user/arcticfox/override-cxx-version.patch @@ -2,7 +2,7 @@ ICU 75 requires C++17 mode as a bare minimum. --- Arctic-Fox-45.1/build/moz.configure/toolchain.configure.old 2024-09-30 14:54:44.000000000 -0500 +++ Arctic-Fox-45.1/build/moz.configure/toolchain.configure 2024-11-19 00:21:31.792210428 -0600 -@@ -339,9 +339,9 @@ +@@ -354,9 +354,9 @@ # Note: MSVC, while supporting C++11, still reports 199711L for __cplusplus. # Note: this is a strict version check because we used to always add # -std=gnu++11. diff --git a/user/arcticfox/stackwalk-x86-ppc.patch b/user/arcticfox/stackwalk-x86-ppc.patch index 377edabb6..9b7b3a73e 100644 --- a/user/arcticfox/stackwalk-x86-ppc.patch +++ b/user/arcticfox/stackwalk-x86-ppc.patch @@ -1,14 +1,16 @@ ---- Arctic-Fox-45.1/mozglue/misc/StackWalk.cpp.old 2024-09-30 19:54:44.000000000 +0000 -+++ Arctic-Fox-45.1/mozglue/misc/StackWalk.cpp 2024-10-21 11:28:48.295293788 +0000 -@@ -42,10 +42,7 @@ - (defined(XP_DARWIN) && \ - (defined(__i386) || defined(__ppc__) || defined(HAVE__UNWIND_BACKTRACE))) +--- Arctic-Fox-46.0/mozglue/misc/StackWalk.cpp.old 2025-06-14 08:55:06.000000000 -0500 ++++ Arctic-Fox-46.0/mozglue/misc/StackWalk.cpp 2025-06-27 01:59:29.291492432 -0500 +@@ -41,13 +41,7 @@ + #define MOZ_STACKWALK_SUPPORTS_MACOSX 0 + #endif --#define MOZ_STACKWALK_SUPPORTS_LINUX \ -- (defined(linux) && \ -- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \ -- defined(HAVE__UNWIND_BACKTRACE))) -+#define MOZ_STACKWALK_SUPPORTS_LINUX 0 +-#if (defined(linux) && \ +- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \ +- defined(HAVE__UNWIND_BACKTRACE))) +-#define MOZ_STACKWALK_SUPPORTS_LINUX 1 +-#else + #define MOZ_STACKWALK_SUPPORTS_LINUX 0 +-#endif #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) #define HAVE___LIBC_STACK_END 1 diff --git a/user/attica/APKBUILD b/user/attica/APKBUILD index 98c049d5e..7be10507b 100644 --- a/user/attica/APKBUILD +++ b/user/attica/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=attica -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt 5-based implementation of Open Collaboration Services" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="0c5dd2495f43b2cd4e7bd431619af249a767e5f7add913889dffcf64dc5ef8c4551e789a3a2b1850bb7c4a544144921d562e62580f0ff257b0291521dfdddf56 attica-5.94.0.tar.xz" +sha512sums="79a2378d7c8019d16692c7286e079cd29155e5f17256f189aa31e47a6b81e9b7f6ad0d5412388065b309bdc71b4efb72ebb043d587fc41d8ef2a918571c64306 attica-5.116.0.tar.xz" diff --git a/user/baloo/APKBUILD b/user/baloo/APKBUILD index 0ea50a54f..5e010883b 100644 --- a/user/baloo/APKBUILD +++ b/user/baloo/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=baloo -pkgver=5.94.0 -pkgrel=1 +pkgver=5.116.0 +pkgrel=0 pkgdesc="Semantic desktop search framework" url="https://www.kde.org/" arch="all" @@ -39,7 +39,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -56,5 +56,5 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="e79fa98d86daca96fd813e8778cfffa16488d0c5fc050eaa4b72b5bfc33243fcd777e8508425bf64ecd451e0f150c02dd18fb892d215fa6a05cb17e03bd349f7 baloo-5.94.0.tar.xz +sha512sums="956a07009fa83f852fa88a7bcabffc73343072e30650cc7000e385f73e467aa2c7c440b41715405fc0a59d68ad8e533c2587e06de8475f24b49e1fa35d8b2486 baloo-5.116.0.tar.xz a6e4965d63ea42a09f831489eb493a621a0fa4ec9528a86b0d444e4c4d7e6a3d29adad007d1286f829877ae7e6a7485a8f8e865d2b519c7192fcd72cb2f40505 initialise-variable.patch" diff --git a/user/bluedevil/APKBUILD b/user/bluedevil/APKBUILD index cc6422fe6..c91fd5f6d 100644 --- a/user/bluedevil/APKBUILD +++ b/user/bluedevil/APKBUILD @@ -1,20 +1,21 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=bluedevil -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Bluetooth framework for KDE" url="https://userbase.kde.org/Bluedevil" arch="all" license="GPL-2.0+ AND LGPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND GPL-3.0+" depends="kded kirigami2 shared-mime-info" -makedepends="bluez-qt-dev cmake extra-cmake-modules kauth-dev kcodecs-dev - kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev - kdbusaddons-dev kdeclarative-dev ki18n-dev kio-dev kitemviews-dev - kjobwidgets-dev knotifications-dev kpackage-dev kservice-dev - kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev plasma-framework-dev - qt5-qtbase-dev qt5-qtdeclarative-dev solid-dev kirigami2-dev" -subpackages="$pkgname-lang" +makedepends="bluez-qt-dev cmake extra-cmake-modules kauth-dev kcmutils-dev + kcodecs-dev kcompletion-dev kconfig-dev kconfigwidgets-dev + kcoreaddons-dev kdbusaddons-dev kdeclarative-dev ki18n-dev kio-dev + kirigami2-dev kitemviews-dev kjobwidgets-dev knotifications-dev + kpackage-dev kservice-dev kwidgetsaddons-dev kwindowsystem-dev + kxmlgui-dev plasma-framework-dev qt5-qtbase-dev qt5-qtdeclarative-dev + solid-dev" +subpackages="$pkgname-doc $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/bluedevil-$pkgver.tar.xz" build() { @@ -25,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -41,4 +42,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="02b24ba96169d733166ac6b906d995414bcf31b4a459d695ec018e7120b6e69ba01ec0f8bfa6e73d1fc8c965fc6fc285bbcefaea86a9dc230cd6a0247e566757 bluedevil-5.24.5.tar.xz" +sha512sums="86b4c2b478d4dd596a9f0954bc984329e28d5c2b54e7c957e755dc3d99eb47293c6f27c0795a8dff49dcfb7479127c1ea92a17181ac4f8a1a93dbdfc3838d061 bluedevil-5.27.12.tar.xz" diff --git a/user/bluez-qt/APKBUILD b/user/bluez-qt/APKBUILD index 4a127a78b..01499d78f 100644 --- a/user/bluez-qt/APKBUILD +++ b/user/bluez-qt/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=bluez-qt -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt integration with BlueZ" url="https://www.kde.org/" arch="all" -options="!check" # Requires running D-Bus server. +options="checkx11" license="LGPL-2.1-only OR LGPL-3.0-only" depends="" makedepends="cmake doxygen extra-cmake-modules qt5-qtbase-dev @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="9599376056de2711faba6e74f6259caa5d641f4c1dadd84967f184736d0437195d0789c322fd81dc3767bafc99232d0899e7728ba90a8c6bac7b8f482fad0ac9 bluez-qt-5.94.0.tar.xz" +sha512sums="f5bccdb75d18b2cdc66de76b23acae9821335eeec0b1f53abf009008f7aa6fe9ddee5428f366be9af872666a3a7de79daac5ee930116f554e1c9d1e664fe574b bluez-qt-5.116.0.tar.xz" diff --git a/user/breeze-grub/APKBUILD b/user/breeze-grub/APKBUILD index 1f3fa93d0..5677705d0 100644 --- a/user/breeze-grub/APKBUILD +++ b/user/breeze-grub/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=breeze-grub -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE Breeze theme for GRUB boot screen" url="https://www.kde.org/" @@ -19,4 +19,4 @@ package() { cp -r breeze "$pkgdir"/usr/share/grub/themes/ } -sha512sums="5ffba2c633f0442c6bb109df6f6ce73d527788c93487818f4c93f6140935eaeae76b7d1efb00d570a766054e2aac5bfea17f6ae7439b04c9dc0f6d8e02d10355 breeze-grub-5.24.5.tar.xz" +sha512sums="3e620c3267e7f0b67c0cf642b19d7e3766366bea617cc473646f88e31402008c0e757f9e2d07542ff4da62f2f01f5332351d7490b2f30b00c1f2da6911c2aa6f breeze-grub-5.27.12.tar.xz" diff --git a/user/breeze-gtk/APKBUILD b/user/breeze-gtk/APKBUILD index 4b7fb64f3..08aec95f3 100644 --- a/user/breeze-gtk/APKBUILD +++ b/user/breeze-gtk/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=breeze-gtk -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="GTK+ style that matches KDE Breeze" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -36,4 +36,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="6bf656a94a1c4f708ad83c9d2c23b15d29387975558494502613df07dbd298580b372a83dd16c1077d8c91057c92d74b47f279e1f92eb53fa9c8783fe98c3c29 breeze-gtk-5.24.5.tar.xz" +sha512sums="d7177acf9428c70b8ca45cca584615a4d29b1c143e42e03c3d446bc392d7aaffd2ff16ae6b8d51a35ce2930c28c5cbe964585622a341f64cf406a04e2eb97f90 breeze-gtk-5.27.12.tar.xz" diff --git a/user/breeze-icons/APKBUILD b/user/breeze-icons/APKBUILD index 03e62126e..d8a482455 100644 --- a/user/breeze-icons/APKBUILD +++ b/user/breeze-icons/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=breeze-icons -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Modern, coherent icon set for desktops" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -45,4 +45,4 @@ dark() { mv "$pkgdir"/usr/share/icons/breeze-dark "$subpkgdir"/usr/share/icons/ } -sha512sums="63f58c75864b3791c7b7ab87666c49328589cd2867f166e496553281497375d9c6054c3ddfea7c6101092d8636d35d4c263fdccd3a58b50d9dd2a14210facb5c breeze-icons-5.94.0.tar.xz" +sha512sums="3b65bd712262eb4aa0e3760d963b5ad480d840bb680ed7516b69d0d0fb6ad52dffe7c81ec2535adb36a34ec00154253570e5da8f97ef7d4d235ef0e9723751b8 breeze-icons-5.116.0.tar.xz" diff --git a/user/breeze/APKBUILD b/user/breeze/APKBUILD index 57f91a2c5..9b208752b 100644 --- a/user/breeze/APKBUILD +++ b/user/breeze/APKBUILD @@ -1,17 +1,18 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=breeze -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Default KDE Plasma 5 style" url="https://www.kde.org/" arch="all" license="(GPL-2.0-only AND GPL-3.0-only) AND MIT AND GPL-2.0+" -depends="" +depends="kirigami2" depends_dev="extra-cmake-modules" makedepends="$depends_dev cmake extra-cmake-modules python3 kcmutils-dev kconfigwidgets-dev kcoreaddons-dev kdecoration-dev kguiaddons-dev - ki18n-dev kpackage-dev frameworkintegration-dev kwindowsystem-dev" + ki18n-dev kirigami2-dev kpackage-dev frameworkintegration-dev + kwindowsystem-dev" subpackages="$pkgname-dev $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/breeze-$pkgver.tar.xz" @@ -23,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -38,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="25e5744589130f7d339c727e17e662a28bdecc3f0598b9683735ccdfd2dcdeada46a49baa5564a7cf7d59a3f6ac34802ae2172857e704941d64cf879b3583df0 breeze-5.24.5.tar.xz" +sha512sums="b0adbcc130a55eb9d2c8b22dc93a3dcdcb2c2a3d382c776fc4ae4c88877ffd58ed0a72a2bfa6c17a71bb32e053b558b44625d66f6bc3a07698450eaf88dd71fc breeze-5.27.12.tar.xz" diff --git a/user/brillo/APKBUILD b/user/brillo/APKBUILD new file mode 100644 index 000000000..f377b047f --- /dev/null +++ b/user/brillo/APKBUILD @@ -0,0 +1,25 @@ +# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house> +# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> +pkgname=brillo +pkgver=1.4.12 +pkgrel=0 +pkgdesc="Utility for controlling display brightness" +url="https://gitlab.com/cameronnemo/brillo" +arch="all" +options="!check" # no testsuite +license="GPL-3.0-only AND 0BSD" +depends="udev polkit" +makedepends="" +subpackages="" +source="https://gitlab.com/cameronnemo/brillo/-/archive/v$pkgver/brillo-v$pkgver.tar.bz2" +builddir="$srcdir/brillo-v$pkgver" + +build() { + make +} + +package() { + make DESTDIR="$pkgdir" install.bin install.udev install.polkit +} + +sha512sums="f7bb6df12a8ddd7df6ac3c973cf24a0b4974387479d20477c7cec75503ca0bfbff8d16645464f79f73074711e62614ffcc5c9388384100274ba8be0bfaae26b8 brillo-v1.4.12.tar.bz2" diff --git a/user/darkman/APKBUILD b/user/darkman/APKBUILD new file mode 100644 index 000000000..1600fae79 --- /dev/null +++ b/user/darkman/APKBUILD @@ -0,0 +1,25 @@ +# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house> +# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> +pkgname=darkman +pkgver=2.0.1 +pkgrel=0 +pkgdesc="Framework for managing dark- and light-mode transitions" +url="https://darkman.whynothugo.nl/" +arch="all" +options="!check" # no testsuite +license="0BSD" +depends="" +makedepends="gcc-go scdoc" +subpackages="$pkgname-doc $pkgname-systemd" +source="https://gitlab.com/WhyNotHugo/darkman/-/archive/v$pkgver/darkman-v$pkgver.tar.bz2" +builddir="$srcdir/darkman-v$pkgver" + +build() { + make VERSION="$pkgver" +} + +package() { + make VERSION="$pkgver" DESTDIR="$pkgdir" install +} + +sha512sums="8036e3470d22e1f689d8305cb3faf81a1fc2f0692afd8fb9657c2c22af417f25fd928189fcda42df7c053cb9129c90cdf11df64e6f597498af95f330de76f282 darkman-v2.0.1.tar.bz2" diff --git a/user/drkonqi/APKBUILD b/user/drkonqi/APKBUILD index 0c556fdd3..c2f6aac56 100644 --- a/user/drkonqi/APKBUILD +++ b/user/drkonqi/APKBUILD @@ -1,17 +1,18 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=drkonqi -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Crash diagnostic system for KDE" url="https://www.kde.org/" arch="all" options="!check" # Requires X11 license="GPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND BSD-2-Clause" -depends="" -makedepends="cmake extra-cmake-modules kauth-dev kcodecs-dev kcompletion-dev - kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev kidletime-dev - kio-dev kitemviews-dev kjobwidgets-dev knotifications-dev kservice-dev +depends="kcmutils kirigami2 kitemmodels" +makedepends="cmake extra-cmake-modules kauth-dev kcmutils-dev kcodecs-dev + kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev + kidletime-dev kio-dev kirigami2-dev kitemmodels-dev kitemviews-dev + kjobwidgets-dev knotifications-dev kservice-dev kuserfeedback-dev kwallet-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev qt5-qtbase-dev qt5-qtx11extras-dev solid-dev syntax-highlighting-dev" subpackages="$pkgname-lang" @@ -25,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -41,4 +42,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e1b5986f687da629d5e5f3e9034f551db4fec26870ff6801922da64cb7cff6d3089ae171ede47a6a733bb383cbb6dd54a691db962829027ad1449e71f2c45405 drkonqi-5.24.5.tar.xz" +sha512sums="2b5d35bc099d765cbd30f877b262057d7136c8d10a43344080ff19fe39f095876e4b5cb0c0ca107d4bfdf9196452479b9f85cd25b54df65c7e2f66e359072a18 drkonqi-5.27.12.tar.xz" diff --git a/user/dwl/APKBUILD b/user/dwl/APKBUILD new file mode 100644 index 000000000..000ac4151 --- /dev/null +++ b/user/dwl/APKBUILD @@ -0,0 +1,25 @@ +# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house> +# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> +pkgname=dwl +pkgver=0.7 +pkgrel=0 +pkgdesc="Minimal, DWM-like compositor for Wayland" +url="https://codeberg.org/dwl/dwl" +arch="all" +options="!check" # no testsuite +license="GPL-3.0+ AND MIT AND CC0-1.0" +depends="wlroots-0.18" +makedepends="libinput-dev libxkbcommon-dev wayland-dev wayland-protocols wlroots-0.18-dev" +subpackages="$pkgname-doc" +source="https://codeberg.org/dwl/dwl/releases/download/v$pkgver/dwl-v$pkgver.tar.gz" +builddir="$srcdir/dwl-v$pkgver" + +build() { + make PREFIX="/usr" +} + +package() { + make PREFIX="/usr" DESTDIR="$pkgdir" install +} + +sha512sums="d2ec9467bb7758ea52e0face555cb505624062eb66c8959b59e715b7d1c7bb74c649029f365c9bfd07d7b5806fdef018f555d7e64bd62e7e413ead45b5d73986 dwl-v0.7.tar.gz" diff --git a/user/extra-cmake-modules/APKBUILD b/user/extra-cmake-modules/APKBUILD index b35bcb3ea..c9c2970b6 100644 --- a/user/extra-cmake-modules/APKBUILD +++ b/user/extra-cmake-modules/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=extra-cmake-modules -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="CMake modules needed for KDE development" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { fi cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . make @@ -37,5 +37,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="c76e27ded4d5108d756b5891c64cbfbaad8a944e2cc5ce3a1b56ef395bad9688e493a1d8a6e91c2910e156ff5ff018ed054a4b3825b093c877e6c445eb74179e extra-cmake-modules-5.94.0.tar.xz +sha512sums="c0d73c2a6a155e3f03292335c994ec940892c751334e2336b42640016ebde5a9d72efe6fc6a31b7349504142da01e5974539b82d1e2aa967f448ae3ae80859f6 extra-cmake-modules-5.116.0.tar.xz 7787ce077da9e1d0ff082d19591739265d8d63c2a70c9c4f87836327154cd5221850cefefe9291712c121d5875c7442b4a276535f4214ac653dde692a82f398a posix.patch" diff --git a/user/firefox-esr/APKBUILD b/user/firefox-esr/APKBUILD index 66803e8b4..dd8403881 100644 --- a/user/firefox-esr/APKBUILD +++ b/user/firefox-esr/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Molly Miller <adelie@m-squa.red> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=firefox-esr -pkgver=128.10.1 +pkgver=128.12.0 _llvmver=18 pkgrel=0 pkgdesc="Firefox web browser (extended support release)" @@ -36,6 +36,7 @@ source="https://ftp.mozilla.org/pub/firefox/releases/$_ffxver/source/firefox-$_f fix-mutex-build.patch fix-seccomp-bpf.patch icu-75.patch + icu-77.patch jpeg-link.patch js-endian.patch mozilla-build-arm.patch @@ -158,12 +159,13 @@ package() { EOF } -sha512sums="6e7363d8cbecda1cedaf534ac10dc046b5f515399ec754492357e8a558c61ee3389f7bb90aa929dbcb4d6eba041ae1e778a0a8f90aa1e1f939eea517333b6c45 firefox-128.10.1esr.source.tar.xz +sha512sums="442d0b2b6ce02adcd878975f01e86548ca8fe93840185d77a1acb41ec99440c7abfdc8757e6f30d60593dcf2c7f50563b6ea6ccd4d239beea01305615b73c359 firefox-128.12.0esr.source.tar.xz aaeec88eda3ca5ef00503f2e1656f8a143017d5ff60bd289ce7a49b7f8352ce5b61556c732e5eb3b6859e1c30551219eb5bbb954e9b88eca8d3f44683bdd747d mozconfig 1fff71be77aa34791ef8aa972b5dc5f131d79f4b895ebbfb59bc223078764d6f79c82a3a4e4c717a3893ecbe4907d556f27e97d2692e41f02365f06da759a71a bad-google-code.patch 5e6c3fa027052cc43ba161cf5c12016b07723e7c0b002a42431bbd5d716d512d5245ab6befbb56c37c7d244441533f810f4e7b583f83bbe965981931f1435a94 fix-mutex-build.patch 9f2892eff9d09f3eed1f9a9ee98ba9c6a6826c30ccdeabfefb8733abc98e7b612418827262423568e830c6354a2b8242f471bc200b7079f21862bb00947da716 fix-seccomp-bpf.patch 0a84e8cb6604fdb7601745b60c04ee74733632ada32bfd85eb32db8fee095cfb79c82033e5e3cf3bbc7b7f4df753e86ffe18e26e63a6603a93c3bb5a459aabd3 icu-75.patch +2b22004984295c7df4ce6d8f2105ad3199020f61c5163c18328e928448e77d24a36aa7b38c42adfb68b257199a4e975e23b1b5d36c680bf8fe9e9502324d9a12 icu-77.patch a2400c8df888637d9ebe33d82dc2fb95792685c9938b5486230a5c15bc819cbb850a2bdcb54a775516652fc8ffd6b40f8c591ab7941211f9516064101380ebbf jpeg-link.patch d40e6c1a6e62d5e1dc350dc0bbaf2b8488b19ea0911532784f1df1199a7a5af0aae81b0b0d77c4398a2d903d86b5560f4442386eb446d9af8d58e73eea475e4f js-endian.patch 9f5730ee3a29b86786089abcfffab32bf2210f1a1ec43260ae824a08acda687dbfa37306b82a4978dd022bcf747eab155f7f3c5f73a1375f1c3c4fcd106dae3e mozilla-build-arm.patch diff --git a/user/firefox-esr/icu-77.patch b/user/firefox-esr/icu-77.patch new file mode 100644 index 000000000..5d239d542 --- /dev/null +++ b/user/firefox-esr/icu-77.patch @@ -0,0 +1,40 @@ + +# HG changeset patch +# User Martin Weinelt <martin+mozilla@linuxlounge.net> +# Date 1747057716 0 +# Node ID 1c2e812125e0f1ada57bbe606bf46fb7be9e9059 +# Parent f2dc324ff88fea439d7c4c6a5ffd2ff327b5b377 +Bug 1927380 - Update icu pkgconfig module lookup r=anba + +After upgrading to icu76 the build started failing to look up symbols +from icu when using the --system-icu option. Updating the pkgconfig +lookups to also read the icu-uc pkgconfig fixes the build. + +Differential Revision: https://phabricator.services.mozilla.com/D248707 + + +diff --git a/js/moz.configure b/js/moz.configure +--- a/js/moz.configure ++++ b/js/moz.configure +@@ -1300,17 +1300,19 @@ system_lib_option( + ) + + + @depends("--with-system-icu", when=use_pkg_config) + def enable_system_icu_option(enable_system_icu): + return enable_system_icu + + +-system_icu = pkg_check_modules("MOZ_ICU", "icu-i18n >= 73.1", when="--with-system-icu") ++system_icu = pkg_check_modules( ++ "MOZ_ICU", "icu-uc icu-i18n >= 76.1", when="--with-system-icu" ++) + + + @depends(enable_system_icu_option) + def in_tree_icu(system_icu): + return not system_icu + + + # Set MOZ_ICU_CFLAGS to an explicit empty value when --with-system-icu is *not* used, + diff --git a/user/flameshot/APKBUILD b/user/flameshot/APKBUILD new file mode 100644 index 000000000..3ac292020 --- /dev/null +++ b/user/flameshot/APKBUILD @@ -0,0 +1,40 @@ +# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house> +# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> +pkgname=flameshot +pkgver=12.1.0 +pkgrel=0 +pkgdesc="Simple, powerful screenshot utility" +url="https://flameshot.org/" +arch="all" +license="GPL-3.0+ AND LGPL-3.0+ AND MIT AND (GPL-3.0+ AND GPL-2.0-only) AND Apache-2.0 AND CC0-1.0 AND FAL-1.3" +depends="" +makedepends="cmake qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev" +subpackages="$pkgname-doc $pkgname-lang" +source="flameshot-$pkgver.tar.gz::https://github.com/flameshot-org/flameshot/archive/refs/tags/v$pkgver.tar.gz" +langdir="/usr/share/flameshot/translations" + +build() { + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=True \ + -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + ${CMAKE_CROSSOPTS} \ + . + make +} + +check() { + CTEST_OUTPUT_ON_FAILURE=TRUE ctest +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="159bf3a8ff406b3881dcc77fc48d9e7cc0d595bd47ee2363396d7efc95f69160cf25ccf99cd1b2c2b527baeadf91c209784a7bca23ed5f17caacc385e161c83c flameshot-12.1.0.tar.gz" diff --git a/user/frameworkintegration/APKBUILD b/user/frameworkintegration/APKBUILD index 8a6ad042f..9647283cf 100644 --- a/user/frameworkintegration/APKBUILD +++ b/user/frameworkintegration/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=frameworkintegration -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework providing components to allow applications to integrate with a KDE Workspace" url="https://www.kde.org/" arch="all" -options="!check" # All tests require X11. +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="3900fe970d459707b634df90515e49593632e7fe1dc9ba2a54b45d5042a768997f11b0875fe5419912673d8c9166e244d27b943b83c2d4a8936b8d6e30e17eb1 frameworkintegration-5.94.0.tar.xz" +sha512sums="425fd38f87b2bba96f68afb8bc8108f9da6011106e33f32b2d91b97b8330d54d0bdc26bec8ecf50c32471d8f8e85af5f6d8b3feee0815225f5dd2075c41c8a83 frameworkintegration-5.116.0.tar.xz" diff --git a/user/gdk-pixbuf/APKBUILD b/user/gdk-pixbuf/APKBUILD index e6268e4c9..cd1ac322d 100644 --- a/user/gdk-pixbuf/APKBUILD +++ b/user/gdk-pixbuf/APKBUILD @@ -13,7 +13,9 @@ makedepends="glib-dev gobject-introspection-dev libjpeg-turbo-dev libpng-dev install="$pkgname.pre-deinstall" triggers="$pkgname.trigger=/usr/lib/gdk-pixbuf-2.0/*/loaders" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" -source="https://download.gnome.org/sources/gdk-pixbuf/${pkgver%.*}/gdk-pixbuf-$pkgver.tar.xz" +source="https://download.gnome.org/sources/gdk-pixbuf/${pkgver%.*}/gdk-pixbuf-$pkgver.tar.xz + fix-pkgconfig.patch + " # secfixes: # 2.36.6-r1: @@ -37,4 +39,5 @@ package() { DESTDIR="$pkgdir" meson install -C build } -sha512sums="ae9fcc9b4e8fd10a4c9bf34c3a755205dae7bbfe13fbc93ec4e63323dad10cc862df6a9e2e2e63c84ffa01c5e120a3be06ac9fad2a7c5e58d3dc6ba14d1766e8 gdk-pixbuf-2.42.12.tar.xz" +sha512sums="ae9fcc9b4e8fd10a4c9bf34c3a755205dae7bbfe13fbc93ec4e63323dad10cc862df6a9e2e2e63c84ffa01c5e120a3be06ac9fad2a7c5e58d3dc6ba14d1766e8 gdk-pixbuf-2.42.12.tar.xz +24d461273c262e52299b9a70bc89e6fd4bd4425c1aef9575f5fcd6f3fb6d0ee0d05c4151f6bb9a28708f189ad26764b3c9b76a9d1e5094405a679abdf3905663 fix-pkgconfig.patch" diff --git a/user/gdk-pixbuf/fix-pkgconfig.patch b/user/gdk-pixbuf/fix-pkgconfig.patch new file mode 100644 index 000000000..a15c2c29c --- /dev/null +++ b/user/gdk-pixbuf/fix-pkgconfig.patch @@ -0,0 +1,11 @@ +diff '--color=auto' -Nurd gdk-pixbuf-2.42.12/gdk-pixbuf/meson.build gdk-pixbuf-2.42.12.new/gdk-pixbuf/meson.build +--- gdk-pixbuf-2.42.12/gdk-pixbuf/meson.build 2025-07-01 18:58:08.263906972 -0700 ++++ gdk-pixbuf-2.42.12.new/gdk-pixbuf/meson.build 2025-07-01 18:54:50.384849537 -0700 +@@ -383,6 +383,7 @@ + 'gdk_pixbuf_query_loaders=${bindir}/gdk-pixbuf-query-loaders', + ], + requires: 'gobject-2.0', ++ requires_private: 'libpng', + subdirs: gdk_pixbuf_api_name, + filebase: gdk_pixbuf_api_name, + ) diff --git a/user/gptfdisk/APKBUILD b/user/gptfdisk/APKBUILD index 1021cbd57..6ae9bec06 100644 --- a/user/gptfdisk/APKBUILD +++ b/user/gptfdisk/APKBUILD @@ -1,15 +1,15 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=gptfdisk -pkgver=1.0.5 -pkgrel=1 +pkgver=1.0.9 +pkgrel=0 pkgdesc="Utility for manipulating GUID Partition Tables (GPT)" url="https://www.rodsbooks.com/gdisk/index.html" arch="all" options="!check" # No test suite. license="GPL-2.0-only" depends="" -makedepends="icu-dev ncurses-dev popt-dev util-linux-dev" +makedepends="ncurses-dev popt-dev util-linux-dev" subpackages="$pkgname-doc" source="https://sourceforge.net/projects/gptfdisk/files/gptfdisk/$pkgver/gptfdisk-$pkgver.tar.gz ncurses.patch @@ -26,5 +26,5 @@ package() { done } -sha512sums="3d3a59e3488dd3d6bda5d103b9ad8b7936752210346b9787ddc936681498fba90577b6ae950c471d09a01bf6405fce32038ff1777c52db0b21e5277737fe3703 gptfdisk-1.0.5.tar.gz -052dab1640dcceceace0a147af4853ba3f1210880bdd9519b151d9c8f17b6dbc339828fa83d73314af022aa27b9e2b8eabfd81460b0a7e3d3485697323c62760 ncurses.patch" +sha512sums="c2489ac7e196cb53b9fdb18d0e421571eca43c366de8922c5c7f550aadf192558e7af69b181c30747d6cf607c1670126223465eaa5e231cc589402d94a4e97a2 gptfdisk-1.0.9.tar.gz +096a67666f2e91b0199595fdfdf040d43ae0353f0681872eeaa1e3c9619bddd07f9c5a1cb7e53b92b6f75e94109dfc754929d50164df0c7887fd72230d1c65f8 ncurses.patch" diff --git a/user/gptfdisk/ncurses.patch b/user/gptfdisk/ncurses.patch index 6d8589309..05e4f2dbf 100644 --- a/user/gptfdisk/ncurses.patch +++ b/user/gptfdisk/ncurses.patch @@ -4,7 +4,7 @@ #include <iostream> #include <string> #include <sstream> --#ifdef __APPLE__ +-#if defined (__APPLE__) || (__FreeBSD__) #include <ncurses.h> -#else -#include <ncursesw/ncurses.h> diff --git a/user/harfbuzz/APKBUILD b/user/harfbuzz/APKBUILD index be03db054..7dbaae19f 100644 --- a/user/harfbuzz/APKBUILD +++ b/user/harfbuzz/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=harfbuzz -pkgver=11.2.0 +pkgver=11.2.1 pkgrel=0 pkgdesc="Text shaping library" url="https://www.freedesktop.org/wiki/Software/HarfBuzz" @@ -54,4 +54,4 @@ icu() { mv "$pkgdir"/usr/lib/lib*icu.so.* "$subpkgdir"/usr/lib/ } -sha512sums="108a164e5277f76f535bbd1c3744b1f78897e714376c2f61c1171b95d5004a0ab99179efdd92063f7677b30d5c1ab4e0a40612bf60d672af9f03bdd24b1edefa harfbuzz-11.2.0.tar.xz" +sha512sums="56d4819f63d6040bff008e64a0d5b597c1cfa105047f7970b1dae2894aeed27a92d0c0780fee0beda53685767d86cb864256d6388cb4439e7d51a7ee717a0bd7 harfbuzz-11.2.1.tar.xz" diff --git a/user/kactivities-stats/APKBUILD b/user/kactivities-stats/APKBUILD index 8134a3414..b394a748c 100644 --- a/user/kactivities-stats/APKBUILD +++ b/user/kactivities-stats/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kactivities-stats -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Gather statistics about KDE activities" url="https://api.kde.org/frameworks/kactivities/html/index.html" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="0ae5d4ca81ef58b2d4857f737436eaed85bc50da910d7f1dc348e972c8511862b67869bd85a577eb43c06d8cd4e796092a90cb6ec1cb83013e76175643bc5cf5 kactivities-stats-5.94.0.tar.xz" +sha512sums="a50b84e989aecc551064c28f8e330ebc9054edc459cf085924ea61f17fcce8fa5037c39c485c5a58acdab5d93898e34648c292f91c450d075a09d0a0a18a610e kactivities-stats-5.116.0.tar.xz" diff --git a/user/kactivities/APKBUILD b/user/kactivities/APKBUILD index cebd390a2..48c476d06 100644 --- a/user/kactivities/APKBUILD +++ b/user/kactivities/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kactivities -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Runtime and library to organize work into separate activities" url="https://api.kde.org/frameworks/kactivities/html/index.html" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="59b82dfa3bec93726dc3924bc5675a970bb935823430362271599545ca80e07d73280d8b0a0af915739147f68ea6b22f7382c07d9c830497305a2dcadadcb89b kactivities-5.94.0.tar.xz" +sha512sums="d36755cbf3e28262086da2d737c99eb6829c75c374972b97f8dfa7ba0f5d2c02c4d00e833702d23c04d02a6883d14735950cbdc0d92bb6dfa3fe615a488d5adf kactivities-5.116.0.tar.xz" diff --git a/user/kactivitymanagerd/APKBUILD b/user/kactivitymanagerd/APKBUILD index e8cafd6f5..4e2080490 100644 --- a/user/kactivitymanagerd/APKBUILD +++ b/user/kactivitymanagerd/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kactivitymanagerd -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Service to manage KDE Plasma activities" url="https://www.kde.org/" @@ -11,7 +11,7 @@ depends="qt5-qtbase-sqlite" makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdbusaddons-dev ki18n-dev boost-dev python3 kconfig-dev kcoreaddons-dev kwindowsystem-dev kio-dev kglobalaccel-dev kxmlgui-dev" -subpackages="$pkgname-lang" +subpackages="$pkgname-lang $pkgname-systemd" source="https://download.kde.org/stable/plasma/$pkgver/kactivitymanagerd-$pkgver.tar.xz" build() { @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} -Bbuild . @@ -37,4 +37,4 @@ package() { make -C build DESTDIR="$pkgdir" install } -sha512sums="971105d22e7058b4c62ae00bef160b629cdef59e84cfc1d5fe6f7d9e43d12e71f8c93a56ef933f58729f71ead1d6b5c2247828a5a99bbe8300e0312888421b9c kactivitymanagerd-5.24.5.tar.xz" +sha512sums="2ad55370f8fdae2e04beead4f0ad0b342d435ee5f9a9dfdd1a0bdd9ed1b0229cc83ac2c550f309f63a743535ffec324a1ce4b02b81567b73dbe11033a91bd663 kactivitymanagerd-5.27.12.tar.xz" diff --git a/user/karchive/APKBUILD b/user/karchive/APKBUILD index a50f42de7..b452a00c6 100644 --- a/user/karchive/APKBUILD +++ b/user/karchive/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=karchive -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for manipulating archive files" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="a77224ed59c0fcfd7637458bc0d165e9226e3858e632915c9f78a2d2e5725cc2595672edd3b05260b6dfc69a50a8a6f690e06ca04633df33a1b9889260d368b5 karchive-5.94.0.tar.xz" +sha512sums="2f14f2998d9e5f73bee71488ab270bf65a989e7a7ff87d68efa685bb14500328d4679c35d8caeb5c65bab255fca4dbb36b449cea08c59a746c721f1d1c318e17 karchive-5.116.0.tar.xz" diff --git a/user/kauth/APKBUILD b/user/kauth/APKBUILD index d62b6efc8..fe033e4cd 100644 --- a/user/kauth/APKBUILD +++ b/user/kauth/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kauth -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for allowing software to gain temporary privileges" url="https://www.kde.org/" @@ -27,7 +27,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -43,4 +43,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="f5466b388c5e815ca877777622aa1cd67953b11ed501ccc212f791df96d38ac55912f0e38afdf9dda5dcaca354b08ee425ccb6cf2bc689c5347af28ee7e45a8b kauth-5.94.0.tar.xz" +sha512sums="1a640bb2bdc4a4d2a6458becb618a618abfb510bf6286145bb3834373cc8fec4980008d977476f699ad97368b316ccdf5308cea3eee80171a9d051003f45d7c6 kauth-5.116.0.tar.xz" diff --git a/user/kbookmarks/APKBUILD b/user/kbookmarks/APKBUILD index 9875fe275..ff9806ffd 100644 --- a/user/kbookmarks/APKBUILD +++ b/user/kbookmarks/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kbookmarks -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for managing XBEL-format bookmarks" url="https://www.kde.org/" arch="all" -options="!check" # Test requires X11. +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcodecs-dev @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="0ab54590cc2a26039804d792d8c6399257e4bfbd92b34cbe8043b1d6e02f102783c229a7e457acefd6da5876481af2558d026dd3e9d4234a6adce14c8aa6c8b3 kbookmarks-5.94.0.tar.xz" +sha512sums="72f19ad40595093fa828ead0553f8d0afc149b77479f75b014e1cab059208fa23607a755f2d4afd2079c047bf6832782664beb07d674cb56b41586d51c5d9933 kbookmarks-5.116.0.tar.xz" diff --git a/user/kcalendarcore/APKBUILD b/user/kcalendarcore/APKBUILD index 7a80ee16c..cd7cc16be 100644 --- a/user/kcalendarcore/APKBUILD +++ b/user/kcalendarcore/APKBUILD @@ -1,11 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcalendarcore -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Library for managing a calendar of events" url="https://www.kde.org/" arch="all" +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev" @@ -24,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -37,7 +38,7 @@ check() { testconference testcustomproperties testdateserialization testduration testevent testincidence testexception testfilestorage testfreebusy testindicdencerelation testicalformat testidentical testjournal - testmemorycalendar testperiod testfreebusyperiod testperson + testmemorycalendar testperiod testfreebusyperiod testperson teststatus testrecurtodo teststartdatetimesfordate testtodo testtimesininterval testcreateddatecompat testrecurrenceexception testoccurrenceiterator testreadrecurrenceid testcalendarobserver" @@ -46,7 +47,7 @@ check() { failing_tests="Compat-AppleICal Compat-MSExchange" skipline="(testicaltimezones" - for tname in $failing_tests $x11_tests; do + for tname in $failing_tests; do skipline="$skipline|$tname" done skipline="$skipline)" @@ -59,4 +60,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e9747a1965ca78d6112276cbd501cf00494fe7ba777a24a92e7f0f1b605770f924bca2d1b7e30b69b19051f2c823d71faa37ae4768857d6adb38d7c0dfd9a32c kcalendarcore-5.94.0.tar.xz" +sha512sums="04fc6b6c00e2a994b47b15e57a531b51439d67155b90c388b4e37efb6428e0215e90ff52bb5afa55d0ee0e7cb75186eac750770c9036824c20b779ef418bd1c0 kcalendarcore-5.116.0.tar.xz" diff --git a/user/kcmutils/APKBUILD b/user/kcmutils/APKBUILD index 8f010741c..df9c3a694 100644 --- a/user/kcmutils/APKBUILD +++ b/user/kcmutils/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcmutils -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for writing System Settings modules" url="https://api.kde.org/frameworks/kcmutils/html/index.html" arch="all" -options="!check" # Test suite requires running X11 session. +options="checkx11" license="LGPL-2.1-only AND LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kitemviews-dev kservice-dev @@ -26,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -42,4 +42,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="c5ca1e1b61da4c7c96bb8e95593e4799c86345a6d4ae222284c31e31ac3c60ace81bd1f8e62c5e1956b25f2f6f32d9586912505380dce888a7e76ed86f45fdca kcmutils-5.94.0.tar.xz" +sha512sums="05ee74e36f859a7c60d60c5da9bf24923742440b094b3969f56f7cef3ca1d7d7cdc6b3d7bb467db3388e3946f627fcbef29ba0c2f84cd85f041382920b4e3ad8 kcmutils-5.116.0.tar.xz" diff --git a/user/kcodecs/APKBUILD b/user/kcodecs/APKBUILD index 22336404b..6bc77c68b 100644 --- a/user/kcodecs/APKBUILD +++ b/user/kcodecs/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcodecs -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for manipulating strings in differing encodings" url="https://www.kde.org/" @@ -26,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -42,4 +42,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="553d093d3b030552101c212d90fdd1ffdd04feb59d96e9e859ad64b6abbda8d43690c5cfbbf3383cdaa25f9bc7620a6105c839a8446f109386e08cd74504b0c9 kcodecs-5.94.0.tar.xz" +sha512sums="79d2b5b7a7cd815fa9a00ca4a8cd5fbf2a003521796b21fe3014caaa4506d14a7fbada88ff10b1a16118f2863dc876794e21db6a98f34d5b31d5973c5586da4b kcodecs-5.116.0.tar.xz" diff --git a/user/kcompletion/APKBUILD b/user/kcompletion/APKBUILD index 12f7c7222..1b0ceb2ef 100644 --- a/user/kcompletion/APKBUILD +++ b/user/kcompletion/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcompletion -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for implementing automatic completion of input" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="fe0adcafba6f2d72c504f900f90fe04d5c10d198ead1c43e386736df8ac97da923f34b4e623b63da9edd8455dbbf31a671c216c0f58884c6ee93a9dc5e5b7b04 kcompletion-5.94.0.tar.xz" +sha512sums="5a758b3e037f87e3b011232d0462599cfd0241f2345312a4ffb82e940aad5da023c07be68401febd556e33c38a6ff48ffff1e8ee769314acafbb3409a0c8b730 kcompletion-5.116.0.tar.xz" diff --git a/user/kconfig/APKBUILD b/user/kconfig/APKBUILD index 1a05bdfd5..12059c742 100644 --- a/user/kconfig/APKBUILD +++ b/user/kconfig/APKBUILD @@ -1,19 +1,21 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kconfig -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for managing software configuration" url="https://www.kde.org/" arch="all" -options="!check" # Tests require running D-Bus. +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev" makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen qt5-qtdeclarative-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kconfig-$pkgver.tar.xz" +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kconfig-$pkgver.tar.xz + deflake.patch + " build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -23,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +41,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="59d7d957313e421a332fb0a83eef6be68455c3de50cee0cd0d1b6b22f2b97ad9fdfddac282f03c4cedc5f364d4b3321c3f3fdadd7824e0523c5260446dc31ac9 kconfig-5.94.0.tar.xz" +sha512sums="a84f02462f2e7d75488dab6dfb0f438792762f2031cabe8cf7ef143f285e9da8de5e555165d3eb4bc24ae8e3528bc24dde1a6505a55933d98386351493a845d4 kconfig-5.116.0.tar.xz +bfbd633196d463704bf17ffd1b0f90cb74e5d584ed02472e7a835f437faa2fc84f8614ac0c4368b1197590e66f25df694fd67e29b690fc7cffbb520a37df1c2a deflake.patch" diff --git a/user/kconfig/deflake.patch b/user/kconfig/deflake.patch new file mode 100644 index 000000000..338d66a65 --- /dev/null +++ b/user/kconfig/deflake.patch @@ -0,0 +1,15 @@ +Silence a single test that races kdeglobals + +This is a known flaky test upstream. There is a good RCA at +https://invent.kde.org/frameworks/kconfig/-/merge_requests/219 but the +long and the short of it is that the test is flaky as-is. +--- kconfig-5.116.0/autotests/kconfigtest.cpp.old 2024-05-04 06:38:05.000000000 -0500 ++++ kconfig-5.116.0/autotests/kconfigtest.cpp 2025-06-30 04:04:40.523164120 -0500 +@@ -1785,7 +1785,6 @@ + KConfig mainConfig(s_kconfig_test_subdir); + KConfigGroup mainGroup(&mainConfig, "OwnTestGroup"); + QCOMPARE(mainGroup.readEntry("GlobalKey", "Default"), QStringLiteral("Default")); // key is gone +- QCOMPARE(mainGroup.keyList(), expectedKeys); + } + } + diff --git a/user/kconfigwidgets/APKBUILD b/user/kconfigwidgets/APKBUILD index 5b141f8f3..716a96b58 100644 --- a/user/kconfigwidgets/APKBUILD +++ b/user/kconfigwidgets/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kconfigwidgets -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework providing widgets for software configuration" url="https://www.kde.org/" arch="all" -options="!check" # All tests require X11 +options="checkx11" license="LGPL-2.1-only AND LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev kauth-dev kcodecs-dev kconfig-dev kguiaddons-dev @@ -27,7 +27,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -43,4 +43,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="1b99bb215d6f00204e6605cc078062d3e6d9b8c3e5b4a2166e82aaf1a50ac02bbede955908bb7c3bd04e6d1733b103f4e50850358d462d3568bd59f8cf43d02e kconfigwidgets-5.94.0.tar.xz" +sha512sums="30325d3b88539d96de97adf8d596bebc6f5f8a5ea0ccc0b272f5e5557aa4ad4dc72ece1491ab2d656efb6ba378a236448a2efb35e4d82ee3dd42f2f9d178ad0b kconfigwidgets-5.116.0.tar.xz" diff --git a/user/kcontacts/APKBUILD b/user/kcontacts/APKBUILD index 5b133efe6..db88d481d 100644 --- a/user/kcontacts/APKBUILD +++ b/user/kcontacts/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcontacts -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Library for working with contact information" url="https://www.kde.org" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="59291b9639ecf0bf3f28cf1b6cf46239381acc4354fc6cf5d9578ab4eaa5bccfa5e1504478f1be8c435b9b57c77f3c53e41bcae12ddc12ec1fa419ed4bf8f0ec kcontacts-5.94.0.tar.xz" +sha512sums="b33a239bc577a0ff4d7b34e7fc12397fed543ba31a0fb1ebcd55dc5ce52e05e026953128f13c76828dd6723fed9a27153cd8420d5dd940404a4f79cd625499bf kcontacts-5.116.0.tar.xz" diff --git a/user/kcoreaddons/APKBUILD b/user/kcoreaddons/APKBUILD index 74901c11e..c6dbd8b21 100644 --- a/user/kcoreaddons/APKBUILD +++ b/user/kcoreaddons/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcoreaddons -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Core KF5 framework" url="https://www.kde.org/" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,5 +41,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b94ffa2e845dcfb481d496348969b1ec4ddba0a3c1fdcec636567a89fb6f65179a10b43add14cf5c4e720dce4459e725dca6ee5800fdf9551385ec7fffc1b462 kcoreaddons-5.94.0.tar.xz +sha512sums="d77a1fcad6576692c6a6d80728acddb818acbc3a8f70fc59f3fa3c433a94c429e4b230840f7df23ae8027289e57fc0c8ae7c42b83ea734b567a640d5e248867d kcoreaddons-5.116.0.tar.xz d462866912d9cc9a768477d872142eb67be6b616c044436a27aa71577546efe4aa323b3dac913f9dbb52fc62dbe27d464b30ac3c4cb23c5d7c414d96138e9300 utf8.patch" diff --git a/user/kcrash/APKBUILD b/user/kcrash/APKBUILD index ed14644de..f23923c15 100644 --- a/user/kcrash/APKBUILD +++ b/user/kcrash/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kcrash -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for gracefully handling software errors~" url="https://www.kde.org/" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="ce0b9de0f2a4816f40f2a958d101434d0940d2bc26a671d26814c02f836d2e1f3b862d38d37895b6d096091333e12bb76eff5c99ccabba21c12e485eedb6facc kcrash-5.94.0.tar.xz" +sha512sums="051ad694f0db1463c1105d3ff37221633a91c282850b6e295dadf07a323ba610046650c7d2e3b45dcd56214709b58989360b727b16dca0ca44dbc9b143f68e07 kcrash-5.116.0.tar.xz" diff --git a/user/kdbusaddons/APKBUILD b/user/kdbusaddons/APKBUILD index fd0e72677..26b063c61 100644 --- a/user/kdbusaddons/APKBUILD +++ b/user/kdbusaddons/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdbusaddons -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for coping with D-Bus" url="https://www.kde.org/" arch="all" -options="!check" # Requires running dbus-daemon +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="8075330a54c41a94ad97b2514635ad3845128dd856510ebd4441ee3d349c125ac189cf4d3d582dd5e19cef29f07e7df8d22f4f72c8b3fe26d4ca5e262c527929 kdbusaddons-5.94.0.tar.xz" +sha512sums="def33859b260b1910769ae241788c2e3adb85003014989415d3127629667a6e7f149519ae1ebed2e91d4db7d2e9d1792db0fbae46c91a163f07b456387a02993 kdbusaddons-5.116.0.tar.xz" diff --git a/user/kde-cli-tools/APKBUILD b/user/kde-cli-tools/APKBUILD index a95557d32..0e003a994 100644 --- a/user/kde-cli-tools/APKBUILD +++ b/user/kde-cli-tools/APKBUILD @@ -1,19 +1,19 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kde-cli-tools -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE command-like utilities" url="https://www.kde.org/" arch="all" -options="!check" # MIME types for some reason think .doc == .txt +options="checkx11" license="(GPL-2.0-only OR GPL-3.0-only) AND GPL-2.0+ AND GPL-2.0-only AND LGPL-2.1-only" depends="" checkdepends="shared-mime-info" makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev - qt5-qtx11extras-dev kactivities-dev kcmutils-dev kconfig-dev - kdeclarative-dev kdesu-dev kdoctools-dev ki18n-dev kiconthemes-dev - kinit-dev kio-dev kservice-dev kwindowsystem-dev libkworkspace-dev" + qt5-qtx11extras-dev kactivities-dev kcmutils-dev kconfig-dev kdesu-dev + kdeclarative-dev kdoctools-dev ki18n-dev kiconthemes-dev kinit-dev + kio-dev kparts-dev kservice-dev kwindowsystem-dev libkworkspace-dev" subpackages="$pkgname-lang $pkgname-doc" source="https://download.kde.org/stable/plasma/$pkgver/kde-cli-tools-$pkgver.tar.xz" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="db89474ea3c88978123012430249677405b245628b0b12fda917b70fca9ea36e060f351420d0dd94f64e3a479a04a768064df27830884e2a8883db9104b90844 kde-cli-tools-5.24.5.tar.xz" +sha512sums="6429b348443f7d0216fedba9870d18690a0e97c59b19e8fe06d447ca15ecdc7a3223c7be90bd0dd506514d1389f8b8b6855864b3892ae7e1f984cc9072cc69f0 kde-cli-tools-5.27.12.tar.xz" diff --git a/user/kde-gtk-config/APKBUILD b/user/kde-gtk-config/APKBUILD index 1fd44165c..69b4e8ac6 100644 --- a/user/kde-gtk-config/APKBUILD +++ b/user/kde-gtk-config/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kde-gtk-config -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE System Settings panel for configuring GTK+ application styles" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="0cc7a76aca458ec093b55ea148637a82fa53467f3944d4192f4138f7eb93c88a2a65cd64e7438814f11182a390d39629982850b6939902738fd1d2a2af65319d kde-gtk-config-5.24.5.tar.xz" +sha512sums="d1c05f8ae637f1aee55e4a0fe54c717d7a9f1d96be1103f7f863ba6893bd98da1b2c51319a04a24d7f78c6e1ded33829b170b044958a4f5e72354c68aae6b679 kde-gtk-config-5.27.12.tar.xz" diff --git a/user/kdeclarative/APKBUILD b/user/kdeclarative/APKBUILD index d16ffdb8d..b56e122ee 100644 --- a/user/kdeclarative/APKBUILD +++ b/user/kdeclarative/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdeclarative -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Frameworks for creating KDE components using QML" url="https://www.kde.org/" arch="all" -options="!check" # Requires accelerated X11 desktop running +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kiconthemes-dev kio-dev @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="dfe5359a0dcc75e00ef0ece97903b4217e896d3427633e9dbec834cf924d921982576651139e9215b01d283213ce0d73d03ab67b9d3561763ca0596ad80067b4 kdeclarative-5.94.0.tar.xz" +sha512sums="6118cfc64c5a600cead31deaab79e7e60fef9c24ce5d4b163b581e1bae617979069e1a00cfc610a1e4b3fb80c9ff77fa5b34dace836d1d5326dfc31a2482d4bc kdeclarative-5.116.0.tar.xz" diff --git a/user/kdecoration/APKBUILD b/user/kdecoration/APKBUILD index 8a0a85d54..d46fb2122 100644 --- a/user/kdecoration/APKBUILD +++ b/user/kdecoration/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kdecoration -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Window decoration plugin library" url="https://www.kde.org/" arch="all" -options="!check" # Requires running X11 display +options="checkx11" license="LGPL-2.1" depends="" depends_dev="qt5-qtbase-dev" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="d523e8515868685a15c20deead4ece798369736b117b1c29b14fa4849d6fc0a409a5b2a3eaa2756694e12ae0e22440a670ed6b79aecef7197b67d591b384d11a kdecoration-5.24.5.tar.xz" +sha512sums="d8e7884c83d43d362f4c85e1470836f0d7dee05dbad476b006f806ba5132b8487e189b276e305a60914533a3adfed7e594573dc28c4a93b0d1b5de08d44a19e1 kdecoration-5.27.12.tar.xz" diff --git a/user/kded/APKBUILD b/user/kded/APKBUILD index 5b6762c8b..17d3a5fc5 100644 --- a/user/kded/APKBUILD +++ b/user/kded/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kded -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Central KDE workspace daemon" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="35da63b63f5e595c225f30879cdff6cdc0b74b93028a7cefc71dd93447759488f6419492449c1f4c25b71b5b3ec4299a4e785b3be37c792468751a5e5c6ac32a kded-5.94.0.tar.xz" +sha512sums="442c90ee2519363dc2e128a8cd6ef34e4e35944036476f98cdd2432a61ca72f8e235e40364a0aa3ced7f3528fa7b876ebfa297386b6f0397d0409faf2a908910 kded-5.116.0.tar.xz" diff --git a/user/kdelibs4support/APKBUILD b/user/kdelibs4support/APKBUILD index 9829503aa..9b6d08563 100644 --- a/user/kdelibs4support/APKBUILD +++ b/user/kdelibs4support/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdelibs4support -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Legacy support for KDE 4 software" url="https://www.kde.org/" arch="all" -options="!check suid" # Test requires running X11 session. +options="checkx11 suid" license="LGPL-2.1+ AND MIT AND LGPL-2.1-only AND LGPL-2.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) AND (LGPL-2.0-only OR LGPL-3.0-only)" depends="" depends_dev="qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev kcompletion-dev @@ -14,9 +14,14 @@ depends_dev="qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev kcompletion-dev kemoticons-dev kparts-dev kunitconversion-dev kinit kded kded-dev kitemmodels-dev knotifications-dev sonnet-dev threadweaver-dev kinit-dev" +checkdepends="kconfigwidgets-lang" # for en_US/kf5_entry.desktop, for KLocale +checkdepends="$checkdepends tzdata" # for Europe/Paris, for KTimeZones makedepends="$depends_dev cmake extra-cmake-modules networkmanager-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdelibs4support-$pkgver.tar.xz" +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdelibs4support-$pkgver.tar.xz + ensure-wordsize-defined.patch + use-real-paris.patch + " build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -26,7 +31,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -41,4 +46,6 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="8b48b7d67201bc6e0fb67fa00b75dbaf8e35e21f7527b4bc79939c2b689c027bfa75eb60b13686bd8bce710a61682a27cac85481edd6e321063aefb186cdd2f2 kdelibs4support-5.94.0.tar.xz" +sha512sums="87cdc59da0fcaccc48012cf3c34ab3707c2eb159effd17e76b7c24a81feebebef3a27aa1d25dadfb0d5ee7efbc39b2fa7cafc6090476f5ec4cb8e9be616050be kdelibs4support-5.116.0.tar.xz +a06a1c50d47a581db8c9f515702f9c2be9f8baf33231a1398594210ddd10830c56f24b3521179d27989e630aa9295edd0f4bed67477102fbf9ff5d4b57db2fdc ensure-wordsize-defined.patch +ffd6643813c69f9e3f6079638680d05eff356eb96ad1eb0702da5e9671de8eb0b6095e218fa0e4f7b40488227e0aaf185841c8fa300ac2e5aa37e87267c895e0 use-real-paris.patch" diff --git a/user/kdelibs4support/ensure-wordsize-defined.patch b/user/kdelibs4support/ensure-wordsize-defined.patch new file mode 100644 index 000000000..03b8eafb1 --- /dev/null +++ b/user/kdelibs4support/ensure-wordsize-defined.patch @@ -0,0 +1,17 @@ +This is needed since we aren't glibc. + +src/kdelibs4support-5.116.0/autotests/klocaletest.cpp:1205:6: error: "__WORDSIZE" is not defined, evaluates to 0 [-Werror=undef] + 1205 | #if (__WORDSIZE == 64) || defined (_LP64) || defined(__LP64__) || defined(__ILP64__) + | ^~~~~~~~~~ + +--- kdelibs4support-5.116.0/autotests/klocaletest.cpp.old 2024-05-04 06:38:54.000000000 -0500 ++++ kdelibs4support-5.116.0/autotests/klocaletest.cpp 2025-07-01 03:29:19.738313843 -0500 +@@ -1202,7 +1202,7 @@ + QCOMPARE(locale.formatByteSize(5000000), QString("4.8 MiB")); + QCOMPARE(locale.formatByteSize(50000000), QString("47.7 MiB")); + QCOMPARE(locale.formatByteSize(500000000), QString("476.8 MiB")); +-#if (__WORDSIZE == 64) || defined (_LP64) || defined(__LP64__) || defined(__ILP64__) ++#if (defined(__WORDSIZE) && (__WORDSIZE == 64)) || defined (_LP64) || defined(__LP64__) || defined(__ILP64__) + QCOMPARE(locale.formatByteSize(5000000000), QString("4.7 GiB")); + QCOMPARE(locale.formatByteSize(50000000000), QString("46.6 GiB")); + QCOMPARE(locale.formatByteSize(500000000000), QString("465.7 GiB")); diff --git a/user/kdelibs4support/use-real-paris.patch b/user/kdelibs4support/use-real-paris.patch new file mode 100644 index 000000000..fe8b72445 --- /dev/null +++ b/user/kdelibs4support/use-real-paris.patch @@ -0,0 +1,15 @@ +musl (correctly) does not like being fed weird Qt paths from TZ. + +Just use the normal Europe/Paris file already installed by tzdata. + +--- kdelibs4support-5.116.0/autotests/ktimezonestest.cpp.old 2024-05-04 06:38:54.000000000 -0500 ++++ kdelibs4support-5.116.0/autotests/ktimezonestest.cpp 2025-07-01 03:49:46.268079721 -0500 +@@ -295,7 +295,7 @@ + + void KTimeZonesTest::currentOffset() + { +- QString tzfile = ':' + mDataDir + "/Europe/Paris"; ++ QString tzfile = "Europe/Paris"; + QByteArray originalZone = qgetenv("TZ"); // save the original local time zone + qputenv("TZ", tzfile.toLatin1()); + ::tzset(); diff --git a/user/kdeplasma-addons/APKBUILD b/user/kdeplasma-addons/APKBUILD index 6574d70d8..ce4b7801b 100644 --- a/user/kdeplasma-addons/APKBUILD +++ b/user/kdeplasma-addons/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kdeplasma-addons -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Extra applets and toys for KDE Plasma" url="https://www.kde.org/" arch="all" -options="!check" # Requires X11 session. +options="checkx11" license="GPL-2.0+ AND LGPL-2.1-only" depends="qt5-qtquickcontrols qt5-qtquickcontrols2" makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -35,11 +35,12 @@ build() { } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test + # Sensitive to timezones. + cd build && CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'datetimerunnertest' } package() { make -C build DESTDIR="$pkgdir" install } -sha512sums="de69d14ef6ffb23824bc646c1582cddfcac7334e7543a1414075f3debd8aab46d51d01983617ffec371ad1df703756b5f8d6c38eebb80ad10b6fe4d320747669 kdeplasma-addons-5.24.5.tar.xz" +sha512sums="5c74348e23c492e69fa8789093ef3efbd5e93933b098b964bd1a8509c2b47c227eb53ebee3479372c0582cb0fd2e099ec3920b8d61ddd1fa0b0fa10e1474b113 kdeplasma-addons-5.27.12.tar.xz" diff --git a/user/kdesignerplugin/APKBUILD b/user/kdesignerplugin/APKBUILD index fcf367c64..727a4942f 100644 --- a/user/kdesignerplugin/APKBUILD +++ b/user/kdesignerplugin/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdesignerplugin -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt Designer plugin for KDE widgets" url="https://www.kde.org/" arch="all" -options="!check" # Test requires accelerated X11 display. +options="checkx11" license="LGPL-2.1-only" depends="" depends_dev="$pkgname=$pkgver-r$pkgrel" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="46651ed770da8070541d8333baf6e37059693a4407245ea7330c8724f1ad03b06cbccea20b3909dbdd33ddaa33e9d2eac45d031eac8e0cc23eca0cec20a1e2ad kdesignerplugin-5.94.0.tar.xz" +sha512sums="b66b30d3a6a6f8ff27ffe3f6c7ac431a05c683de81f43b074d99c941d51e6326766c0eba1c52f9b64cb1f373058fd48ee8ae8132d84cd2d1e328c30587ac8423 kdesignerplugin-5.116.0.tar.xz" diff --git a/user/kdesu/APKBUILD b/user/kdesu/APKBUILD index 58ea82d62..e53f1b536 100644 --- a/user/kdesu/APKBUILD +++ b/user/kdesu/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdesu -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for elevating privileges" url="https://api.kde.org/frameworks/kdesu/html/index.html" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="850c35338d08c16e6fc82fe844640629e1198c1f127c286bf8e443e5b7e8b3b53529e8fc24a0ea62b824c7be4e42df933e49d6c5870562d971322574581bc664 kdesu-5.94.0.tar.xz" +sha512sums="6426e65af37b4bec97ef2e93a48de25fe2e5d99fa4a4f8da850a6ed91ef428933062ca81455a91f4604fa8552dd0fe46ef835a4408e91a05e4609b09864a25cf kdesu-5.116.0.tar.xz" diff --git a/user/kdewebkit/APKBUILD b/user/kdewebkit/APKBUILD index 87107a831..198e67ae5 100644 --- a/user/kdewebkit/APKBUILD +++ b/user/kdewebkit/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdewebkit -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="KDE integration with WebKit" url="https://www.kde.org/" @@ -12,7 +12,9 @@ depends_dev="qt5-qtwebkit-dev" makedepends="$depends_dev cmake extra-cmake-modules kconfig-dev kcoreaddons-dev kio-dev kparts-dev kwallet-dev qt5-qttools-dev" subpackages="$pkgname-dev" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdewebkit-$pkgver.tar.xz" +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdewebkit-$pkgver.tar.xz + feature-summary.patch + " build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -22,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +39,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="03d5ba333d18a2fd15c9777b7745fa0e0460695bd0b2e11eaa0383de9824a2f2e0edb0644f19521b767afa6452503d832dc979794487a97b1d9657c8901a3fe6 kdewebkit-5.94.0.tar.xz" +sha512sums="85d11b0b662f633a5da916d428e466e4e5f8c36d562016ff0defc31983b2af4fe55da7d69bf47ee663a48dc4ec5b234837c2502b4bea2064ca3f1fcb437204c7 kdewebkit-5.116.0.tar.xz +f5b0b166d6bd9bebbc13a93217065aa559d75434194f894421c9587466d0661daf94158de126c1b3c4f0e7e3f6695fdabc6e75b0fe1dbefa1b52184f3854e537 feature-summary.patch" diff --git a/user/kdewebkit/feature-summary.patch b/user/kdewebkit/feature-summary.patch new file mode 100644 index 000000000..8ddafa116 --- /dev/null +++ b/user/kdewebkit/feature-summary.patch @@ -0,0 +1,16 @@ +This reverts upstream commit bc67535891d6bfba5c8fce71acaec70c02d6df50. + +This appears to need some version of ECM that is not released / KF6 only. +Which doesn't make sense, because KF5WebKit is removed in KF6! + +See-also: https://invent.kde.org/frameworks/kdewebkit/-/commit/bc67535891d6bfba5c8fce71acaec70c02d6df50 + +--- kdewebkit-5.116.0/CMakeLists.txt.old 2024-05-04 06:39:11.000000000 -0500 ++++ kdewebkit-5.116.0/CMakeLists.txt 2025-07-01 03:57:32.618642093 -0500 +@@ -76,5 +76,4 @@ + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KDEWebKit COMPONENT Devel + ) + +-include(ECMFeatureSummary) +-ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) ++feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/user/kdnssd/APKBUILD b/user/kdnssd/APKBUILD index bc85e4471..5c68ebe56 100644 --- a/user/kdnssd/APKBUILD +++ b/user/kdnssd/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdnssd -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for discovering network services using Zeroconf" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e85f6ad4eecaa2e710f8cf4c989e04b0865158a3ab3d11ff0a6bfcfeed81bccc404313aa62921011a89ff23e6840f6222a38884c0c53e621930b354a309222bf kdnssd-5.94.0.tar.xz" +sha512sums="542b6ff05ea2d0d43b8563136254f54e690fb561b270517df00158e53a5a2eda23e5371292256cd3f3aae0ee108c8d5cd4f611ac1aa22c259ee80b4815850121 kdnssd-5.116.0.tar.xz" diff --git a/user/kdoctools/APKBUILD b/user/kdoctools/APKBUILD index 4db84ec22..7d9eadb5e 100644 --- a/user/kdoctools/APKBUILD +++ b/user/kdoctools/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kdoctools -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Tools to generate user-readable documentation from DocBook XML" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="754b1598f4db9112430de9cc559f522c66e33b773d425e3b24763ffe330a3c3f8d3a5a6eeb6d865d770c0ed85f2bb89b72a75b7053ca96bf0f730635c8524038 kdoctools-5.94.0.tar.xz" +sha512sums="06a9d79f5e449ae606f6c5dba20038ad60202c908bb0f7f1dbc8bb3a955db5b6b34e4caa453a7b562d744f30faa62574425d78552b497227d4b5ca8eac3adaab kdoctools-5.116.0.tar.xz" diff --git a/user/kemoticons/APKBUILD b/user/kemoticons/APKBUILD index fd41eb0c3..ee1d4cf02 100644 --- a/user/kemoticons/APKBUILD +++ b/user/kemoticons/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kemoticons -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Emoticons to express emotions in KDE" url="https://www.kde.org/" arch="all" -options="!check" # Test requires accelerated X11 environment. +options="checkx11" license="LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)" depends="" depends_dev="qt5-qtbase-dev karchive-dev kconfig-dev kservice-dev" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="1b8d34fb58ef6b8ba83cc13eac719143606d1011b39551513773e78f660a3c7c4f3ed3402cb68bac9c216275cba7c1fdf6fdf2d905d377f9bf79a1eeac850b46 kemoticons-5.94.0.tar.xz" +sha512sums="9bf1c7f1c7b0d61a43d12b3af58707d61f3f3ae0f1d817db0e34db6ca25eb8d33a7780d218a44e57b4974e5683e3e26126b45e74a4c8eb764df2cb3d900b27f9 kemoticons-5.116.0.tar.xz" diff --git a/user/kfilemetadata/APKBUILD b/user/kfilemetadata/APKBUILD index 5a3954d15..d81baab2f 100644 --- a/user/kfilemetadata/APKBUILD +++ b/user/kfilemetadata/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kfilemetadata -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="File metadata extraction framework" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="76b357c47791d352dfc34036041df6be204031260d95597967410836887f0a2e80dd1aab250e092848ceda674ab164e8e98aa811593e971a27a7aace8d2be28f kfilemetadata-5.94.0.tar.xz" +sha512sums="1c5d264ad2bc123ba0d85882461009efc10c268441e33f82810823d1e2c6fb30209336542b4e2c1eabb96b53cc9184fc3982c27922872a9b92cac38bafe2da0e kfilemetadata-5.116.0.tar.xz" diff --git a/user/kgamma5/APKBUILD b/user/kgamma5/APKBUILD index 33f6087bd..7785ee3a7 100644 --- a/user/kgamma5/APKBUILD +++ b/user/kgamma5/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kgamma5 -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Control monitor gamma from KDE 5" url="https://www.KDE.org/" @@ -12,6 +12,7 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kconfigwidgets-dev kdoctools-dev ki18n-dev libxxf86vm-dev" subpackages="$pkgname-doc $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/kgamma5-$pkgver.tar.xz" +builddir="$srcdir"/kgamma-$pkgver build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -21,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -36,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="a7f4c9fbc370c69ba9df2aa0ae2c75b896cc90adafd97c5ae214a05e8ae0261e94050e0acd1924c16f94b632209fe4803ed475555d882ee6e57d5271691ddc2f kgamma5-5.24.5.tar.xz" +sha512sums="4499584fa763bf5456ecd89f2663a9111c9c7d02e1ce5ba7f164600001501efd52d247e42d427ad740f3f55137280d339df503f3ee0d3037802a4f0a0345ec44 kgamma5-5.27.12.tar.xz" diff --git a/user/kglobalaccel/APKBUILD b/user/kglobalaccel/APKBUILD index e11f42786..4262f621e 100644 --- a/user/kglobalaccel/APKBUILD +++ b/user/kglobalaccel/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kglobalaccel -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for implementing global shortcuts/accelerators" url="https://www.kde.org/" arch="all" -options="!check" # Only test requires X11. +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcrash-dev @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="9e0b81716acaf27a5a6f6f64e7bafca96a3820eaec5627193f45cd95122f46b3a02d2bd18791c23bf74b3c84eba7eef9b331bd2ae093f7590e56c65bee66f78f kglobalaccel-5.94.0.tar.xz" +sha512sums="76420eb2fa026c0770b8f78c9ff0780056e2126aa4b6efdeb023faf306e7068781fb2885e0fff2d6f47475a73ca01fdf137f329701c7f240bc03f485daafbbeb kglobalaccel-5.116.0.tar.xz" diff --git a/user/kguiaddons/APKBUILD b/user/kguiaddons/APKBUILD index 8d39e362e..f64979f74 100644 --- a/user/kguiaddons/APKBUILD +++ b/user/kguiaddons/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kguiaddons -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for creating high-level user interfaces" url="https://www.kde.org/" arch="all" -options="!check" # Requires running X11 +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev libxcb-dev libx11-dev" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b8fe5c809035f194c2118ed9a4cd4bae29c610447b67c9cca5b02365fe4111b35252ea6c898d9df717ca9867ccd96faf2845404b0158acee7854c8407218f7e5 kguiaddons-5.94.0.tar.xz" +sha512sums="6a09bd6b7a3142827e9e44b1526daf945b6b777d091e0c7926fb48604c1ca586c6acc3282b5c8cabec24fba0be3c78e32141ea3307c79d84465718222bd8af04 kguiaddons-5.116.0.tar.xz" diff --git a/user/kholidays/APKBUILD b/user/kholidays/APKBUILD index 9c11de84b..6e5427992 100644 --- a/user/kholidays/APKBUILD +++ b/user/kholidays/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kholidays -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="List of national holidays for many countries" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="7c362a8ba852258c95c6eceb9f7dbd82fd3bdfdeab5c844c5efd772244c823f772616e68e67f40f3c641278eec65126b9ee599942b8393103600b24d97e9e77e kholidays-5.94.0.tar.xz" +sha512sums="b12c7a4fd427992d94a79d87d077cf0fbcbd790046ded27afa95b7aaeed1fb0826ec544b555516d7e6dc451577674e6f3151dc0ff80890a3e10753dbc5b861fa kholidays-5.116.0.tar.xz" diff --git a/user/khotkeys/APKBUILD b/user/khotkeys/APKBUILD index 7c909a978..bd601d150 100644 --- a/user/khotkeys/APKBUILD +++ b/user/khotkeys/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=khotkeys -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Hot key mapping for KDE Plasma 5" url="https://www.KDE.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b12373b8295cf8e7909a72a07fab8847d8cf26053814b02acf215e912156b797c3a7c3cd459f04e9b6b47cd09d5941d1f3433ee4e8b128e49d3dc9832fbb3876 khotkeys-5.24.5.tar.xz" +sha512sums="da17b96c5970b34ffe1b190296284773e1e9997cd0df066464271982f096731ee2a57392ea906e3d2d04d9501bc562108c77e2fdf05012ea964d87a2aca3395e khotkeys-5.27.12.tar.xz" diff --git a/user/khtml/APKBUILD b/user/khtml/APKBUILD index a725a22f1..621b6caba 100644 --- a/user/khtml/APKBUILD +++ b/user/khtml/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=khtml -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="The KDE HTML library, ancestor of WebKit" url="https://konqueror.org/" arch="all" -options="!check" # Tests require X11. +options="checkx11" license="LGPL-2.1+ AND LGPL-2.1-only" depends="" depends_dev="qt5-qtbase-dev kcodecs-dev ki18n-dev kparts-dev ktextwidgets-dev @@ -26,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="46ba7aa0f29868773db54e632aeeefdd6a92f9b6ac55f9bebb5d903f04f7a41fe9afae52fe43cd23c9f512382042e8c709f5b7897d8ed98e73e710188d1be568 khtml-5.94.0.tar.xz" +sha512sums="01fb4322badcc22834cea2730e8f5a9208135892818ad18823d742bf46056871aa0f0ccb88fde934abfe8307d5a05c79752cd727a3a780bbd26b8684c48d60df khtml-5.116.0.tar.xz" diff --git a/user/ki18n/APKBUILD b/user/ki18n/APKBUILD index 68f9074e3..00146384d 100644 --- a/user/ki18n/APKBUILD +++ b/user/ki18n/APKBUILD @@ -1,17 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=ki18n -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for creating multi-lingual software" url="https://www.kde.org/" arch="all" -options="!check" +options="checkx11" license="LGPL-2.0+" -depends="" +depends="iso-codes" depends_dev="qt5-qtbase-dev qt5-qtscript-dev qt5-qtdeclarative-dev" makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz - qt5-qttools-dev" + iso-codes-dev qt5-qttools-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" source="https://download.kde.org/stable/frameworks/${pkgver%.*}/ki18n-$pkgver.tar.xz" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -32,11 +32,17 @@ build() { } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + # Upstream: https://bugs.kde.org/show_bug.cgi?id=468290 + # At least we know it's not musl. + # 2 - ki18n-klocalizedstringtest (Failed) + # 7 - kcatalogtest (Failed) + # 8 - kcountrytest (Failed) + # 9 - kcountrysubdivisiontest (Failed) + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'k(localizedstring|catalog|country|countrysubdivision)test' } package() { make DESTDIR="$pkgdir" install } -sha512sums="ff00a56f1d6e5a425d025320be6f6e1559e329f56e68975df9d7c1ecdc0108f2118af37373db583d7760f34877bd0f18bef47080a70dfca628d958f35e8f9e15 ki18n-5.94.0.tar.xz" +sha512sums="0932336e412c02e23241db11b4c7828f834accea58d6035b4affc3ecdbc7fd0e5a8901d41bf0812ac1cc2ea51ef4a9b3611e234619e77eaec110d8069d0cdbf0 ki18n-5.116.0.tar.xz" diff --git a/user/kiconthemes/APKBUILD b/user/kiconthemes/APKBUILD index 645ebc8ed..1776e6a86 100644 --- a/user/kiconthemes/APKBUILD +++ b/user/kiconthemes/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kiconthemes -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for icon theming" url="https://www.kde.org/" arch="all" -options="!check" # requires X11 running +options="checkx11" license="LGPL-2.1-only" depends="" depends_dev="qt5-qtbase-dev qt5-qtsvg-dev karchive-dev ki18n-dev @@ -14,7 +14,9 @@ depends_dev="qt5-qtbase-dev qt5-qtsvg-dev karchive-dev ki18n-dev makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz qt5-qttools-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kiconthemes-$pkgver.tar.xz" +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kiconthemes-$pkgver.tar.xz + fields.patch + " build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -24,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +42,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="3cd2c0302a94656322dff1e79083ee4f8fbf29d2acfbfaa4a22cdaec9a7df6fc997c8c00ee98dee2fac1a499795bdb0a4b178b8b9b97b5fe40509661d6e5acaf kiconthemes-5.94.0.tar.xz" +sha512sums="2c34793a8ac925c4a6fe548c26f5444e74e84624848158053e282716e59515981f248c17ec24f48794754db0eafe1b3bd63e6202c4a22fa805621084b643637c kiconthemes-5.116.0.tar.xz +f8056168a6f414f1daacec236d9dc51021edb51e7c1e9ba84405db41f419c60cacb7df70875197b7792627db460a5c946a5374d904762dde7287f072cd44aaca fields.patch" diff --git a/user/kiconthemes/fields.patch b/user/kiconthemes/fields.patch new file mode 100644 index 000000000..cf9960cfc --- /dev/null +++ b/user/kiconthemes/fields.patch @@ -0,0 +1,14 @@ +Perform the QRgb to hex conversion in an endian-independent way. + +--- kiconthemes-5.116.0/src/kiconloader.cpp.old 2024-05-04 06:40:07.000000000 -0500 ++++ kiconthemes-5.116.0/src/kiconloader.cpp 2025-06-30 05:00:25.377715342 -0500 +@@ -77,7 +77,8 @@ + { + static const char hexLookup[] = "0123456789abcdef"; + buffer += 7; +- uchar *colorFields = reinterpret_cast<uchar *>(&colorData); ++ uchar fields[4] = {qBlue(colorData), qGreen(colorData), qRed(colorData), qAlpha(colorData)}; ++ uchar *colorFields = &fields[0]; + + for (int i = 0; i < 4; i++) { + *buffer-- = hexLookup[*colorFields & 0xf]; diff --git a/user/kidletime/APKBUILD b/user/kidletime/APKBUILD index 060926a40..2d3ba9039 100644 --- a/user/kidletime/APKBUILD +++ b/user/kidletime/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kidletime -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for determining a user's idle time" url="https://api.kde.org/frameworks/kidletime/html/index.html" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="121d6684b699f1319979d4736e45d20a66f2e21211d66c35f9dfec32487cc1eb50d9704725ea7016023966375d45911f5417eecd3c9f3c970ee86e4ca5aa9ef1 kidletime-5.94.0.tar.xz" +sha512sums="a8172a069266e523cc07f37ce1f4c5f65a421c99eb314e26f68cc32630b8f0da783beee9d2ffe2740113d60ae9b4c280ca9de8bb89bd5db8e56c9b31172ec408 kidletime-5.116.0.tar.xz" diff --git a/user/kinfocenter/APKBUILD b/user/kinfocenter/APKBUILD index ec7a82f22..d470788c4 100644 --- a/user/kinfocenter/APKBUILD +++ b/user/kinfocenter/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kinfocenter -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Information about the running computer" url="https://userbase.kde.org/KInfoCenter" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="598d7993808ac6f32ae89c2a50624caf81c4d7a355ae155469d79fda923d3bcd4256077863186a42d594ddd36c06ffb5c3fd02987cf638b2bc88dffdb9b47883 kinfocenter-5.24.5.tar.xz" +sha512sums="76c2e261ee0fbe64e7231272810b51a08b39071a1565c68d22ed7e4f6b5675690194d04c3d1036f53cea1a54759035682bc9b5d7826dbd064c86aa213daee67a kinfocenter-5.27.12.tar.xz" diff --git a/user/kinit/APKBUILD b/user/kinit/APKBUILD index 8906fdb2c..555ad6ad9 100644 --- a/user/kinit/APKBUILD +++ b/user/kinit/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kinit -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="KDE initialisation routines" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -34,4 +34,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="82c4d6500ee7108348c91bdf5fcf34b1e5188ef26ec0a3063f761dfb196dbd01cc53223b5b7f0e7167587c56892f3cbfaa8aa63610404dfd771d4237cbe445e5 kinit-5.94.0.tar.xz" +sha512sums="741bbf6cf52491f063457a4fad8de91cde1f449b498dc36b76bd86093b13e6c3bd135833bd9a1316dbeec1045ad4755adafc8d7b41533f8b6ab175525b3671e5 kinit-5.116.0.tar.xz" diff --git a/user/kio/APKBUILD b/user/kio/APKBUILD index d11ea594f..40a4c2591 100644 --- a/user/kio/APKBUILD +++ b/user/kio/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kio -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for data and file management" url="https://www.kde.org/" arch="all" -options="!checkroot !check" # Test requires X11; segfault bug #34 +options="!checkroot checkx11" license="LGPL-2.1-only AND LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)" depends="kded" depends_dev="qt5-qtbase-dev attica-dev kbookmarks-dev kcompletion-dev @@ -15,13 +15,11 @@ depends_dev="qt5-qtbase-dev attica-dev kbookmarks-dev kcompletion-dev docdepends="kcoreaddons-doc kservice-doc kcompletion-doc kwidgetsaddons-doc kjobwidgets-doc kbookmarks-doc kitemviews-doc kxmlgui-doc solid-doc kwindowsystem-doc kconfig-doc kconfigwidgets-doc kcodecs-doc kauth-doc" -makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev python3 +makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev python3 chelf qt5-qttools-dev doxygen graphviz karchive-dev kdbusaddons-dev ki18n-dev knotifications-dev kwallet-dev acl-dev kded-dev krb5-dev $docdepends" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kio-$pkgver.tar.xz - cxx17.patch - " +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kio-$pkgver.tar.xz" build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -31,21 +29,34 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ ${CMAKE_CROSSOPTS} . make + # KIO threads use a lot of stack space. We need to make sure they don't + # run out of stack space during file operations. + chelf -s 1048576 bin/libKF5KIOCore.so.5 } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + # Multiple tests require umask to be 077; example: JobTest::storedPut(). + # Disable these due to #1348: + # 44 - kiowidgets-kdirlistertest (Failed) + # 45 - kiowidgets-kdirmodeltest (Failed) + # 60 - kiofilewidgets-kfilewidgettest (Failed) + # Disable this due to known musl limitations (#1349): + # 70 - kioworker-httpheaderdispositiontest (Failed) + # These try to connect to google.com: + # 12 - kiocore-ktcpsockettest (Failed) + # 14 - kiocore-mimetypefinderjobtest (Failed) + # 28 - kiogui-openurljobtest (Failed) + (umask 077; CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(kdirlistertest|kdirmodeltest|kfilewidgettest|httpheaderdispositiontest|ktcpsockettest|mimetypefinderjobtest|openurljobtest)') } package() { make DESTDIR="$pkgdir" install } -sha512sums="acf7456ab0a3d122d8bbf6e7dbff51f958b1c6bf29f7295c21c78c5c707d5fee05b76d30e51832f35220cd08bf06a2e27c11153559b25f74b7c8f5f532f50955 kio-5.94.0.tar.xz -a3be4ad4800ada7331a47833f51d13bc5cf47e9e6153fffff27d18462f77083221a7aa02a36c0afe57d992a5292777628c09c5443ff58ca1803ddfbc482fa745 cxx17.patch" +sha512sums="a07661717846860db3a64bcead9c2b80192d8c5b8e66a25f0f83ced6b596c4e8af7eb94e68b17770f45b36b22ccbcecaef4f8590d790cf69fceb140ab9e47376 kio-5.116.0.tar.xz" diff --git a/user/kio/cxx17.patch b/user/kio/cxx17.patch deleted file mode 100644 index d73e93b65..000000000 --- a/user/kio/cxx17.patch +++ /dev/null @@ -1,21 +0,0 @@ -G++ does not have transform_reduce until C++20, despite being part of the -C++17 standard. This reverts the only usage of Parallelism TR2 in KIO. - ---- kio-5.94.0/src/filewidgets/kurlnavigator.cpp.old 2022-05-12 07:14:39.000000000 -0500 -+++ kio-5.94.0/src/filewidgets/kurlnavigator.cpp 2022-06-03 01:42:48.541164895 -0500 -@@ -729,11 +729,11 @@ - availableWidth -= m_protocols->width(); - } - -- auto MinWidth = [](const KUrlNavigatorButton *button) { -- return button->minimumWidth(); -- }; - // Check whether buttons must be hidden at all... -- const int requiredButtonWidth = std::transform_reduce(m_navButtons.cbegin(), m_navButtons.cend(), 0, std::plus<>(), MinWidth); -+ int requiredButtonWidth = 0; -+ for (const KUrlNavigatorButton *button : std::as_const(m_navButtons)) { -+ requiredButtonWidth += button->minimumWidth(); -+ } - - if (requiredButtonWidth > availableWidth) { - // At least one button must be hidden. This implies that the diff --git a/user/kirigami2/APKBUILD b/user/kirigami2/APKBUILD index 7abbbbdb4..90165a905 100644 --- a/user/kirigami2/APKBUILD +++ b/user/kirigami2/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kirigami2 -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for rapidly designing usable interfaces" url="https://www.kde.org/" arch="all" -options="!check" # Tests require accelerated X11 desktop. +options="checkx11" license="LGPL-2.1+" depends="qt5-qtgraphicaleffects" depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="e836f45729f54a5c83c7dd5bb5def3e36f73cd6367456953bab8e3bdd87c6bf9845ff3f4f0458f289c0450a4ac02a8fe1984458a591172e9e87b782ac59f9a6f kirigami2-5.94.0.tar.xz" +sha512sums="bb1f7525cb77dc2849bc9782be9b4522b4559b78e8ad88c9cd9953a6d9736cbe63a33a76fadebd9a1fb04f15007e5141aa465991b99117f7c2f26e09c722b66e kirigami2-5.116.0.tar.xz" diff --git a/user/kitemmodels/APKBUILD b/user/kitemmodels/APKBUILD index a199633b9..879a23b34 100644 --- a/user/kitemmodels/APKBUILD +++ b/user/kitemmodels/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kitemmodels -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for sorting and searching objects" url="https://www.kde.org/" arch="all" -options="!check" # Test suite requires X11 +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="ae284ed3811044a13c4d2fcbfae36822e1eed012395eb1ab58758f084319411796a15ae99b65dd4ca25b6d8aba59c2af5a65179db524582a8388ce77e2edb955 kitemmodels-5.94.0.tar.xz" +sha512sums="ef3ee4ba45fdf8fac395f3d678421fccb7bfdafec2dacaca203dacf90f65548e31d2d0eb5165c4cb2ce5cf71e4bca289c1af9c9e8dead710f9a19d7831db3bfb kitemmodels-5.116.0.tar.xz" diff --git a/user/kitemviews/APKBUILD b/user/kitemviews/APKBUILD index c87d9b4b2..6771dce5c 100644 --- a/user/kitemviews/APKBUILD +++ b/user/kitemviews/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kitemviews -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for displaying collections of items" url="https://www.kde.org/" arch="all" -options="!check" # Test requires X11 +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="c94157fb034c1e8b3787b37d873808d9c19da520b5c85483149bfd47fa6d4b5d93429ee21a3d7b5cb5e27d759d01c009ab6c3a6cce8a55a490a063a728916003 kitemviews-5.94.0.tar.xz" +sha512sums="631454b73785d131bcdf7631939db7955f3ec158078787657e74953818e5df1ad7757065ad00336b6efc898e4cf35876541201fac0727875a5ac7f3abfc3e9d7 kitemviews-5.116.0.tar.xz" diff --git a/user/kjobwidgets/APKBUILD b/user/kjobwidgets/APKBUILD index c3990d77f..4d5dd1707 100644 --- a/user/kjobwidgets/APKBUILD +++ b/user/kjobwidgets/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kjobwidgets -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework providing widgets that show job progress" url="https://www.kde.org/" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="9b038faed6c9174cdcdd21db85d078be6ae02e9091a3d30e3fcda290a130a6c3ec5ee2a9d96df895e6d5c123c979ca584cb487bc637f437cfa3fbe55bc9deb33 kjobwidgets-5.94.0.tar.xz" +sha512sums="1a138fb048f9cf91aba5b512d0be43ed4add3ac7b31a36ad21a447b3dabcaf65ecfedd92660e634b8f4cd7526eb9ba44c806477d153394262437f3d858af8e2d kjobwidgets-5.116.0.tar.xz" diff --git a/user/kjs/APKBUILD b/user/kjs/APKBUILD index 4a3fe271f..cf8a38e9b 100644 --- a/user/kjs/APKBUILD +++ b/user/kjs/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kjs -pkgver=5.94.0 -pkgrel=1 +pkgver=5.116.0 +pkgrel=0 pkgdesc="Independent, free JavaScript engine" url="https://www.kde.org/" arch="all" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -36,4 +36,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="38e1d4d73e6ccf48d01d7c48315b1a69f5a008c91f7fb4df9a4f0dc80447a022701cb90af19b8e18785016895186d6e035583424326017ab79d50bc5aab9fcea kjs-5.94.0.tar.xz" +sha512sums="418b8f89e05259b912865e1b9777ba0dc8aa10f69b0359f48ecb33495fdb3ec3906d02d825fe307c0b2ffad45e7c28458da0b0b23cf75e492e970e002b090113 kjs-5.116.0.tar.xz" diff --git a/user/kjsembed/APKBUILD b/user/kjsembed/APKBUILD index 3c819bfc4..8d8e9ce1c 100644 --- a/user/kjsembed/APKBUILD +++ b/user/kjsembed/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kjsembed -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="JavaScript bindings for QObject" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e3d4d527ba12f878dda01994cf4011f9a26083c2efa906430881fe56cab840453350a1420397b92363480de231af177fcb31ba9e1c3964862c66408502afb8b5 kjsembed-5.94.0.tar.xz" +sha512sums="d5c1ea49e64ab4006129ef4edec508b398bc29f297ea0495ec6ea384c44b90c2fe3c7bfbe72468cd676fbc3e3e334b4e12538380856426c53110f54b8dc2d0ad kjsembed-5.116.0.tar.xz" diff --git a/user/kmediaplayer/APKBUILD b/user/kmediaplayer/APKBUILD index 8e40b6088..b27a7be7f 100644 --- a/user/kmediaplayer/APKBUILD +++ b/user/kmediaplayer/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kmediaplayer -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Media player framework for KDE 5" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="7e5f7b8a8539580301a86baedc9fa50228bd01742578d1e48699c5cb803408b58a520ddb7b4c32486e87b1aac603d84f61c81b78b3586f94f932d2194c1fa155 kmediaplayer-5.94.0.tar.xz" +sha512sums="b5a200211212e74b3f212ac92a8a98718e3d76889cd166db83b500eed570149cb408a2ca3399a5f4d1964ae3b2088d8c16395f2c71c4bd451b4c498920d6df89 kmediaplayer-5.116.0.tar.xz" diff --git a/user/kmenuedit/APKBUILD b/user/kmenuedit/APKBUILD index e788f1437..4ddb91824 100644 --- a/user/kmenuedit/APKBUILD +++ b/user/kmenuedit/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kmenuedit -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Menu editor for Plasma 5" url="https://www.KDE.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="c637b662b366691a179d8ea67a91062a10a6d40467a72b3858f6f43f20ea6e03bfa65e1861e4cafd329098a8fd1b7976c565c355496df7f5199d8316e930b759 kmenuedit-5.24.5.tar.xz" +sha512sums="b01ee9303204a2d80e49b6dff0028fc056bc094890b950ffc4ac425fd57586fef29339cde44af4d565ce386194951543d29f29753dde853243d0eff55a26ccc8 kmenuedit-5.27.12.tar.xz" diff --git a/user/knewstuff/APKBUILD b/user/knewstuff/APKBUILD index bef47c3f5..c5e8ef8e8 100644 --- a/user/knewstuff/APKBUILD +++ b/user/knewstuff/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=knewstuff -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for discovering and downloading plugins, themes, and more" url="https://www.kde.org/" arch="all" -options="!check" # Requires X11. +options="checkx11" license="LGPL-2.0+" depends="kirigami2" depends_dev="qt5-qtbase-dev attica-dev kconfig-dev kservice-dev kxmlgui-dev @@ -18,9 +18,7 @@ makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz ki18n-dev kiconthemes-dev kirigami2-dev kitemviews-dev kpackage-dev ktextwidgets-dev kwidgetsaddons-dev syndication-dev $docdepends" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/knewstuff-$pkgver.tar.xz - backport.patch - " +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/knewstuff-$pkgver.tar.xz" build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -30,7 +28,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -47,5 +45,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="6269614a0df2616bd5bd1a8e9c3f8dc16920bbd4cf8fd18a5ccc1e818c292d90533de3dc77ce8fbbb183388ad6fed72a30b78177eddd87624499b3c75d55a226 knewstuff-5.94.0.tar.xz -5c73d39a78658899f4e7b2526608498ff63bf4e6f9b730b0f20f3205017e77fe4a9a96e3ab9e42f0789234a3e0658a89f646bc040488465f07689bc9629105fc backport.patch" +sha512sums="c66f8905c622964a81609d384ea64c0614714b4d760ee908e2efcdaab4ef146fc2af099625e81b83c2e43e4f97a0f5960dae345cbf9d8453a15b465536c06152 knewstuff-5.116.0.tar.xz" diff --git a/user/knewstuff/backport.patch b/user/knewstuff/backport.patch deleted file mode 100644 index 002d4c182..000000000 --- a/user/knewstuff/backport.patch +++ /dev/null @@ -1,54 +0,0 @@ -From b634b65dd081746ccb8bdfa9bf2d878d13e2c0fb Mon Sep 17 00:00:00 2001 -From: Alexander Lohnau <alexander.lohnau@gmx.de> -Date: Tue, 24 May 2022 12:58:54 +0200 -Subject: [PATCH] Fix QtQuickDialogWrapper dialog not being usable in konsole - -Patch provided by David Edmundson. - -``` -Issue is QGuiApplicationPrivate::showModalWindow - -it marks every other non-modal window as blocked, including new windows. - -when we focus the new dialog at a wayland/X level Qt gets it, but in it's own internal dispatching ignores that and sends it to the modal window - -Qt is smart enough to handle child windows appropriately, but only if it knows about them. Having a transient parent should take care of this. We should have this anyway as that will fix some window placement bugs. -``` - -BUG: 452593 ---- - src/qtquickdialogwrapper.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/src/qtquickdialogwrapper.cpp b/src/qtquickdialogwrapper.cpp -index 4f22b650..e31e8d80 100644 ---- a/src/qtquickdialogwrapper.cpp -+++ b/src/qtquickdialogwrapper.cpp -@@ -7,10 +7,12 @@ - #include "qtquickdialogwrapper.h" - - #include <QEventLoop> -+#include <QGuiApplication> - #include <QQmlComponent> - #include <QQmlContext> - #include <QQmlEngine> - #include <QTimer> -+#include <QWindow> - - #include <KLocalizedContext> - -@@ -70,6 +72,11 @@ QtQuickDialogWrapper::QtQuickDialogWrapper(const QString &configFile, QObject *p - - // Forward relevant signals - connect(d->item, SIGNAL(closed()), this, SIGNAL(closed())); -+ -+ // Otherwise, the dialog is not in front of other popups, BUG: 452593 -+ auto window = qobject_cast<QWindow *>(d->item); -+ Q_ASSERT(window); -+ window->setTransientParent(QGuiApplication::focusWindow()); - } - } - --- -GitLab - diff --git a/user/knotifications/APKBUILD b/user/knotifications/APKBUILD index 26f42a2ea..be057e35c 100644 --- a/user/knotifications/APKBUILD +++ b/user/knotifications/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=knotifications -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for sending notifications to users" url="https://www.kde.org/" arch="all" -options="!check" # Requires DBus daemon running. +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev kwindowsystem-dev kconfig-dev @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e77886ae03b1a59d9da74a83b7945cb9e7a60992f31607d0ed545418cb384641fac8b8a6ce431c8ad5c0c57d939dab66a52a48febf2624602d4e3a6eaa3475cc knotifications-5.94.0.tar.xz" +sha512sums="e49b9930c69581b4498a012483b04588c52e5ba04035dbe01e21dbe6c07e8f69a14f40c0ac07a0299bc1ae182ad47b47ecd5ab5da2fb7a0b5a2f1c90282c289c knotifications-5.116.0.tar.xz" diff --git a/user/knotifyconfig/APKBUILD b/user/knotifyconfig/APKBUILD index b17edd7ab..a05c35884 100644 --- a/user/knotifyconfig/APKBUILD +++ b/user/knotifyconfig/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=knotifyconfig -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for configuring notifications" url="https://www.kde.org/" @@ -26,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="0a36b39f003ee89f8b041408bd54fa3ae95619367d19fe99e757176222dc6b1cf20f76092e24bb5dc0ff09862558c4a34e7e2a40c89af0795a0ead123e4825c1 knotifyconfig-5.94.0.tar.xz" +sha512sums="e251964dc5dbc518e5a993e1d6605435f5d858868631d00178484c57e418deba4e688d3ed5dd6e58b9fcda96991ac0043da5ff762ac6038d1187a4625103d038 knotifyconfig-5.116.0.tar.xz" diff --git a/user/kpackage/APKBUILD b/user/kpackage/APKBUILD index 7938e35b7..b6ef0849a 100644 --- a/user/kpackage/APKBUILD +++ b/user/kpackage/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kpackage -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Frameworks for managing KDE data packages" url="https://www.kde.org/" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="65c58a01c302e3f5ad89fab1bec3b9bf1f17a9a94408b565137a1cfb4f083436c39e41b57c11449d5f764252df86eb7e9b4a08b86d65492f0f7eb1899b8d2cc7 kpackage-5.94.0.tar.xz" +sha512sums="15129fecdf53db1a0fa32fb4ebfc82f7b3d7edd9591032267d80b61458e652813f3d18f406a473ca75c202fb7e401815ee290c3c30d3c54920562bdf00a53632 kpackage-5.116.0.tar.xz" diff --git a/user/kparts/APKBUILD b/user/kparts/APKBUILD index a20822413..5e308b667 100644 --- a/user/kparts/APKBUILD +++ b/user/kparts/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kparts -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for user interface components" url="https://www.kde.org/" arch="all" -options="!check" # Requires X11 running. +options="checkx11" license="GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+ AND (LGPL-2.0-only OR LGPL-3.0-only) AND CC0-1.0" depends="" depends_dev="qt5-qtbase-dev kio-dev kservice-dev ktextwidgets-dev kxmlgui-dev" @@ -28,7 +28,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -44,4 +44,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="1046617d69c9e67c02a1924d5a20a7e64ee69cb93477d28a8686b4658bdcba8765d9ec7b5f27e4926feaab34db459bbaac9e8f25eb4ee674a7ff622882bec4e8 kparts-5.94.0.tar.xz" +sha512sums="a619168f6e2622c64e4304641da47f91deef49843dfec72a08aa775e24b9319f7b550bc423f6b2516ef0a38bb2c39234d1325f25c62b57c8c6daa5fb7580813e kparts-5.116.0.tar.xz" diff --git a/user/kpeople/APKBUILD b/user/kpeople/APKBUILD index 186200857..364fed9b9 100644 --- a/user/kpeople/APKBUILD +++ b/user/kpeople/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kpeople -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Provides access to all contacts and groups them by physical person" url="https://api.kde.org/frameworks/kpeople/html/index.html" arch="all" -options="!check" # 03:40:52 <@Elizafox> prolly expects dbus? +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kcoreaddons-dev ki18n-dev @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="257765a7591759118a5b76e66c67e7eb5bd2b2eaef9dce1eb7694824081ea830a87cce90465d1920961dac969fc33a8763afe1ea6080ee9f4b907fb3000a8be3 kpeople-5.94.0.tar.xz" +sha512sums="3cbd62d9696592b654a9568d5789eb0acc370e4fcb174938db23a0ac03949f9fe174d6ff4abe35a7132319c725349be2520d7857a9d0b83048df23bb38f76232 kpeople-5.116.0.tar.xz" diff --git a/user/kplotting/APKBUILD b/user/kplotting/APKBUILD index 02693bb0d..4751d8751 100644 --- a/user/kplotting/APKBUILD +++ b/user/kplotting/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kplotting -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for data plotting functions" url="https://www.kde.org/" arch="all" -options="!check" # Test requires accelerated X11 display. +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="a4472b15bcdfc71f538193e95b8065f18717a85259b033823b31f48b2dcc73eddf5d380459b00ec27ae8922add16176bdaf78adf958be6226845a5cf5d72a653 kplotting-5.94.0.tar.xz" +sha512sums="1a4d8313c57d32c6af41127ce27086d0d357ade8126ff4dc1d1c5306b198f3d1ab24d67105cef3bad318d753210553fe275350a173b18c1d3c485f213de95fe9 kplotting-5.116.0.tar.xz" diff --git a/user/kpty/APKBUILD b/user/kpty/APKBUILD index abe2549d5..e3199c570 100644 --- a/user/kpty/APKBUILD +++ b/user/kpty/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kpty -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for implementing terminal emulation" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="d3f5f2c1bf73fed79e1dc9735635b4241f4e3ef113bde76c997f26a0471ee483457fd694a2a2861838f6240ec9831c9c391aff8d69490a90a73b021a2c506562 kpty-5.94.0.tar.xz" +sha512sums="5aebb2a66be19dfadc2896b26864b9b0b4074d8c46ead97c7857b035cfe370a7fbf144c7e1b52725ec20339e64a0d08f6c913fe6c3a1ec614b557b4d950a3f21 kpty-5.116.0.tar.xz" diff --git a/user/kquickcharts/APKBUILD b/user/kquickcharts/APKBUILD index 99ae441fb..972adf8a0 100644 --- a/user/kquickcharts/APKBUILD +++ b/user/kquickcharts/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kquickcharts -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="A QtQuick plugin providing high-performance charts" url="https://www.kde.org/" arch="all" -options="!check" # Requires X11 +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="5877118f4d088a256eab6dbff6efcd88b25b7117d6be4f0debc6af5fe9244836fe683658a5593ee53e94d33ff08b48a31631605c5eae63827864432fd4c4d88b kquickcharts-5.94.0.tar.xz" +sha512sums="c7bdcee5f13457bab197bf593e25c2600f77f4ff5ac682ff894b5848ac5d6c84b05453f0aef53960ad5e7a6b7891088c17fb9a0b67bc82b53fe1dfdc655fbd1b kquickcharts-5.116.0.tar.xz" diff --git a/user/kross/APKBUILD b/user/kross/APKBUILD index 6ebec3d56..f53698559 100644 --- a/user/kross/APKBUILD +++ b/user/kross/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kross -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for scripting KDE applications" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="51000c2ff7f951230a32965e317865c583ecd174fac9a531c5503ed1aac713f309cb6b7472c2232b9d63de1d3a4e756c9b5483f2c45e71c86639318ae78c60d7 kross-5.94.0.tar.xz" +sha512sums="cc6b3e4da7c5ccdbcbe7917405f84930ab89a9d82999ccc7016affa5dbdd540e3da7f5a45bfdc753c5160fefc506cdda9717e424dc33cba7f97ea8323e53564b kross-5.116.0.tar.xz" diff --git a/user/krunner/APKBUILD b/user/krunner/APKBUILD index 6e3ebb7e0..444382e70 100644 --- a/user/krunner/APKBUILD +++ b/user/krunner/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=krunner -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Parallel query system" url="https://api.kde.org/frameworks/krunner/html/index.html" arch="all" -options="!check" # Test suite requires DBus and X11 session. +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev kconfig-dev kservice-dev plasma-framework-dev" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="86f2d81e4dbb0d1c716b4d8fc4d0dbda8494fa81bfb305ddc19d7278250fca48c3bc441e7773a27330d8f9888b81e293b5f585921e99ce252541db3ac0467b30 krunner-5.94.0.tar.xz" +sha512sums="53fdc8e841219578a75b7d6ca67aaebd44e2208adfc99a4937c8377369f66a0f907390f49eca6d98385e3fdddc27ec1844620d7390900999d5eb966a565666c9 krunner-5.116.0.tar.xz" diff --git a/user/kscreen/APKBUILD b/user/kscreen/APKBUILD index 8450a0259..f03a2385a 100644 --- a/user/kscreen/APKBUILD +++ b/user/kscreen/APKBUILD @@ -1,19 +1,19 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kscreen -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE Plasma screen management software (user-facing)" url="https://www.kde.org/" arch="all" -options="!check" # Requires dbus-x11 and both of them running +options="!check" # Can't find its own DBus files for testing. license="LGPL-2.1+ AND GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only)" depends="" makedepends="$depends_dev cmake extra-cmake-modules qt5-qtx11extras-dev qt5-qtsensors-dev libxcb-dev kcmutils-dev kconfig-dev kdbusaddons-dev kdeclarative-dev kglobalaccel-dev ki18n-dev kiconthemes-dev kxmlgui-dev plasma-framework-dev libkscreen-dev libxi-dev kauth-dev kcodecs-dev - kcoreaddons-dev kpackage-dev kservice-dev" + kcoreaddons-dev kpackage-dev kservice-dev layer-shell-qt-dev" subpackages="$pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/kscreen-$pkgver.tar.xz" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="770dfb968f8f8bf96b6ad3bf71f18f5baca35b2a4daa72b8806957ad1e050003158319edba84ebf999134e106ef916d829d391c33d79c58edb1000f503f67c97 kscreen-5.24.5.tar.xz" +sha512sums="3910b5aa2a083fa940beca2a8a72ab953306f87c370f6e39839343b259965a396db846b9f3dd98a0c56b18c137c96d14400ff98b5ef663043aff7769f8c4f880 kscreen-5.27.12.tar.xz" diff --git a/user/kscreenlocker/APKBUILD b/user/kscreenlocker/APKBUILD index 41f327bf5..028af8f1d 100644 --- a/user/kscreenlocker/APKBUILD +++ b/user/kscreenlocker/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kscreenlocker -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Secure X11 screen locker" url="https://www.kde.org/" @@ -15,7 +15,7 @@ makedepends="$depends_dev cmake extra-cmake-modules python3 libx11-dev qt5-qtdeclarative-dev kcmutils-dev kcrash-dev kdeclarative-dev kglobalaccel-dev ki18n-dev kidletime-dev knotifications-dev ktextwidgets-dev kwayland-dev kwindowsystem-dev kxmlgui-dev solid-dev - elogind-dev layer-shell-qt-dev" + elogind-dev layer-shell-qt-dev libkscreen-dev" subpackages="$pkgname-dev $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/kscreenlocker-$pkgver.tar.xz kde.pam @@ -30,7 +30,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -47,6 +47,6 @@ package() { install -m644 "$srcdir"/kde-np.pam "$pkgdir"/etc/pam.d/kde-np } -sha512sums="c3252ead5f6cedece82ea94d88324b968938d0218ec05182f07fea85ead5ec451bc04bf417fc4f7a0f37aa56358caeb893175eae8cbb74ea748f843de9aaab83 kscreenlocker-5.24.5.tar.xz +sha512sums="f71aef8e7bdd1703f7d03279eb9818102ad016e47dadedd4254d3d58f705e5f1a0c179a0ab250c8cf68a64d350efde6930dc5ff1427e92fc425ac5b73d2888eb kscreenlocker-5.27.12.tar.xz 56e87d02d75c4a8cc4ed183faed416fb4972e7f223b8759959c0f5da32e11e657907a1df279d62a44a6a174f5aca8b2ac66a5f3325c5deb92011bcf71eed74c3 kde.pam 565265485dd7466b77966d75a56766216b8bcc187c95a997e531e9481cf50ddbe576071eb0e334421202bcab19aa6de6b93e042447ca4797a24bf97e1d053ffd kde-np.pam" diff --git a/user/kservice/APKBUILD b/user/kservice/APKBUILD index f06adc360..1cee211c4 100644 --- a/user/kservice/APKBUILD +++ b/user/kservice/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kservice -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for implementing plugins and services" url="https://www.kde.org/" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_TESTING=OFF \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="d8c93e14821bc103a375e86f99fdf19f966596f7acb37eb5209ac0fbef045b5e56e3c725bfada4b47d00ea8119a00de3e8f246fcb4cb7b390578f48945ae1e15 kservice-5.94.0.tar.xz" +sha512sums="daadc5d0bfa2dbfc6ae0c6535f407851d1adc67529d2262d92c2e8dff8a45aa701790d8aa2e6d97d9c433409ffee4767214523f992937e244b02fb27d62ffea8 kservice-5.116.0.tar.xz" diff --git a/user/ksshaskpass/APKBUILD b/user/ksshaskpass/APKBUILD index 3dbd8647b..ba491a3e3 100644 --- a/user/ksshaskpass/APKBUILD +++ b/user/ksshaskpass/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=ksshaskpass -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Plasma integration for SSH agents" url="https://www.KDE.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -36,4 +36,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e4d7358eb213105a4e479eb3c9d229a87d86c4ebda199f486f9952f81dc1e91b43ba30d834907586f9badbb7e2933e44af5713119caa2e3bc060f16936e9a457 ksshaskpass-5.24.5.tar.xz" +sha512sums="5ebfb9a60f674d433cc621234996a427935468d8d3268d00304c59c413229a1d360628bcf68a5b6c15f6967bb5000099aca069795894b3ec265bae06f8b0ac6c ksshaskpass-5.27.12.tar.xz" diff --git a/user/ksystemstats/APKBUILD b/user/ksystemstats/APKBUILD index 118825d8c..5417c7126 100644 --- a/user/ksystemstats/APKBUILD +++ b/user/ksystemstats/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=ksystemstats -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE system statistics daemon" url="https://www.kde.org/" arch="all" -options="!check" # Requires D-Bus. +options="checkx11" license="BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only" depends="" makedepends="cmake extra-cmake-modules qt5-qtbase-dev kauth-dev kcodecs-dev @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="6bbcf6512c223fc97203c02baca5bb230ef86c8012318307e32bc030160f31fc2797a28d95af442826b5f48656673213f6cdde487e1782a50300a9bc96e22969 ksystemstats-5.24.5.tar.xz" +sha512sums="9a5e532dc3f3d49222f9a70cfec1c76cdc18aaaee251babbc32f240e45fabb68efa15476ddc733258fd8056897457fcb35975a97a17b611d1a02dda5c1f07e26 ksystemstats-5.27.12.tar.xz" diff --git a/user/ktexteditor/APKBUILD b/user/ktexteditor/APKBUILD index 5f72f2b84..dbfe47844 100644 --- a/user/ktexteditor/APKBUILD +++ b/user/ktexteditor/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=ktexteditor -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Reusable, programmable text editor widget" url="https://www.kde.org/" arch="all" -options="!check" # Requires running X11 session. +options="checkx11" license="LGPL-2.0+" depends="" depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtxmlpatterns-dev @@ -33,7 +33,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -42,11 +42,12 @@ build() { } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + # Encoding test fails in KateEncodingTest::utfBomTest because musl. + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E encodingtest } package() { make DESTDIR="$pkgdir" install } -sha512sums="cb42219ca4e2009c7df3adc85f45814e04da65e40490a37928b43623dd19c3567451c50b31d909fb08fa508c5e043016ec2f9789524ff248a27850c536fd9016 ktexteditor-5.94.0.tar.xz" +sha512sums="9d17558e4f7adc5de1dec0af9ba32b2eb086def576dd32d3458b91d9f0424aa86505a57ab092a71f5274197bfd18927b7ccddf221551cd42d2a96f22394495e0 ktexteditor-5.116.0.tar.xz" diff --git a/user/ktextwidgets/APKBUILD b/user/ktextwidgets/APKBUILD index 126df499b..8da4fcd5b 100644 --- a/user/ktextwidgets/APKBUILD +++ b/user/ktextwidgets/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=ktextwidgets -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework providing widgets for text manipulation" url="https://www.kde.org/" arch="all" -options="!check" # All tests require X11. +options="checkx11" license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev kcompletion-dev kconfigwidgets-dev kiconthemes-dev @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,4 +41,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="8b25e0ac4a84fc0f763a3450fa520c551f83b4e2d26e99bc5e1830f4c36c1fe9de2bae7aa9608630a24b73239948cd6b4b22fa6b24e21c5ab218d99c0cce2cee ktextwidgets-5.94.0.tar.xz" +sha512sums="0534a06529e681da51aac627869de8587e3002a5ad3b460725924454ef66a69cb4b72a8b455aa4bf06b50cf0623f54ba6ba267485e2317659dc5ada295092b4c ktextwidgets-5.116.0.tar.xz" diff --git a/user/kunitconversion/APKBUILD b/user/kunitconversion/APKBUILD index 643271548..0440841ec 100644 --- a/user/kunitconversion/APKBUILD +++ b/user/kunitconversion/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kunitconversion -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Convert between metric and imperial" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="28435650c81835728c3dd44b60ac21467b52595613413c9ebffc66b5f970dfec31af8a491893a6d699b323bd763f3d440a22540c59bfdbdd2a5dfb97dac89f04 kunitconversion-5.94.0.tar.xz" +sha512sums="c0a077d9b1fbdc7a97db82313fd651ab3f896fe54106ea6ac321554e06133ac9e3ff109864d2a16926bb8543ba9f2c6dc6ce1b018138da09b2a3a1c9c01c9a19 kunitconversion-5.116.0.tar.xz" diff --git a/user/kwallet/APKBUILD b/user/kwallet/APKBUILD index 0e89dfb47..7f2f74b46 100644 --- a/user/kwallet/APKBUILD +++ b/user/kwallet/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kwallet -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Secure storage system for passwords built atop Qt" url="https://www.kde.org/" @@ -10,7 +10,7 @@ license="LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev kcoreaddons-dev kconfig-dev kwindowsystem-dev ki18n-dev kconfigwidgets-dev kdbusaddons-dev kiconthemes-dev - knotifications-dev kservice-dev libgcrypt-dev gpgme-dev" + knotifications-dev kservice-dev libgcrypt-dev gpgme-dev qca-dev" makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev doxygen qt5-qttools-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -41,5 +41,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="9cb0105413d983bf89819f60fc36182cbb59737be316ce52262fe68f388dc1262dfb404ef0703af48ec75bd869985829f67b58f433f6b366ef780ad553ee9638 kwallet-5.94.0.tar.xz +sha512sums="fc96b2e87e565dadb960159c5412cc0862454331824510405f434dfda2146ecf4e2ca133345c0c46608143da10265f154a0225f4d8d82ae6f11a184b222d663d kwallet-5.116.0.tar.xz 5aea35d4b1e706c6712c8e2a2ab4bb243ad0c215e677ac922226bc95602112111dbd9675d42184a88dced60f1f700c8ac18eba60e48f068b4b642e0b6189d78f kwallet-5.22.0-blowfish-endianness.patch" diff --git a/user/kwayland-server/APKBUILD b/user/kwayland-integration/APKBUILD index 79bdeab8c..032fffbed 100644 --- a/user/kwayland-server/APKBUILD +++ b/user/kwayland-integration/APKBUILD @@ -1,19 +1,18 @@ # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> -pkgname=kwayland-server -pkgver=5.24.5 -pkgrel=1 +pkgname=kwayland-integration +pkgver=5.27.12 +pkgrel=0 pkgdesc="KDE Wayland server component" url="https://www.kde.org/" arch="all" -options="!check" # Requires D-Bus. +options="checkx11" license="LGPL-2.1+ AND LGPL-2.1-only AND LGPL-3.0-only AND BSD-3-Clause AND MIT AND MIT-CMU" depends="plasma-wayland-protocols" -docdepends="kwayland-doc" -makedepends="cmake extra-cmake-modules kwayland-dev libglvnd-dev qt5-qtbase-dev - qt5-qtwayland-dev qt5-qtwayland-tools wayland-dev wayland-protocols - qt5-qttools-dev doxygen $docdepends" -subpackages="$pkgname-dev $pkgname-doc" -source="https://download.kde.org/stable/plasma/$pkgver/kwayland-server-$pkgver.tar.xz" +makedepends="cmake doxygen extra-cmake-modules kidletime-dev kwayland-dev + kwindowsystem-dev libglvnd-dev qt5-qtbase-dev qt5-qttools-dev + qt5-qtwayland-dev qt5-qtwayland-tools wayland-dev wayland-protocols" +subpackages="" +source="https://download.kde.org/stable/plasma/$pkgver/$pkgname-$pkgver.tar.xz" build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -23,21 +22,20 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ - -DBUILD_QCH:BOOL=ON \ ${CMAKE_CROSSOPTS} \ . make } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'idleTest-kwayland' } package() { make DESTDIR="$pkgdir" install } -sha512sums="72159618a22233b9b49cab8ee1a804f629763e903a2e711c8c23f990544d79b5d27e768c33f8d844c916e41a6d3a2af5ddcab69d0448569adc247e0f737975f5 kwayland-server-5.24.5.tar.xz" +sha512sums="50220e3940346f16789b76f5a8ac58a3e284596aad0006836c96279bf8f46f4e9776c9777d900dcd0d1984eb8b151101236530f66920a1f6b36fa418b2483ea2 kwayland-integration-5.27.12.tar.xz" diff --git a/user/kwayland/APKBUILD b/user/kwayland/APKBUILD index abd7263d2..29bf3f1f8 100644 --- a/user/kwayland/APKBUILD +++ b/user/kwayland/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kwayland -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt wrapper libraries for Wayland" url="https://www.kde.org/" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="56d10d1048967d0c54ba88339b31ddef4b5cf3a3aa743f8fac56f5c97292112d7fa998107a854e999a54ac4ab4659e7dbf6d6c496856de4e91c45df9fafdf399 kwayland-5.94.0.tar.xz" +sha512sums="48b24c88872a21d237274868fea601120fb9700f888ab0a7531651dc6501db8559af3a70b6131d89d31010e1f32013222d42e9d1244ae91bf9972588494957a9 kwayland-5.116.0.tar.xz" diff --git a/user/kwidgetsaddons/APKBUILD b/user/kwidgetsaddons/APKBUILD index e01b537b0..2974c52a9 100644 --- a/user/kwidgetsaddons/APKBUILD +++ b/user/kwidgetsaddons/APKBUILD @@ -1,16 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kwidgetsaddons -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework containing ready-made widgets for common tasks" url="https://www.kde.org/" arch="all" -options="!check" # Test suite requires running X11 server (passes on ciall) +options="checkx11" # Tests are GPL-2.0+, but not shipped. license="LGPL-2.1+ AND Unicode-DFS-2016" depends="" depends_dev="qt5-qtbase-dev" +checkdepends="openbox" makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen graphviz" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" @@ -24,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -33,11 +34,18 @@ build() { } check() { + # The following two tests require a running window manager: + # 24 - ktwofingertaptest + # 25 - ktwofingerswipetest + # We use Openbox because it's already used in the KWindowSystem run. + + openbox & CTEST_OUTPUT_ON_FAILURE=TRUE ctest + openbox --exit } package() { make DESTDIR="$pkgdir" install } -sha512sums="321c742465d911fe7358e77aef6f73175387eb906b9247a2e81880efb5c4d335bb2045186eb73a6425869d1372792785cd1165077eaa7414acb10384ea45ee4d kwidgetsaddons-5.94.0.tar.xz" +sha512sums="34d74d9a4c1ce57e1f9306b442fe44975c9d1e7bd9d5d2461750e017331c2746a07d173b769636eb4143e05b4138fd823ab233618742f2599051036b8c5955bc kwidgetsaddons-5.116.0.tar.xz" diff --git a/user/kwin/APKBUILD b/user/kwin/APKBUILD index 2be15a607..ea6622d6b 100644 --- a/user/kwin/APKBUILD +++ b/user/kwin/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=kwin -pkgver=5.24.5 -pkgrel=1 +pkgver=5.27.12 +pkgrel=0 pkgdesc="Modern, stylish window manager (requires OpenGL)" url="https://www.kde.org/" arch="all" -options="!check" # Requires accelerated X11 desktop +options="checkx11" license="GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only) AND LGPL-2.1-only" depends="plasma-framework qt5-qtmultimedia qt5-qtquickcontrols2" depends_dev="qt5-qtbase-dev libepoxy-dev libxcb-dev kconfig-dev kcoreaddons-dev @@ -17,15 +17,16 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev python3 libdrm-dev libinput-dev libx11-dev libxi-dev libxkbcommon-dev mesa-dev wayland-dev xcb-util-cursor-dev xcb-util-image-dev xcb-util-wm-dev lcms2-dev libcap-dev libqaccessibilityclient-dev xwayland libglvnd-dev + libxcvt-dev breeze breeze-dev kactivities-dev kcompletion-dev kconfigwidgets-dev kcmutils-dev kcrash-dev kdeclarative-dev kdecoration-dev kirigami2-dev kglobalaccel-dev ki18n-dev kiconthemes-dev kidletime-dev kinit-dev kio-dev knewstuff-dev knotifications-dev kpackage-dev krunner-dev kscreenlocker-dev kservice-dev ktextwidgets-dev kwayland-dev - kwayland-server-dev kwidgetsaddons-dev kxmlgui-dev plasma-framework-dev + kwidgetsaddons-dev kxmlgui-dev plasma-framework-dev qt5-qtvirtualkeyboard-dev" -subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-wayland" +subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-systemd $pkgname-wayland" source="https://download.kde.org/stable/plasma/$pkgver/kwin-$pkgver.tar.xz" build() { @@ -36,7 +37,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_TESTING=OFF \ @@ -50,18 +51,14 @@ check() { package() { make DESTDIR="$pkgdir" install - rm -rf "$pkgdir"/usr/lib/systemd } wayland() { pkgdesc="$pkgdesc (Wayland server)" depends="$pkgname=$pkgver-r$pkgrel xwayland" - mkdir -p "$subpkgdir"/usr/lib/qt5/plugins - mv "$pkgdir"/usr/lib/qt5/plugins/org.kde.kwin.waylandbackends \ - "$subpkgdir"/usr/lib/qt5/plugins/ mkdir -p "$subpkgdir"/usr/bin mv "$pkgdir"/usr/bin/kwin_wayland* "$subpkgdir"/usr/bin/ } -sha512sums="4fad8b39a588a44f89e2640358d8e563047fa889a9bdaf246c1c87d320aa5f5b9d3d6bef702314fb06d2bfe16d0445efe736de60d94b4409f9b5efcdac48d089 kwin-5.24.5.tar.xz" +sha512sums="9393fd90002857e2d1c7670e24f79fdf5b6573708ce75075a9703cdb3c6ca456517b61028a299c8257e3bb8e86028d4b4d03a251141fabe65cf84024c1bc1f8f kwin-5.27.12.tar.xz" diff --git a/user/kwindowsystem/APKBUILD b/user/kwindowsystem/APKBUILD index 7f2dfc6ce..b1a457749 100644 --- a/user/kwindowsystem/APKBUILD +++ b/user/kwindowsystem/APKBUILD @@ -1,16 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kwindowsystem -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for introspecting the running X11 window manager" url="https://www.kde.org/" arch="all" -options="!check" # Requires X11 running +options="checkx11" license="MIT AND (LGPL-2.1-only OR LGPL-3.0-only)" depends="" depends_dev="qt5-qtbase-dev libx11-dev libxcb-dev xcb-util-keysyms-dev xcb-util-wm-dev qt5-qtx11extras-dev libxrender-dev" +checkdepends="openbox" makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen graphviz" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" @@ -24,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -33,11 +34,18 @@ build() { } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + openbox & + # We can't use KWin for tests because that would be circular. + # Openbox is used in the KDE CI, but fails two tests because it does + # not support the compositing needed to have translucent windows: + # 9 - kwindowsystem-netrootinfotestwm (Failed) + # 11 - kwindowsystem-netwininfotestwm (Failed) + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'net(root|win)infotestwm' + openbox --exit } package() { make DESTDIR="$pkgdir" install } -sha512sums="908f8bffdfbcc17a605a3e46c652508859b34d2990a171509af8c3b886f62a0c9724697f82e08949625e407c4daa6b4bd5ed80d949b6365060c17bc01e8a5944 kwindowsystem-5.94.0.tar.xz" +sha512sums="1b8d45ee0a09161b45f62e6ba4f200f3c2ad937c20eedc03bf65c3a788a5311727ec2a1634db9e1b1208b8ecbe4158273d11c97924a86059a06d3a24d1201157 kwindowsystem-5.116.0.tar.xz" diff --git a/user/kxmlgui/APKBUILD b/user/kxmlgui/APKBUILD index d6264c113..99ca78746 100644 --- a/user/kxmlgui/APKBUILD +++ b/user/kxmlgui/APKBUILD @@ -1,16 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kxmlgui -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for creating user interfaces using XML" url="https://www.kde.org/" arch="all" -options="!check" # Test suite requires OpenGL-accelerated X11 session +options="checkx11" license="LGPL-2.1-only AND LGPL-2.1+" depends="" depends_dev="qt5-qtbase-dev kcoreaddons-dev kitemviews-dev kconfig-dev kconfigwidgets-dev kiconthemes-dev ktextwidgets-dev kglobalaccel-dev" +checkdepends="openbox" docdepends="kcoreaddons-doc kauth-doc kwidgetsaddons-doc kcodecs-doc kconfig-doc kconfigwidgets-doc" makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz @@ -26,7 +27,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -35,11 +36,13 @@ build() { } check() { + openbox & CTEST_OUTPUT_ON_FAILURE=TRUE ctest + openbox --exit } package() { make DESTDIR="$pkgdir" install } -sha512sums="6f220a270263a97d4e6965360d0e8c908a0a99ae29cced7fd8a971d1f2ed9a6b180697ebb6fc93012ac3ea3f7b22c25539cd35c70ddf840ab2c0f63cd21e6bc5 kxmlgui-5.94.0.tar.xz" +sha512sums="e3a205f8eb0dc28869530e73e02ab090c55a5e1a54e3747b2271e34d211e2fb81fc61d07a44fc9ff3b41d37720e2861e4bff04d06419e5813ee526c02681bbef kxmlgui-5.116.0.tar.xz" diff --git a/user/kxmlrpcclient/APKBUILD b/user/kxmlrpcclient/APKBUILD index 89ca9476b..37584d885 100644 --- a/user/kxmlrpcclient/APKBUILD +++ b/user/kxmlrpcclient/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=kxmlrpcclient -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt library for writing XML-RPC clients" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="a01581958ee673f2eccf03559516e919ca90ac3d7811d6aa656607614d692aa53c589369e121eb39268ce84a7a080b16d985ef048f127a121bb02ca0f7b630ca kxmlrpcclient-5.94.0.tar.xz" +sha512sums="01301cec1e5c8d7158b67eda1f87a8731407eb601566787b59f5b145f26c8bce784f978bbb40ffd4bac49b4b2f97235a4cd4c23c929ad2a20a5f43616ed9d129 kxmlrpcclient-5.116.0.tar.xz" diff --git a/user/layer-shell-qt/APKBUILD b/user/layer-shell-qt/APKBUILD index 073be8d83..5b3ffe6e9 100644 --- a/user/layer-shell-qt/APKBUILD +++ b/user/layer-shell-qt/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=layer-shell-qt -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Qt library to consume Wayland wl-layer-shell protocol" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e9aeb94d7200543eef03950f6e3ccf3a60faf66bcf048760ea35d27c621bbced712411501f9d48fdaf98a36708a1a202c0531bbc94df0ccf99278ffd106b7abc layer-shell-qt-5.24.5.tar.xz" +sha512sums="58490afa4953771b14c4586ded623a8141a53303dc6a15a4c548e4b6ed495bf626464b4e0703094f5b6027f695e01fbac78c37eddaa57097c5f5067eb7b505e0 layer-shell-qt-5.27.12.tar.xz" diff --git a/user/libcdr/APKBUILD b/user/libcdr/APKBUILD index d1ce625fa..6cf74d308 100644 --- a/user/libcdr/APKBUILD +++ b/user/libcdr/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Timo Teräs <timo.teras@iki.fi> # Maintainer: Max Rees <maxcrees@me.com> pkgname=libcdr -pkgver=0.1.7 -pkgrel=1 +pkgver=0.1.8 +pkgrel=0 pkgdesc="Import filter and tools for Corel DRAW files" url="https://wiki.documentfoundation.org/DLP/Libraries/libcdr" arch="all" @@ -39,4 +39,4 @@ tools() { mv "$pkgdir"/usr/bin "$subpkgdir"/usr } -sha512sums="9af327fcf9f3f3ef1c446e92f4d2ff06ebaccb54d4c65b021960a212bf416f7098006324625f3e1c00500597eaa9da39832cc27b83a6cd593e97b76b1eb63d38 libcdr-0.1.7.tar.xz" +sha512sums="5dc25ca80817c5d166c89264fb727a723c3439abb8ec655047c2c15bff0a48b87e7c6e3d6b203296964060bf5c2a71a11bceffbbc2f5eb3f61a209bef071a57a libcdr-0.1.8.tar.xz" diff --git a/user/libe-book/APKBUILD b/user/libe-book/APKBUILD index b9fbff257..5f0b77566 100644 --- a/user/libe-book/APKBUILD +++ b/user/libe-book/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees <maxcrees@me.com> pkgname=libe-book pkgver=0.1.3 -pkgrel=4 +pkgrel=5 pkgdesc="Import filter and tools for various ebook formats" url="https://sourceforge.net/projects/libebook/" arch="all" diff --git a/user/libfreehand/APKBUILD b/user/libfreehand/APKBUILD index aee38d8e0..018af516a 100644 --- a/user/libfreehand/APKBUILD +++ b/user/libfreehand/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees <maxcrees@me.com> pkgname=libfreehand pkgver=0.1.2 -pkgrel=4 +pkgrel=5 pkgdesc="Import filter and tools for Adobe FreeHand documents" url="https://wiki.documentfoundation.org/DLP/Libraries/libfreehand" arch="all" diff --git a/user/libical/APKBUILD b/user/libical/APKBUILD index 68a0e7c77..3068a35d5 100644 --- a/user/libical/APKBUILD +++ b/user/libical/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: Zach van Rijn <me@zv.io> pkgname=libical -pkgver=3.0.18 +pkgver=3.0.20 pkgrel=0 pkgdesc="Reference implementation of the iCalendar format" url="https://libical.github.io/libical/" @@ -10,9 +10,7 @@ depends="" depends_dev="db-dev" makedepends="$depends_dev cmake glib-dev icu-dev libxml2-dev perl" subpackages="$pkgname-dev" -source="https://github.com/libical/libical/releases/download/v$pkgver/libical-$pkgver.tar.gz - icu75.patch - " +source="https://github.com/libical/libical/releases/download/v$pkgver/libical-$pkgver.tar.gz" build() { cmake \ @@ -31,5 +29,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="53ecf6c14a68d569dd11bfdeb1a072def847a14d189c6af16eab202e004350ee7d9488c6b63e9cb67889e8c2dec90643fef46aec143a915f28270d0752eaa9d5 libical-3.0.18.tar.gz -d6f4082a6b3a3ad6a2b2aae92696446be6260fa99152fe6e09dad2d7942f8495698cc218f2feee542da4021a03dca0006167d6bc46a7dd3d8103e1998092d3fb icu75.patch" +sha512sums="2506320240ba0e4287b6ef1b90b653eacd51105d392b91f8c772f3b0745fecbf55eecfe81f89413cc56106b71ccca780754df31f5190ffce6c372126e27bf1da libical-3.0.20.tar.gz" diff --git a/user/libical/icu75.patch b/user/libical/icu75.patch deleted file mode 100644 index 321c02aba..000000000 --- a/user/libical/icu75.patch +++ /dev/null @@ -1,31 +0,0 @@ -From ec62c552df8e1fcc187855bb342c082e22a08edc Mon Sep 17 00:00:00 2001 -From: Lukas Fleischer <lfleischer@lfos.de> -Date: Wed, 15 May 2024 12:28:38 +0700 -Subject: [PATCH] Fix build with ICU 75 - ---- - src/libical/icalrecur.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c -index 3c1789480..1907a3636 100644 ---- a/src/libical/icalrecur.c -+++ b/src/libical/icalrecur.c -@@ -1125,7 +1125,7 @@ icalarray *icalrecurrencetype_rscale_supported_calendars(void) - - calendars = icalarray_new(sizeof(const char **), 20); - -- en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status); -+ en = ucal_getKeywordValuesForLocale("calendar", "", false, &status); - while ((cal = uenum_next(en, NULL, &status))) { - cal = icalmemory_tmp_copy(cal); - icalarray_append(calendars, &cal); -@@ -1526,7 +1526,7 @@ static int initialize_rscale(icalrecur_iterator *impl) - } - - /* Check if specified calendar is supported */ -- en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status); -+ en = ucal_getKeywordValuesForLocale("calendar", "", false, &status); - while ((cal = uenum_next(en, NULL, &status))) { - if (!strcmp(cal, rule.rscale)) { - is_hebrew = !strcmp(rule.rscale, "hebrew"); diff --git a/user/libkscreen/APKBUILD b/user/libkscreen/APKBUILD index 88c710605..6121921a9 100644 --- a/user/libkscreen/APKBUILD +++ b/user/libkscreen/APKBUILD @@ -1,20 +1,23 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=libkscreen -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE Plasma screen management software" url="https://www.kde.org/" arch="all" -options="!check" # Requires dbus-x11 and both of them running +options="checkx11" license="LGPL-2.1+ AND GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only)" depends="" depends_dev="qt5-qtbase-dev" -makedepends="$depends_dev cmake extra-cmake-modules qt5-qtx11extras-dev - qt5-qttools-dev qt5-qtwayland-tools kwayland-dev doxygen +makedepends="$depends_dev cmake doxygen extra-cmake-modules qt5-qtx11extras-dev + qt5-qttools-dev qt5-qtwayland-dev qt5-qtwayland-tools kwayland-dev wayland-dev plasma-wayland-protocols libxcb-dev" -subpackages="kscreen-doctor:doctor $pkgname-dev $pkgname-doc $pkgname-wayland" -source="https://download.kde.org/stable/plasma/$pkgver/libkscreen-$pkgver.tar.xz" +subpackages="kscreen-doctor:doctor $pkgname-dev $pkgname-doc $pkgname-lang + $pkgname-systemd $pkgname-wayland" +source="https://download.kde.org/stable/plasma/$pkgver/libkscreen-$pkgver.tar.xz + no-segfault-test.patch + " build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -24,16 +27,17 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ ${CMAKE_CROSSOPTS} . - make -j1 #811 + make #-j1 #811 } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + # Both tests time out trying to connect to the Wayland display. + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'testkwayland(backend|config)' } package() { @@ -54,4 +58,5 @@ wayland() { "$subpkgdir"/usr/lib/qt5/plugins/kf5/kscreen/ } -sha512sums="780abc702ee6bd53703dc5671e56dc59e10e62ce33c3714454c3c8b5a7a5cf43d4402906f9b1c7c1c19e9dc36cb323c07eb20603a0fb44c73281844c879c8370 libkscreen-5.24.5.tar.xz" +sha512sums="86c8a79622e068ddc2ff780fa3a8b8ff6bf8254b8bcd60454296dfd135b8e9fdf9c5c6541e5c6a78d1e26570aee745742fec4731ecbd5124c99a9554cbebe3eb libkscreen-5.27.12.tar.xz +6e27d28b42aeeba6ffa6deab8ddeef30d495286d17e79690a407d00494d21c68e6cac495c084aaff60eec4a7a1068198390e10c69e5d74de0096ea9ee2d0d301 no-segfault-test.patch" diff --git a/user/libkscreen/no-segfault-test.patch b/user/libkscreen/no-segfault-test.patch new file mode 100644 index 000000000..3e3839d79 --- /dev/null +++ b/user/libkscreen/no-segfault-test.patch @@ -0,0 +1,35 @@ +--- libkscreen-5.27.12/autotests/testkwaylanddpms.cpp.old 2025-01-06 11:56:48.000000000 -0600 ++++ libkscreen-5.27.12/autotests/testkwaylanddpms.cpp 2025-07-04 05:10:30.827144062 -0500 +@@ -48,7 +48,7 @@ + + TestDpmsClient::TestDpmsClient(QObject *parent) + : QObject(parent) +- , m_server(nullptr) ++ , m_server(nullptr), m_registry(nullptr) + { + setenv("WAYLAND_DISPLAY", s_socketName.toLocal8Bit().constData(), true); + m_server = new KScreen::WaylandTestServer(this); +@@ -95,7 +95,7 @@ + { + m_thread->exit(); + m_thread->wait(); +- delete m_registry; ++ if(m_registry) delete m_registry; + delete m_thread; + delete m_connection; + } +--- libkscreen-5.27.12/autotests/testkwaylandbackend.cpp.old 2025-01-06 11:56:48.000000000 -0600 ++++ libkscreen-5.27.12/autotests/testkwaylandbackend.cpp 2025-07-04 05:18:46.584459743 -0500 +@@ -86,8 +86,10 @@ + GetConfigOperation *op = new GetConfigOperation(); + op->exec(); + m_config = op->config(); +- QVERIFY(m_config->isValid()); +- qCDebug(KSCREEN_WAYLAND) << "ops" << m_config->outputs(); ++ if(m_config != nullptr) { ++ QVERIFY(m_config->isValid()); ++ qCDebug(KSCREEN_WAYLAND) << "ops" << m_config->outputs(); ++ } + } + + void testWaylandBackend::verifyConfig() diff --git a/user/libksysguard/APKBUILD b/user/libksysguard/APKBUILD index 324f34d06..974543fed 100644 --- a/user/libksysguard/APKBUILD +++ b/user/libksysguard/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=libksysguard -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE system monitor library" url="https://www.kde.org/" arch="all" -options="!check" # Test requires accelerated X11 session +options="checkx11" license="LGPL-2.1+ AND (GPL-2.0-only OR GPL-3.0-only)" depends="" depends_dev="qt5-qtbase-dev kconfig-dev" @@ -18,6 +18,7 @@ makedepends="$depends_dev cmake extra-cmake-modules python3 libx11-dev zlib-dev libcap-dev qt5-qttools-dev" subpackages="$pkgname-dev $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/libksysguard-$pkgver.tar.xz + disable-tester-for-pdmt.patch underlinking.patch " @@ -29,7 +30,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -44,5 +45,6 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="133c5923ee616515b1934c4e2c30509d407f40b7afc3914ac2417d7c961f3a1921bd3b5bfd1ca73942ddb17777fbf4d96950c130129135eae2b8d1b8daac9fa5 libksysguard-5.24.5.tar.xz +sha512sums="c7f0f3feb8868655d4a05bd8e50eef59aef46c5a4bcb69523b1f5f4a1089a0bf5ec0bd0bbd7ec915aa0517cd1044e2a13c014084a52ea989f62a09aa37d2bb28 libksysguard-5.27.12.tar.xz +b46cd395c5af3c1a15d85cf0a06428c25d0006834aae75f8b2fb123d99b67b40a3d885c7c5372cc8dc7eec88318d3a6e132a086d78a726b51682f8d5cf36e717 disable-tester-for-pdmt.patch 3f273d73ef721b08dee2d0b74f8bb14bb0ee6085eb43b68704abcbca14d60b29cfe651f4c2ad00d13270a783ef94e66982e2e4ae0c6109cf2c895c3562af89f5 underlinking.patch" diff --git a/user/libksysguard/disable-tester-for-pdmt.patch b/user/libksysguard/disable-tester-for-pdmt.patch new file mode 100644 index 000000000..f044421d1 --- /dev/null +++ b/user/libksysguard/disable-tester-for-pdmt.patch @@ -0,0 +1,20 @@ +Disable QAbstractItemModelTester on ProcessDataModelTest + +The QAbstractItemModelTester "audits" every change to the model. +Unfortunately for us, at least on the test machines I ran this test on, +the model changes so rapidly (from CPU usage on the other cores running +the other tests, other builds, etc) that the test never moves forward +to the actual test conditions. Instead, it fails with a test timeout. +Removing the tester allows the test to succeed. + +--- libksysguard-5.27.12/autotests/processdatamodeltest.cpp.old 2025-01-06 11:56:49.000000000 -0600 ++++ libksysguard-5.27.12/autotests/processdatamodeltest.cpp 2025-07-06 05:41:50.904194958 -0500 +@@ -18,8 +18,6 @@ + void testModel() + { + auto model = new KSysGuard::ProcessDataModel(); +- auto tester = new QAbstractItemModelTester(model); +- + model->setEnabledAttributes({qs("pid"), qs("name"), qs("usage"), qs("vmPSS")}); + + QTest::qWait(100); diff --git a/user/libkworkspace/APKBUILD b/user/libkworkspace/APKBUILD index 4a653b663..3578075e2 100644 --- a/user/libkworkspace/APKBUILD +++ b/user/libkworkspace/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=libkworkspace -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE Plasma 5 workspace library" url="https://www.kde.org/plasma-desktop" arch="all" -options="!check" # Test requires X11 accelration. +options="!check" # Tests will be run in plasma-workspace. license="(GPL-2.0-only OR GPL-3.0-only) AND LGPL-2.1+ AND GPL-2.0+ AND MIT AND LGPL-2.1-only AND LGPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.0-only" depends="kinit" depends_dev="qt5-qtbase-dev" @@ -28,7 +28,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_TESTING=OFF \ @@ -45,6 +45,6 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="ae40fe545b03e42e9f8fe2e8885d3853f4b52d4fd2ed3ecf7d24fa59b4924b8f8b389e8713ec6a3a875bc66df3952de9157d4a5631b283105a9329a1a1825996 plasma-workspace-5.24.5.tar.xz +sha512sums="9459b826110da3775dc206550811d40ede77c5c6c357c6334ee4464273eecc4a24e3fa799c60709f9ff9c4d99285a77ee0f7b2523b39bfe76dd69926b35095ab plasma-workspace-5.27.12.tar.xz 30e7e39aa99a43c59fe7a88d389ba8309c66907bb55221d936c6a01e150f28e55b81a38dedb8dea3d73169581a29c9393b8fac0b5c7fc1e779d0b970da419d28 session.patch -867539bf129a28d06ba4838a716ec511980bb6b10f339180175855d1e3e933f4f2391fe3d9df7ea9b2cdb965c47d6746a12804acd98d5ed0d1979bf9630d4e8b standalone.patch" +c450b59ec123ce7252a533c6103cdb66dff232488afc92ad302903af80cbe886f80d6ee807d63b8a472c83223382a8a41c9a48746a6ce1bb206c99184fce2f2e standalone.patch" diff --git a/user/libkworkspace/standalone.patch b/user/libkworkspace/standalone.patch index 3cf78db08..7c2ee0405 100644 --- a/user/libkworkspace/standalone.patch +++ b/user/libkworkspace/standalone.patch @@ -15,7 +15,7 @@ index 015c5181f..0aa635e11 100644 +project(libkworkspace) + +if(${CMAKE_SOURCE_DIR} STREQUAL ${libkworkspace_SOURCE_DIR}) -+ set(PROJECT_VERSION "5.24.5") ++ set(PROJECT_VERSION "5.27.12") + set(PROJECT_VERSION_MAJOR 5) + + cmake_minimum_required(VERSION 3.16) diff --git a/user/libmspub/APKBUILD b/user/libmspub/APKBUILD index f7cfa3558..1e980d00d 100644 --- a/user/libmspub/APKBUILD +++ b/user/libmspub/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees <maxcrees@me.com> pkgname=libmspub pkgver=0.1.4 -pkgrel=3 +pkgrel=4 pkgdesc="Import filter and tools for Microsoft Publisher files" url="https://wiki.documentfoundation.org/DLP/Libraries/libmspub" arch="all" diff --git a/user/libqalculate/APKBUILD b/user/libqalculate/APKBUILD index 85c26c019..0304534f9 100644 --- a/user/libqalculate/APKBUILD +++ b/user/libqalculate/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=libqalculate -pkgver=3.6.0 -pkgrel=1 +pkgver=5.5.2 +pkgrel=0 pkgdesc="Library implementing a powerful, versatile desktop calculator" url="https://qalculate.github.io/" arch="all" @@ -12,7 +12,9 @@ depends="" depends_dev="gmp-dev mpfr-dev" makedepends="$depends_dev curl-dev icu-dev intltool libxml2-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang qalc" -source="https://github.com/Qalculate/libqalculate/releases/download/v$pkgver/libqalculate-$pkgver.tar.gz" +source="https://github.com/Qalculate/libqalculate/releases/download/v$pkgver/libqalculate-$pkgver.tar.gz + old-mpfr.patch + " build() { ./configure \ @@ -39,4 +41,5 @@ qalc() { mv "$pkgdir"/usr/bin "$subpkgdir"/usr/ } -sha512sums="afef26633d28f4c9b018a17056bf9645118b2e8698d4d5ba76a4a7df783503579381db448a5d557059fc7629d175385353d7eabeef3636ec0cad669fd68e5d0f libqalculate-3.6.0.tar.gz" +sha512sums="48069d73e840c25017f70e0337ea3c6f5d7aee2996c8dcdd8f53963647dfa80080bf632086c609df22d4c2c7f363c17e3bd52fa155458f3e232676d7a7191885 libqalculate-5.5.2.tar.gz +55cf8b67b87b8f18435b19a283900213d9ed904da071ce7a13568317140a84bbe1454994eadaa7d4d24447799d14b9c9b4535d2477aa3a680c1479fdf190615d old-mpfr.patch" diff --git a/user/libqalculate/old-mpfr.patch b/user/libqalculate/old-mpfr.patch new file mode 100644 index 000000000..9e1a31cd3 --- /dev/null +++ b/user/libqalculate/old-mpfr.patch @@ -0,0 +1,30 @@ +Our version of MPFR does not have local cache freeing abilities. + +Original regression (for our cases) is: https://github.com/Qalculate/libqalculate/commit/42c5af5333c527c44b67f2d480680029c5284d49 +See-also: https://github.com/Qalculate/libqalculate/pull/680 +--- libqalculate-5.5.2/libqalculate/util.cc.old 2025-03-01 23:12:03.000000000 -0600 ++++ libqalculate-5.5.2/libqalculate/util.cc 2025-06-28 01:32:07.292382732 -0500 +@@ -1071,7 +1071,6 @@ + } + + void free_thread_caches() { +- mpfr_free_cache2(MPFR_FREE_LOCAL_CACHE); + } + + #ifdef _WIN32 +@@ -1095,7 +1094,6 @@ + Thread *thread = (Thread *) data; + SetEvent(thread->m_threadReadyEvent); + thread->run(); +- mpfr_free_cache2(MPFR_FREE_LOCAL_CACHE); + thread->running = false; + return 0; + } +@@ -1145,7 +1143,6 @@ + void Thread::doCleanup(void *data) { + Thread *thread = (Thread *) data; + thread->running = false; +- mpfr_free_cache2(MPFR_FREE_LOCAL_CACHE); + } + + void Thread::enableAsynchronousCancel() { diff --git a/user/libqxp/APKBUILD b/user/libqxp/APKBUILD index 940d74333..05c3aeebf 100644 --- a/user/libqxp/APKBUILD +++ b/user/libqxp/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees <maxcrees@me.com> pkgname=libqxp pkgver=0.0.2 -pkgrel=1 +pkgrel=2 pkgdesc="Import filter and tools for QuarkXPress documents" url="https://wiki.documentfoundation.org/DLP/Libraries/libqxp" arch="all" diff --git a/user/libvisio/APKBUILD b/user/libvisio/APKBUILD index e000d71ea..12f4a0c18 100644 --- a/user/libvisio/APKBUILD +++ b/user/libvisio/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Timo Teräs <timo.teras@iki.fi> # Maintainer: Max Rees <maxcrees@me.com> pkgname=libvisio -pkgver=0.1.7 -pkgrel=1 +pkgver=0.1.8 +pkgrel=0 pkgdesc="Import filter and tools for MS Visio diagrams" url="https://wiki.documentfoundation.org/DLP/Libraries/libvisio" arch="all" @@ -38,4 +38,4 @@ tools() { mv "$pkgdir"/usr/bin "$subpkgdir"/usr } -sha512sums="c26f67a09fa6a6d0bf6f3fff5590d5cf16983630d4f7cfcf86d9461baec58dbdf7989fd934be6db0639ca043c160aac2d008275afb9e047766bc878ac579a9ea libvisio-0.1.7.tar.xz" +sha512sums="f89e7cd08287f769936cfacdbdd95fe97a535cca63231c14e2637a8ee6a5e86c6de79b3858c08a5ab483e17cf06107af4fac9014f695b25fedad15f841efba53 libvisio-0.1.8.tar.xz" diff --git a/user/libxcvt/APKBUILD b/user/libxcvt/APKBUILD index 9efeb5b24..1888d3ccc 100644 --- a/user/libxcvt/APKBUILD +++ b/user/libxcvt/APKBUILD @@ -1,5 +1,5 @@ # Contributor: Milan P. Stanić <mps@arvanta.net> -# Maintainer: Ermine <mustela@arvanta.net> +# Maintainer: Ermine <mustela@erminea.space> pkgname=libxcvt pkgver=0.1.2 pkgrel=0 diff --git a/user/libxpm/APKBUILD b/user/libxpm/APKBUILD index 1e01a37df..1b232f82f 100644 --- a/user/libxpm/APKBUILD +++ b/user/libxpm/APKBUILD @@ -6,9 +6,10 @@ pkgdesc="X11 pixmap library" url="https://www.X.Org/" arch="all" license="X11" -subpackages="$pkgname-dev $pkgname-doc" depends="" -makedepends="libx11-dev libxext-dev libxt-dev util-linux-dev util-macros" +makedepends="libx11-dev libxext-dev libxt-dev ncompress util-linux-dev + util-macros" +subpackages="$pkgname-dev $pkgname-doc" source="https://www.X.Org/releases/individual/lib/libXpm-$pkgver.tar.xz" builddir="$srcdir"/libXpm-$pkgver diff --git a/user/libzmf/APKBUILD b/user/libzmf/APKBUILD index 3df4b8bad..a4384e390 100644 --- a/user/libzmf/APKBUILD +++ b/user/libzmf/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees <maxcrees@me.com> pkgname=libzmf pkgver=0.0.2 -pkgrel=2 +pkgrel=3 pkgdesc="Import filter and tools for Zoner Callisto/Draw documents" url="https://wiki.documentfoundation.org/DLP/Libraries/libzmf" arch="all" diff --git a/user/marco/APKBUILD b/user/marco/APKBUILD index 06968019c..4ccdec0ef 100644 --- a/user/marco/APKBUILD +++ b/user/marco/APKBUILD @@ -2,12 +2,12 @@ # Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> pkgname=marco pkgver=1.26.2 -pkgrel=0 +pkgrel=1 pkgdesc="Window manager for the MATE desktop environment" url="https://mate-desktop.org" arch="all" license="GPL-2.0+ AND MIT-advertising AND MIT-CMU" -depends="" +depends="mate-desktop mate-settings-daemon" makedepends="gtk+3.0-dev intltool itstool libcanberra-dev libice-dev libsm-dev libxml2-utils libxres-dev startup-notification-dev wayland-protocols zenity" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" diff --git a/user/milou/APKBUILD b/user/milou/APKBUILD index 84f265ec4..68f14a435 100644 --- a/user/milou/APKBUILD +++ b/user/milou/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=milou -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Search and launch plasmoid" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -36,4 +36,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b6a2979b6ab4717d53e0f58605ba43a08f78836a287c0988aeb9461f6d4cb42f71d1081ec1261dcb957ee97b67f8eba42f3c6861e96d6a2e796142edac74ea7c milou-5.24.5.tar.xz" +sha512sums="0f1d9975c02b5d6a428bc40143ef6d40920299a3a866ef6f614a4109d0dbfddf93c1eabe2ccd7d6f7d5ec0596960011d63571bc718cfa6764e381eb962fde5e0 milou-5.27.12.tar.xz" diff --git a/user/modemmanager-qt/APKBUILD b/user/modemmanager-qt/APKBUILD index 07133c58c..4d9f26309 100644 --- a/user/modemmanager-qt/APKBUILD +++ b/user/modemmanager-qt/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=modemmanager-qt -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt framework for ModemManager" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="3867d8ed2b000e51a2782ad0300e2a49b89bad429409b4d36f9d1798f992980b4dc6c38edceb8e33456bb5fb0d11b3007f01ca8c3bbaae6f239b0260885fdf9e modemmanager-qt-5.94.0.tar.xz" +sha512sums="dbcac87691d9c0dc12badfdcff229dc1160663c52f8f3d9cd52c964810d49f0bab4612e26f7381a60e1fb25e0b89443cfddfce6416d32c837658641cdb78dbbe modemmanager-qt-5.116.0.tar.xz" diff --git a/user/netqmail/APKBUILD b/user/netqmail/APKBUILD index 431d1aa91..5ca299f5d 100644 --- a/user/netqmail/APKBUILD +++ b/user/netqmail/APKBUILD @@ -116,7 +116,7 @@ package() { makeservicedir "$pkgdir"/etc/qmail/services/smtpd-skeleton-notls 3 "$srcdir"/smtpd-notls.run '/var/log/smtpd-$IP' 4 false } -sha512sums="c08828d8e569cd06c3d44e8c48a5e859fbf95ede272f24dfc1bc756c7bf74358fd8d547040eba294e4152257c1ae27d2b217ffb1bef25b5b48a9c37f478d1cbf netqmail-1.06.tar.gz +sha512sums="de40a6d8fac502bd785010434d99b99f2c0524e10aea3d0f2a0d35c70fce91e991eb1fb8f20a1276eb56d7e73130ea5e2c178f6075d138af47b28d9ca6e6046b netqmail-1.06.tar.gz ad126cad5c0d35351919ad87022fd94b910519d91cf82f38c158f423bbfc1b82455844a791ba0c69d347af1a20a86b095bed571f75365a86ea786cbc9c626487 0001-DESTDIR.patch b3af9c29e6d46daa2a1b9f677c6f32892d5f8c9b8d5c2bdd6f34b106dd5ad41394c05a5ebe145c6e29b4ced4482f08b2d09e7818fd309123c0d087600500e336 0002-qbiffutmpx-20170820.patch cbebdc72c7cc5c437531c9277534ae552c6d044a83b36e3f3ce60ab5563c55eb814d6c543cc0997abab73075d1b517cc0929dd65674d468d517b0ca38196e2b4 0003-qmailremote-20170716.patch diff --git a/user/networkmanager-qt/APKBUILD b/user/networkmanager-qt/APKBUILD index 2ef1f3551..b59052aea 100644 --- a/user/networkmanager-qt/APKBUILD +++ b/user/networkmanager-qt/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=networkmanager-qt -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt framework for NetworkManager" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="0e97577e53b440df2c25d2afaa2171443b9c2806c8164a84db5053e071fb9ac27dda8952947efd0e9ad57f25625cf8447f45606278a61d45c45ec0a1db956d61 networkmanager-qt-5.94.0.tar.xz" +sha512sums="01f5687d8476a784c6a6673350c4907ee2f5061207f861895bd54c510bbe940b866488ea07aa63a72d3318b08a855c1096d7f52a1ddbf7cbf7820c248a5efac1 networkmanager-qt-5.116.0.tar.xz" diff --git a/user/node/APKBUILD b/user/node/APKBUILD index 1c0cbe5a8..f13d97948 100644 --- a/user/node/APKBUILD +++ b/user/node/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=node -pkgver=18.15.0 -pkgrel=1 +pkgver=18.20.8 +pkgrel=0 pkgdesc="JavaScript runtime" url="https://nodejs.org/" arch="all !ppc" # #837 @@ -13,6 +13,8 @@ makedepends="c-ares-dev http-parser-dev icu-dev libexecinfo-dev libuv-dev nghttp2-dev openssl-dev python3 zlib-dev samurai" subpackages="$pkgname-dev $pkgname-doc" source="https://nodejs.org/download/release/v$pkgver/node-v$pkgver.tar.xz + icu77.patch + openat-test.patch pmmx-test.patch pmmx-time64.patch zlib-version-regex.patch @@ -66,8 +68,10 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="e41fcda469809186fd724ef4691e25f4a5bd81357ee99acf3d7faa1190a69c19cb62bd14aea199ca6f8b5cf9687af7d898cdf605ea2414d2c04db87ddb3b4dc8 node-v18.15.0.tar.xz +sha512sums="1108e7558b408c65f50c8a14b941dec4d4f410bbc14515ffe659663120822b3d1ab200676072c3f6fe4b9c6e400ffc6eae6fba6ccbd4fc2795e85da869665bf1 node-v18.20.8.tar.xz +4b19df47b72f82de02f81a7be4f525a291ed5492fa9fc5b4818c4b2ac782a665c6fd69c54f19a7579e3dfe738dbabe9d916c2a41d565fff20aaf721c87188c82 icu77.patch +373636169ab401c06ff3475aacdce5860ff33c9c5d60398605b3b77bd883330ce1d37ca8c7bec32a9b6790df0794f5cc3edbfb24fff5b18c62400cb7b58dc0da openat-test.patch 277e226f3906f791bae6aedd0b74b0e2c52b6154eb2dc0c568417ad94a0722078e4fbbbe15c59d4ba0b59cdb4ad45b5e9620f14d75694a15531857cd29aa044a pmmx-test.patch -bf78e52c60b4567854eaa9d9433ade8a318a356cb326dded99e800df35a9f475390a0cf8b0c8e595bbdb3702838eafe91801cd646576aa7fa7966b37d794e380 pmmx-time64.patch -45d899bd62e39762fde7e9743efcc6dc032161ae087099da8eecebc84f3eaab87eecf00cbc5861f686a45332224025af172ab00ce966771dccf2e925ca48bc6a zlib-version-regex.patch +582030536a1c15b45b449979099377c00c752e0cde30a700bec2baff2fe6de308ad2234578db7b38f7cb461981209380a5576413caef92f306ec6c307b78c37f pmmx-time64.patch +f76bfbdb37ec1defec8dcd3e6fea3ae93b798369ff9fdb4eb435ecbf99291706804b3da5114b29456535136ad0494a20f84a5f5293b47a9bf5cc9237e3003b9a zlib-version-regex.patch 64cffa3cfdced1152a41d77c344370d0077d046ccf20fb618cad7396bcb37290c14a8180b713a7e554e3b09042e481d6aa4a5f97a0a93ceb4090d0f2a510b052 ppc-fixes-for-older-models-18.patch" diff --git a/user/node/icu77.patch b/user/node/icu77.patch new file mode 100644 index 000000000..29553aa39 --- /dev/null +++ b/user/node/icu77.patch @@ -0,0 +1,34 @@ +Upstream-URL: https://github.com/nodejs/node/pull/55563 +See-also: https://bugs.gentoo.org/943201 + +From 046430c47efb5ac758253d4e2d2fd539fa94535b Mon Sep 17 00:00:00 2001 +From: Michael Cho <michael@michaelcho.dev> +Date: Tue, 29 Oct 2024 19:24:38 -0400 +Subject: [PATCH] build: fix building with system icu 76 + +ICU 76 decided to reduce overlinking[^1] thus `icu-i18n` will no longer +add `icu-uc` when linking to shared libraries. This results in undefined +symbols/references when trying to build with system ICU 76. + +[^1]: unicode-org/icu@199bc82 + +PR-URL: https://github.com/nodejs/node/pull/55563 +Reviewed-By: Richard Lau <rlau@redhat.com> +Reviewed-By: Luigi Pinca <luigipinca@gmail.com> +--- + configure.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.py b/configure.py +index 6cfb95eee95690..ae3dd156d4e02e 100755 +--- a/configure.py ++++ b/configure.py +@@ -1763,7 +1763,7 @@ def icu_download(path): + elif with_intl == 'system-icu': + # ICU from pkg-config. + o['variables']['v8_enable_i18n_support'] = 1 +- pkgicu = pkg_config('icu-i18n') ++ pkgicu = pkg_config(['icu-i18n', 'icu-uc']) + if not pkgicu[0]: + error('''Could not load pkg-config data for "icu-i18n". + See above errors or the README.md.''') diff --git a/user/node/openat-test.patch b/user/node/openat-test.patch new file mode 100644 index 000000000..e75eb7e61 --- /dev/null +++ b/user/node/openat-test.patch @@ -0,0 +1,34 @@ +The strace-openat-openssl test fails on musl libc because of ldso's +attempted access of /etc/ld-musl-$ARCH.path. Additionally, at least on +gwyn, the spawned process attempts to determine its memory limits from +the current cgroup. + +*Also*, the openssl.cnf expected line fails because it happens in a +subprocess - hence the optional [pid ....] prefix. + +--- node-v18.20.8/test/parallel/test-strace-openat-openssl.js.old 2025-03-26 19:56:44.000000000 -0500 ++++ node-v18.20.8/test/parallel/test-strace-openat-openssl.js 2025-06-27 00:31:02.528830894 -0500 +@@ -29,7 +29,7 @@ + // stderr is the default for strace + const rl = createInterface({ input: strace.stderr }); + rl.on('line', (line) => { +- if (!line.startsWith('open')) { ++ if (line.match(/^(\[pid.+\] )?open/) === null) { + return; + } + +@@ -42,6 +42,14 @@ + if (file.match(/\/proc\/.+/) !== null) { + return; + } ++ // skip /sys/fs/cgroup/* ++ if (file.match(/\/sys\/fs\/cgroup\/.+/) !== null) { ++ return; ++ } ++ // skip /etc/ld-musl-$ARCH.path ++ if (file.match(/\/etc\/ld-musl-.+\.path/) !== null) { ++ return; ++ } + + assert(allowedOpenCalls.delete(file), `${file} is not in the list of allowed openat calls`); + }); diff --git a/user/node/pmmx-time64.patch b/user/node/pmmx-time64.patch index b47a1a6fe..01cea0089 100644 --- a/user/node/pmmx-time64.patch +++ b/user/node/pmmx-time64.patch @@ -52,17 +52,17 @@ return new BigIntStats( stats[0 + offset], stats[1 + offset], stats[2 + offset], stats[3 + offset], stats[4 + offset], stats[5 + offset], ---- node-v18.12.1/src/aliased_buffer.h.old 2022-11-04 11:13:14.000000000 -0500 -+++ node-v18.12.1/src/aliased_buffer.h 2023-01-01 18:08:01.407999936 -0600 -@@ -306,7 +306,7 @@ - typedef AliasedBufferBase<uint8_t, v8::Uint8Array> AliasedUint8Array; - typedef AliasedBufferBase<uint32_t, v8::Uint32Array> AliasedUint32Array; - typedef AliasedBufferBase<double, v8::Float64Array> AliasedFloat64Array; --typedef AliasedBufferBase<int64_t, v8::BigInt64Array> AliasedBigInt64Array; -+typedef AliasedBufferBase<int64_t, v8::BigUint64Array> AliasedBigUint64Array; - } // namespace node +--- node-v18.20.8/src/aliased_buffer.h.old 2025-03-26 19:56:44.000000000 -0500 ++++ node-v18.20.8/src/aliased_buffer.h 2025-06-26 23:34:10.893322022 -0500 +@@ -183,7 +183,7 @@ + V(uint32_t, Uint32Array) \ + V(float, Float32Array) \ + V(double, Float64Array) \ +- V(int64_t, BigInt64Array) ++ V(int64_t, BigUint64Array) - #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS + #define V(NativeT, V8T) \ + typedef AliasedBufferBase<NativeT, v8::V8T> Aliased##V8T; --- node-v18.12.1/src/node_file-inl.h.old 2022-11-04 11:13:14.000000000 -0500 +++ node-v18.12.1/src/node_file-inl.h 2023-01-01 18:09:07.830823990 -0600 @@ -90,18 +90,9 @@ @@ -84,7 +84,7 @@ SET_FIELD_WITH_STAT(kDev, s->st_dev); SET_FIELD_WITH_STAT(kMode, s->st_mode); -@@ -242,7 +233,7 @@ +@@ -281,7 +272,7 @@ Environment* env = binding_data->env(); if (value->StrictEquals(env->fs_use_promises_symbol())) { if (use_bigint) { diff --git a/user/node/zlib-version-regex.patch b/user/node/zlib-version-regex.patch index c06c4a938..d342cd275 100644 --- a/user/node/zlib-version-regex.patch +++ b/user/node/zlib-version-regex.patch @@ -24,7 +24,7 @@ index f706bd060b45f..31886093df8cc 100644 assert.match(process.versions.llhttp, commonTemplate); assert.match(process.versions.node, commonTemplate); assert.match(process.versions.uv, commonTemplate); --assert.match(process.versions.zlib, commonTemplate); +-assert.match(process.versions.zlib, /^\d+(?:\.\d+){1,3}(?:-.*)?$/); +assert.match(process.versions.zlib, /^\d+(\.\d+){1,2}(?:-.*)?$/); if (hasUndici) { diff --git a/user/open-vm-tools/APKBUILD b/user/open-vm-tools/APKBUILD index 4bdc9c0ad..81ae1e29c 100644 --- a/user/open-vm-tools/APKBUILD +++ b/user/open-vm-tools/APKBUILD @@ -3,7 +3,7 @@ pkgname=open-vm-tools pkgver=12.4.0 _buildver=23259341 -pkgrel=2 +pkgrel=3 pkgdesc="Guest additions for VMware hypervisors" url=" " arch="x86 pmmx i528 x86_64 aarch64" diff --git a/user/openldap/APKBUILD b/user/openldap/APKBUILD index 0aef3baa7..fd39451bc 100644 --- a/user/openldap/APKBUILD +++ b/user/openldap/APKBUILD @@ -13,8 +13,8 @@ # - CVE-2017-9287 # pkgname=openldap -pkgver=2.6.3 -pkgrel=2 +pkgver=2.6.10 +pkgrel=0 pkgdesc="LDAP Server" url="https://www.openldap.org/" arch="all" @@ -33,7 +33,6 @@ source="https://www.$pkgname.org/software/download/OpenLDAP/$pkgname-release/$pk fix-manpages.patch configs.patch test063.patch - test079.patch time64.patch slapd.initd @@ -186,11 +185,10 @@ _submv() { done } -sha512sums="56efbbfc68779ad635d2c25228eb9c4f1553b107b96e8a438029b1c5d2f2647cf4d437770554392b436718ea44a4813e17f5195049f67fc09d063a981096cd85 openldap-2.6.3.tgz -0c026a5c8790ebb7d6784514363f1403c693d61defbeaacae574267c3b7833f198919d31604da1f49db3000c9a561cb6d36d95e021f7906761e45d1434cef15b fix-manpages.patch +sha512sums="18129ad9a385457941e3203de5f130fe2571701abf24592c5beffb01361aae3182c196b2cd48ffeecb792b9b0e5f82c8d92445a7ec63819084757bdedba63b20 openldap-2.6.10.tgz +5de64a172da10a5d02d4f2d91dfd0d959a12db0ed2d14133e3186a2b4d3d9e4e3bbe8eb800821dfcfb79fb808a69d44253a4cae1e37b6d2477bc11062734d41e fix-manpages.patch 1a1f669db968061eb8c9fb5e42768d0f12075d4eb4d8ae7085533276775027c56760c2f7413494deebec4d78b053f674661236e6e1506ecffadf510985c393c0 configs.patch -26fbe3fa2182d80ee98e6885972f803d03ac45a72cb8478c31e76a6f07f45565e6fdcdbf528fcf61e77fd4f9e2068e4f82d9c9c178df7da103d4e9b714bf204e test063.patch -c7f2b32f2643d6b7ea5dbee6c1baad7cae53ea9d511cfae6c976edb8f8f85ae14351f612f02e560d15c6b577676804fd7b0a6f45f79cc1cdbe11f117e61ad088 test079.patch -a3d2ce7cbfd8a24605efef47550833e0a2e0f7aa426a46342e5f7bf2ef082b1640c31cd33eb246c225cc4cdc011ed4a640763158111e62f9e76e3530c3fa786e time64.patch +30e59a3ff14cf612ef299f7b9f8ffcee172b4693f8a77548eab64def3d0d7e374da1bffd546f36e076e8f3431134ce7b8a9ccb3a173c728b37b6ec8148c31463 test063.patch +fd45360ae9631a8e0481809dfc809bccb0f933e01d724a9c4c541faed966f046e142589719ef558a80bedba63eefa8225852d71127139bc105d48415a31fa17a time64.patch 0c3606e4dad1b32f1c4b62f2bc1990a4c9f7ccd10c7b50e623309ba9df98064e68fc42a7242450f32fb6e5fa2203609d3d069871b5ae994cd4b227a078c93532 slapd.initd 64dc4c0aa0abe3d9f7d2aef25fe4c8e23c53df2421067947ac4d096c9e942b26356cb8577ebc41b52d88d0b0a03b2a3e435fe86242671f9b36555a5f82ee0e3a slapd.confd" diff --git a/user/openldap/fix-manpages.patch b/user/openldap/fix-manpages.patch index 03c925537..62e1e74bf 100644 --- a/user/openldap/fix-manpages.patch +++ b/user/openldap/fix-manpages.patch @@ -8,7 +8,7 @@ diff --git a/doc/man/man1/ldapmodify.1 b/doc/man/man1/ldapmodify.1 index 3def6da..466c772 100644 --- a/doc/man/man1/ldapmodify.1 +++ b/doc/man/man1/ldapmodify.1 -@@ -382,8 +382,7 @@ exit status and a diagnostic message being written to standard error. +@@ -391,8 +391,7 @@ exit status and a diagnostic message being written to standard error. .BR ldap_add_ext (3), .BR ldap_delete_ext (3), .BR ldap_modify_ext (3), @@ -31,7 +31,7 @@ index b739f4d..e2a1a00 100644 [\c .BR \-V [ V [ V ]] [\c -@@ -332,7 +332,7 @@ the LDAP databases defined in the default config file, just type: +@@ -333,7 +333,7 @@ the LDAP databases defined in the default config file, just type: .LP .nf .ft tt @@ -40,7 +40,7 @@ index b739f4d..e2a1a00 100644 .ft .fi .LP -@@ -343,7 +343,7 @@ on voluminous debugging which will be printed on standard error, type: +@@ -344,7 +344,7 @@ on voluminous debugging which will be printed on standard error, type: .LP .nf .ft tt @@ -49,7 +49,7 @@ index b739f4d..e2a1a00 100644 .ft .fi .LP -@@ -351,7 +351,7 @@ To test whether the configuration file is correct or not, type: +@@ -352,7 +352,7 @@ To test whether the configuration file is correct or not, type: .LP .nf .ft tt diff --git a/user/openldap/test063.patch b/user/openldap/test063.patch index 972feba6f..a6de434c8 100644 --- a/user/openldap/test063.patch +++ b/user/openldap/test063.patch @@ -5,7 +5,7 @@ thanks to Ryan Tandy for root cause analysis and suggested fix. --- openldap-2.6.2/tests/scripts/test063-delta-multiprovider 2022-05-04 09:55:23.000000000 -0500 +++ openldap-2.6.2/tests/scripts/test063-delta-multiprovider 2022-06-01 02:14:47.230724205 -0500 -@@ -318,6 +318,9 @@ +@@ -324,6 +324,9 @@ exit $RC fi diff --git a/user/openldap/test079.patch b/user/openldap/test079.patch deleted file mode 100644 index a902ba878..000000000 --- a/user/openldap/test079.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 0031b8ed342386960ab9d0cd1566196ba0e6ae42 Mon Sep 17 00:00:00 2001 -From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> -Date: Wed, 1 Jun 2022 04:36:24 -0500 -Subject: [PATCH] Tests: Use ldapsearch(1) correctly in test079 - -Before this change, ldapsearch(1) was not being called with the correct -parameter syntax. This caused the test to fail on musl libc environments -where getopt(3) is more strict, with messages like: - -Error: LDAP connection to remote LDAP server is not found (1) - -The test.out file simply stated: - -ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) - -Indeed, strace showed that the `-H` param was missed and we were trying -to connect to port 389: - -connect(3, {sa_family=AF_INET6, sin6_port=htons(389), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_scope_id=0}, 28) = -1 ECONNREFUSED (Connection refused) ---- - tests/scripts/test079-proxy-timeout | 40 ++++++++++++++--------------- - 1 file changed, 20 insertions(+), 20 deletions(-) - -diff --git a/tests/scripts/test079-proxy-timeout b/tests/scripts/test079-proxy-timeout -index 6a8e0c7a8..9ece4c1a1 100755 ---- a/tests/scripts/test079-proxy-timeout -+++ b/tests/scripts/test079-proxy-timeout -@@ -139,10 +139,10 @@ fi - - echo "Checking that proxy has created connections towards backend (time_t now=`date +%s`)" - --$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 0 ; then - echo "Error: LDAP connection to remote LDAP server is not found ($RC)" -@@ -150,10 +150,10 @@ if test $RC != 0 ; then - exit $RC - fi - --$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 0 ; then - echo "Error: LDAP connection to remote LDAP server is not found ($RC)" -@@ -171,10 +171,10 @@ sleep `expr $CONN_EXPIRES - $NOW + 2` - - echo "Checking that proxy has closed expired connections towards the remote LDAP server (time_t now=`date +%s`)" - --$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 1 ; then - echo "Error: LDAP connection to remote LDAP server was not closed" -@@ -182,10 +182,10 @@ if test $RC != 1 ; then - exit $RC - fi - --$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 1 ; then - echo "Error: LDAP connection to remote LDAP server was not closed" -@@ -235,10 +235,10 @@ sleep 2 - - echo "Checking that proxy has created connections towards backend (time_t now=`date +%s`)" - --$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 0 ; then - echo "Error: LDAP connection to remote LDAP server is not found ($RC)" -@@ -246,10 +246,10 @@ if test $RC != 0 ; then - exit $RC - fi - --$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 0 ; then - echo "Error: LDAP connection to remote LDAP server is not found ($RC)" -@@ -267,10 +267,10 @@ sleep `expr $CONN_EXPIRES - $NOW + 2` - - echo "Checking that proxy has closed expired connections towards the remote LDAP server (time_t now=`date +%s`)" - --$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 1 ; then - echo "Error: LDAP connection to remote LDAP server was not closed" -@@ -278,10 +278,10 @@ if test $RC != 1 ; then - exit $RC - fi - --$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 1 ; then - echo "Error: LDAP connection to remote LDAP server was not closed" -@@ -339,10 +339,10 @@ fi - NOW=`date +%s` - sleep `expr $CONN_EXPIRES - $NOW - 2` - echo "Check that connection is still alive due to idle-timeout reset (time_t now=`date +%s`)" --$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 0 ; then - echo "Error: LDAP connection to remote LDAP server is not found ($RC)" -@@ -354,10 +354,10 @@ fi - NOW=`date +%s` - sleep `expr $CONN_EXPIRES - $NOW + 2` - echo "Check that connection is closed after extended idle-timeout has passed (time_t now=`date +%s`)" --$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \ -+$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \ - -D "cn=Manager,dc=local,dc=com" \ - -H $URI2 \ -- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null -+ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null - RC=$? - if test $RC != 1 ; then - echo "Error: LDAP connection to remote LDAP server was not closed" --- -2.32.0 (Apple Git-132) - diff --git a/user/openldap/time64.patch b/user/openldap/time64.patch index 780d67069..ecca4a143 100644 --- a/user/openldap/time64.patch +++ b/user/openldap/time64.patch @@ -34,7 +34,7 @@ diff -ur a/libraries/libldap/os-local.c b/libraries/libldap/os-local.c diff -ur a/libraries/libldap/result.c b/libraries/libldap/result.c --- a/libraries/libldap/result.c 2022-12-12 23:12:56.618567894 -0600 +++ b/libraries/libldap/result.c 2022-12-12 23:34:24.977768222 -0600 -@@ -264,8 +264,8 @@ +@@ -288,8 +288,8 @@ Debug2( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (infinite timeout)\n", (void *)ld, msgid ); } else { @@ -149,7 +149,7 @@ diff -ur a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c else refresh_len = 0; -@@ -1601,8 +1601,8 @@ +@@ -1607,8 +1607,8 @@ new_cached_query->lru_up = NULL; new_cached_query->lru_down = NULL; @@ -160,7 +160,7 @@ diff -ur a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c pc_caching_reason_str[ why ] ); new_cached_query->scope = query->scope; -@@ -2729,7 +2729,7 @@ +@@ -2735,7 +2735,7 @@ pbi->bi_flags |= BI_HASHED; } else { Debug( pcache_debug, "pc_bind_search: cache is stale, " @@ -169,7 +169,7 @@ diff -ur a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c pbi->bi_cq->bindref_time, op->o_time ); } } else if ( pbi->bi_si ) { -@@ -3865,7 +3865,7 @@ +@@ -3872,7 +3872,7 @@ struct berval bv; switch( c->type ) { case PC_MAIN: @@ -178,7 +178,7 @@ diff -ur a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c cm->db.bd_info->bi_type, cm->max_entries, cm->numattrsets, cm->num_entries_limit, cm->cc_period ); bv.bv_val = c->cr_msg; -@@ -3909,7 +3909,7 @@ +@@ -3916,7 +3916,7 @@ /* HEADS-UP: always print all; * if optional == 0, ignore */ bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ), @@ -187,7 +187,7 @@ diff -ur a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c temp->attr_set_index, temp->ttl, temp->negttl, -@@ -3931,7 +3931,7 @@ +@@ -3938,7 +3938,7 @@ for (temp=qm->templates; temp; temp=temp->qmnext) { if ( !temp->bindttr ) continue; bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ), diff --git a/user/openttd/APKBUILD b/user/openttd/APKBUILD index b2802c462..9d13b34b0 100644 --- a/user/openttd/APKBUILD +++ b/user/openttd/APKBUILD @@ -2,9 +2,9 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=openttd pkgver=14.1 -pkgrel=0 +pkgrel=1 pkgdesc="Simulation game based on Transport Tycoon Deluxe" -url="https://www.openttd.org/en/" +url="https://www.openttd.org/" arch="all" #options="!check" # Test files not shipped in release package. license="GPL-2.0-only" @@ -13,7 +13,9 @@ makedepends="cmake curl-dev dbus-dev fluidsynth-dev fontconfig-dev freetype-dev grfcodec harfbuzz-dev icu-dev libpng-dev lzo-dev mesa-dev sdl2-dev xz-dev zlib-dev" subpackages="$pkgname-doc" -source="https://cdn.openttd.org/openttd-releases/$pkgver/openttd-$pkgver-source.tar.xz" +source="https://cdn.openttd.org/openttd-releases/$pkgver/openttd-$pkgver-source.tar.xz + icu-77.patch + " build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -23,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} -B build @@ -38,4 +40,5 @@ package() { make -C build DESTDIR="$pkgdir" install } -sha512sums="194135cc01457d9ed069c09d8961ad3de681bc9936533ca81ff23099f394bb9a83ef84a0852e85525e258f6149e14fd41cfc5f8e683c0643515005c42fb77e3b openttd-14.1-source.tar.xz" +sha512sums="194135cc01457d9ed069c09d8961ad3de681bc9936533ca81ff23099f394bb9a83ef84a0852e85525e258f6149e14fd41cfc5f8e683c0643515005c42fb77e3b openttd-14.1-source.tar.xz +987ab198758c71e67119b3e95e97023d97882dcf235aab56a905f56351c682e822737d5385cb5385f92b6ec1ffef26f05c9997597377670747291a854b045016 icu-77.patch" diff --git a/user/openttd/icu-77.patch b/user/openttd/icu-77.patch new file mode 100644 index 000000000..1840d6d38 --- /dev/null +++ b/user/openttd/icu-77.patch @@ -0,0 +1,31 @@ +From 19c547ba99395db1b922b7291743c6ace664bc39 Mon Sep 17 00:00:00 2001 +From: fundawang <fundawang@yeah.net> +Date: Fri, 1 Nov 2024 11:40:02 +0800 +Subject: [PATCH] Fix: build with icu >= 76 where icu-i18n and icu-uc become + separated + +--- + CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 137eb7d0f8ce9..2f0248047506a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -152,7 +152,7 @@ if(NOT OPTION_DEDICATED) + find_package(Fontconfig) + endif() + find_package(Harfbuzz) +- find_package(ICU OPTIONAL_COMPONENTS i18n) ++ find_package(ICU OPTIONAL_COMPONENTS i18n uc) + endif() + endif() + endif() +@@ -331,6 +331,7 @@ if(NOT OPTION_DEDICATED) + link_package(Fontconfig TARGET Fontconfig::Fontconfig) + link_package(Harfbuzz TARGET harfbuzz::harfbuzz) + link_package(ICU_i18n) ++ link_package(ICU_uc) + + if(SDL2_FOUND AND OPENGL_FOUND AND UNIX) + # SDL2 dynamically loads OpenGL if needed, so do not link to OpenGL when diff --git a/user/oxygen-icons5/APKBUILD b/user/oxygen-icons/APKBUILD index 686d6b6b1..434fb64da 100644 --- a/user/oxygen-icons5/APKBUILD +++ b/user/oxygen-icons/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> -pkgname=oxygen-icons5 -pkgver=5.94.0 +pkgname=oxygen-icons +pkgver=5.116.0 pkgrel=0 pkgdesc="The KDE Oxygen icon set" url="https://www.kde.org/" @@ -9,9 +9,10 @@ arch="noarch" options="!check" # fdupes, same thing as breeze-icons license="LGPL-2.1" depends="" +provides="oxygen-icons5=$pkgver-r$pkgrel" makedepends="cmake extra-cmake-modules qt5-qtbase-dev" subpackages="" -source="https://download.kde.org/stable/frameworks/${pkgver%.*}/oxygen-icons5-$pkgver.tar.xz" +source="https://download.kde.org/stable/frameworks/${pkgver%.*}/oxygen-icons-$pkgver.tar.xz" build() { if [ "$CBUILD" != "$CHOST" ]; then @@ -21,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -36,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b9906927ec15c422aefaa2e0f287121c51ec16386f60371a8e773c9c4f0530cc1bad99849079cbfff16d78432ac30867ad58d42e9fc6c0b1b07dff810481274d oxygen-icons5-5.94.0.tar.xz" +sha512sums="d02599b95fcf7c7a38a65a7a422eba59748cdd0d6b3542721a789847b550757bc4162ab5d9c3b4bd1267f5ff0ae6d39c8041b65b895eb5553522645cf260670a oxygen-icons-5.116.0.tar.xz" diff --git a/user/oxygen/APKBUILD b/user/oxygen/APKBUILD index 5c7eada1a..613e3254e 100644 --- a/user/oxygen/APKBUILD +++ b/user/oxygen/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=oxygen -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="'Oxygen' theme for KDE" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="90df776e36014b07849c9454632bb73a3b75d5d146eeec8d9de88b63d0bdbd68fabd9f1eaac0166f47057a61c48f7b531630f48d6b037d1a266e18e36febbaa2 oxygen-5.24.5.tar.xz" +sha512sums="2185418247684f138233b2f88ddad7c03e56afaf8c142fce4153c1e82b1112bce5398a3a144b409973f939a6c432fa6b10dd461d6eb99dae0cc9576af8fed422 oxygen-5.27.12.tar.xz" diff --git a/user/php7/APKBUILD b/user/php7/APKBUILD index 7d1f5fddf..569b8263c 100644 --- a/user/php7/APKBUILD +++ b/user/php7/APKBUILD @@ -26,7 +26,7 @@ pkgname=php7 _pkgname=php pkgver=7.4.30 -pkgrel=1 +pkgrel=2 _apiver=20190902 _zendver=20190902 _pdover=20170320 diff --git a/user/plasma-browser-integration/APKBUILD b/user/plasma-browser-integration/APKBUILD index 0b75508aa..c4437d942 100644 --- a/user/plasma-browser-integration/APKBUILD +++ b/user/plasma-browser-integration/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-browser-integration -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Integrate Web browsers into the KDE Plasma desktop" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -39,4 +39,4 @@ package() { rm -r "$pkgdir"/etc } -sha512sums="f34885920f1d4859d57ce3c96523c46d392f5835bce6b7d73afb30ea60827e5d520c168ccf45d2d46cec8027b0d9abe2bfc0c5b4ecfbf3b4433bb3ed0b405497 plasma-browser-integration-5.24.5.tar.xz" +sha512sums="9af5c5dbcd1d76c216b46f58448f970af55c803ea2d10490ba07df820c686bd3c696ad1946b8b1dfa22e6f702c15a23c4a378ff7eb8468649cd8c55544b32c98 plasma-browser-integration-5.27.12.tar.xz" diff --git a/user/plasma-desktop/APKBUILD b/user/plasma-desktop/APKBUILD index 4623429b6..a1396440b 100644 --- a/user/plasma-desktop/APKBUILD +++ b/user/plasma-desktop/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=plasma-desktop -pkgver=5.24.5 -pkgrel=1 +pkgver=5.27.12 +pkgrel=0 pkgdesc="Modern, functional, integrated libre desktop environment" url="https://www.kde.org/plasma-desktop" arch="all" -options="!check" # Test suite fails due to keyboard layouts +options="checkx11" license="BSD-3-Clause AND CC0-1.0 AND GFDL-1.2+ AND GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0+ AND LGPL-2.1-only AND LGPL-2.1+ AND LGPL-3.0-only" # theme/visual dependencies depends="breeze breeze-icons kirigami2 oxygen qt5-qtquickcontrols2 @@ -26,7 +26,8 @@ makedepends="cmake qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtx11extras-dev xorg-server-dev kwin-dev kscreenlocker-dev baloo-dev xcb-util-image-dev xf86-input-libinput-dev breeze-dev xkeyboard-config extra-cmake-modules kirigami2-dev libksysguard-dev qt5-qtquickcontrols2-dev - kuserfeedback-dev qqc2-desktop-style-dev" + kuserfeedback-dev qqc2-desktop-style-dev qt5-qtwayland-dev + qt5-qtwayland-tools" subpackages="$pkgname-doc $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/plasma-desktop-$pkgver.tar.xz remove-discover-from-taskmanager.patch @@ -40,7 +41,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_TESTING=OFF \ @@ -56,5 +57,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="3bb770023b47dcc3c51dbdacfe9cb93adc2f514d8d19f54fed10023d9440bed956ec3beb18d9979cb408ab2e6e960ca383d215fd072ba2df34e4e0b5f6c55270 plasma-desktop-5.24.5.tar.xz -962139886d2d8a2828ff17576cac42ae3cb72ca709f1d387962da0b0adf5c8cb017f362dadc269867968da68680db5647065bdb9221dd69ff96194af0ce62238 remove-discover-from-taskmanager.patch" +sha512sums="7385fd0279c0842808ffe9261213f656d08e8271bac9932116d678ecd6dbfe0076ad46ade884ea302f297b48bc987634626933fc8ad17fb1b540e270945dc363 plasma-desktop-5.27.12.tar.xz +dd2eba15544e99a656d1ae278d0f7c92ec88e1709e6089c7a640373cd7fd7ed3c7f4f43353ccab4d3ae3f341ff47708d5ce645d41a7a3d4b159dc751759b0cc9 remove-discover-from-taskmanager.patch" diff --git a/user/plasma-desktop/remove-discover-from-taskmanager.patch b/user/plasma-desktop/remove-discover-from-taskmanager.patch index 76e37ac85..bdc24b79f 100644 --- a/user/plasma-desktop/remove-discover-from-taskmanager.patch +++ b/user/plasma-desktop/remove-discover-from-taskmanager.patch @@ -5,7 +5,7 @@ See-also: https://git.adelielinux.org/adelie/packages/-/issues/1115 --- plasma-desktop-5.24.5/applets/taskmanager/package/contents/config/main.xml.old 2022-05-03 05:31:25.000000000 -0500 +++ plasma-desktop-5.24.5/applets/taskmanager/package/contents/config/main.xml 2023-11-25 06:21:00.002184051 -0600 -@@ -81,7 +81,7 @@ +@@ -85,7 +85,7 @@ </entry> <entry name="launchers" type="StringList"> <label>The list of launcher tasks on the widget. Usually .desktop file or executable URLs. Special URLs such as preferred://browser that expand to default applications are supported.</label> diff --git a/user/plasma-framework/APKBUILD b/user/plasma-framework/APKBUILD index 865e30359..cac8f1fca 100644 --- a/user/plasma-framework/APKBUILD +++ b/user/plasma-framework/APKBUILD @@ -1,16 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-framework -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Frameworks for the KDE Plasma 5 desktop environment" url="https://www.kde.org/" arch="all" -options="!check" # Requires accelerated X11 *and* system DBus running. +options="checkx11" license="LGPL-2.1+ AND GPL-2.0+" depends="qt5-qtquickcontrols" depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kconfig-dev kcoreaddons-dev kpackage-dev kservice-dev kwindowsystem-dev" +checkdepends="openbox" docdepends="kservice-doc kpackage-doc kconfig-doc kcoreaddons-doc" makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen libx11-dev libxcb-dev graphviz qt5-qtsvg-dev qt5-qttools-dev kdoctools-dev kio-dev @@ -29,7 +30,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,11 +39,17 @@ build() { } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + openbox & + # Icon item test fails because animations don't run. + # Dialogue test fails because KWin border sizes != Openbox border sizes. + # 5 - plasma-iconitemtest (Failed) + # 8 - dialognativetest (Failed) + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(plasma-iconitem|dialognative)test' + openbox --exit } package() { make DESTDIR="$pkgdir" install } -sha512sums="071e0ce261516e4a7ab1105f86304e5dae7c16a9663980222cf60922ae6bf785cd2b0447b7a2f2a57e2a2396c1de15655c8a7c02568d81652da946a6384b9eb7 plasma-framework-5.94.0.tar.xz" +sha512sums="d15a1379d14a13c17932c1278b209b0a2f6a07f1abc15cb436f73765f8df12564297541c29bf453991e4dc7d469c5b83ecc53e9e97480d10d8d897597acfe804 plasma-framework-5.116.0.tar.xz" diff --git a/user/plasma-integration/APKBUILD b/user/plasma-integration/APKBUILD index a2922c75f..7f7854808 100644 --- a/user/plasma-integration/APKBUILD +++ b/user/plasma-integration/APKBUILD @@ -1,18 +1,20 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=plasma-integration -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Qt platform theme plugin for Plasma" url="https://www.kde.org/" arch="all" -options="!check" # Times out, requires X11 desktop. +options="checkx11" license="(LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.1-only AND ((LGPL-2.1-only WITH Nokia-Qt-exception-1.1) OR (GPL-3.0-only WITH Nokia-Qt-exception-1.1))" -depends="breeze ttf-noto" +depends="breeze plasma-wayland-protocols qt5-qtquickcontrols ttf-noto" +checkdepends="openbox" makedepends="cmake extra-cmake-modules python3 qt5-qtbase-dev libxcursor-dev qt5-qtx11extras-dev kconfig-dev kconfigwidgets-dev ki18n-dev kio-dev kiconthemes-dev knotifications-dev kwayland-dev kwidgetsaddons-dev - kwindowsystem-dev breeze-dev qt5-qtquickcontrols2-dev" + kwindowsystem-dev breeze-dev qt5-qtquickcontrols2-dev qt5-qtwayland-dev + qt5-qtwayland-tools" subpackages="$pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/plasma-integration-$pkgver.tar.xz" @@ -24,7 +26,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DCMAKE_DISABLE_FIND_PACKAGE_FontNotoSans=true \ @@ -34,11 +36,16 @@ build() { } check() { - CTEST_OUTPUT_ON_FAILURE=TRUE ctest + # KDE Platform Theme test fails due to border size (likely needs KWin) + # KFileDialog tests fail when Mesa can't provide valid GLX visuals + # (i.e. big endian issue) + openbox & + CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'frameworkintegration-(kdeplatformtheme|kfiledialog(qml)?)_unittest' + openbox --exit } package() { make DESTDIR="$pkgdir" install } -sha512sums="6c60eff349d6b60fd8f781e162768d7cfb45d042687c1206f3f2c9e7af0c5719ff70555eff181782607ac53755844b0968ee7b9a75c87d6bd65b489a3a9dc348 plasma-integration-5.24.5.tar.xz" +sha512sums="c43326a004344ffc004684f04d8706eafc05b9efe4e81719da88b3717e58201c5bf7d50f8d242ecac0a826de4e4e14ca5ea1b76682b745faff96bbe21ff806c1 plasma-integration-5.27.12.tar.xz" diff --git a/user/plasma-meta/APKBUILD b/user/plasma-meta/APKBUILD index 8526dde71..2345d209c 100644 --- a/user/plasma-meta/APKBUILD +++ b/user/plasma-meta/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-meta -pkgver=5.24.5 -pkgrel=1 +pkgver=5.27.12 +pkgrel=0 pkgdesc="Metapackage for optional KDE Plasma dependencies" url="https://www.adelielinux.org/" arch="noarch" diff --git a/user/plasma-nm/APKBUILD b/user/plasma-nm/APKBUILD index 850b6cb09..d495b65bd 100644 --- a/user/plasma-nm/APKBUILD +++ b/user/plasma-nm/APKBUILD @@ -1,17 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-nm -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="NetworkManager integration for KDE Plasma desktop" url="https://www.kde.org/" arch="all" license="(LGPL-2.1-only OR LGPL-3.0-only) AND GPL-2.0-only AND GPL-2.0+ AND LGPL-2.0+" depends="kirigami2 mobile-broadband-provider-info prison-quick" -makedepends="cmake extra-cmake-modules kauth-dev kcodecs-dev kcompletion-dev - kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev kdeclarative-dev - ki18n-dev kiconthemes-dev kio-dev kitemviews-dev kjobwidgets-dev - knotifications-dev kpackage-dev kservice-dev kwallet-dev +makedepends="cmake extra-cmake-modules kauth-dev kcmutils-dev kcodecs-dev + kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev + kdeclarative-dev ki18n-dev kiconthemes-dev kio-dev kitemviews-dev + kjobwidgets-dev knotifications-dev kpackage-dev kservice-dev kwallet-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev modemmanager-qt-dev networkmanager-dev networkmanager-qt-dev plasma-framework-dev prison-dev qca-dev qt5-qtbase-dev qt5-qtdeclarative-dev solid-dev" @@ -28,7 +28,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -44,4 +44,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="0b64b2f231d7e97f901251e274bebd53b22c19ddcfa67cc66947f48adebe61c6bde21f339896f267af22f4112b9a392d331345999000c43cb5b1e51680668ec8 plasma-nm-5.24.5.tar.xz" +sha512sums="4c1a6c94f2b844df18c93659d5834f6231871a570fb35436889572d562c603bdeb2d13e2b6ea806e6af33eb68bb22f1b5eb5e86aa88ac50ac2e8b3b05817b44a plasma-nm-5.27.12.tar.xz" diff --git a/user/plasma-pa/APKBUILD b/user/plasma-pa/APKBUILD index e0954a0d1..66aac2fbe 100644 --- a/user/plasma-pa/APKBUILD +++ b/user/plasma-pa/APKBUILD @@ -1,17 +1,17 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-pa -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="PulseAudio integration for KDE Plasma desktop" url="https://www.kde.org/" arch="all" license="LGPL-2.1-only OR LGPL-3.0-only" depends="kirigami2 libcanberra-pulse sound-theme-freedesktop" -makedepends="cmake extra-cmake-modules glib-dev kcoreaddons-dev kdeclarative-dev - kdoctools-dev kglobalaccel-dev ki18n-dev knotifications-dev - libcanberra-dev plasma-framework-dev pulseaudio-dev qt5-qtbase-dev - qt5-qtdeclarative-dev" +makedepends="cmake extra-cmake-modules glib-dev kcmutils-dev kcoreaddons-dev + kdeclarative-dev kdoctools-dev kglobalaccel-dev ki18n-dev + knotifications-dev libcanberra-dev plasma-framework-dev pulseaudio-dev + qt5-qtbase-dev qt5-qtdeclarative-dev" subpackages="$pkgname-doc $pkgname-lang" source="https://download.kde.org/stable/plasma/$pkgver/plasma-pa-$pkgver.tar.xz" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="fdf18b0baa1fb43a8d576d454ba6625bf7d376eb30fcbe8e09df388441a04d1b373b6d53a56b4f14552fc06cbdddea193248044d0cc5e3b71fb90651708afaa1 plasma-pa-5.24.5.tar.xz" +sha512sums="14efddfa0059badd6e2e5bb3043d438cb49b3bef46847d99b3bcc1aaeeda05603e5408c43e05a93a1f79dff6b6775278321a8939d3ad6265f20e9b3c82d48b9d plasma-pa-5.27.12.tar.xz" diff --git a/user/plasma-systemmonitor/APKBUILD b/user/plasma-systemmonitor/APKBUILD index 9670ff432..f64a63775 100644 --- a/user/plasma-systemmonitor/APKBUILD +++ b/user/plasma-systemmonitor/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=plasma-systemmonitor -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="System monitor tool for KDE Plasma" url="https://www.kde.org/plasma-desktop/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b8c4a959eb587b25d8d503b3b2d05e6c8ced3b0cb146e08f0351f424962d059b70c8dd323d55b31ef903157b71bad6f20f969840a860ed25ebdafeb3db18489d plasma-systemmonitor-5.24.5.tar.xz" +sha512sums="e43b758b180c97804562d126c38e449f88cb4cd52389097b7b5fad57c80e8ef080d6b779c092a2b7426c6366b081c840ad96144d4c4e25b55d1c47d8440826f5 plasma-systemmonitor-5.27.12.tar.xz" diff --git a/user/plasma-thunderbolt/APKBUILD b/user/plasma-thunderbolt/APKBUILD index 540d65560..a49ca6db2 100644 --- a/user/plasma-thunderbolt/APKBUILD +++ b/user/plasma-thunderbolt/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-thunderbolt -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Thunderbolt device integration for KDE Plasma desktop" url="https://www.kde.org/" arch="all" -options="!check" # Requires running D-Bus. +options="checkx11" license="GPL-2.0-only" depends="bolt" makedepends="cmake extra-cmake-modules kcmutils-dev kcoreaddons-dev @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="b1096fac09800e33b87e79a2e774eaf19afa063263e71f772ec0081fda714c63dd07a0000489c36c3f7deead3ee563880bc12f336b8ea599b396613d28cc08f5 plasma-thunderbolt-5.24.5.tar.xz" +sha512sums="208d3b0e5c9f10823f0da13071c9e2c4e3b8ea494f12c51bd824b50d391046d716ebe5775ed095fef4fca0ca2983eaff5905a24d234aaaf29bb1e8ae32072157 plasma-thunderbolt-5.27.12.tar.xz" diff --git a/user/plasma-vault/APKBUILD b/user/plasma-vault/APKBUILD index 4b37a00c2..92033bf1e 100644 --- a/user/plasma-vault/APKBUILD +++ b/user/plasma-vault/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-vault -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Secure storage plugin for KDE Plasma desktop" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="6495f94f060f139e91a25cbecf432d5bf9ee5ae949438278966c11cd7e725feb63aee6955dce5b46b816b0c57f5253b2cf215ad70efd592bf6e579ad6acb4cd2 plasma-vault-5.24.5.tar.xz" +sha512sums="fbeb683a371fdfc1a55886a994c102da1625d224d714042c459411b70b88d03932dccf7366ef55d2eedda5190a49fb315dcbc498ee3f64a827c80fbf2c5265c9 plasma-vault-5.27.12.tar.xz" diff --git a/user/plasma-wayland-protocols/APKBUILD b/user/plasma-wayland-protocols/APKBUILD index fba126944..563a11ace 100644 --- a/user/plasma-wayland-protocols/APKBUILD +++ b/user/plasma-wayland-protocols/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=plasma-wayland-protocols -pkgver=1.7.0 +pkgver=1.18.0 pkgrel=0 pkgdesc="KDE accessories for X12" url="https://www.kde.org/" @@ -36,4 +36,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="1ed01ce6af375c4012b3367377cea172446f2a7f1bef01c2e56dc2482c378955f9507e4e3bbb2ab316ba116ec181beaf9287f5b81199a02d5fd9eefb658bcb9c plasma-wayland-protocols-1.7.0.tar.xz" +sha512sums="4cdea72effa3b35cf3c7d4ce50786391deaa85285e24375c487d8b62c6eed9c7e2ce864180ae04f8c8ff7723a09a5716280218a1a8d262027ae8330f15a18398 plasma-wayland-protocols-1.18.0.tar.xz" diff --git a/user/plasma-workspace-wallpapers/APKBUILD b/user/plasma-workspace-wallpapers/APKBUILD index bd69db0ad..cd4fcbc3b 100644 --- a/user/plasma-workspace-wallpapers/APKBUILD +++ b/user/plasma-workspace-wallpapers/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=plasma-workspace-wallpapers -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="Default wallpapers from KDE" url="https://www.KDE.org/" @@ -20,7 +20,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -35,4 +35,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="8b22bb8a2c093f3f7b7da8b0db55c688fa6d602326429db3e32960d7596c0f79e79d1a724bdb914d55caeffa36f422eea6678afdd62e2bb89f3afa479d056873 plasma-workspace-wallpapers-5.24.5.tar.xz" +sha512sums="a4fa047b1801e98deaca99d74cb21d648be58ee22a4f68dd376e666feeaf3d0c276758eefd297a27562906c656999c745e868b88a7ff6b7fc5714ebae12aa85e plasma-workspace-wallpapers-5.27.12.tar.xz" diff --git a/user/plasma-workspace/APKBUILD b/user/plasma-workspace/APKBUILD index 06b2acbd3..dd5c234d8 100644 --- a/user/plasma-workspace/APKBUILD +++ b/user/plasma-workspace/APKBUILD @@ -1,12 +1,12 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=plasma-workspace -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE Plasma 5 workspace" url="https://www.kde.org/plasma-desktop" arch="all" -options="!check" # Test requires X11 accelration. +options="checkx11" license="(GPL-2.0-only OR GPL-3.0-only) AND LGPL-2.1+ AND GPL-2.0+ AND MIT AND LGPL-2.1-only AND LGPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.0-only" # startkde shell script calls depends="kinit qdbus qtpaths xmessage xprop xset xsetroot" @@ -23,6 +23,7 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kdelibs4support-dev makedepends="$depends_dev cmake extra-cmake-modules qt5-qtscript-dev iso-codes-dev libdbusmenu-qt-dev libqalculate-dev libxtst-dev xcb-util-image-dev libkworkspace-dev networkmanager-qt-dev + wayland-protocols libxcursor-dev baloo-dev kactivities-dev kcmutils-dev kcrash-dev kdbusaddons-dev kdeclarative-dev kdesu-dev kdoctools-dev kglobalaccel-dev kholidays-dev @@ -34,11 +35,9 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qtscript-dev breeze-dev fontconfig-dev layer-shell-qt-dev qt5-qtwayland-tools libxkbcommon-dev libxft-dev qt5-qtwayland-dev wayland-dev" provides="user-manager=$pkgver-r$pkgrel" -subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" +subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-systemd" source="https://download.kde.org/stable/plasma/$pkgver/plasma-workspace-$pkgver.tar.xz libkworkspace.patch - backport1.patch - backport2.patch " build() { @@ -49,7 +48,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_TESTING=OFF \ @@ -65,7 +64,5 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="ae40fe545b03e42e9f8fe2e8885d3853f4b52d4fd2ed3ecf7d24fa59b4924b8f8b389e8713ec6a3a875bc66df3952de9157d4a5631b283105a9329a1a1825996 plasma-workspace-5.24.5.tar.xz -f58b88928fd68518bc0524db35388cb0f0dbc2a55d85fc47e92ce7fcbaf9b155482736e282bd84104ceecc625406845840128c8d0fcd2a4d5a854673964cd94f libkworkspace.patch -022f1407c538f396cdd1fd9c228a56450ed868e0f16e42333cd10fca238fb5e12b38596f65b06159b573628c290f86d8af8dca136b1acafe4042d4c0d91e8a63 backport1.patch -3cc5228b5f2fdcb21a2e877fccde1e5316a9e2efae1523c68dff4a6a2efa5cc42782340b7ae491a5ea77ef642aa4b7ce35e58068d9e124b286c431105bad8821 backport2.patch" +sha512sums="9459b826110da3775dc206550811d40ede77c5c6c357c6334ee4464273eecc4a24e3fa799c60709f9ff9c4d99285a77ee0f7b2523b39bfe76dd69926b35095ab plasma-workspace-5.27.12.tar.xz +93d699cb03bac4d2f1c01b5a10abd61c4981244dfaa01cb3cbfa93043adc4e37af3ff85823193ebe45cb07f5ca59a4f71ebcf8ccb84f8d2ea81ac024696d3c38 libkworkspace.patch" diff --git a/user/plasma-workspace/backport1.patch b/user/plasma-workspace/backport1.patch deleted file mode 100644 index c2ccc0f62..000000000 --- a/user/plasma-workspace/backport1.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 4d3f99558cff95259590e70dfbf854a479f772ce Mon Sep 17 00:00:00 2001 -From: Nate Graham <nate@kde.org> -Date: Wed, 4 May 2022 10:45:52 -0600 -Subject: [PATCH] applets/appmenu: fix top-level menu text coloration - -28537cf3ff3cd9210f7568f40334ac3a2c9bed18 made the color dynamic, but -neglected to respect the Plasma color scheme, if any. This causes -problems with Plasma themes that have their own colors and don't -respect the systemwide color scheme, such as Breeze Twilight. - -Fix it by using the appropriate colors from the PlasmaCore color scheme -object, not the systemwide object provided by Qt. - -BUG: 453348 -FIXED-IN: 5.24.6 - - -(cherry picked from commit 19d9bc7e395d8c6e007afdc3b3b5c11a7d02190e) ---- - applets/appmenu/package/contents/ui/MenuDelegate.qml | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/applets/appmenu/package/contents/ui/MenuDelegate.qml b/applets/appmenu/package/contents/ui/MenuDelegate.qml -index 441e99016..afb37589a 100644 ---- a/applets/appmenu/package/contents/ui/MenuDelegate.qml -+++ b/applets/appmenu/package/contents/ui/MenuDelegate.qml -@@ -66,9 +66,6 @@ AbstractButton { - - contentItem: PC3.Label { - text: controlRoot.Kirigami.MnemonicData.richTextLabel -- // Kirigami.Theme.highlightedTextColor returns different colors -- // depending on window focus, which does not apply to this applet -- // instead, we use palette.highlightedText here, which returns consistent result -- color: background.state == MenuDelegate.State.Rest ? palette.windowText : palette.highlightedText -+ color: background.state == MenuDelegate.State.Rest ? PlasmaCore.Theme.textColor : PlasmaCore.Theme.highlightedTextColor - } - } --- -GitLab - diff --git a/user/plasma-workspace/libkworkspace.patch b/user/plasma-workspace/libkworkspace.patch index e8e3d93b6..4fe8fa0ea 100644 --- a/user/plasma-workspace/libkworkspace.patch +++ b/user/plasma-workspace/libkworkspace.patch @@ -11,18 +11,18 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index e587a386..d1a63527 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -63,6 +63,7 @@ set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "File Searching" +@@ -80,6 +80,7 @@ set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "File Searching" + pkg_check_modules(QALCULATE libqalculate>2.0 REQUIRED IMPORTED_TARGET) - find_package(KF5TextEditor) find_package(KWinDBusInterface CONFIG REQUIRED) +find_package(LibKWorkspace 5.17.90) - find_package(KScreenLocker 5.17.90 REQUIRED) - find_package(ScreenSaverDBusInterface CONFIG REQUIRED) -@@ -151,7 +151,10 @@ endif() - add_definitions(-DQT_NO_URL_CAST_FROM_STRING) - - add_subdirectory(doc) + find_package(KF5Screen CONFIG REQUIRED) + find_package(KScreenLocker 5.13.80 REQUIRED) +@@ -360,7 +361,10 @@ endif() + add_subdirectory(doc) + kdoctools_install(po) + endif() -add_subdirectory(libkworkspace) +if(NOT LibKWorkspace_FOUND) + message(STATUS "System LibKWorkspace not found, using bundled.") diff --git a/user/polkit-kde-agent-1/APKBUILD b/user/polkit-kde-agent-1/APKBUILD index e56f054d7..4f6ebbeb7 100644 --- a/user/polkit-kde-agent-1/APKBUILD +++ b/user/polkit-kde-agent-1/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=polkit-kde-agent-1 -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="PolKit agent for KDE" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="8182271a4463e28001c5806156afffa8436c9fce0ead257c60b413bf54565d8271e8356f5670e8eb2aea5c3d2a308e31f14f6eff4c6903e1936e6395d8502a93 polkit-kde-agent-1-5.24.5.tar.xz" +sha512sums="64d5a11ed4a5812a6f195afbc0372197f6b9a38ba143a60a65db896cb20aff7cb53881ecfdd0982f2cd87bb91d275964df2fde459861425f97d7f8f6de998c6f polkit-kde-agent-1-5.27.12.tar.xz" diff --git a/user/postfix/APKBUILD b/user/postfix/APKBUILD index 65b12463e..445b84cb5 100644 --- a/user/postfix/APKBUILD +++ b/user/postfix/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: Dan Theisen <djt@hxx.in> pkgname=postfix -pkgver=3.9.0 -pkgrel=1 +pkgver=3.9.4 +pkgrel=0 pkgdesc="Mail server (MTA) that is Sendmail outside and Qmail inside" url="https://www.postfix.org/" arch="all" @@ -92,6 +92,6 @@ sqlite() { _database "sqlite" "SQLite 3" } -sha512sums="46faaf529a6d2edc5ea747ee0d73a028f7061a923da0ea4b1e1828d935b15f5782d83f7a8472e7c74b45ea0e96666c871efd352934bead28a88ddd3561ade324 postfix-3.9.0.tar.gz +sha512sums="edea13b7ad468dc2550345f2e0b73df36ee7fa569b7e85bba99a06764c6794150c2fcd71fada53aea4ef91ffe120219500d550b428c1369abfa718a8ceb04846 postfix-3.9.4.tar.gz c79334a2d4989990bf0bc26341332611521d7cd06f1dcacc7a3baef6bf2ddd5f90208f39b26b26a07b134a2398d669a40d5322b4be6c053947fc9a962ddf7111 honour-config-directory.patch 2ad1b053bbb51d4f480dbf5a01252e8e99a82ec14a75ff49336b2b190ea55bc02400542b109fa0cc4ebfe6b42eaabbc45f70f2ea581f1eb9c4189c439b825592 postfix.initd" diff --git a/user/postgresql/APKBUILD b/user/postgresql/APKBUILD index b5f40acbb..85fd62553 100644 --- a/user/postgresql/APKBUILD +++ b/user/postgresql/APKBUILD @@ -2,7 +2,7 @@ # Contributor: Jakub Jirutka <jakub@jirutka.cz> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=postgresql -pkgver=14.15 +pkgver=14.18 pkgrel=0 pkgdesc="Featureful object-relational database system (RDBMS)" url="https://www.postgresql.org/" @@ -249,7 +249,7 @@ _submv() { done } -sha512sums="227f9551167ee62e5185d6f6777e100ecc09f497b9ee1b5a8e659de8d4c237b0f9a97005706bbf64c3e839271e2630f6a417ba98dfce47bcb4c27e8641a7c6ef postgresql-14.15.tar.bz2 +sha512sums="fe40ba9fcc001f8c7eb3557c6248fa42af82b487ea4f31b8b20f5fa7ab930246659a4c8cf0bfa9a52f5143c766c0660d36b092474d2909020114ea3a1810adfd postgresql-14.18.tar.bz2 5772c54378f885fd2924be431f577bcbc134481d17a1331afd42ebeea2995e52364601ca2e2839d3c1dd78c51e4483424d1ed8ef8cdf43889a5a209861396efc perl-rpath.patch 8439a6fdfdea0a4867daeb8bc23d6c825f30c00d91d4c39f48653f5ee77341f23282ce03a77aad94b5369700f11d2cb28d5aee360e59138352a9ab331a9f9d0f conf-unix_socket_directories.patch 323ea2f3b6d71b858153d1f8ae62a98548ce8b2d1e0d9214dd32e858e4ad9bd0194b8b2f6e9540ce6324e394a08f496b2822004c1c3fef11184f267fa401a087 disable-broken-tests.patch diff --git a/user/powerdevil/APKBUILD b/user/powerdevil/APKBUILD index d010e03f9..d3966acfa 100644 --- a/user/powerdevil/APKBUILD +++ b/user/powerdevil/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=powerdevil -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE Plasma power management utilities" url="https://www.kde.org/" @@ -11,9 +11,9 @@ depends="kirigami2" makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev kactivities-dev kauth-dev kconfig-dev kdbusaddons-dev kglobalaccel-dev ki18n-dev kidletime-dev kio-dev knotifyconfig-dev kdelibs4support-dev - kwayland-dev libkscreen-dev libkworkspace-dev solid-dev eudev-dev - bluez-qt-dev kirigami2-dev libcap-dev networkmanager-qt-dev" -subpackages="$pkgname-doc $pkgname-lang" + kwayland-dev libkscreen-dev libkworkspace-dev eudev-dev kcmutils-dev + bluez-qt-dev kirigami2-dev libcap-dev networkmanager-qt-dev solid-dev" +subpackages="$pkgname-doc $pkgname-lang $pkgname-systemd" source="https://download.kde.org/stable/plasma/$pkgver/powerdevil-$pkgver.tar.xz" build() { @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="2f3e6888be7039bf7beb754ef117d09e79ceb4e5ef73d74f982d37785adbd7a489fc86641c9df9ea4a34fabd2ccac737f5e7ee08958d2dd03b5a676f22aa4c15 powerdevil-5.24.5.tar.xz" +sha512sums="e70123342314b970f8824c59bec7f8f4565aa1ff0dbe0ccfba168dba358125c717e5026a82460383a612690081a18fb7e631c162cce897b6c7c5631af4001472 powerdevil-5.27.12.tar.xz" diff --git a/user/prison/APKBUILD b/user/prison/APKBUILD index a84a1ea2d..5b40acdda 100644 --- a/user/prison/APKBUILD +++ b/user/prison/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=prison -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Qt Barcode library for programatically creating QR codes" url="https://www.kde.org/" @@ -13,7 +13,6 @@ makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz qt5-qtdeclarative-dev qt5-qtmultimedia-dev qt5-qttools-dev" subpackages="$pkgname-dev $pkgname-doc $pkgname-quick" source="https://download.kde.org/stable/frameworks/${pkgver%.*}/prison-$pkgver.tar.xz - code128.patch endian.patch " @@ -25,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -47,6 +46,5 @@ quick() { mv "$pkgdir"/usr/lib/qt5/qml "$subpkgdir"/usr/lib/qt5/ } -sha512sums="7de7f528d686ddcf1ff987786ca06d431944deed49f89075a0438982408843249882fc931003f91b4646513ff4515df9104d97ba662a87eeee6394cc93bd3969 prison-5.94.0.tar.xz -a9d43722cab473ce132047523162f6532b5c84ff1446fdec262a434396aaf1fd83e87fff06c37ead01037488863805989ccd39412d72116485a2f9713733173f code128.patch -b0614c9045864781daab75c7bb6e352431b3a4cdb167a7cfeafe8ff5a8a62c8f28f78db3a42175d230d3655877c7f49cf7f2774b189c1b11107217d74c0d7820 endian.patch" +sha512sums="fa7ad2393a25b8b7d7cea60891ab27e114ea069a78479a90a6e7df219963991e89f477c061fea0d6c680cfe72502e4b40fdf05b55858072825543ca52635bfd0 prison-5.116.0.tar.xz +df3b58d3e217856513fb64e531fc3560e4ff7cf3aa33184576b14984d46e165be4b83987519a9076ad66cbc7f4ab831ad18c1d96c2f03d13212cde90e1a95da7 endian.patch" diff --git a/user/prison/code128.patch b/user/prison/code128.patch deleted file mode 100644 index 0c7731e06..000000000 --- a/user/prison/code128.patch +++ /dev/null @@ -1,245 +0,0 @@ -From a76354819cc2de05b0a63abc4786a0a3bfe4cafa Mon Sep 17 00:00:00 2001 -From: ivan tkachenko <me@ratijas.tk> -Date: Sat, 2 Oct 2021 13:53:11 +0300 -Subject: [PATCH] Convert code128 data table to binary literals - -...and add a trailing comma, finally. ---- - src/lib/code128barcode.cpp | 220 ++++++++++++++++++------------------- - 1 file changed, 109 insertions(+), 111 deletions(-) - -diff --git a/src/lib/code128barcode.cpp b/src/lib/code128barcode.cpp -index f379c09..cea724a 100644 ---- a/src/lib/code128barcode.cpp -+++ b/src/lib/code128barcode.cpp -@@ -64,118 +64,116 @@ QImage Code128Barcode::paintImage(const QSizeF &size) - } - - // Code 128 symbol table --// ### this is the perfect use-case for binary literals (as the binary pattern --// corresponds to the line pattern), adjust this once KF5 moves to C++14 - static const uint16_t code128_symbols[] = { -- 1740, // 0b11011001100 // 0 -- 1644, // 0b11001101100 -- 1638, // 0b11001100110 -- 1176, // 0b10010011000 -- 1164, // 0b10010001100 -- 1100, // 0b10001001100 -- 1224, // 0b10011001000 -- 1220, // 0b10011000100 -- 1124, // 0b10001100100 -- 1608, // 0b11001001000 -- 1604, // 0b11001000100 // 10 -- 1572, // 0b11000100100 -- 1436, // 0b10110011100 -- 1244, // 0b10011011100 -- 1230, // 0b10011001110 -- 1484, // 0b10111001100 -- 1260, // 0b10011101100 -- 1254, // 0b10011100110 -- 1650, // 0b11001110010 -- 1628, // 0b11001011100 -- 1614, // 0b11001001110 // 20 -- 1764, // 0b11011100100 -- 1652, // 0b11001110100 -- 1902, // 0b11101101110 -- 1868, // 0b11101001100 -- 1836, // 0b11100101100 -- 1830, // 0b11100100110 -- 1892, // 0b11101100100 -- 1844, // 0b11100110100 -- 1842, // 0b11100110010 -- 1752, // 0b11011011000 // 30 -- 1734, // 0b11011000110 -- 1590, // 0b11000110110 -- 1304, // 0b10100011000 -- 1112, // 0b10001011000 -- 1094, // 0b10001000110 -- 1416, // 0b10110001000 -- 1128, // 0b10001101000 -- 1122, // 0b10001100010 -- 1672, // 0b11010001000 -- 1576, // 0b11000101000 // 40 -- 1570, // 0b11000100010 -- 1464, // 0b10110111000 -- 1422, // 0b10110001110 -- 1134, // 0b10001101110 -- 1496, // 0b10111011000 -- 1478, // 0b10111000110 -- 1142, // 0b10001110110 -- 1910, // 0b11101110110 -- 1678, // 0b11010001110 -- 1582, // 0b11000101110 // 50 -- 1768, // 0b11011101000 -- 1762, // 0b11011100010 -- 1774, // 0b11011101110 -- 1880, // 0b11101011000 -- 1862, // 0b11101000110 -- 1814, // 0b11100010110 -- 1896, // 0b11101101000 -- 1890, // 0b11101100010 -- 1818, // 0b11100011010 -- 1914, // 0b11101111010 // 60 -- 1602, // 0b11001000010 -- 1930, // 0b11110001010 -- 1328, // 0b10100110000 -- 1292, // 0b10100001100 -- 1200, // 0b10010110000 -- 1158, // 0b10010000110 -- 1068, // 0b10000101100 -- 1062, // 0b10000100110 -- 1424, // 0b10110010000 -- 1412, // 0b10110000100 // 70 -- 1232, // 0b10011010000 -- 1218, // 0b10011000010 -- 1076, // 0b10000110100 -- 1074, // 0b10000110010 -- 1554, // 0b11000010010 -- 1616, // 0b11001010000 -- 1978, // 0b11110111010 -- 1556, // 0b11000010100 -- 1146, // 0b10001111010 -- 1340, // 0b10100111100 // 80 -- 1212, // 0b10010111100 -- 1182, // 0b10010011110 -- 1508, // 0b10111100100 -- 1268, // 0b10011110100 -- 1266, // 0b10011110010 -- 1956, // 0b11110100100 -- 1940, // 0b11110010100 -- 1938, // 0b11110010010 -- 1758, // 0b11011011110 -- 1782, // 0b11011110110 // 90 -- 1974, // 0b11110110110 -- 1400, // 0b10101111000 -- 1310, // 0b10100011110 -- 1118, // 0b10001011110 -- 1512, // 0b10111101000 -- 1506, // 0b10111100010 -- 1960, // 0b11110101000 -- 1954, // 0b11110100010 -- 1502, // 0b10111011110 -- 1518, // 0b10111101110 // 100 -- 1886, // 0b11101011110 -- 1966, // 0b11110101110 -- 1668, // 0b11010000100 -- 1680, // 0b11010010000 -- 1692, // 0b11010011100 -- 1594, // 0b11000111010 -- 1720, // 0b11010111000 -- 6379 // 0b1100011101011 -+ 0b11011001100, // 0 -+ 0b11001101100, -+ 0b11001100110, -+ 0b10010011000, -+ 0b10010001100, -+ 0b10001001100, -+ 0b10011001000, -+ 0b10011000100, -+ 0b10001100100, -+ 0b11001001000, -+ 0b11001000100, // 10 -+ 0b11000100100, -+ 0b10110011100, -+ 0b10011011100, -+ 0b10011001110, -+ 0b10111001100, -+ 0b10011101100, -+ 0b10011100110, -+ 0b11001110010, -+ 0b11001011100, -+ 0b11001001110, // 20 -+ 0b11011100100, -+ 0b11001110100, -+ 0b11101101110, -+ 0b11101001100, -+ 0b11100101100, -+ 0b11100100110, -+ 0b11101100100, -+ 0b11100110100, -+ 0b11100110010, -+ 0b11011011000, // 30 -+ 0b11011000110, -+ 0b11000110110, -+ 0b10100011000, -+ 0b10001011000, -+ 0b10001000110, -+ 0b10110001000, -+ 0b10001101000, -+ 0b10001100010, -+ 0b11010001000, -+ 0b11000101000, // 40 -+ 0b11000100010, -+ 0b10110111000, -+ 0b10110001110, -+ 0b10001101110, -+ 0b10111011000, -+ 0b10111000110, -+ 0b10001110110, -+ 0b11101110110, -+ 0b11010001110, -+ 0b11000101110, // 50 -+ 0b11011101000, -+ 0b11011100010, -+ 0b11011101110, -+ 0b11101011000, -+ 0b11101000110, -+ 0b11100010110, -+ 0b11101101000, -+ 0b11101100010, -+ 0b11100011010, -+ 0b11101111010, // 60 -+ 0b11001000010, -+ 0b11110001010, -+ 0b10100110000, -+ 0b10100001100, -+ 0b10010110000, -+ 0b10010000110, -+ 0b10000101100, -+ 0b10000100110, -+ 0b10110010000, -+ 0b10110000100, // 70 -+ 0b10011010000, -+ 0b10011000010, -+ 0b10000110100, -+ 0b10000110010, -+ 0b11000010010, -+ 0b11001010000, -+ 0b11110111010, -+ 0b11000010100, -+ 0b10001111010, -+ 0b10100111100, // 80 -+ 0b10010111100, -+ 0b10010011110, -+ 0b10111100100, -+ 0b10011110100, -+ 0b10011110010, -+ 0b11110100100, -+ 0b11110010100, -+ 0b11110010010, -+ 0b11011011110, -+ 0b11011110110, // 90 -+ 0b11110110110, -+ 0b10101111000, -+ 0b10100011110, -+ 0b10001011110, -+ 0b10111101000, -+ 0b10111100010, -+ 0b11110101000, -+ 0b11110100010, -+ 0b10111011110, -+ 0b10111101110, // 100 -+ 0b11101011110, -+ 0b11110101110, -+ 0b11010000100, -+ 0b11010010000, -+ 0b11010011100, -+ 0b11000111010, -+ 0b11010111000, -+ 0b1100011101011, - }; - - static uint8_t symbolForCharacter(const QByteArray &data, int index, CodeSet set) --- -GitLab - diff --git a/user/prison/endian.patch b/user/prison/endian.patch index b812bc46e..9659b91e0 100644 --- a/user/prison/endian.patch +++ b/user/prison/endian.patch @@ -2,7 +2,7 @@ We write things in byte ordering-dependent format, so use that. --- prison-5.94.0/src/lib/qrcodebarcode.cpp.old 2022-05-06 06:22:05.000000000 -0500 +++ prison-5.94.0/src/lib/qrcodebarcode.cpp 2022-06-04 16:38:40.211478102 -0500 -@@ -93,7 +93,7 @@ +@@ -104,7 +104,7 @@ } const auto result = diff --git a/user/purpose/APKBUILD b/user/purpose/APKBUILD index 8759d00ce..2398a5086 100644 --- a/user/purpose/APKBUILD +++ b/user/purpose/APKBUILD @@ -1,13 +1,13 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=purpose -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="KDE context menu framework" url="https://www.kde.org/" arch="all" license="GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+" -depends="kdeclarative" +depends="kdeclarative prison-quick" makedepends="cmake extra-cmake-modules kconfig-dev kcoreaddons-dev ki18n-dev kio-dev kirigami2-dev knotifications-dev qt5-qtbase-dev qt5-qtdeclarative-dev" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="04bb9c29b9084e2d13f5463874aec8dca5942d6f7f25a63766451e9e4141ce5dc314afda56ab24a9621861052973245a264ebea06d864c0714c3d9829593c522 purpose-5.94.0.tar.xz" +sha512sums="3447135ad33c725e0512c6b20a9be81082737146fa0c5a32b0c7d50a21cb5697b2b4796d1cbffc8661dd845ee3ef51bc57af0c94cce0ed14cc1542df822139d5 purpose-5.116.0.tar.xz" diff --git a/user/qqc2-desktop-style/APKBUILD b/user/qqc2-desktop-style/APKBUILD index 6eea53516..065dd5119 100644 --- a/user/qqc2-desktop-style/APKBUILD +++ b/user/qqc2-desktop-style/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qqc2-desktop-style -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="QtQuickControls 2 style that uses QWidget's QStyle for painting" url="https://www.kde.org/" @@ -10,8 +10,8 @@ license="GPL-2.0-only AND LGPL-3.0-only" depends="sonnet" makedepends="cmake extra-cmake-modules kconfig-dev kconfigwidgets-dev kiconthemes-dev kirigami2-dev qt5-qtbase-dev qt5-qtdeclarative-dev - qt5-qtquickcontrols2-dev qt5-qtx11extras-dev sonnet-dev" -subpackages="$pkgname-dev" + qt5-qtquickcontrols2-dev qt5-qttools-dev qt5-qtx11extras-dev sonnet-dev" +subpackages="$pkgname-dev $pkgname-lang" source="https://download.kde.org/stable/frameworks/${pkgver%.*}/qqc2-desktop-style-$pkgver.tar.xz" build() { @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" -C build install } -sha512sums="8f68423603d7de0a286dbf78441b077fc48197d9bc6863e7b13be358f68697f1ad95559e0e0705edb034c54df75ff74ca41f5b2fe70ba94e55e7c30b13c6989f qqc2-desktop-style-5.94.0.tar.xz" +sha512sums="08b878fa719a1b896244c94e5b20855a9c9df77616b03b6d054151a4aaacfa246454647abfd2a7193e94b2ac2482d75443b20d895255ce6256c58d646baefb57 qqc2-desktop-style-5.116.0.tar.xz" diff --git a/user/qt5-qtbase/APKBUILD b/user/qt5-qtbase/APKBUILD index 0ba98bd30..a3541d25d 100644 --- a/user/qt5-qtbase/APKBUILD +++ b/user/qt5-qtbase/APKBUILD @@ -1,8 +1,8 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtbase _pkgname=qtbase-everywhere -pkgver=5.15.4 -pkgrel=1 +pkgver=5.15.17 +pkgrel=0 pkgdesc="Cross-platform application and UI framework" url="https://www.qt.io/" arch="all" @@ -16,7 +16,7 @@ depends_dev="dbus-dev fontconfig-dev freetype-dev glib-dev libice-dev makedepends="$depends_dev at-spi2-core-dev bison cups-dev eudev-dev flex freetds-dev freetype-dev gperf gtk+2.0-dev harfbuzz-dev hicolor-icon-theme icu-dev - libexecinfo-dev libinput-dev libjpeg-turbo-dev libxkbcommon-dev + libexecinfo-dev libinput-dev libjpeg-turbo-dev libxkbcommon-dev perl libxi-dev libxrandr-dev libxrender-dev libxslt-dev libxv-dev mtdev-dev pcre2-dev postgresql-dev unixodbc-dev xcb-util-dev xcb-util-image-dev xcb-util-keysyms-dev xcb-util-wm-dev xcb-util-renderutil-dev cmd:which @@ -54,6 +54,8 @@ prepare() { -e "/^QMAKE_RPATH/s| -Wl,-rpath,||g" \ -e "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" \ mkspecs/common/linux.conf + # Needed for TSAN patch added in KDE patchset. + perl bin/syncqt.pl -version $pkgver } build() { @@ -177,8 +179,8 @@ x11() { return 0 } -sha512sums="91a1d95c2891939ae55134e8897cbc423142bd8eda954a1e65bb563b0932ed9e2da34db374fd86858b4a819e8abe824a967b31f4fb316528ec8aaf15016c6ad3 qtbase-everywhere-opensource-src-5.15.4.tar.xz -44c4ec3a3e62041f948f1234492e0c6ce855be72efaee80cad010f6ee9ff7460f45924a8441747c0082236fef3745fcdebecb6fc26c6490d99f2b7bb714f1b1f kde-lts.patch +sha512sums="bd99bc25aee1c10d4161867654f3992c4e811b33337523bb702e3d2f63fb9a0d9118c43701ae791999c71761b86cdee1b6e5a1c520e47b52acbfe2156ce12621 qtbase-everywhere-opensource-src-5.15.17.tar.xz +543ddef9311b6003232610a46335347d0acbd4ab05c3d74777130186c2b02f180e71c28c6223aeb7e5c4145dcca02be8dfd4a1d2986bf39db00dfae24b0caf2c kde-lts.patch d00dc607b71a93132f756b952871df9197cfd6d78cc3617544bfa11d7f0eea21ce5dd0d1aeb69dd2702a5694a63d3802accc76499dbf414c01eb56421698cb0c big-endian-scroll-wheel.patch ee78a44e28ba5f728914bfc3d8d5b467896c7de11a02d54b0bce11e40a4338b1f776c1fcc30cbd436df4f548c1ab0b4fe801f01b162ddd5c0f892893e227acfd link-to-execinfo.patch e3982b2df2ab4ba53b7a1329a9eb928eb1fee813c61cf6ac03d3300a767ffb57f019ac0fd89f633cac2330549446ff3d43344871296bf362815e7ebffadefa6b qt-musl-iconv-no-bom.patch" diff --git a/user/qt5-qtbase/kde-lts.patch b/user/qt5-qtbase/kde-lts.patch index a70f59cb0..4f7b9f638 100644 --- a/user/qt5-qtbase/kde-lts.patch +++ b/user/qt5-qtbase/kde-lts.patch @@ -1,130 +1,7 @@ -From 0319838faf39d3d8354349eebc61830f6885f60b Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Mon, 18 Jan 2021 07:40:54 -0800 -Subject: [PATCH 001/146] Fix build with GCC 11: include <limits> - -Fixes: QTBUG-90395 -Change-Id: Iecc74d2000eb40dfbe7bfffd165b5dd3708b7a40 -(cherry picked from commit 9c56d4da2ff631a8c1c30475bd792f6c86bda53c) -Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> -(cherry picked from commit b2af6332ea37e45ab230a7a5d2d278f86d961b83) ---- - src/corelib/global/qendian.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h -index a97776c761..339f53abb6 100644 ---- a/src/corelib/global/qendian.h -+++ b/src/corelib/global/qendian.h -@@ -1,7 +1,7 @@ - /**************************************************************************** - ** --** Copyright (C) 2016 The Qt Company Ltd. --** Copyright (C) 2016 Intel Corporation. -+** Copyright (C) 2021 The Qt Company Ltd. -+** Copyright (C) 2021 Intel Corporation. - ** Contact: https://www.qt.io/licensing/ - ** - ** This file is part of the QtCore module of the Qt Toolkit. --- -2.36.0 - -From ccc0f5cd016eb17e4ff0db03ffed76ad32c8894d Mon Sep 17 00:00:00 2001 -From: Ville Voutilainen <ville.voutilainen@qt.io> -Date: Mon, 18 Jan 2021 09:58:17 +0200 -Subject: [PATCH 002/146] Build fixes for GCC 11 - -Task-number: QTBUG-89977 -Change-Id: Ic1b7ddbffb8a0a00f8c621d09a868f1d94a52c21 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 813a928c7c3cf98670b6043149880ed5c955efb9) ---- - src/corelib/text/qbytearraymatcher.h | 2 ++ - src/corelib/tools/qsharedpointer_impl.h | 3 --- - src/plugins/platforms/xcb/qxcbwindow.cpp | 2 +- - 3 files changed, 3 insertions(+), 4 deletions(-) - -diff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h -index 0eedfc1d20..f5f9bef7b8 100644 ---- a/src/corelib/text/qbytearraymatcher.h -+++ b/src/corelib/text/qbytearraymatcher.h -@@ -42,6 +42,8 @@ - - #include <QtCore/qbytearray.h> - -+#include <limits> -+ - QT_BEGIN_NAMESPACE - - -diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h -index 790c187cb9..4aee98af53 100644 ---- a/src/corelib/tools/qsharedpointer_impl.h -+++ b/src/corelib/tools/qsharedpointer_impl.h -@@ -155,9 +155,6 @@ namespace QtSharedPointer { - #endif - inline void checkQObjectShared(...) { } - inline void setQObjectShared(...) { } -- -- inline void operator delete(void *ptr) { ::operator delete(ptr); } -- inline void operator delete(void *, void *) { } - }; - // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit) - -diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp -index 050182537d..c27da3cbc8 100644 ---- a/src/plugins/platforms/xcb/qxcbwindow.cpp -+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp -@@ -698,7 +698,7 @@ void QXcbWindow::show() - if (isTransient(window())) { - const QWindow *tp = window()->transientParent(); - if (tp && tp->handle()) -- transientXcbParent = static_cast<const QXcbWindow *>(tp->handle())->winId(); -+ transientXcbParent = tp->handle()->winId(); - // Default to client leader if there is no transient parent, else modal dialogs can - // be hidden by their parents. - if (!transientXcbParent) --- -2.36.0 - -From b07ebeaada5d5f2fcfa16c7a2aaa2cb923255acd Mon Sep 17 00:00:00 2001 -From: Ulf Hermann <ulf.hermann@qt.io> -Date: Wed, 20 Jan 2021 10:42:36 +0100 -Subject: [PATCH 003/146] Partially revert - 813a928c7c3cf98670b6043149880ed5c955efb9 - -Otherwise ASAN complains about mismatched new/delete. - -Change-Id: I76ddcc388309e20055c93c68b9b6fa8a11b884e1 -Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> -Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> -(cherry picked from commit 606b03d0a35e71565c3a91588ef2db45b9262e27) ---- - src/corelib/tools/qsharedpointer_impl.h | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h -index 4aee98af53..790c187cb9 100644 ---- a/src/corelib/tools/qsharedpointer_impl.h -+++ b/src/corelib/tools/qsharedpointer_impl.h -@@ -155,6 +155,9 @@ namespace QtSharedPointer { - #endif - inline void checkQObjectShared(...) { } - inline void setQObjectShared(...) { } -+ -+ inline void operator delete(void *ptr) { ::operator delete(ptr); } -+ inline void operator delete(void *, void *) { } - }; - // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit) - --- -2.36.0 - -From afc7fa164706de8782596012327470663faca90a Mon Sep 17 00:00:00 2001 +From f503595b95a8bdf1c0ffba1162ce4c77175d0b83 Mon Sep 17 00:00:00 2001 From: ChunLin Wang <wangchunlin@uniontech.com> Date: Wed, 31 Mar 2021 17:54:49 +0800 -Subject: [PATCH 004/146] Fix get out of bounds index in +Subject: [PATCH 001/123] Fix get out of bounds index in QSortFilterProxyModel::filterAcceptsRow Before calling the index function, we need to check the validity of the parameters. @@ -140,10 +17,10 @@ Reviewed-by: David Faure <david.faure@kdab.com> 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp -index 1abdafcdbe..3b07c7b9cf 100644 +index 3d7fe43cd3f..ce35bda5e11 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp +++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp -@@ -3089,8 +3089,9 @@ bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex & +@@ -3131,8 +3131,9 @@ bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex & if (d->filter_data.isEmpty()) return true; @@ -154,7 +31,7 @@ index 1abdafcdbe..3b07c7b9cf 100644 for (int column = 0; column < column_count; ++column) { QModelIndex source_index = d->model->index(source_row, column, source_parent); QString key = d->model->data(source_index, d->filter_role).toString(); -@@ -3099,9 +3100,10 @@ bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex & +@@ -3141,9 +3142,10 @@ bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex & } return false; } @@ -168,7 +45,7 @@ index 1abdafcdbe..3b07c7b9cf 100644 return d->filter_data.hasMatch(key); } diff --git a/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp b/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp -index e1ea7a4552..90972caa57 100644 +index e1ea7a45525..90972caa575 100644 --- a/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp +++ b/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp @@ -117,6 +117,7 @@ private Q_SLOTS: @@ -203,12 +80,12 @@ index e1ea7a4552..90972caa57 100644 #include "tst_qconcatenatetablesproxymodel.moc" -- -2.36.0 +2.49.0 -From 1841e0227e527fe446cc822dd89a2a65fe491c29 Mon Sep 17 00:00:00 2001 +From 99504dcf14dfafb98be66a65d99aa65dec01e2df Mon Sep 17 00:00:00 2001 From: Edward Welbourne <edward.welbourne@qt.io> Date: Mon, 8 Feb 2021 12:13:13 +0100 -Subject: [PATCH 005/146] Fix handling of surrogates in QBidiAlgorithm +Subject: [PATCH 002/123] Fix handling of surrogates in QBidiAlgorithm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -224,11 +101,11 @@ Reviewed-by: Robert Löhning <robert.loehning@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit aeeaab1a5ac0b4d91c9f9b542035b8970e4c61dd) --- - src/gui/text/qtextengine.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/gui/text/qtextengine.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp -index 8af64f9cf8..ab5ea3a3d6 100644 +index 8fb6e4fa7b1..0423899918d 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1,6 +1,6 @@ @@ -239,22 +116,13 @@ index 8af64f9cf8..ab5ea3a3d6 100644 ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtGui module of the Qt Toolkit. -@@ -258,7 +258,7 @@ struct QBidiAlgorithm { - for (int i = 0; i < length; ++i) { - int pos = i; - uint uc = text[i].unicode(); -- if (QChar::isHighSurrogate(uc) && i < length - 1) { -+ if (QChar::isHighSurrogate(uc) && i < length - 1 && text[i + 1].isLowSurrogate()) { - ++i; - analysis[i].bidiDirection = QChar::DirNSM; - uc = QChar::surrogateToUcs4(ushort(uc), text[i].unicode()); -- -2.36.0 +2.49.0 -From 2fe3dd9d51e8b75b00ac14db5d9bd2145ca906da Mon Sep 17 00:00:00 2001 +From 68fd60f58e5946f014c27a19847d6678d76ba74e Mon Sep 17 00:00:00 2001 From: Ilya Fedin <fedin-ilja2010@ya.ru> Date: Mon, 12 Apr 2021 12:09:59 +0400 -Subject: [PATCH 006/146] Don't own unique name for QDBusTrayIcon +Subject: [PATCH 003/123] Don't own unique name for QDBusTrayIcon Flatpak doesn't allow to own random name with PID. Even after adding such a permission into manifest, all flatpaked apps have PID 2, so only @@ -278,7 +146,7 @@ Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp -index 09470bccc6..345a853b1b 100644 +index 09470bccc6c..345a853b1b7 100644 --- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp +++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp @@ -105,13 +105,7 @@ void QDBusMenuConnection::unregisterTrayIconMenu(QDBusTrayIcon *item) @@ -322,7 +190,7 @@ index 09470bccc6..345a853b1b 100644 #endif // QT_NO_SYSTEMTRAYICON diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h -index f484795fbb..11c7e56534 100644 +index f484795fbb7..11c7e56534d 100644 --- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h +++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h @@ -78,7 +78,7 @@ public: @@ -335,76 +203,12 @@ index f484795fbb..11c7e56534 100644 Q_SIGNALS: -- -2.36.0 - -From ba23cfbda1c14f4871b384be5415d9df4b5f573a Mon Sep 17 00:00:00 2001 -From: Luca Beldi <v.ronin@yahoo.it> -Date: Thu, 15 Apr 2021 23:41:28 +0100 -Subject: [PATCH 007/146] Fix QAbstractItemModelTester false positive - -When rows are removed from a model with no columns, -the test should not report a problem if indexes are invalid - -Fixes: QTBUG-92886 -Change-Id: I7a042dfdb2575f87208a00cbed13db3869807f84 -Reviewed-by: David Faure <david.faure@kdab.com> -(cherry picked from commit fed2c0d23614df1b96dcc8746223501b07597a52) -Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> -(cherry picked from commit cbec5527903a6ee8fc711b1a352dc17b6efada71) ---- - src/testlib/qabstractitemmodeltester.cpp | 4 ++-- - .../tst_qabstractitemmodeltester.cpp | 7 +++++-- - 2 files changed, 7 insertions(+), 4 deletions(-) - -diff --git a/src/testlib/qabstractitemmodeltester.cpp b/src/testlib/qabstractitemmodeltester.cpp -index a85b291220..a2c643660a 100644 ---- a/src/testlib/qabstractitemmodeltester.cpp -+++ b/src/testlib/qabstractitemmodeltester.cpp -@@ -720,12 +720,12 @@ void QAbstractItemModelTesterPrivate::rowsAboutToBeRemoved(const QModelIndex &pa - Changing c; - c.parent = parent; - c.oldSize = model->rowCount(parent); -- if (start > 0) { -+ if (start > 0 && model->columnCount(parent) > 0) { - const QModelIndex startIndex = model->index(start - 1, 0, parent); - MODELTESTER_VERIFY(startIndex.isValid()); - c.last = model->data(startIndex); - } -- if (end < c.oldSize - 1) { -+ if (end < c.oldSize - 1 && model->columnCount(parent) > 0) { - const QModelIndex endIndex = model->index(end + 1, 0, parent); - MODELTESTER_VERIFY(endIndex.isValid()); - c.next = model->data(endIndex); -diff --git a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp -index 08419b335e..4aa3f8d60b 100644 ---- a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp -+++ b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp -@@ -105,13 +105,16 @@ void tst_QAbstractItemModelTester::standardItemModel() - model.insertColumns(0, 5, model.index(1, 3)); - } - --void tst_QAbstractItemModelTester::standardItemModelZeroColumns() // QTBUG-92220 -+void tst_QAbstractItemModelTester::standardItemModelZeroColumns() - { - QStandardItemModel model; -- - QAbstractItemModelTester t1(&model); -+ // QTBUG-92220 - model.insertRows(0, 5); - model.removeRows(0, 5); -+ // QTBUG-92886 -+ model.insertRows(0, 5); -+ model.removeRows(1, 2); - } - - void tst_QAbstractItemModelTester::testInsertThroughProxy() --- -2.36.0 +2.49.0 -From 5ea1dc898497506efbc3206ca987dd4c8cf9b740 Mon Sep 17 00:00:00 2001 +From f95035ac2bf4b29f37f105de5e7f7f60efabc2c8 Mon Sep 17 00:00:00 2001 From: Lars Knoll <lars.knoll@qt.io> Date: Fri, 4 Sep 2020 10:40:29 +0200 -Subject: [PATCH 008/146] Deprecate QMutex in recursive mode +Subject: [PATCH 004/123] Deprecate QMutex in recursive mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -423,7 +227,7 @@ Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp -index 310d1cb14f..7097122d8e 100644 +index 310d1cb14f7..7097122d8e0 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -152,6 +152,7 @@ public: @@ -452,7 +256,7 @@ index 310d1cb14f..7097122d8e 100644 } else if (d) { #ifndef QT_LINUX_FUTEX diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h -index 73c9e00663..b2e2640ba2 100644 +index 73c9e006630..b2e2640ba2d 100644 --- a/src/corelib/thread/qmutex.h +++ b/src/corelib/thread/qmutex.h @@ -134,8 +134,16 @@ public: @@ -483,7 +287,7 @@ index 73c9e00663..b2e2640ba2 100644 Q_DISABLE_COPY(QMutex) friend class QMutexLocker; diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp -index 88b058f410..0f1da4dc9b 100644 +index 88b058f4101..0f1da4dc9b3 100644 --- a/src/corelib/thread/qwaitcondition_unix.cpp +++ b/src/corelib/thread/qwaitcondition_unix.cpp @@ -213,7 +213,7 @@ bool QWaitCondition::wait(QMutex *mutex, QDeadlineTimer deadline) @@ -496,12 +300,12 @@ index 88b058f410..0f1da4dc9b 100644 return false; } -- -2.36.0 +2.49.0 -From 7ab08a8e26d8f959be05e4af3b8e16d77d548e27 Mon Sep 17 00:00:00 2001 +From 06bc5ae6a1ada98050a83eb1ef03b4650afd5b68 Mon Sep 17 00:00:00 2001 From: Luca Beldi <v.ronin@yahoo.it> Date: Fri, 23 Apr 2021 15:35:29 +0100 -Subject: [PATCH 009/146] Fix QAbstractItemModelTester false positive +Subject: [PATCH 005/123] Fix QAbstractItemModelTester false positive When inserting rows to a branch with no columns the tester should not complain about indexes being invalid @@ -516,7 +320,7 @@ Reviewed-by: David Faure <david.faure@kdab.com> 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/testlib/qabstractitemmodeltester.cpp b/src/testlib/qabstractitemmodeltester.cpp -index a2c643660a..2c3d6a5586 100644 +index 1cd18b98bbc..41219a7e233 100644 --- a/src/testlib/qabstractitemmodeltester.cpp +++ b/src/testlib/qabstractitemmodeltester.cpp @@ -454,7 +454,7 @@ void QAbstractItemModelTesterPrivate::parent() @@ -529,10 +333,10 @@ index a2c643660a..2c3d6a5586 100644 MODELTESTER_VERIFY(childIndex.isValid()); MODELTESTER_COMPARE(model->parent(childIndex), topIndex); diff --git a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp -index 4aa3f8d60b..d2050a61aa 100644 +index f6ad97a96be..61452dceaed 100644 --- a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp +++ b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp -@@ -115,6 +115,10 @@ void tst_QAbstractItemModelTester::standardItemModelZeroColumns() +@@ -116,6 +116,10 @@ void tst_QAbstractItemModelTester::standardItemModelZeroColumns() // QTBUG-92886 model.insertRows(0, 5); model.removeRows(1, 2); @@ -544,104 +348,12 @@ index 4aa3f8d60b..d2050a61aa 100644 void tst_QAbstractItemModelTester::testInsertThroughProxy() -- -2.36.0 +2.49.0 -From 31857c77d3d622fabd3b6c4c18269e4128a9c3b3 Mon Sep 17 00:00:00 2001 -From: Luca Beldi <v.ronin@yahoo.it> -Date: Fri, 23 Apr 2021 20:30:17 +0100 -Subject: [PATCH 010/146] Fix QTreeModel calling beginRemoveRows twice - -For items that are children of other items, removeRows calls -beginRemoveRows directly and then once again inside takeChild() -The signal blocker that dates back to the monolitic import from Nokia -prevents the model from emitting extra signals -but the persistent indexes are corrupted nonetheless. - -Fixes: QTBUG-90030 -Pick-to: 6.1 6.0 5.15 -Change-Id: I5bc4b2598bf13247683b113faeec22471f1f04a4 -Reviewed-by: David Faure <david.faure@kdab.com> -(cherry picked from commit 6ec3fa2842b5c4714dc9a3953b2721ef70dd957b) ---- - src/widgets/itemviews/qtreewidget.cpp | 18 +++++++----------- - .../itemviews/qtreewidget/tst_qtreewidget.cpp | 16 ++++++++++++++++ - 2 files changed, 23 insertions(+), 11 deletions(-) - -diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp -index b795b79c28..81aed27361 100644 ---- a/src/widgets/itemviews/qtreewidget.cpp -+++ b/src/widgets/itemviews/qtreewidget.cpp -@@ -508,22 +508,18 @@ bool QTreeModel::insertColumns(int column, int count, const QModelIndex &parent) - bool QTreeModel::removeRows(int row, int count, const QModelIndex &parent) { - if (count < 1 || row < 0 || (row + count) > rowCount(parent)) - return false; -- -- beginRemoveRows(parent, row, row + count - 1); -- -- QSignalBlocker blocker(this); -- -- QTreeWidgetItem *itm = item(parent); -+ QTreeWidgetItem *parentItem = item(parent); -+ // if parentItem is valid, begin/end RemoveRows is handled by takeChild below -+ if (!parentItem) -+ beginRemoveRows(parent, row, row + count - 1); - for (int i = row + count - 1; i >= row; --i) { -- QTreeWidgetItem *child = itm ? itm->takeChild(i) : rootItem->children.takeAt(i); -+ QTreeWidgetItem *child = parentItem ? parentItem->takeChild(i) : rootItem->children.takeAt(i); - Q_ASSERT(child); - child->view = nullptr; - delete child; -- child = nullptr; - } -- blocker.unblock(); -- -- endRemoveRows(); -+ if (!parentItem) -+ endRemoveRows(); - return true; - } - -diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp -index 7da56ab797..b129868bbd 100644 ---- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp -+++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp -@@ -151,6 +151,7 @@ private slots: - void getMimeDataWithInvalidItem(); - void testVisualItemRect(); - void reparentHiddenItem(); -+ void persistentChildIndex(); - #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) - void clearItemData(); - #endif -@@ -3597,6 +3598,21 @@ void tst_QTreeWidget::reparentHiddenItem() - QVERIFY(grandChild->isHidden()); - } - -+void tst_QTreeWidget::persistentChildIndex() // QTBUG-90030 -+{ -+ QTreeWidget tree; -+ QTreeWidgetItem *toplevel = new QTreeWidgetItem(QStringList{QStringLiteral("toplevel")}); -+ tree.addTopLevelItem(toplevel); -+ QModelIndex firstIndex = tree.model()->index(0, 0); -+ QTreeWidgetItem *child1 = new QTreeWidgetItem(QStringList{QStringLiteral("child1")}); -+ QTreeWidgetItem *child2 = new QTreeWidgetItem(QStringList{QStringLiteral("child2")}); -+ toplevel->addChildren({child1, child2}); -+ QPersistentModelIndex persistentIdx = tree.model()->index(1, 0, firstIndex); -+ QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2")); -+ tree.model()->removeRows(0, 1, firstIndex); -+ QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2")); -+} -+ - #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) - void tst_QTreeWidget::clearItemData() - { --- -2.36.0 - -From c6900954754ab088c6b58e2fd317cd7bd2c47b85 Mon Sep 17 00:00:00 2001 +From 1ccbd1e0476d1a5d7c014487ec5ecb2338cefd6b Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher <ch.ehrlicher@gmx.de> Date: Fri, 4 Dec 2020 23:13:15 +0100 -Subject: [PATCH 011/146] QTableView: honor spans when calculating height/width +Subject: [PATCH 006/123] QTableView: honor spans when calculating height/width hint QTableViewPrivate::heightHintForIndex()/widthHintForIndex() did not @@ -658,7 +370,7 @@ Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> 2 files changed, 82 insertions(+) diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp -index 934ac581b2..f79bb24249 100644 +index d120c41dc9a..09d34005a7a 100644 --- a/src/widgets/itemviews/qtableview.cpp +++ b/src/widgets/itemviews/qtableview.cpp @@ -1013,6 +1013,7 @@ void QTableViewPrivate::drawCell(QPainter *painter, const QStyleOptionViewItem & @@ -700,7 +412,7 @@ index 934ac581b2..f79bb24249 100644 if (showGrid) option.rect.setWidth(option.rect.width() - 1); diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp -index 761357b252..06bb706074 100644 +index 761357b2525..06bb706074b 100644 --- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp +++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp @@ -397,6 +397,7 @@ private slots: @@ -783,12 +495,12 @@ index 761357b252..06bb706074 100644 extern bool Q_WIDGETS_EXPORT qt_tab_all_widgets(); // qapplication.cpp QT_END_NAMESPACE -- -2.36.0 +2.49.0 -From 467219e9e281b1b8baa2c491480e80d5055e6628 Mon Sep 17 00:00:00 2001 +From c586e2d55d741b3565b33a26971cbdd56af3d864 Mon Sep 17 00:00:00 2001 From: Andrey Butirsky <butirsky@gmail.com> Date: Wed, 24 Mar 2021 02:03:36 +0300 -Subject: [PATCH 012/146] Fix no mapping for SysReq key +Subject: [PATCH 007/123] Fix no mapping for SysReq key XKB_KEY_Sys_Req keysym is currently unmapped to any Qt::Key. Implication of this it is uncapable to participate in any keyboard @@ -810,10 +522,10 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> 1 file changed, 1 insertion(+) diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp -index 877c5d848f..6a692a2456 100644 +index d3d793efc37..089fd39927f 100644 --- a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp +++ b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp -@@ -93,6 +93,7 @@ static constexpr const auto KeyTbl = qMakeArray( +@@ -95,6 +95,7 @@ static constexpr const auto KeyTbl = qMakeArray( Xkb2Qt<XKB_KEY_Clear, Qt::Key_Delete>, Xkb2Qt<XKB_KEY_Pause, Qt::Key_Pause>, Xkb2Qt<XKB_KEY_Print, Qt::Key_Print>, @@ -822,76 +534,12 @@ index 877c5d848f..6a692a2456 100644 Xkb2Qt<0x1007ff00, Qt::Key_SysReq>, // hardcoded X386 SysReq -- -2.36.0 - -From 117148d44d1a77d031424b6dddc0f2ed1a5519e9 Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Sun, 2 May 2021 00:59:49 +0200 -Subject: [PATCH 013/146] qdbus: add support for "aay" (QByteArrayList) - -(I wish these common mappings were centralized though, so that -annotations in the XML file wouldn't be needed) - -Pick-to: 6.0 6.1 5.15 -Change-Id: Ie3e8731e44b6e0338c8a044408c34160cf0a3a1e -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 831aea1ce1a3f08188bed005d239e367917acf2a) ---- - src/dbus/qdbusmetaobject.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp -index 5265568f42..7e9f0f1acc 100644 ---- a/src/dbus/qdbusmetaobject.cpp -+++ b/src/dbus/qdbusmetaobject.cpp -@@ -210,6 +210,9 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature, - } else if (signature == "a{ss}") { - result.name = "QMap<QString,QString>"; - type = qMetaTypeId<QMap<QString, QString> >(); -+ } else if (signature == "aay") { -+ result.name = "QByteArrayList"; -+ type = qMetaTypeId<QByteArrayList>(); - } else { - result.name = "{D-Bus type \"" + signature + "\"}"; - type = registerComplexDBusType(result.name); --- -2.36.0 - -From 15b7e92d6b216b64dce3bd20799b0d8ca3b34318 Mon Sep 17 00:00:00 2001 -From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -Date: Sat, 1 May 2021 16:58:21 +0200 -Subject: [PATCH 014/146] QRandom: drop a usage of std::is_literal_type - -It's deprecated/removed, and indeed doesn't check anything that it's -not also already being checked by the previous line. - -Change-Id: Ic80ca43f390dd989ced69f196efa7313069e7c6d -Pick-to: 5.15 6.0 6.1 -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 6351b5433da083890e47faa62e21fb40fd042c79) ---- - src/corelib/global/qrandom.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp -index 10672c1f92..25f87c7e6a 100644 ---- a/src/corelib/global/qrandom.cpp -+++ b/src/corelib/global/qrandom.cpp -@@ -383,7 +383,6 @@ struct QRandomGenerator::SystemAndGlobalGenerators - - constexpr SystemAndGlobalGenerators g = {}; - Q_UNUSED(g); -- Q_STATIC_ASSERT(std::is_literal_type<SystemAndGlobalGenerators>::value); - #endif - } - --- -2.36.0 +2.49.0 -From 0768d6eb4cc804eb13e117ce5fab0dfa56e8db23 Mon Sep 17 00:00:00 2001 +From 1e630e378ca4fc8f5baacd6681b537806a8b9378 Mon Sep 17 00:00:00 2001 From: Gong Heng <gongheng@uniontech.com> Date: Thu, 18 Mar 2021 16:53:11 +0800 -Subject: [PATCH 015/146] =?UTF-8?q?fix:=20Optimize=20the=20performance=20o?= +Subject: [PATCH 008/123] =?UTF-8?q?fix:=20Optimize=20the=20performance=20o?= =?UTF-8?q?f=20the=20inotify=20file=20system=20monitoring=20program?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 @@ -915,7 +563,7 @@ Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp -index 94d9d06bcb..27e0b13b0b 100644 +index 94d9d06bcb9..27e0b13b0bf 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify.cpp +++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp @@ -366,7 +366,9 @@ void QInotifyFileSystemWatcherEngine::readFromInotify() @@ -930,202 +578,12 @@ index 94d9d06bcb..27e0b13b0b 100644 buffSize = read(inotifyFd, buffer.data(), buffSize); char *at = buffer.data(); -- -2.36.0 - -From ea16aca5c3646df0ddbed2d057470789d3090314 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Wed, 19 May 2021 09:48:41 +0200 -Subject: [PATCH 016/146] Fix memory leak when using small caps font -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +2.49.0 -The small caps version of a font is kept as a QFontPrivate* -which is manually reference counted, but we neglected to -actually delete it when the reference count went to 0. - -[ChangeLog][Fonts] Fixed a memory leak when initializing -a small caps font. - -Fixes: QTBUG-93068 -Pick-to: 6.1 5.15 -Change-Id: Icc7fb7a59bf523da84d2e6fa026940a7d1230525 -Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> -Reviewed-by: Robert Löhning <robert.loehning@qt.io> -(cherry picked from commit 11a40defff51dae2476e0da9f2b995a3a0f3bda8) ---- - src/gui/text/qfont.cpp | 12 ++++++++---- - 1 file changed, 8 insertions(+), 4 deletions(-) - -diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp -index 5a1fa36e5c..3d044edd5a 100644 ---- a/src/gui/text/qfont.cpp -+++ b/src/gui/text/qfont.cpp -@@ -220,8 +220,10 @@ QFontPrivate::~QFontPrivate() - if (engineData && !engineData->ref.deref()) - delete engineData; - engineData = nullptr; -- if (scFont && scFont != this) -- scFont->ref.deref(); -+ if (scFont && scFont != this) { -+ if (!scFont->ref.deref()) -+ delete scFont; -+ } - scFont = nullptr; - } - -@@ -630,8 +632,10 @@ void QFont::detach() - if (d->engineData && !d->engineData->ref.deref()) - delete d->engineData; - d->engineData = nullptr; -- if (d->scFont && d->scFont != d.data()) -- d->scFont->ref.deref(); -+ if (d->scFont && d->scFont != d.data()) { -+ if (!d->scFont->ref.deref()) -+ delete d->scFont; -+ } - d->scFont = nullptr; - return; - } --- -2.36.0 - -From cf554449687041f6dec98ba06bb28d444ec80ca7 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <albert.astals.cid@kdab.com> -Date: Fri, 7 May 2021 16:38:13 +0200 -Subject: [PATCH 017/146] Make sure _q_printerChanged is called even if only - pdf printer is available - -Otherwise things like the pagesRadioButton don't get properly disabled - -Change-Id: Idc0693b6747f13da5afb22e2187af310a5b454f8 -Pick-to: 6.1 5.15 -Reviewed-by: Andy Shaw <andy.shaw@qt.io> -(cherry picked from commit 973700c54678803a2600dfa60112f29f15705197) ---- - src/printsupport/dialogs/qprintdialog_unix.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp -index bf77666c41..c5b845f4ec 100644 ---- a/src/printsupport/dialogs/qprintdialog_unix.cpp -+++ b/src/printsupport/dialogs/qprintdialog_unix.cpp -@@ -1184,6 +1184,8 @@ void QUnixPrintWidgetPrivate::updateWidget() - widget.printers->insertSeparator(widget.printers->count()); - widget.printers->addItem(QPrintDialog::tr("Print to File (PDF)")); - filePrintersAdded = true; -+ if (widget.printers->count() == 1) -+ _q_printerChanged(0); - } - if (!printToFile && filePrintersAdded) { - widget.printers->removeItem(widget.printers->count()-1); --- -2.36.0 - -From fc638f3353c0076f08fa4aba9c2db5a2b44c61e1 Mon Sep 17 00:00:00 2001 -From: Andrey Butirsky <butirsky@gmail.com> -Date: Thu, 18 Mar 2021 17:42:51 +0300 -Subject: [PATCH 018/146] fix Alt+` shortcut on non-US layouts -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Make it possible for non-letter-keys with Latin 1 symbols (`, !, @ etc.) -to participate in shortcuts also, when the keys generate national -symbols on non-Latin layout. -For example, in Russian layout, "`" key generates cyrillic "ё" letter of -national alphabet, so shortcuts with the key should still work -regardless of the actual layout. - -Fixes: QTBUG-90611 -Change-Id: Id9a505210ff33a94b82511b88c30ef79f3d03913 -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> -(cherry picked from commit 62e697fd568f6acdae7144a58efa08990eb7d9ab) ---- - src/platformsupport/input/xkbcommon/qxkbcommon.cpp | 12 ++++++------ - src/platformsupport/input/xkbcommon/qxkbcommon_p.h | 4 ++-- - 2 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp -index 6a692a2456..f1e478274c 100644 ---- a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp -+++ b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp -@@ -470,7 +470,7 @@ QVector<xkb_keysym_t> QXkbCommon::toKeysym(QKeyEvent *event) - } else if (event->modifiers() & Qt::KeypadModifier) { - if (qtKey >= Qt::Key_0 && qtKey <= Qt::Key_9) - keysyms.append(XKB_KEY_KP_0 + (qtKey - Qt::Key_0)); -- } else if (isLatin(qtKey) && event->text().isUpper()) { -+ } else if (isLatin1(qtKey) && event->text().isUpper()) { - keysyms.append(qtKey); - } - -@@ -522,7 +522,7 @@ int QXkbCommon::keysymToQtKey(xkb_keysym_t keysym, Qt::KeyboardModifiers modifie - // With standard shortcuts we should prefer a latin character, this is - // for checks like "some qkeyevent == QKeySequence::Copy" to work even - // when using for example 'russian' keyboard layout. -- if (!QXkbCommon::isLatin(keysym)) { -+ if (!QXkbCommon::isLatin1(keysym)) { - xkb_keysym_t latinKeysym = QXkbCommon::lookupLatinKeysym(state, code); - if (latinKeysym != XKB_KEY_NoSymbol) - keysym = latinKeysym; -@@ -545,7 +545,7 @@ static int keysymToQtKey_internal(xkb_keysym_t keysym, Qt::KeyboardModifiers mod - } else if (keysym >= XKB_KEY_KP_0 && keysym <= XKB_KEY_KP_9) { - // numeric keypad keys - qtKey = Qt::Key_0 + (keysym - XKB_KEY_KP_0); -- } else if (QXkbCommon::isLatin(keysym)) { -+ } else if (QXkbCommon::isLatin1(keysym)) { - qtKey = QXkbCommon::qxkbcommon_xkb_keysym_to_upper(keysym); - } else { - // check if we have a direct mapping -@@ -675,7 +675,7 @@ QList<int> QXkbCommon::possibleKeys(xkb_state *state, const QKeyEvent *event, - Qt::KeyboardModifiers neededMods = ModsTbl[i]; - if ((modifiers & neededMods) == neededMods) { - if (i == 8) { -- if (isLatin(baseQtKey)) -+ if (isLatin1(baseQtKey)) - continue; - // add a latin key as a fall back key - sym = lookupLatinKeysym(state, keycode); -@@ -730,7 +730,7 @@ void QXkbCommon::verifyHasLatinLayout(xkb_keymap *keymap) - for (xkb_layout_index_t layout = 0; layout < layoutCount; ++layout) { - for (xkb_keycode_t code = minKeycode; code < maxKeycode; ++code) { - xkb_keymap_key_get_syms_by_level(keymap, code, layout, 0, &keysyms); -- if (keysyms && isLatin(keysyms[0])) -+ if (keysyms && isLatin1(keysyms[0])) - nrLatinKeys++; - if (nrLatinKeys > 10) // arbitrarily chosen threshold - return; -@@ -763,7 +763,7 @@ xkb_keysym_t QXkbCommon::lookupLatinKeysym(xkb_state *state, xkb_keycode_t keyco - xkb_level_index_t level = xkb_state_key_get_level(state, keycode, layout); - if (xkb_keymap_key_get_syms_by_level(keymap, keycode, layout, level, &syms) != 1) - continue; -- if (isLatin(syms[0])) { -+ if (isLatin1(syms[0])) { - sym = syms[0]; - break; - } -diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon_p.h b/src/platformsupport/input/xkbcommon/qxkbcommon_p.h -index 561eae03db..8389bd8f5a 100644 ---- a/src/platformsupport/input/xkbcommon/qxkbcommon_p.h -+++ b/src/platformsupport/input/xkbcommon/qxkbcommon_p.h -@@ -94,8 +94,8 @@ public: - static void verifyHasLatinLayout(xkb_keymap *keymap); - static xkb_keysym_t lookupLatinKeysym(xkb_state *state, xkb_keycode_t keycode); - -- static bool isLatin(xkb_keysym_t sym) { -- return ((sym >= 'a' && sym <= 'z') || (sym >= 'A' && sym <= 'Z')); -+ static bool isLatin1(xkb_keysym_t sym) { -+ return sym <= 0xff; - } - static bool isKeypad(xkb_keysym_t sym) { - return sym >= XKB_KEY_KP_Space && sym <= XKB_KEY_KP_9; --- -2.36.0 - -From 8061c8e42868b0dea1aa84b9d85b166e163dace1 Mon Sep 17 00:00:00 2001 +From e18773907a3f24de2ecc3eafe089b7db8fb9eb2c Mon Sep 17 00:00:00 2001 From: Edward Welbourne <edward.welbourne@qt.io> Date: Wed, 2 Jun 2021 12:14:31 +0200 -Subject: [PATCH 019/146] Fix copy-and-paste bug in QDTEP::getMaximum() +Subject: [PATCH 009/123] Fix copy-and-paste bug in QDTEP::getMaximum() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -1138,11 +596,11 @@ Change-Id: I3582edb08696bec4311f43fc426f7e54dc069f53 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit a15a3fef0b5dae4e83bd94b23dd2418208159d05) --- - src/widgets/widgets/qdatetimeedit_p.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + src/widgets/widgets/qdatetimeedit_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h -index 7df2b59710..e0df5b5158 100644 +index d36b6f8f9a9..e0df5b51582 100644 --- a/src/widgets/widgets/qdatetimeedit_p.h +++ b/src/widgets/widgets/qdatetimeedit_p.h @@ -1,6 +1,6 @@ @@ -1153,257 +611,13 @@ index 7df2b59710..e0df5b5158 100644 ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtWidgets module of the Qt Toolkit. -@@ -107,7 +107,7 @@ public: - if (keyboardTracking) - return maximum.toDateTime(); - if (spec != Qt::LocalTime) -- return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec)); -+ return QDateTime(QDATETIMEEDIT_DATE_MAX.endOfDay(spec)); - return QDateTimeParser::getMaximum(); - } - QLocale locale() const override { return q_func()->locale(); } -- -2.36.0 +2.49.0 -From e0ab2b79df7846311d18034b7764d656f85c14ed Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Mon, 17 May 2021 18:37:58 +0200 -Subject: [PATCH 020/146] QSortFilterProxyModel: create mappings on demand - again - -Calling create_mapping in setSourceModel as introduced by 8455bfee76ed3f1bd3bba8bd3688a7afa94ae0bb -can lead to an early call to filterAcceptsRow, and some existing applications may crash. -It is also an incomplete solution since it was only done for the -toplevel index but not for child indexes. - -Instead, go back to creating mappings on demand. -This means coming up with a different fix for QTBUG-87781 (dataChanged -not emitted for indexes that haven't been mapped yet, i.e. not queried -or shown anywhere). - -When this happens, we can't know if the index was previously filtered -out or not (for lack of a dataAboutToBeChanged signal...). Creating -the mapping with the new data only gives us the new state of affairs, -there's no reference state to compare to. Therefore, when the mapping -is missing (during dataChanged handling), create it, but skip all the -logic about row insertion/removal, just forward the dataChanged signal -if the row isn't filtered out. - -Creating the mapping might require creating first mappings for parents, -recursively, which wasn't done anywhere in QSFPM yet, hence the new -create_mapping_recursive() method. - -In addition to all this, the handling of removed items was incorrect, -remove_source_items did nothing if the parent was gone, and then -source_items_removed was trying to adjust indexes in an incorrect list. -If the parent is gone, clear the proxy_to_source list, so there's -nothing to adjust afterwards. This bug actually doesn't happen anymore -in this version of the patch, but the change still seems right and might -prevent repeating a long debugging session in the future. - -Thanks to ChunLin Wang for the unittest in this commit. - -Done-with: ChunLin Wang -Pick-to: 6.1 6.0 5.15 -Change-Id: Id543d0cc98f1a03b5852bda01d2f49b980e06be7 -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -(cherry picked from commit 4ec5622e62e6fd521e1193f1d6084901f09e7e9e) ---- - .../itemmodels/qsortfilterproxymodel.cpp | 54 +++++++++++++++---- - .../tst_qsortfilterproxymodel.cpp | 34 ++++++++++++ - .../tst_qsortfilterproxymodel.h | 1 + - 3 files changed, 79 insertions(+), 10 deletions(-) - -diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp -index 3b07c7b9cf..6fc4b7d84e 100644 ---- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp -+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp -@@ -307,6 +307,8 @@ public: - - QHash<QModelIndex, Mapping *>::const_iterator create_mapping( - const QModelIndex &source_parent) const; -+ QHash<QModelIndex, Mapping *>::const_iterator create_mapping_recursive( -+ const QModelIndex &source_parent) const; - QModelIndex proxy_to_source(const QModelIndex &proxyIndex) const; - QModelIndex source_to_proxy(const QModelIndex &sourceIndex) const; - bool can_create_mapping(const QModelIndex &source_parent) const; -@@ -533,6 +535,29 @@ IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping( - return it; - } - -+// Go up the tree, creating mappings, unless of course the parent is filtered out -+IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping_recursive(const QModelIndex &source_parent) const -+{ -+ if (source_parent.isValid()) { -+ const QModelIndex source_grand_parent = source_parent.parent(); -+ IndexMap::const_iterator it = source_index_mapping.constFind(source_grand_parent); -+ IndexMap::const_iterator end = source_index_mapping.constEnd(); -+ if (it == end) { -+ it = create_mapping_recursive(source_grand_parent); -+ end = source_index_mapping.constEnd(); -+ if (it == end) -+ return end; -+ } -+ Mapping *gm = it.value(); -+ if (gm->proxy_rows.at(source_parent.row()) == -1 || -+ gm->proxy_columns.at(source_parent.column()) == -1) { -+ // Can't do, parent is filtered -+ return end; -+ } -+ } -+ return create_mapping(source_parent); -+} -+ - QModelIndex QSortFilterProxyModelPrivate::proxy_to_source(const QModelIndex &proxy_index) const - { - if (!proxy_index.isValid()) -@@ -751,8 +776,10 @@ void QSortFilterProxyModelPrivate::remove_source_items( - { - Q_Q(QSortFilterProxyModel); - QModelIndex proxy_parent = q->mapFromSource(source_parent); -- if (!proxy_parent.isValid() && source_parent.isValid()) -+ if (!proxy_parent.isValid() && source_parent.isValid()) { -+ proxy_to_source.clear(); - return; // nothing to do (already removed) -+ } - - const auto proxy_intervals = proxy_intervals_for_source_items( - source_to_proxy, source_items); -@@ -1404,11 +1431,20 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc - const QModelIndex &source_bottom_right = data_changed.bottomRight; - const QModelIndex source_parent = source_top_left.parent(); - -+ bool change_in_unmapped_parent = false; - IndexMap::const_iterator it = source_index_mapping.constFind(source_parent); - if (it == source_index_mapping.constEnd()) { -- // Don't care, since we don't have mapping for this index -- continue; -+ // We don't have mapping for this index, so we cannot know how things -+ // changed (in case the change affects filtering) in order to forward -+ // the change correctly. -+ // But we can at least forward the signal "as is", if the row isn't -+ // filtered out, this is better than nothing. -+ it = create_mapping_recursive(source_parent); -+ if (it == source_index_mapping.constEnd()) -+ continue; -+ change_in_unmapped_parent = true; - } -+ - Mapping *m = it.value(); - - // Figure out how the source changes affect us -@@ -1418,7 +1454,7 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc - QVector<int> source_rows_resort; - int end = qMin(source_bottom_right.row(), m->proxy_rows.count() - 1); - for (int source_row = source_top_left.row(); source_row <= end; ++source_row) { -- if (dynamic_sortfilter) { -+ if (dynamic_sortfilter && !change_in_unmapped_parent) { - if (m->proxy_rows.at(source_row) != -1) { - if (!filterAcceptsRowInternal(source_row, source_parent)) { - // This source row no longer satisfies the filter, so it must be removed -@@ -1568,7 +1604,6 @@ void QSortFilterProxyModelPrivate::_q_sourceReset() - _q_clearMapping(); - // All internal structures are deleted in clear() - q->endResetModel(); -- create_mapping(QModelIndex()); - update_source_sort_column(); - if (dynamic_sortfilter && update_source_sort_column()) - sort(); -@@ -1634,8 +1669,8 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted( - - const bool toplevel = !source_parent.isValid(); - const bool recursive_accepted = filter_recursive && !toplevel && filterAcceptsRowInternal(source_parent.row(), source_parent.parent()); -- //Force the creation of a mapping now, even if its empty. -- //We need it because the proxy can be acessed at the moment it emits rowsAboutToBeInserted in insert_source_items -+ //Force the creation of a mapping now, even if it's empty. -+ //We need it because the proxy can be accessed at the moment it emits rowsAboutToBeInserted in insert_source_items - if (!filter_recursive || toplevel || recursive_accepted) { - if (can_create_mapping(source_parent)) - create_mapping(source_parent); -@@ -1754,8 +1789,8 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeInserted( - { - Q_UNUSED(start); - Q_UNUSED(end); -- //Force the creation of a mapping now, even if its empty. -- //We need it because the proxy can be acessed at the moment it emits columnsAboutToBeInserted in insert_source_items -+ //Force the creation of a mapping now, even if it's empty. -+ //We need it because the proxy can be accessed at the moment it emits columnsAboutToBeInserted in insert_source_items - if (can_create_mapping(source_parent)) - create_mapping(source_parent); - } -@@ -2149,7 +2184,6 @@ void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel) - connect(d->model, SIGNAL(modelReset()), this, SLOT(_q_sourceReset())); - - endResetModel(); -- d->create_mapping(QModelIndex()); - if (d->update_source_sort_column() && d->dynamic_sortfilter) - d->sort(); - } -diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp -index 6f608854ae..a6e1f49be2 100644 ---- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp -+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp -@@ -2220,6 +2220,40 @@ void tst_QSortFilterProxyModel::changeSourceDataProxySendDataChanged_qtbug87781( - QCOMPARE(afterDataChangedSpy.size(), 1); - } - -+void tst_QSortFilterProxyModel::changeSourceDataTreeModel() -+{ -+ QStandardItemModel treeModel; -+ QSortFilterProxyModel treeProxyModelBefore; -+ QSortFilterProxyModel treeProxyModelAfter; -+ -+ QSignalSpy treeBaseDataChangedSpy(&treeModel, &QStandardItemModel::dataChanged); -+ QSignalSpy treeBeforeDataChangedSpy(&treeProxyModelBefore, &QSortFilterProxyModel::dataChanged); -+ QSignalSpy treeAfterDataChangedSpy(&treeProxyModelAfter, &QSortFilterProxyModel::dataChanged); -+ -+ QVERIFY(treeBaseDataChangedSpy.isValid()); -+ QVERIFY(treeBeforeDataChangedSpy.isValid()); -+ QVERIFY(treeAfterDataChangedSpy.isValid()); -+ -+ treeProxyModelBefore.setSourceModel(&treeModel); -+ QStandardItem treeNode1("data1"); -+ QStandardItem treeNode11("data11"); -+ QStandardItem treeNode111("data111"); -+ -+ treeNode1.appendRow(&treeNode11); -+ treeNode11.appendRow(&treeNode111); -+ treeModel.appendRow(&treeNode1); -+ treeProxyModelAfter.setSourceModel(&treeModel); -+ -+ QCOMPARE(treeBaseDataChangedSpy.size(), 0); -+ QCOMPARE(treeBeforeDataChangedSpy.size(), 0); -+ QCOMPARE(treeAfterDataChangedSpy.size(), 0); -+ -+ treeNode111.setData(QStringLiteral("new data"), Qt::DisplayRole); -+ QCOMPARE(treeBaseDataChangedSpy.size(), 1); -+ QCOMPARE(treeBeforeDataChangedSpy.size(), 1); -+ QCOMPARE(treeAfterDataChangedSpy.size(), 1); -+} -+ - void tst_QSortFilterProxyModel::changeSourceDataProxyFilterSingleColumn() - { - enum modelRow { Row0, Row1, RowCount }; -diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h -index 7bf87a86c2..97862e804b 100644 ---- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h -+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h -@@ -91,6 +91,7 @@ private slots: - void changeSourceDataKeepsStableSorting_qtbug1548(); - void changeSourceDataForwardsRoles_qtbug35440(); - void changeSourceDataProxySendDataChanged_qtbug87781(); -+ void changeSourceDataTreeModel(); - void changeSourceDataProxyFilterSingleColumn(); - void changeSourceDataProxyFilterMultipleColumns(); - void resortingDoesNotBreakTreeModels(); --- -2.36.0 - -From 835dec0c458d3f8e51b9b1328bef76969916bf28 Mon Sep 17 00:00:00 2001 +From 3c589599829e767e19e8d919f0bc5857dcd6bb60 Mon Sep 17 00:00:00 2001 From: Igor Kushnir <igorkuo@gmail.com> Date: Mon, 29 Mar 2021 18:58:19 +0300 -Subject: [PATCH 021/146] Optimize quadratic-time insertion in +Subject: [PATCH 010/123] Optimize quadratic-time insertion in QSortFilterProxyModel Let N = proxy_to_source.size() before the code modified in this commit. @@ -1436,7 +650,7 @@ Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp -index 6fc4b7d84e..c5e287ee84 100644 +index ce35bda5e11..f2871a2da78 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp +++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp @@ -939,8 +939,9 @@ void QSortFilterProxyModelPrivate::insert_source_items( @@ -1452,12 +666,12 @@ index 6fc4b7d84e..c5e287ee84 100644 build_source_to_proxy_mapping(proxy_to_source, source_to_proxy); -- -2.36.0 +2.49.0 -From 1418a79735bac042b26be8468ac81d5b209c406b Mon Sep 17 00:00:00 2001 +From 71dafedb5d53942d9c64d54633111e4916933330 Mon Sep 17 00:00:00 2001 From: David Faure <david.faure@kdab.com> Date: Thu, 24 Jun 2021 18:53:15 +0200 -Subject: [PATCH 022/146] Update shared-mime-info to the 2.1 release, adjust +Subject: [PATCH 011/123] Update shared-mime-info to the 2.1 release, adjust implementation The spec hasn't changed, but I made the same mistake in xdgmime @@ -1495,7 +709,7 @@ Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> 5 files changed, 8888 insertions(+), 7061 deletions(-) diff --git a/src/corelib/mimetypes/mime/packages/freedesktop.org.xml b/src/corelib/mimetypes/mime/packages/freedesktop.org.xml -index d384ffb2d5..e73929c9bb 100644 +index d384ffb2d57..e73929c9bbf 100644 --- a/src/corelib/mimetypes/mime/packages/freedesktop.org.xml +++ b/src/corelib/mimetypes/mime/packages/freedesktop.org.xml @@ -1,183 +1,177 @@ @@ -42276,7 +41490,7 @@ index d384ffb2d5..e73929c9bb 100644 + </mime-type> </mime-info> diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp -index 9de22cef33..ff868a3268 100644 +index 9de22cef339..ff868a3268c 100644 --- a/src/corelib/mimetypes/qmimedatabase.cpp +++ b/src/corelib/mimetypes/qmimedatabase.cpp @@ -389,20 +389,23 @@ QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileNa @@ -42308,7 +41522,7 @@ index 9de22cef33..ff868a3268 100644 } diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp -index 1016884437..943eb84b94 100644 +index b1de8907b2d..fa8f4c545d9 100644 --- a/src/corelib/mimetypes/qmimeglobpattern.cpp +++ b/src/corelib/mimetypes/qmimeglobpattern.cpp @@ -83,7 +83,10 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q @@ -42324,7 +41538,7 @@ index 1016884437..943eb84b94 100644 } } diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp -index 12ce442f70..80616cccad 100644 +index 258dddf8cb0..4642d0f2d00 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -244,15 +244,18 @@ void QMimeBinaryProvider::addFileNameMatches(const QString &fileName, QMimeGlobM @@ -42354,7 +41568,7 @@ index 12ce442f70..80616cccad 100644 void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int off, const QString &fileName) diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp -index 0ea422ecbc..1a3256534b 100644 +index 0ea422ecbc9..1a3256534be 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -70,15 +70,15 @@ static inline QString testSuiteWarning() @@ -42411,12 +41625,12 @@ index 0ea422ecbc..1a3256534b 100644 QTest::newRow("oasis presentation mimetype") << "application/vnd.oasis.opendocument.presentation" << "*.odp" << "odp"; QTest::newRow("mimetype with multiple patterns") << "text/plain" << "*.asc;*.txt;*,v" << "txt"; -- -2.36.0 +2.49.0 -From a5b9fef71275743723da62bbf1e7292dc223d47c Mon Sep 17 00:00:00 2001 +From 44da25e0814b0065976496f91e54dcd4ec8ab22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io> Date: Thu, 18 Jun 2020 17:03:03 +0200 -Subject: [PATCH 023/146] xcb: Remove need for QXCBScreen to resolve +Subject: [PATCH 012/123] xcb: Remove need for QXCBScreen to resolve QXcbGlIntegration Change-Id: I9de4f47bfdf88c92959f210e05c1fc1e8a459cde @@ -42427,7 +41641,7 @@ Reviewed-by: Liang Qi <liang.qi@qt.io> 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp -index 76869ced60..02d2eebb56 100644 +index 76869ced60e..02d2eebb56c 100644 --- a/src/plugins/platforms/xcb/qxcbintegration.cpp +++ b/src/plugins/platforms/xcb/qxcbintegration.cpp @@ -274,8 +274,7 @@ QPlatformWindow *QXcbIntegration::createForeignWindow(QWindow *window, WId nativ @@ -42441,277 +41655,12 @@ index 76869ced60..02d2eebb56 100644 qWarning("QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled"); return nullptr; -- -2.36.0 - -From 53c9a59af4d09abbdb3e824a5593d2812727c581 Mon Sep 17 00:00:00 2001 -From: Nicolas Fella <nicolas.fella@kdab.com> -Date: Sun, 20 Jun 2021 17:36:41 +0200 -Subject: [PATCH 024/146] Add missing limits include - -The code uses std::numeric_limits but is lacking the appropriate include - -Pick-to: 5.15 6.1 6.2 -Change-Id: I41fa5ac4d8c4e06f35b5b1551ef2ad8417df80bd -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -(cherry picked from commit 2b2b3155d9f6ba1e4f859741468fbc47db09292b) ---- - src/corelib/tools/qoffsetstringarray_p.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/corelib/tools/qoffsetstringarray_p.h b/src/corelib/tools/qoffsetstringarray_p.h -index 4dd9e9603b..e26a57ff43 100644 ---- a/src/corelib/tools/qoffsetstringarray_p.h -+++ b/src/corelib/tools/qoffsetstringarray_p.h -@@ -55,6 +55,7 @@ - - #include <tuple> - #include <array> -+#include <limits> - - QT_BEGIN_NAMESPACE - --- -2.36.0 - -From b55e1abaaf85636e2d4f6bd10b23129061d72daf Mon Sep 17 00:00:00 2001 -From: Olivier Goffart <ogoffart@woboq.com> -Date: Thu, 5 Dec 2019 14:05:11 +0100 -Subject: [PATCH 025/146] Fix tst_moc for C++17 - -The throw() specification is no longer accepted in C++17 mode, so remove that. - -Also pass the -std=c++1z to the compiler as Qt is going to require C++17 soon - -Change-Id: I6d249e574d90cd1cf5c0ea595830d2db07681050 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit b0498b1864829a314b70c4204bb47529ab3654b2) ---- - tests/auto/tools/moc/allmocs_baseline_in.json | 44 ----------------- - tests/auto/tools/moc/moc.pro | 2 +- - tests/auto/tools/moc/task189996.h | 47 ------------------- - tests/auto/tools/moc/tst_moc.cpp | 31 ++---------- - 4 files changed, 5 insertions(+), 119 deletions(-) - delete mode 100644 tests/auto/tools/moc/task189996.h - -diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json -index 6d17bebb5f..7fa93b9c47 100644 ---- a/tests/auto/tools/moc/allmocs_baseline_in.json -+++ b/tests/auto/tools/moc/allmocs_baseline_in.json -@@ -668,50 +668,6 @@ - "inputFile": "task192552.h", - "outputRevision": 67 - }, -- { -- "classes": [ -- { -- "className": "InlineSlotsWithThrowDeclaration", -- "object": true, -- "qualifiedClassName": "InlineSlotsWithThrowDeclaration", -- "slots": [ -- { -- "access": "public", -- "name": "a", -- "returnType": "void" -- }, -- { -- "access": "public", -- "name": "b", -- "returnType": "void" -- }, -- { -- "access": "public", -- "name": "c", -- "returnType": "void" -- }, -- { -- "access": "public", -- "name": "d", -- "returnType": "void" -- }, -- { -- "access": "public", -- "name": "e", -- "returnType": "void" -- } -- ], -- "superClasses": [ -- { -- "access": "public", -- "name": "QObject" -- } -- ] -- } -- ], -- "inputFile": "task189996.h", -- "outputRevision": 67 -- }, - { - "classes": [ - { -diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro -index cafc7bc184..c56179f0ce 100644 ---- a/tests/auto/tools/moc/moc.pro -+++ b/tests/auto/tools/moc/moc.pro -@@ -15,7 +15,7 @@ cross_compile: DEFINES += MOC_CROSS_COMPILED - HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \ - slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \ - escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \ -- dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \ -+ dir-in-include-path.h single_function_keyword.h task192552.h \ - task234909.h task240368.h pure-virtual-signals.h cxx11-enums.h \ - cxx11-final-classes.h \ - cxx11-explicit-override-control.h \ -diff --git a/tests/auto/tools/moc/task189996.h b/tests/auto/tools/moc/task189996.h -deleted file mode 100644 -index f94a051b3a..0000000000 ---- a/tests/auto/tools/moc/task189996.h -+++ /dev/null -@@ -1,47 +0,0 @@ --/**************************************************************************** --** --** Copyright (C) 2016 The Qt Company Ltd. --** Contact: https://www.qt.io/licensing/ --** --** This file is part of the test suite of the Qt Toolkit. --** --** $QT_BEGIN_LICENSE:GPL-EXCEPT$ --** Commercial License Usage --** Licensees holding valid commercial Qt licenses may use this file in --** accordance with the commercial license agreement provided with the --** Software or, alternatively, in accordance with the terms contained in --** a written agreement between you and The Qt Company. For licensing terms --** and conditions see https://www.qt.io/terms-conditions. For further --** information use the contact form at https://www.qt.io/contact-us. --** --** GNU General Public License Usage --** Alternatively, this file may be used under the terms of the GNU --** General Public License version 3 as published by the Free Software --** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT --** included in the packaging of this file. Please review the following --** information to ensure the GNU General Public License requirements will --** be met: https://www.gnu.org/licenses/gpl-3.0.html. --** --** $QT_END_LICENSE$ --** --****************************************************************************/ --// inline functions can have throw declarations -- --#ifndef TASK189996_H --#define TASK189996_H -- --#include <QObject> -- --class InlineSlotsWithThrowDeclaration : public QObject --{ -- Q_OBJECT -- --public slots: -- void a() throw() { } -- void b() const throw() { } -- void c() throw(); -- void d() throw(int) { } -- void e() const throw(int,double) { } --}; -- --#endif -diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp -index 0f801fe902..a1ad07185f 100644 ---- a/tests/auto/tools/moc/tst_moc.cpp -+++ b/tests/auto/tools/moc/tst_moc.cpp -@@ -630,7 +630,6 @@ public: - private slots: - void initTestCase(); - -- void slotWithException() throw(MyStruct); - void dontStripNamespaces(); - void oldStyleCasts(); - void warnOnExtraSignalSlotQualifiaction(); -@@ -672,7 +671,6 @@ private slots: - void templateGtGt(); - void qprivateslots(); - void qprivateproperties(); -- void inlineSlotsWithThrowDeclaration(); - void warnOnPropertyWithoutREAD(); - void constructors(); - void typenameWithUnsigned(); -@@ -782,12 +780,6 @@ void tst_Moc::initTestCase() - #endif - } - --void tst_Moc::slotWithException() throw(MyStruct) --{ -- // be happy -- QVERIFY(true); --} -- - void tst_Moc::dontStripNamespaces() - { - Sender sender; -@@ -822,7 +814,7 @@ void tst_Moc::oldStyleCasts() - - QStringList args; - args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "." -- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; -+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; - proc.start("gcc", args); - QVERIFY(proc.waitForStarted()); - proc.write(mocOut); -@@ -892,7 +884,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension() - - QStringList args; - args << "-c" << "-x" << "c++" << "-I" << ".." -- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; -+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; - proc.start("gcc", args); - QVERIFY(proc.waitForStarted()); - proc.write(mocOut); -@@ -1172,7 +1164,7 @@ void tst_Moc::ignoreOptionClashes() - QStringList gccArgs; - gccArgs << "-c" << "-x" << "c++" << "-I" << ".." - << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null" -- << "-fPIC" << "-std=c++11" << "-"; -+ << "-fPIC" << "-std=c++1z" << "-"; - proc.start("gcc", gccArgs); - QVERIFY(proc.waitForStarted()); - proc.write(mocOut); -@@ -1591,21 +1583,6 @@ void tst_Moc::qprivateproperties() - - } - --#include "task189996.h" -- --void InlineSlotsWithThrowDeclaration::c() throw() {} -- --void tst_Moc::inlineSlotsWithThrowDeclaration() --{ -- InlineSlotsWithThrowDeclaration tst; -- const QMetaObject *mobj = tst.metaObject(); -- QVERIFY(mobj->indexOfSlot("a()") != -1); -- QVERIFY(mobj->indexOfSlot("b()") != -1); -- QVERIFY(mobj->indexOfSlot("c()") != -1); -- QVERIFY(mobj->indexOfSlot("d()") != -1); -- QVERIFY(mobj->indexOfSlot("e()") != -1); --} -- - void tst_Moc::warnOnPropertyWithoutREAD() - { - #ifdef MOC_CROSS_COMPILED -@@ -1867,7 +1844,7 @@ void tst_Moc::notifyError() - - QStringList args; - args << "-c" << "-x" << "c++" << "-I" << "." -- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; -+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; - proc.start("gcc", args); - QVERIFY(proc.waitForStarted()); - proc.write(mocOut); --- -2.36.0 +2.49.0 -From 35d4f3f9f48a2f7e5ed6f4e5ded003a19f1f3d3b Mon Sep 17 00:00:00 2001 +From e58fdb7e307eb0010267cb1667d3ef27dd1c2b37 Mon Sep 17 00:00:00 2001 From: Milian Wolff <milian.wolff@kdab.com> Date: Thu, 1 Jul 2021 11:01:48 +0200 -Subject: [PATCH 026/146] Fix memory leak of QOffscreenScreen in +Subject: [PATCH 013/123] Fix memory leak of QOffscreenScreen in QOffscreenIntegration Call handleScreenRemoved when the QOffscreenIntegration is getting @@ -42743,7 +41692,7 @@ Change-Id: Ife36cb079340bb72f5943e87d621af2f8111c238 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp -index 141fb68a23..d4294d425a 100644 +index 141fb68a23f..d4294d425a4 100644 --- a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp +++ b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp @@ -122,11 +122,13 @@ QOffscreenIntegration::QOffscreenIntegration() @@ -42762,7 +41711,7 @@ index 141fb68a23..d4294d425a 100644 void QOffscreenIntegration::initialize() diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.h b/src/plugins/platforms/offscreen/qoffscreenintegration.h -index 0ea90f6c2f..fe00fde07c 100644 +index 0ea90f6c2fa..fe00fde07cd 100644 --- a/src/plugins/platforms/offscreen/qoffscreenintegration.h +++ b/src/plugins/platforms/offscreen/qoffscreenintegration.h @@ -84,6 +84,7 @@ protected: @@ -42774,302 +41723,12 @@ index 0ea90f6c2f..fe00fde07c 100644 }; -- -2.36.0 - -From 6dafbf538c7c0ea8085f410e7f66c5cd86c11012 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@kdab.com> -Date: Fri, 25 Jun 2021 23:54:05 +0200 -Subject: [PATCH 027/146] QVarLengthArray: fix aliasing error in insert(it, n, - v) - -Taking the copy after the resize is completely pointless: the copy is -there to ensure that `t`, being a reference potentially aliasing an -element in [begin(), end()[ before the resize(), isn't invalidated by -the resize(), so it must be taken before resize(). - -Add a comment so the next rewrite doesn't cause this to be mixed up -again. - -[ChangeLog][QtCore][QVarLengthArray] Fixed an aliasing bug affecting -insertions of objects aliasing existing elements. - -Pick-to: 6.2 6.1 6.0 5.15 5.12 -Change-Id: I26bc449fa99bf8d09a19147a12a69ac4314cc61d -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -(cherry picked from commit 6e57e41f9aef5ccfa122c10bc6253d47dafd93d2) ---- - src/corelib/tools/qvarlengtharray.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h -index fd0c99c032..0110956b77 100644 ---- a/src/corelib/tools/qvarlengtharray.h -+++ b/src/corelib/tools/qvarlengtharray.h -@@ -507,8 +507,8 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA - - int offset = int(before - ptr); - if (n != 0) { -+ const T copy(t); // `t` could alias an element in [begin(), end()[ - resize(s + n); -- const T copy(t); - if (!QTypeInfoQuery<T>::isRelocatable) { - T *b = ptr + offset; - T *j = ptr + s; --- -2.36.0 - -From 3f530be825ce070493669df31fe6bc29be1cbac3 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@kdab.com> -Date: Fri, 2 Jul 2021 08:55:14 +0200 -Subject: [PATCH 028/146] Fix rvalue overload of qobject_pointer_cast for GCC - 9.3 - -The code assumed that any C++ implementation would implement the -resolution for LWG2996 in C++20 mode. While that may be the case in -the future, the current state in GCC 9.3 as shipped in Ubuntu 20.04 -LTS is that it doesn't, which leads to tst_qsharedpointer fail there. - -Fix by using the safe version of std::move, std::exchange, which -guarantees the state of the src object, no matter what the callee -does. - -Pick-to: 6.2 6.1 5.15 -Change-Id: Icc39b527df4d3a7b398ff2b44bcbdf9082b81f2f -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -(cherry picked from commit 0632494bd47e924ce7914b6457791d4612599e5f) ---- - src/corelib/tools/qsharedpointer_impl.h | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h -index 790c187cb9..e334cefe97 100644 ---- a/src/corelib/tools/qsharedpointer_impl.h -+++ b/src/corelib/tools/qsharedpointer_impl.h -@@ -1012,15 +1012,11 @@ std::shared_ptr<X> qobject_pointer_cast(std::shared_ptr<T> &&src) - using element_type = typename std::shared_ptr<X>::element_type; - auto castResult = qobject_cast<element_type *>(src.get()); - if (castResult) { -- auto result = std::shared_ptr<X>(std::move(src), castResult); --#if __cplusplus <= 201703L - // C++2a's move aliasing constructor will leave src empty. - // Before C++2a we don't really know if the compiler has support for it. - // The move aliasing constructor is the resolution for LWG2996, - // which does not impose a feature-testing macro. So: clear src. -- src.reset(); --#endif -- return result; -+ return std::shared_ptr<X>(std::exchange(src, nullptr), castResult); - } - return std::shared_ptr<X>(); - } --- -2.36.0 - -From e7e2eb0ec4f4c1878e469e142fe4d7296498d326 Mon Sep 17 00:00:00 2001 -From: Liang Qi <liang.qi@qt.io> -Date: Tue, 6 Jul 2021 12:00:17 +0200 -Subject: [PATCH 029/146] opengl: fix a typo in - QOpenGLPaintDevice::dotsPerMeterY() - -Fixes: QTBUG-95005 -Pick-to: 6.2 6.1 5.15 5.12 -Change-Id: I88ab9b757a5cfee520e07ac6280e31f9211342f0 -Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> -(cherry picked from commit 85831bcfe6ce36740c524d641ada79c65aadd89b) ---- - src/gui/opengl/qopenglpaintdevice.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp -index 3920a10467..9e7d2861fd 100644 ---- a/src/gui/opengl/qopenglpaintdevice.cpp -+++ b/src/gui/opengl/qopenglpaintdevice.cpp -@@ -331,7 +331,7 @@ void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx) - - void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy) - { -- d_ptr->dpmx = dpmy; -+ d_ptr->dpmy = dpmy; - } - - /*! --- -2.36.0 - -From f0ca94c97d2a1d43c0b96ce1ac7d523973f61efa Mon Sep 17 00:00:00 2001 -From: Milian Wolff <milian.wolff@kdab.com> -Date: Tue, 13 Jul 2021 10:33:30 +0200 -Subject: [PATCH 030/146] Restore C++11 compatibility of QSharedPointer code - -Qt5 still needs to compile with C++11, so we cannot use std::exchange -which is a C++14 feature. Use qExchange instead, which is a drop-in -replacement. - -Change-Id: I1b4f62f2b67f371cfa9c0e6641656d02f03a6520 ---- - src/corelib/tools/qsharedpointer_impl.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h -index e334cefe97..8abb57586b 100644 ---- a/src/corelib/tools/qsharedpointer_impl.h -+++ b/src/corelib/tools/qsharedpointer_impl.h -@@ -1016,7 +1016,7 @@ std::shared_ptr<X> qobject_pointer_cast(std::shared_ptr<T> &&src) - // Before C++2a we don't really know if the compiler has support for it. - // The move aliasing constructor is the resolution for LWG2996, - // which does not impose a feature-testing macro. So: clear src. -- return std::shared_ptr<X>(std::exchange(src, nullptr), castResult); -+ return std::shared_ptr<X>(qExchange(src, nullptr), castResult); - } - return std::shared_ptr<X>(); - } --- -2.36.0 +2.49.0 -From e1d1aafbde70e6754f28ee7b42056ea6d2719abc Mon Sep 17 00:00:00 2001 -From: Timur Pocheptsov <timur.pocheptsov@qt.io> -Date: Thu, 22 Jul 2021 15:49:30 +0200 -Subject: [PATCH 031/146] doCrypt() - check the error codes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Disabled (moved into the legacy provider) DES-CBC results in a crash, -when setting key length. - -Pick-to: 6.2 6.1 5.15 -Change-Id: Ie0b49424f11d8042ebecebfd3b6346263f730551 -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit b4942f7f0c56f2c5dcd783760a8c915463e8e744) ---- - src/network/ssl/qsslkey_openssl.cpp | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - -diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp -index 43cb8c6de8..10f6c6c26e 100644 ---- a/src/network/ssl/qsslkey_openssl.cpp -+++ b/src/network/ssl/qsslkey_openssl.cpp -@@ -348,7 +348,12 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data, - - EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new(); - q_EVP_CIPHER_CTX_reset(ctx); -- q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc); -+ if (q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc) != 1) { -+ q_EVP_CIPHER_CTX_free(ctx); -+ QSslSocketBackendPrivate::logAndClearErrorQueue(); -+ return {}; -+ } -+ - q_EVP_CIPHER_CTX_set_key_length(ctx, key.size()); - if (cipher == QSslKeyPrivate::Rc2Cbc) - q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr); --- -2.36.0 - -From fc9793a21848ecb51281780f8ee77cc75eefc64c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> -Date: Mon, 2 Aug 2021 14:46:32 +0200 -Subject: [PATCH 032/146] QLibraryInfo: Add MSVC 2022 - -Pick-to: 6.2 6.1 5.15 -Change-Id: Ie66effde6832152ee2903c467269a2822ded6653 -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> -(cherry picked from commit 11476e5403c0f0ed997f0ecc9e5a82501441a667) ---- - src/corelib/global/qlibraryinfo.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp -index 8ceb763491..a1558a6abe 100644 ---- a/src/corelib/global/qlibraryinfo.cpp -+++ b/src/corelib/global/qlibraryinfo.cpp -@@ -333,8 +333,10 @@ QLibraryInfo::buildDate() - # define COMPILER_STRING "MSVC 2015" - # elif _MSC_VER < 1917 - # define COMPILER_STRING "MSVC 2017" --# elif _MSC_VER < 2000 -+# elif _MSC_VER < 1930 - # define COMPILER_STRING "MSVC 2019" -+# elif _MSC_VER < 2000 -+# define COMPILER_STRING "MSVC 2022" - # else - # define COMPILER_STRING "MSVC _MSC_VER " QT_STRINGIFY(_MSC_VER) - # endif --- -2.36.0 - -From 8bc49484cc87c653ae395f3818586195fc20887a Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Mon, 9 Aug 2021 13:04:45 -0700 -Subject: [PATCH 033/146] MySQL: remove the version number checks in favor of - actual functionality - -MariaDB library version 3.2 no longer returns the server version in the -10.x range but the library version itself, which is lower than 4.x. That -meant we concluded the server did not support prepared statements. - -And because of the lack of prepared statements, all QDateTime -conversions failed, because of the timezone. I don't know if this was -intended or what, but it's a side issue. - -[ChangeLog][QtSql][MySQL] Fixed the detection of whether the client and -server support prepared statements. This was caused by the mariadb -connector library reporting its own version numbers (starting in version -3.2) instead of the server version. - -Fixes: QTBUG-95071 -Pick-to: 5.15 6.2 -Change-Id: I4a40ccbd3321467a8429fffd1699bc089ba706e6 -Reviewed-by: Andy Shaw <andy.shaw@qt.io> -Reviewed-by: Fabian Vogt <fabian@ritter-vogt.de> -(cherry picked from commit 211369133cf40b2f522caaff259c19069ed23ca4) ---- - src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 17 +++++++++++++++-- - 1 file changed, 15 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -index a641935dc5..7ca055eea2 100644 ---- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -@@ -158,6 +158,20 @@ static inline QVariant qDateTimeFromString(QString &val) - #endif - } - -+// check if this client and server version of MySQL/MariaDB support prepared statements -+static inline bool checkPreparedQueries(MYSQL *mysql) -+{ -+ std::unique_ptr<MYSQL_STMT, decltype(&mysql_stmt_close)> stmt(mysql_stmt_init(mysql), &mysql_stmt_close); -+ if (!stmt) -+ return false; -+ -+ static const char dummyQuery[] = "SELECT ? + ?"; -+ if (mysql_stmt_prepare(stmt.get(), dummyQuery, sizeof(dummyQuery) - 1)) -+ return false; -+ -+ return mysql_stmt_param_count(stmt.get()) == 2; -+} -+ - class QMYSQLResultPrivate; - - class QMYSQLResult : public QSqlResult -@@ -1371,8 +1385,7 @@ bool QMYSQLDriver::open(const QString& db, - } - #endif // MYSQL_VERSION_ID >= 50007 - -- d->preparedQuerysEnabled = mysql_get_client_version() >= 40108 -- && mysql_get_server_version(d->mysql) >= 40100; -+ d->preparedQuerysEnabled = checkPreparedQueries(d->mysql); - - #if QT_CONFIG(thread) - mysql_thread_init(); --- -2.36.0 - -From 573455fc4fa40250082eec4c877276c480454f42 Mon Sep 17 00:00:00 2001 +From ecfa079e394dc81231233d11e42f30f861c9eb09 Mon Sep 17 00:00:00 2001 From: Antonio Rojas <arojas@archlinux.org> Date: Wed, 11 Aug 2021 09:27:15 +0200 -Subject: [PATCH 034/146] Remove another usage of mysql_get_client_version() +Subject: [PATCH 014/123] Remove another usage of mysql_get_client_version() As of MariaDB 10.6, mysql_get_client_version returns the C library version, which breaks the version comparison. @@ -43080,10 +41739,10 @@ Backporting the full commit seems overkill, we backport only the mysql_get_clien 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -index 7ca055eea2..4b9b396946 100644 +index e0c72fa240d..309bbdad57b 100644 --- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp +++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -@@ -1369,20 +1369,20 @@ bool QMYSQLDriver::open(const QString& db, +@@ -1370,20 +1370,20 @@ bool QMYSQLDriver::open(const QString& db, } #if MYSQL_VERSION_ID >= 50007 @@ -43115,364 +41774,12 @@ index 7ca055eea2..4b9b396946 100644 d->preparedQuerysEnabled = checkPreparedQueries(d->mysql); -- -2.36.0 - -From 53d3b0d9d8b9c994485b9f7f6b3f8e741528d714 Mon Sep 17 00:00:00 2001 -From: Liang Qi <liang.qi@qt.io> -Date: Wed, 7 Jul 2021 13:19:14 +0200 -Subject: [PATCH 035/146] xcb: add a timeout control when reading INCR property -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -For the first call of QXcbClipboard::clipboardReadProperty() -inside of clipboardReadIncrementalProperty() in getSelection(), -it will get a XCB_NONE reply before the contents arrived via -property change. Then we give a chance to read more. - -Manually tested with following setups: -* examples/widgets/mainwindows/application with gvim(gtk3) -* examples/widgets/widgets/imageviewer with GIMP 2.10.18(based on -gtk2) and GIMP 2.99.6(based on gtk3 via flatpak) - -Fixes: QTBUG-56595 -Pick-to: 5.12 5.15 6.1 6.2 -Done-With: JiDe Zhang <zhangjide@uniontech.com> -Change-Id: Ib45f08464d39ad79137b1da99808c89b7dca2d08 -Reviewed-by: JiDe Zhang <zhangjide@uniontech.com> -Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> -(cherry picked from commit 02248eea5562c1df39ee23f195011afacc6759b0) ---- - src/plugins/platforms/xcb/qxcbclipboard.cpp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp -index 0a4d675606..dabdfcb6c5 100644 ---- a/src/plugins/platforms/xcb/qxcbclipboard.cpp -+++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp -@@ -835,6 +835,8 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb - alloc_error = buf.size() != nbytes+1; - } - -+ QElapsedTimer timer; -+ timer.start(); - for (;;) { - connection()->flush(); - xcb_generic_event_t *ge = waitForClipboardEvent(win, XCB_PROPERTY_NOTIFY); -@@ -870,9 +872,11 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb - tmp_buf.resize(0); - offset += length; - } -- } else { -- break; - } -+ -+ const auto elapsed = timer.elapsed(); -+ if (elapsed > clipboard_timeout) -+ break; - } - - // timed out ... create a new requestor window, otherwise the requestor --- -2.36.0 - -From 55117ba29b794aedc92d7f55a3a1389046b46be4 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Tue, 13 Apr 2021 14:23:45 +0200 -Subject: [PATCH 036/146] Avoid processing-intensive painting of high number of - tiny dashes - -When stroking a dashed path, an unnecessary amount of processing would -be spent if there is a huge number of dashes visible, e.g. because of -scaling. Since the dashes are too small to be indivdually visible -anyway, just replace with a semi-transparent solid line for such -cases. - -Pick-to: 6.1 6.0 5.15 -Change-Id: I9e9f7861257ad5bce46a0cf113d1a9d7824911e6 -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> -(cherry picked from commit f4d791b330d02777fcaf02938732892eb3167e9b) - -* asturmlechner 2021-08-21: -Conflict from preceding 94dd2ceb in dev branch: - src/gui/painting/qpaintengineex.cpp - Resolved via: - - if (pen.style() > Qt::SolidLine) { - QRectF cpRect = path.controlPointRect(); - const QTransform &xf = state()->matrix; -- if (pen.isCosmetic()) { -+ if (qt_pen_is_cosmetic(pen, state()->renderHints)){ - clipRect = d->exDeviceRect; - cpRect.translate(xf.dx(), xf.dy()); - } else { - -FTBFS from preceding 471e4fcb in dev branch changing QVector to QList: - Resolved via: - - QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; - qreal extent = qMax(extentRect.width(), extentRect.height()); - qreal patternLength = 0; -- const QList<qreal> pattern = pen.dashPattern(); -+ const QVector<qreal> pattern = pen.dashPattern(); - const int patternSize = qMin(pattern.size(), 32); - for (int i = 0; i < patternSize; i++) - patternLength += qMax(pattern.at(i), qreal(0)); ---- - src/gui/painting/qpaintengineex.cpp | 44 +++++++++++++++---- - .../other/lancelot/scripts/tinydashes.qps | 34 ++++++++++++++ - 2 files changed, 69 insertions(+), 9 deletions(-) - create mode 100644 tests/auto/other/lancelot/scripts/tinydashes.qps - -diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 5d8f89eadd..55fdb0c2a0 100644 ---- a/src/gui/painting/qpaintengineex.cpp -+++ b/src/gui/painting/qpaintengineex.cpp -@@ -385,7 +385,7 @@ QPainterState *QPaintEngineEx::createState(QPainterState *orig) const - - Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp - --void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) -+void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) - { - #ifdef QT_DEBUG_DRAW - qDebug() << "QPaintEngineEx::stroke()" << pen; -@@ -403,6 +403,38 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) - d->stroker.setCubicToHook(qpaintengineex_cubicTo); - } - -+ QRectF clipRect; -+ QPen pen = inPen; -+ if (pen.style() > Qt::SolidLine) { -+ QRectF cpRect = path.controlPointRect(); -+ const QTransform &xf = state()->matrix; -+ if (qt_pen_is_cosmetic(pen, state()->renderHints)){ -+ clipRect = d->exDeviceRect; -+ cpRect.translate(xf.dx(), xf.dy()); -+ } else { -+ clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); -+ } -+ // Check to avoid generating unwieldy amount of dashes that will not be visible anyway -+ QRectF extentRect = cpRect & clipRect; -+ qreal extent = qMax(extentRect.width(), extentRect.height()); -+ qreal patternLength = 0; -+ const QVector<qreal> pattern = pen.dashPattern(); -+ const int patternSize = qMin(pattern.size(), 32); -+ for (int i = 0; i < patternSize; i++) -+ patternLength += qMax(pattern.at(i), qreal(0)); -+ if (pen.widthF()) -+ patternLength *= pen.widthF(); -+ if (qFuzzyIsNull(patternLength)) { -+ pen.setStyle(Qt::NoPen); -+ } else if (extent / patternLength > 10000) { -+ // approximate stream of tiny dashes with semi-transparent solid line -+ pen.setStyle(Qt::SolidLine); -+ QColor color(pen.color()); -+ color.setAlpha(color.alpha() / 2); -+ pen.setColor(color); -+ } -+ } -+ - if (!qpen_fast_equals(pen, d->strokerPen)) { - d->strokerPen = pen; - d->stroker.setJoinStyle(pen.joinStyle()); -@@ -430,14 +462,8 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) - return; - } - -- if (pen.style() > Qt::SolidLine) { -- if (qt_pen_is_cosmetic(pen, state()->renderHints)){ -- d->activeStroker->setClipRect(d->exDeviceRect); -- } else { -- QRectF clipRect = state()->matrix.inverted().mapRect(QRectF(d->exDeviceRect)); -- d->activeStroker->setClipRect(clipRect); -- } -- } -+ if (!clipRect.isNull()) -+ d->activeStroker->setClipRect(clipRect); - - if (d->activeStroker == &d->stroker) - d->stroker.setForceOpen(path.hasExplicitOpen()); -diff --git a/tests/auto/other/lancelot/scripts/tinydashes.qps b/tests/auto/other/lancelot/scripts/tinydashes.qps -new file mode 100644 -index 0000000000..d41ced7f5f ---- /dev/null -+++ b/tests/auto/other/lancelot/scripts/tinydashes.qps -@@ -0,0 +1,34 @@ -+# Version: 1 -+# CheckVsReference: 5% -+ -+path_addEllipse mypath 20.0 20.0 200.0 200.0 -+ -+save -+setPen blue 20 SolidLine FlatCap -+pen_setCosmetic true -+pen_setDashPattern [ 0.0004 0.0004 ] -+setBrush yellow -+ -+drawPath mypath -+translate 300 0 -+setRenderHint Antialiasing true -+drawPath mypath -+restore -+ -+path_addEllipse bigpath 200000.0 200000.0 2000000.0 2000000.0 -+ -+setPen blue 20 DotLine FlatCap -+setBrush yellow -+ -+save -+translate 0 300 -+scale 0.0001 0.00011 -+drawPath bigpath -+restore -+ -+save -+translate 300 300 -+setRenderHint Antialiasing true -+scale 0.0001 0.00011 -+drawPath bigpath -+restore --- -2.36.0 - -From a2f813d284bb05a68df085b70feaf61c540b9f9a Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Fri, 23 Jul 2021 15:53:56 +0200 -Subject: [PATCH 037/146] Improve fix for avoiding huge number of tiny dashes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some pathological cases were not caught by the previous fix. - -Fixes: QTBUG-95239 -Pick-to: 6.2 6.1 5.15 -Change-Id: I0337ee3923ff93ccb36c4d7b810a9c0667354cc5 -Reviewed-by: Robert Löhning <robert.loehning@qt.io> -(cherry picked from commit 6b400e3147dcfd8cc3a393ace1bd118c93762e0c) ---- - src/gui/painting/qpaintengineex.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 55fdb0c2a0..19e4b23423 100644 ---- a/src/gui/painting/qpaintengineex.cpp -+++ b/src/gui/painting/qpaintengineex.cpp -@@ -426,7 +426,7 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) - patternLength *= pen.widthF(); - if (qFuzzyIsNull(patternLength)) { - pen.setStyle(Qt::NoPen); -- } else if (extent / patternLength > 10000) { -+ } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) { - // approximate stream of tiny dashes with semi-transparent solid line - pen.setStyle(Qt::SolidLine); - QColor color(pen.color()); --- -2.36.0 - -From e553fb304c0ca91cb6764011868db632756c98bf Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Fri, 30 Jul 2021 13:03:49 +0200 -Subject: [PATCH 038/146] Refix for avoiding huge number of tiny dashes - -Previous fix hit too widely so some valid horizontal and vertical -lines were affected; the root problem being that such lines have an -empty control point rect (width or height is 0). Fix by caculating in -the pen width. - -Pick-to: 6.2 6.1 5.15 -Change-Id: I7a436e873f6d485028f6759d0e2c6456f07eebdc -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> -(cherry picked from commit 84aba80944a2e1c3058d7a1372e0e66676411884) ---- - src/gui/painting/qpaintengineex.cpp | 8 ++--- - .../gui/painting/qpainter/tst_qpainter.cpp | 31 +++++++++++++++++++ - 2 files changed, 35 insertions(+), 4 deletions(-) - -diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp -index 19e4b23423..9fe510827a 100644 ---- a/src/gui/painting/qpaintengineex.cpp -+++ b/src/gui/painting/qpaintengineex.cpp -@@ -415,18 +415,18 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) - clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); - } - // Check to avoid generating unwieldy amount of dashes that will not be visible anyway -- QRectF extentRect = cpRect & clipRect; -+ qreal pw = pen.widthF() ? pen.widthF() : 1; -+ QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; - qreal extent = qMax(extentRect.width(), extentRect.height()); - qreal patternLength = 0; - const QVector<qreal> pattern = pen.dashPattern(); - const int patternSize = qMin(pattern.size(), 32); - for (int i = 0; i < patternSize; i++) - patternLength += qMax(pattern.at(i), qreal(0)); -- if (pen.widthF()) -- patternLength *= pen.widthF(); -+ patternLength *= pw; - if (qFuzzyIsNull(patternLength)) { - pen.setStyle(Qt::NoPen); -- } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) { -+ } else if (extent / patternLength > 10000) { - // approximate stream of tiny dashes with semi-transparent solid line - pen.setStyle(Qt::SolidLine); - QColor color(pen.color()); -diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp -index 42e98ce363..d7c3f95f1d 100644 ---- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp -+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp -@@ -308,6 +308,7 @@ private slots: - void fillPolygon(); - - void drawImageAtPointF(); -+ void scaledDashes(); - - private: - void fillData(); -@@ -5468,6 +5469,36 @@ void tst_QPainter::drawImageAtPointF() - paint.end(); - } - -+void tst_QPainter::scaledDashes() -+{ -+ // Test that we do not hit the limit-huge-number-of-dashes path -+ QRgb fore = qRgb(0, 0, 0xff); -+ QRgb back = qRgb(0xff, 0xff, 0); -+ QImage image(5, 32, QImage::Format_RGB32); -+ image.fill(back); -+ QPainter p(&image); -+ QPen pen(QColor(fore), 3, Qt::DotLine); -+ p.setPen(pen); -+ p.scale(1, 2); -+ p.drawLine(2, 0, 2, 16); -+ p.end(); -+ -+ bool foreFound = false; -+ bool backFound = false; -+ int i = 0; -+ while (i < 32 && (!foreFound || !backFound)) { -+ QRgb pix = image.pixel(3, i); -+ if (pix == fore) -+ foreFound = true; -+ else if (pix == back) -+ backFound = true; -+ i++; -+ } -+ -+ QVERIFY(foreFound); -+ QVERIFY(backFound); -+} -+ - QTEST_MAIN(tst_QPainter) - - #include "tst_qpainter.moc" --- -2.36.0 +2.49.0 -From ea2cd18f60eb32b71b859ff64b62c2d5d1dc3126 Mon Sep 17 00:00:00 2001 +From 9b96f303586db16e1cb1a49e5b67fab09c21c993 Mon Sep 17 00:00:00 2001 From: Kylie McClain <kylie@somas.is> Date: Sat, 30 Nov 2019 19:24:34 -0500 -Subject: [PATCH 039/146] linux-clang/qplatformdefs: fix building with musl +Subject: [PATCH 015/123] linux-clang/qplatformdefs: fix building with musl libc This is basically a duplicate of the commit which fixed building with @@ -43486,7 +41793,7 @@ Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> 1 file changed, 4 deletions(-) diff --git a/mkspecs/linux-clang/qplatformdefs.h b/mkspecs/linux-clang/qplatformdefs.h -index a818d973f0..34cd665883 100644 +index a818d973f08..34cd6658835 100644 --- a/mkspecs/linux-clang/qplatformdefs.h +++ b/mkspecs/linux-clang/qplatformdefs.h @@ -81,11 +81,7 @@ @@ -43502,12 +41809,12 @@ index a818d973f0..34cd665883 100644 #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf -- -2.36.0 +2.49.0 -From aa29e6963cf2cc1a6238cfea62935b579f5d9e0a Mon Sep 17 00:00:00 2001 +From 07299f8d4a3efd4fd4d550970a12ff84fe40e15a Mon Sep 17 00:00:00 2001 From: Joerg Bornemann <joerg.bornemann@qt.io> Date: Mon, 20 Apr 2020 07:53:54 +0200 -Subject: [PATCH 040/146] Remove checks for glibc < 2 from qplatformdefs.h +Subject: [PATCH 016/123] Remove checks for glibc < 2 from qplatformdefs.h files The last release of glibc 1 was 1995 and can be considered outdated. @@ -43533,7 +41840,7 @@ Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> 6 files changed, 39 deletions(-) diff --git a/mkspecs/common/android/qplatformdefs.h b/mkspecs/common/android/qplatformdefs.h -index f75bc4093b..2bd59410d4 100644 +index f75bc4093b6..2bd59410d4e 100644 --- a/mkspecs/common/android/qplatformdefs.h +++ b/mkspecs/common/android/qplatformdefs.h @@ -144,11 +144,7 @@ @@ -43549,7 +41856,7 @@ index f75bc4093b..2bd59410d4 100644 #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf diff --git a/mkspecs/linux-clang/qplatformdefs.h b/mkspecs/linux-clang/qplatformdefs.h -index 34cd665883..c1ab72fbc6 100644 +index 34cd6658835..c1ab72fbc69 100644 --- a/mkspecs/linux-clang/qplatformdefs.h +++ b/mkspecs/linux-clang/qplatformdefs.h @@ -79,10 +79,6 @@ @@ -43564,7 +41871,7 @@ index 34cd665883..c1ab72fbc6 100644 #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff --git a/mkspecs/linux-g++/qplatformdefs.h b/mkspecs/linux-g++/qplatformdefs.h -index 13523f0702..4d2750d9ec 100644 +index 13523f07023..4d2750d9ec1 100644 --- a/mkspecs/linux-g++/qplatformdefs.h +++ b/mkspecs/linux-g++/qplatformdefs.h @@ -79,14 +79,6 @@ @@ -43583,7 +41890,7 @@ index 13523f0702..4d2750d9ec 100644 #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff --git a/mkspecs/linux-llvm/qplatformdefs.h b/mkspecs/linux-llvm/qplatformdefs.h -index dc750ab1ef..d3cc39b47f 100644 +index dc750ab1ef3..d3cc39b47f6 100644 --- a/mkspecs/linux-llvm/qplatformdefs.h +++ b/mkspecs/linux-llvm/qplatformdefs.h @@ -80,14 +80,6 @@ @@ -43602,7 +41909,7 @@ index dc750ab1ef..d3cc39b47f 100644 #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff --git a/mkspecs/linux-lsb-g++/qplatformdefs.h b/mkspecs/linux-lsb-g++/qplatformdefs.h -index 4c4e53da2a..83baffb3e3 100644 +index 4c4e53da2ac..83baffb3e3d 100644 --- a/mkspecs/linux-lsb-g++/qplatformdefs.h +++ b/mkspecs/linux-lsb-g++/qplatformdefs.h @@ -85,16 +85,9 @@ @@ -43623,7 +41930,7 @@ index 4c4e53da2a..83baffb3e3 100644 # define SIOCGIFBRDADDR 0x8919 #endif diff --git a/mkspecs/lynxos-g++/qplatformdefs.h b/mkspecs/lynxos-g++/qplatformdefs.h -index 4339ea2b23..6007af0055 100644 +index 4339ea2b23f..6007af00552 100644 --- a/mkspecs/lynxos-g++/qplatformdefs.h +++ b/mkspecs/lynxos-g++/qplatformdefs.h @@ -72,14 +72,6 @@ @@ -43642,371 +41949,12 @@ index 4339ea2b23..6007af0055 100644 #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf -- -2.36.0 - -From f67b0d8a60c0a705aac7dcfbf84749178a8cdd99 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Fri, 13 Aug 2021 15:19:55 -0700 -Subject: [PATCH 041/146] MySQL: treat the MYSQL_FIELD as read-only - -The MariaDB-connector-c version 3.2 and MariaDB server version 10.6 -cooperate to avoid re-transferring the query metadata, so the fact that -we were modifying it was causing it to improperly decode the DATETIME -data types into string, as we had asked. We ended up with a 7-byte -string that was actually the date binary-encoded. - -References: - - https://jira.mariadb.org/browse/MDEV-26271 - - https://github.com/MythTV/mythtv/issues/373 - - https://bugs.kde.org/show_bug.cgi?id=440296 - -Fixes: QTBUG-95639 -Change-Id: I4a40ccbd3321467a8429fffd169afdbb26cf29f6 -Reviewed-by: Andy Shaw <andy.shaw@qt.io> -(cherry picked from commit 549ee216fd5bf2b3810e940bcbd4bbd8c64ac73f) -Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> -(cherry picked from commit 94d22e0bcc893448d53b718f4a2732bd13fc21e4) ---- - src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 27 ++++++++++----------- - 1 file changed, 13 insertions(+), 14 deletions(-) - -diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -index 4b9b396946..ceee4a3a59 100644 ---- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -@@ -223,7 +223,7 @@ public: - struct QMyField - { - char *outField = nullptr; -- MYSQL_FIELD *myField = nullptr; -+ const MYSQL_FIELD *myField = nullptr; - QMetaType::Type type = QMetaType::UnknownType; - my_bool nullIndicator = false; - ulong bufLength = 0ul; -@@ -361,7 +361,7 @@ static bool qIsInteger(int t) - void QMYSQLResultPrivate::bindBlobs() - { - int i; -- MYSQL_FIELD *fieldInfo; -+ const MYSQL_FIELD *fieldInfo; - MYSQL_BIND *bind; - - for(i = 0; i < fields.count(); ++i) { -@@ -392,35 +392,34 @@ bool QMYSQLResultPrivate::bindInValues() - inBinds = new MYSQL_BIND[fields.size()]; - memset(inBinds, 0, fields.size() * sizeof(MYSQL_BIND)); - -- MYSQL_FIELD *fieldInfo; -+ const MYSQL_FIELD *fieldInfo; - - while((fieldInfo = mysql_fetch_field(meta))) { -+ bind = &inBinds[i]; -+ - QMyField &f = fields[i]; - f.myField = fieldInfo; -- -+ bind->buffer_length = f.bufLength = fieldInfo->length + 1; -+ bind->buffer_type = fieldInfo->type; - f.type = qDecodeMYSQLType(fieldInfo->type, fieldInfo->flags); - if (qIsBlob(fieldInfo->type)) { - // the size of a blob-field is available as soon as we call - // mysql_stmt_store_result() - // after mysql_stmt_exec() in QMYSQLResult::exec() -- fieldInfo->length = 0; -+ bind->buffer_length = f.bufLength = 0; - hasBlobs = true; - } else if (qIsInteger(f.type)) { -- fieldInfo->length = 8; -+ bind->buffer_length = f.bufLength = 8; - } else { -- fieldInfo->type = MYSQL_TYPE_STRING; -+ bind->buffer_type = MYSQL_TYPE_STRING; - } -- bind = &inBinds[i]; -- field = new char[fieldInfo->length + 1]; -- memset(field, 0, fieldInfo->length + 1); - -- bind->buffer_type = fieldInfo->type; -- bind->buffer = field; -- bind->buffer_length = f.bufLength = fieldInfo->length + 1; - bind->is_null = &f.nullIndicator; - bind->length = &f.bufLength; - bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0; -- f.outField=field; -+ -+ char *field = new char[bind->buffer_length + 1]{}; -+ bind->buffer = f.outField = field; - - ++i; - } --- -2.36.0 - -From 7a0e9154fef4fa417a6b00b1dae130648e5ee4d7 Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Thu, 19 Aug 2021 15:07:13 +0200 -Subject: [PATCH 042/146] Revert "QString::lastIndexOf: fix off-by-one for zero - length matches" - -This reverts commit 3a273ac47f20e82a1f2f63411b210025ca0f4495. - -See QTBUG-94215 - -6cee204d56205e250b0675c9c6d4dd8a2367f3c4 for qtbase/dev changes the -behaviour even further, I'm pretty sure we don't want that in Qt 5.15.x, -see discussion in https://codereview.qt-project.org/c/qt/qtbase/+/365179. - -Change-Id: I663d74e0d44ebf46291fe0e8a7dc609be82eedc6 ---- - src/corelib/text/qstring.cpp | 4 ++-- - tests/auto/corelib/text/qstring/tst_qstring.cpp | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp -index 3779b90d6f..4be5c6d357 100644 ---- a/src/corelib/text/qstring.cpp -+++ b/src/corelib/text/qstring.cpp -@@ -4562,13 +4562,13 @@ int QString::lastIndexOf(const QRegularExpression &re, int from, QRegularExpress - return -1; - } - -- int endpos = (from < 0) ? (size() + from + 1) : (from); -+ int endpos = (from < 0) ? (size() + from + 1) : (from + 1); - QRegularExpressionMatchIterator iterator = re.globalMatch(*this); - int lastIndex = -1; - while (iterator.hasNext()) { - QRegularExpressionMatch match = iterator.next(); - int start = match.capturedStart(); -- if (start <= endpos) { -+ if (start < endpos) { - lastIndex = start; - if (rmatch) - *rmatch = std::move(match); -diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp -index 8f53824050..4c4a8f0416 100644 ---- a/tests/auto/corelib/text/qstring/tst_qstring.cpp -+++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp -@@ -1674,7 +1674,7 @@ void tst_QString::lastIndexOf() - QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from, cs), expected); - QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from, cs), expected); - -- if (from >= -1 && from < haystack.size() && needle.size() > 0) { -+ if (from >= -1 && from < haystack.size()) { - // unfortunately, QString and QRegExp don't have the same out of bound semantics - // I think QString is wrong -- See file log for contact information. - { --- -2.36.0 - -From b68fc2a0048504ad47c8d8c521ba314e5ccbef54 Mon Sep 17 00:00:00 2001 -From: Volker Krause <vkrause@kde.org> -Date: Sun, 12 Sep 2021 10:02:09 +0200 -Subject: [PATCH 043/146] Fix access to content: URLs with transient read/write - permissions - -The current code assumed that the lack of persistent permissions means -we cannot access the file at all. That however isn't the case for -content: URLs we get e.g. via Intents, those are accessible perfectly -fine via QFile, we just don't have (and can't obtain) persistent -permissions for them. - -This is done by continuing in the case of not having persistent -permissions and checking for SecurityExceptions that are thrown when -accessing content: URLs we really have no permission for. - -Pick-to: 6.2 5.15 -Change-Id: I39115a7730d717eb9517e4f1c1a57e40988001a5 -Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> -(cherry picked from commit ec497d5e6587ac247a326fb9a0a11c37bb197786) ---- - .../org/qtproject/qt5/android/QtNative.java | 38 ++++++++++--------- - 1 file changed, 21 insertions(+), 17 deletions(-) - -diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java -index dbd356f7a5..09c8af3dad 100644 ---- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java -+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java -@@ -114,6 +114,7 @@ public class QtNative - public static QtThread m_qtThread = new QtThread(); - private static HashMap<String, Uri> m_cachedUris = new HashMap<String, Uri>(); - private static ArrayList<String> m_knownDirs = new ArrayList<String>(); -+ private static final String NoPermissionErrorMessage = "No permissions to open Uri"; - - private static final Runnable runPendingCppRunnablesRunnable = new Runnable() { - @Override -@@ -191,11 +192,10 @@ public class QtNative - return iterUri; - } - -- // Android 6 and earlier could still manage to open the file so we can return the -- // parsed uri here -- if (Build.VERSION.SDK_INT < 24) -- return parsedUri; -- return null; -+ // if we only have transient permissions on uri all the above will fail, -+ // but we will be able to read the file anyway, so continue with uri here anyway -+ // and check for SecurityExceptions later -+ return parsedUri; - } catch (SecurityException e) { - e.printStackTrace(); - return null; -@@ -242,7 +242,7 @@ public class QtNative - int error = -1; - - if (uri == null) { -- Log.e(QtTAG, "openFdForContentUrl(): No permissions to open Uri"); -+ Log.e(QtTAG, "openFdForContentUrl(): " + NoPermissionErrorMessage); - return error; - } - -@@ -252,12 +252,13 @@ public class QtNative - return fdDesc.detachFd(); - } catch (FileNotFoundException e) { - e.printStackTrace(); -- return error; - } catch (IllegalArgumentException e) { - Log.e(QtTAG, "openFdForContentUrl(): Invalid Uri"); - e.printStackTrace(); -- return error; -+ } catch (SecurityException e) { -+ Log.e(QtTAG, NoPermissionErrorMessage); - } -+ return error; - } - - public static long getSize(Context context, String contentUrl) -@@ -268,7 +269,7 @@ public class QtNative - uri = getUriWithValidPermission(context, contentUrl, "r"); - - if (uri == null) { -- Log.e(QtTAG, "getSize(): No permissions to open Uri"); -+ Log.e(QtTAG, NoPermissionErrorMessage); - return size; - } else if (!m_cachedUris.containsKey(contentUrl)) { - m_cachedUris.put(contentUrl, uri); -@@ -286,12 +287,13 @@ public class QtNative - } catch (IllegalArgumentException e) { - Log.e(QtTAG, "getSize(): Invalid Uri"); - e.printStackTrace(); -- return size; - } catch (UnsupportedOperationException e) { - Log.e(QtTAG, "getSize(): Unsupported operation for given Uri"); - e.printStackTrace(); -- return size; -+ } catch (SecurityException e) { -+ Log.e(QtTAG, NoPermissionErrorMessage); - } -+ return size; - } - - public static boolean checkFileExists(Context context, String contentUrl) -@@ -301,7 +303,7 @@ public class QtNative - if (uri == null) - uri = getUriWithValidPermission(context, contentUrl, "r"); - if (uri == null) { -- Log.e(QtTAG, "checkFileExists(): No permissions to open Uri"); -+ Log.e(QtTAG, NoPermissionErrorMessage); - return exists; - } else { - if (!m_cachedUris.containsKey(contentUrl)) -@@ -319,12 +321,13 @@ public class QtNative - } catch (IllegalArgumentException e) { - Log.e(QtTAG, "checkFileExists(): Invalid Uri"); - e.printStackTrace(); -- return exists; - } catch (UnsupportedOperationException e) { - Log.e(QtTAG, "checkFileExists(): Unsupported operation for given Uri"); - e.printStackTrace(); -- return false; -+ } catch (SecurityException e) { -+ Log.e(QtTAG, NoPermissionErrorMessage); - } -+ return exists; - } - - public static boolean checkIfWritable(Context context, String contentUrl) -@@ -342,7 +345,7 @@ public class QtNative - uri = getUriWithValidPermission(context, contentUrl, "r"); - } - if (uri == null) { -- Log.e(QtTAG, "isDir(): No permissions to open Uri"); -+ Log.e(QtTAG, NoPermissionErrorMessage); - return isDir; - } else { - if (!m_cachedUris.containsKey(contentUrl)) -@@ -372,12 +375,13 @@ public class QtNative - } catch (IllegalArgumentException e) { - Log.e(QtTAG, "checkIfDir(): Invalid Uri"); - e.printStackTrace(); -- return false; - } catch (UnsupportedOperationException e) { - Log.e(QtTAG, "checkIfDir(): Unsupported operation for given Uri"); - e.printStackTrace(); -- return false; -+ } catch (SecurityException e) { -+ Log.e(QtTAG, NoPermissionErrorMessage); - } -+ return false; - } - public static String[] listContentsFromTreeUri(Context context, String contentUrl) - { --- -2.36.0 - -From 020a30b696c8241671ffb1a3301a5bc3d23141ea Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Wed, 8 Sep 2021 09:52:50 +0200 -Subject: [PATCH 044/146] QTextOdfWriter: fix exporting pixmaps to ODT -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The QVariant returned by resource() can contain either a QPixmap -or a QImage. The code here is now more similar to the one in -qtextimagehandler.cpp. - -Also, the quality is 0 when not set, in which case we want a nice PNG -rather than a very very low quality JPG with just a few large blocks of -same-color pixels. - -Pick-to: 5.15 6.2 -Change-Id: I49db542e2234c8068f85a636a81a7d8cdb7b5876 -Reviewed-by: André Hartmann <aha_1980@gmx.de> -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit b67f887a048755bbab24df721636f9c294acb8b0) ---- - src/gui/text/qtextodfwriter.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp -index 155ec43c50..b3ec43702c 100644 ---- a/src/gui/text/qtextodfwriter.cpp -+++ b/src/gui/text/qtextodfwriter.cpp -@@ -455,7 +455,7 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF - name.prepend(QLatin1String("qrc")); - QUrl url = QUrl(name); - const QVariant variant = m_document->resource(QTextDocument::ImageResource, url); -- if (variant.userType() == QMetaType::QImage) { -+ if (variant.userType() == QMetaType::QPixmap || variant.userType() == QMetaType::QImage) { - image = qvariant_cast<QImage>(variant); - } else if (variant.userType() == QMetaType::QByteArray) { - data = variant.toByteArray(); -@@ -476,7 +476,7 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF - QBuffer imageBytes; - - int imgQuality = imageFormat.quality(); -- if (imgQuality >= 100 || imgQuality < 0 || image.hasAlphaChannel()) { -+ if (imgQuality >= 100 || imgQuality <= 0 || image.hasAlphaChannel()) { - QImageWriter imageWriter(&imageBytes, "png"); - imageWriter.write(image); - --- -2.36.0 +2.49.0 -From a878335f6f2117e0098180e24797e9fb19955355 Mon Sep 17 00:00:00 2001 +From 763f2e1a7db7f9e571e04de437c57f3b59d1453b Mon Sep 17 00:00:00 2001 From: Laszlo Agocs <laszlo.agocs@qt.io> Date: Mon, 20 Sep 2021 11:16:09 +0200 -Subject: [PATCH 045/146] Cater for upstream changes in eglplatform.h +Subject: [PATCH 017/123] Cater for upstream changes in eglplatform.h EGL_NO_X11 has been replaced with USE_X11, thus breaking all existing code out there, including Qt: @@ -44025,7 +41973,7 @@ Reviewed-by: Andy Nichols <andy.nichols@qt.io> 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gui/configure.json b/src/gui/configure.json -index 1f08795c57..12c95742d2 100644 +index ed6e419f490..1f0e0534a50 100644 --- a/src/gui/configure.json +++ b/src/gui/configure.json @@ -834,7 +834,8 @@ @@ -44039,7 +41987,7 @@ index 1f08795c57..12c95742d2 100644 "include": [ "EGL/egl.h", "X11/Xlib.h" ], "main": [ diff --git a/src/platformsupport/eglconvenience/qt_egl_p.h b/src/platformsupport/eglconvenience/qt_egl_p.h -index bf37d07fd8..dbd42fb799 100644 +index bf37d07fd80..dbd42fb7991 100644 --- a/src/platformsupport/eglconvenience/qt_egl_p.h +++ b/src/platformsupport/eglconvenience/qt_egl_p.h @@ -61,7 +61,11 @@ @@ -44056,89 +42004,12 @@ index bf37d07fd8..dbd42fb799 100644 #ifdef QT_EGL_WAYLAND # define WAYLAND // NV -- -2.36.0 - -From 1c2ad3f2ce30faffc6e6c5b7ffe8d431460783d9 Mon Sep 17 00:00:00 2001 -From: Richard Moe Gustavsen <richard.gustavsen@qt.io> -Date: Mon, 13 Sep 2021 16:41:08 +0200 -Subject: [PATCH 046/146] QPlatformWindow: fix isAncestorOf not breaking - recursion -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current implementation got stuck always asking for -the parent of the same child - -This patch will make sure we actually walk up the -parent chain. - -Pick-to: 6.2 6.2.0 6.1 5.15 -Change-Id: I9f67f6305e0143526f53952a563d496e760ac2e7 -Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> -(cherry picked from commit f06f39779c11cabc9b4fc281f38c80edb65bd86a) ---- - src/gui/kernel/qplatformwindow.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp -index e75229324c..7207ff4d7e 100644 ---- a/src/gui/kernel/qplatformwindow.cpp -+++ b/src/gui/kernel/qplatformwindow.cpp -@@ -229,7 +229,7 @@ bool QPlatformWindow::isActive() const - */ - bool QPlatformWindow::isAncestorOf(const QPlatformWindow *child) const - { -- for (const QPlatformWindow *parent = child->parent(); parent; parent = child->parent()) { -+ for (const QPlatformWindow *parent = child->parent(); parent; parent = parent->parent()) { - if (parent == this) - return true; - } --- -2.36.0 - -From bbe539686b30dce4b883f2548447b8ae05921c0f Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@qt.io> -Date: Wed, 9 Jun 2021 15:51:54 +0200 -Subject: [PATCH 047/146] Fix reading gamma from PNGs without ICC profile - -The decoding of PNG_INFO_gAMA to QColorSpace was incorrect, the PNG -gamma is the inverse of the gamma value we use. We revert it -everywhere else, just not here. - -BUG: 420357 -Pick-to: 6.2 5.15 -Change-Id: Ic0ae1963b2dde3004cac8a6430ddaf99e7096915 -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit de2c3ccd49cb89e0c6912da3b03705a36ef03946) ---- - src/gui/image/qpnghandler.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) +2.49.0 -diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp -index bbf44a484f..2811d2e049 100644 ---- a/src/gui/image/qpnghandler.cpp -+++ b/src/gui/image/qpnghandler.cpp -@@ -649,10 +649,10 @@ bool QPngHandlerPrivate::readPngHeader() - } - if (primaries.areValid()) { - colorSpace = QColorSpace(primaries.whitePoint, primaries.redPoint, primaries.greenPoint, primaries.bluePoint, -- QColorSpace::TransferFunction::Gamma, fileGamma); -+ QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma); - } else { - colorSpace = QColorSpace(QColorSpace::Primaries::SRgb, -- QColorSpace::TransferFunction::Gamma, fileGamma); -+ QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma); - } - colorSpaceState = GammaChrm; - } --- -2.36.0 - -From 1ccd7cdccb0dc7273e2023a5147f5618cfb30198 Mon Sep 17 00:00:00 2001 +From ec8658f00659e913e0055cb1c1733404ee209185 Mon Sep 17 00:00:00 2001 From: JiDe Zhang <zhangjide@uniontech.com> Date: Tue, 28 Sep 2021 17:46:16 +0800 -Subject: [PATCH 048/146] Fix memory leak +Subject: [PATCH 018/123] Fix memory leak Destroy the QDBusPendingCallWatcher object when received the QDBusPendingCallWatcher::finished signal later. @@ -44150,287 +42021,20 @@ Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 71ba53e3a7b63da1ac8755dba8b9311774d46103) --- - .../xdgdesktopportal/qxdgdesktopportalfiledialog.cpp | 1 + - .../platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp | 1 + - tests/manual/rhi/cubemap_render/buildshader.bat | 0 - 3 files changed, 2 insertions(+) + tests/manual/rhi/cubemap_render/buildshader.bat | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 tests/manual/rhi/cubemap_render/buildshader.bat -diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp -index 0048bbc1e6..81b63a67fd 100644 ---- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp -+++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp -@@ -302,6 +302,7 @@ void QXdgDesktopPortalFileDialog::openPortal() - this, - SLOT(gotResponse(uint,QVariantMap))); - } -+ watcher->deleteLater(); - }); - } - -diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp -index fb324afbd8..2fc3167fd5 100644 ---- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp -+++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp -@@ -111,6 +111,7 @@ QXdgDesktopPortalTheme::QXdgDesktopPortalTheme() - if (reply.isValid()) { - d->fileChooserPortalVersion = reply.value().toUInt(); - } -+ watcher->deleteLater(); - }); - } - diff --git a/tests/manual/rhi/cubemap_render/buildshader.bat b/tests/manual/rhi/cubemap_render/buildshader.bat old mode 100755 new mode 100644 -- -2.36.0 - -From f030c8995f2e4bee3941859c13447228416367cc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io> -Date: Tue, 8 Jun 2021 13:39:26 +0200 -Subject: [PATCH 049/146] qmake: Switch to using Xcode's new build system - -Now that inputs (81152194) and outputs (3f0858ed) are explicitly set for -the preprocess stage we can enable the new build system. - -Using the legacy build system will produce a build error in Xcode 13, -but the build will succeed: - - error: The Legacy Build System will be removed in a future release. - You can configure the selected build system and this deprecation - message in File > Project Settings. - -Fixes: QTBUG-71035 -Change-Id: I108d2103872255d10de2ff5161eef892065da1c4 -Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> -(cherry picked from commit 3d7bdf0d61699cb7fdfcef7fe7b546e3167723b2) -Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> ---- - mkspecs/macx-xcode/WorkspaceSettings.xcsettings | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/mkspecs/macx-xcode/WorkspaceSettings.xcsettings b/mkspecs/macx-xcode/WorkspaceSettings.xcsettings -index a3f43a8b38..08de0be8d3 100644 ---- a/mkspecs/macx-xcode/WorkspaceSettings.xcsettings -+++ b/mkspecs/macx-xcode/WorkspaceSettings.xcsettings -@@ -2,8 +2,6 @@ - <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> - <plist version="1.0"> - <dict> -- <key>BuildSystemType</key> -- <string>Original</string> - <key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key> - <false/> - </dict> --- -2.36.0 - -From c51d0c9ce09fcbd2b1d43ad3cccd989d06eb228b Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Thu, 23 Sep 2021 10:04:42 +0200 -Subject: [PATCH 050/146] PDF generation: disentangle native pen from - transforms -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In the PDF engine, transforms are implented with a global pdf -transform if and only if the current pen is "simple", that is, -renderable by a native pdf pen. For non-simple pens, the painted -objects are transformed by QTransform instead. Hence, the internal -simplePen flag was used to indicate both a pen state and a transform -state. - -This commit splits these two states into separate flags. No behavior -is changed, but it prepares for an improved implementation of cosmetic -pen rendering. - -Pick-to: 6.2 5.15 -Task-number: QTBUG-86094 -Change-Id: If02e1dfc021778e3db7c9ff9a1ed35b3d6cbf3f8 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -Reviewed-by: André de la Rocha <andre.rocha@qt.io> -(cherry picked from commit 2cb42cd849b60e72e2de44ed469c2b743b154b06) ---- - src/gui/painting/qpdf.cpp | 21 ++++++++++++++------- - src/gui/painting/qpdf_p.h | 1 + - 2 files changed, 15 insertions(+), 7 deletions(-) - -diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp -index de9fc13331..d8882d9969 100644 ---- a/src/gui/painting/qpdf.cpp -+++ b/src/gui/painting/qpdf.cpp -@@ -920,7 +920,8 @@ void QPdfEngine::drawPath (const QPainterPath &p) - - if (d->simplePen) { - // draw strokes natively in this case for better output -- *d->currentPage << QPdf::generatePath(p, QTransform(), d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath); -+ *d->currentPage << QPdf::generatePath(p, d->needsTransform ? d->stroker.matrix : QTransform(), -+ d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath); - } else { - if (d->hasBrush) - *d->currentPage << QPdf::generatePath(p, d->stroker.matrix, QPdf::FillPath); -@@ -967,7 +968,7 @@ void QPdfEngine::drawPixmap (const QRectF &rectangle, const QPixmap &pixmap, con - - *d->currentPage - << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(), -- rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix)); -+ rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix)); - if (bitmap) { - // set current pen as d->brush - d->brush = d->pen.brush(); -@@ -1007,7 +1008,7 @@ void QPdfEngine::drawImage(const QRectF &rectangle, const QImage &image, const Q - - *d->currentPage - << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(), -- rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix)); -+ rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix)); - setBrush(); - d->currentPage->streamImage(im.width(), im.height(), object); - *d->currentPage << "Q\n"; -@@ -1056,7 +1057,7 @@ void QPdfEngine::drawTextItem(const QPointF &p, const QTextItem &textItem) - } - - *d->currentPage << "q\n"; -- if(!d->simplePen) -+ if (d->needsTransform) - *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); - - bool hp = d->hasPen; -@@ -1224,8 +1225,13 @@ void QPdfEngine::setupGraphicsState(QPaintEngine::DirtyFlags flags) - - if (flags & DirtyTransform) { - *d->currentPage << "q\n"; -- if (d->simplePen && !d->stroker.matrix.isIdentity()) -- *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); -+ d->needsTransform = false; -+ if (!d->stroker.matrix.isIdentity()) { -+ if (d->simplePen) -+ *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); -+ else -+ d->needsTransform = true; // I.e. page-wide xf not set, local xf needed -+ } - } - if (flags & DirtyBrush) - setBrush(); -@@ -1480,7 +1486,7 @@ int QPdfEngine::metric(QPaintDevice::PaintDeviceMetric metricType) const - - QPdfEnginePrivate::QPdfEnginePrivate() - : clipEnabled(false), allClipped(false), hasPen(true), hasBrush(false), simplePen(false), -- pdfVersion(QPdfEngine::Version_1_4), -+ needsTransform(false), pdfVersion(QPdfEngine::Version_1_4), - outDevice(nullptr), ownsDevice(false), - embedFonts(true), - grayscale(false), -@@ -1539,6 +1545,7 @@ bool QPdfEngine::begin(QPaintDevice *pdev) - d->graphicsState = 0; - d->patternColorSpace = 0; - d->simplePen = false; -+ d->needsTransform = false; - - d->pages.clear(); - d->imageCache.clear(); -diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h -index 4ff540e67b..6964c67d93 100644 ---- a/src/gui/painting/qpdf_p.h -+++ b/src/gui/painting/qpdf_p.h -@@ -271,6 +271,7 @@ public: - bool hasPen; - bool hasBrush; - bool simplePen; -+ bool needsTransform; - qreal opacity; - QPdfEngine::PdfVersion pdfVersion; - --- -2.36.0 +2.49.0 -From 98b7e14e6d7bb8fff5c05bcd00221ba009778971 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Thu, 23 Sep 2021 16:40:27 +0200 -Subject: [PATCH 051/146] Avoid generating large pdf files when using dashed - cosmetic pens -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -There was a bug in the pdf writer for cosmetic pens when they were -drawn using native pdf strokes (QTBUG-68537). The workaround that was -done for that bug was to disable native atroking for such pens, so -they would always be emulated. The drawback of that was that painting -with dashed cosmetic pens would then produce unexpectedly large pdf -files, since it would contain individual strokes for every dash. - -This change fixes the original bug and removes the workaround, -re-enabling native stroking for cosmetic lines. - -Pick-to: 6.2 5.15 -Fixes: QTBUG-86094 -Change-Id: I58d06ad2db81206025ca2de394f072e822c03d47 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com> -Reviewed-by: André de la Rocha <andre.rocha@qt.io> -(cherry picked from commit 6d41b64d45cda12370653300fdc2d2685c450014) ---- - src/gui/painting/qpdf.cpp | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp -index d8882d9969..3066744f1b 100644 ---- a/src/gui/painting/qpdf.cpp -+++ b/src/gui/painting/qpdf.cpp -@@ -856,14 +856,14 @@ void QPdfEngine::drawRects (const QRectF *rects, int rectCount) - if (!d->hasPen && !d->hasBrush) - return; - -- if (d->simplePen || !d->hasPen) { -- // draw strokes natively in this case for better output -- if(!d->simplePen && !d->stroker.matrix.isIdentity()) -+ if ((d->simplePen && !d->needsTransform) || !d->hasPen) { -+ // draw natively in this case for better output -+ if (!d->hasPen && d->needsTransform) // i.e. this is just a fillrect - *d->currentPage << "q\n" << QPdf::generateMatrix(d->stroker.matrix); - for (int i = 0; i < rectCount; ++i) - *d->currentPage << rects[i].x() << rects[i].y() << rects[i].width() << rects[i].height() << "re\n"; - *d->currentPage << (d->hasPen ? (d->hasBrush ? "B\n" : "S\n") : "f\n"); -- if(!d->simplePen && !d->stroker.matrix.isIdentity()) -+ if (!d->hasPen && d->needsTransform) - *d->currentPage << "Q\n"; - } else { - QPainterPath p; -@@ -1136,12 +1136,12 @@ void QPdfEngine::updateState(const QPaintEngineState &state) - d->pen = state.pen(); - } - d->hasPen = d->pen.style() != Qt::NoPen; -+ bool oldCosmetic = d->stroker.cosmeticPen; - d->stroker.setPen(d->pen, state.renderHints()); - QBrush penBrush = d->pen.brush(); -- bool cosmeticPen = qt_pen_is_cosmetic(d->pen, state.renderHints()); - bool oldSimple = d->simplePen; -- d->simplePen = (d->hasPen && !cosmeticPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0); -- if (oldSimple != d->simplePen) -+ d->simplePen = (d->hasPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0); -+ if (oldSimple != d->simplePen || oldCosmetic != d->stroker.cosmeticPen) - flags |= DirtyTransform; - } else if (flags & DirtyHints) { - d->stroker.setPen(d->pen, state.renderHints()); -@@ -1227,7 +1227,7 @@ void QPdfEngine::setupGraphicsState(QPaintEngine::DirtyFlags flags) - *d->currentPage << "q\n"; - d->needsTransform = false; - if (!d->stroker.matrix.isIdentity()) { -- if (d->simplePen) -+ if (d->simplePen && !d->stroker.cosmeticPen) - *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); - else - d->needsTransform = true; // I.e. page-wide xf not set, local xf needed --- -2.36.0 - -From 2fa17915df95b74a31026f7b23e38e131d84dc66 Mon Sep 17 00:00:00 2001 +From a0c4262e10a26c0e67befef4f49db832872f8fce Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <albert.astals.cid@kdab.com> Date: Tue, 28 Sep 2021 17:34:41 +0200 -Subject: [PATCH 052/146] Fix QPainterPath with QFont::SmallCaps +Subject: [PATCH 019/123] Fix QPainterPath with QFont::SmallCaps Previous code was getting the QFontEngine from the font+script instead of from the QTextEngine. @@ -44449,7 +42053,7 @@ Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp -index f9544a3241..d80fafeaf1 100644 +index f9544a32419..d80fafeaf16 100644 --- a/src/gui/painting/qpainterpath.cpp +++ b/src/gui/painting/qpainterpath.cpp @@ -1253,7 +1253,7 @@ void QPainterPath::addText(const QPointF &point, const QFont &f, const QString & @@ -44462,12 +42066,12 @@ index f9544a3241..d80fafeaf1 100644 fe->addOutlineToPath(x, y, glyphs, this, si.analysis.bidiLevel % 2 -- -2.36.0 +2.49.0 -From 75c9181c8a3a43d7a390b3264e9560055df80918 Mon Sep 17 00:00:00 2001 +From cc1d8e45ff63df760e97f96e1c62464d57582f60 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <albert.astals.cid@kdab.com> Date: Tue, 28 Sep 2021 17:00:59 +0200 -Subject: [PATCH 053/146] Respect font stretch if set together with font style +Subject: [PATCH 020/123] Respect font stretch if set together with font style Fixes: QTBUG-77854 Change-Id: I2bf9cea9d5ecd151a9d96bbe93e9477a9159ca1f @@ -44479,10 +42083,10 @@ Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp -index 72dcac6904..08c5ad273a 100644 +index 2011f935a9c..7aa62289483 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp -@@ -966,7 +966,7 @@ QFontEngine *loadSingleEngine(int script, +@@ -983,7 +983,7 @@ QFontEngine *loadSingleEngine(int script, if (style->key.stretch != 0 && request.stretch != 0 && (request.styleName.isEmpty() || request.styleName != style->styleName)) { def.stretch = (request.stretch * 100 + style->key.stretch / 2) / style->key.stretch; @@ -44492,10 +42096,10 @@ index 72dcac6904..08c5ad273a 100644 } diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp -index bbb7276bfb..6f783f6b6c 100644 +index 15e0ecadaa0..b4eca742838 100644 --- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp +++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp -@@ -79,6 +79,8 @@ private slots: +@@ -81,6 +81,8 @@ private slots: void registerOpenTypePreferredNamesSystem(); void registerOpenTypePreferredNamesApplication(); @@ -44504,7 +42108,7 @@ index bbb7276bfb..6f783f6b6c 100644 private: QString m_ledFont; QString m_testFont; -@@ -353,6 +355,28 @@ static QString testString() +@@ -355,6 +357,28 @@ static QString testString() return QStringLiteral("foo bar"); } @@ -44534,12 +42138,12 @@ index bbb7276bfb..6f783f6b6c 100644 { int regularFontId = QFontDatabase::addApplicationFont(m_testFont); -- -2.36.0 +2.49.0 -From 662d271cdac1bda80eb7b077570550bbc2dc07d2 Mon Sep 17 00:00:00 2001 +From adce41d0f6279437ed6aa834b27d097a3460da9f Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland <eirik.aavitsland@qt.io> Date: Fri, 1 Oct 2021 10:30:38 +0200 -Subject: [PATCH 054/146] Support transformations in pattern/texture brushes in +Subject: [PATCH 021/123] Support transformations in pattern/texture brushes in pdf The brush transform was ignored for pattern/texture brushes. Since @@ -44557,7 +42161,7 @@ Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com> 1 file changed, 2 insertions(+) diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp -index 3066744f1b..2c8d3c3b53 100644 +index 3066744f1be..2c8d3c3b53a 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -2760,6 +2760,8 @@ int QPdfEnginePrivate::addBrushPattern(const QTransform &m, bool *specifyColor, @@ -44570,12 +42174,12 @@ index 3066744f1b..2c8d3c3b53 100644 *gStateObject = addConstantAlphaObject(qRound(brush.color().alpha() * opacity), qRound(pen.color().alpha() * opacity)); -- -2.36.0 +2.49.0 -From cd053ec7cef49214ddaa1027f83da21d2ba26800 Mon Sep 17 00:00:00 2001 +From fdb0ccdf90658992d97efb509d39538f36b275ce Mon Sep 17 00:00:00 2001 From: Shawn Rutledge <shawn.rutledge@qt.io> Date: Fri, 4 Dec 2020 10:28:26 +0100 -Subject: [PATCH 055/146] Fix highdpi conversion of QTabletEvent coordinates on +Subject: [PATCH 022/123] Fix highdpi conversion of QTabletEvent coordinates on xcb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -44599,10 +42203,10 @@ Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp -index 27a2526df1..f34485c91f 100644 +index 1ced02f31da..e49edbd34e9 100644 --- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp -@@ -1251,16 +1251,14 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD +@@ -1255,16 +1255,14 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD if (Q_LIKELY(useValuators)) { const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width()); global.setX(value); @@ -44622,12 +42226,12 @@ index 27a2526df1..f34485c91f 100644 break; case QXcbAtom::AbsPressure: -- -2.36.0 +2.49.0 -From 83a3f69840e0d61d8d21ea357a36349f45767fd4 Mon Sep 17 00:00:00 2001 +From 6abd4ef31b1391e609209f9700d54a9506bf9583 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <aacid@kde.org> Date: Tue, 12 Oct 2021 16:27:15 +0200 -Subject: [PATCH 056/146] Revert "Fix highdpi conversion of QTabletEvent +Subject: [PATCH 023/123] Revert "Fix highdpi conversion of QTabletEvent coordinates on xcb" It does not compile @@ -44638,10 +42242,10 @@ This reverts commit 03ad5f3c0ddf8105c76a753a10b52cad05e9e936. 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp -index f34485c91f..27a2526df1 100644 +index e49edbd34e9..1ced02f31da 100644 --- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp -@@ -1251,14 +1251,16 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD +@@ -1255,14 +1255,16 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD if (Q_LIKELY(useValuators)) { const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width()); global.setX(value); @@ -44661,966 +42265,12 @@ index f34485c91f..27a2526df1 100644 break; case QXcbAtom::AbsPressure: -- -2.36.0 - -From 6494de373af53a904c8e48b90290725a939f27d8 Mon Sep 17 00:00:00 2001 -From: Lars Schmertmann <Lars.Schmertmann@governikus.de> -Date: Thu, 14 Sep 2017 12:47:11 +0200 -Subject: [PATCH 057/146] Prefer previously used channels in - QHttpNetworkConnection -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When IPv4 and IPv6 are supported by a server, QHttpNetworkConnection -will start up two connections and pick the network layer of the one -that finish first. In this case the channel with index 1 is used for -IPv6. When IPv6 wins, there is no channel at index 0. This situation -needs to be respected and we should try to use existing channels first -when there is a next request. - -This is especially important when TLS session resumption is used. -Creating a new channel will cause to lose the ephemeralServerKey -used in the first connection. - -Fixes: QTBUG-93295 -Pick-to: 5.15 6.1 -Change-Id: Ic9dc6a24ef793a29c2652ad37bc11120e2e6ceef -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit a120d11cb5506ef0a5535e790f23d49595fb8857) ---- - src/network/access/qhttpnetworkconnection.cpp | 57 ++++++++++++------- - 1 file changed, 38 insertions(+), 19 deletions(-) - -diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp -index 9745f3b322..b918da48c4 100644 ---- a/src/network/access/qhttpnetworkconnection.cpp -+++ b/src/network/access/qhttpnetworkconnection.cpp -@@ -1120,31 +1120,50 @@ void QHttpNetworkConnectionPrivate::_q_startNextRequest() - int normalRequests = queuedRequests - preConnectRequests; - neededOpenChannels = qMax(normalRequests, preConnectRequests); - } -+ -+ if (neededOpenChannels <= 0) -+ return; -+ -+ QQueue<int> channelsToConnect; -+ -+ // use previously used channels first - for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) { -- bool connectChannel = false; -- if (channels[i].socket) { -- if ((channels[i].socket->state() == QAbstractSocket::ConnectingState) -- || (channels[i].socket->state() == QAbstractSocket::HostLookupState) -- || channels[i].pendingEncrypt) // pendingEncrypt == "EncryptingState" -- neededOpenChannels--; -- -- if (neededOpenChannels <= 0) -- break; -- if (!channels[i].reply && !channels[i].isSocketBusy() && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) -- connectChannel = true; -- } else { // not previously used channel -- connectChannel = true; -+ if (!channels[i].socket) -+ continue; -+ -+ if ((channels[i].socket->state() == QAbstractSocket::ConnectingState) -+ || (channels[i].socket->state() == QAbstractSocket::HostLookupState) -+ || channels[i].pendingEncrypt) { // pendingEncrypt == "EncryptingState" -+ neededOpenChannels--; -+ continue; - } - -- if (connectChannel) { -- if (networkLayerState == IPv4) -- channels[i].networkLayerPreference = QAbstractSocket::IPv4Protocol; -- else if (networkLayerState == IPv6) -- channels[i].networkLayerPreference = QAbstractSocket::IPv6Protocol; -- channels[i].ensureConnection(); -+ if (!channels[i].reply && !channels[i].isSocketBusy() -+ && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) { -+ channelsToConnect.enqueue(i); - neededOpenChannels--; - } - } -+ -+ // use other channels -+ for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) { -+ if (channels[i].socket) -+ continue; -+ -+ channelsToConnect.enqueue(i); -+ neededOpenChannels--; -+ } -+ -+ while (!channelsToConnect.isEmpty()) { -+ const int channel = channelsToConnect.dequeue(); -+ -+ if (networkLayerState == IPv4) -+ channels[channel].networkLayerPreference = QAbstractSocket::IPv4Protocol; -+ else if (networkLayerState == IPv6) -+ channels[channel].networkLayerPreference = QAbstractSocket::IPv6Protocol; -+ -+ channels[channel].ensureConnection(); -+ } - } - - --- -2.36.0 - -From dda8492f287fd8fa2c2e011250c46a4f742377d1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> -Date: Wed, 9 Jun 2021 10:41:51 +0200 -Subject: [PATCH 058/146] QHttpSocketEngine: Fix memory leak - -The reply needs to be parented or it's not guaranteed to be deleted - -Pick-to: 6.2 6.1 5.15 -Change-Id: I7cbc31682f80dbbd9fb240fff9e6781cb6ca7b36 -Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> -(cherry picked from commit d8077a0973f362376b69564a730c74e5c9366f8f) ---- - src/network/socket/qhttpsocketengine.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp -index ca7680b71f..6629b7eace 100644 ---- a/src/network/socket/qhttpsocketengine.cpp -+++ b/src/network/socket/qhttpsocketengine.cpp -@@ -645,7 +645,7 @@ void QHttpSocketEngine::slotSocketReadNotification() - d->socket->readAll(); - //We're done with the reply and need to reset it for the next connection - delete d->reply; -- d->reply = new QHttpNetworkReply; -+ d->reply = new QHttpNetworkReply(QUrl(), this); - } - - if (priv->phase == QAuthenticatorPrivate::Done) --- -2.36.0 - -From 9e3ea612249f46dd9878cb84ad5cf045ea1a61ad Mon Sep 17 00:00:00 2001 -From: Tasuku Suzuki <tasuku.suzuki@signal-slot.co.jp> -Date: Wed, 23 Jun 2021 14:11:26 +0900 -Subject: [PATCH 059/146] Doc: bump the OpenSSL minimum supported version to - 1.1.1 - -Pick-to: 5.15 6.1 6.2 -Change-Id: Ibfc8b64be23eb023dafb875f367da98b7c7bb5f6 -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -(cherry picked from commit 418850d55976ca283f1ad92997379df27bb6028a) ---- - src/network/doc/src/ssl.qdoc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/network/doc/src/ssl.qdoc b/src/network/doc/src/ssl.qdoc -index e485a1b393..efe4111cfe 100644 ---- a/src/network/doc/src/ssl.qdoc -+++ b/src/network/doc/src/ssl.qdoc -@@ -36,8 +36,8 @@ - the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} - to perform encryption and protocol handling. - -- From Qt version 5.6 onwards, the officially supported version for OpenSSL -- is 1.0.0 or later. -+ From Qt version 5.15 onwards, the officially supported version for OpenSSL -+ is 1.1.1 or later. - - \annotatedlist ssl - --- -2.36.0 - -From 6345861e5520f6caeb787ecdf98b70fd2143926c Mon Sep 17 00:00:00 2001 -From: Timur Pocheptsov <timur.pocheptsov@qt.io> -Date: Thu, 29 Jul 2021 06:13:53 +0200 -Subject: [PATCH 060/146] tst_QSslCertificate::verify - skip auto-test -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -as a temporary fix for suddenly expired certificates situation (to -be regenerated). - -Pick-to: 6.2 6.1 5.15 -Task-number: QTBUG-95429 -Change-Id: I00ad11cfd8824eeeffa2991dfcda6a7899726953 -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit 8d0e4a2e5c3627e2fd88f14ccc8b349668012685) ---- - tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp -index 115d111974..54137e409b 100644 ---- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp -+++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp -@@ -1128,6 +1128,8 @@ void tst_QSslCertificate::verify() - #if QT_CONFIG(securetransport) - QSKIP("Not implemented in SecureTransport"); - #endif -+ QSKIP("Expired certificates, regenerate first"); -+ - QList<QSslError> errors; - QList<QSslCertificate> toVerify; - --- -2.36.0 - -From f47eec8e44aab02be4676982fc3ef25de1b11cbe Mon Sep 17 00:00:00 2001 -From: Timur Pocheptsov <timur.pocheptsov@qt.io> -Date: Fri, 6 Aug 2021 07:47:06 +0200 -Subject: [PATCH 061/146] tst_QSslCertificate::verify - remove QSKIP -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -And re-generate certificates. - -Fixes: QTBUG-95429 -Pick-to: 6.2 6.1 5.15 5.12 -Change-Id: Id970a0a9315d146d6dd1e66c9cff9b7d75657e2d -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit e7ab17ade170a8fbc5061fffe5334b26cdc54ed3) ---- - tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp -index 54137e409b..445e6a2d98 100644 ---- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp -+++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp -@@ -1128,7 +1128,6 @@ void tst_QSslCertificate::verify() - #if QT_CONFIG(securetransport) - QSKIP("Not implemented in SecureTransport"); - #endif -- QSKIP("Expired certificates, regenerate first"); - - QList<QSslError> errors; - QList<QSslCertificate> toVerify; --- -2.36.0 - -From 18b2d133a060dca15c40d59109aed6c4d6ba41a9 Mon Sep 17 00:00:00 2001 -From: Timur Pocheptsov <timur.pocheptsov@qt.io> -Date: Fri, 6 Aug 2021 17:02:03 +0200 -Subject: [PATCH 062/146] tst_QSslSocket - replace an old certificate -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Helped quite a lot with OpenSSL 3 not accepting some old algorithms. - -Pick-to: 6.2 6.1 5.15 -Task-number: QTBUG-95123 -Change-Id: If4894fa86eba7b002465fa661d436ae6ea751989 -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit 33de5f6502254ffe51960714404b6330dab224d5) ---- - .../network/ssl/qsslsocket/certs/fluke.cert | 105 ++++++------------ - .../network/ssl/qsslsocket/certs/fluke.key | 67 ++++++++--- - 2 files changed, 84 insertions(+), 88 deletions(-) - -diff --git a/tests/auto/network/ssl/qsslsocket/certs/fluke.cert b/tests/auto/network/ssl/qsslsocket/certs/fluke.cert -index 069fa6b341..4cc4d9a5ea 100644 ---- a/tests/auto/network/ssl/qsslsocket/certs/fluke.cert -+++ b/tests/auto/network/ssl/qsslsocket/certs/fluke.cert -@@ -1,75 +1,34 @@ --Certificate: -- Data: -- Version: 3 (0x2) -- Serial Number: 0 (0x0) -- Signature Algorithm: sha1WithRSAEncryption -- Issuer: C=NO, ST=Oslo, L=Nydalen, O=Nokia Corporation and/or its subsidiary(-ies), OU=Development, CN=fluke.troll.no/emailAddress=ahanssen@trolltech.com -- Validity -- Not Before: Dec 4 01:10:32 2007 GMT -- Not After : Apr 21 01:10:32 2035 GMT -- Subject: C=NO, ST=Oslo, O=Nokia Corporation and/or its subsidiary(-ies), OU=Development, CN=fluke.troll.no -- Subject Public Key Info: -- Public Key Algorithm: rsaEncryption -- RSA Public Key: (1024 bit) -- Modulus (1024 bit): -- 00:a7:c8:a0:4a:c4:19:05:1b:66:ba:32:e2:d2:f1: -- 1c:6f:17:82:e4:39:2e:01:51:90:db:04:34:32:11: -- 21:c2:0d:6f:59:d8:53:90:54:3f:83:8f:a9:d3:b3: -- d5:ee:1a:9b:80:ae:c3:25:c9:5e:a5:af:4b:60:05: -- aa:a0:d1:91:01:1f:ca:04:83:e3:58:1c:99:32:45: -- 84:70:72:58:03:98:4a:63:8b:41:f5:08:49:d2:91: -- 02:60:6b:e4:64:fe:dd:a0:aa:74:08:e9:34:4c:91: -- 5f:12:3d:37:4d:54:2c:ad:7f:5b:98:60:36:02:8c: -- 3b:f6:45:f3:27:6a:9b:94:9d -- Exponent: 65537 (0x10001) -- X509v3 extensions: -- X509v3 Basic Constraints: -- CA:FALSE -- Netscape Comment: -- OpenSSL Generated Certificate -- X509v3 Subject Key Identifier: -- 21:85:04:3D:23:01:66:E5:F7:9F:1A:84:24:8A:AF:0A:79:F4:E5:AC -- X509v3 Authority Key Identifier: -- DirName:/C=NO/ST=Oslo/L=Nydalen/O=Nokia Corporation and/or its subsidiary(-ies)/OU=Development/CN=fluke.troll.no/emailAddress=ahanssen@trolltech.com -- serial:8E:A8:B4:E8:91:B7:54:2E -- -- Signature Algorithm: sha1WithRSAEncryption -- 6d:57:5f:d1:05:43:f0:62:05:ec:2a:71:a5:dc:19:08:f2:c4: -- a6:bd:bb:25:d9:ca:89:01:0e:e4:cf:1f:c1:8c:c8:24:18:35: -- 53:59:7b:c0:43:b4:32:e6:98:b2:a6:ef:15:05:0b:48:5f:e1: -- a0:0c:97:a9:a1:77:d8:35:18:30:bc:a9:8f:d3:b7:54:c7:f1: -- a9:9e:5d:e6:19:bf:f6:3c:5b:2b:d8:e4:3e:62:18:88:8b:d3: -- 24:e1:40:9b:0c:e6:29:16:62:ab:ea:05:24:70:36:aa:55:93: -- ef:02:81:1b:23:10:a2:04:eb:56:95:75:fc:f8:94:b1:5d:42: -- c5:3f:36:44:85:5d:3a:2e:90:46:8a:a2:b9:6f:87:ae:0c:15: -- 40:19:31:90:fc:3b:25:bb:ae:f1:66:13:0d:85:90:d9:49:34: -- 8f:f2:5d:f9:7a:db:4d:5d:27:f6:76:9d:35:8c:06:a6:4c:a3: -- b1:b2:b6:6f:1d:d7:a3:00:fd:72:eb:9e:ea:44:a1:af:21:34: -- 7d:c7:42:e2:49:91:19:8b:c0:ad:ba:82:80:a8:71:70:f4:35: -- 31:91:63:84:20:95:e9:60:af:64:8b:cc:ff:3d:8a:76:74:3d: -- c8:55:6d:e4:8e:c3:2b:1c:e8:42:18:ae:9f:e6:6b:9c:34:06: -- ec:6a:f2:c3 - -----BEGIN CERTIFICATE----- --MIIEEzCCAvugAwIBAgIBADANBgkqhkiG9w0BAQUFADCBnDELMAkGA1UEBhMCTk8x --DTALBgNVBAgTBE9zbG8xEDAOBgNVBAcTB055ZGFsZW4xFjAUBgNVBAoTDVRyb2xs --dGVjaCBBU0ExFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5mbHVrZS50 --cm9sbC5ubzElMCMGCSqGSIb3DQEJARYWYWhhbnNzZW5AdHJvbGx0ZWNoLmNvbTAe --Fw0wNzEyMDQwMTEwMzJaFw0zNTA0MjEwMTEwMzJaMGMxCzAJBgNVBAYTAk5PMQ0w --CwYDVQQIEwRPc2xvMRYwFAYDVQQKEw1Ucm9sbHRlY2ggQVNBMRQwEgYDVQQLEwtE --ZXZlbG9wbWVudDEXMBUGA1UEAxMOZmx1a2UudHJvbGwubm8wgZ8wDQYJKoZIhvcN --AQEBBQADgY0AMIGJAoGBAKfIoErEGQUbZroy4tLxHG8XguQ5LgFRkNsENDIRIcIN --b1nYU5BUP4OPqdOz1e4am4CuwyXJXqWvS2AFqqDRkQEfygSD41gcmTJFhHByWAOY --SmOLQfUISdKRAmBr5GT+3aCqdAjpNEyRXxI9N01ULK1/W5hgNgKMO/ZF8ydqm5Sd --AgMBAAGjggEaMIIBFjAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NM --IEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUIYUEPSMBZuX3nxqEJIqv --Cnn05awwgbsGA1UdIwSBszCBsKGBoqSBnzCBnDELMAkGA1UEBhMCTk8xDTALBgNV --BAgTBE9zbG8xEDAOBgNVBAcTB055ZGFsZW4xFjAUBgNVBAoTDVRyb2xsdGVjaCBB --U0ExFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5mbHVrZS50cm9sbC5u --bzElMCMGCSqGSIb3DQEJARYWYWhhbnNzZW5AdHJvbGx0ZWNoLmNvbYIJAI6otOiR --t1QuMA0GCSqGSIb3DQEBBQUAA4IBAQBtV1/RBUPwYgXsKnGl3BkI8sSmvbsl2cqJ --AQ7kzx/BjMgkGDVTWXvAQ7Qy5piypu8VBQtIX+GgDJepoXfYNRgwvKmP07dUx/Gp --nl3mGb/2PFsr2OQ+YhiIi9Mk4UCbDOYpFmKr6gUkcDaqVZPvAoEbIxCiBOtWlXX8 --+JSxXULFPzZEhV06LpBGiqK5b4euDBVAGTGQ/Dslu67xZhMNhZDZSTSP8l35ettN --XSf2dp01jAamTKOxsrZvHdejAP1y657qRKGvITR9x0LiSZEZi8CtuoKAqHFw9DUx --kWOEIJXpYK9ki8z/PYp2dD3IVW3kjsMrHOhCGK6f5mucNAbsavLD -+MIIF6zCCA9OgAwIBAgIUfo9amJtJGWqWE6f+SkAO85zkGr4wDQYJKoZIhvcNAQEL -+BQAwgYMxCzAJBgNVBAYTAk5PMQ0wCwYDVQQIDARPc2xvMQ0wCwYDVQQHDARPc2xv -+MRcwFQYDVQQKDA5UaGUgUXQgQ29tcGFueTEMMAoGA1UECwwDUiZEMRIwEAYDVQQD -+DAlIMiBUZXN0ZXIxGzAZBgkqhkiG9w0BCQEWDG1pbmltaUBxdC5pbzAgFw0yMDEw -+MjYxMjAxMzFaGA8yMTIwMTAwMjEyMDEzMVowgYMxCzAJBgNVBAYTAk5PMQ0wCwYD -+VQQIDARPc2xvMQ0wCwYDVQQHDARPc2xvMRcwFQYDVQQKDA5UaGUgUXQgQ29tcGFu -+eTEMMAoGA1UECwwDUiZEMRIwEAYDVQQDDAlIMiBUZXN0ZXIxGzAZBgkqhkiG9w0B -+CQEWDG1pbmltaUBxdC5pbzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -+AOiUp5+E4blouKH7q+rVNR8NoYX2XkBW+q+rpy1zu5ssRSzbqxAjDx9dkht7Qlnf -+VlDT00JvpOWdeuPon5915edQRsY4Unl6mKH29ra3OtUa1/yCJXsGVJTKCj7k4Bxb -+5mZzb/fTlZntMLdTIBMfUbw62FKir1WjKIcJ9fCoG8JaGeKVO4Rh5p0ezd4UUUId -+r1BXl5Nqdqy2vTMsEDnjOsD3egkv8I2SKN4O6n/C3wWYpMOWYZkGoZiKz7rJs/i/ -+ez7bsV7JlwdzTlhpJzkcOSVFBP6JlEOxTNNxZ1wtKy7PtZGmsSSATq2e6+bw38Ae -+Op0XnzzqcGjtDDofBmT7OFzZWjS9VZS6+DOOe2QHWle1nCHcHyH4ku6IRlsr9xkR -+NAIlOfnvHHxqJUenoeaZ4oQDjCBKS1KXygJO/tL7BLTQVn/xK1EmPvKNnjzWk4tR -+PnibUhhs5635qpOU/YPqFBh1JjVruZbsWcDAhRcew0uxONXOa9E+4lttQ9ySYa1A -+LvWqJuAX7gu2BsBMLyqfm811YnA7CIFMyO+HlqmkLFfv5L/xIRAXR7l26YGO0VwX -+CGjMfz4NVPMMke4nB7qa9NkpXQBQKMms3Qzd5JW0Hy9Ruj5O8GPcFZmV0twjd1uJ -+PD/cAjkWLaXjdNsJ16QWc2nghQRS6HYqKRX6j+CXOxupAgMBAAGjUzBRMB0GA1Ud -+DgQWBBRSCOU58j9NJZkMamt623qyCrhN3TAfBgNVHSMEGDAWgBRSCOU58j9NJZkM -+amt623qyCrhN3TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCq -+q4jxsWeNDv5Nq14hJtF9HB+ZL64zcZtRjJP1YgNs0QppKICmjPOL2nIMGmI/jKrs -+0eGAL/9XXNVHPxm1OPOncvimMMmU6emZfpMdEtTfKP43+Pg9HgKRjLoQp406vGeQ -+8ki/mbBhrItVPgEm3tu2AFA02XTYi+YxCI9kRZLGkM3FbgtOuTLPl0Z9y+kiPc9F -+uCSC03anBEqv+vDSI8+wODymQ/IJ3Jyz1lxIRDfp4qAekmy0jU2c91VOHHEmOmqq -+kqygGFRdwbe99m9yP63r6q0b5K3X2UnJ6bns0hmTwThYwpVPXLU8jdaTddbMukN2 -+/Ef96Tsw8nWOEOPMySHOTIPgwyZRp26b0kA9EmhLwOP401SxXVQCmSRmtwNagmtg -+jJKmZoYBN+//D45ibK8z6Q0oOm9P+Whf/uUXehcRxBxyV3xz7k0wKGQbHj/ddwcy -+IUoIN4lrAlib+lK170kTKN352PDmrpo2gmIzPEsfurKAIMSelDl6H+kih16BtZ8y -+Nz6fh9Soqrg3OSAware8pxV7k51crBMoPLN78KoRV8MFCK4K7Fddq4rRISq6hiXq -+r1nsjoEPuKM9huprmZVZe9t5YcDa2I+wb3IiE3uwpZbAdaLDyQ5n6F/qpsiIkZXn -+gtcF7oqpG5oYrwCcZ53y/ezUgUg7PlSz2XwAGvQtgg== - -----END CERTIFICATE----- -diff --git a/tests/auto/network/ssl/qsslsocket/certs/fluke.key b/tests/auto/network/ssl/qsslsocket/certs/fluke.key -index 9d1664d609..337ce541a6 100644 ---- a/tests/auto/network/ssl/qsslsocket/certs/fluke.key -+++ b/tests/auto/network/ssl/qsslsocket/certs/fluke.key -@@ -1,15 +1,52 @@ -------BEGIN RSA PRIVATE KEY----- --MIICXAIBAAKBgQCnyKBKxBkFG2a6MuLS8RxvF4LkOS4BUZDbBDQyESHCDW9Z2FOQ --VD+Dj6nTs9XuGpuArsMlyV6lr0tgBaqg0ZEBH8oEg+NYHJkyRYRwclgDmEpji0H1 --CEnSkQJga+Rk/t2gqnQI6TRMkV8SPTdNVCytf1uYYDYCjDv2RfMnapuUnQIDAQAB --AoGANFzLkanTeSGNFM0uttBipFT9F4a00dqHz6JnO7zXAT26I5r8sU1pqQBb6uLz --/+Qz5Zwk8RUAQcsMRgJetuPQUb0JZjF6Duv24hNazqXBCu7AZzUenjafwmKC/8ri --KpX3fTwqzfzi//FKGgbXQ80yykSSliDL3kn/drATxsLCgQECQQDXhEFWLJ0vVZ1s --1Ekf+3NITE+DR16X+LQ4W6vyEHAjTbaNWtcTKdAWLA2l6N4WAAPYSi6awm+zMxx4 --VomVTsjdAkEAx0z+e7natLeFcrrq8pbU+wa6SAP1VfhQWKitxL1e7u/QO90NCpxE --oQYKzMkmmpOOFjQwEMAy1dvFMbm4LHlewQJAC/ksDBaUcQHHqjktCtrUb8rVjAyW --A8lscckeB2fEYyG5J6dJVaY4ClNOOs5yMDS2Afk1F6H/xKvtQ/5CzInA/QJATDub --K+BPU8jO9q+gpuIi3VIZdupssVGmCgObVCHLakG4uO04y9IyPhV9lA9tALtoIf4c --VIvv5fWGXBrZ48kZAQJBAJmVCdzQxd9LZI5vxijUCj5EI4e+x5DRqVUvyP8KCZrC --AiNyoDP85T+hBZaSXK3aYGpVwelyj3bvo1GrTNwNWLw= -------END RSA PRIVATE KEY----- -+-----BEGIN PRIVATE KEY----- -+MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDolKefhOG5aLih -++6vq1TUfDaGF9l5AVvqvq6ctc7ubLEUs26sQIw8fXZIbe0JZ31ZQ09NCb6TlnXrj -+6J+fdeXnUEbGOFJ5epih9va2tzrVGtf8giV7BlSUygo+5OAcW+Zmc2/305WZ7TC3 -+UyATH1G8OthSoq9VoyiHCfXwqBvCWhnilTuEYeadHs3eFFFCHa9QV5eTanastr0z -+LBA54zrA93oJL/CNkijeDup/wt8FmKTDlmGZBqGYis+6ybP4v3s+27FeyZcHc05Y -+aSc5HDklRQT+iZRDsUzTcWdcLSsuz7WRprEkgE6tnuvm8N/AHjqdF5886nBo7Qw6 -+HwZk+zhc2Vo0vVWUuvgzjntkB1pXtZwh3B8h+JLuiEZbK/cZETQCJTn57xx8aiVH -+p6HmmeKEA4wgSktSl8oCTv7S+wS00FZ/8StRJj7yjZ481pOLUT54m1IYbOet+aqT -+lP2D6hQYdSY1a7mW7FnAwIUXHsNLsTjVzmvRPuJbbUPckmGtQC71qibgF+4LtgbA -+TC8qn5vNdWJwOwiBTMjvh5appCxX7+S/8SEQF0e5dumBjtFcFwhozH8+DVTzDJHu -+Jwe6mvTZKV0AUCjJrN0M3eSVtB8vUbo+TvBj3BWZldLcI3dbiTw/3AI5Fi2l43Tb -+CdekFnNp4IUEUuh2KikV+o/glzsbqQIDAQABAoICAFw1q6tr5I48vY7DF+rXsuLn -+5ZUWE1IQ6fzB4lr72nJv/9EEGnMgYzt9PpMUsD6vdCpBgS2C0+6RHArFzJtNA+RM -+iHLIG7K7702veyr/xBx/MwiSlMeMv/XpkFxVI6E6skMGG2s3AMXxKvJTy5CpRx+I -+eQFyLG+Ya1X2lgJes/q+/CpAHkOjCOpcLySQC5NZ74q734V7nSdmn+Zs3tYEh+O/ -+eiuwTP/j5b38Te5vVTqDxTciJPmljmXLCwa0N100lWlbcpvw8qbqiTI2Jm3XCbUE -+AzHjW9vmrF3cRS1fXxKFGShw3SRqlkbxjfeWoi8qDPUBS4m8LOr8qG9Wo5Nfon0z -+zLP4bci3zHDvVcaaZrrsUBs/yZbg+Dgka1DmX7ekmeccr2yTdKDFgPupYUyxVbTl -+a9ZLJysjFD7rgBv1ZclHonLp6Vbm+ZoTqvteo4ikAy6L9RtBWJ23XEK34PkP/+c5 -+2vWZaOrnjSeBHbFce8cdJSxqWpP+eSCI5I9XbDrYFIsQ/gqKgtzDKy2ihJ2Y8STL -+yO4hyFPFjxc+Gg4/P2PpmT5CY2ty44M0BWs+JGW96CJPrrplf2lmQUQJj5LZY66X -+Z/4C9L7ZYtKZ+bs5SvU46yWugAvQZX22Xm9xLXWyVXRdx3bj+3M3fDnF9di/zdbh -+CgLx7oWPNrXc7FCajnn9AoIBAQD5FMYwRpw9NWT9WDxQwx+cSI4Icbd88ByTW63S -+LzeRwZA0J9/SfwO+aBRupzc9GkGXCiZcGMw3AGsCtig8yFlw8E5KnzN7KlftDMnM -+9NUxxzlR8VwKyLnZfG7sDTl057ZlUujnqhmt/F8F7dIy7FVO1dE/8nngA+FYTCOG -+UZdGjwyBDlDM0JJdUWGY3xslutcpCDN5mzSTKjy9drMvImAshRawxRF6WBpn7vr2 -+nC6vciqfx1Mzx1vyk0Jm0ilaydDdLMADjt/iL4Nkr0BEs4k+UzQiKDwp8gu7abQ1 -+eBfxd9Iar4htQa2I1Ewl6P01G/q+ZYwgHhJ9RVn4AxQXefILAoIBAQDvCouORdQX -+C8wsyp7MwXlF/3NQeNN5/+B2mhbxrBOf7PmMCXLnkRWcjwJtzypWFqJ0sqai/2+0 -+bqbMcjX5maT8stT2shl3zXe/Ejt2e3TBYpc1tyuses8Kb5BMU8hu6tTd3G2CMXpD -+dT6DVemJZCTtwj9aBNIxSizvlgMolJnCpzhPnlfHSI6E+g3m/LTTo3HwbjMSw/Uq -+irgjOpI2wSBB6LZPSgjvfcYPRyWUk16L4A5uSX0cADnovDFLa5/h0wJvN/OoCSQg -+rLCXG5E18EyL5Wc58BCY1ZvxmjG3lQtgPxYu2Jwc36R/y/JKlxW5suER5ZNpbbD4 -+uOyTt2VxMQ2bAoIBAQC5+MzRFqdo/AjfL5Y5JrbfVTzXCTDa09xCGd16ZU60QTWN -++4ed/r+o1sUKqUcRFB2MzEM/2DQBjQpZB/CbEWvWa1XJWXxypXbowveZU+QqOnmN -+uQvj8WLyA3o+PNF9e9QvauwCrHpn8VpxbtPWuaYoKnUFreFZZQxHhPGxRBIS2JOZ -+eDrT8ZaWnkCkh1AZp5smQ71LOprSlmKrg4jd1GjCVMxQR5N5KXbtyv0OTCZ/UFqK -+2aRBsMPyJgkaBChkZPLRcKwc+/wlQRx1fHQb14DNTApMxoXFO7eOwqmOkpAt9iyl -+SBIwoS0UUI5ab88+bBmXNvKcuFdNuQ4nowTJUn9pAoIBADMNkILBXSvS5DeIyuO2 -+Sp1tkoZUV+5NfPY3sMDK3KIibaW/+t+EOBZo4L7tKQCb8vRzl21mmsfxfgRaPDbj -+3r3tv9g0b4YLxxBy52pFscj/soXRai17SS7UZwA2QK+XzgDYbDcLNC6mIsTQG4Gx -+dsWk3/zs3KuUSQaehmwrWK+fIUK38c1pLK8v7LoxrLkqxlHwZ04RthHw8KTthH7X -+Pnl1J0LF8CSeOyfWLSuPUfkT0GEzptnNHpEbaHfQM6R6eaGhVJPF6AZme4y6YYgg -+m2ihhSt1n0XVEWpHYWjxFy3mK2mz75unFC4LM+NEY2p2zuUQoCw7NjnY3QYrfCnx -+rRMCggEAXeXsMSLFjjyuoL7iKbAxo52HD/P0fBoy58LyRcwfNVr0lvYan4pYEx+o -+KijIh9K16PqXZXKMA9v003B+ulmF8bJ7SddCZ5NGvnFhUTDe4DdTKgp2RuwQ3Bsc -+3skPIDbhVETyOLCtys34USHrq8U/0DlGY3eLRfxw9GnbKxSBGa/KEu/qQLPNUo50 -+7xHZDg7GKeC3kqNJeqKM9rkp0VzIGkEnaD9127LeNDmERDfftxJzFoC/THvUBLfU -+6Sus2ZYwRE8VFvKC30Q45t/c54X3IuhYvAuiCuTmyfE4ruyzyOwKzhUkeeLq1APX -+g0veFbyfzlJ0q8qzD/iffqqIa2ZSmQ== -+-----END PRIVATE KEY----- --- -2.36.0 - -From 32a31e792c9b53a0796b37cbf479be611150601e Mon Sep 17 00:00:00 2001 -From: Jarek Kobus <jaroslaw.kobus@qt.io> -Date: Mon, 11 Oct 2021 14:57:50 +0200 -Subject: [PATCH 063/146] Optimize mime type matching - -Don't count "*", don't search for "[" and for "?" -inside m_pattern on every call to matchFileName(). -Do it once, when constructing the MimeGlobPattern. - -Fix matching the pattern for names without any -wildcard: index of question mark should be -1, not -just different from 0. - -This shortens loading a Qt6 project in Creator -by about 500 ms. - -Change-Id: Ifa40c2cec4aba07a0312ef36877e571a8c8fb151 -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: David Faure <david.faure@kdab.com> -Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> -(cherry picked from commit 3c747aafa44ac2d0b314a002d2672227bf6513e5) ---- - src/corelib/mimetypes/qmimeglobpattern.cpp | 108 ++++++++++++++------- - src/corelib/mimetypes/qmimeglobpattern_p.h | 19 +++- - src/corelib/mimetypes/qmimeprovider.cpp | 1 - - 3 files changed, 92 insertions(+), 36 deletions(-) - -diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp -index 943eb84b94..3ab5bd4cb4 100644 ---- a/src/corelib/mimetypes/qmimeglobpattern.cpp -+++ b/src/corelib/mimetypes/qmimeglobpattern.cpp -@@ -91,6 +91,40 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q - } - } - -+QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString &pattern) const -+{ -+ const int patternLength = pattern.length(); -+ if (!patternLength) -+ return OtherPattern; -+ -+ const bool starCount = pattern.count(QLatin1Char('*')) == 1; -+ const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1; -+ const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1; -+ -+ if (!hasSquareBracket && !hasQuestionMark) { -+ if (starCount == 1) { -+ // Patterns like "*~", "*.extension" -+ if (pattern.at(0) == QLatin1Char('*')) -+ return SuffixPattern; -+ // Patterns like "README*" (well this is currently the only one like that...) -+ if (pattern.at(patternLength - 1) == QLatin1Char('*')) -+ return PrefixPattern; -+ } -+ // Names without any wildcards like "README" -+ if (starCount == 0) -+ return LiteralPattern; -+ } -+ -+ if (pattern == QLatin1String("[0-9][0-9][0-9].vdr")) -+ return VdrPattern; -+ -+ if (pattern == QLatin1String("*.anim[1-9j]")) -+ return AnimPattern; -+ -+ return OtherPattern; -+} -+ -+ - /*! - \internal - \class QMimeGlobPattern -@@ -100,58 +134,66 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q - \sa QMimeType, QMimeDatabase, QMimeMagicRuleMatcher, QMimeMagicRule - */ - --bool QMimeGlobPattern::matchFileName(const QString &inputFilename) const -+bool QMimeGlobPattern::matchFileName(const QString &inputFileName) const - { - // "Applications MUST match globs case-insensitively, except when the case-sensitive - // attribute is set to true." - // The constructor takes care of putting case-insensitive patterns in lowercase. -- const QString filename = m_caseSensitivity == Qt::CaseInsensitive ? inputFilename.toLower() : inputFilename; -+ const QString fileName = m_caseSensitivity == Qt::CaseInsensitive -+ ? inputFileName.toLower() : inputFileName; - -- const int pattern_len = m_pattern.length(); -- if (!pattern_len) -+ const int patternLength = m_pattern.length(); -+ if (!patternLength) - return false; -- const int len = filename.length(); -- -- const int starCount = m_pattern.count(QLatin1Char('*')); -+ const int fileNameLength = fileName.length(); - -- // Patterns like "*~", "*.extension" -- if (m_pattern[0] == QLatin1Char('*') && m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 1) -- { -- if (len + 1 < pattern_len) return false; -+ switch (m_patternType) { -+ case SuffixPattern: { -+ if (fileNameLength + 1 < patternLength) -+ return false; - -- const QChar *c1 = m_pattern.unicode() + pattern_len - 1; -- const QChar *c2 = filename.unicode() + len - 1; -+ const QChar *c1 = m_pattern.unicode() + patternLength - 1; -+ const QChar *c2 = fileName.unicode() + fileNameLength - 1; - int cnt = 1; -- while (cnt < pattern_len && *c1-- == *c2--) -+ while (cnt < patternLength && *c1-- == *c2--) - ++cnt; -- return cnt == pattern_len; -+ return cnt == patternLength; - } -- -- // Patterns like "README*" (well this is currently the only one like that...) -- if (starCount == 1 && m_pattern.at(pattern_len - 1) == QLatin1Char('*')) { -- if (len + 1 < pattern_len) return false; -- if (m_pattern.at(0) == QLatin1Char('*')) -- return filename.indexOf(m_pattern.midRef(1, pattern_len - 2)) != -1; -+ case PrefixPattern: { -+ if (fileNameLength + 1 < patternLength) -+ return false; - - const QChar *c1 = m_pattern.unicode(); -- const QChar *c2 = filename.unicode(); -+ const QChar *c2 = fileName.unicode(); - int cnt = 1; -- while (cnt < pattern_len && *c1++ == *c2++) -+ while (cnt < patternLength && *c1++ == *c2++) - ++cnt; -- return cnt == pattern_len; -+ return cnt == patternLength; - } -- -- // Names without any wildcards like "README" -- if (m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 0 && m_pattern.indexOf(QLatin1Char('?'))) -- return (m_pattern == filename); -- -- // Other (quite rare) patterns, like "*.anim[1-9j]": use slow but correct method -+ case LiteralPattern: -+ return (m_pattern == fileName); -+ case VdrPattern: // "[0-9][0-9][0-9].vdr" case -+ return fileNameLength == 7 -+ && fileName.at(0).isDigit() && fileName.at(1).isDigit() && fileName.at(2).isDigit() -+ && QStringView{fileName}.mid(3, 4) == QLatin1String(".vdr"); -+ case AnimPattern: { // "*.anim[1-9j]" case -+ if (fileNameLength < 6) -+ return false; -+ const QChar lastChar = fileName.at(fileNameLength - 1); -+ const bool lastCharOK = (lastChar.isDigit() && lastChar != QLatin1Char('0')) -+ || lastChar == QLatin1Char('j'); -+ return lastCharOK && QStringView{fileName}.mid(fileNameLength - 6, 5) == QLatin1String(".anim"); -+ } -+ case OtherPattern: -+ // Other fallback patterns: slow but correct method - #if QT_CONFIG(regularexpression) -- QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern)); -- return rx.match(filename).hasMatch(); -+ QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern)); -+ return rx.match(fileName).hasMatch(); - #else -- return false; -+ return false; - #endif -+ } -+ return false; - } - - static bool isSimplePattern(const QString &pattern) -diff --git a/src/corelib/mimetypes/qmimeglobpattern_p.h b/src/corelib/mimetypes/qmimeglobpattern_p.h -index 49f145e8db..88d032c787 100644 ---- a/src/corelib/mimetypes/qmimeglobpattern_p.h -+++ b/src/corelib/mimetypes/qmimeglobpattern_p.h -@@ -80,7 +80,10 @@ public: - - explicit QMimeGlobPattern(const QString &thePattern, const QString &theMimeType, unsigned theWeight = DefaultWeight, Qt::CaseSensitivity s = Qt::CaseInsensitive) : - m_pattern(s == Qt::CaseInsensitive ? thePattern.toLower() : thePattern), -- m_mimeType(theMimeType), m_weight(theWeight), m_caseSensitivity(s) -+ m_mimeType(theMimeType), -+ m_weight(theWeight), -+ m_caseSensitivity(s), -+ m_patternType(detectPatternType(m_pattern)) - { - } - -@@ -90,9 +93,10 @@ public: - qSwap(m_mimeType, other.m_mimeType); - qSwap(m_weight, other.m_weight); - qSwap(m_caseSensitivity, other.m_caseSensitivity); -+ qSwap(m_patternType, other.m_patternType); - } - -- bool matchFileName(const QString &filename) const; -+ bool matchFileName(const QString &inputFileName) const; - - inline const QString &pattern() const { return m_pattern; } - inline unsigned weight() const { return m_weight; } -@@ -100,10 +104,21 @@ public: - inline bool isCaseSensitive() const { return m_caseSensitivity == Qt::CaseSensitive; } - - private: -+ enum PatternType { -+ SuffixPattern, -+ PrefixPattern, -+ LiteralPattern, -+ VdrPattern, // special handling for "[0-9][0-9][0-9].vdr" pattern -+ AnimPattern, // special handling for "*.anim[1-9j]" pattern -+ OtherPattern -+ }; -+ PatternType detectPatternType(const QString &pattern) const; -+ - QString m_pattern; - QString m_mimeType; - int m_weight; - Qt::CaseSensitivity m_caseSensitivity; -+ PatternType m_patternType; - }; - Q_DECLARE_SHARED(QMimeGlobPattern) - -diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp -index 80616cccad..4642d0f2d0 100644 ---- a/src/corelib/mimetypes/qmimeprovider.cpp -+++ b/src/corelib/mimetypes/qmimeprovider.cpp -@@ -275,7 +275,6 @@ void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile - //qDebug() << pattern << mimeType << weight << caseSensitive; - QMimeGlobPattern glob(pattern, QString() /*unused*/, weight, qtCaseSensitive); - -- // TODO: this could be done faster for literals where a simple == would do. - if (glob.matchFileName(fileName)) - result.addMatch(QLatin1String(mimeType), weight, pattern); - } --- -2.36.0 - -From 0822f29ea5ea2b8cdf0e526fa1194a320a8525a2 Mon Sep 17 00:00:00 2001 -From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -Date: Wed, 10 Nov 2021 15:18:18 +0100 -Subject: [PATCH 064/146] Fix developer build - -Some incomplete refactoring from upstream left an unused variable -which makes a -developer-build fail (as it enables -Werror). - -Remove the unused variable and fix the build. - -Change-Id: I2c5857ba9d80ba225d1a4f42414888564ebfe4a4 ---- - src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -index ceee4a3a59..6bc9d46755 100644 ---- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp -@@ -379,7 +379,6 @@ void QMYSQLResultPrivate::bindBlobs() - bool QMYSQLResultPrivate::bindInValues() - { - MYSQL_BIND *bind; -- char *field; - int i = 0; - - if (!meta) --- -2.36.0 +2.49.0 -From b43c61f03e9a4b82d5c8504c2156235f954a2eba Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Tue, 16 Nov 2021 07:41:20 +0100 -Subject: [PATCH 065/146] Reject truncated and corrupt ascii pnm images - -In contrast to the binary decoder code, the ascii decoder would not -abort and fail on premature end of file. - -Pick-to: 6.2 6.2.2 5.15 5.12 5.12.12 -Change-Id: If27bce0afa8d1de6c4dbeb2bc0e623c1dcc2f1e0 -Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit 997c052db9e2bef47cf8217c1537a99c2f086858) ---- - src/gui/image/qppmhandler.cpp | 49 +++++++++++++++++++---------------- - 1 file changed, 27 insertions(+), 22 deletions(-) - -diff --git a/src/gui/image/qppmhandler.cpp b/src/gui/image/qppmhandler.cpp -index 728259ba9e..b03458bdd9 100644 ---- a/src/gui/image/qppmhandler.cpp -+++ b/src/gui/image/qppmhandler.cpp -@@ -63,7 +63,7 @@ static void discard_pbm_line(QIODevice *d) - } while (res > 0 && buf[res-1] != '\n'); - } - --static int read_pbm_int(QIODevice *d) -+static int read_pbm_int(QIODevice *d, bool *ok) - { - char c; - int val = -1; -@@ -97,6 +97,8 @@ static int read_pbm_int(QIODevice *d) - else - break; - } -+ if (val < 0) -+ *ok = false; - return hasOverflow ? -1 : val; - } - -@@ -113,16 +115,17 @@ static bool read_pbm_header(QIODevice *device, char& type, int& w, int& h, int& - if (type < '1' || type > '6') - return false; - -- w = read_pbm_int(device); // get image width -- h = read_pbm_int(device); // get image height -+ bool ok = true; -+ w = read_pbm_int(device, &ok); // get image width -+ h = read_pbm_int(device, &ok); // get image height - - if (type == '1' || type == '4') - mcc = 1; // ignore max color component - else -- mcc = read_pbm_int(device); // get max color component -+ mcc = read_pbm_int(device, &ok); // get max color component - -- if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) -- return false; // weird P.M image -+ if (!ok || w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) -+ return false; // weird P.M image - - return true; - } -@@ -233,18 +236,18 @@ static bool read_pbm_body(QIODevice *device, char type, int w, int h, int mcc, Q - } else { // read ascii data - uchar *p; - int n; -- char buf; -- for (y = 0; (y < h) && (device->peek(&buf, 1) == 1); y++) { -+ bool ok = true; -+ for (y = 0; y < h && ok; y++) { - p = outImage->scanLine(y); - n = pbm_bpl; - if (nbits == 1) { - int b; - int bitsLeft = w; -- while (n--) { -+ while (n-- && ok) { - b = 0; - for (int i=0; i<8; i++) { - if (i < bitsLeft) -- b = (b << 1) | (read_pbm_int(device) & 1); -+ b = (b << 1) | (read_pbm_int(device, &ok) & 1); - else - b = (b << 1) | (0 & 1); // pad it our self if we need to - } -@@ -253,36 +256,38 @@ static bool read_pbm_body(QIODevice *device, char type, int w, int h, int mcc, Q - } - } else if (nbits == 8) { - if (mcc == 255) { -- while (n--) { -- *p++ = read_pbm_int(device); -+ while (n-- && ok) { -+ *p++ = read_pbm_int(device, &ok); - } - } else { -- while (n--) { -- *p++ = (read_pbm_int(device) & 0xffff) * 255 / mcc; -+ while (n-- && ok) { -+ *p++ = (read_pbm_int(device, &ok) & 0xffff) * 255 / mcc; - } - } - } else { // 32 bits - n /= 4; - int r, g, b; - if (mcc == 255) { -- while (n--) { -- r = read_pbm_int(device); -- g = read_pbm_int(device); -- b = read_pbm_int(device); -+ while (n-- && ok) { -+ r = read_pbm_int(device, &ok); -+ g = read_pbm_int(device, &ok); -+ b = read_pbm_int(device, &ok); - *((QRgb*)p) = qRgb(r, g, b); - p += 4; - } - } else { -- while (n--) { -- r = read_pbm_int(device); -- g = read_pbm_int(device); -- b = read_pbm_int(device); -+ while (n-- && ok) { -+ r = read_pbm_int(device, &ok); -+ g = read_pbm_int(device, &ok); -+ b = read_pbm_int(device, &ok); - *((QRgb*)p) = scale_pbm_color(mcc, r, g, b); - p += 4; - } - } - } - } -+ if (!ok) -+ return false; - } - - if (format == QImage::Format_Mono) { --- -2.36.0 - -From 0312f98f13494ba5cec4f121a6d9e56f3a723b1f Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@qt.io> -Date: Tue, 16 Nov 2021 17:06:21 +0100 -Subject: [PATCH 066/146] Increment reference count when restoring reference - -Otherwise the count will be wrong after an out of memory failure in -reinterpretAsFormat. - -Pick-to: 6.2 5.15 -Fixes: QTBUG-98377 -Change-Id: Ice51d47a6db9277126a5c7337e14aaf5ddee3a10 -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit 1a8b7eb1d4f27e74621ee94c01dbeda3afd302c7) ---- - src/gui/image/qimage.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp -index a5d708661f..016431fade 100644 ---- a/src/gui/image/qimage.cpp -+++ b/src/gui/image/qimage.cpp -@@ -2258,6 +2258,7 @@ bool QImage::reinterpretAsFormat(Format format) - // In case detach() ran out of memory - if (!d) { - d = oldD; -+ d->ref.ref(); - return false; - } - } --- -2.36.0 - -From 13a4dddd4a2df7e055c9aaf1b6370d8bfe53b9e3 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Mon, 15 Nov 2021 13:06:46 +0100 -Subject: [PATCH 067/146] QAbstractFileEngine: fix UB (data race) on - qt_file_engine_handlers_in_use - -While all writers of the variable hold fileEngineHandlerMutex for -writing, the qt_custom_file_engine_handler_create() function checks -the value before entering a fileEngineHandlerMutex read-side critical -section, thereby causing a C++11 data race. - -Fix by making the variable atomic. Interestingly enough, relaxed -atomic operations suffice here, since the actual synchronization -happens in read- and write-side critical sections, and if -qt_file_engine_handlers_in_use is wrong w.r.t. to the actual list, the -critical sections will still work. We just mustn't cause UB by reading -and writing to a simple bool without proper synchronization. - -Pick-to: 6.2 5.15 -Change-Id: I30469504cdbc90e2ab27125181e53d74305f13fd -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -(cherry picked from commit 536471106d47bb99680f8e0dbb448c9671914309) ---- - src/corelib/io/qabstractfileengine.cpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp -index 070139b608..ef6e91d826 100644 ---- a/src/corelib/io/qabstractfileengine.cpp -+++ b/src/corelib/io/qabstractfileengine.cpp -@@ -101,7 +101,7 @@ QT_BEGIN_NAMESPACE - \sa QAbstractFileEngine, QAbstractFileEngine::create() - */ - --static bool qt_file_engine_handlers_in_use = false; -+static QBasicAtomicInt qt_file_engine_handlers_in_use = Q_BASIC_ATOMIC_INITIALIZER(false); - - /* - All application-wide handlers are stored in this list. The mutex must be -@@ -132,7 +132,7 @@ Q_GLOBAL_STATIC(QAbstractFileEngineHandlerList, fileEngineHandlers) - QAbstractFileEngineHandler::QAbstractFileEngineHandler() - { - QWriteLocker locker(fileEngineHandlerMutex()); -- qt_file_engine_handlers_in_use = true; -+ qt_file_engine_handlers_in_use.storeRelaxed(true); - fileEngineHandlers()->prepend(this); - } - -@@ -148,7 +148,7 @@ QAbstractFileEngineHandler::~QAbstractFileEngineHandler() - QAbstractFileEngineHandlerList *handlers = fileEngineHandlers(); - handlers->removeOne(this); - if (handlers->isEmpty()) -- qt_file_engine_handlers_in_use = false; -+ qt_file_engine_handlers_in_use.storeRelaxed(false); - } - } - -@@ -161,7 +161,7 @@ QAbstractFileEngine *qt_custom_file_engine_handler_create(const QString &path) - { - QAbstractFileEngine *engine = nullptr; - -- if (qt_file_engine_handlers_in_use) { -+ if (qt_file_engine_handlers_in_use.loadRelaxed()) { - QReadLocker locker(fileEngineHandlerMutex()); - - // check for registered handlers that can load the file --- -2.36.0 - -From 61117c1f0ff471ac03424b5e88730f4648aa0808 Mon Sep 17 00:00:00 2001 +From efc809a8f11b4343a6718d7da44191d09ad818e7 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <albert.astals.cid@kdab.com> Date: Fri, 28 May 2021 17:28:03 +0200 -Subject: [PATCH 068/146] Use icon themes in QPrintPreviewDialog [if they +Subject: [PATCH 024/123] Use icon themes in QPrintPreviewDialog [if they exist] I've renamed a few of the qrc icons to the names most common icon themes use @@ -45710,7 +42360,7 @@ similarity index 100% rename from src/printsupport/dialogs/images/fit-width-32.png rename to src/printsupport/dialogs/images/zoom-fit-width-32.png diff --git a/src/printsupport/dialogs/qprintdialog.qrc b/src/printsupport/dialogs/qprintdialog.qrc -index 5a579baa55..10b8e1d341 100644 +index 5a579baa558..10b8e1d3417 100644 --- a/src/printsupport/dialogs/qprintdialog.qrc +++ b/src/printsupport/dialogs/qprintdialog.qrc @@ -1,9 +1,9 @@ @@ -45751,7 +42401,7 @@ index 5a579baa55..10b8e1d341 100644 <file>images/zoom-in-32.png</file> <file>images/zoom-out-24.png</file> diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp -index 39575d5f57..23b7e89538 100644 +index 39575d5f579..23b7e895383 100644 --- a/src/printsupport/dialogs/qprintpreviewdialog.cpp +++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp @@ -352,7 +352,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer) @@ -45797,380 +42447,12 @@ index 39575d5f57..23b7e89538 100644 QObject::connect(printAction, SIGNAL(triggered(bool)), q, SLOT(_q_print())); QObject::connect(pageSetupAction, SIGNAL(triggered(bool)), q, SLOT(_q_pageSetup())); -- -2.36.0 - -From 72071fb3603ecbf3175fb2dfccf2f6ada609ed8f Mon Sep 17 00:00:00 2001 -From: Volker Hilsheimer <volker.hilsheimer@qt.io> -Date: Wed, 24 Nov 2021 19:14:26 +0100 -Subject: [PATCH 069/146] Don't shrink a column when it spans multiple columns +2.49.0 -If a cell spans multiple columns, then the merged cells' starting -column's maximum width should never become smaller than what was -calculated from previous rows. - -Otherwise, we'd distribute the space of the column that has a span -across all merged columns, resulting in unnecessary line breaks esp if -WrapAnywhere is enabled. - -Add a test case. - -Fixes: QTBUG-91691 -Fixes: QTBUG-95240 -Pick-to: 6.2 5.15 -Change-Id: Ic27dbdb128071e50fba049de85c9f23ba2f059b3 -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit 9538c7ca73e75ab8219e43b36b49200f27164dbb) ---- - src/gui/text/qtextdocumentlayout.cpp | 2 ++ - .../gui/text/qtexttable/tst_qtexttable.cpp | 28 +++++++++++++++++++ - 2 files changed, 30 insertions(+) - -diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp -index 9d70873590..a464be613f 100644 ---- a/src/gui/text/qtextdocumentlayout.cpp -+++ b/src/gui/text/qtextdocumentlayout.cpp -@@ -2536,6 +2536,8 @@ recalc_minmax_widths: - for (int n = 0; n < cspan; ++n) { - const int col = i + n; - QFixed w = widthToDistribute / (cspan - n); -+ if (td->maxWidths[col] != QFIXED_MAX) -+ w = qMax(td->maxWidths[col], w); - td->maxWidths[col] = qMax(td->minWidths.at(col), w); - widthToDistribute -= td->maxWidths.at(col); - if (widthToDistribute <= 0) -diff --git a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp -index 474079037b..b7baf720b3 100644 ---- a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp -+++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp -@@ -44,6 +44,7 @@ - #include <QPainter> - #include <QPaintEngine> - #endif -+#include <private/qtextdocumentlayout_p.h> - #include <private/qpagedpaintdevice_p.h> - - typedef QList<int> IntList; -@@ -100,6 +101,10 @@ private slots: - void checkBorderAttributes_data(); - void checkBorderAttributes(); - -+#ifndef QT_NO_WIDGETS -+ void columnWidthWithSpans(); -+#endif -+ - private: - QTextTable *create2x2Table(); - QTextTable *create4x4Table(); -@@ -1278,5 +1283,28 @@ void tst_QTextTable::checkBorderAttributes() - } - } - -+#ifndef QT_NO_WIDGETS -+void tst_QTextTable::columnWidthWithSpans() -+{ -+ cleanup(); -+ init(); -+ QTextTable *table = cursor.insertTable(4, 4); -+ QTextEdit textEdit; -+ textEdit.setDocument(doc); -+ textEdit.show(); -+ QVERIFY(QTest::qWaitForWindowExposed(&textEdit)); -+ -+ for (int i = 0; i < table->columns(); ++i) -+ table->cellAt(0, i).firstCursorPosition().insertText(QString("Header %1").arg(i)); -+ -+ QTextBlock block = table->cellAt(0, 0).firstCursorPosition().block(); -+ const QRectF beforeRect = table->document()->documentLayout()->blockBoundingRect(block); -+ table->mergeCells(1, 0, 1, table->columns()); -+ block = table->cellAt(0, 0).firstCursorPosition().block(); -+ const QRectF afterRect = table->document()->documentLayout()->blockBoundingRect(block); -+ QCOMPARE(afterRect, beforeRect); -+} -+#endif -+ - QTEST_MAIN(tst_QTextTable) - #include "tst_qtexttable.moc" --- -2.36.0 - -From fb6c8291324e404a66ea3493fe9207a0e0e657e4 Mon Sep 17 00:00:00 2001 -From: Volker Hilsheimer <volker.hilsheimer@qt.io> -Date: Thu, 25 Nov 2021 12:28:07 +0100 -Subject: [PATCH 070/146] Don't let text table cells shrink below their minimum - width - -We calculate the minimum width, but then use it only to make sure that -the maximum width is at least as large as it. Without setting the layout -struct's minimumWidth as well, table cells can be smaller. - -Add a test case. - -Fixes: QTBUG-86671 -Fixes: QTBUG-97463 -Pick-to: 6.2 5.15 -Change-Id: Idf4ad015938abb8d3e599e9a58e002f29c0067be -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> -(cherry picked from commit 97cfd4940157817dd761fd02f2e6da4afc5b4a30) ---- - src/gui/text/qtextdocumentlayout.cpp | 1 + - .../gui/text/qtexttable/tst_qtexttable.cpp | 61 ++++++++++++++++++- - 2 files changed, 61 insertions(+), 1 deletion(-) - -diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp -index a464be613f..3ac7cde805 100644 ---- a/src/gui/text/qtextdocumentlayout.cpp -+++ b/src/gui/text/qtextdocumentlayout.cpp -@@ -2360,6 +2360,7 @@ QTextLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QT - // constraint the maximumWidth by the minimum width of the fixed size floats, to - // keep them visible - layoutStruct.maximumWidth = qMax(layoutStruct.maximumWidth, floatMinWidth); -+ layoutStruct.minimumWidth = floatMinWidth; - - // as floats in cells get added to the table's float list but must not affect - // floats in other cells we must clear the list here. -diff --git a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp -index b7baf720b3..93bbf9f34f 100644 ---- a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp -+++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp -@@ -29,7 +29,7 @@ - - #include <QtTest/QtTest> - -- -+#include <qbuffer.h> - #include <qtextdocument.h> - #include <qtextdocumentfragment.h> - #include <qtexttable.h> -@@ -103,6 +103,9 @@ private slots: - - #ifndef QT_NO_WIDGETS - void columnWidthWithSpans(); -+ -+ void columnWidthWithImage_data(); -+ void columnWidthWithImage(); - #endif - - private: -@@ -1304,7 +1307,63 @@ void tst_QTextTable::columnWidthWithSpans() - const QRectF afterRect = table->document()->documentLayout()->blockBoundingRect(block); - QCOMPARE(afterRect, beforeRect); - } -+ -+void tst_QTextTable::columnWidthWithImage_data() -+{ -+ const auto imageHtml = [](int width, int height) { -+ QImage image(width, height, QImage::Format_RGB32); -+ image.fill(Qt::red); -+ QByteArray imageBytes; -+ QBuffer buffer(&imageBytes); -+ buffer.open(QIODevice::WriteOnly); -+ image.save(&buffer, "png"); -+ return QString("<td><img src='data:image/png;base64,%1'/></td>").arg(QString(imageBytes.toBase64())); -+ }; -+ -+ QTest::addColumn<QString>("leftHtml"); -+ QTest::addColumn<QString>("rightHtml"); -+ QTest::addColumn<QSize>("imageSize"); -+ QTest::addRow("image") -+ << imageHtml(500, 32) << "<td></td>" << QSize(500, 32); -+ QTest::addRow("image, text") -+ << imageHtml(32, 32) << "<td>abc</td>" << QSize(32, 32); -+ QTest::addRow("image, 100%% text") -+ << imageHtml(32, 32) << "<td style='background-color: grey' width='100%'>abc</td>" -+ << QSize(32, 32); -+ QTest::addRow("image, image") -+ << imageHtml(256, 32) << imageHtml(256, 32) << QSize(256, 32); -+} -+ -+void tst_QTextTable::columnWidthWithImage() -+{ -+ const QString tableTemplate = "<table><tr>%1 %2</tr></table>"; -+ -+ QFETCH(QString, leftHtml); -+ QFETCH(QString, rightHtml); -+ QFETCH(QSize, imageSize); -+ -+ QTextDocument doc; -+ doc.setHtml(tableTemplate.arg(leftHtml).arg(rightHtml)); -+ QTextEdit textEdit; -+ textEdit.setDocument(&doc); -+ textEdit.show(); -+ QVERIFY(QTest::qWaitForWindowExposed(&textEdit)); -+ -+ QTextCursor cursor(doc.firstBlock()); -+ cursor.movePosition(QTextCursor::Right); -+ -+ QTextTable *currentTable = cursor.currentTable(); -+ QVERIFY(currentTable); -+ -+ QTextBlock block = currentTable->cellAt(0, 0).firstCursorPosition().block(); -+ const QRectF leftRect = currentTable->document()->documentLayout()->blockBoundingRect(block); -+ block = currentTable->cellAt(0, 1).firstCursorPosition().block(); -+ const QRectF rightRect = currentTable->document()->documentLayout()->blockBoundingRect(block); -+ QCOMPARE(leftRect.size().toSize(), imageSize); -+ QVERIFY(rightRect.left() > leftRect.right()); -+} - #endif - -+ - QTEST_MAIN(tst_QTextTable) - #include "tst_qtexttable.moc" --- -2.36.0 - -From b3e39df580827fba0a69f0824668781ef43a3b18 Mon Sep 17 00:00:00 2001 -From: Volker Hilsheimer <volker.hilsheimer@qt.io> -Date: Mon, 6 Dec 2021 12:49:10 +0100 -Subject: [PATCH 071/146] Fix qtdeclarative baseline test failure for text - tables - -Amend 97cfd4940157817dd761fd02f2e6da4afc5b4a30, which resulted in -incorrectly laid out tables in Text elements. - -Reported by the baseline test for the scenegraph. Not reproducible using -a QtWidget text widget, so no unit-test added here. - -Pick-to: 6.2 5.15 -Task-number: QTBUG-86671 -Task-number: QTBUG-97463 -Change-Id: I607b1fea3fb5923f81f05a3646bafebec3dcf3b5 -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit 220510a885747bb084e23dc51ea31e35e4fd115e) ---- - src/gui/text/qtextdocumentlayout.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp -index 3ac7cde805..322f494e5d 100644 ---- a/src/gui/text/qtextdocumentlayout.cpp -+++ b/src/gui/text/qtextdocumentlayout.cpp -@@ -2357,10 +2357,10 @@ QTextLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QT - floatMinWidth = qMax(floatMinWidth, cd->minimumWidth); - } - -- // constraint the maximumWidth by the minimum width of the fixed size floats, to -- // keep them visible -+ // constraint the maximum/minimumWidth by the minimum width of the fixed size floats, -+ // to keep them visible - layoutStruct.maximumWidth = qMax(layoutStruct.maximumWidth, floatMinWidth); -- layoutStruct.minimumWidth = floatMinWidth; -+ layoutStruct.minimumWidth = qMax(layoutStruct.minimumWidth, floatMinWidth); - - // as floats in cells get added to the table's float list but must not affect - // floats in other cells we must clear the list here. --- -2.36.0 - -From b95a87b18582b8c040c280af5346a2b8668549ad Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@qt.io> -Date: Fri, 14 May 2021 10:43:11 +0200 -Subject: [PATCH 072/146] Avoid mixing atomic futex changes and QAtomic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Either the mix of futex and atomic, or the mix of 32-bit futex and -64-bit atomic doesn't work. In any case, the existing code leads to -bad behavior. - -* asturmlechner 2021-11-19: - Also added the typo fix from 587e3bb0 since it conflicted. - -Pick-to: 6.1 5.15 -Fixes: QTBUG-92188 -Change-Id: Icc6ba28d6e2465c373d00e84f4da2b92c037e797 -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit 2d9cc639a4a7a5e97979a6034364bd67dfa10c23) ---- - src/corelib/thread/qsemaphore.cpp | 46 ++++++++++++------------------- - 1 file changed, 17 insertions(+), 29 deletions(-) - -diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp -index d4fb756b94..1d01fc1b28 100644 ---- a/src/corelib/thread/qsemaphore.cpp -+++ b/src/corelib/thread/qsemaphore.cpp -@@ -357,47 +357,31 @@ void QSemaphore::release(int n) - quintptr prevValue = u.fetchAndAddRelease(nn); - if (futexNeedsWake(prevValue)) { - #ifdef FUTEX_OP -- if (!futexHasWaiterCount) { -- /* -- On 32-bit systems, all waiters are waiting on the same address, -- so we'll wake them all and ask the kernel to clear the high bit. -- -- atomic { -- int oldval = u; -- u = oldval & ~(1 << 31); -- futexWake(u, INT_MAX); -- if (oldval == 0) // impossible condition -- futexWake(u, INT_MAX); -- } -- */ -- quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT; -- quint32 oparg = 31; -- quint32 cmp = FUTEX_OP_CMP_EQ; -- quint32 cmparg = 0; -- futexWakeOp(u, INT_MAX, INT_MAX, u, FUTEX_OP(op, oparg, cmp, cmparg)); -- } else { -+ if (futexHasWaiterCount) { - /* - On 64-bit systems, the single-token waiters wait on the low half - and the multi-token waiters wait on the upper half. So we ask - the kernel to wake up n single-token waiters and all multi-token -- waiters (if any), then clear the multi-token wait bit. -+ waiters (if any), and clear the multi-token wait bit. - - atomic { - int oldval = *upper; -- *upper = oldval & ~(1 << 31); -+ *upper = oldval | 0; - futexWake(lower, n); -- if (oldval < 0) // sign bit set -+ if (oldval != 0) // always true - futexWake(upper, INT_MAX); - } - */ -- quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT; -- quint32 oparg = 31; -- quint32 cmp = FUTEX_OP_CMP_LT; -+ quint32 op = FUTEX_OP_OR; -+ quint32 oparg = 0; -+ quint32 cmp = FUTEX_OP_CMP_NE; - quint32 cmparg = 0; -+ u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); - futexWakeOp(*futexLow32(&u), n, INT_MAX, *futexHigh32(&u), FUTEX_OP(op, oparg, cmp, cmparg)); -+ return; - } --#else -- // Unset the bit and wake everyone. There are two possibibilies -+#endif -+ // Unset the bit and wake everyone. There are two possibilities - // under which a thread can set the bit between the AND and the - // futexWake: - // 1) it did see the new counter value, but it wasn't enough for -@@ -405,8 +389,12 @@ void QSemaphore::release(int n) - // 2) it did not see the new counter value, in which case its - // futexWait will fail. - u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); -- futexWakeAll(u); --#endif -+ if (futexHasWaiterCount) { -+ futexWakeAll(*futexLow32(&u)); -+ futexWakeAll(*futexHigh32(&u)); -+ } else { -+ futexWakeAll(u); -+ } - } - return; - } --- -2.36.0 - -From 520550fa8fd0415ed45b6135928723be2c3cd2bd Mon Sep 17 00:00:00 2001 +From 851b516d40bf9f4bf291f994dd4a233a807e38a9 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov <timur.pocheptsov@qt.io> Date: Fri, 9 Jul 2021 15:00:19 +0200 -Subject: [PATCH 073/146] Dont's use DTLS_MAX_VERSION when setting SSL_CTX +Subject: [PATCH 025/123] Dont's use DTLS_MAX_VERSION when setting SSL_CTX It was fixed quite some time ago for TLS counterpart (TLS_MAX_VERSION), but somehow the similar fix was missing for DTLS. OpenSSL v3 deprecated @@ -46186,7 +42468,7 @@ Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp -index c9f202f573..d0a428c2d2 100644 +index c30192a4eb3..e4bb61ecb57 100644 --- a/src/network/ssl/qsslcontext_openssl.cpp +++ b/src/network/ssl/qsslcontext_openssl.cpp @@ -409,7 +409,7 @@ init_context: @@ -46208,12 +42490,12 @@ index c9f202f573..d0a428c2d2 100644 case QSsl::TlsV1_3OrLater: #ifdef TLS1_3_VERSION -- -2.36.0 +2.49.0 -From 22f7ef1467fd08c1e89c43edd757c3ba5a401c92 Mon Sep 17 00:00:00 2001 +From 42f6ed783f8cc789da6bc3a530d3a20f99d88115 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov <timur.pocheptsov@qt.io> Date: Fri, 9 Jul 2021 16:14:16 +0200 -Subject: [PATCH 074/146] Diffie-Hellman parameters: remove useless 'fix' +Subject: [PATCH 026/123] Diffie-Hellman parameters: remove useless 'fix' The workaround I had implemented based on alpha version of OpenSSL v3 and what developers (OpenSSL) said about DH back then is not going to work @@ -46234,7 +42516,7 @@ Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> 3 files changed, 58 deletions(-) diff --git a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp -index aaf8741130..b58935372c 100644 +index 333b09e9c1b..0f7343c9d9f 100644 --- a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp +++ b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp @@ -59,57 +59,6 @@ @@ -46296,10 +42578,10 @@ index aaf8741130..b58935372c 100644 { int status = 0; diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp -index 94aa5a5c1d..81caef3d8f 100644 +index 0ace951c77c..6a9a3ef3b3f 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -489,9 +489,7 @@ DEFINEFUNC(DH *, DH_new, DUMMYARG, DUMMYARG, return nullptr, return) +@@ -499,9 +499,7 @@ DEFINEFUNC(DH *, DH_new, DUMMYARG, DUMMYARG, return nullptr, return) DEFINEFUNC(void, DH_free, DH *dh, dh, return, DUMMYARG) DEFINEFUNC3(DH *, d2i_DHparams, DH**a, a, const unsigned char **pp, pp, long length, length, return nullptr, return) DEFINEFUNC2(int, i2d_DHparams, DH *a, a, unsigned char **p, p, return -1, return) @@ -46309,7 +42591,7 @@ index 94aa5a5c1d..81caef3d8f 100644 DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return) #ifndef OPENSSL_NO_EC -@@ -1176,9 +1174,7 @@ bool q_resolveOpenSslSymbols() +@@ -1220,9 +1218,7 @@ bool q_resolveOpenSslSymbols() RESOLVEFUNC(DH_free) RESOLVEFUNC(d2i_DHparams) RESOLVEFUNC(i2d_DHparams) @@ -46320,10 +42602,10 @@ index 94aa5a5c1d..81caef3d8f 100644 #ifndef OPENSSL_NO_EC diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h -index c46afcf53e..56cb26fbde 100644 +index 5e9faae2912..bf165f67ad0 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols_p.h +++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -581,10 +581,7 @@ DH *q_DH_new(); +@@ -598,10 +598,7 @@ DH *q_DH_new(); void q_DH_free(DH *dh); DH *q_d2i_DHparams(DH **a, const unsigned char **pp, long length); int q_i2d_DHparams(DH *a, unsigned char **p); @@ -46335,1806 +42617,12 @@ index c46afcf53e..56cb26fbde 100644 BIGNUM *q_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); #define q_SSL_CTX_set_tmp_dh(ctx, dh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH, 0, (char *)dh) -- -2.36.0 - -From cc7b84036f19749006ba855f72b4583ea15af97a Mon Sep 17 00:00:00 2001 -From: Timur Pocheptsov <timur.pocheptsov@qt.io> -Date: Mon, 12 Jul 2021 12:38:14 +0200 -Subject: [PATCH 075/146] Don't use a deprecated function if built/linked with - OpenSSL v3 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -SSL_get_peer_certificate was deprecated in OpenSSL v3 and can be 'compiled-out' -using OPENSSL_API_COMPAT. Use SSL_get1_peer_certificate instead. - -Pick-to: 6.2 -Task-number: QTBUG-94596 -Change-Id: Iedb2e06e673e981cab79d4bf0147ac6f5f90089a -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit ae6590e360fbb04d93940b2651f70df44a28943e) ---- - src/network/ssl/qsslsocket_openssl_symbols.cpp | 12 ++++++++++++ - src/network/ssl/qsslsocket_openssl_symbols_p.h | 9 ++++++++- - 2 files changed, 20 insertions(+), 1 deletion(-) - -diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp -index 81caef3d8f..f343349e2c 100644 ---- a/src/network/ssl/qsslsocket_openssl_symbols.cpp -+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -368,7 +368,13 @@ DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr - DEFINEFUNC(int, SSL_version, const SSL *a, a, return 0, return) - DEFINEFUNC2(int, SSL_get_error, SSL *a, a, int b, b, return -1, return) - DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return nullptr, return) -+ -+#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 -+DEFINEFUNC(X509 *, SSL_get1_peer_certificate, SSL *a, a, return nullptr, return) -+#else - DEFINEFUNC(X509 *, SSL_get_peer_certificate, SSL *a, a, return nullptr, return) -+#endif // OPENSSL_VERSION_MAJOR >= 3 -+ - DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return) - DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return nullptr, return) - DEFINEFUNC(SSL_CTX *, SSL_get_SSL_CTX, SSL *a, a, return nullptr, return) -@@ -1075,7 +1081,13 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(SSL_version) - RESOLVEFUNC(SSL_get_error) - RESOLVEFUNC(SSL_get_peer_cert_chain) -+ -+#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 -+ RESOLVEFUNC(SSL_get1_peer_certificate) -+#else - RESOLVEFUNC(SSL_get_peer_certificate) -+#endif // OPENSSL_VERSION_MAJOR >= 3 -+ - RESOLVEFUNC(SSL_get_verify_result) - RESOLVEFUNC(SSL_new) - RESOLVEFUNC(SSL_get_SSL_CTX) -diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h -index 56cb26fbde..58300cc549 100644 ---- a/src/network/ssl/qsslsocket_openssl_symbols_p.h -+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -509,7 +509,6 @@ const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a); - int q_SSL_version(const SSL *a); - int q_SSL_get_error(SSL *a, int b); - STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a); --X509 *q_SSL_get_peer_certificate(SSL *a); - long q_SSL_get_verify_result(const SSL *a); - SSL *q_SSL_new(SSL_CTX *a); - SSL_CTX *q_SSL_get_SSL_CTX(SSL *a); -@@ -748,6 +747,14 @@ void *q_CRYPTO_malloc(size_t num, const char *file, int line); - int q_SSL_CTX_get_security_level(const SSL_CTX *ctx); - void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level); - -+// Here we have the ones that make difference between OpenSSL pre/post v3: -+#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 -+X509 *q_SSL_get1_peer_certificate(SSL *a); -+#define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate -+#else -+X509 *q_SSL_get_peer_certificate(SSL *a); -+#endif // OPENSSL_VERSION_MAJOR >= 3 -+ - QT_END_NAMESPACE - - #endif --- -2.36.0 - -From 0f5103a2f08a7083afe06acfd304059d0fd03a54 Mon Sep 17 00:00:00 2001 -From: Dmitry Shachnev <mitya57@gmail.com> -Date: Sun, 5 Dec 2021 16:07:44 +0300 -Subject: [PATCH 076/146] =?UTF-8?q?Adapt=20for=20q=5FEVP=5FPKEY=5Fbase=5Fi?= - =?UTF-8?q?d=20=E2=86=92=20q=5FEVP=5FPKEY=5Fget=5Fbase=5Fid=20rename=20in?= - =?UTF-8?q?=20OpenSSL=203?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Based on upstream commit 4c0f81490ba0c4ec (the whole commit does not -apply cleanly). ---- - src/network/ssl/qsslsocket_openssl_symbols.cpp | 6 ++++-- - src/network/ssl/qsslsocket_openssl_symbols_p.h | 4 +++- - 2 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp -index f343349e2c..f89f5206a3 100644 ---- a/src/network/ssl/qsslsocket_openssl_symbols.cpp -+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp -@@ -148,7 +148,6 @@ DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return) - DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return) - DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return) - DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return) --DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) - DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return) - DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return) - DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) -@@ -371,8 +370,10 @@ DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return nullptr, - - #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 - DEFINEFUNC(X509 *, SSL_get1_peer_certificate, SSL *a, a, return nullptr, return) -+DEFINEFUNC(int, EVP_PKEY_get_base_id, const EVP_PKEY *pkey, pkey, return -1, return) - #else - DEFINEFUNC(X509 *, SSL_get_peer_certificate, SSL *a, a, return nullptr, return) -+DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) - #endif // OPENSSL_VERSION_MAJOR >= 3 - - DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return) -@@ -856,7 +857,6 @@ bool q_resolveOpenSslSymbols() - RESOLVEFUNC(EVP_PKEY_CTX_new) - RESOLVEFUNC(EVP_PKEY_param_check) - RESOLVEFUNC(EVP_PKEY_CTX_free) -- RESOLVEFUNC(EVP_PKEY_base_id) - RESOLVEFUNC(RSA_bits) - RESOLVEFUNC(OPENSSL_sk_new_null) - RESOLVEFUNC(OPENSSL_sk_push) -@@ -1084,8 +1084,10 @@ bool q_resolveOpenSslSymbols() - - #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 - RESOLVEFUNC(SSL_get1_peer_certificate) -+ RESOLVEFUNC(EVP_PKEY_get_base_id) - #else - RESOLVEFUNC(SSL_get_peer_certificate) -+ RESOLVEFUNC(EVP_PKEY_base_id) - #endif // OPENSSL_VERSION_MAJOR >= 3 - - RESOLVEFUNC(SSL_get_verify_result) -diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h -index 58300cc549..b36d0bc126 100644 ---- a/src/network/ssl/qsslsocket_openssl_symbols_p.h -+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h -@@ -236,7 +236,6 @@ Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a); - EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); - void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); - int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); --int q_EVP_PKEY_base_id(EVP_PKEY *a); - int q_RSA_bits(RSA *a); - Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a); - Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); -@@ -751,8 +750,11 @@ void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level); - #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 - X509 *q_SSL_get1_peer_certificate(SSL *a); - #define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate -+int q_EVP_PKEY_get_base_id(const EVP_PKEY *pkey); -+#define q_EVP_PKEY_base_id q_EVP_PKEY_get_base_id - #else - X509 *q_SSL_get_peer_certificate(SSL *a); -+int q_EVP_PKEY_base_id(EVP_PKEY *a); - #endif // OPENSSL_VERSION_MAJOR >= 3 - - QT_END_NAMESPACE --- -2.36.0 - -From 9deedbf8cb5b5708409ee624dffb11b41d3b7c96 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 9 Dec 2021 22:22:04 +0100 -Subject: [PATCH 077/146] QVarLengthArray: fix UB (precondition violation) in - range-erase() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When the range-erase() function is called with an empty, valid range, -it passed equal iterators to both the first and the last arguments of -std::move(f, l, d) (the algorithm, not the cast). This is UB, since it -violates the algorithm's precondition that d ∉ [f,l). For non-empty -ranges, f > d, thus d < f, hence d ∉ [f,l), so everything is ok -_there_. - -Fix the empty range case by returning early. - -Reviewers may question the precondition, expecting that std::move(f, -l, f) just be a no-op, but the algorithm, as specified, performs -self-move-assignments in that case, which need not be supported. In -fact, the Hinnant criterion, itself only applicable if one calls for -self-swap-safety, asks for self-move-assignment-safety only for -objects in the moved-from state. QVarLengthArray, itself, meets only -the Hinnant criterion; self-move-assignment of non-empty QVLAs invokes -UB. - -So, the UB here is real. - -Qt 5.15 uses std::copy() here, which has the same precondition as -std::move(), and the same fix applies there, too. - -[ChangeLog][QtCore][QVarLengthArray] Fixed a bug where range-erase() -could invoke undefined behavior when called with an empty range. - -Pick-to: 6.2 5.15 -Change-Id: I656aa09d025168d6d9ef088ad4c6954d216f0d54 -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 0800947d7d2127eacaabf66ee1702d4980897041) ---- - src/corelib/tools/qvarlengtharray.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h -index 0110956b77..f9003c31a2 100644 ---- a/src/corelib/tools/qvarlengtharray.h -+++ b/src/corelib/tools/qvarlengtharray.h -@@ -538,6 +538,8 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA - int f = int(abegin - ptr); - int l = int(aend - ptr); - int n = l - f; -+ if (n == 0) // avoid UB in std::copy() below -+ return ptr + f; - if (QTypeInfo<T>::isComplex) { - std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f)); - T *i = ptr + s; --- -2.36.0 - -From 5cb8282d76262611e52214c88b9aa7766eb1c233 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 16 Dec 2021 09:31:39 +0100 -Subject: [PATCH 078/146] tst_QIODevice: fix UB (precondition violation) in - SequentialReadBuffer::readData() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -memcpy() mustn't be called with a nullptr, even if the size is zero. - -Fixes ubsan error: - - tst_qiodevice.cpp:561:15: runtime error: null pointer passed as argument 1, which is declared to never be null - -Even though ubsan only complained about one of them, fix all three -occurrences of the pattern in the test. - -Pick-to: 6.3 6.2 5.15 -Change-Id: I5c06ab4a20a9e9f8831392c46c6969c05248fdac -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit 572b55baa42787447643169811784bc64024fb5e) ---- - tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) - -diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp -index da5327594c..4a04e0f7c6 100644 ---- a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp -+++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp -@@ -561,7 +561,8 @@ protected: - qint64 readData(char *data, qint64 maxSize) override - { - maxSize = qMin(maxSize, qint64(buf->size() - offset)); -- memcpy(data, buf->constData() + offset, maxSize); -+ if (maxSize > 0) -+ memcpy(data, buf->constData() + offset, maxSize); - offset += maxSize; - return maxSize; - } -@@ -604,13 +605,15 @@ protected: - qint64 readData(char *data, qint64 maxSize) override - { - maxSize = qMin(maxSize, qint64(buf.size() - pos())); -- memcpy(data, buf.constData() + pos(), maxSize); -+ if (maxSize > 0) -+ memcpy(data, buf.constData() + pos(), maxSize); - return maxSize; - } - qint64 writeData(const char *data, qint64 maxSize) override - { - maxSize = qMin(maxSize, qint64(buf.size() - pos())); -- memcpy(buf.data() + pos(), data, maxSize); -+ if (maxSize > 0) -+ memcpy(buf.data() + pos(), data, maxSize); - return maxSize; - } - --- -2.36.0 - -From f4e7f69f2e83af222ab384feee80b026758d02e2 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 16 Dec 2021 07:21:46 +0100 -Subject: [PATCH 079/146] QString: fix UB (pointer arithmetic on nullptr) in - qLastIndexOf - -Says ubsan: - - qstring.cpp:10484:17: runtime error: applying non-zero offset 18446744073709551614 to null pointer - -If we search for a null needle, we stored 0-1 in a size_t variable and -unconditionally appied that offset to the needle's data() pointer. That -being the nullptr, ubsan complained. - -To fix, set sl_minus_1 to 0 if it would underflow. In that case, -sl_minus_1, n, and h, are not used, anyway, so their values don't -matter as long as we don't invoke UB. - -Pick-to: 6.3 6.2 5.15 -Change-Id: Idca4e845c77838dfc84acdb68bbbc98382b5e1d5 -Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> -Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 6830bdc1401e55680859b74036e9e9d90c359028) ---- - src/corelib/text/qstring.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp -index 4be5c6d357..be472d7956 100644 ---- a/src/corelib/text/qstring.cpp -+++ b/src/corelib/text/qstring.cpp -@@ -12308,7 +12308,7 @@ static qsizetype qLastIndexOf(Haystack haystack0, qsizetype from, - const auto needle = needle0.data(); - const auto *end = haystack; - haystack += from; -- const std::size_t sl_minus_1 = sl - 1; -+ const std::size_t sl_minus_1 = sl ? sl - 1 : 0; - const auto *n = needle + sl_minus_1; - const auto *h = haystack + sl_minus_1; - std::size_t hashNeedle = 0, hashHaystack = 0; --- -2.36.0 - -From 456a6abd47113960bc59c72213909dd590dc949e Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 16 Dec 2021 14:23:08 +0100 -Subject: [PATCH 080/146] QDateTime: fix UB (signed overflow) in addDays() - -The comment indicated that the author expected any overflow to be -caught by a bounds check in the subsequent function, however, signed -overflow is UB, so anything can happen. - -Fix by using our API for safe additions instead. - -* asturmlechner 2021-12-29: use add_overflow instead of qAddOverflow - -Pick-to: 6.3 6.2 5.15 -Change-Id: I41909defffa5305b02fdfcf6d5808e0d9fd5924f -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit c47c98ea2b8ec9e8bda51d86f3168bba28c3291a) ---- - src/corelib/time/qdatetime.cpp | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp -index ec12569e3f..e84c6b8804 100644 ---- a/src/corelib/time/qdatetime.cpp -+++ b/src/corelib/time/qdatetime.cpp -@@ -43,6 +43,7 @@ - #if QT_CONFIG(datetimeparser) - #include "private/qdatetimeparser_p.h" - #endif -+#include <private/qnumeric_p.h> - - #include "qdatastream.h" - #include "qset.h" -@@ -1429,9 +1430,10 @@ QDate QDate::addDays(qint64 ndays) const - if (isNull()) - return QDate(); - -- // Due to limits on minJd() and maxJd() we know that any overflow -- // will be invalid and caught by fromJulianDay(). -- return fromJulianDay(jd + ndays); -+ if (qint64 r; Q_UNLIKELY(add_overflow(jd, ndays, &r))) -+ return QDate(); -+ else -+ return fromJulianDay(r); - } - - /*! --- -2.36.0 - -From c556bfbe0a1c8d8450d7e68abf3dc07dd5babc9b Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 16 Dec 2021 09:04:01 +0100 -Subject: [PATCH 081/146] QVariantAnimation: fix UB (FP 0/0) in interpolated() - arg calculation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When startProgress, endProgress, and progress were all 0 (as provoked -by tst_QPropertyAnimation::startWithoutStartValue()), we'd calculate -0/0 and ubsan complained: - - qvariantanimation.cpp:284:60: runtime error: division by zero - -Fix by detecting progress - startProgress == 0 and setting -localProgress = 0.0 in that case. This is a logical result, even -though it might not be what IEEE754 rules would have yielded. - -A more comprehensive change that aims to reliably keep localProgress -∈ [0,1] and thus avoid the infinities when endProgress == -startProgress, is outside the scope of this patch, which deals only -with the UBSan error. - -Pick-to: 6.3 6.2 5.15 -Change-Id: I5258b054a2060006795f49fb1cd7604aea3ed46b -Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> -Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> -(cherry picked from commit 52da10f64542a6c4fda06be1b88e9111331f6500) ---- - src/corelib/animation/qvariantanimation.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp -index 98b02f0202..eac1524107 100644 ---- a/src/corelib/animation/qvariantanimation.cpp -+++ b/src/corelib/animation/qvariantanimation.cpp -@@ -276,7 +276,9 @@ void QVariantAnimationPrivate::setCurrentValueForProgress(const qreal progress) - - const qreal startProgress = currentInterval.start.first; - const qreal endProgress = currentInterval.end.first; -- const qreal localProgress = (progress - startProgress) / (endProgress - startProgress); -+ const qreal localProgress = -+ qIsNull(progress - startProgress) ? 0.0 // avoid 0/0 below -+ /* else */ : (progress - startProgress) / (endProgress - startProgress); - - QVariant ret = q->interpolated(currentInterval.start.second, - currentInterval.end.second, --- -2.36.0 - -From fbe344c45f870d77b70a3750e425a5ed409adf53 Mon Sep 17 00:00:00 2001 -From: Andreas Sturmlechner <asturm@gentoo.org> -Date: Tue, 4 Jan 2022 17:13:12 +0100 -Subject: [PATCH 082/146] QDateTime: Don't require c++17 - -Follow-up to commit c79a6cc1d4a04a1db09902e856d7a64d09a4cf85 -See also: https://invent.kde.org/qt/backports-tracker/-/issues/1414 -Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> ---- - src/corelib/time/qdatetime.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp -index e84c6b8804..2c0b098079 100644 ---- a/src/corelib/time/qdatetime.cpp -+++ b/src/corelib/time/qdatetime.cpp -@@ -1430,7 +1430,8 @@ QDate QDate::addDays(qint64 ndays) const - if (isNull()) - return QDate(); - -- if (qint64 r; Q_UNLIKELY(add_overflow(jd, ndays, &r))) -+ qint64 r; -+ if (Q_UNLIKELY(add_overflow(jd, ndays, &r))) - return QDate(); - else - return fromJulianDay(r); --- -2.36.0 - -From 9e1e24d2a46eec9e2d5d5d4da12f634e2e188f7e Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <aacid@kde.org> -Date: Mon, 27 Dec 2021 18:48:31 +0100 -Subject: [PATCH 083/146] Use block char format to render list item bullets and - numbers - -It needs to be rendered with the format of the block not the format of -the first letter of the block; otherwise if the first letter is black or -italics or something, but the rest of the block isn't, the list item -text looks out of place. - -Task-number: QTBUG-3583 -Fixes: QTBUG-99148 -Pick-to: 6.3 6.2 5.15 -Change-Id: I63d8d6d6b7cee6bd9938fe1cf42a5f90da1bc0d3 -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> -(cherry picked from commit 7e7f5f97832e8bf0b260f21aa912812eefaa5997) ---- - src/gui/text/qtextdocumentlayout.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp -index 322f494e5d..28610711ef 100644 ---- a/src/gui/text/qtextdocumentlayout.cpp -+++ b/src/gui/text/qtextdocumentlayout.cpp -@@ -2123,7 +2123,7 @@ void QTextDocumentLayoutPrivate::drawListItem(const QPointF &offset, QPainter *p - { - Q_Q(const QTextDocumentLayout); - const QTextBlockFormat blockFormat = bl.blockFormat(); -- const QTextCharFormat charFormat = QTextCursor(bl).charFormat(); -+ const QTextCharFormat charFormat = bl.charFormat(); - QFont font(charFormat.font()); - if (q->paintDevice()) - font = QFont(font, q->paintDevice()); --- -2.36.0 - -From 4cca26b42e361ee18d57cc635ad6988b1e7314f6 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 16 Dec 2021 13:50:21 +0100 -Subject: [PATCH 084/146] QThread: fix UB (invalid enum value) on - Private::Priority - -The Unix code stores an additional flag, ThreadPriorityResetFlag, in -the Policy enum, but ubsan does not approve: - - qthread_unix.cpp:303:30: runtime error: load of value 2147483648, which is not a valid value for type 'Priority' - qthread_unix.cpp:304:75: runtime error: load of value 2147483648, which is not a valid value for type 'Priority' - -Fix by making the variable of std::underlying_type_t<Priority>. - -The masking and unmasking code can now be simplified, too. - -In the Windows version, replace some switch targets with equivalent -ones to keep -Wswitch-like warnings, though I hasten to note that both -switches use a default case, so have anyway implicitly disabled said -warning. - -Pick-to: 6.3 6.2 5.15 -Change-Id: Ie4ea7d05e2928d2755ad12d36535197f85493191 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit 591a35d6fd9fa4f14ca1ac6a568673e2a2da0f60) - -asturmlechner 2022-01-04: Resolve conflict in qthread_unix.cpp with - dev branch commit cffc667ad9dae10adf415357a606e7253a0c3206 ---- - src/corelib/thread/qthread_p.h | 2 +- - src/corelib/thread/qthread_unix.cpp | 4 ++-- - src/corelib/thread/qthread_win.cpp | 4 ++-- - 3 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h -index b2d1628e6e..227c3f0e66 100644 ---- a/src/corelib/thread/qthread_p.h -+++ b/src/corelib/thread/qthread_p.h -@@ -174,7 +174,7 @@ public: - int returnCode; - - uint stackSize; -- QThread::Priority priority; -+ std::underlying_type_t<QThread::Priority> priority; - - static QThread *threadForId(int id); - -diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp -index 659d5fb03c..bce6a2be0d 100644 ---- a/src/corelib/thread/qthread_unix.cpp -+++ b/src/corelib/thread/qthread_unix.cpp -@@ -296,7 +296,7 @@ void *QThreadPrivate::start(void *arg) - QMutexLocker locker(&thr->d_func()->mutex); - - // do we need to reset the thread priority? -- if (int(thr->d_func()->priority) & ThreadPriorityResetFlag) { -+ if (thr->d_func()->priority & ThreadPriorityResetFlag) { - thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag)); - } - -@@ -667,7 +667,7 @@ void QThread::start(Priority priority) - // could not set scheduling hints, fallback to inheriting them - // we'll try again from inside the thread - pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); -- d->priority = Priority(priority | ThreadPriorityResetFlag); -+ d->priority = static_cast<std::underlying_type_t<QThread::Priority>>(priority) | ThreadPriorityResetFlag; - } - break; - } -diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp -index bc70e3178a..9ddc6b3b34 100644 ---- a/src/corelib/thread/qthread_win.cpp -+++ b/src/corelib/thread/qthread_win.cpp -@@ -548,7 +548,7 @@ void QThread::start(Priority priority) - - int prio; - d->priority = priority; -- switch (d->priority) { -+ switch (priority) { - case IdlePriority: - prio = THREAD_PRIORITY_IDLE; - break; -@@ -686,7 +686,7 @@ void QThreadPrivate::setPriority(QThread::Priority threadPriority) - - int prio; - priority = threadPriority; -- switch (priority) { -+ switch (threadPriority) { - case QThread::IdlePriority: - prio = THREAD_PRIORITY_IDLE; - break; --- -2.36.0 - -From 8fd32980dd714b922e9e8339797f44387d18d09a Mon Sep 17 00:00:00 2001 -From: Jarek Kobus <jaroslaw.kobus@qt.io> -Date: Tue, 28 Dec 2021 10:30:52 +0100 -Subject: [PATCH 085/146] Fix pattern type matching - -Amends 3c747aafa44ac2d0b314a002d2672227bf6513e5 - -Pick-to: 6.3 6.2 5.15 -Change-Id: I2753b627c269cbb50009ef5e9c2ffa274e0ccf5c -Reviewed-by: David Faure <david.faure@kdab.com> -Reviewed-by: Alex Richardson <arichardson.kde@gmail.com> -(cherry picked from commit 9453038921f190eb8582e559df889cbc243f9e3c) ---- - src/corelib/mimetypes/qmimeglobpattern.cpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp -index 3ab5bd4cb4..fa8f4c545d 100644 ---- a/src/corelib/mimetypes/qmimeglobpattern.cpp -+++ b/src/corelib/mimetypes/qmimeglobpattern.cpp -@@ -97,7 +97,7 @@ QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString - if (!patternLength) - return OtherPattern; - -- const bool starCount = pattern.count(QLatin1Char('*')) == 1; -+ const int starCount = pattern.count(QLatin1Char('*')); - const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1; - const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1; - -@@ -109,10 +109,10 @@ QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString - // Patterns like "README*" (well this is currently the only one like that...) - if (pattern.at(patternLength - 1) == QLatin1Char('*')) - return PrefixPattern; -- } -- // Names without any wildcards like "README" -- if (starCount == 0) -+ } else if (starCount == 0) { -+ // Names without any wildcards like "README" - return LiteralPattern; -+ } - } - - if (pattern == QLatin1String("[0-9][0-9][0-9].vdr")) --- -2.36.0 - -From 57f78d2d33f914ff2501bf72aa50773e311c4fba Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 9 Dec 2021 22:53:48 +0100 -Subject: [PATCH 086/146] QVarLengthArray: assert that the range passed to - erase() is valid - -We already checked that the two iterators, indvidually, are valid, but -we didn't check that the range formed by them is valid, namely that -the end iterator is reachable from the start iterator. - -Add an assert, because if the range isn't valid, we run into UB in the -std::move() algorithm two lines later. - -Qt 5.15 uses std::copy() here, which has the same precondition, so the -assertion would make sense there, too. - -Pick-to: 6.2 5.15 -Change-Id: I90b7e846455ff86383a8971bea908036684961d8 -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit c38639089f0e17a3da40dca03fecac88f5d89ba9) ---- - src/corelib/tools/qvarlengtharray.h | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h -index f9003c31a2..731f536126 100644 ---- a/src/corelib/tools/qvarlengtharray.h -+++ b/src/corelib/tools/qvarlengtharray.h -@@ -540,6 +540,9 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA - int n = l - f; - if (n == 0) // avoid UB in std::copy() below - return ptr + f; -+ -+ Q_ASSERT(n > 0); // aend must be reachable from abegin -+ - if (QTypeInfo<T>::isComplex) { - std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f)); - T *i = ptr + s; --- -2.36.0 - -From 5854db59c3ce0f7730d5be8deeb04f16e545f3e6 Mon Sep 17 00:00:00 2001 -From: Zhang Hao <zhanghao@uniontech.com> -Date: Mon, 13 Dec 2021 16:04:37 +0800 -Subject: [PATCH 087/146] Use qint64 to replace int while - qt_transform_image_rasterize - -When rotating a very large image(for example,the image size is -42000*24000),using QTransform will cause the the variable of the -qt_transform_image_rasterize function exceeds the range of int. -Fix this by Use qint64 to replace int. - -Fixes: QTBUG-99163 -Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io> -Pick-to: 6.3 6.2 5.15 -Change-Id: I11e2873fbb1f432953a1a8e07054f9478dd90fbd -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit 8678ab9354e01b40e414c1413596dfb475752a9a) ---- - src/gui/painting/qblendfunctions_p.h | 53 ++++++++++++++++------------ - 1 file changed, 30 insertions(+), 23 deletions(-) - -diff --git a/src/gui/painting/qblendfunctions_p.h b/src/gui/painting/qblendfunctions_p.h -index 080da98ec4..6997d62b3c 100644 ---- a/src/gui/painting/qblendfunctions_p.h -+++ b/src/gui/painting/qblendfunctions_p.h -@@ -246,25 +246,32 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl, - int dudx, int dvdx, int dudy, int dvdy, int u0, int v0, - Blender blender) - { -- int fromY = qMax(qRound(topY), clip.top()); -- int toY = qMin(qRound(bottomY), clip.top() + clip.height()); -+ qint64 fromY = qMax(qRound(topY), clip.top()); -+ qint64 toY = qMin(qRound(bottomY), clip.top() + clip.height()); - if (fromY >= toY) - return; - - qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y); - qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y); -- int dx_l = int(leftSlope * 0x10000); -- int dx_r = int(rightSlope * 0x10000); -- int x_l = int((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000); -- int x_r = int((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000); -- -- int fromX, toX, x1, x2, u, v, i, ii; -+ qint64 dx_l = qint64(leftSlope * 0x10000); -+ qint64 dx_r = qint64(rightSlope * 0x10000); -+ qint64 x_l = qint64((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000); -+ qint64 x_r = qint64((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000); -+ -+ qint64 sourceRectTop = qint64(sourceRect.top()); -+ qint64 sourceRectLeft = qint64(sourceRect.left()); -+ qint64 sourceRectWidth = qint64(sourceRect.width()); -+ qint64 sourceRectHeight = qint64(sourceRect.height()); -+ qint64 clipLeft = qint64(clip.left()); -+ qint64 clipWidth = qint64(clip.width()); -+ -+ qint64 fromX, toX, x1, x2, u, v, i, ii; - DestT *line; -- for (int y = fromY; y < toY; ++y) { -+ for (qint64 y = fromY; y < toY; ++y) { - line = reinterpret_cast<DestT *>(reinterpret_cast<uchar *>(destPixels) + y * dbpl); - -- fromX = qMax(x_l >> 16, clip.left()); -- toX = qMin(x_r >> 16, clip.left() + clip.width()); -+ fromX = qMax(x_l >> 16, clipLeft); -+ toX = qMin(x_r >> 16, clipLeft + clipWidth); - if (fromX < toX) { - // Because of rounding, we can get source coordinates outside the source image. - // Clamp these coordinates to the source rect to avoid segmentation fault and -@@ -275,10 +282,10 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl, - u = x1 * dudx + y * dudy + u0; - v = x1 * dvdx + y * dvdy + v0; - for (; x1 < toX; ++x1) { -- int uu = u >> 16; -- int vv = v >> 16; -- if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() -- && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { -+ qint64 uu = u >> 16; -+ qint64 vv = v >> 16; -+ if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth -+ && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) { - break; - } - u += dudx; -@@ -290,10 +297,10 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl, - u = (x2 - 1) * dudx + y * dudy + u0; - v = (x2 - 1) * dvdx + y * dvdy + v0; - for (; x2 > x1; --x2) { -- int uu = u >> 16; -- int vv = v >> 16; -- if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() -- && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { -+ qint64 uu = u >> 16; -+ qint64 vv = v >> 16; -+ if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth -+ && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) { - break; - } - u -= dudx; -@@ -308,8 +315,8 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl, - // Beginning of the scan line, with per-pixel checks. - i = x1 - fromX; - while (i) { -- int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); -- int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); -+ qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1); -+ qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1); - blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]); - u += dudx; - v += dvdx; -@@ -348,8 +355,8 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl, - // End of the scan line, with per-pixel checks. - i = toX - x2; - while (i) { -- int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); -- int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); -+ qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1); -+ qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1); - blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]); - u += dudx; - v += dvdx; --- -2.36.0 - -From 5831dd0890cb924749dea21c808613a163741c9e Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 26 Nov 2021 13:00:37 +0100 -Subject: [PATCH 088/146] QVarLengthArray: fix insert() type/alias mismatch - between decl and impl -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The declaration of insert(it, n, t) used qsizetype for n, while the -definition used size_type. That works by chance, because the size_type -typedef comes only after the insert(it, n, t) declaration. It was -detected when size_type became a typedef in a base class of -QVarLengthArray in my local branch. - -Just use the same type name in the implementation as in the -declaration. - -In 5.15, the same issue exists (with s/qsizetype/int/). - -Pick-to: 6.2 5.15 -Change-Id: I64235eeaeaed3d43f4c070ca536474fae94c1b5d -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit fd1a42490dc14e5cf4fbbd2682722305ce7a27ed) ---- - src/corelib/tools/qvarlengtharray.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h -index 731f536126..3612afd15c 100644 ---- a/src/corelib/tools/qvarlengtharray.h -+++ b/src/corelib/tools/qvarlengtharray.h -@@ -501,7 +501,7 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA - } - - template <class T, int Prealloc> --Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, size_type n, const T &t) -+Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, int n, const T &t) - { - Q_ASSERT_X(isValidIterator(before), "QVarLengthArray::insert", "The specified const_iterator argument 'before' is invalid"); - --- -2.36.0 - -From 11f74217229252213f90dc49604634100655e116 Mon Sep 17 00:00:00 2001 -From: Liang Qi <liang.qi@qt.io> -Date: Thu, 21 Oct 2021 19:38:43 +0200 -Subject: [PATCH 089/146] xcb: avoid to use invalid pointers - -Pick-to: 6.2 5.15 5.12 -Task-number: QTBUG-96399 -Change-Id: I33909940b501cb13f78981c43f3aef9fc9d1d52d -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> -(cherry picked from commit e0938223c4b5966b94893276ba36c9b0493168c7) ---- - src/plugins/platforms/xcb/qxcbconnection.cpp | 8 +++++++- - src/plugins/platforms/xcb/qxcbconnection_basic.cpp | 8 +++++++- - 2 files changed, 14 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp -index 9abdae6a7c..8477e28df1 100644 ---- a/src/plugins/platforms/xcb/qxcbconnection.cpp -+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp -@@ -795,7 +795,13 @@ xcb_timestamp_t QXcbConnection::getTimestamp() - - xcb_window_t QXcbConnection::getSelectionOwner(xcb_atom_t atom) const - { -- return Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom)->owner; -+ auto reply = Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom); -+ if (!reply) { -+ qCDebug(lcQpaXcb) << "failed to query selection owner"; -+ return XCB_NONE; -+ } -+ -+ return reply->owner; - } - - xcb_window_t QXcbConnection::getQtSelectionOwner() -diff --git a/src/plugins/platforms/xcb/qxcbconnection_basic.cpp b/src/plugins/platforms/xcb/qxcbconnection_basic.cpp -index 18dee89adb..9dd608cdc0 100644 ---- a/src/plugins/platforms/xcb/qxcbconnection_basic.cpp -+++ b/src/plugins/platforms/xcb/qxcbconnection_basic.cpp -@@ -179,7 +179,13 @@ xcb_atom_t QXcbBasicConnection::internAtom(const char *name) - if (!name || *name == 0) - return XCB_NONE; - -- return Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name)->atom; -+ auto reply = Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name); -+ if (!reply) { -+ qCDebug(lcQpaXcb) << "failed to query intern atom: " << name; -+ return XCB_NONE; -+ } -+ -+ return reply->atom; - } - - QByteArray QXcbBasicConnection::atomName(xcb_atom_t atom) --- -2.36.0 - -From 1ccd5fafc49b5bf5f86c82f181a84c5fb34a59d9 Mon Sep 17 00:00:00 2001 -From: Volker Hilsheimer <volker.hilsheimer@qt.io> -Date: Wed, 19 May 2021 12:46:16 +0200 -Subject: [PATCH 090/146] QXcb: don't dereference pointer before checking -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The virtualDesktop pointer is expected to be populated by queryPointer, but -that method handles the case that there either is no reply, or that the -reply doesn't match, in which case the pointer remains nullptr. - -Don't dereference it afterwards without checking. - -Addresses code checker warning a179d1087759bb6ca9c3380257bd70d6 - -Pick-to: 6.1 5.15 -Change-Id: I5877f26fd3b49327c0de3f2c918bb606bee8ac57 -Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> -(cherry picked from commit c2258e85a32b66cf7cbc59a4789e68c31c9955be) ---- - src/plugins/platforms/xcb/qxcbcursor.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp -index 42c7a52bd4..a032085f0b 100644 ---- a/src/plugins/platforms/xcb/qxcbcursor.cpp -+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp -@@ -668,7 +668,8 @@ void QXcbCursor::setPos(const QPoint &pos) - { - QXcbVirtualDesktop *virtualDesktop = nullptr; - queryPointer(connection(), &virtualDesktop, nullptr); -- xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y()); -+ if (virtualDesktop) -+ xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y()); - xcb_flush(xcb_connection()); - } - --- -2.36.0 - -From e08e48a9446822d9aed5a800558be133f1f9c2f8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=98ystein=20Heskestad?= <oystein.heskestad@qt.io> -Date: Wed, 27 Oct 2021 13:07:46 +0200 -Subject: [PATCH 091/146] Add missing macOS header file that was indirectly - included before - -Change-Id: I4d4c7d4f957fc36dea5e06eb6d661aeecf6385f1 -Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> -(cherry picked from commit dece6f5840463ae2ddf927d65eb1b3680e34a547) ---- - src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h b/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h -index e070ba977d..0896917334 100644 ---- a/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h -+++ b/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h -@@ -43,6 +43,8 @@ - #include <qpa/qplatformgraphicsbuffer.h> - #include <private/qcore_mac_p.h> - -+#include <CoreGraphics/CGColorSpace.h> -+ - QT_BEGIN_NAMESPACE - - class QIOSurfaceGraphicsBuffer : public QPlatformGraphicsBuffer --- -2.36.0 - -From 7e0896210679f331ed49a3ad4f176a16e13d643c Mon Sep 17 00:00:00 2001 -From: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> -Date: Fri, 24 Sep 2021 13:14:05 +0200 -Subject: [PATCH 092/146] QThread: Reset the system thread ID when thread exits - on Unix -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Unix QThread implementation stores pthread_t as a system thread ID -when the thread is created, but never resets the system ID when -those threads are destroyed. Some implementations may reuse the -same thread IDs for new threads, and this may cause QThread::wait() -to erroneously complain that "Thread tried to wait on itself". - -This patch sets the system thread ID to nullptr when the thread is -about to exit and be destroyed by the system. - -A regression test is added to tst_qthread. - -Fixes: QTBUG-96846 -Pick-to: 5.15 6.2 -Change-Id: I0850425dd0e09af50e59c9038e7e662a2a624beb -Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io> -Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 52ad59f9eabbe1fc8ca49d117e4955f2d21d50a7) ---- - src/corelib/thread/qthread_unix.cpp | 4 ++ - .../corelib/thread/qthread/tst_qthread.cpp | 53 +++++++++++++++++++ - 2 files changed, 57 insertions(+) - -diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp -index bce6a2be0d..3c6a01ccc7 100644 ---- a/src/corelib/thread/qthread_unix.cpp -+++ b/src/corelib/thread/qthread_unix.cpp -@@ -384,6 +384,8 @@ void QThreadPrivate::finish(void *arg) - d->interruptionRequested = false; - - d->isInFinish = false; -+ d->data->threadId.storeRelaxed(nullptr); -+ - d->thread_done.wakeAll(); - } - #ifndef QT_NO_EXCEPTIONS -@@ -755,6 +757,8 @@ bool QThread::wait(QDeadlineTimer deadline) - if (!d->thread_done.wait(locker.mutex(), deadline)) - return false; - } -+ Q_ASSERT(d->data->threadId.loadRelaxed() == nullptr); -+ - return true; - } - -diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp -index 7be2f48758..ad8556de81 100644 ---- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp -+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp -@@ -106,6 +106,7 @@ private slots: - void quitLock(); - - void create(); -+ void threadIdReuse(); - }; - - enum { one_minute = 60 * 1000, five_minutes = 5 * one_minute }; -@@ -1631,5 +1632,57 @@ void tst_QThread::requestTermination() - QVERIFY(!thread.isInterruptionRequested()); - } - -+/* -+ This is a regression test for QTBUG-96846. -+ -+ Incorrect system thread ID cleanup can cause QThread::wait() to report that -+ a thread is trying to wait for itself. -+*/ -+void tst_QThread::threadIdReuse() -+{ -+ // It's important that those thread ID's are not accessed concurrently -+ Qt::HANDLE threadId1; -+ -+ auto thread1Fn = [&threadId1]() -> void { threadId1 = QThread::currentThreadId(); }; -+ QScopedPointer<QThread> thread1(QThread::create(thread1Fn)); -+ thread1->start(); -+ QVERIFY(thread1->wait()); -+ -+ // If the system thread allocated for thread1 is destroyed before thread2 is started, -+ // at least on some versions of Linux the system thread ID for thread2 would be the -+ // same as one that was used for thread1. -+ -+ // The system thread may be alive for some time after returning from QThread::wait() -+ // because the implementation is using detachable threads, so some additional time is -+ // required for the system thread to terminate. Not waiting long enough here would result -+ // in a new system thread ID being allocated for thread2 and this test passing even without -+ // a fix for QTBUG-96846. -+ bool threadIdReused = false; -+ -+ for (int i = 0; i < 42; i++) { -+ QThread::msleep(1); -+ -+ Qt::HANDLE threadId2; -+ auto waitForThread1 = [&thread1, &threadId2]() -> void { -+ threadId2 = QThread::currentThreadId(); -+ QVERIFY(thread1->wait()); -+ }; -+ -+ QScopedPointer<QThread> thread2(QThread::create(waitForThread1)); -+ thread2->start(); -+ QVERIFY(thread2->wait()); -+ -+ if (threadId1 == threadId2) { -+ qDebug("Thread ID reused at iteration %d", i); -+ threadIdReused = true; -+ break; -+ } -+ } -+ -+ if (!threadIdReused) { -+ QSKIP("Thread ID was not reused"); -+ } -+} -+ - QTEST_MAIN(tst_QThread) - #include "tst_qthread.moc" --- -2.36.0 - -From 2ff3c7b7909090b48fd6c7c41b08148e0c66fc9c Mon Sep 17 00:00:00 2001 -From: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> -Date: Mon, 27 Sep 2021 13:54:41 +0200 -Subject: [PATCH 093/146] QThread: Remove superfluous initialization of - threadId on Unix -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The thread ID is already initialized inside QThread::start() while -the thread lock is taken. This is completed before the attempted -initialization in QThreadPrivate::start() because it tries to take -the same lock. - -Task-number: QTBUG-96846 -Pick-to: 5.15 6.2 -Change-Id: Ic9588f3e2e2f3c2180afbed8ec01155b33043eb3 -Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 05870db7d0606e0a64115a523bf1366137f34700) ---- - src/corelib/thread/qthread_unix.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp -index 3c6a01ccc7..26bcc7b266 100644 ---- a/src/corelib/thread/qthread_unix.cpp -+++ b/src/corelib/thread/qthread_unix.cpp -@@ -300,7 +300,9 @@ void *QThreadPrivate::start(void *arg) - thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag)); - } - -- data->threadId.storeRelaxed(to_HANDLE(pthread_self())); -+ // threadId is set in QThread::start() -+ Q_ASSERT(pthread_equal(from_HANDLE<pthread_t>(data->threadId.loadRelaxed()), -+ pthread_self())); - set_thread_data(data); - - data->ref(); --- -2.36.0 - -From 18444ac31721daccc79520b0502a6ac334aa970a Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Tue, 7 Dec 2021 17:46:26 +0100 -Subject: [PATCH 094/146] QVarLengthArray: fix size update on failed append() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If the in-place constructor throws, the old code had already updated -the container's size(). Fix by delaying the update to after the -in-place construction. - -[ChangeLog][QtCore][QVarLengthArray] Fixed a bug whereby a failed -append() would leave the container with an inconsistent size(). - -Pick-to: 6.2 5.15 -Change-Id: Ief1e668d945149bd8ba96c8af1398baaa7876880 -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit d4a88e4ea4dd0d24c9c43553dd4c48a79635803c) - -* asturmlechner 2022-01-09: resolve conflicts with dev branch changes - s/QVERIFY_THROWS_EXCEPTION/QVERIFY_EXCEPTION_THROWN/ ---- - src/corelib/tools/qvarlengtharray.h | 11 +++-- - .../qvarlengtharray/tst_qvarlengtharray.cpp | 45 +++++++++++++++++++ - 2 files changed, 50 insertions(+), 6 deletions(-) - -diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h -index 3612afd15c..2b30da0d2c 100644 ---- a/src/corelib/tools/qvarlengtharray.h -+++ b/src/corelib/tools/qvarlengtharray.h -@@ -152,19 +152,18 @@ public: - if (s == a) { // i.e. s != 0 - T copy(t); - realloc(s, s<<1); -- const int idx = s++; -- new (ptr + idx) T(std::move(copy)); -+ new (end()) T(std::move(copy)); - } else { -- const int idx = s++; -- new (ptr + idx) T(t); -+ new (end()) T(t); - } -+ ++s; - } - - void append(T &&t) { - if (s == a) - realloc(s, s << 1); -- const int idx = s++; -- new (ptr + idx) T(std::move(t)); -+ new (end()) T(std::move(t)); -+ ++s; - } - - void append(const T *buf, int size); -diff --git a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp -index 5443cf120b..625da129c4 100644 ---- a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp -+++ b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp -@@ -29,6 +29,7 @@ - #include <QtTest/QTest> - #include <qvarlengtharray.h> - #include <qvariant.h> -+#include <qscopedvaluerollback.h> - - #include <memory> - -@@ -40,6 +41,7 @@ private slots: - void removeLast(); - void oldTests(); - void appendCausingRealloc(); -+ void appendIsStronglyExceptionSafe(); - void resize(); - void realloc(); - void reverseIterators(); -@@ -245,6 +247,49 @@ void tst_QVarLengthArray::appendCausingRealloc() - d.append(i); - } - -+void tst_QVarLengthArray::appendIsStronglyExceptionSafe() -+{ -+#ifdef QT_NO_EXCEPTIONS -+ QSKIP("This test requires exception support enabled in the compiler."); -+#else -+ static bool throwOnCopyNow = false; -+ static bool throwOnMoveNow = false; -+ struct Thrower { -+ Thrower() = default; -+ Thrower(const Thrower &) -+ { -+ if (throwOnCopyNow) -+ throw 1; -+ } -+ Thrower &operator=(const Thrower &) = default; -+ Thrower(Thrower &&) -+ { -+ if (throwOnMoveNow) -+ throw 1; -+ } -+ Thrower &operator=(Thrower &&) = default; -+ ~Thrower() = default; -+ }; -+ -+ { -+ // ### TODO: QVLA isn't exception-safe when throwing during reallocation, -+ // ### so check with size() < capacity() for now -+ QVarLengthArray<Thrower, 2> vla(1); -+ { -+ Thrower t; -+ const QScopedValueRollback rb(throwOnCopyNow, true); -+ QVERIFY_EXCEPTION_THROWN(vla.push_back(t), int); -+ QCOMPARE(vla.size(), 1); -+ } -+ { -+ const QScopedValueRollback rb(throwOnMoveNow, true); -+ QVERIFY_EXCEPTION_THROWN(vla.push_back({}), int); -+ QCOMPARE(vla.size(), 1); -+ } -+ } -+#endif -+} -+ - void tst_QVarLengthArray::resize() - { - //MOVABLE --- -2.36.0 - -From 3a60973eb646064beff9fada9447fe273a3ff66b Mon Sep 17 00:00:00 2001 -From: Antonio Rojas <arojas@archlinux.org> -Date: Tue, 11 Jan 2022 23:18:01 +0000 -Subject: [PATCH 095/146] Restore C++11 compatibility after - e8b9f4c28d3ab5e960dc54f2dc0c4b749b0b50e0 - ---- - src/corelib/thread/qthread_p.h | 2 +- - src/corelib/thread/qthread_unix.cpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h -index 227c3f0e66..c21332dc38 100644 ---- a/src/corelib/thread/qthread_p.h -+++ b/src/corelib/thread/qthread_p.h -@@ -174,7 +174,7 @@ public: - int returnCode; - - uint stackSize; -- std::underlying_type_t<QThread::Priority> priority; -+ std::underlying_type<QThread::Priority>::type priority; - - static QThread *threadForId(int id); - -diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp -index 26bcc7b266..5508b9e585 100644 ---- a/src/corelib/thread/qthread_unix.cpp -+++ b/src/corelib/thread/qthread_unix.cpp -@@ -671,7 +671,7 @@ void QThread::start(Priority priority) - // could not set scheduling hints, fallback to inheriting them - // we'll try again from inside the thread - pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); -- d->priority = static_cast<std::underlying_type_t<QThread::Priority>>(priority) | ThreadPriorityResetFlag; -+ d->priority = static_cast<std::underlying_type<QThread::Priority>::type>(priority) | ThreadPriorityResetFlag; - } - break; - } --- -2.36.0 - -From c548ee7df27576da59ce20f207ecf09c53e33e61 Mon Sep 17 00:00:00 2001 -From: Volker Hilsheimer <volker.hilsheimer@qt.io> -Date: Mon, 10 Jan 2022 18:10:48 +0100 -Subject: [PATCH 096/146] Don't access QObject::objectName during QThread start - -This is a data race, as the thread accesses QObject::objectName on the -QThread instance while the thread owning the QThread might modify the -objectName. - -Instead, make a copy in the QThreadPrivate that can be accessed safely. - -Task-number: QTBUG-96718 -Pick-to: 6.3 6.2 5.15 -Change-Id: I10701551d498993ca5055daf161636bfb648840c -Reviewed-by: Marc Mutz <marc.mutz@qt.io> -(cherry picked from commit 4a4240f1bdf184a52a22b94f37090b07434770e7) ---- - src/corelib/thread/qthread_p.h | 7 +++++++ - src/corelib/thread/qthread_unix.cpp | 7 +++++-- - src/corelib/thread/qthread_win.cpp | 8 ++++---- - 3 files changed, 16 insertions(+), 6 deletions(-) - -diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h -index c21332dc38..f32f6f0460 100644 ---- a/src/corelib/thread/qthread_p.h -+++ b/src/corelib/thread/qthread_p.h -@@ -213,6 +213,13 @@ public: - QCoreApplication::instance()->postEvent(q_ptr, new QEvent(QEvent::Quit)); - } - } -+ -+#ifndef Q_OS_INTEGRITY -+private: -+ // Used in QThread(Private)::start to avoid racy access to QObject::objectName, -+ // unset afterwards. On INTEGRITY we set the thread name before starting it. -+ QString objectName; -+#endif - }; - - #else // QT_CONFIG(thread) -diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp -index 5508b9e585..cbeb870395 100644 ---- a/src/corelib/thread/qthread_unix.cpp -+++ b/src/corelib/thread/qthread_unix.cpp -@@ -316,10 +316,10 @@ void *QThreadPrivate::start(void *arg) - // Sets the name of the current thread. We can only do this - // when the thread is starting, as we don't have a cross - // platform way of setting the name of an arbitrary thread. -- if (Q_LIKELY(thr->objectName().isEmpty())) -+ if (Q_LIKELY(thr->d_func()->objectName.isEmpty())) - setCurrentThreadName(thr->metaObject()->className()); - else -- setCurrentThreadName(thr->objectName().toLocal8Bit()); -+ setCurrentThreadName(std::exchange(thr->d_func()->objectName, {}).toLocal8Bit()); - } - #endif - -@@ -702,7 +702,10 @@ void QThread::start(Priority priority) - pthread_attr_setthreadname(&attr, metaObject()->className()); - else - pthread_attr_setthreadname(&attr, objectName().toLocal8Bit()); -+#else -+ d->objectName = objectName(); - #endif -+ - pthread_t threadId; - int code = pthread_create(&threadId, &attr, QThreadPrivate::start, this); - if (code == EPERM) { -diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp -index 9ddc6b3b34..4e76972498 100644 ---- a/src/corelib/thread/qthread_win.cpp -+++ b/src/corelib/thread/qthread_win.cpp -@@ -394,10 +394,9 @@ unsigned int __stdcall QT_ENSURE_STACK_ALIGNED_FOR_SSE QThreadPrivate::start(voi - - #if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINRT) - // sets the name of the current thread. -- QByteArray objectName = thr->objectName().toLocal8Bit(); -- qt_set_thread_name(HANDLE(-1), -- objectName.isEmpty() ? -- thr->metaObject()->className() : objectName.constData()); -+ qt_set_thread_name(HANDLE(-1), thr->d_func()->objectName.isEmpty() -+ ? thr->metaObject()->className() -+ : std::exchange(thr->d_func()->objectName, {}).toLocal8Bit().constData()); - #endif - - emit thr->started(QThread::QPrivateSignal()); -@@ -503,6 +502,7 @@ void QThread::start(Priority priority) - if (d->running) - return; - -+ d->objectName = objectName(); - d->running = true; - d->finished = false; - d->exited = false; --- -2.36.0 - -From 0d1a08f587be58762a85267a143f77281d798b61 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Tue, 4 Jan 2022 18:03:22 +0100 -Subject: [PATCH 097/146] QTzTimeZonePrivate: fix UB (data race on m_icu) - -The fallback m_icu QIcuTimeZonePrivate is lazily constructed, which -means that two threads each with their own copy of a QTimeZone with a -shared QTzTimeZonePrivate will race over who gets to set m_icu, -e.g. when concurrently calling QTimeZone::displayName(). - -Fix by protecting m_icu with a mutex. For simplicity, use a static -mutex, not a per-instance one (which would delete the -QTzTimeZonePrivate copy constructor, which clone() relies on). This is -sufficient for 5.15. For Qt 6, going forward, we could make this -lock-less, too. - -[ChangeLog][QtCore][QTimeZone] Fixed a data race on Unix platforms when -implicitly-shared copies of QTimeZone objects were used in certain ways -(e.g. calling displayName()) from different threads and Qt was -configured with ICU support. +2.49.0 -Pick-to: 6.3 6.2 5.15 -Change-Id: I7e57aef3dd44a90289ad86d0578ece1e54920730 -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> -(cherry picked from commit 11becbe910f806570ca9aa6a131b5887303e2a00) ---- - src/corelib/time/qtimezoneprivate_tz.cpp | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp -index b98fe6327a..dc584ad1bd 100644 ---- a/src/corelib/time/qtimezoneprivate_tz.cpp -+++ b/src/corelib/time/qtimezoneprivate_tz.cpp -@@ -42,6 +42,7 @@ - #include "qtimezone.h" - #include "qtimezoneprivate_p.h" - #include "private/qlocale_tools_p.h" -+#include "private/qlocking_p.h" - - #include <QtCore/QDataStream> - #include <QtCore/QDateTime> -@@ -62,6 +63,10 @@ - - QT_BEGIN_NAMESPACE - -+#if QT_CONFIG(icu) -+static QBasicMutex s_icu_mutex; -+#endif -+ - /* - Private - -@@ -670,6 +675,9 @@ QTzTimeZonePrivate::~QTzTimeZonePrivate() - - QTzTimeZonePrivate *QTzTimeZonePrivate::clone() const - { -+#if QT_CONFIG(icu) -+ const auto lock = qt_scoped_lock(s_icu_mutex); -+#endif - return new QTzTimeZonePrivate(*this); - } - -@@ -913,12 +921,14 @@ QString QTzTimeZonePrivate::displayName(qint64 atMSecsSinceEpoch, - const QLocale &locale) const - { - #if QT_CONFIG(icu) -+ auto lock = qt_unique_lock(s_icu_mutex); - if (!m_icu) - m_icu = new QIcuTimeZonePrivate(m_id); - // TODO small risk may not match if tran times differ due to outdated files - // TODO Some valid TZ names are not valid ICU names, use translation table? - if (m_icu->isValid()) - return m_icu->displayName(atMSecsSinceEpoch, nameType, locale); -+ lock.unlock(); - #else - Q_UNUSED(nameType) - Q_UNUSED(locale) -@@ -932,12 +942,14 @@ QString QTzTimeZonePrivate::displayName(QTimeZone::TimeType timeType, - const QLocale &locale) const - { - #if QT_CONFIG(icu) -+ auto lock = qt_unique_lock(s_icu_mutex); - if (!m_icu) - m_icu = new QIcuTimeZonePrivate(m_id); - // TODO small risk may not match if tran times differ due to outdated files - // TODO Some valid TZ names are not valid ICU names, use translation table? - if (m_icu->isValid()) - return m_icu->displayName(timeType, nameType, locale); -+ lock.unlock(); - #else - Q_UNUSED(timeType) - Q_UNUSED(nameType) --- -2.36.0 - -From 8af9aece6e2bfa25cbd72817ac98503778b15153 Mon Sep 17 00:00:00 2001 -From: Ivan Tkachenko <me@ratijas.tk> -Date: Wed, 12 Jan 2022 21:09:45 +0300 -Subject: [PATCH 098/146] QPathEdge: Fix array initialization - -We had a copy-paste error there: not all array members were initialized. - -Pointed out by PVS-Studio static analysis tool: -https://habr.com/ru/company/pvs-studio/blog/542760 - -Co-Authored-By: Marc Mutz <marc.mutz@qt.io> -Pick-to: 6.3 6.2 5.15 -Change-Id: I06a4f2cd928846eab6330af014981fd0a3170ba0 -Reviewed-by: Marc Mutz <marc.mutz@qt.io> -(cherry picked from commit 3215416e3c07e662f5ea99c82d4f8b08340be005) ---- - src/gui/painting/qpathclipper_p.h | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h -index 9444a87b71..18f64c5e8c 100644 ---- a/src/gui/painting/qpathclipper_p.h -+++ b/src/gui/painting/qpathclipper_p.h -@@ -156,7 +156,7 @@ public: - int vertex(Direction direction) const; - - private: -- int m_next[2][2]; -+ int m_next[2][2] = { { -1, -1 }, { -1, -1 } }; - }; - - class QPathSegments -@@ -296,10 +296,6 @@ inline QPathEdge::QPathEdge(int a, int b) - , angle(0) - , invAngle(0) - { -- m_next[0][0] = -1; -- m_next[1][0] = -1; -- m_next[0][0] = -1; -- m_next[1][0] = -1; - } - - inline int QPathEdge::next(Traversal traversal, Direction direction) const --- -2.36.0 - -From 4cdb46eb33f520045a26cc8e4e88687a0c884b82 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Wed, 26 Jan 2022 16:10:11 -0800 -Subject: [PATCH 099/146] QVersionNumber: remove "pure" declaration from - fromString() - -GCC doesn't like that we modify the contents of passed by pointer in the -pure function. Reading the description of this attribute in the GCC -manual was ambiguous then, but I can see the GCC maintainers' -interpretation. - -See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104243 - -Fixes: QTBUG-62185 -Pick-to: 5.15 6.2 6.3 -Change-Id: I6fcda969a9e9427198bffffd16cdf815d059d252 -Reviewed-by: Marc Mutz <marc.mutz@qt.io> -(cherry picked from commit 77923604130057261bf774b5cc32d849a595a1f0) ---- - src/corelib/tools/qversionnumber.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/corelib/tools/qversionnumber.h b/src/corelib/tools/qversionnumber.h -index d43b86ba51..2843f2b043 100644 ---- a/src/corelib/tools/qversionnumber.h -+++ b/src/corelib/tools/qversionnumber.h -@@ -273,10 +273,10 @@ public: - - Q_REQUIRED_RESULT Q_CORE_EXPORT QString toString() const; - #if QT_STRINGVIEW_LEVEL < 2 -- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(const QString &string, int *suffixIndex = nullptr); -+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(const QString &string, int *suffixIndex = nullptr); - #endif -- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr); -- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr); -+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr); -+ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr); - - private: - #ifndef QT_NO_DATASTREAM --- -2.36.0 - -From 0159bfec704a1d8e9ea943efe334f38b09d05393 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Thu, 3 Feb 2022 11:01:33 +0100 -Subject: [PATCH 100/146] Fix infinite loop in dash stroker - -When the positions were large enough, we would get precision errors -with the floating point numbers. - -We calculate the relative position: - dpos = pos + dashes[istart] - doffset - estart -and then later - pos = dpos + estart - -If estart is a huge number (range of 10^18) and dashes[istart] is -a low number (10^1), then estart + dashes[istart] == estart and -the loop will never progress, dpos will be 0. - -Since the loop should never iterate more than dashCount times -(since we cut away all full dash sequences before entering it), -we add a failsafe that exits the loop if it detects the error. - -Fixes: QTBUG-99690 -Pick-to: 5.15 6.2 6.3 -Change-Id: Ia6a42f21b6b4c6adf5cdd703b6483750513a88ba -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit 26a0638222933fc549f250333c28d0184205b704) - -Changed a bit by Albert Astals Cid so it applies to the kde/5.15 branch ---- - src/gui/painting/qstroker.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp -index 22302f9790..07fd1ac105 100644 ---- a/src/gui/painting/qstroker.cpp -+++ b/src/gui/painting/qstroker.cpp -@@ -1179,6 +1179,7 @@ void QDashStroker::processCurrentSubpath() - - bool done = pos >= estop; - -+ int maxDashes = dashCount; - if (clipping) { - // Check if the entire line can be clipped away. - if (!lineIntersectsRect(prev, e, clip_tl, clip_br)) { -@@ -1196,7 +1197,7 @@ void QDashStroker::processCurrentSubpath() - done = true; - } else { // Dash is on this line - pos = dpos + estart; -- done = pos >= estop; -+ done = --maxDashes > 0 ? pos >= estop : estop; - if (++idash >= dashCount) - idash = 0; - doffset = 0; // full segment so no offset on next. --- -2.36.0 - -From b32cc3bdb90afbd7a5ff7028d55a78bb616b18fc Mon Sep 17 00:00:00 2001 -From: Ilya Fedin <fedin-ilja2010@ya.ru> -Date: Thu, 10 Feb 2022 02:18:30 +0400 -Subject: [PATCH 101/146] Make indicator-application hack work in flatpak - -Flatpak doesn't share $XDG_RUNTIME_DIR with the host making -QSystemTrayIcon not to work on Xubuntu/Ubuntu MATE/Ubuntu Budgie. - -Although, it shares a subfolder, according to -https://docs.flatpak.org/en/latest/sandbox-permissions.html - -Amends 0baa26638d7d14b6609dab191c4ea0cc1d3ff50a - -Pick-to: 6.3 6.2 5.15 -Change-Id: I2d0043fc5a4c2c51e8fa1a920f3cada3b07eba6d -Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> -Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> -(cherry picked from commit bc3723d4620718dfe8bd0165e9ef8ba45a3da262) ---- - .../themes/genericunix/dbustray/qdbustrayicon.cpp | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp b/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp -index bede70975a..76bfec5e5a 100644 ---- a/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp -+++ b/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp -@@ -71,8 +71,12 @@ Q_LOGGING_CATEGORY(qLcTray, "qt.qpa.tray") - static QString iconTempPath() - { - QString tempPath = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation); -- if (!tempPath.isEmpty()) -+ if (!tempPath.isEmpty()) { -+ QString flatpakId = qEnvironmentVariable("FLATPAK_ID"); -+ if (!flatpakId.isEmpty() && QFileInfo::exists(QLatin1String("/.flatpak-info"))) -+ tempPath += QLatin1String("/app/") + flatpakId; - return tempPath; -+ } - - tempPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation); - --- -2.36.0 - -From 153acd65d259826eba6d38fee59a39308d69b009 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 11 Feb 2022 09:12:49 +0100 -Subject: [PATCH 102/146] QDesktopServices: fix UB (data race on handlers) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The handlerDestroyed() function is connected to the handler QObject's -destroyed() signal and removes all entries from the registry for which -the destroyed object was listed as the handler. - -While handlerDestroyed() is always executed in the context of the -thread owning QOpenUrlHandlerRegistry-as-a-QObject, the documentation -explicitly states that "the handler will always be called from within -the same thread that calls QDesktopServices::openUrl()", implying that -calling openUrl() from a non-GUI thread is supported. The presence of -the mutex also indicates that this should work. - -But then the unprotected access to the handlers variable in -handlerDestroyed() is a data race, because nothing prevents a handler -object from being destroyed concurrent to an openUrl() call. - -Fix by locking the mutex. - -Fixes: QTBUG-100777 -Pick-to: 6.3 6.2 5.15 -Change-Id: I9ef857efa609b4d16ee21063ccccd316e119576b -Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit 42e13b7c61693ca95e119106d4f6dbd2bcf2308d) ---- - src/gui/util/qdesktopservices.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp -index fbb63a9408..1ed2178913 100644 ---- a/src/gui/util/qdesktopservices.cpp -+++ b/src/gui/util/qdesktopservices.cpp -@@ -54,6 +54,8 @@ - #include <qpa/qplatformintegration.h> - #include <qdir.h> - -+#include <QtCore/private/qlocking_p.h> -+ - QT_BEGIN_NAMESPACE - - class QOpenUrlHandlerRegistry : public QObject -@@ -81,6 +83,7 @@ Q_GLOBAL_STATIC(QOpenUrlHandlerRegistry, handlerRegistry) - - void QOpenUrlHandlerRegistry::handlerDestroyed(QObject *handler) - { -+ const auto lock = qt_scoped_lock(mutex); - HandlerHash::Iterator it = handlers.begin(); - while (it != handlers.end()) { - if (it->receiver == handler) { --- -2.36.0 - -From ec1b766cca328c468ab6d4f72ceacfdda1a3a6b2 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Fri, 11 Feb 2022 14:09:25 +0100 -Subject: [PATCH 103/146] Fix integer overflow for broken QPainterPaths - -With some bogus input, we can end up with NaN in the -bounding rects of the control points. This in turn -causes problems later when it is converted to ints -and used in code. To avoid it, we exit early if the -rect is invalid (negative or NaN size). - -Pick-to: 5.15 6.2 6.3 -Fixes: QTBUG-100217 -Change-Id: Idbc6700b85cb30198d69fedbf8f3be3e1ab65e40 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit d6c4a3edf9adb02b6f96d43768db9f90a6623de7) ---- - src/gui/painting/qpaintengine_raster.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp -index a3e199cec9..b25700692c 100644 ---- a/src/gui/painting/qpaintengine_raster.cpp -+++ b/src/gui/painting/qpaintengine_raster.cpp -@@ -1793,7 +1793,7 @@ void QRasterPaintEngine::fill(const QVectorPath &path, const QBrush &brush) - QRectF cpRect = path.controlPointRect(); - const QRectF pathDeviceRect = s->matrix.mapRect(cpRect); - // Skip paths that by conservative estimates are completely outside the paint device. -- if (!pathDeviceRect.intersects(QRectF(d->deviceRect))) -+ if (!pathDeviceRect.intersects(QRectF(d->deviceRect)) || !pathDeviceRect.isValid()) - return; - - ProcessSpans blend = d->getBrushFunc(pathDeviceRect, &s->brushData); --- -2.36.0 - -From 4a032cc16c36d3432b6a549ce0c37e3cd4502bf4 Mon Sep 17 00:00:00 2001 +From 1f02ba8721b326212d3fed253ecd552df5cb0515 Mon Sep 17 00:00:00 2001 From: Patrick Griffis <tingping@tingping.se> Date: Mon, 7 Feb 2022 16:05:02 -0600 -Subject: [PATCH 104/146] Respect AT_SPI_BUS_ADDRESS env var on Linux +Subject: [PATCH 027/123] Respect AT_SPI_BUS_ADDRESS env var on Linux Change-Id: Ic277b5ebe2d752360cebdb2ff728ca219f9d7124 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> @@ -48145,7 +42633,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> 1 file changed, 8 insertions(+) diff --git a/src/platformsupport/linuxaccessibility/dbusconnection.cpp b/src/platformsupport/linuxaccessibility/dbusconnection.cpp -index 45ddc8e496..17fc130ed8 100644 +index 45ddc8e4963..17fc130ed87 100644 --- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp +++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp @@ -69,6 +69,14 @@ QT_BEGIN_NAMESPACE @@ -48164,457 +42652,12 @@ index 45ddc8e496..17fc130ed8 100644 QDBusConnection c = QDBusConnection::sessionBus(); if (!c.isConnected()) { -- -2.36.0 - -From 698c07a6aa7cef953326f13038f3277937bb471c Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 11 Feb 2022 17:16:49 +0100 -Subject: [PATCH 105/146] QPkmHandler: make const what it never modified -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Pick-to: 6.3 6.2 5.15 -Change-Id: I0bda0d93ebe60d4923f3e9eb059cddb61192b1b5 -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit b5c4d1f50b1e2d44fbb3535ebedc565525ecc64f) ---- - src/gui/util/qpkmhandler.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/gui/util/qpkmhandler.cpp b/src/gui/util/qpkmhandler.cpp -index e0c3b75efe..3414f9d8ba 100644 ---- a/src/gui/util/qpkmhandler.cpp -+++ b/src/gui/util/qpkmhandler.cpp -@@ -57,7 +57,7 @@ struct PkmType - quint32 bytesPerBlock; - }; - --static PkmType typeMap[5] = { -+static constexpr PkmType typeMap[5] = { - { 0x8D64, 8 }, // GL_ETC1_RGB8_OES - { 0x9274, 8 }, // GL_COMPRESSED_RGB8_ETC2 - { 0, 0 }, // unused (obsolete) --- -2.36.0 - -From 3e2e2d04240770d317c7b0beb1599bb00c7bfe8d Mon Sep 17 00:00:00 2001 -From: Liang Qi <liang.qi@qt.io> -Date: Mon, 28 Feb 2022 15:35:11 +0100 -Subject: [PATCH 106/146] xcb: fix a typo for WindowTypes - -Pick-to: 6.3 6.2 5.15 -Fixes: QTBUG-101306 -Change-Id: If02fe4997d27b952886ce664133d1aafc2b41669 -Reviewed-by: Liang Qi <liang.qi@qt.io> -(cherry picked from commit cfc2e267a4ed8cc724577d1b96f0d12bb45bfbfa) - -* asturmlechner 2022-03-01: Fix conflict from dev branch commit - 9166abcd997f57625c17db8e8734988ff303217e ---- - src/plugins/platforms/xcb/qxcbwindow.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp -index c27da3cbc8..fff280fe4f 100644 ---- a/src/plugins/platforms/xcb/qxcbwindow.cpp -+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp -@@ -1619,7 +1619,7 @@ void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::W - break; - } - -- if ((flags & Qt::FramelessWindowHint) && !(type & QXcbWindowFunctions::KdeOverride)) { -+ if ((flags & Qt::FramelessWindowHint) && !(types & QXcbWindowFunctions::KdeOverride)) { - // override netwm type - quick and easy for KDE noborder - atoms.append(atom(QXcbAtom::_KDE_NET_WM_WINDOW_TYPE_OVERRIDE)); - } --- -2.36.0 - -From f41f78414f0d5e8876aeb1978e104fb05b2ebcf4 Mon Sep 17 00:00:00 2001 -From: Zhang Hao <zhanghao@uniontech.com> -Date: Thu, 13 Jan 2022 16:30:12 +0800 -Subject: [PATCH 107/146] Fix UI mismatch when QPrinter::setDuplex - -Amends fa854f214a3c812e5548ff55d179dd07ef99053b. If user call -QPrinter::setDuplex method, the QPrintDialog explicitDuplexMode value -won't update. - -Fix this by: -1) handle device-specific default and value set in QPrinter in -QCupsPrintEngine(Private) -2) handle the explicitly user-selected value in QPrintDialog(Private) - -Done-with: Michael Weghorn <m.weghorn@posteo.de> -Pick-to: 5.15 6.2 6.3 -Fixes: QTBUG-99504 -Change-Id: I1a471a8554e83aa4bec8bb95fcc95f9135b0ac8c -Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit 72931f492092a67c39cd7fb124d54e8752ee4933) ---- - src/plugins/printsupport/cups/qcupsprintengine.cpp | 11 ++++++++--- - src/plugins/printsupport/cups/qcupsprintengine_p.h | 1 + - src/printsupport/dialogs/qprintdialog_unix.cpp | 7 ++++--- - 3 files changed, 13 insertions(+), 6 deletions(-) - -diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp -index 43d5e119ad..1f9cbc4565 100644 ---- a/src/plugins/printsupport/cups/qcupsprintengine.cpp -+++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp -@@ -89,8 +89,10 @@ void QCupsPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &v - break; - case PPK_Duplex: { - QPrint::DuplexMode mode = QPrint::DuplexMode(value.toInt()); -- if (mode != d->duplex && d->m_printDevice.supportedDuplexModes().contains(mode)) -+ if (d->m_printDevice.supportedDuplexModes().contains(mode)) { - d->duplex = mode; -+ d->duplexRequestedExplicitly = true; -+ } - break; - } - case PPK_PrinterName: -@@ -277,9 +279,12 @@ void QCupsPrintEnginePrivate::changePrinter(const QString &newPrinter) - m_printDevice.swap(printDevice); - printerName = m_printDevice.id(); - -- // Check if new printer supports current settings, otherwise us defaults -- if (duplex != QPrint::DuplexAuto && !m_printDevice.supportedDuplexModes().contains(duplex)) -+ // in case a duplex value was explicitly set, check if new printer supports current value, -+ // otherwise use device default -+ if (!duplexRequestedExplicitly || !m_printDevice.supportedDuplexModes().contains(duplex)) { - duplex = m_printDevice.defaultDuplexMode(); -+ duplexRequestedExplicitly = false; -+ } - QPrint::ColorMode colorMode = grayscale ? QPrint::GrayScale : QPrint::Color; - if (!m_printDevice.supportedColorModes().contains(colorMode)) - grayscale = m_printDevice.defaultColorMode() == QPrint::GrayScale; -diff --git a/src/plugins/printsupport/cups/qcupsprintengine_p.h b/src/plugins/printsupport/cups/qcupsprintengine_p.h -index c021b0c643..8f81fe478d 100644 ---- a/src/plugins/printsupport/cups/qcupsprintengine_p.h -+++ b/src/plugins/printsupport/cups/qcupsprintengine_p.h -@@ -100,6 +100,7 @@ private: - QStringList cupsOptions; - QString cupsTempFile; - QPrint::DuplexMode duplex; -+ bool duplexRequestedExplicitly = false; - }; - - QT_END_NAMESPACE -diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp -index c5b845f4ec..236e9b4980 100644 ---- a/src/printsupport/dialogs/qprintdialog_unix.cpp -+++ b/src/printsupport/dialogs/qprintdialog_unix.cpp -@@ -702,13 +702,14 @@ void QPrintDialogPrivate::selectPrinter(const QPrinter::OutputFormat outputForma - else - options.grayscale->setChecked(true); - -- // keep duplex value explicitly set by user, if any, and selected printer supports it; -- // use device default otherwise -+ // duplex priorities to be as follows: -+ // 1) a user-selected duplex value in the dialog has highest prority -+ // 2) duplex value set in the QPrinter - QPrint::DuplexMode duplex; - if (explicitDuplexMode != QPrint::DuplexAuto && supportedDuplexMode.contains(explicitDuplexMode)) - duplex = explicitDuplexMode; - else -- duplex = top->d->m_currentPrintDevice.defaultDuplexMode(); -+ duplex = static_cast<QPrint::DuplexMode>(p->duplex()); - switch (duplex) { - case QPrint::DuplexNone: - options.noDuplex->setChecked(true); break; --- -2.36.0 - -From be6a9f312efda8045b3f0d197b1dade95c4ed039 Mon Sep 17 00:00:00 2001 -From: Edward Welbourne <edward.welbourne@qt.io> -Date: Mon, 29 Nov 2021 13:41:09 +0100 -Subject: [PATCH 108/146] Close leak of QOCIDateTime object - -Noticed while reviewing usage of this type. The code has a whole -TempStorage class to take care of keeping allocated memory live until -we're done with it, explicitly including date-time objects as a -special case, but neglected to use it in one place. - -Pick-to: 6.2 5.15 -Change-Id: Ic94c56d67dda6dc3ee36a025a2e0149f6b2a1837 -Reviewed-by: Andy Shaw <andy.shaw@qt.io> -(cherry picked from commit 24e437041487a198057c02a1dd60c78d024af11f) ---- - src/plugins/sqldrivers/oci/qsql_oci.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/plugins/sqldrivers/oci/qsql_oci.cpp b/src/plugins/sqldrivers/oci/qsql_oci.cpp -index 8da9837a59..feff54de4a 100644 ---- a/src/plugins/sqldrivers/oci/qsql_oci.cpp -+++ b/src/plugins/sqldrivers/oci/qsql_oci.cpp -@@ -1483,6 +1483,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b - columns[i].lengths[row] = columns[i].maxLen; - QOCIDateTime *date = new QOCIDateTime(d->env, d->err, val.toDateTime()); - *reinterpret_cast<OCIDateTime**>(dataPtr) = date->dateTime; -+ tmpStorage.dateTimes.append(date); - break; - } - case QVariant::Int: --- -2.36.0 - -From 903872d13e58883ef5363b6cb3585eccadd8f8f3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io> -Date: Wed, 5 Jan 2022 23:10:33 +0100 -Subject: [PATCH 109/146] Make QCursor::setPos() use the correct screen -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -setPos() takes a screen argument, however this argument -indicates which cursor should be moved only and is -not usable as an argument to toNativePixels() since -the position may be on a sibling screen. - -Add call to QScreen::virtualSiblingAt to get the target -screen. - -Task-number: QTBUG-99009 -Pick-to: 6.3 6.2 5.15 -Change-Id: I8714ebc93a283c58bc67911315f787c484fb0dd8 -Reviewed-by: Liang Qi <liang.qi@qt.io> -Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> -(cherry picked from commit eef865cdc594c20b6f468d206475ddab48e2819a) - -* asturmlechner 2022-03-03: Fix conflict with dev branch: Non-existing - file tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp ---- - src/gui/kernel/qcursor.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp -index d6ccaff8ed..455088241c 100644 ---- a/src/gui/kernel/qcursor.cpp -+++ b/src/gui/kernel/qcursor.cpp -@@ -251,7 +251,8 @@ void QCursor::setPos(QScreen *screen, int x, int y) - { - if (screen) { - if (QPlatformCursor *cursor = screen->handle()->cursor()) { -- const QPoint devicePos = QHighDpi::toNativePixels(QPoint(x, y), screen); -+ const QPoint pos(x, y); -+ const QPoint devicePos = QHighDpi::toNativePixels(pos, screen->virtualSiblingAt(pos)); - // Need to check, since some X servers generate null mouse move - // events, causing looping in applications which call setPos() on - // every mouse move event. --- -2.36.0 - -From bc39ee7fc28bf8b111ae8b9d0b9bde674571e5e5 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Thu, 13 Jan 2022 09:13:48 +0100 -Subject: [PATCH 110/146] Fix crash when text shaping fails - -If text shaping failed for some reason (for example if the -string passed to Harfbuzz contains ignorables only), we -would return a single glyph for the whole string. But we -forgot to initialize the log clusters array, which could -cause crashes later when this was read. We initialize a -single cluster consisting of the "missing glyph" glyph to -be consistent. - -Amends fccd419dd632306a4bd85928223e0a56a59510ef. - -[ChangeLog][QtGui][Text] Fixed a possible crash with certain fonts -when shaping strings consisting only of control characters. - -Pick-to: 5.15 6.2 6.3 -Task-number: QTBUG-89155 -Fixes: QTBUG-92358 -Change-Id: I1ec0237d99b48be2a8bb340f0feb056bca4fdffe -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -(cherry picked from commit 413cd06c88d4ccc5e1383d5f1f556fd35333dcbc) ---- - src/gui/text/qtextengine.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp -index ab5ea3a3d6..ec38d66b1c 100644 ---- a/src/gui/text/qtextengine.cpp -+++ b/src/gui/text/qtextengine.cpp -@@ -1559,6 +1559,12 @@ void QTextEngine::shapeText(int item) const - // Overwrite with 0 token to indicate failure - QGlyphLayout g = availableGlyphs(&si); - g.glyphs[0] = 0; -+ g.attributes[0].clusterStart = true; -+ -+ ushort *log_clusters = logClusters(&si); -+ for (int i = 0; i < itemLength; ++i) -+ log_clusters[i] = 0; -+ - return; - } - --- -2.36.0 +2.49.0 -From 1df669f178338a76a698fb5c1f1fa12dea7db2d2 Mon Sep 17 00:00:00 2001 -From: Edward Welbourne <edward.welbourne@qt.io> -Date: Mon, 24 Jan 2022 12:44:38 +0100 -Subject: [PATCH 111/146] Check for null driver() before trying to exec() - -QSqlQuery::exec() took for granted that it can dereference driver(), -which should be true for all sane usage; however, it should not crash -if used misguidedly. Added regression test, based on bug report's -reproducer, which crashes without the fix. - -Fixes: QTBUG-100037 -Pick-to: 6.3 6.2 5.15 5.12 -Change-Id: I94600bc60f89e82a1121b418144006a683921a38 -Reviewed-by: Andy Shaw <andy.shaw@qt.io> -(cherry picked from commit 78eac57f3dc788345f8f3e9b6dbd3dce70b8f511) ---- - src/sql/kernel/qsqlquery.cpp | 6 +++- - .../sql/kernel/qsqlquery/tst_qsqlquery.cpp | 33 ++++++++++++++++++- - 2 files changed, 37 insertions(+), 2 deletions(-) - -diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp -index 32c6166c79..60afef10c3 100644 ---- a/src/sql/kernel/qsqlquery.cpp -+++ b/src/sql/kernel/qsqlquery.cpp -@@ -1,6 +1,6 @@ - /**************************************************************************** - ** --** Copyright (C) 2016 The Qt Company Ltd. -+** Copyright (C) 2022 The Qt Company Ltd. - ** Contact: https://www.qt.io/licensing/ - ** - ** This file is part of the QtSql module of the Qt Toolkit. -@@ -377,6 +377,10 @@ bool QSqlQuery::exec(const QString& query) - QElapsedTimer t; - t.start(); - #endif -+ if (!driver()) { -+ qWarning("QSqlQuery::exec: called before driver has been set up"); -+ return false; -+ } - if (d->ref.loadRelaxed() != 1) { - bool fo = isForwardOnly(); - *this = QSqlQuery(driver()->createResult()); -diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -index 76df61c892..dc42b15a69 100644 ---- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -@@ -1,6 +1,6 @@ - /**************************************************************************** - ** --** Copyright (C) 2016 The Qt Company Ltd. -+** Copyright (C) 2022 The Qt Company Ltd. - ** Contact: https://www.qt.io/licensing/ - ** - ** This file is part of the test suite of the Qt Toolkit. -@@ -68,6 +68,8 @@ private slots: - void query_exec(); - void execErrorRecovery_data() { generic_data(); } - void execErrorRecovery(); -+ void prematureExec_data() { generic_data(); } -+ void prematureExec(); - void first_data() { generic_data(); } - void first(); - void next_data() { generic_data(); } -@@ -2770,6 +2772,35 @@ void tst_QSqlQuery::execErrorRecovery() - QVERIFY_SQL( q, exec() ); - } - -+void tst_QSqlQuery::prematureExec() -+{ -+ QFETCH(QString, dbName); -+ // We only want the engine name, for addDatabase(): -+ int cut = dbName.indexOf(QChar('@')); -+ if (cut < 0) -+ QSKIP("Failed to parse database type out of name"); -+ dbName.truncate(cut); -+ cut = dbName.indexOf(QChar('_')); -+ if (cut >= 0) -+ dbName = dbName.sliced(cut + 1); -+ -+ auto db = QSqlDatabase::addDatabase(dbName); -+ QSqlQuery q(db); -+ -+ QTest::ignoreMessage(QtWarningMsg, -+ "QSqlDatabasePrivate::removeDatabase: connection " -+ "'qt_sql_default_connection' is still in use, all " -+ "queries will cease to work."); -+ QTest::ignoreMessage(QtWarningMsg, -+ "QSqlDatabasePrivate::addDatabase: duplicate connection name " -+ "'qt_sql_default_connection', old connection removed."); -+ auto otherDb = QSqlDatabase::addDatabase(dbName); -+ -+ QTest::ignoreMessage(QtWarningMsg, "QSqlQuery::exec: called before driver has been set up"); -+ // QTBUG-100037: shouldn't crash ! -+ QVERIFY(!q.exec("select stuff from TheVoid")); -+} -+ - void tst_QSqlQuery::lastInsertId() - { - QFETCH( QString, dbName ); --- -2.36.0 - -From b313b6b2b665af47010b86e20dedbfdc32d768d3 Mon Sep 17 00:00:00 2001 -From: Volker Hilsheimer <volker.hilsheimer@qt.io> -Date: Tue, 7 Dec 2021 14:36:33 +0100 -Subject: [PATCH 112/146] Test for nullptr before dereferencing the screen - -Touch event processing might still be ongoing even after the screen -has been disconnected. If that screen was also the primary screen, we -would dereference nullptr. - -Check for nullptr to avoid potential crashes during shutdown. - -Fixes: QTBUG-95192 -Pick-to: 6.2 5.15 -Change-Id: I49ccd30c4126fe12cf5bb675e532e6e59b40b9c1 -Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> -(cherry picked from commit 30b0b72453239666952ab516c618c19f0ca0aca6) - -* asturmlechner 2022-03-03: Resolve conflict with dev branch commit - 4b899a29fa5a8acc381673e6b527345f8eaad7b5 ---- - src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp | 2 +- - src/platformsupport/input/libinput/qlibinputtouch.cpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp -index f57e1540e0..80a911a210 100644 ---- a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp -+++ b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp -@@ -756,7 +756,7 @@ QRect QEvdevTouchScreenData::screenGeometry() const - if (m_screen) - screen = m_screen; - } -- return QHighDpi::toNativePixels(screen->geometry(), screen); -+ return screen ? QHighDpi::toNativePixels(screen->geometry(), screen) : QRect(); - } - - void QEvdevTouchScreenData::reportPoints() -diff --git a/src/platformsupport/input/libinput/qlibinputtouch.cpp b/src/platformsupport/input/libinput/qlibinputtouch.cpp -index 446218e4b3..6eb3a8a355 100644 ---- a/src/platformsupport/input/libinput/qlibinputtouch.cpp -+++ b/src/platformsupport/input/libinput/qlibinputtouch.cpp -@@ -82,7 +82,7 @@ QPointF QLibInputTouch::getPos(libinput_event_touch *e) - if (m_screen) - screen = m_screen; - } -- const QRect geom = QHighDpi::toNativePixels(screen->geometry(), screen); -+ const QRect geom = screen ? QHighDpi::toNativePixels(screen->geometry(), screen) : QRect(); - const double x = libinput_event_touch_get_x_transformed(e, geom.width()); - const double y = libinput_event_touch_get_y_transformed(e, geom.height()); - return geom.topLeft() + QPointF(x, y); --- -2.36.0 - -From bf4e69863999b1259a51c8c8db78d965d6af593d Mon Sep 17 00:00:00 2001 +From 4a7e930da496c4532aa5b681b424e99f80f77a3d Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer <volker.hilsheimer@qt.io> Date: Thu, 4 Jun 2020 10:37:59 +0200 -Subject: [PATCH 113/146] Fix check for malformed input when decoding +Subject: [PATCH 028/123] Fix check for malformed input when decoding translations Any integer modulo 1 can never be anything else but 0, so the statement @@ -48636,10 +42679,10 @@ Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp -index 36d9ea4998..b610fb0b24 100644 +index bdcd0166309..e4375e7e408 100644 --- a/src/corelib/kernel/qtranslator.cpp +++ b/src/corelib/kernel/qtranslator.cpp -@@ -897,7 +897,7 @@ static QString getMessage(const uchar *m, const uchar *end, const char *context, +@@ -907,7 +907,7 @@ static QString getMessage(const uchar *m, const uchar *end, const char *context, goto end; case Tag_Translation: { int len = read32(m); @@ -48649,235 +42692,12 @@ index 36d9ea4998..b610fb0b24 100644 m += 4; if (!numerus--) { -- -2.36.0 - -From 95e10f374bec1f29af07ff54a9eba6be3c835ea2 Mon Sep 17 00:00:00 2001 -From: Nicolas Fella <nicolas.fella@kdab.com> -Date: Sat, 10 Jul 2021 16:59:55 +0200 -Subject: [PATCH 114/146] [qgenericunixservices] Consider kde-open5 for opening - URLs - -When xdg-open is not found the KDE-specific kfmclient is considered. -That however is part of Konqueror and may not be present as well. -Plasma offers another option, kde-open5, which should be considered -before falling back to webbrowsers. -This is particularly for non-http URLs like tel: where opening in a -webbrowser is not wanted. - -Pick-to: 6.2 6.1 5.15 -Change-Id: I2b606562e21568fbe43f4593de67a1d467918cc4 -Reviewed-by: David Faure <david.faure@kdab.com> -(cherry picked from commit 74a91773afa395ee0cefcdcd25bb3947b60a0b63) ---- - .../services/genericunix/qgenericunixservices.cpp | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp -index 1a3cab275d..f0d1722c95 100644 ---- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp -+++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp -@@ -142,6 +142,8 @@ static inline bool detectWebBrowser(const QByteArray &desktop, - } - - if (desktop == QByteArray("KDE")) { -+ if (checkExecutable(QStringLiteral("kde-open5"), browser)) -+ return true; - // Konqueror launcher - if (checkExecutable(QStringLiteral("kfmclient"), browser)) { - browser->append(QLatin1String(" exec")); --- -2.36.0 +2.49.0 -From ec2e26e9ab09c7b227b39b78312be9a364a026d1 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Wed, 9 Feb 2022 10:49:15 -0800 -Subject: [PATCH 115/146] QFreeList: replace a Q_ASSERT(false) with - Q_UNREACHABLE() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Q_ASSERT goes away in release builds, Q_UNREACHABLE() does not. - -This also solves the GCC 12 warning about out-of-bounds access in -QAbstractEventDispatcherPrivate::allocateTimerId(): - -In member function ‘_PTp* std::__atomic_base<_PTp*>::load(std::memory_order) const [with _PTp = QFreeListElement<void>]’, - inlined from ‘_Tp* std::atomic<_Tp*>::load(std::memory_order) const [with _Tp = QFreeListElement<void>]’ at atomic:579:25, - inlined from ‘static T QAtomicOps<X>::loadAcquire(const std::atomic<T>&) [with T = QFreeListElement<void>*; X = QFreeListElement<void>*]’ at thread/qatomic_cxx11.h:249:29, - inlined from ‘X* QBasicAtomicPointer<X>::loadAcquire() const [with X = QFreeListElement<void>]’ at thread/qbasicatomic.h:233:64, - inlined from ‘int QFreeList<T, ConstantsType>::next() [with T = void; ConstantsType = QtTimerIdFreeListConstants]’ at qfreelist_p.h:245:34, - inlined from ‘static int QAbstractEventDispatcherPrivate::allocateTimerId()’ at kernel/qabstracteventdispatcher.cpp:99:24: -bits/atomic_base.h:820:31: warning: ‘long unsigned int __atomic_load_8(const volatile void*, int)’ writing 8 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=] - 820 | return __atomic_load_n(&_M_p, int(__m)); - | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ -In file included from qglobalstatic.h:1, - from qglobal.h:1395: -qglobalstatic.h: In static member function ‘static int QAbstractEventDispatcherPrivate::allocateTimerId()’: -qglobalstatic.h:127:23: note: at offset -8 into destination object ‘holder’ of size 56 - 127 | static Holder holder; - | ^~~~~~ - -Pick-to: 5.15 6.2 6.3 -Change-Id: I74249c52dc02478ba93cfffd16d232b275d5d216 -Reviewed-by: Marc Mutz <marc.mutz@qt.io> -(cherry picked from commit dcdb8884e732802c92ae96b6d5b21331ddaef55b) ---- - src/corelib/tools/qfreelist_p.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h -index 5ba23b344b..9974102136 100644 ---- a/src/corelib/tools/qfreelist_p.h -+++ b/src/corelib/tools/qfreelist_p.h -@@ -161,7 +161,7 @@ class QFreeList - return i; - x -= size; - } -- Q_ASSERT(false); -+ Q_UNREACHABLE(); - return -1; - } - --- -2.36.0 - -From 9eca8eb7d938edc32c2459f63ce7d229af77fe16 Mon Sep 17 00:00:00 2001 -From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -Date: Thu, 24 Feb 2022 01:10:43 +0100 -Subject: [PATCH 116/146] QLabel::setPixmap(): remove the no-op self-masking - -When calling QLabel::setPixmap() with a 1bpp pixmap (i.e. a bitmap), and -that pixmap didn't have a mask set, QLabel would then set the pixmap as -its own mask. - -This seems to be a no-op due to how QPixmap::setMask is coded: - - void QPixmap::setMask(const QBitmap &mask) { - - // ... - - if (static_cast<const QPixmap &>(mask).data == data) // trying to selfmask - return; - - } - -Moreover, in order to convert the pixmap to a QBitmap, the code would just -straight downcast it, triggering UB (if the input to setPixmap wasn't a -QBitmap to begin with). - -I *guess* this was done this way to avoid a QBitmap::fromPixmap call, -which however is not expensive at all if the pixmap is already 1bpp, -which QLabel::setPixmap checks explicitly (before attempting to mask the -pixmap). I don't know the historical reasons for the code to have the -shape it had (and the code history is from before open governance). - -So get two birds with one stone: remove the no-op and also the UB. - -Change-Id: Ibab20492c2945bd1d01f98a18b168fabc56292b0 -Pick-to: 6.3 6.2 5.15 -Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit b20cf7feee6413a40a69c9e41544d44c53ee6877) ---- - src/widgets/widgets/qlabel.cpp | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp -index 30ff80cbb0..cf2605c17c 100644 ---- a/src/widgets/widgets/qlabel.cpp -+++ b/src/widgets/widgets/qlabel.cpp -@@ -421,9 +421,6 @@ void QLabel::setPixmap(const QPixmap &pixmap) - d->pixmap = new QPixmap(pixmap); - } - -- if (d->pixmap->depth() == 1 && !d->pixmap->mask()) -- d->pixmap->setMask(*((QBitmap *)d->pixmap)); -- - d->updateLabel(); - } - --- -2.36.0 - -From 32959ea3471d3b6b4feded8d4423b15fd4368c30 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Tue, 31 Aug 2021 15:34:10 +0200 -Subject: [PATCH 117/146] When clearing QPixmapCache, stop its flushing timer - -No need for timer event to reduce cache size when it is already empty. - -May also avoid the "Timers cannot be stopped from another thread" -warning at exit, if the global cache object is then deleted by another -thread. - -Fixes: QTBUG-96101 -Pick-to: 6.2 5.15 -Change-Id: Id1aeecfbb43a25a887ebd5cc7242749a74290bb0 -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit dc65267ad8c086950c23185c8cebc304a8d1c3dc) ---- - src/gui/image/qpixmapcache.cpp | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp -index 9709df9e0c..b6e5e70f55 100644 ---- a/src/gui/image/qpixmapcache.cpp -+++ b/src/gui/image/qpixmapcache.cpp -@@ -461,6 +461,11 @@ void QPMCache::clear() - for (int i = 0; i < keys.size(); ++i) - keys.at(i).d->isValid = false; - QCache<QPixmapCache::Key, QPixmapCacheEntry>::clear(); -+ // Nothing left to flush; stop the timer -+ if (theid) { -+ killTimer(theid); -+ theid = 0; -+ } - } - - QPixmapCache::KeyData* QPMCache::getKeyData(QPixmapCache::Key *key) --- -2.36.0 - -From dac6ba3548182e3d53ca24924fc48170f5de6316 Mon Sep 17 00:00:00 2001 -From: Zhang Hao <zhanghao@uniontech.com> -Date: Thu, 27 Jan 2022 11:20:57 +0800 -Subject: [PATCH 118/146] Sync QPrinter orientation when PageSetup Orientation - selected - -QPrinter orientation will not effect when PageSetup Orientation selected - -Fix this by sync PageSetup orientation property to QPrinter. - -Fixes: QTBUG-100261 -Pick-to: 5.15 6.2 6.3 -Change-Id: I264852ea18317308dfcfb58c880f5e8ad8d299bd -Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit 715ed74c89a7e6c64aa85e36682699d41c195a33) ---- - src/printsupport/dialogs/qpagesetupdialog_unix.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp -index 78e5b8d1ef..2a28516719 100644 ---- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp -+++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp -@@ -532,6 +532,7 @@ void QPageSetupWidget::updateWidget() - void QPageSetupWidget::setupPrinter() const - { - m_printer->setPageLayout(m_pageLayout); -+ m_printer->setPageOrientation(m_pageLayout.orientation()); - #if QT_CONFIG(cups) - QCUPSSupport::PagesPerSheet pagesPerSheet = qvariant_cast<QCUPSSupport::PagesPerSheet>(m_ui.pagesPerSheetCombo->currentData() - ); --- -2.36.0 - -From ff4c838b4c1e30b043ae2258b95925ea68d5521d Mon Sep 17 00:00:00 2001 +From 46b7a8fa3fc1b91b8f595d6c1146f86433cd7a68 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Date: Tue, 1 Mar 2022 16:03:44 +0100 -Subject: [PATCH 119/146] Qt namespace: fix QT_Q_FLAG declaration for +Subject: [PATCH 029/123] Qt namespace: fix QT_Q_FLAG declaration for Qt::MouseEventFlags The declaration was accidentally declaring the enumeration as @@ -48895,10 +42715,10 @@ Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h -index ad4150b317..bf19b1627b 100644 +index deab11f7297..486b63fa3f9 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h -@@ -1864,7 +1864,7 @@ public: +@@ -1867,7 +1867,7 @@ public: QT_Q_ENUM(TimerType) QT_Q_ENUM(ScrollPhase) QT_Q_ENUM(MouseEventSource) @@ -48908,241 +42728,12 @@ index ad4150b317..bf19b1627b 100644 QT_Q_ENUM(HighDpiScaleFactorRoundingPolicy) QT_Q_ENUM(TabFocusBehavior) -- -2.36.0 - -From b0aabb9b1e767f531f5a8d4b71f86b3bbb08c122 Mon Sep 17 00:00:00 2001 -From: Andy Shaw <andy.shaw@qt.io> -Date: Thu, 17 Feb 2022 10:28:29 +0100 -Subject: [PATCH 120/146] Windows: use QSystemLibrary instead of LoadLibrary - directly - -Using QSystemLibrary ensures that it will only use the expected copy of -the system library and not one that has been placed in the application's -working directory or elsewhere in the PATH environment variable. +2.49.0 -Pick-to: 5.15 6.2 6.3 -Change-Id: Ic4234334f73482b38ee5f06345bf11f8c029edc5 -Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -(cherry picked from commit a14f2d59141e05d4c8e116895e918638b920611d) - -Contents are actually from -https://download.qt.io/official_releases/qt/5.15/CVE-2022-25643-5.15.diff -and not from the cherry-pick ---- - src/corelib/io/qlockfile_win.cpp | 4 +++- - src/network/kernel/qauthenticator.cpp | 3 ++- - .../platforms/windows/qwindowsglcontext.cpp | 17 ++++++++++++----- - .../platforms/windows/qwindowsopengltester.cpp | 3 ++- - 4 files changed, 19 insertions(+), 8 deletions(-) - -diff --git a/src/corelib/io/qlockfile_win.cpp b/src/corelib/io/qlockfile_win.cpp -index 277f8d4230..38ecef5550 100644 ---- a/src/corelib/io/qlockfile_win.cpp -+++ b/src/corelib/io/qlockfile_win.cpp -@@ -48,6 +48,8 @@ - #include "QtCore/qdebug.h" - #include "QtCore/qthread.h" - -+#include "private/qsystemlibrary_p.h" -+ - QT_BEGIN_NAMESPACE - - static inline bool fileExists(const wchar_t *fileName) -@@ -150,7 +152,7 @@ QString QLockFilePrivate::processNameByPid(qint64 pid) - #if !defined(Q_OS_WINRT) - typedef DWORD (WINAPI *GetModuleFileNameExFunc)(HANDLE, HMODULE, LPTSTR, DWORD); - -- HMODULE hPsapi = LoadLibraryA("psapi"); -+ HMODULE hPsapi = QSystemLibrary::load(L"psapi"); - if (!hPsapi) - return QString(); - GetModuleFileNameExFunc qGetModuleFileNameEx = reinterpret_cast<GetModuleFileNameExFunc>( -diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp -index 86242b011f..c317d1fe39 100644 ---- a/src/network/kernel/qauthenticator.cpp -+++ b/src/network/kernel/qauthenticator.cpp -@@ -50,6 +50,7 @@ - #include <qstring.h> - #include <qdatetime.h> - #include <qrandom.h> -+#include "private/qsystemlibrary_p.h" - - #ifdef Q_OS_WIN - #include <qmutex.h> -@@ -1542,7 +1543,7 @@ static bool q_SSPI_library_load() - - // Initialize security interface - if (pSecurityFunctionTable == nullptr) { -- securityDLLHandle = LoadLibrary(L"secur32.dll"); -+ securityDLLHandle = QSystemLibrary::load(L"secur32"); - if (securityDLLHandle != nullptr) { - INIT_SECURITY_INTERFACE pInitSecurityInterface = - reinterpret_cast<INIT_SECURITY_INTERFACE>( -diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp -index 6fa5a8a2b3..1f49f0aefd 100644 ---- a/src/plugins/platforms/windows/qwindowsglcontext.cpp -+++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp -@@ -48,6 +48,7 @@ - #include <qpa/qplatformnativeinterface.h> - #include <QtPlatformHeaders/qwglnativecontext.h> - -+#include <private/qsystemlibrary_p.h> - #include <algorithm> - - #include <wingdi.h> -@@ -162,19 +163,25 @@ QFunctionPointer QWindowsOpengl32DLL::resolve(const char *name) - - bool QWindowsOpengl32DLL::init(bool softwareRendering) - { -- const QByteArray opengl32 = QByteArrayLiteral("opengl32.dll"); -- const QByteArray swopengl = QByteArrayLiteral("opengl32sw.dll"); -+ const QByteArray opengl32 = QByteArrayLiteral("opengl32"); -+ const QByteArray swopengl = QByteArrayLiteral("opengl32sw"); -+ bool useSystemLib = false; - - QByteArray openglDll = qgetenv("QT_OPENGL_DLL"); -- if (openglDll.isEmpty()) -+ if (openglDll.isEmpty()) { - openglDll = softwareRendering ? swopengl : opengl32; -+ useSystemLib = !softwareRendering; -+ } - - openglDll = openglDll.toLower(); - m_nonOpengl32 = openglDll != opengl32; - - qCDebug(lcQpaGl) << "Qt: Using WGL and OpenGL from" << openglDll; - -- m_lib = ::LoadLibraryA(openglDll.constData()); -+ if (useSystemLib) -+ m_lib = QSystemLibrary::load((wchar_t*)(QString::fromLatin1(openglDll).utf16())); -+ else -+ m_lib = LoadLibraryA(openglDll.constData()); - if (!m_lib) { - qErrnoWarning(::GetLastError(), "Failed to load %s", openglDll.constData()); - return false; -@@ -184,7 +191,7 @@ bool QWindowsOpengl32DLL::init(bool softwareRendering) - // Load opengl32.dll always. GDI functions like ChoosePixelFormat do - // GetModuleHandle for opengl32.dll and behave differently (and call back into - // opengl32) when the module is present. This is fine for dummy contexts and windows. -- ::LoadLibraryA("opengl32.dll"); -+ QSystemLibrary::load(L"opengl32"); - } - - wglCreateContext = reinterpret_cast<HGLRC (WINAPI *)(HDC)>(resolve("wglCreateContext")); -diff --git a/src/plugins/platforms/windows/qwindowsopengltester.cpp b/src/plugins/platforms/windows/qwindowsopengltester.cpp -index d7d186e804..9eb4011bf2 100644 ---- a/src/plugins/platforms/windows/qwindowsopengltester.cpp -+++ b/src/plugins/platforms/windows/qwindowsopengltester.cpp -@@ -49,6 +49,7 @@ - #include <QtCore/qstandardpaths.h> - #include <QtCore/qlibraryinfo.h> - #include <QtCore/qhash.h> -+#include <private/qsystemlibrary_p.h> - - #ifndef QT_NO_OPENGL - #include <private/qopengl_p.h> -@@ -396,7 +397,7 @@ bool QWindowsOpenGLTester::testDesktopGL() - - // Test #1: Load opengl32.dll and try to resolve an OpenGL 2 function. - // This will typically fail on systems that do not have a real OpenGL driver. -- lib = LoadLibraryA("opengl32.dll"); -+ lib = QSystemLibrary::load(L"opengl32"); - if (lib) { - CreateContext = reinterpret_cast<CreateContextType>( - reinterpret_cast<QFunctionPointer>(::GetProcAddress(lib, "wglCreateContext"))); --- -2.36.0 - -From c61965808a64de37d091aac0ea47524f36a8bdf2 Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Sat, 12 Mar 2022 01:48:07 +0100 -Subject: [PATCH 121/146] QCompleter: fix crash when setting the same model - twice - -Found when retesting the testcase completer.zip from QTBUG-54642 - -Pick-to: 6.3 6.2 5.15 -Change-Id: Id84eefeb3a33dc6d790cfa23755352381cc097a9 -Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit 7382e5735ea734fe5e5777518394963593603c32) ---- - src/widgets/util/qcompleter.cpp | 2 ++ - tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp | 10 ++++++++++ - 2 files changed, 12 insertions(+) - -diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp -index 47fee68538..beef80ef4b 100644 ---- a/src/widgets/util/qcompleter.cpp -+++ b/src/widgets/util/qcompleter.cpp -@@ -1120,6 +1120,8 @@ void QCompleter::setModel(QAbstractItemModel *model) - { - Q_D(QCompleter); - QAbstractItemModel *oldModel = d->proxy->sourceModel(); -+ if (oldModel == model) -+ return; - #if QT_CONFIG(filesystemmodel) - if (qobject_cast<const QFileSystemModel *>(oldModel)) - setCompletionRole(Qt::EditRole); // QTBUG-54642, clear FileNameRole set by QFileSystemModel -diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp -index d8bb34933a..46e96616b1 100644 ---- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp -+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp -@@ -1681,6 +1681,16 @@ void tst_QComboBox::setModel() - QCOMPARE(box.rootModelIndex(), rootModelIndex); - box.setModel(box.model()); - QCOMPARE(box.rootModelIndex(), rootModelIndex); -+ -+ // check that setting the same model as the completer's doesn't crash -+ QCompleter *completer = new QCompleter(&box); -+ box.setEditable(true); -+ box.setCompleter(completer); -+ auto *listModel = new QStringListModel({ "one", "two" }, completer); -+ completer->setModel(listModel); -+ QCOMPARE(listModel->rowCount(), 2); // make sure it wasn't deleted -+ box.setModel(listModel); -+ QCOMPARE(listModel->rowCount(), 2); // make sure it wasn't deleted - } - - void tst_QComboBox::setCustomModelAndView() --- -2.36.0 - -From 589101059ed97c1965ab81e5b0057656056400d7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> -Date: Mon, 7 Mar 2022 11:21:49 +0100 -Subject: [PATCH 122/146] QHostInfo/Unix: Fix resolv never unloading - -Due to some unfortunate shadowing - -Pick-to: 6.3 6.2 5.15 -Change-Id: Ib2660516f9ba9974c84a043bd2677b7890fc76f9 -Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> -(cherry picked from commit 567c31e8ee92a8071c731aac6fc6729d16d7439b) ---- - src/network/kernel/qhostinfo_unix.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp -index 9b0a2ee669..73679c9ef1 100644 ---- a/src/network/kernel/qhostinfo_unix.cpp -+++ b/src/network/kernel/qhostinfo_unix.cpp -@@ -122,7 +122,6 @@ static QFunctionPointer resolveSymbol(QLibrary &lib, const char *sym) - - LibResolv::LibResolv() - { -- QLibrary lib; - #ifdef LIBRESOLV_SO - lib.setFileName(QStringLiteral(LIBRESOLV_SO)); - if (!lib.load()) --- -2.36.0 - -From 1f42ab8522c643b1faf1e11148d33b7161896978 Mon Sep 17 00:00:00 2001 +From 197db1f8eec6883b45ad62d6293dc9e3ae6b7af2 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik <kde@privat.broulik.de> Date: Wed, 16 Mar 2022 12:35:20 +0100 -Subject: [PATCH 123/146] QAction: Add NOTIFY changed declaration to priority +Subject: [PATCH 030/123] QAction: Add NOTIFY changed declaration to priority property It already emits the signal and was merely missing the declaration. @@ -49156,7 +42747,7 @@ when binding to the priority property from QML. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h -index 258a1ea0a0..737c1e8285 100644 +index 258a1ea0a04..737c1e82850 100644 --- a/src/widgets/kernel/qaction.h +++ b/src/widgets/kernel/qaction.h @@ -81,7 +81,7 @@ class Q_WIDGETS_EXPORT QAction : public QObject @@ -49169,13710 +42760,12 @@ index 258a1ea0a0..737c1e8285 100644 public: // note this is copied into qplatformmenu.h, which must stay in sync -- -2.36.0 - -From 5c6dc8de9ca23ec0fb8dd5d77cf4b8d9e68615df Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= <aklitzing@gmail.com> -Date: Mon, 28 Mar 2022 22:58:26 +0200 -Subject: [PATCH 124/146] Update bundled zlib to version 1.2.12 +2.49.0 -The remaining diff to clean 1.2.12 is archived in the qtpatches.diff file. -Also this fixes CVE-2018-25032. - -[ChangeLog][Third-Party Code] zlib was updated to version 1.2.12. - -Change-Id: Ifab5d57acdc90ace61f2fd22c6dbb7ec6b4ad319 -Pick-to: 6.2 6.3 6.3.0 5.15 -Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> -Reviewed-by: Kai Koehne <kai.koehne@qt.io> - -(cherry picked from commit a0a2bf2d95d4fcd468b6ce3c2e728d95425dd760) - -Actual patch contents are not from the cherry-pick but from https://download.qt.io/official_releases/qt/5.15/CVE-2018-25032-qtbase-5.15.diff ---- - src/3rdparty/zlib/qt_attribution.json | 4 +- - src/3rdparty/zlib/qtpatches.diff | 60 +- - src/3rdparty/zlib/src/ChangeLog | 163 +- - src/3rdparty/zlib/src/README | 11 +- - src/3rdparty/zlib/src/crc32.c | 1258 +++- - src/3rdparty/zlib/src/crc32.h | 9877 +++++++++++++++++++++++-- - src/3rdparty/zlib/src/deflate.c | 108 +- - src/3rdparty/zlib/src/deflate.h | 27 +- - src/3rdparty/zlib/src/gzguts.h | 24 +- - src/3rdparty/zlib/src/gzlib.c | 8 +- - src/3rdparty/zlib/src/gzread.c | 12 +- - src/3rdparty/zlib/src/gzwrite.c | 38 +- - src/3rdparty/zlib/src/infback.c | 3 +- - src/3rdparty/zlib/src/inffast.c | 28 +- - src/3rdparty/zlib/src/inflate.c | 47 +- - src/3rdparty/zlib/src/inflate.h | 5 +- - src/3rdparty/zlib/src/inftrees.c | 6 +- - src/3rdparty/zlib/src/trees.c | 75 +- - src/3rdparty/zlib/src/zlib.h | 223 +- - src/3rdparty/zlib/src/zutil.c | 4 +- - src/3rdparty/zlib/src/zutil.h | 22 +- - 21 files changed, 10921 insertions(+), 1082 deletions(-) - -diff --git a/src/3rdparty/zlib/qt_attribution.json b/src/3rdparty/zlib/qt_attribution.json -index ea3a476e7b..07bea6ba86 100644 ---- a/src/3rdparty/zlib/qt_attribution.json -+++ b/src/3rdparty/zlib/qt_attribution.json -@@ -6,10 +6,10 @@ - - "Description": "zlib is a general purpose data compression library.", - "Homepage": "http://zlib.net/", -- "Version": "1.2.11", -+ "Version": "1.2.12", - - "License": "zlib License", - "LicenseId": "Zlib", - "LicenseFile": "LICENSE", -- "Copyright": "(C) 1995-2017 Jean-loup Gailly and Mark Adler" -+ "Copyright": "(C) 1995-2022 Jean-loup Gailly and Mark Adler" - } -diff --git a/src/3rdparty/zlib/qtpatches.diff b/src/3rdparty/zlib/qtpatches.diff -index 105dda967c..681697afb0 100644 ---- a/src/3rdparty/zlib/qtpatches.diff -+++ b/src/3rdparty/zlib/qtpatches.diff -@@ -1,21 +1,21 @@ - diff -ruN orig/ChangeLog src/ChangeLog ----- orig/ChangeLog 2017-08-03 08:25:11.347386101 +0200 --+++ src/ChangeLog 2017-08-03 08:25:21.477268439 +0200 -+--- orig/ChangeLog -++++ src/ChangeLog - @@ -1,6 +1,10 @@ - - ChangeLog file for zlib - --+Changes in 1.2.11 (Qt) (28 Jul 2017) -++Changes in 1.2.12 (Qt) (28 Mar 2022) - +- This is a stripped down copy of zlib that contains patches to - + make it compile as part of Qt. See also "qtpatches.diff". - + -- Changes in 1.2.11 (15 Jan 2017) -- - Fix deflate stored bug when pulling last block from window -- - Permit immediate deflateParams changes before any deflate input -+ Changes in 1.2.12 (27 Mar 2022) -+ - Cygwin does not have _wopen(), so do not create gzopen_w() there -+ - Permit a deflateParams() parameter change as soon as possible - diff -ruN orig/gzguts.h src/gzguts.h ----- orig/gzguts.h 2017-08-03 08:25:11.347386101 +0200 --+++ src/gzguts.h 2017-08-03 08:25:21.477268439 +0200 --@@ -3,6 +3,15 @@ -+--- orig/gzguts.h -++++ src/gzguts.h -+@@ -3,6 +3,25 @@ - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -26,6 +26,8 @@ diff -ruN orig/gzguts.h src/gzguts.h - +# ifndef _CRT_NONSTDC_NO_DEPRECATE - +# define _CRT_NONSTDC_NO_DEPRECATE - +# endif -++// disable warnings like '=': conversion from 'size_t' to 'unsigned int', possible loss of data -++# pragma warning(disable: 4267; disable: 4244) - +#endif - + - #ifdef _LARGEFILE64_SOURCE -@@ -43,13 +45,12 @@ diff -ruN orig/gzguts.h src/gzguts.h - +#define HAVE_HIDDEN - +#endif - + --+ -- #ifdef HAVE_HIDDEN -- # define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -- #else -+ #ifdef _LARGEFILE64_SOURCE -+ # ifndef _LARGEFILE_SOURCE -+ # define _LARGEFILE_SOURCE 1 - diff -ruN orig/README src/README ----- orig/README 2017-08-03 08:25:11.347386101 +0200 --+++ src/README 2017-08-03 08:25:21.477268439 +0200 -+--- orig/README -++++ src/README - @@ -6,6 +6,9 @@ - http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and - rfc1952 (gzip format). -@@ -61,8 +62,8 @@ diff -ruN orig/README src/README - (volunteer to write man pages welcome, contact zlib@gzip.org). A usage example - of the library is given in the file test/example.c which also tests that - diff -ruN orig/zconf.h src/zconf.h ----- orig/zconf.h 2017-08-03 08:25:11.347386101 +0200 --+++ src/zconf.h 2017-08-03 08:25:21.477268439 +0200 -+--- orig/zconf.h -++++ src/zconf.h - @@ -8,6 +8,9 @@ - #ifndef ZCONF_H - #define ZCONF_H -@@ -91,9 +92,9 @@ diff -ruN orig/zconf.h src/zconf.h - #endif - - diff -ruN orig/zlib.h src/zlib.h ----- orig/zlib.h 2017-08-03 08:25:11.347386101 +0200 --+++ src/zlib.h 2017-08-03 08:25:21.480601733 +0200 --@@ -33,12 +33,16 @@ -+--- orig/zlib.h -++++ src/zlib.h -+@@ -33,11 +33,15 @@ - - #include "zconf.h" - -@@ -105,17 +106,15 @@ diff -ruN orig/zlib.h src/zlib.h - extern "C" { - #endif - ---#define ZLIB_VERSION "1.2.11" ---#define ZLIB_VERNUM 0x12b0 --+#define ZLIB_VERSION "1.2.11 (Qt)" --+#define ZLIB_VERNUM 0x12b0f -+-#define ZLIB_VERSION "1.2.12" -++#define ZLIB_VERSION "1.2.12 (Qt)" -+ #define ZLIB_VERNUM 0x12c0 - #define ZLIB_VER_MAJOR 1 - #define ZLIB_VER_MINOR 2 -- #define ZLIB_VER_REVISION 11 - diff -ruN orig/zutil.h src/zutil.h ----- orig/zutil.h 2017-08-03 08:25:11.347386101 +0200 --+++ src/zutil.h 2017-08-03 08:30:04.490657570 +0200 --@@ -13,6 +13,15 @@ -+--- orig/zutil.h -++++ src/zutil.h -+@@ -13,6 +13,14 @@ - #ifndef ZUTIL_H - #define ZUTIL_H - -@@ -126,12 +125,11 @@ diff -ruN orig/zutil.h src/zutil.h - +#ifdef QT_VISIBILITY_AVAILABLE - +#define HAVE_HIDDEN - +#endif --+ - + - #ifdef HAVE_HIDDEN - # define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) - #else --@@ -136,6 +145,11 @@ -+@@ -143,6 +151,11 @@ - # if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os - # include <unix.h> /* for fdopen */ - # else -@@ -143,7 +141,7 @@ diff -ruN orig/zutil.h src/zutil.h - # ifndef fdopen - # define fdopen(fd,mode) NULL /* No fdopen() */ - # endif --@@ -159,7 +173,7 @@ -+@@ -166,7 +179,7 @@ - # define OS_CODE 18 - #endif - -diff --git a/src/3rdparty/zlib/src/ChangeLog b/src/3rdparty/zlib/src/ChangeLog -index 251a32262f..14939b2025 100644 ---- a/src/3rdparty/zlib/src/ChangeLog -+++ b/src/3rdparty/zlib/src/ChangeLog -@@ -1,10 +1,73 @@ - - ChangeLog file for zlib - --Changes in 1.2.11 (Qt) (28 Jul 2017) -+Changes in 1.2.12 (Qt) (28 Mar 2022) - - This is a stripped down copy of zlib that contains patches to - make it compile as part of Qt. See also "qtpatches.diff". - -+Changes in 1.2.12 (27 Mar 2022) -+- Cygwin does not have _wopen(), so do not create gzopen_w() there -+- Permit a deflateParams() parameter change as soon as possible -+- Limit hash table inserts after switch from stored deflate -+- Fix bug when window full in deflate_stored() -+- Fix CLEAR_HASH macro to be usable as a single statement -+- Avoid a conversion error in gzseek when off_t type too small -+- Have Makefile return non-zero error code on test failure -+- Avoid some conversion warnings in gzread.c and gzwrite.c -+- Update use of errno for newer Windows CE versions -+- Small speedup to inflate [psumbera] -+- Return an error if the gzputs string length can't fit in an int -+- Add address checking in clang to -w option of configure -+- Don't compute check value for raw inflate if asked to validate -+- Handle case where inflateSync used when header never processed -+- Avoid the use of ptrdiff_t -+- Avoid an undefined behavior of memcpy() in gzappend() -+- Avoid undefined behaviors of memcpy() in gz*printf() -+- Avoid an undefined behavior of memcpy() in _tr_stored_block() -+- Make the names in functions declarations identical to definitions -+- Remove old assembler code in which bugs have manifested -+- Fix deflateEnd() to not report an error at start of raw deflate -+- Add legal disclaimer to README -+- Emphasize the need to continue decompressing gzip members -+- Correct the initialization requirements for deflateInit2() -+- Fix a bug that can crash deflate on some input when using Z_FIXED -+- Assure that the number of bits for deflatePrime() is valid -+- Use a structure to make globals in enough.c evident -+- Use a macro for the printf format of big_t in enough.c -+- Clean up code style in enough.c, update version -+- Use inline function instead of macro for index in enough.c -+- Clarify that prefix codes are counted in enough.c -+- Show all the codes for the maximum tables size in enough.c -+- Add gznorm.c example, which normalizes gzip files -+- Fix the zran.c example to work on a multiple-member gzip file -+- Add tables for crc32_combine(), to speed it up by a factor of 200 -+- Add crc32_combine_gen() and crc32_combine_op() for fast combines -+- Speed up software CRC-32 computation by a factor of 1.5 to 3 -+- Use atomic test and set, if available, for dynamic CRC tables -+- Don't bother computing check value after successful inflateSync() -+- Correct comment in crc32.c -+- Add use of the ARMv8 crc32 instructions when requested -+- Use ARM crc32 instructions if the ARM architecture has them -+- Explicitly note that the 32-bit check values are 32 bits -+- Avoid adding empty gzip member after gzflush with Z_FINISH -+- Fix memory leak on error in gzlog.c -+- Fix error in comment on the polynomial representation of a byte -+- Clarify gz* function interfaces, referring to parameter names -+- Change macro name in inflate.c to avoid collision in VxWorks -+- Correct typo in blast.c -+- Improve portability of contrib/minizip -+- Fix indentation in minizip's zip.c -+- Replace black/white with allow/block. (theresa-m) -+- minizip warning fix if MAXU32 already defined. (gvollant) -+- Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner) -+- Clean up minizip to reduce warnings for testing -+- Add fallthrough comments for gcc -+- Eliminate use of ULL constants -+- Separate out address sanitizing from warnings in configure -+- Remove destructive aspects of make distclean -+- Check for cc masquerading as gcc or clang in configure -+- Fix crc32.c to compile local functions only if used -+ - Changes in 1.2.11 (15 Jan 2017) - - Fix deflate stored bug when pulling last block from window - - Permit immediate deflateParams changes before any deflate input -@@ -515,7 +578,7 @@ Changes in 1.2.3.5 (8 Jan 2010) - - Don't use _vsnprintf on later versions of MSVC [Lowman] - - Add CMake build script and input file [Lowman] - - Update contrib/minizip to 1.1 [Svensson, Vollant] --- Moved nintendods directory from contrib to . -+- Moved nintendods directory from contrib to root - - Replace gzio.c with a new set of routines with the same functionality - - Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above - - Update contrib/minizip to 1.1b -@@ -689,7 +752,7 @@ Changes in 1.2.2.4 (11 July 2005) - - Be more strict on incomplete code sets in inflate_table() and increase - ENOUGH and MAXD -- this repairs a possible security vulnerability for - invalid inflate input. Thanks to Tavis Ormandy and Markus Oberhumer for -- discovering the vulnerability and providing test cases. -+ discovering the vulnerability and providing test cases - - Add ia64 support to configure for HP-UX [Smith] - - Add error return to gzread() for format or i/o error [Levin] - - Use malloc.h for OS/2 [Necasek] -@@ -725,7 +788,7 @@ Changes in 1.2.2.2 (30 December 2004) - - Add Z_FIXED strategy option to deflateInit2() to force fixed trees - - Add updated make_vms.com [Coghlan], update README - - Create a new "examples" directory, move gzappend.c there, add zpipe.c, -- fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html. -+ fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html - - Add FAQ entry and comments in deflate.c on uninitialized memory access - - Add Solaris 9 make options in configure [Gilbert] - - Allow strerror() usage in gzio.c for STDC -@@ -796,7 +859,7 @@ Changes in 1.2.1.1 (9 January 2004) - - Fix a big fat bug in inftrees.c that prevented decoding valid - dynamic blocks with only literals and no distance codes -- - Thanks to "Hot Emu" for the bug report and sample file --- Add a note to puff.c on no distance codes case. -+- Add a note to puff.c on no distance codes case - - Changes in 1.2.1 (17 November 2003) - - Remove a tab in contrib/gzappend/gzappend.c -@@ -1040,14 +1103,14 @@ Changes in 1.2.0 (9 March 2003) - - Add contrib/puff/ simple inflate for deflate format description - - Changes in 1.1.4 (11 March 2002) --- ZFREE was repeated on same allocation on some error conditions. -+- ZFREE was repeated on same allocation on some error conditions - This creates a security problem described in - http://www.zlib.org/advisory-2002-03-11.txt - - Returned incorrect error (Z_MEM_ERROR) on some invalid data - - Avoid accesses before window for invalid distances with inflate window -- less than 32K. -+ less than 32K - - force windowBits > 8 to avoid a bug in the encoder for a window size -- of 256 bytes. (A complete fix will be available in 1.1.5). -+ of 256 bytes. (A complete fix will be available in 1.1.5) - - Changes in 1.1.3 (9 July 1998) - - fix "an inflate input buffer bug that shows up on rare but persistent -@@ -1121,7 +1184,7 @@ Changes in 1.1.1 (27 Feb 98) - - remove block truncation heuristic which had very marginal effect for zlib - (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the - compression ratio on some files. This also allows inlining _tr_tally for -- matches in deflate_slow. -+ matches in deflate_slow - - added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier) - - Changes in 1.1.0 (24 Feb 98) -@@ -1166,7 +1229,7 @@ Changes in 1.0.8 (27 Jan 1998) - - include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong) - - use constant arrays for the static trees in trees.c instead of computing - them at run time (thanks to Ken Raeburn for this suggestion). To create -- trees.h, compile with GEN_TREES_H and run "make test". -+ trees.h, compile with GEN_TREES_H and run "make test" - - check return code of example in "make test" and display result - - pass minigzip command line options to file_compress - - simplifying code of inflateSync to avoid gcc 2.8 bug -@@ -1205,12 +1268,12 @@ Changes in 1.0.6 (19 Jan 1998) - - add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and - gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code) - - Fix a deflate bug occurring only with compression level 0 (thanks to -- Andy Buckler for finding this one). --- In minigzip, pass transparently also the first byte for .Z files. -+ Andy Buckler for finding this one) -+- In minigzip, pass transparently also the first byte for .Z files - - return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress() - - check Z_FINISH in inflate (thanks to Marc Schluper) - - Implement deflateCopy (thanks to Adam Costello) --- make static libraries by default in configure, add --shared option. -+- make static libraries by default in configure, add --shared option - - move MSDOS or Windows specific files to directory msdos - - suppress the notion of partial flush to simplify the interface - (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4) -@@ -1222,7 +1285,7 @@ Changes in 1.0.6 (19 Jan 1998) - - added Makefile.nt (thanks to Stephen Williams) - - added the unsupported "contrib" directory: - contrib/asm386/ by Gilles Vollant <info@winimage.com> -- 386 asm code replacing longest_match(). -+ 386 asm code replacing longest_match() - contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu> - A C++ I/O streams interface to the zlib gz* functions - contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no> -@@ -1230,7 +1293,7 @@ Changes in 1.0.6 (19 Jan 1998) - contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es> - A very simple tar.gz file extractor using zlib - contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl> -- How to use compress(), uncompress() and the gz* functions from VB. -+ How to use compress(), uncompress() and the gz* functions from VB - - pass params -f (filtered data), -h (huffman only), -1 to -9 (compression - level) in minigzip (thanks to Tom Lane) - -@@ -1239,8 +1302,8 @@ Changes in 1.0.6 (19 Jan 1998) - - add undocumented function inflateSyncPoint() (hack for Paul Mackerras) - - add undocumented function zError to convert error code to string - (for Tim Smithers) --- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code. --- Use default memcpy for Symantec MSDOS compiler. -+- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code -+- Use default memcpy for Symantec MSDOS compiler - - Add EXPORT keyword for check_func (needed for Windows DLL) - - add current directory to LD_LIBRARY_PATH for "make test" - - create also a link for libz.so.1 -@@ -1253,7 +1316,7 @@ Changes in 1.0.6 (19 Jan 1998) - - allow compilation with ANSI keywords only enabled for TurboC in large model - - avoid "versionString"[0] (Borland bug) - - add NEED_DUMMY_RETURN for Borland --- use variable z_verbose for tracing in debug mode (L. Peter Deutsch). -+- use variable z_verbose for tracing in debug mode (L. Peter Deutsch) - - allow compilation with CC - - defined STDC for OS/2 (David Charlap) - - limit external names to 8 chars for MVS (Thomas Lund) -@@ -1263,7 +1326,7 @@ Changes in 1.0.6 (19 Jan 1998) - - use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) - - added makelcc.bat for lcc-win32 (Tom St Denis) - - in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) --- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. -+- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion - - check for unistd.h in configure (for off_t) - - remove useless check parameter in inflate_blocks_free - - avoid useless assignment of s->check to itself in inflate_blocks_new -@@ -1284,7 +1347,7 @@ Changes in 1.0.5 (3 Jan 98) - Changes in 1.0.4 (24 Jul 96) - - In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF - bit, so the decompressor could decompress all the correct data but went -- on to attempt decompressing extra garbage data. This affected minigzip too. -+ on to attempt decompressing extra garbage data. This affected minigzip too - - zlibVersion and gzerror return const char* (needed for DLL) - - port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno) - - use z_error only for DEBUG (avoid problem with DLLs) -@@ -1314,7 +1377,7 @@ Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion] - - fix array overlay in deflate.c which sometimes caused bad compressed data - - fix inflate bug with empty stored block - - fix MSDOS medium model which was broken in 0.99 --- fix deflateParams() which could generate bad compressed data. -+- fix deflateParams() which could generate bad compressed data - - Bytef is define'd instead of typedef'ed (work around Borland bug) - - added an INDEX file - - new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32), -@@ -1335,7 +1398,7 @@ Changes in 0.99 (27 Jan 96) - - allow preset dictionary shared between compressor and decompressor - - allow compression level 0 (no compression) - - add deflateParams in zlib.h: allow dynamic change of compression level -- and compression strategy. -+ and compression strategy - - test large buffers and deflateParams in example.c - - add optional "configure" to build zlib as a shared library - - suppress Makefile.qnx, use configure instead -@@ -1377,30 +1440,30 @@ Changes in 0.99 (27 Jan 96) - - use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc... - - use Z_BINARY instead of BINARY - - document that gzclose after gzdopen will close the file --- allow "a" as mode in gzopen. -+- allow "a" as mode in gzopen - - fix error checking in gzread - - allow skipping .gz extra-field on pipes - - added reference to Perl interface in README - - put the crc table in FAR data (I dislike more and more the medium model :) - - added get_crc_table --- added a dimension to all arrays (Borland C can't count). -+- added a dimension to all arrays (Borland C can't count) - - workaround Borland C bug in declaration of inflate_codes_new & inflate_fast - - guard against multiple inclusion of *.h (for precompiled header on Mac) --- Watcom C pretends to be Microsoft C small model even in 32 bit mode. -+- Watcom C pretends to be Microsoft C small model even in 32 bit mode - - don't use unsized arrays to avoid silly warnings by Visual C++: - warning C4746: 'inflate_mask' : unsized array treated as '__far' -- (what's wrong with far data in far model?). -+ (what's wrong with far data in far model?) - - define enum out of inflate_blocks_state to allow compilation with C++ - - Changes in 0.95 (16 Aug 95) - - fix MSDOS small and medium model (now easier to adapt to any compiler) - - inlined send_bits - - fix the final (:-) bug for deflate with flush (output was correct but -- not completely flushed in rare occasions). -+ not completely flushed in rare occasions) - - default window size is same for compression and decompression -- (it's now sufficient to set MAX_WBITS in zconf.h). -+ (it's now sufficient to set MAX_WBITS in zconf.h) - - voidp -> voidpf and voidnp -> voidp (for consistency with other -- typedefs and because voidnp was not near in large model). -+ typedefs and because voidnp was not near in large model) - - Changes in 0.94 (13 Aug 95) - - support MSDOS medium model -@@ -1409,12 +1472,12 @@ Changes in 0.94 (13 Aug 95) - - added support for VMS - - allow a compression level in gzopen() - - gzflush now calls fflush --- For deflate with flush, flush even if no more input is provided. -+- For deflate with flush, flush even if no more input is provided - - rename libgz.a as libz.a - - avoid complex expression in infcodes.c triggering Turbo C bug - - work around a problem with gcc on Alpha (in INSERT_STRING) - - don't use inline functions (problem with some gcc versions) --- allow renaming of Byte, uInt, etc... with #define. -+- allow renaming of Byte, uInt, etc... with #define - - avoid warning about (unused) pointer before start of array in deflate.c - - avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c - - avoid reserved word 'new' in trees.c -@@ -1433,7 +1496,7 @@ Changes in 0.92 (3 May 95) - - no memcpy on Pyramid - - suppressed inftest.c - - optimized fill_window, put longest_match inline for gcc --- optimized inflate on stored blocks. -+- optimized inflate on stored blocks - - untabify all sources to simplify patches - - Changes in 0.91 (2 May 95) -@@ -1451,7 +1514,7 @@ Changes in 0.9 (1 May 95) - - let again gzread copy uncompressed data unchanged (was working in 0.71) - - deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented - - added a test of inflateSync in example.c --- moved MAX_WBITS to zconf.h because users might want to change that. -+- moved MAX_WBITS to zconf.h because users might want to change that - - document explicitly that zalloc(64K) on MSDOS must return a normalized - pointer (zero offset) - - added Makefiles for Microsoft C, Turbo C, Borland C++ -@@ -1460,7 +1523,7 @@ Changes in 0.9 (1 May 95) - Changes in 0.8 (29 April 95) - - added fast inflate (inffast.c) - - deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this -- is incompatible with previous versions of zlib which returned Z_OK. -+ is incompatible with previous versions of zlib which returned Z_OK - - work around a TurboC compiler bug (bad code for b << 0, see infutil.h) - (actually that was not a compiler bug, see 0.81 above) - - gzread no longer reads one extra byte in certain cases -@@ -1470,50 +1533,50 @@ Changes in 0.8 (29 April 95) - - Changes in 0.71 (14 April 95) - - Fixed more MSDOS compilation problems :( There is still a bug with -- TurboC large model. -+ TurboC large model - - Changes in 0.7 (14 April 95) --- Added full inflate support. -+- Added full inflate support - - Simplified the crc32() interface. The pre- and post-conditioning - (one's complement) is now done inside crc32(). WARNING: this is -- incompatible with previous versions; see zlib.h for the new usage. -+ incompatible with previous versions; see zlib.h for the new usage - - Changes in 0.61 (12 April 95) --- workaround for a bug in TurboC. example and minigzip now work on MSDOS. -+- workaround for a bug in TurboC. example and minigzip now work on MSDOS - - Changes in 0.6 (11 April 95) - - added minigzip.c - - added gzdopen to reopen a file descriptor as gzFile --- added transparent reading of non-gziped files in gzread. -+- added transparent reading of non-gziped files in gzread - - fixed bug in gzread (don't read crc as data) --- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose). -+- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose) - - don't allocate big arrays in the stack (for MSDOS) - - fix some MSDOS compilation problems - - Changes in 0.5: - - do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but -- not yet Z_FULL_FLUSH. -+ not yet Z_FULL_FLUSH - - support decompression but only in a single step (forced Z_FINISH) --- added opaque object for zalloc and zfree. -+- added opaque object for zalloc and zfree - - added deflateReset and inflateReset --- added a variable zlib_version for consistency checking. --- renamed the 'filter' parameter of deflateInit2 as 'strategy'. -- Added Z_FILTERED and Z_HUFFMAN_ONLY constants. -+- added a variable zlib_version for consistency checking -+- renamed the 'filter' parameter of deflateInit2 as 'strategy' -+ Added Z_FILTERED and Z_HUFFMAN_ONLY constants - - Changes in 0.4: --- avoid "zip" everywhere, use zlib instead of ziplib. -+- avoid "zip" everywhere, use zlib instead of ziplib - - suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush -- if compression method == 8. -+ if compression method == 8 - - added adler32 and crc32 - - renamed deflateOptions as deflateInit2, call one or the other but not both --- added the method parameter for deflateInit2. -+- added the method parameter for deflateInit2 - - added inflateInit2 - - simplied considerably deflateInit and inflateInit by not supporting - user-provided history buffer. This is supported only in deflateInit2 -- and inflateInit2. -+ and inflateInit2 - - Changes in 0.3: - - prefix all macro names with Z_ --- use Z_FINISH instead of deflateEnd to finish compression. -+- use Z_FINISH instead of deflateEnd to finish compression - - added Z_HUFFMAN_ONLY - - added gzerror() -diff --git a/src/3rdparty/zlib/src/README b/src/3rdparty/zlib/src/README -index 4dc7436a3b..1e4f39181d 100644 ---- a/src/3rdparty/zlib/src/README -+++ b/src/3rdparty/zlib/src/README -@@ -1,6 +1,6 @@ - ZLIB DATA COMPRESSION LIBRARY - --zlib 1.2.11 is a general purpose data compression library. All the code is -+zlib 1.2.12 is a general purpose data compression library. All the code is - thread safe. The data format used by the zlib library is described by RFCs - (Request for Comments) 1950 to 1952 in the files - http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and -@@ -34,7 +34,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 - issue of Dr. Dobb's Journal; a copy of the article is available at - http://marknelson.us/1997/01/01/zlib-engine/ . - --The changes made in version 1.2.11 are documented in the file ChangeLog. -+The changes made in version 1.2.12 are documented in the file ChangeLog. - - Unsupported third party contributions are provided in directory contrib/ . - -@@ -87,7 +87,7 @@ Acknowledgments: - - Copyright notice: - -- (C) 1995-2017 Jean-loup Gailly and Mark Adler -+ (C) 1995-2022 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages -@@ -111,7 +111,10 @@ Copyright notice: - If you use the zlib library in a product, we would appreciate *not* receiving - lengthy legal documents to sign. The sources are provided for free but without - warranty of any kind. The library has been entirely written by Jean-loup --Gailly and Mark Adler; it does not include third-party code. -+Gailly and Mark Adler; it does not include third-party code. We make all -+contributions to and distributions of this project solely in our personal -+capacity, and are not conveying any rights to any intellectual property of -+any third parties. - - If you redistribute modified sources, we would appreciate that you include in - the file ChangeLog history information documenting your changes. Please read -diff --git a/src/3rdparty/zlib/src/crc32.c b/src/3rdparty/zlib/src/crc32.c -index 9580440c0e..a1bdce5c23 100644 ---- a/src/3rdparty/zlib/src/crc32.c -+++ b/src/3rdparty/zlib/src/crc32.c -@@ -1,12 +1,10 @@ - /* crc32.c -- compute the CRC-32 of a data stream -- * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler -+ * Copyright (C) 1995-2022 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - * -- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster -- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing -- * tables for updating the shift register in one step with three exclusive-ors -- * instead of four steps with four exclusive-ors. This results in about a -- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. -+ * This interleaved implementation of a CRC makes use of pipelined multiple -+ * arithmetic-logic units, commonly found in modern CPU cores. It is due to -+ * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution. - */ - - /* @(#) $Id$ */ -@@ -14,11 +12,12 @@ - /* - Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore - protection on the static variables used to control the first-use generation -- of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should -+ of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should - first call get_crc_table() to initialize the tables before allowing more than - one thread to use crc32(). - -- DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h. -+ MAKECRCH can be #defined to write out crc32.h. A main() routine is also -+ produced, so that this one source file can be compiled to an executable. - */ - - #ifdef MAKECRCH -@@ -28,415 +27,1090 @@ - # endif /* !DYNAMIC_CRC_TABLE */ - #endif /* MAKECRCH */ - --#include "zutil.h" /* for STDC and FAR definitions */ -+#include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */ - --/* Definitions for doing the crc four data bytes at a time. */ --#if !defined(NOBYFOUR) && defined(Z_U4) --# define BYFOUR -+ /* -+ A CRC of a message is computed on N braids of words in the message, where -+ each word consists of W bytes (4 or 8). If N is 3, for example, then three -+ running sparse CRCs are calculated respectively on each braid, at these -+ indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ... -+ This is done starting at a word boundary, and continues until as many blocks -+ of N * W bytes as are available have been processed. The results are combined -+ into a single CRC at the end. For this code, N must be in the range 1..6 and -+ W must be 4 or 8. The upper limit on N can be increased if desired by adding -+ more #if blocks, extending the patterns apparent in the code. In addition, -+ crc32.h would need to be regenerated, if the maximum N value is increased. -+ -+ N and W are chosen empirically by benchmarking the execution time on a given -+ processor. The choices for N and W below were based on testing on Intel Kaby -+ Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64 -+ Octeon II processors. The Intel, AMD, and ARM processors were all fastest -+ with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4. -+ They were all tested with either gcc or clang, all using the -O3 optimization -+ level. Your mileage may vary. -+ */ -+ -+/* Define N */ -+#ifdef Z_TESTN -+# define N Z_TESTN -+#else -+# define N 5 -+#endif -+#if N < 1 || N > 6 -+# error N must be in 1..6 - #endif --#ifdef BYFOUR -- local unsigned long crc32_little OF((unsigned long, -- const unsigned char FAR *, z_size_t)); -- local unsigned long crc32_big OF((unsigned long, -- const unsigned char FAR *, z_size_t)); --# define TBLS 8 -+ -+/* -+ z_crc_t must be at least 32 bits. z_word_t must be at least as long as -+ z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and -+ that bytes are eight bits. -+ */ -+ -+/* -+ Define W and the associated z_word_t type. If W is not defined, then a -+ braided calculation is not used, and the associated tables and code are not -+ compiled. -+ */ -+#ifdef Z_TESTW -+# if Z_TESTW-1 != -1 -+# define W Z_TESTW -+# endif - #else --# define TBLS 1 --#endif /* BYFOUR */ -+# ifdef MAKECRCH -+# define W 8 /* required for MAKECRCH */ -+# else -+# if defined(__x86_64__) || defined(__aarch64__) -+# define W 8 -+# else -+# define W 4 -+# endif -+# endif -+#endif -+#ifdef W -+# if W == 8 && defined(Z_U8) -+ typedef Z_U8 z_word_t; -+# elif defined(Z_U4) -+# undef W -+# define W 4 -+ typedef Z_U4 z_word_t; -+# else -+# undef W -+# endif -+#endif - --/* Local functions for crc concatenation */ --local unsigned long gf2_matrix_times OF((unsigned long *mat, -- unsigned long vec)); --local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); --local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2)); -+/* Local functions. */ -+local z_crc_t multmodp OF((z_crc_t a, z_crc_t b)); -+local z_crc_t x2nmodp OF((z_off64_t n, unsigned k)); - -+/* If available, use the ARM processor CRC32 instruction. */ -+#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 -+# define ARMCRC32 -+#endif -+ -+#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE)) -+/* -+ Swap the bytes in a z_word_t to convert between little and big endian. Any -+ self-respecting compiler will optimize this to a single machine byte-swap -+ instruction, if one is available. This assumes that word_t is either 32 bits -+ or 64 bits. -+ */ -+local z_word_t byte_swap(word) -+ z_word_t word; -+{ -+# if W == 8 -+ return -+ (word & 0xff00000000000000) >> 56 | -+ (word & 0xff000000000000) >> 40 | -+ (word & 0xff0000000000) >> 24 | -+ (word & 0xff00000000) >> 8 | -+ (word & 0xff000000) << 8 | -+ (word & 0xff0000) << 24 | -+ (word & 0xff00) << 40 | -+ (word & 0xff) << 56; -+# else /* W == 4 */ -+ return -+ (word & 0xff000000) >> 24 | -+ (word & 0xff0000) >> 8 | -+ (word & 0xff00) << 8 | -+ (word & 0xff) << 24; -+# endif -+} -+#endif -+ -+/* CRC polynomial. */ -+#define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */ - - #ifdef DYNAMIC_CRC_TABLE - --local volatile int crc_table_empty = 1; --local z_crc_t FAR crc_table[TBLS][256]; -+local z_crc_t FAR crc_table[256]; -+local z_crc_t FAR x2n_table[32]; - local void make_crc_table OF((void)); -+#ifdef W -+ local z_word_t FAR crc_big_table[256]; -+ local z_crc_t FAR crc_braid_table[W][256]; -+ local z_word_t FAR crc_braid_big_table[W][256]; -+ local void braid OF((z_crc_t [][256], z_word_t [][256], int, int)); -+#endif - #ifdef MAKECRCH -- local void write_table OF((FILE *, const z_crc_t FAR *)); -+ local void write_table OF((FILE *, const z_crc_t FAR *, int)); -+ local void write_table32hi OF((FILE *, const z_word_t FAR *, int)); -+ local void write_table64 OF((FILE *, const z_word_t FAR *, int)); - #endif /* MAKECRCH */ -+ -+/* -+ Define a once() function depending on the availability of atomics. If this is -+ compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in -+ multiple threads, and if atomics are not available, then get_crc_table() must -+ be called to initialize the tables and must return before any threads are -+ allowed to compute or combine CRCs. -+ */ -+ -+/* Definition of once functionality. */ -+typedef struct once_s once_t; -+local void once OF((once_t *, void (*)(void))); -+ -+/* Check for the availability of atomics. */ -+#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ -+ !defined(__STDC_NO_ATOMICS__) -+ -+#include <stdatomic.h> -+ -+/* Structure for once(), which must be initialized with ONCE_INIT. */ -+struct once_s { -+ atomic_flag begun; -+ atomic_int done; -+}; -+#define ONCE_INIT {ATOMIC_FLAG_INIT, 0} -+ -+/* -+ Run the provided init() function exactly once, even if multiple threads -+ invoke once() at the same time. The state must be a once_t initialized with -+ ONCE_INIT. -+ */ -+local void once(state, init) -+ once_t *state; -+ void (*init)(void); -+{ -+ if (!atomic_load(&state->done)) { -+ if (atomic_flag_test_and_set(&state->begun)) -+ while (!atomic_load(&state->done)) -+ ; -+ else { -+ init(); -+ atomic_store(&state->done, 1); -+ } -+ } -+} -+ -+#else /* no atomics */ -+ -+/* Structure for once(), which must be initialized with ONCE_INIT. */ -+struct once_s { -+ volatile int begun; -+ volatile int done; -+}; -+#define ONCE_INIT {0, 0} -+ -+/* Test and set. Alas, not atomic, but tries to minimize the period of -+ vulnerability. */ -+local int test_and_set OF((int volatile *)); -+local int test_and_set(flag) -+ int volatile *flag; -+{ -+ int was; -+ -+ was = *flag; -+ *flag = 1; -+ return was; -+} -+ -+/* Run the provided init() function once. This is not thread-safe. */ -+local void once(state, init) -+ once_t *state; -+ void (*init)(void); -+{ -+ if (!state->done) { -+ if (test_and_set(&state->begun)) -+ while (!state->done) -+ ; -+ else { -+ init(); -+ state->done = 1; -+ } -+ } -+} -+ -+#endif -+ -+/* State for once(). */ -+local once_t made = ONCE_INIT; -+ - /* - Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, -- with the lowest powers in the most significant bit. Then adding polynomials -+ with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by -- one. If we call the above polynomial p, and represent a byte as the -+ one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the -- byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, -+ byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and -- taking the remainder. The register is initialized to zero, and for each -+ taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where -- x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by -- x (which is shifting right by one and adding x^32 mod p if the bit shifted -- out is a one). We start with the highest power (least significant bit) of -- q and repeat for all eight bits of q. -- -- The first table is simply the CRC of all possible eight bit values. This is -- all the information needed to generate CRCs on data a byte at a time for all -- combinations of CRC register values and incoming bytes. The remaining tables -- allow for word-at-a-time CRC calculation for both big-endian and little- -- endian machines, where a word is four bytes. --*/ -+ x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x -+ (which is shifting right by one and adding x^32 mod p if the bit shifted out -+ is a one). We start with the highest power (least significant bit) of q and -+ repeat for all eight bits of q. -+ -+ The table is simply the CRC of all possible eight bit values. This is all the -+ information needed to generate CRCs on data a byte at a time for all -+ combinations of CRC register values and incoming bytes. -+ */ -+ - local void make_crc_table() - { -- z_crc_t c; -- int n, k; -- z_crc_t poly; /* polynomial exclusive-or pattern */ -- /* terms of polynomial defining this crc (except x^32): */ -- static volatile int first = 1; /* flag to limit concurrent making */ -- static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; -- -- /* See if another task is already doing this (not thread-safe, but better -- than nothing -- significantly reduces duration of vulnerability in -- case the advice about DYNAMIC_CRC_TABLE is ignored) */ -- if (first) { -- first = 0; -- -- /* make exclusive-or pattern from polynomial (0xedb88320UL) */ -- poly = 0; -- for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++) -- poly |= (z_crc_t)1 << (31 - p[n]); -- -- /* generate a crc for every 8-bit value */ -- for (n = 0; n < 256; n++) { -- c = (z_crc_t)n; -- for (k = 0; k < 8; k++) -- c = c & 1 ? poly ^ (c >> 1) : c >> 1; -- crc_table[0][n] = c; -- } -+ unsigned i, j, n; -+ z_crc_t p; - --#ifdef BYFOUR -- /* generate crc for each value followed by one, two, and three zeros, -- and then the byte reversal of those as well as the first table */ -- for (n = 0; n < 256; n++) { -- c = crc_table[0][n]; -- crc_table[4][n] = ZSWAP32(c); -- for (k = 1; k < 4; k++) { -- c = crc_table[0][c & 0xff] ^ (c >> 8); -- crc_table[k][n] = c; -- crc_table[k + 4][n] = ZSWAP32(c); -- } -- } --#endif /* BYFOUR */ -- -- crc_table_empty = 0; -- } -- else { /* not first */ -- /* wait for the other guy to finish (not efficient, but rare) */ -- while (crc_table_empty) -- ; -+ /* initialize the CRC of bytes tables */ -+ for (i = 0; i < 256; i++) { -+ p = i; -+ for (j = 0; j < 8; j++) -+ p = p & 1 ? (p >> 1) ^ POLY : p >> 1; -+ crc_table[i] = p; -+#ifdef W -+ crc_big_table[i] = byte_swap(p); -+#endif - } - -+ /* initialize the x^2^n mod p(x) table */ -+ p = (z_crc_t)1 << 30; /* x^1 */ -+ x2n_table[0] = p; -+ for (n = 1; n < 32; n++) -+ x2n_table[n] = p = multmodp(p, p); -+ -+#ifdef W -+ /* initialize the braiding tables -- needs x2n_table[] */ -+ braid(crc_braid_table, crc_braid_big_table, N, W); -+#endif -+ - #ifdef MAKECRCH -- /* write out CRC tables to crc32.h */ - { -+ /* -+ The crc32.h header file contains tables for both 32-bit and 64-bit -+ z_word_t's, and so requires a 64-bit type be available. In that case, -+ z_word_t must be defined to be 64-bits. This code then also generates -+ and writes out the tables for the case that z_word_t is 32 bits. -+ */ -+#if !defined(W) || W != 8 -+# error Need a 64-bit integer type in order to generate crc32.h. -+#endif - FILE *out; -+ int k, n; -+ z_crc_t ltl[8][256]; -+ z_word_t big[8][256]; - - out = fopen("crc32.h", "w"); - if (out == NULL) return; -- fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); -- fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); -- fprintf(out, "local const z_crc_t FAR "); -- fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); -- write_table(out, crc_table[0]); --# ifdef BYFOUR -- fprintf(out, "#ifdef BYFOUR\n"); -- for (k = 1; k < 8; k++) { -- fprintf(out, " },\n {\n"); -- write_table(out, crc_table[k]); -+ -+ /* write out little-endian CRC table to crc32.h */ -+ fprintf(out, -+ "/* crc32.h -- tables for rapid CRC calculation\n" -+ " * Generated automatically by crc32.c\n */\n" -+ "\n" -+ "local const z_crc_t FAR crc_table[] = {\n" -+ " "); -+ write_table(out, crc_table, 256); -+ fprintf(out, -+ "};\n"); -+ -+ /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */ -+ fprintf(out, -+ "\n" -+ "#ifdef W\n" -+ "\n" -+ "#if W == 8\n" -+ "\n" -+ "local const z_word_t FAR crc_big_table[] = {\n" -+ " "); -+ write_table64(out, crc_big_table, 256); -+ fprintf(out, -+ "};\n"); -+ -+ /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */ -+ fprintf(out, -+ "\n" -+ "#else /* W == 4 */\n" -+ "\n" -+ "local const z_word_t FAR crc_big_table[] = {\n" -+ " "); -+ write_table32hi(out, crc_big_table, 256); -+ fprintf(out, -+ "};\n" -+ "\n" -+ "#endif\n"); -+ -+ /* write out braid tables for each value of N */ -+ for (n = 1; n <= 6; n++) { -+ fprintf(out, -+ "\n" -+ "#if N == %d\n", n); -+ -+ /* compute braid tables for this N and 64-bit word_t */ -+ braid(ltl, big, n, 8); -+ -+ /* write out braid tables for 64-bit z_word_t to crc32.h */ -+ fprintf(out, -+ "\n" -+ "#if W == 8\n" -+ "\n" -+ "local const z_crc_t FAR crc_braid_table[][256] = {\n"); -+ for (k = 0; k < 8; k++) { -+ fprintf(out, " {"); -+ write_table(out, ltl[k], 256); -+ fprintf(out, "}%s", k < 7 ? ",\n" : ""); -+ } -+ fprintf(out, -+ "};\n" -+ "\n" -+ "local const z_word_t FAR crc_braid_big_table[][256] = {\n"); -+ for (k = 0; k < 8; k++) { -+ fprintf(out, " {"); -+ write_table64(out, big[k], 256); -+ fprintf(out, "}%s", k < 7 ? ",\n" : ""); -+ } -+ fprintf(out, -+ "};\n"); -+ -+ /* compute braid tables for this N and 32-bit word_t */ -+ braid(ltl, big, n, 4); -+ -+ /* write out braid tables for 32-bit z_word_t to crc32.h */ -+ fprintf(out, -+ "\n" -+ "#else /* W == 4 */\n" -+ "\n" -+ "local const z_crc_t FAR crc_braid_table[][256] = {\n"); -+ for (k = 0; k < 4; k++) { -+ fprintf(out, " {"); -+ write_table(out, ltl[k], 256); -+ fprintf(out, "}%s", k < 3 ? ",\n" : ""); -+ } -+ fprintf(out, -+ "};\n" -+ "\n" -+ "local const z_word_t FAR crc_braid_big_table[][256] = {\n"); -+ for (k = 0; k < 4; k++) { -+ fprintf(out, " {"); -+ write_table32hi(out, big[k], 256); -+ fprintf(out, "}%s", k < 3 ? ",\n" : ""); -+ } -+ fprintf(out, -+ "};\n" -+ "\n" -+ "#endif\n" -+ "\n" -+ "#endif\n"); - } -- fprintf(out, "#endif\n"); --# endif /* BYFOUR */ -- fprintf(out, " }\n};\n"); -+ fprintf(out, -+ "\n" -+ "#endif\n"); -+ -+ /* write out zeros operator table to crc32.h */ -+ fprintf(out, -+ "\n" -+ "local const z_crc_t FAR x2n_table[] = {\n" -+ " "); -+ write_table(out, x2n_table, 32); -+ fprintf(out, -+ "};\n"); - fclose(out); - } - #endif /* MAKECRCH */ - } - - #ifdef MAKECRCH --local void write_table(out, table) -+ -+/* -+ Write the 32-bit values in table[0..k-1] to out, five per line in -+ hexadecimal separated by commas. -+ */ -+local void write_table(out, table, k) - FILE *out; - const z_crc_t FAR *table; -+ int k; - { - int n; - -- for (n = 0; n < 256; n++) -- fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", -+ for (n = 0; n < k; n++) -+ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ", - (unsigned long)(table[n]), -- n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); -+ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", ")); - } -+ -+/* -+ Write the high 32-bits of each value in table[0..k-1] to out, five per line -+ in hexadecimal separated by commas. -+ */ -+local void write_table32hi(out, table, k) -+FILE *out; -+const z_word_t FAR *table; -+int k; -+{ -+ int n; -+ -+ for (n = 0; n < k; n++) -+ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ", -+ (unsigned long)(table[n] >> 32), -+ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", ")); -+} -+ -+/* -+ Write the 64-bit values in table[0..k-1] to out, three per line in -+ hexadecimal separated by commas. This assumes that if there is a 64-bit -+ type, then there is also a long long integer type, and it is at least 64 -+ bits. If not, then the type cast and format string can be adjusted -+ accordingly. -+ */ -+local void write_table64(out, table, k) -+ FILE *out; -+ const z_word_t FAR *table; -+ int k; -+{ -+ int n; -+ -+ for (n = 0; n < k; n++) -+ fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : " ", -+ (unsigned long long)(table[n]), -+ n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", ")); -+} -+ -+/* Actually do the deed. */ -+int main() -+{ -+ make_crc_table(); -+ return 0; -+} -+ - #endif /* MAKECRCH */ - -+#ifdef W -+/* -+ Generate the little and big-endian braid tables for the given n and z_word_t -+ size w. Each array must have room for w blocks of 256 elements. -+ */ -+local void braid(ltl, big, n, w) -+ z_crc_t ltl[][256]; -+ z_word_t big[][256]; -+ int n; -+ int w; -+{ -+ int k; -+ z_crc_t i, p, q; -+ for (k = 0; k < w; k++) { -+ p = x2nmodp((n * w + 3 - k) << 3, 0); -+ ltl[k][0] = 0; -+ big[w - 1 - k][0] = 0; -+ for (i = 1; i < 256; i++) { -+ ltl[k][i] = q = multmodp(i << 24, p); -+ big[w - 1 - k][i] = byte_swap(q); -+ } -+ } -+} -+#endif -+ - #else /* !DYNAMIC_CRC_TABLE */ - /* ======================================================================== -- * Tables of CRC-32s of all single-byte values, made by make_crc_table(). -+ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers -+ * of x for combining CRC-32s, all made by make_crc_table(). - */ - #include "crc32.h" - #endif /* DYNAMIC_CRC_TABLE */ - -+/* ======================================================================== -+ * Routines used for CRC calculation. Some are also required for the table -+ * generation above. -+ */ -+ -+/* -+ Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, -+ reflected. For speed, this requires that a not be zero. -+ */ -+local z_crc_t multmodp(a, b) -+ z_crc_t a; -+ z_crc_t b; -+{ -+ z_crc_t m, p; -+ -+ m = (z_crc_t)1 << 31; -+ p = 0; -+ for (;;) { -+ if (a & m) { -+ p ^= b; -+ if ((a & (m - 1)) == 0) -+ break; -+ } -+ m >>= 1; -+ b = b & 1 ? (b >> 1) ^ POLY : b >> 1; -+ } -+ return p; -+} -+ -+/* -+ Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been -+ initialized. -+ */ -+local z_crc_t x2nmodp(n, k) -+ z_off64_t n; -+ unsigned k; -+{ -+ z_crc_t p; -+ -+ p = (z_crc_t)1 << 31; /* x^0 == 1 */ -+ while (n) { -+ if (n & 1) -+ p = multmodp(x2n_table[k & 31], p); -+ n >>= 1; -+ k++; -+ } -+ return p; -+} -+ - /* ========================================================================= -- * This function can be used by asm versions of crc32() -+ * This function can be used by asm versions of crc32(), and to force the -+ * generation of the CRC tables in a threaded application. - */ - const z_crc_t FAR * ZEXPORT get_crc_table() - { - #ifdef DYNAMIC_CRC_TABLE -- if (crc_table_empty) -- make_crc_table(); -+ once(&made, make_crc_table); - #endif /* DYNAMIC_CRC_TABLE */ - return (const z_crc_t FAR *)crc_table; - } - --/* ========================================================================= */ --#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) --#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 -+/* ========================================================================= -+ * Use ARM machine instructions if available. This will compute the CRC about -+ * ten times faster than the braided calculation. This code does not check for -+ * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will -+ * only be defined if the compilation specifies an ARM processor architecture -+ * that has the instructions. For example, compiling with -march=armv8.1-a or -+ * -march=armv8-a+crc, or -march=native if the compile machine has the crc32 -+ * instructions. -+ */ -+#ifdef ARMCRC32 -+ -+/* -+ Constants empirically determined to maximize speed. These values are from -+ measurements on a Cortex-A57. Your mileage may vary. -+ */ -+#define Z_BATCH 3990 /* number of words in a batch */ -+#define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ -+#define Z_BATCH_MIN 800 /* fewest words in a final batch */ - --/* ========================================================================= */ - unsigned long ZEXPORT crc32_z(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; - { -- if (buf == Z_NULL) return 0UL; -+ z_crc_t val; -+ z_word_t crc1, crc2; -+ const z_word_t *word; -+ z_word_t val0, val1, val2; -+ z_size_t last, last2, i; -+ z_size_t num; -+ -+ /* Return initial CRC, if requested. */ -+ if (buf == Z_NULL) return 0; - - #ifdef DYNAMIC_CRC_TABLE -- if (crc_table_empty) -- make_crc_table(); -+ once(&made, make_crc_table); - #endif /* DYNAMIC_CRC_TABLE */ - --#ifdef BYFOUR -- if (sizeof(void *) == sizeof(ptrdiff_t)) { -- z_crc_t endian; -+ /* Pre-condition the CRC */ -+ crc ^= 0xffffffff; - -- endian = 1; -- if (*((unsigned char *)(&endian))) -- return crc32_little(crc, buf, len); -- else -- return crc32_big(crc, buf, len); -+ /* Compute the CRC up to a word boundary. */ -+ while (len && ((z_size_t)buf & 7) != 0) { -+ len--; -+ val = *buf++; -+ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val)); - } --#endif /* BYFOUR */ -- crc = crc ^ 0xffffffffUL; -- while (len >= 8) { -- DO8; -- len -= 8; -+ -+ /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */ -+ word = (z_word_t const *)buf; -+ num = len >> 3; -+ len &= 7; -+ -+ /* Do three interleaved CRCs to realize the throughput of one crc32x -+ instruction per cycle. Each CRC is calcuated on Z_BATCH words. The three -+ CRCs are combined into a single CRC after each set of batches. */ -+ while (num >= 3 * Z_BATCH) { -+ crc1 = 0; -+ crc2 = 0; -+ for (i = 0; i < Z_BATCH; i++) { -+ val0 = word[i]; -+ val1 = word[i + Z_BATCH]; -+ val2 = word[i + 2 * Z_BATCH]; -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0)); -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1)); -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2)); -+ } -+ word += 3 * Z_BATCH; -+ num -= 3 * Z_BATCH; -+ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1; -+ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2; - } -- if (len) do { -- DO1; -- } while (--len); -- return crc ^ 0xffffffffUL; --} - --/* ========================================================================= */ --unsigned long ZEXPORT crc32(crc, buf, len) -- unsigned long crc; -- const unsigned char FAR *buf; -- uInt len; --{ -- return crc32_z(crc, buf, len); -+ /* Do one last smaller batch with the remaining words, if there are enough -+ to pay for the combination of CRCs. */ -+ last = num / 3; -+ if (last >= Z_BATCH_MIN) { -+ last2 = last << 1; -+ crc1 = 0; -+ crc2 = 0; -+ for (i = 0; i < last; i++) { -+ val0 = word[i]; -+ val1 = word[i + last]; -+ val2 = word[i + last2]; -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0)); -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1)); -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2)); -+ } -+ word += 3 * last; -+ num -= 3 * last; -+ val = x2nmodp(last, 6); -+ crc = multmodp(val, crc) ^ crc1; -+ crc = multmodp(val, crc) ^ crc2; -+ } -+ -+ /* Compute the CRC on any remaining words. */ -+ for (i = 0; i < num; i++) { -+ val0 = word[i]; -+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0)); -+ } -+ word += num; -+ -+ /* Complete the CRC on any remaining bytes. */ -+ buf = (const unsigned char FAR *)word; -+ while (len) { -+ len--; -+ val = *buf++; -+ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val)); -+ } -+ -+ /* Return the CRC, post-conditioned. */ -+ return crc ^ 0xffffffff; - } - --#ifdef BYFOUR -+#else -+ -+#ifdef W - - /* -- This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit -- integer pointer type. This violates the strict aliasing rule, where a -- compiler can assume, for optimization purposes, that two pointers to -- fundamentally different types won't ever point to the same memory. This can -- manifest as a problem only if one of the pointers is written to. This code -- only reads from those pointers. So long as this code remains isolated in -- this compilation unit, there won't be a problem. For this reason, this code -- should not be copied and pasted into a compilation unit in which other code -- writes to the buffer that is passed to these routines. -+ Return the CRC of the W bytes in the word_t data, taking the -+ least-significant byte of the word as the first byte of data, without any pre -+ or post conditioning. This is used to combine the CRCs of each braid. - */ -+local z_crc_t crc_word(data) -+ z_word_t data; -+{ -+ int k; -+ for (k = 0; k < W; k++) -+ data = (data >> 8) ^ crc_table[data & 0xff]; -+ return (z_crc_t)data; -+} - --/* ========================================================================= */ --#define DOLIT4 c ^= *buf4++; \ -- c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ -- crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] --#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 -+local z_word_t crc_word_big(data) -+ z_word_t data; -+{ -+ int k; -+ for (k = 0; k < W; k++) -+ data = (data << 8) ^ -+ crc_big_table[(data >> ((W - 1) << 3)) & 0xff]; -+ return data; -+} -+ -+#endif - - /* ========================================================================= */ --local unsigned long crc32_little(crc, buf, len) -+unsigned long ZEXPORT crc32_z(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; - { -- register z_crc_t c; -- register const z_crc_t FAR *buf4; -+ /* Return initial CRC, if requested. */ -+ if (buf == Z_NULL) return 0; - -- c = (z_crc_t)crc; -- c = ~c; -- while (len && ((ptrdiff_t)buf & 3)) { -- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); -- len--; -- } -+#ifdef DYNAMIC_CRC_TABLE -+ once(&made, make_crc_table); -+#endif /* DYNAMIC_CRC_TABLE */ - -- buf4 = (const z_crc_t FAR *)(const void FAR *)buf; -- while (len >= 32) { -- DOLIT32; -- len -= 32; -- } -- while (len >= 4) { -- DOLIT4; -- len -= 4; -- } -- buf = (const unsigned char FAR *)buf4; -+ /* Pre-condition the CRC */ -+ crc ^= 0xffffffff; - -- if (len) do { -- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); -- } while (--len); -- c = ~c; -- return (unsigned long)c; --} -+#ifdef W - --/* ========================================================================= */ --#define DOBIG4 c ^= *buf4++; \ -- c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ -- crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] --#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 -+ /* If provided enough bytes, do a braided CRC calculation. */ -+ if (len >= N * W + W - 1) { -+ z_size_t blks; -+ z_word_t const *words; -+ unsigned endian; -+ int k; - --/* ========================================================================= */ --local unsigned long crc32_big(crc, buf, len) -- unsigned long crc; -- const unsigned char FAR *buf; -- z_size_t len; --{ -- register z_crc_t c; -- register const z_crc_t FAR *buf4; -+ /* Compute the CRC up to a z_word_t boundary. */ -+ while (len && ((z_size_t)buf & (W - 1)) != 0) { -+ len--; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ } - -- c = ZSWAP32((z_crc_t)crc); -- c = ~c; -- while (len && ((ptrdiff_t)buf & 3)) { -- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); -- len--; -+ /* Compute the CRC on as many N z_word_t blocks as are available. */ -+ blks = len / (N * W); -+ len -= blks * N * W; -+ words = (z_word_t const *)buf; -+ -+ /* Do endian check at execution time instead of compile time, since ARM -+ processors can change the endianess at execution time. If the -+ compiler knows what the endianess will be, it can optimize out the -+ check and the unused branch. */ -+ endian = 1; -+ if (*(unsigned char *)&endian) { -+ /* Little endian. */ -+ -+ z_crc_t crc0; -+ z_word_t word0; -+#if N > 1 -+ z_crc_t crc1; -+ z_word_t word1; -+#if N > 2 -+ z_crc_t crc2; -+ z_word_t word2; -+#if N > 3 -+ z_crc_t crc3; -+ z_word_t word3; -+#if N > 4 -+ z_crc_t crc4; -+ z_word_t word4; -+#if N > 5 -+ z_crc_t crc5; -+ z_word_t word5; -+#endif -+#endif -+#endif -+#endif -+#endif -+ -+ /* Initialize the CRC for each braid. */ -+ crc0 = crc; -+#if N > 1 -+ crc1 = 0; -+#if N > 2 -+ crc2 = 0; -+#if N > 3 -+ crc3 = 0; -+#if N > 4 -+ crc4 = 0; -+#if N > 5 -+ crc5 = 0; -+#endif -+#endif -+#endif -+#endif -+#endif -+ -+ /* -+ Process the first blks-1 blocks, computing the CRCs on each braid -+ independently. -+ */ -+ while (--blks) { -+ /* Load the word for each braid into registers. */ -+ word0 = crc0 ^ words[0]; -+#if N > 1 -+ word1 = crc1 ^ words[1]; -+#if N > 2 -+ word2 = crc2 ^ words[2]; -+#if N > 3 -+ word3 = crc3 ^ words[3]; -+#if N > 4 -+ word4 = crc4 ^ words[4]; -+#if N > 5 -+ word5 = crc5 ^ words[5]; -+#endif -+#endif -+#endif -+#endif -+#endif -+ words += N; -+ -+ /* Compute and update the CRC for each word. The loop should -+ get unrolled. */ -+ crc0 = crc_braid_table[0][word0 & 0xff]; -+#if N > 1 -+ crc1 = crc_braid_table[0][word1 & 0xff]; -+#if N > 2 -+ crc2 = crc_braid_table[0][word2 & 0xff]; -+#if N > 3 -+ crc3 = crc_braid_table[0][word3 & 0xff]; -+#if N > 4 -+ crc4 = crc_braid_table[0][word4 & 0xff]; -+#if N > 5 -+ crc5 = crc_braid_table[0][word5 & 0xff]; -+#endif -+#endif -+#endif -+#endif -+#endif -+ for (k = 1; k < W; k++) { -+ crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff]; -+#if N > 1 -+ crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff]; -+#if N > 2 -+ crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff]; -+#if N > 3 -+ crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff]; -+#if N > 4 -+ crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff]; -+#if N > 5 -+ crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff]; -+#endif -+#endif -+#endif -+#endif -+#endif -+ } -+ } -+ -+ /* -+ Process the last block, combining the CRCs of the N braids at the -+ same time. -+ */ -+ crc = crc_word(crc0 ^ words[0]); -+#if N > 1 -+ crc = crc_word(crc1 ^ words[1] ^ crc); -+#if N > 2 -+ crc = crc_word(crc2 ^ words[2] ^ crc); -+#if N > 3 -+ crc = crc_word(crc3 ^ words[3] ^ crc); -+#if N > 4 -+ crc = crc_word(crc4 ^ words[4] ^ crc); -+#if N > 5 -+ crc = crc_word(crc5 ^ words[5] ^ crc); -+#endif -+#endif -+#endif -+#endif -+#endif -+ words += N; -+ } -+ else { -+ /* Big endian. */ -+ -+ z_word_t crc0, word0, comb; -+#if N > 1 -+ z_word_t crc1, word1; -+#if N > 2 -+ z_word_t crc2, word2; -+#if N > 3 -+ z_word_t crc3, word3; -+#if N > 4 -+ z_word_t crc4, word4; -+#if N > 5 -+ z_word_t crc5, word5; -+#endif -+#endif -+#endif -+#endif -+#endif -+ -+ /* Initialize the CRC for each braid. */ -+ crc0 = byte_swap(crc); -+#if N > 1 -+ crc1 = 0; -+#if N > 2 -+ crc2 = 0; -+#if N > 3 -+ crc3 = 0; -+#if N > 4 -+ crc4 = 0; -+#if N > 5 -+ crc5 = 0; -+#endif -+#endif -+#endif -+#endif -+#endif -+ -+ /* -+ Process the first blks-1 blocks, computing the CRCs on each braid -+ independently. -+ */ -+ while (--blks) { -+ /* Load the word for each braid into registers. */ -+ word0 = crc0 ^ words[0]; -+#if N > 1 -+ word1 = crc1 ^ words[1]; -+#if N > 2 -+ word2 = crc2 ^ words[2]; -+#if N > 3 -+ word3 = crc3 ^ words[3]; -+#if N > 4 -+ word4 = crc4 ^ words[4]; -+#if N > 5 -+ word5 = crc5 ^ words[5]; -+#endif -+#endif -+#endif -+#endif -+#endif -+ words += N; -+ -+ /* Compute and update the CRC for each word. The loop should -+ get unrolled. */ -+ crc0 = crc_braid_big_table[0][word0 & 0xff]; -+#if N > 1 -+ crc1 = crc_braid_big_table[0][word1 & 0xff]; -+#if N > 2 -+ crc2 = crc_braid_big_table[0][word2 & 0xff]; -+#if N > 3 -+ crc3 = crc_braid_big_table[0][word3 & 0xff]; -+#if N > 4 -+ crc4 = crc_braid_big_table[0][word4 & 0xff]; -+#if N > 5 -+ crc5 = crc_braid_big_table[0][word5 & 0xff]; -+#endif -+#endif -+#endif -+#endif -+#endif -+ for (k = 1; k < W; k++) { -+ crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff]; -+#if N > 1 -+ crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff]; -+#if N > 2 -+ crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff]; -+#if N > 3 -+ crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff]; -+#if N > 4 -+ crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff]; -+#if N > 5 -+ crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff]; -+#endif -+#endif -+#endif -+#endif -+#endif -+ } -+ } -+ -+ /* -+ Process the last block, combining the CRCs of the N braids at the -+ same time. -+ */ -+ comb = crc_word_big(crc0 ^ words[0]); -+#if N > 1 -+ comb = crc_word_big(crc1 ^ words[1] ^ comb); -+#if N > 2 -+ comb = crc_word_big(crc2 ^ words[2] ^ comb); -+#if N > 3 -+ comb = crc_word_big(crc3 ^ words[3] ^ comb); -+#if N > 4 -+ comb = crc_word_big(crc4 ^ words[4] ^ comb); -+#if N > 5 -+ comb = crc_word_big(crc5 ^ words[5] ^ comb); -+#endif -+#endif -+#endif -+#endif -+#endif -+ words += N; -+ crc = byte_swap(comb); -+ } -+ -+ /* -+ Update the pointer to the remaining bytes to process. -+ */ -+ buf = (unsigned char const *)words; - } - -- buf4 = (const z_crc_t FAR *)(const void FAR *)buf; -- while (len >= 32) { -- DOBIG32; -- len -= 32; -+#endif /* W */ -+ -+ /* Complete the computation of the CRC on any remaining bytes. */ -+ while (len >= 8) { -+ len -= 8; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; - } -- while (len >= 4) { -- DOBIG4; -- len -= 4; -+ while (len) { -+ len--; -+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff]; - } -- buf = (const unsigned char FAR *)buf4; - -- if (len) do { -- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); -- } while (--len); -- c = ~c; -- return (unsigned long)(ZSWAP32(c)); -+ /* Return the CRC, post-conditioned. */ -+ return crc ^ 0xffffffff; - } - --#endif /* BYFOUR */ -- --#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ -+#endif - - /* ========================================================================= */ --local unsigned long gf2_matrix_times(mat, vec) -- unsigned long *mat; -- unsigned long vec; -+unsigned long ZEXPORT crc32(crc, buf, len) -+ unsigned long crc; -+ const unsigned char FAR *buf; -+ uInt len; - { -- unsigned long sum; -- -- sum = 0; -- while (vec) { -- if (vec & 1) -- sum ^= *mat; -- vec >>= 1; -- mat++; -- } -- return sum; -+ return crc32_z(crc, buf, len); - } - - /* ========================================================================= */ --local void gf2_matrix_square(square, mat) -- unsigned long *square; -- unsigned long *mat; -+uLong ZEXPORT crc32_combine64(crc1, crc2, len2) -+ uLong crc1; -+ uLong crc2; -+ z_off64_t len2; - { -- int n; -- -- for (n = 0; n < GF2_DIM; n++) -- square[n] = gf2_matrix_times(mat, mat[n]); -+#ifdef DYNAMIC_CRC_TABLE -+ once(&made, make_crc_table); -+#endif /* DYNAMIC_CRC_TABLE */ -+ return multmodp(x2nmodp(len2, 3), crc1) ^ crc2; - } - - /* ========================================================================= */ --local uLong crc32_combine_(crc1, crc2, len2) -+uLong ZEXPORT crc32_combine(crc1, crc2, len2) - uLong crc1; - uLong crc2; -- z_off64_t len2; -+ z_off_t len2; - { -- int n; -- unsigned long row; -- unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ -- unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ -- -- /* degenerate case (also disallow negative lengths) */ -- if (len2 <= 0) -- return crc1; -- -- /* put operator for one zero bit in odd */ -- odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ -- row = 1; -- for (n = 1; n < GF2_DIM; n++) { -- odd[n] = row; -- row <<= 1; -- } -+ return crc32_combine64(crc1, crc2, len2); -+} - -- /* put operator for two zero bits in even */ -- gf2_matrix_square(even, odd); -- -- /* put operator for four zero bits in odd */ -- gf2_matrix_square(odd, even); -- -- /* apply len2 zeros to crc1 (first square will put the operator for one -- zero byte, eight zero bits, in even) */ -- do { -- /* apply zeros operator for this bit of len2 */ -- gf2_matrix_square(even, odd); -- if (len2 & 1) -- crc1 = gf2_matrix_times(even, crc1); -- len2 >>= 1; -- -- /* if no more bits set, then done */ -- if (len2 == 0) -- break; -- -- /* another iteration of the loop with odd and even swapped */ -- gf2_matrix_square(odd, even); -- if (len2 & 1) -- crc1 = gf2_matrix_times(odd, crc1); -- len2 >>= 1; -- -- /* if no more bits set, then done */ -- } while (len2 != 0); -- -- /* return combined crc */ -- crc1 ^= crc2; -- return crc1; -+/* ========================================================================= */ -+uLong ZEXPORT crc32_combine_gen64(len2) -+ z_off64_t len2; -+{ -+#ifdef DYNAMIC_CRC_TABLE -+ once(&made, make_crc_table); -+#endif /* DYNAMIC_CRC_TABLE */ -+ return x2nmodp(len2, 3); - } - - /* ========================================================================= */ --uLong ZEXPORT crc32_combine(crc1, crc2, len2) -- uLong crc1; -- uLong crc2; -+uLong ZEXPORT crc32_combine_gen(len2) - z_off_t len2; - { -- return crc32_combine_(crc1, crc2, len2); -+ return crc32_combine_gen64(len2); - } - --uLong ZEXPORT crc32_combine64(crc1, crc2, len2) -+/* ========================================================================= */ -+uLong crc32_combine_op(crc1, crc2, op) - uLong crc1; - uLong crc2; -- z_off64_t len2; -+ uLong op; - { -- return crc32_combine_(crc1, crc2, len2); -+ return multmodp(op, crc1) ^ crc2; - } -diff --git a/src/3rdparty/zlib/src/crc32.h b/src/3rdparty/zlib/src/crc32.h -index 9e0c778102..137df68d61 100644 ---- a/src/3rdparty/zlib/src/crc32.h -+++ b/src/3rdparty/zlib/src/crc32.h -@@ -2,440 +2,9445 @@ - * Generated automatically by crc32.c - */ - --local const z_crc_t FAR crc_table[TBLS][256] = --{ -- { -- 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, -- 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, -- 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, -- 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, -- 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, -- 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, -- 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, -- 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, -- 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, -- 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, -- 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, -- 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, -- 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, -- 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, -- 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, -- 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, -- 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, -- 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, -- 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, -- 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, -- 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, -- 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, -- 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, -- 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, -- 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, -- 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, -- 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, -- 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, -- 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, -- 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, -- 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, -- 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, -- 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, -- 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, -- 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, -- 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, -- 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, -- 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, -- 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, -- 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, -- 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, -- 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, -- 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, -- 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, -- 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, -- 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, -- 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, -- 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, -- 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, -- 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, -- 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, -- 0x2d02ef8dUL --#ifdef BYFOUR -- }, -- { -- 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, -- 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, -- 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, -- 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, -- 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, -- 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, -- 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, -- 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, -- 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, -- 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, -- 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, -- 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, -- 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, -- 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, -- 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, -- 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, -- 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, -- 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, -- 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, -- 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, -- 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, -- 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, -- 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, -- 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, -- 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, -- 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, -- 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, -- 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, -- 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, -- 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, -- 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, -- 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, -- 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, -- 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, -- 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, -- 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, -- 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, -- 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, -- 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, -- 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, -- 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, -- 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, -- 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, -- 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, -- 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, -- 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, -- 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, -- 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, -- 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, -- 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, -- 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, -- 0x9324fd72UL -- }, -- { -- 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, -- 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, -- 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, -- 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, -- 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, -- 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, -- 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, -- 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, -- 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, -- 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, -- 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, -- 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, -- 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, -- 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, -- 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, -- 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, -- 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, -- 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, -- 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, -- 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, -- 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, -- 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, -- 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, -- 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, -- 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, -- 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, -- 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, -- 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, -- 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, -- 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, -- 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, -- 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, -- 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, -- 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, -- 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, -- 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, -- 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, -- 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, -- 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, -- 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, -- 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, -- 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, -- 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, -- 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, -- 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, -- 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, -- 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, -- 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, -- 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, -- 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, -- 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, -- 0xbe9834edUL -- }, -- { -- 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, -- 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, -- 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, -- 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, -- 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, -- 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, -- 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, -- 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, -- 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, -- 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, -- 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, -- 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, -- 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, -- 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, -- 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, -- 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, -- 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, -- 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, -- 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, -- 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, -- 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, -- 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, -- 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, -- 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, -- 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, -- 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, -- 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, -- 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, -- 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, -- 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, -- 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, -- 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, -- 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, -- 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, -- 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, -- 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, -- 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, -- 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, -- 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, -- 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, -- 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, -- 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, -- 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, -- 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, -- 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, -- 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, -- 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, -- 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, -- 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, -- 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, -- 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, -- 0xde0506f1UL -- }, -- { -- 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, -- 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, -- 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, -- 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, -- 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, -- 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, -- 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, -- 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, -- 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, -- 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, -- 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, -- 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, -- 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, -- 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, -- 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, -- 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, -- 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, -- 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, -- 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, -- 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, -- 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, -- 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, -- 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, -- 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, -- 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, -- 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, -- 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, -- 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, -- 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, -- 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, -- 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, -- 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, -- 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, -- 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, -- 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, -- 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, -- 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, -- 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, -- 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, -- 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, -- 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, -- 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, -- 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, -- 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, -- 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, -- 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, -- 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, -- 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, -- 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, -- 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, -- 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, -- 0x8def022dUL -- }, -- { -- 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, -- 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, -- 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, -- 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, -- 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, -- 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, -- 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, -- 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, -- 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, -- 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, -- 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, -- 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, -- 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, -- 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, -- 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, -- 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, -- 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, -- 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, -- 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, -- 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, -- 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, -- 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, -- 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, -- 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, -- 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, -- 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, -- 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, -- 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, -- 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, -- 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, -- 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, -- 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, -- 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, -- 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, -- 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, -- 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, -- 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, -- 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, -- 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, -- 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, -- 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, -- 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, -- 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, -- 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, -- 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, -- 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, -- 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, -- 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, -- 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, -- 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, -- 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, -- 0x72fd2493UL -- }, -- { -- 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, -- 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, -- 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, -- 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, -- 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, -- 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, -- 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, -- 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, -- 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, -- 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, -- 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, -- 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, -- 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, -- 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, -- 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, -- 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, -- 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, -- 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, -- 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, -- 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, -- 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, -- 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, -- 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, -- 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, -- 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, -- 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, -- 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, -- 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, -- 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, -- 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, -- 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, -- 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, -- 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, -- 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, -- 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, -- 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, -- 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, -- 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, -- 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, -- 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, -- 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, -- 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, -- 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, -- 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, -- 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, -- 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, -- 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, -- 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, -- 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, -- 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, -- 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, -- 0xed3498beUL -- }, -- { -- 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, -- 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, -- 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, -- 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, -- 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, -- 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, -- 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, -- 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, -- 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, -- 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, -- 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, -- 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, -- 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, -- 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, -- 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, -- 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, -- 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, -- 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, -- 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, -- 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, -- 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, -- 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, -- 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, -- 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, -- 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, -- 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, -- 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, -- 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, -- 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, -- 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, -- 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, -- 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, -- 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, -- 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, -- 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, -- 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, -- 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, -- 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, -- 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, -- 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, -- 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, -- 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, -- 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, -- 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, -- 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, -- 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, -- 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, -- 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, -- 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, -- 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, -- 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, -- 0xf10605deUL -+local const z_crc_t FAR crc_table[] = { -+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, -+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, -+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, -+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, -+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, -+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, -+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, -+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, -+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, -+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, -+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, -+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, -+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, -+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, -+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, -+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, -+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, -+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, -+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, -+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, -+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, -+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, -+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, -+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, -+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, -+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, -+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, -+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, -+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, -+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, -+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, -+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, -+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, -+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, -+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, -+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, -+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, -+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, -+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, -+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, -+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, -+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, -+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, -+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, -+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, -+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, -+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, -+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, -+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, -+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, -+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, -+ 0x2d02ef8d}; -+ -+#ifdef W -+ -+#if W == 8 -+ -+local const z_word_t FAR crc_big_table[] = { -+ 0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000, -+ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000, -+ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000, -+ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000, -+ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000, -+ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000, -+ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000, -+ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000, -+ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000, -+ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000, -+ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000, -+ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000, -+ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000, -+ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000, -+ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000, -+ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000, -+ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000, -+ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000, -+ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000, -+ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000, -+ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000, -+ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000, -+ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000, -+ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000, -+ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000, -+ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000, -+ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000, -+ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000, -+ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000, -+ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000, -+ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000, -+ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000, -+ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000, -+ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000, -+ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000, -+ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000, -+ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000, -+ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000, -+ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000, -+ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000, -+ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000, -+ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000, -+ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000, -+ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000, -+ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000, -+ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000, -+ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000, -+ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000, -+ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000, -+ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000, -+ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000, -+ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000, -+ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000, -+ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000, -+ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000, -+ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000, -+ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000, -+ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000, -+ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000, -+ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000, -+ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000, -+ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000, -+ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000, -+ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000, -+ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000, -+ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000, -+ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000, -+ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000, -+ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000, -+ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000, -+ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000, -+ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000, -+ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000, -+ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000, -+ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000, -+ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000, -+ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000, -+ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000, -+ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000, -+ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000, -+ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000, -+ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000, -+ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000, -+ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000, -+ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000, -+ 0x8def022d00000000}; -+ -+#else /* W == 4 */ -+ -+local const z_word_t FAR crc_big_table[] = { -+ 0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07, -+ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79, -+ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7, -+ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84, -+ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13, -+ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663, -+ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5, -+ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5, -+ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832, -+ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51, -+ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf, -+ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1, -+ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76, -+ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606, -+ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996, -+ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6, -+ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c, -+ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712, -+ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c, -+ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4, -+ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943, -+ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333, -+ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe, -+ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce, -+ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359, -+ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a, -+ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04, -+ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a, -+ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0, -+ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580, -+ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10, -+ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060, -+ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1, -+ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf, -+ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31, -+ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852, -+ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5, -+ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5, -+ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75, -+ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005, -+ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292, -+ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1, -+ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f, -+ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111, -+ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0, -+ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0, -+ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40, -+ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530, -+ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba, -+ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4, -+ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a, -+ 0x8def022d}; -+ -+#endif -+ -+#if N == 1 -+ -+#if W == 8 -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa, -+ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b, -+ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232, -+ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8, -+ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e, -+ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa, -+ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b, -+ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, -+ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719, -+ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3, -+ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa, -+ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, -+ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed, -+ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89, -+ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25, -+ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041, -+ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c, -+ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed, -+ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4, -+ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758, -+ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e, -+ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a, -+ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed, -+ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, -+ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df, -+ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544, -+ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d, -+ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c, -+ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1, -+ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95, -+ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839, -+ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, -+ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976, -+ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7, -+ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, -+ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, -+ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12, -+ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376, -+ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a, -+ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e, -+ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278, -+ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682, -+ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b, -+ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a, -+ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561, -+ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05, -+ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9, -+ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, -+ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0, -+ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61, -+ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678, -+ 0x264b06e6}, -+ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413, -+ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3, -+ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d, -+ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653, -+ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9, -+ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e, -+ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5, -+ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, -+ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8, -+ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6, -+ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, -+ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, -+ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579, -+ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade, -+ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37, -+ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590, -+ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4, -+ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64, -+ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea, -+ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678, -+ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282, -+ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25, -+ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, -+ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, -+ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f, -+ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146, -+ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8, -+ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08, -+ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c, -+ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b, -+ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972, -+ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5, -+ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d, -+ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd, -+ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833, -+ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, -+ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7, -+ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60, -+ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2, -+ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105, -+ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff, -+ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1, -+ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, -+ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, -+ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617, -+ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0, -+ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959, -+ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, -+ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca, -+ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a, -+ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184, -+ 0x92364a30}, -+ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216, -+ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8, -+ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170, -+ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035, -+ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6, -+ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145, -+ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d, -+ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e, -+ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d, -+ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408, -+ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0, -+ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, -+ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c, -+ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf, -+ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a, -+ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9, -+ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1, -+ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f, -+ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987, -+ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4, -+ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37, -+ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84, -+ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca, -+ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, -+ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba, -+ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d, -+ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5, -+ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b, -+ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643, -+ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0, -+ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525, -+ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496, -+ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8, -+ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026, -+ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e, -+ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, -+ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118, -+ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab, -+ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf, -+ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c, -+ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf, -+ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a, -+ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32, -+ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec, -+ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82, -+ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31, -+ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, -+ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, -+ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f, -+ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1, -+ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869, -+ 0xe4c4abcc}, -+ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0, -+ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271, -+ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61, -+ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52, -+ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43, -+ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333, -+ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64, -+ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314, -+ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205, -+ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136, -+ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26, -+ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, -+ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849, -+ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739, -+ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8, -+ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98, -+ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b, -+ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba, -+ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa, -+ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d, -+ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c, -+ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc, -+ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, -+ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, -+ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce, -+ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922, -+ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532, -+ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183, -+ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710, -+ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860, -+ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1, -+ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1, -+ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956, -+ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7, -+ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7, -+ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, -+ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5, -+ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5, -+ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb, -+ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb, -+ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da, -+ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9, -+ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9, -+ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48, -+ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df, -+ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af, -+ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, -+ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, -+ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d, -+ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c, -+ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c, -+ 0xca64c78c}, -+ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757, -+ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a, -+ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, -+ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, -+ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70, -+ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42, -+ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5, -+ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, -+ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086, -+ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4, -+ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d, -+ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, -+ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d, -+ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f, -+ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, -+ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, -+ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5, -+ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028, -+ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891, -+ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, -+ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec, -+ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde, -+ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817, -+ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, -+ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24, -+ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e, -+ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7, -+ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, -+ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4, -+ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196, -+ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, -+ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, -+ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52, -+ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f, -+ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, -+ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, -+ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675, -+ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647, -+ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d, -+ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, -+ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be, -+ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc, -+ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645, -+ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, -+ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138, -+ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a, -+ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, -+ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, -+ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0, -+ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d, -+ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194, -+ 0xde0506f1}, -+ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc, -+ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f, -+ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a, -+ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, -+ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8, -+ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023, -+ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e, -+ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, -+ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84, -+ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7, -+ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922, -+ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, -+ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0, -+ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b, -+ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, -+ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, -+ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c, -+ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f, -+ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba, -+ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, -+ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98, -+ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873, -+ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e, -+ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, -+ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134, -+ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7, -+ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732, -+ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, -+ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0, -+ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b, -+ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26, -+ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, -+ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc, -+ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef, -+ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a, -+ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, -+ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8, -+ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43, -+ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e, -+ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, -+ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24, -+ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07, -+ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982, -+ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, -+ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0, -+ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b, -+ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576, -+ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, -+ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c, -+ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f, -+ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, -+ 0xbe9834ed}, -+ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504, -+ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49, -+ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, -+ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, -+ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859, -+ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c, -+ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620, -+ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, -+ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae, -+ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2, -+ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175, -+ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, -+ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05, -+ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40, -+ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, -+ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, -+ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850, -+ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d, -+ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da, -+ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, -+ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af, -+ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea, -+ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74, -+ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, -+ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa, -+ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a, -+ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, -+ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, -+ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a, -+ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f, -+ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290, -+ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, -+ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed, -+ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0, -+ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, -+ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, -+ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0, -+ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5, -+ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, -+ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, -+ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842, -+ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e, -+ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299, -+ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, -+ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec, -+ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9, -+ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66, -+ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, -+ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9, -+ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4, -+ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, -+ 0x9324fd72}, -+ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, -+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, -+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, -+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, -+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, -+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, -+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, -+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, -+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, -+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, -+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, -+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, -+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, -+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, -+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, -+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, -+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, -+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, -+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, -+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, -+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, -+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, -+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, -+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, -+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, -+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, -+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, -+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, -+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, -+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, -+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, -+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, -+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, -+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, -+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, -+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, -+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, -+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, -+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, -+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, -+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, -+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, -+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, -+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, -+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, -+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, -+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, -+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, -+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, -+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, -+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, -+ 0x2d02ef8d}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000, -+ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000, -+ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000, -+ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000, -+ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000, -+ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000, -+ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000, -+ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000, -+ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000, -+ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000, -+ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000, -+ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000, -+ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000, -+ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000, -+ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000, -+ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000, -+ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000, -+ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000, -+ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000, -+ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000, -+ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000, -+ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000, -+ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000, -+ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000, -+ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000, -+ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000, -+ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000, -+ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000, -+ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000, -+ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000, -+ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000, -+ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000, -+ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000, -+ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000, -+ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000, -+ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000, -+ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000, -+ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000, -+ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000, -+ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000, -+ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000, -+ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000, -+ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000, -+ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000, -+ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000, -+ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000, -+ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000, -+ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000, -+ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000, -+ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000, -+ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000, -+ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000, -+ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000, -+ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000, -+ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000, -+ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000, -+ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000, -+ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000, -+ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000, -+ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000, -+ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000, -+ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000, -+ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000, -+ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000, -+ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000, -+ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000, -+ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000, -+ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000, -+ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000, -+ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000, -+ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000, -+ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000, -+ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000, -+ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000, -+ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000, -+ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000, -+ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000, -+ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000, -+ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000, -+ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000, -+ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000, -+ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000, -+ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000, -+ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000, -+ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000, -+ 0x8def022d00000000}, -+ {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000, -+ 0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000, -+ 0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000, -+ 0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000, -+ 0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000, -+ 0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000, -+ 0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000, -+ 0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000, -+ 0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000, -+ 0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000, -+ 0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000, -+ 0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000, -+ 0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000, -+ 0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000, -+ 0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000, -+ 0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000, -+ 0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000, -+ 0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000, -+ 0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000, -+ 0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000, -+ 0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000, -+ 0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000, -+ 0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000, -+ 0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000, -+ 0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000, -+ 0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000, -+ 0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000, -+ 0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000, -+ 0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000, -+ 0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000, -+ 0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000, -+ 0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000, -+ 0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000, -+ 0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000, -+ 0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000, -+ 0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000, -+ 0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000, -+ 0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000, -+ 0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000, -+ 0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000, -+ 0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000, -+ 0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000, -+ 0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000, -+ 0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000, -+ 0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000, -+ 0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000, -+ 0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000, -+ 0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000, -+ 0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000, -+ 0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000, -+ 0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000, -+ 0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000, -+ 0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000, -+ 0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000, -+ 0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000, -+ 0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000, -+ 0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000, -+ 0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000, -+ 0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000, -+ 0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000, -+ 0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000, -+ 0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000, -+ 0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000, -+ 0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000, -+ 0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000, -+ 0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000, -+ 0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000, -+ 0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000, -+ 0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000, -+ 0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000, -+ 0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000, -+ 0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000, -+ 0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000, -+ 0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000, -+ 0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000, -+ 0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000, -+ 0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000, -+ 0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000, -+ 0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000, -+ 0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000, -+ 0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000, -+ 0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000, -+ 0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000, -+ 0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000, -+ 0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000, -+ 0x72fd249300000000}, -+ {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000, -+ 0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000, -+ 0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000, -+ 0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000, -+ 0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000, -+ 0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000, -+ 0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000, -+ 0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000, -+ 0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000, -+ 0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000, -+ 0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000, -+ 0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000, -+ 0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000, -+ 0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000, -+ 0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000, -+ 0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000, -+ 0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000, -+ 0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000, -+ 0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000, -+ 0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000, -+ 0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000, -+ 0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000, -+ 0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000, -+ 0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000, -+ 0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000, -+ 0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000, -+ 0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000, -+ 0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000, -+ 0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000, -+ 0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000, -+ 0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000, -+ 0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000, -+ 0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000, -+ 0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000, -+ 0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000, -+ 0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000, -+ 0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000, -+ 0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000, -+ 0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000, -+ 0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000, -+ 0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000, -+ 0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000, -+ 0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000, -+ 0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000, -+ 0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000, -+ 0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000, -+ 0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000, -+ 0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000, -+ 0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000, -+ 0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000, -+ 0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000, -+ 0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000, -+ 0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000, -+ 0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000, -+ 0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000, -+ 0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000, -+ 0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000, -+ 0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000, -+ 0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000, -+ 0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000, -+ 0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000, -+ 0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000, -+ 0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000, -+ 0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000, -+ 0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000, -+ 0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000, -+ 0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000, -+ 0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000, -+ 0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000, -+ 0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000, -+ 0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000, -+ 0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000, -+ 0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000, -+ 0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000, -+ 0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000, -+ 0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000, -+ 0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000, -+ 0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000, -+ 0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000, -+ 0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000, -+ 0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000, -+ 0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000, -+ 0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000, -+ 0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000, -+ 0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000, -+ 0xed3498be00000000}, -+ {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000, -+ 0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000, -+ 0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000, -+ 0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000, -+ 0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000, -+ 0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000, -+ 0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000, -+ 0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000, -+ 0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000, -+ 0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000, -+ 0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000, -+ 0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000, -+ 0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000, -+ 0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000, -+ 0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000, -+ 0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000, -+ 0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000, -+ 0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000, -+ 0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000, -+ 0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000, -+ 0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000, -+ 0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000, -+ 0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000, -+ 0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000, -+ 0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000, -+ 0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000, -+ 0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000, -+ 0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000, -+ 0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000, -+ 0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000, -+ 0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000, -+ 0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000, -+ 0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000, -+ 0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000, -+ 0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000, -+ 0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000, -+ 0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000, -+ 0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000, -+ 0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000, -+ 0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000, -+ 0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000, -+ 0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000, -+ 0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000, -+ 0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000, -+ 0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000, -+ 0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000, -+ 0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000, -+ 0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000, -+ 0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000, -+ 0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000, -+ 0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000, -+ 0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000, -+ 0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000, -+ 0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000, -+ 0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000, -+ 0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000, -+ 0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000, -+ 0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000, -+ 0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000, -+ 0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000, -+ 0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000, -+ 0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000, -+ 0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000, -+ 0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000, -+ 0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000, -+ 0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000, -+ 0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000, -+ 0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000, -+ 0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000, -+ 0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000, -+ 0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000, -+ 0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000, -+ 0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000, -+ 0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000, -+ 0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000, -+ 0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000, -+ 0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000, -+ 0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000, -+ 0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000, -+ 0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000, -+ 0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000, -+ 0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000, -+ 0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000, -+ 0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000, -+ 0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000, -+ 0xf10605de00000000}, -+ {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000, -+ 0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000, -+ 0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000, -+ 0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000, -+ 0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000, -+ 0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000, -+ 0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000, -+ 0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000, -+ 0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000, -+ 0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000, -+ 0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000, -+ 0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000, -+ 0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000, -+ 0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000, -+ 0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000, -+ 0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000, -+ 0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000, -+ 0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000, -+ 0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000, -+ 0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000, -+ 0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000, -+ 0x572f712300000000, 0x4958f35800000000, 0xf971936500000000, -+ 0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000, -+ 0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000, -+ 0x8813836800000000, 0x383ae35500000000, 0xe840431200000000, -+ 0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000, -+ 0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000, -+ 0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000, -+ 0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000, -+ 0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000, -+ 0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000, -+ 0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000, -+ 0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000, -+ 0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000, -+ 0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000, -+ 0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000, -+ 0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000, -+ 0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000, -+ 0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000, -+ 0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000, -+ 0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000, -+ 0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000, -+ 0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000, -+ 0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000, -+ 0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000, -+ 0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000, -+ 0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000, -+ 0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000, -+ 0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000, -+ 0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000, -+ 0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000, -+ 0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000, -+ 0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000, -+ 0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000, -+ 0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000, -+ 0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000, -+ 0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000, -+ 0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000, -+ 0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000, -+ 0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000, -+ 0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000, -+ 0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000, -+ 0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000, -+ 0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000, -+ 0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000, -+ 0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000, -+ 0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000, -+ 0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000, -+ 0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000, -+ 0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000, -+ 0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000, -+ 0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000, -+ 0x983485b900000000, 0x281de58400000000, 0xf86745c300000000, -+ 0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000, -+ 0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000, -+ 0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000, -+ 0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000, -+ 0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000, -+ 0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000, -+ 0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000, -+ 0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000, -+ 0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000, -+ 0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000, -+ 0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000, -+ 0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000, -+ 0x8cc764ca00000000}, -+ {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000, -+ 0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000, -+ 0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000, -+ 0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000, -+ 0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000, -+ 0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000, -+ 0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000, -+ 0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000, -+ 0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000, -+ 0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000, -+ 0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000, -+ 0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000, -+ 0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000, -+ 0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000, -+ 0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000, -+ 0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000, -+ 0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000, -+ 0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000, -+ 0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000, -+ 0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000, -+ 0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000, -+ 0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000, -+ 0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000, -+ 0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000, -+ 0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000, -+ 0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000, -+ 0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000, -+ 0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000, -+ 0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000, -+ 0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000, -+ 0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000, -+ 0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000, -+ 0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000, -+ 0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000, -+ 0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000, -+ 0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000, -+ 0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000, -+ 0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000, -+ 0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000, -+ 0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000, -+ 0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000, -+ 0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000, -+ 0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000, -+ 0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000, -+ 0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000, -+ 0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000, -+ 0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000, -+ 0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000, -+ 0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000, -+ 0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000, -+ 0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000, -+ 0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000, -+ 0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000, -+ 0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000, -+ 0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000, -+ 0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000, -+ 0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000, -+ 0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000, -+ 0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000, -+ 0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000, -+ 0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000, -+ 0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000, -+ 0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000, -+ 0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000, -+ 0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000, -+ 0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000, -+ 0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000, -+ 0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000, -+ 0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000, -+ 0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000, -+ 0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000, -+ 0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000, -+ 0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000, -+ 0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000, -+ 0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000, -+ 0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000, -+ 0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000, -+ 0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000, -+ 0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000, -+ 0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000, -+ 0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000, -+ 0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000, -+ 0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000, -+ 0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000, -+ 0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000, -+ 0xccabc4e400000000}, -+ {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000, -+ 0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000, -+ 0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000, -+ 0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000, -+ 0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000, -+ 0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000, -+ 0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000, -+ 0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000, -+ 0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000, -+ 0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000, -+ 0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000, -+ 0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000, -+ 0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000, -+ 0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000, -+ 0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000, -+ 0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000, -+ 0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000, -+ 0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000, -+ 0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000, -+ 0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000, -+ 0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000, -+ 0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000, -+ 0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000, -+ 0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000, -+ 0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000, -+ 0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000, -+ 0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000, -+ 0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000, -+ 0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000, -+ 0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000, -+ 0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000, -+ 0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000, -+ 0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000, -+ 0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000, -+ 0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000, -+ 0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000, -+ 0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000, -+ 0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000, -+ 0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000, -+ 0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000, -+ 0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000, -+ 0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000, -+ 0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000, -+ 0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000, -+ 0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000, -+ 0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000, -+ 0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000, -+ 0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000, -+ 0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000, -+ 0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000, -+ 0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000, -+ 0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000, -+ 0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000, -+ 0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000, -+ 0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000, -+ 0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000, -+ 0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000, -+ 0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000, -+ 0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000, -+ 0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000, -+ 0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000, -+ 0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000, -+ 0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000, -+ 0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000, -+ 0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000, -+ 0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000, -+ 0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000, -+ 0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000, -+ 0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000, -+ 0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000, -+ 0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000, -+ 0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000, -+ 0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000, -+ 0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000, -+ 0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000, -+ 0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000, -+ 0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000, -+ 0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000, -+ 0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000, -+ 0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000, -+ 0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000, -+ 0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000, -+ 0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000, -+ 0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000, -+ 0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000, -+ 0x304a369200000000}, -+ {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000, -+ 0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000, -+ 0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000, -+ 0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000, -+ 0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000, -+ 0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000, -+ 0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000, -+ 0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000, -+ 0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000, -+ 0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000, -+ 0x1923316900000000, 0x87239ba500000000, 0x566276f900000000, -+ 0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000, -+ 0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000, -+ 0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000, -+ 0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000, -+ 0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000, -+ 0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000, -+ 0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000, -+ 0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000, -+ 0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000, -+ 0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000, -+ 0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000, -+ 0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000, -+ 0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000, -+ 0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000, -+ 0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000, -+ 0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000, -+ 0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000, -+ 0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000, -+ 0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000, -+ 0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000, -+ 0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000, -+ 0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000, -+ 0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000, -+ 0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000, -+ 0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000, -+ 0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000, -+ 0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000, -+ 0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000, -+ 0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000, -+ 0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000, -+ 0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000, -+ 0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000, -+ 0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000, -+ 0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000, -+ 0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000, -+ 0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000, -+ 0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000, -+ 0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000, -+ 0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000, -+ 0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000, -+ 0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000, -+ 0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000, -+ 0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000, -+ 0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000, -+ 0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000, -+ 0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000, -+ 0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000, -+ 0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000, -+ 0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000, -+ 0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000, -+ 0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000, -+ 0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000, -+ 0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000, -+ 0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000, -+ 0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000, -+ 0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000, -+ 0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000, -+ 0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000, -+ 0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000, -+ 0x6171384400000000, 0xff71928800000000, 0xe678578200000000, -+ 0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000, -+ 0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000, -+ 0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000, -+ 0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000, -+ 0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000, -+ 0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000, -+ 0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000, -+ 0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000, -+ 0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000, -+ 0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000, -+ 0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000, -+ 0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000, -+ 0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000, -+ 0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000, -+ 0xe6064b2600000000}}; -+ -+#else /* W == 4 */ -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757, -+ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a, -+ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733, -+ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871, -+ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70, -+ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42, -+ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5, -+ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787, -+ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086, -+ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4, -+ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d, -+ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, -+ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d, -+ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f, -+ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859, -+ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b, -+ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5, -+ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028, -+ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891, -+ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed, -+ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec, -+ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde, -+ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817, -+ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, -+ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24, -+ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e, -+ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7, -+ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a, -+ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4, -+ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196, -+ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, -+ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, -+ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52, -+ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f, -+ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, -+ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, -+ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675, -+ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647, -+ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d, -+ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf, -+ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be, -+ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc, -+ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645, -+ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98, -+ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138, -+ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a, -+ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, -+ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, -+ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0, -+ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d, -+ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194, -+ 0xde0506f1}, -+ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc, -+ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f, -+ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a, -+ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29, -+ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8, -+ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023, -+ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e, -+ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065, -+ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84, -+ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7, -+ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922, -+ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, -+ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0, -+ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b, -+ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816, -+ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd, -+ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c, -+ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f, -+ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba, -+ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579, -+ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98, -+ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873, -+ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e, -+ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, -+ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134, -+ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7, -+ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732, -+ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461, -+ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0, -+ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b, -+ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26, -+ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, -+ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc, -+ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef, -+ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a, -+ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, -+ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8, -+ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43, -+ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e, -+ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5, -+ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24, -+ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07, -+ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982, -+ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1, -+ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0, -+ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b, -+ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576, -+ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, -+ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c, -+ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f, -+ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda, -+ 0xbe9834ed}, -+ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504, -+ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49, -+ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e, -+ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192, -+ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859, -+ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c, -+ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620, -+ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, -+ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae, -+ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2, -+ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175, -+ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, -+ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05, -+ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40, -+ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f, -+ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca, -+ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850, -+ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d, -+ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da, -+ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864, -+ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af, -+ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea, -+ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74, -+ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, -+ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa, -+ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a, -+ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd, -+ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180, -+ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a, -+ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f, -+ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290, -+ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5, -+ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed, -+ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0, -+ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, -+ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, -+ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0, -+ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5, -+ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc, -+ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189, -+ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842, -+ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e, -+ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299, -+ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, -+ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec, -+ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9, -+ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66, -+ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, -+ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9, -+ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4, -+ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33, -+ 0x9324fd72}, -+ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, -+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, -+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, -+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, -+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, -+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, -+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, -+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, -+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, -+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, -+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, -+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, -+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, -+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, -+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, -+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, -+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, -+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, -+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, -+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, -+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, -+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, -+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, -+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, -+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, -+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, -+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, -+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, -+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, -+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, -+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, -+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, -+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, -+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, -+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, -+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, -+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, -+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, -+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, -+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, -+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, -+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, -+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, -+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, -+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, -+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, -+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, -+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, -+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, -+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, -+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, -+ 0x2d02ef8d}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07, -+ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79, -+ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7, -+ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84, -+ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13, -+ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663, -+ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5, -+ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5, -+ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832, -+ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51, -+ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf, -+ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1, -+ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76, -+ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606, -+ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996, -+ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6, -+ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c, -+ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712, -+ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c, -+ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4, -+ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943, -+ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333, -+ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe, -+ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce, -+ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359, -+ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a, -+ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04, -+ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a, -+ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0, -+ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580, -+ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10, -+ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060, -+ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1, -+ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf, -+ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31, -+ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852, -+ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5, -+ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5, -+ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75, -+ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005, -+ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292, -+ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1, -+ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f, -+ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111, -+ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0, -+ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0, -+ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40, -+ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530, -+ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba, -+ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4, -+ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a, -+ 0x8def022d}, -+ {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64, -+ 0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1, -+ 0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e, -+ 0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61, -+ 0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82, -+ 0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff, -+ 0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7, -+ 0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da, -+ 0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139, -+ 0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6, -+ 0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89, -+ 0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c, -+ 0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0, -+ 0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d, -+ 0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a, -+ 0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177, -+ 0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de, -+ 0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b, -+ 0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824, -+ 0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e, -+ 0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad, -+ 0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0, -+ 0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d, -+ 0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60, -+ 0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83, -+ 0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822, -+ 0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d, -+ 0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8, -+ 0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171, -+ 0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c, -+ 0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b, -+ 0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6, -+ 0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca, -+ 0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f, -+ 0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430, -+ 0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf, -+ 0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c, -+ 0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51, -+ 0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9, -+ 0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84, -+ 0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67, -+ 0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398, -+ 0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7, -+ 0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62, -+ 0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e, -+ 0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923, -+ 0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4, -+ 0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9, -+ 0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070, -+ 0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5, -+ 0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a, -+ 0x72fd2493}, -+ {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907, -+ 0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f, -+ 0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a, -+ 0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e, -+ 0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512, -+ 0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14, -+ 0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b, -+ 0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d, -+ 0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731, -+ 0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925, -+ 0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620, -+ 0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28, -+ 0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70, -+ 0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176, -+ 0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d, -+ 0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b, -+ 0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b, -+ 0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63, -+ 0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266, -+ 0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a, -+ 0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446, -+ 0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40, -+ 0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557, -+ 0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51, -+ 0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d, -+ 0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0, -+ 0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5, -+ 0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed, -+ 0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd, -+ 0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb, -+ 0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0, -+ 0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6, -+ 0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de, -+ 0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6, -+ 0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3, -+ 0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7, -+ 0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb, -+ 0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd, -+ 0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92, -+ 0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094, -+ 0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598, -+ 0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c, -+ 0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489, -+ 0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81, -+ 0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9, -+ 0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af, -+ 0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4, -+ 0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2, -+ 0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2, -+ 0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba, -+ 0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf, -+ 0xed3498be}, -+ {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f, -+ 0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d, -+ 0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0, -+ 0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42, -+ 0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95, -+ 0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2, -+ 0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a, -+ 0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d, -+ 0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea, -+ 0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748, -+ 0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5, -+ 0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27, -+ 0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b, -+ 0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac, -+ 0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4, -+ 0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3, -+ 0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44, -+ 0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6, -+ 0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b, -+ 0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329, -+ 0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe, -+ 0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9, -+ 0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1, -+ 0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6, -+ 0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921, -+ 0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555, -+ 0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8, -+ 0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a, -+ 0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd, -+ 0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a, -+ 0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2, -+ 0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5, -+ 0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2, -+ 0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330, -+ 0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad, -+ 0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f, -+ 0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8, -+ 0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef, -+ 0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc, -+ 0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb, -+ 0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c, -+ 0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e, -+ 0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03, -+ 0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1, -+ 0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6, -+ 0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1, -+ 0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9, -+ 0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e, -+ 0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409, -+ 0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb, -+ 0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966, -+ 0xf10605de}}; -+ -+#endif -+ -+#endif -+ -+#if N == 2 -+ -+#if W == 8 -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87, -+ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede, -+ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab, -+ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c, -+ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1, -+ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7, -+ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e, -+ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308, -+ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5, -+ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472, -+ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07, -+ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e, -+ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa, -+ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec, -+ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6, -+ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0, -+ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3, -+ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba, -+ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf, -+ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975, -+ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8, -+ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde, -+ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a, -+ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c, -+ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1, -+ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65, -+ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410, -+ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649, -+ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a, -+ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c, -+ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946, -+ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450, -+ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e, -+ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857, -+ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022, -+ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5, -+ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758, -+ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e, -+ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d, -+ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b, -+ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6, -+ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401, -+ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74, -+ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d, -+ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073, -+ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65, -+ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f, -+ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749, -+ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a, -+ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033, -+ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846, -+ 0x0d7139d7}, -+ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563, -+ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f, -+ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875, -+ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536, -+ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8, -+ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43, -+ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f, -+ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184, -+ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a, -+ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39, -+ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523, -+ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f, -+ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d, -+ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6, -+ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b, -+ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0, -+ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151, -+ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d, -+ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47, -+ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a, -+ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964, -+ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef, -+ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d, -+ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6, -+ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348, -+ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53, -+ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449, -+ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645, -+ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4, -+ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f, -+ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2, -+ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69, -+ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46, -+ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a, -+ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650, -+ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13, -+ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded, -+ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366, -+ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57, -+ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc, -+ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222, -+ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61, -+ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b, -+ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277, -+ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558, -+ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3, -+ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e, -+ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5, -+ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74, -+ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78, -+ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262, -+ 0x1c53e98a}, -+ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b, -+ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40, -+ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580, -+ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7, -+ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a, -+ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37, -+ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75, -+ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218, -+ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5, -+ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2, -+ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02, -+ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59, -+ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1, -+ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c, -+ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a, -+ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307, -+ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486, -+ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd, -+ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d, -+ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2, -+ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f, -+ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72, -+ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8, -+ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985, -+ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268, -+ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94, -+ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454, -+ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f, -+ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e, -+ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3, -+ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915, -+ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778, -+ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821, -+ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a, -+ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba, -+ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d, -+ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560, -+ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d, -+ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe, -+ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3, -+ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e, -+ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509, -+ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9, -+ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92, -+ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb, -+ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6, -+ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50, -+ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d, -+ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc, -+ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7, -+ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927, -+ 0x3f88e851}, -+ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96, -+ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8, -+ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0, -+ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14, -+ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7, -+ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4, -+ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe, -+ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad, -+ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e, -+ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa, -+ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2, -+ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c, -+ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab, -+ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8, -+ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d, -+ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e, -+ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7, -+ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99, -+ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1, -+ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690, -+ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933, -+ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20, -+ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf, -+ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc, -+ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f, -+ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92, -+ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca, -+ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4, -+ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd, -+ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de, -+ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb, -+ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8, -+ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474, -+ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a, -+ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252, -+ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6, -+ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55, -+ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846, -+ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7, -+ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4, -+ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47, -+ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3, -+ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb, -+ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5, -+ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49, -+ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a, -+ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f, -+ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c, -+ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305, -+ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b, -+ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523, -+ 0x3dee8ca6}, -+ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f, -+ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91, -+ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e, -+ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c, -+ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02, -+ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12, -+ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567, -+ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277, -+ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679, -+ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b, -+ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4, -+ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a, -+ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0, -+ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0, -+ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91, -+ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881, -+ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173, -+ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d, -+ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912, -+ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8, -+ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6, -+ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6, -+ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b, -+ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b, -+ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75, -+ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f, -+ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00, -+ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee, -+ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c, -+ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c, -+ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d, -+ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d, -+ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67, -+ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89, -+ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706, -+ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14, -+ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a, -+ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a, -+ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f, -+ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f, -+ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591, -+ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983, -+ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c, -+ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2, -+ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8, -+ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8, -+ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89, -+ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99, -+ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b, -+ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485, -+ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a, -+ 0x36197165}, -+ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382, -+ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85, -+ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06, -+ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca, -+ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e, -+ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc, -+ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616, -+ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54, -+ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10, -+ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc, -+ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f, -+ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58, -+ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef, -+ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad, -+ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b, -+ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29, -+ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6, -+ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1, -+ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622, -+ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039, -+ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d, -+ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f, -+ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32, -+ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770, -+ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034, -+ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f, -+ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc, -+ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db, -+ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154, -+ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16, -+ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0, -+ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592, -+ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca, -+ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd, -+ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e, -+ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882, -+ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6, -+ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384, -+ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1, -+ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3, -+ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7, -+ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b, -+ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8, -+ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff, -+ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7, -+ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5, -+ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23, -+ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761, -+ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee, -+ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9, -+ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a, -+ 0x1a3b93aa}, -+ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a, -+ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca, -+ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3, -+ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb, -+ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c, -+ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58, -+ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed, -+ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9, -+ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e, -+ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906, -+ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f, -+ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf, -+ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0, -+ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4, -+ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769, -+ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d, -+ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632, -+ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82, -+ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb, -+ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73, -+ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484, -+ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0, -+ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5, -+ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1, -+ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516, -+ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f, -+ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946, -+ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6, -+ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9, -+ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad, -+ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820, -+ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364, -+ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab, -+ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b, -+ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62, -+ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a, -+ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd, -+ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089, -+ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c, -+ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8, -+ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f, -+ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477, -+ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e, -+ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be, -+ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71, -+ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635, -+ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8, -+ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc, -+ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3, -+ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753, -+ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a, -+ 0xe147d714}, -+ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c, -+ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b, -+ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92, -+ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4, -+ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069, -+ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526, -+ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25, -+ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a, -+ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7, -+ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491, -+ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958, -+ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f, -+ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307, -+ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648, -+ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999, -+ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6, -+ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a, -+ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d, -+ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4, -+ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61, -+ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc, -+ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3, -+ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53, -+ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c, -+ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1, -+ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c, -+ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5, -+ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92, -+ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e, -+ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771, -+ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0, -+ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def, -+ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0, -+ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7, -+ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e, -+ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58, -+ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285, -+ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca, -+ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce, -+ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81, -+ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c, -+ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a, -+ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3, -+ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4, -+ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb, -+ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4, -+ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75, -+ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a, -+ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296, -+ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1, -+ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808, -+ 0x494f0c4b}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000, -+ 0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000, -+ 0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000, -+ 0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000, -+ 0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000, -+ 0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000, -+ 0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000, -+ 0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000, -+ 0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000, -+ 0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000, -+ 0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000, -+ 0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000, -+ 0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000, -+ 0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000, -+ 0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000, -+ 0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000, -+ 0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000, -+ 0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000, -+ 0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000, -+ 0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000, -+ 0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000, -+ 0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000, -+ 0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000, -+ 0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000, -+ 0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000, -+ 0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000, -+ 0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000, -+ 0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000, -+ 0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000, -+ 0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000, -+ 0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000, -+ 0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000, -+ 0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000, -+ 0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000, -+ 0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000, -+ 0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000, -+ 0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000, -+ 0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000, -+ 0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000, -+ 0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000, -+ 0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000, -+ 0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000, -+ 0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000, -+ 0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000, -+ 0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000, -+ 0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000, -+ 0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000, -+ 0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000, -+ 0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000, -+ 0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000, -+ 0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000, -+ 0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000, -+ 0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000, -+ 0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000, -+ 0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000, -+ 0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000, -+ 0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000, -+ 0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000, -+ 0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000, -+ 0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000, -+ 0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000, -+ 0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000, -+ 0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000, -+ 0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000, -+ 0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000, -+ 0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000, -+ 0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000, -+ 0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000, -+ 0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000, -+ 0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000, -+ 0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000, -+ 0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000, -+ 0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000, -+ 0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000, -+ 0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000, -+ 0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000, -+ 0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000, -+ 0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000, -+ 0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000, -+ 0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000, -+ 0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000, -+ 0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000, -+ 0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000, -+ 0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000, -+ 0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000, -+ 0x4b0c4f4900000000}, -+ {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000, -+ 0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000, -+ 0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000, -+ 0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000, -+ 0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000, -+ 0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000, -+ 0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000, -+ 0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000, -+ 0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000, -+ 0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000, -+ 0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000, -+ 0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000, -+ 0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000, -+ 0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000, -+ 0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000, -+ 0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000, -+ 0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000, -+ 0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000, -+ 0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000, -+ 0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000, -+ 0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000, -+ 0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000, -+ 0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000, -+ 0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000, -+ 0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000, -+ 0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000, -+ 0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000, -+ 0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000, -+ 0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000, -+ 0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000, -+ 0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000, -+ 0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000, -+ 0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000, -+ 0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000, -+ 0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000, -+ 0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000, -+ 0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000, -+ 0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000, -+ 0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000, -+ 0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000, -+ 0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000, -+ 0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000, -+ 0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000, -+ 0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000, -+ 0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000, -+ 0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000, -+ 0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000, -+ 0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000, -+ 0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000, -+ 0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000, -+ 0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000, -+ 0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000, -+ 0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000, -+ 0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000, -+ 0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000, -+ 0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000, -+ 0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000, -+ 0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000, -+ 0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000, -+ 0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000, -+ 0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000, -+ 0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000, -+ 0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000, -+ 0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000, -+ 0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000, -+ 0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000, -+ 0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000, -+ 0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000, -+ 0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000, -+ 0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000, -+ 0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000, -+ 0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000, -+ 0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000, -+ 0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000, -+ 0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000, -+ 0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000, -+ 0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000, -+ 0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000, -+ 0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000, -+ 0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000, -+ 0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000, -+ 0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000, -+ 0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000, -+ 0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000, -+ 0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000, -+ 0x14d747e100000000}, -+ {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000, -+ 0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000, -+ 0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000, -+ 0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000, -+ 0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000, -+ 0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000, -+ 0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000, -+ 0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000, -+ 0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000, -+ 0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000, -+ 0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000, -+ 0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000, -+ 0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000, -+ 0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000, -+ 0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000, -+ 0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000, -+ 0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000, -+ 0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000, -+ 0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000, -+ 0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000, -+ 0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000, -+ 0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000, -+ 0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000, -+ 0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000, -+ 0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000, -+ 0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000, -+ 0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000, -+ 0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000, -+ 0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000, -+ 0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000, -+ 0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000, -+ 0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000, -+ 0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000, -+ 0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000, -+ 0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000, -+ 0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000, -+ 0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000, -+ 0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000, -+ 0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000, -+ 0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000, -+ 0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000, -+ 0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000, -+ 0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000, -+ 0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000, -+ 0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000, -+ 0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000, -+ 0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000, -+ 0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000, -+ 0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000, -+ 0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000, -+ 0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000, -+ 0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000, -+ 0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000, -+ 0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000, -+ 0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000, -+ 0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000, -+ 0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000, -+ 0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000, -+ 0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000, -+ 0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000, -+ 0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000, -+ 0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000, -+ 0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000, -+ 0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000, -+ 0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000, -+ 0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000, -+ 0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000, -+ 0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000, -+ 0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000, -+ 0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000, -+ 0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000, -+ 0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000, -+ 0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000, -+ 0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000, -+ 0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000, -+ 0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000, -+ 0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000, -+ 0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000, -+ 0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000, -+ 0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000, -+ 0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000, -+ 0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000, -+ 0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000, -+ 0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000, -+ 0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000, -+ 0xaa933b1a00000000}, -+ {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000, -+ 0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000, -+ 0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000, -+ 0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000, -+ 0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000, -+ 0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000, -+ 0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000, -+ 0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000, -+ 0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000, -+ 0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000, -+ 0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000, -+ 0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000, -+ 0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000, -+ 0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000, -+ 0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000, -+ 0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000, -+ 0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000, -+ 0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000, -+ 0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000, -+ 0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000, -+ 0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000, -+ 0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000, -+ 0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000, -+ 0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000, -+ 0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000, -+ 0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000, -+ 0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000, -+ 0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000, -+ 0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000, -+ 0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000, -+ 0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000, -+ 0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000, -+ 0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000, -+ 0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000, -+ 0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000, -+ 0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000, -+ 0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000, -+ 0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000, -+ 0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000, -+ 0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000, -+ 0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000, -+ 0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000, -+ 0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000, -+ 0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000, -+ 0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000, -+ 0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000, -+ 0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000, -+ 0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000, -+ 0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000, -+ 0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000, -+ 0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000, -+ 0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000, -+ 0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000, -+ 0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000, -+ 0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000, -+ 0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000, -+ 0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000, -+ 0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000, -+ 0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000, -+ 0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000, -+ 0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000, -+ 0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000, -+ 0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000, -+ 0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000, -+ 0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000, -+ 0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000, -+ 0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000, -+ 0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000, -+ 0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000, -+ 0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000, -+ 0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000, -+ 0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000, -+ 0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000, -+ 0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000, -+ 0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000, -+ 0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000, -+ 0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000, -+ 0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000, -+ 0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000, -+ 0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000, -+ 0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000, -+ 0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000, -+ 0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000, -+ 0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000, -+ 0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000, -+ 0x6571193600000000}, -+ {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000, -+ 0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000, -+ 0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000, -+ 0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000, -+ 0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000, -+ 0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000, -+ 0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000, -+ 0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000, -+ 0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000, -+ 0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000, -+ 0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000, -+ 0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000, -+ 0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000, -+ 0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000, -+ 0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000, -+ 0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000, -+ 0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000, -+ 0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000, -+ 0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000, -+ 0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000, -+ 0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000, -+ 0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000, -+ 0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000, -+ 0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000, -+ 0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000, -+ 0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000, -+ 0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000, -+ 0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000, -+ 0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000, -+ 0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000, -+ 0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000, -+ 0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000, -+ 0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000, -+ 0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000, -+ 0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000, -+ 0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000, -+ 0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000, -+ 0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000, -+ 0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000, -+ 0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000, -+ 0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000, -+ 0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000, -+ 0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000, -+ 0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000, -+ 0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000, -+ 0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000, -+ 0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000, -+ 0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000, -+ 0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000, -+ 0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000, -+ 0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000, -+ 0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000, -+ 0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000, -+ 0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000, -+ 0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000, -+ 0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000, -+ 0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000, -+ 0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000, -+ 0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000, -+ 0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000, -+ 0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000, -+ 0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000, -+ 0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000, -+ 0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000, -+ 0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000, -+ 0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000, -+ 0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000, -+ 0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000, -+ 0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000, -+ 0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000, -+ 0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000, -+ 0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000, -+ 0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000, -+ 0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000, -+ 0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000, -+ 0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000, -+ 0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000, -+ 0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000, -+ 0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000, -+ 0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000, -+ 0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000, -+ 0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000, -+ 0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000, -+ 0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000, -+ 0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000, -+ 0xa68cee3d00000000}, -+ {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000, -+ 0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000, -+ 0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000, -+ 0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000, -+ 0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000, -+ 0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000, -+ 0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000, -+ 0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000, -+ 0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000, -+ 0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000, -+ 0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000, -+ 0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000, -+ 0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000, -+ 0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000, -+ 0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000, -+ 0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000, -+ 0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000, -+ 0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000, -+ 0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000, -+ 0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000, -+ 0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000, -+ 0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000, -+ 0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000, -+ 0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000, -+ 0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000, -+ 0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000, -+ 0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000, -+ 0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000, -+ 0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000, -+ 0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000, -+ 0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000, -+ 0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000, -+ 0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000, -+ 0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000, -+ 0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000, -+ 0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000, -+ 0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000, -+ 0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000, -+ 0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000, -+ 0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000, -+ 0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000, -+ 0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000, -+ 0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000, -+ 0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000, -+ 0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000, -+ 0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000, -+ 0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000, -+ 0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000, -+ 0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000, -+ 0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000, -+ 0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000, -+ 0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000, -+ 0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000, -+ 0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000, -+ 0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000, -+ 0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000, -+ 0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000, -+ 0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000, -+ 0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000, -+ 0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000, -+ 0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000, -+ 0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000, -+ 0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000, -+ 0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000, -+ 0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000, -+ 0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000, -+ 0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000, -+ 0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000, -+ 0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000, -+ 0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000, -+ 0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000, -+ 0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000, -+ 0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000, -+ 0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000, -+ 0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000, -+ 0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000, -+ 0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000, -+ 0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000, -+ 0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000, -+ 0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000, -+ 0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000, -+ 0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000, -+ 0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000, -+ 0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000, -+ 0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000, -+ 0x51e8883f00000000}, -+ {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000, -+ 0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000, -+ 0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000, -+ 0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000, -+ 0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000, -+ 0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000, -+ 0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000, -+ 0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000, -+ 0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000, -+ 0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000, -+ 0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000, -+ 0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000, -+ 0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000, -+ 0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000, -+ 0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000, -+ 0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000, -+ 0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000, -+ 0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000, -+ 0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000, -+ 0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000, -+ 0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000, -+ 0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000, -+ 0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000, -+ 0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000, -+ 0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000, -+ 0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000, -+ 0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000, -+ 0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000, -+ 0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000, -+ 0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000, -+ 0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000, -+ 0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000, -+ 0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000, -+ 0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000, -+ 0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000, -+ 0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000, -+ 0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000, -+ 0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000, -+ 0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000, -+ 0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000, -+ 0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000, -+ 0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000, -+ 0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000, -+ 0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000, -+ 0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000, -+ 0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000, -+ 0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000, -+ 0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000, -+ 0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000, -+ 0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000, -+ 0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000, -+ 0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000, -+ 0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000, -+ 0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000, -+ 0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000, -+ 0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000, -+ 0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000, -+ 0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000, -+ 0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000, -+ 0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000, -+ 0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000, -+ 0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000, -+ 0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000, -+ 0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000, -+ 0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000, -+ 0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000, -+ 0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000, -+ 0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000, -+ 0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000, -+ 0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000, -+ 0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000, -+ 0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000, -+ 0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000, -+ 0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000, -+ 0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000, -+ 0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000, -+ 0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000, -+ 0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000, -+ 0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000, -+ 0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000, -+ 0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000, -+ 0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000, -+ 0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000, -+ 0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000, -+ 0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000, -+ 0x8ae9531c00000000}, -+ {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000, -+ 0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000, -+ 0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000, -+ 0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000, -+ 0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000, -+ 0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000, -+ 0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000, -+ 0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000, -+ 0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000, -+ 0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000, -+ 0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000, -+ 0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000, -+ 0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000, -+ 0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000, -+ 0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000, -+ 0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000, -+ 0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000, -+ 0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000, -+ 0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000, -+ 0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000, -+ 0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000, -+ 0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000, -+ 0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000, -+ 0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000, -+ 0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000, -+ 0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000, -+ 0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000, -+ 0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000, -+ 0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000, -+ 0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000, -+ 0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000, -+ 0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000, -+ 0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000, -+ 0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000, -+ 0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000, -+ 0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000, -+ 0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000, -+ 0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000, -+ 0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000, -+ 0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000, -+ 0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000, -+ 0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000, -+ 0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000, -+ 0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000, -+ 0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000, -+ 0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000, -+ 0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000, -+ 0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000, -+ 0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000, -+ 0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000, -+ 0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000, -+ 0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000, -+ 0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000, -+ 0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000, -+ 0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000, -+ 0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000, -+ 0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000, -+ 0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000, -+ 0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000, -+ 0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000, -+ 0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000, -+ 0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000, -+ 0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000, -+ 0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000, -+ 0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000, -+ 0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000, -+ 0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000, -+ 0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000, -+ 0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000, -+ 0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000, -+ 0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000, -+ 0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000, -+ 0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000, -+ 0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000, -+ 0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000, -+ 0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000, -+ 0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000, -+ 0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000, -+ 0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000, -+ 0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000, -+ 0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000, -+ 0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000, -+ 0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000, -+ 0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000, -+ 0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000, -+ 0xd739710d00000000}}; -+ -+#else /* W == 4 */ -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa, -+ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b, -+ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232, -+ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8, -+ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e, -+ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa, -+ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b, -+ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, -+ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719, -+ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3, -+ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa, -+ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, -+ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed, -+ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89, -+ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25, -+ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041, -+ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c, -+ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed, -+ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4, -+ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758, -+ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e, -+ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a, -+ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed, -+ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, -+ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df, -+ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544, -+ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d, -+ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c, -+ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1, -+ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95, -+ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839, -+ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, -+ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976, -+ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7, -+ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, -+ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, -+ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12, -+ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376, -+ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a, -+ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e, -+ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278, -+ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682, -+ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b, -+ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a, -+ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561, -+ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05, -+ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9, -+ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, -+ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0, -+ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61, -+ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678, -+ 0x264b06e6}, -+ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413, -+ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3, -+ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d, -+ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653, -+ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9, -+ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e, -+ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5, -+ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, -+ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8, -+ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6, -+ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, -+ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, -+ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579, -+ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade, -+ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37, -+ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590, -+ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4, -+ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64, -+ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea, -+ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678, -+ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282, -+ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25, -+ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, -+ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, -+ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f, -+ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146, -+ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8, -+ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08, -+ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c, -+ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b, -+ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972, -+ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5, -+ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d, -+ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd, -+ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833, -+ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, -+ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7, -+ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60, -+ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2, -+ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105, -+ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff, -+ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1, -+ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, -+ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, -+ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617, -+ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0, -+ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959, -+ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, -+ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca, -+ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a, -+ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184, -+ 0x92364a30}, -+ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216, -+ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8, -+ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170, -+ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035, -+ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6, -+ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145, -+ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d, -+ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e, -+ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d, -+ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408, -+ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0, -+ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, -+ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c, -+ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf, -+ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a, -+ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9, -+ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1, -+ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f, -+ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987, -+ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4, -+ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37, -+ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84, -+ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca, -+ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, -+ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba, -+ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d, -+ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5, -+ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b, -+ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643, -+ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0, -+ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525, -+ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496, -+ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8, -+ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026, -+ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e, -+ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, -+ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118, -+ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab, -+ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf, -+ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c, -+ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf, -+ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a, -+ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32, -+ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec, -+ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82, -+ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31, -+ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, -+ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, -+ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f, -+ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1, -+ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869, -+ 0xe4c4abcc}, -+ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0, -+ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271, -+ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61, -+ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52, -+ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43, -+ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333, -+ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64, -+ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314, -+ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205, -+ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136, -+ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26, -+ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, -+ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849, -+ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739, -+ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8, -+ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98, -+ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b, -+ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba, -+ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa, -+ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d, -+ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c, -+ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc, -+ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, -+ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, -+ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce, -+ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922, -+ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532, -+ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183, -+ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710, -+ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860, -+ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1, -+ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1, -+ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956, -+ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7, -+ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7, -+ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, -+ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5, -+ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5, -+ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb, -+ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb, -+ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da, -+ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9, -+ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9, -+ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48, -+ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df, -+ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af, -+ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, -+ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, -+ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d, -+ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c, -+ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c, -+ 0xca64c78c}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5, -+ 0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d, -+ 0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf, -+ 0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027, -+ 0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050, -+ 0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098, -+ 0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb, -+ 0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173, -+ 0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104, -+ 0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c, -+ 0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e, -+ 0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6, -+ 0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358, -+ 0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390, -+ 0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312, -+ 0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da, -+ 0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd, -+ 0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335, -+ 0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387, -+ 0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de, -+ 0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9, -+ 0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261, -+ 0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283, -+ 0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b, -+ 0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c, -+ 0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c, -+ 0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e, -+ 0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6, -+ 0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1, -+ 0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619, -+ 0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b, -+ 0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653, -+ 0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785, -+ 0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d, -+ 0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf, -+ 0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757, -+ 0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720, -+ 0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8, -+ 0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593, -+ 0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b, -+ 0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c, -+ 0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4, -+ 0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506, -+ 0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe, -+ 0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428, -+ 0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0, -+ 0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462, -+ 0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa, -+ 0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd, -+ 0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445, -+ 0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7, -+ 0x8cc764ca}, -+ {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b, -+ 0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27, -+ 0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a, -+ 0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285, -+ 0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef, -+ 0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf, -+ 0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a, -+ 0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a, -+ 0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70, -+ 0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf, -+ 0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2, -+ 0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e, -+ 0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f, -+ 0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f, -+ 0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae, -+ 0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe, -+ 0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97, -+ 0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b, -+ 0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436, -+ 0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e, -+ 0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4, -+ 0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4, -+ 0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46, -+ 0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716, -+ 0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c, -+ 0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5, -+ 0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8, -+ 0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774, -+ 0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d, -+ 0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d, -+ 0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc, -+ 0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec, -+ 0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82, -+ 0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e, -+ 0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623, -+ 0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c, -+ 0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6, -+ 0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6, -+ 0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c, -+ 0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c, -+ 0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66, -+ 0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9, -+ 0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4, -+ 0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978, -+ 0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416, -+ 0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946, -+ 0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7, -+ 0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7, -+ 0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e, -+ 0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32, -+ 0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f, -+ 0xccabc4e4}, -+ {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4, -+ 0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895, -+ 0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50, -+ 0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656, -+ 0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154, -+ 0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906, -+ 0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258, -+ 0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a, -+ 0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08, -+ 0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e, -+ 0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb, -+ 0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa, -+ 0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44, -+ 0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316, -+ 0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0, -+ 0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2, -+ 0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7, -+ 0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6, -+ 0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73, -+ 0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba, -+ 0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8, -+ 0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea, -+ 0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b, -+ 0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29, -+ 0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b, -+ 0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e, -+ 0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb, -+ 0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a, -+ 0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef, -+ 0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd, -+ 0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b, -+ 0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019, -+ 0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3, -+ 0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2, -+ 0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417, -+ 0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11, -+ 0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13, -+ 0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241, -+ 0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b, -+ 0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09, -+ 0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b, -+ 0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d, -+ 0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8, -+ 0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9, -+ 0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003, -+ 0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851, -+ 0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7, -+ 0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5, -+ 0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190, -+ 0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1, -+ 0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134, -+ 0x304a3692}, -+ {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84, -+ 0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f, -+ 0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15, -+ 0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2, -+ 0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf, -+ 0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7, -+ 0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb, -+ 0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3, -+ 0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae, -+ 0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749, -+ 0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243, -+ 0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8, -+ 0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29, -+ 0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61, -+ 0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8, -+ 0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0, -+ 0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1, -+ 0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a, -+ 0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40, -+ 0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e, -+ 0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03, -+ 0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b, -+ 0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee, -+ 0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6, -+ 0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb, -+ 0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f, -+ 0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495, -+ 0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e, -+ 0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f, -+ 0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067, -+ 0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be, -+ 0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6, -+ 0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e, -+ 0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5, -+ 0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf, -+ 0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958, -+ 0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305, -+ 0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d, -+ 0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338, -+ 0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370, -+ 0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d, -+ 0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca, -+ 0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0, -+ 0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b, -+ 0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083, -+ 0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb, -+ 0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012, -+ 0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a, -+ 0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b, -+ 0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0, -+ 0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea, -+ 0xe6064b26}}; -+ - #endif -- } --}; -+ -+#endif -+ -+#if N == 3 -+ -+#if W == 8 -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f, -+ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999, -+ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee, -+ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615, -+ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383, -+ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb, -+ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275, -+ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d, -+ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b, -+ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460, -+ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317, -+ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1, -+ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5, -+ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd, -+ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04, -+ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c, -+ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7, -+ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11, -+ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66, -+ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7, -+ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871, -+ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309, -+ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd, -+ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85, -+ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913, -+ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d, -+ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a, -+ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc, -+ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57, -+ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f, -+ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6, -+ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e, -+ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f, -+ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289, -+ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe, -+ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05, -+ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893, -+ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb, -+ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0, -+ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8, -+ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e, -+ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5, -+ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2, -+ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574, -+ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5, -+ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add, -+ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114, -+ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c, -+ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7, -+ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701, -+ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076, -+ 0x09cd8551}, -+ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193, -+ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2, -+ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c, -+ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71, -+ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a, -+ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d, -+ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71, -+ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436, -+ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d, -+ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000, -+ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae, -+ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf, -+ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930, -+ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277, -+ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff, -+ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8, -+ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef, -+ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e, -+ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20, -+ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95, -+ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e, -+ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9, -+ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d, -+ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a, -+ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151, -+ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4, -+ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a, -+ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b, -+ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c, -+ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b, -+ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3, -+ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4, -+ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b, -+ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a, -+ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4, -+ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189, -+ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92, -+ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5, -+ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9, -+ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe, -+ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5, -+ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8, -+ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66, -+ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707, -+ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8, -+ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f, -+ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707, -+ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40, -+ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017, -+ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876, -+ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8, -+ 0x7bc97a0c}, -+ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300, -+ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0, -+ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80, -+ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701, -+ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41, -+ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81, -+ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43, -+ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83, -+ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3, -+ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42, -+ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202, -+ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2, -+ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7, -+ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407, -+ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47, -+ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87, -+ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86, -+ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46, -+ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506, -+ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44, -+ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704, -+ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4, -+ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5, -+ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505, -+ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45, -+ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f, -+ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f, -+ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f, -+ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e, -+ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e, -+ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e, -+ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce, -+ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c, -+ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc, -+ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c, -+ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d, -+ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d, -+ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d, -+ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88, -+ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48, -+ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708, -+ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89, -+ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9, -+ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309, -+ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb, -+ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b, -+ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b, -+ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b, -+ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a, -+ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a, -+ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a, -+ 0x7851a2ca}, -+ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb, -+ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8, -+ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0, -+ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f, -+ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a, -+ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf, -+ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5, -+ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380, -+ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815, -+ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa, -+ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2, -+ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1, -+ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1, -+ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4, -+ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa, -+ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df, -+ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6, -+ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5, -+ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad, -+ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca, -+ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f, -+ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a, -+ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8, -+ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d, -+ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708, -+ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d, -+ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865, -+ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636, -+ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f, -+ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a, -+ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744, -+ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061, -+ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0, -+ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293, -+ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb, -+ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874, -+ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1, -+ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4, -+ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f, -+ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a, -+ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f, -+ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120, -+ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778, -+ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b, -+ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a, -+ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af, -+ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81, -+ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4, -+ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd, -+ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e, -+ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6, -+ 0x566b6848}, -+ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59, -+ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4, -+ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67, -+ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef, -+ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97, -+ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88, -+ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687, -+ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698, -+ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0, -+ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068, -+ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb, -+ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056, -+ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016, -+ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009, -+ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028, -+ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037, -+ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a, -+ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7, -+ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054, -+ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7, -+ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af, -+ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0, -+ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4, -+ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab, -+ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3, -+ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a, -+ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9, -+ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54, -+ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09, -+ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16, -+ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37, -+ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28, -+ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e, -+ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3, -+ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40, -+ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8, -+ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0, -+ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf, -+ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6, -+ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9, -+ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1, -+ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059, -+ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca, -+ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067, -+ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031, -+ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e, -+ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f, -+ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010, -+ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d, -+ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0, -+ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073, -+ 0xd8ac6b35}, -+ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2, -+ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd, -+ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696, -+ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3, -+ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f, -+ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35, -+ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5, -+ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f, -+ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673, -+ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46, -+ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d, -+ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632, -+ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28, -+ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192, -+ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c, -+ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6, -+ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0, -+ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff, -+ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4, -+ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95, -+ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9, -+ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03, -+ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7, -+ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d, -+ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151, -+ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808, -+ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343, -+ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c, -+ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a, -+ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0, -+ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e, -+ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594, -+ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6, -+ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399, -+ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2, -+ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7, -+ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb, -+ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571, -+ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289, -+ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33, -+ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f, -+ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a, -+ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461, -+ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e, -+ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c, -+ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6, -+ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918, -+ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2, -+ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484, -+ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb, -+ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0, -+ 0xa140efa8}, -+ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706, -+ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed, -+ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289, -+ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a, -+ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214, -+ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3, -+ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3, -+ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254, -+ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a, -+ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9, -+ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad, -+ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746, -+ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060, -+ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187, -+ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef, -+ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408, -+ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e, -+ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495, -+ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1, -+ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532, -+ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c, -+ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb, -+ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb, -+ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c, -+ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42, -+ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060, -+ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04, -+ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef, -+ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99, -+ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e, -+ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16, -+ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1, -+ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7, -+ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c, -+ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38, -+ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb, -+ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5, -+ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42, -+ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62, -+ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85, -+ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb, -+ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18, -+ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c, -+ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997, -+ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1, -+ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36, -+ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e, -+ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9, -+ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf, -+ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24, -+ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040, -+ 0x917cd6a1}, -+ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf, -+ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd, -+ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896, -+ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9, -+ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3, -+ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f, -+ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d, -+ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1, -+ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab, -+ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4, -+ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f, -+ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d, -+ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4, -+ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978, -+ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad, -+ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621, -+ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46, -+ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854, -+ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f, -+ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a, -+ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890, -+ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c, -+ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4, -+ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238, -+ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622, -+ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab, -+ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0, -+ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2, -+ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295, -+ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19, -+ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc, -+ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140, -+ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd, -+ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf, -+ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184, -+ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb, -+ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1, -+ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d, -+ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb, -+ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257, -+ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d, -+ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22, -+ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069, -+ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b, -+ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6, -+ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a, -+ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf, -+ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33, -+ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254, -+ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146, -+ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d, -+ 0x18ba364e}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000, -+ 0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000, -+ 0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000, -+ 0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000, -+ 0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000, -+ 0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000, -+ 0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000, -+ 0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000, -+ 0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000, -+ 0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000, -+ 0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000, -+ 0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000, -+ 0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000, -+ 0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000, -+ 0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000, -+ 0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000, -+ 0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000, -+ 0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000, -+ 0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000, -+ 0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000, -+ 0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000, -+ 0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000, -+ 0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000, -+ 0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000, -+ 0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000, -+ 0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000, -+ 0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000, -+ 0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000, -+ 0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000, -+ 0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000, -+ 0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000, -+ 0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000, -+ 0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000, -+ 0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000, -+ 0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000, -+ 0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000, -+ 0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000, -+ 0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000, -+ 0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000, -+ 0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000, -+ 0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000, -+ 0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000, -+ 0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000, -+ 0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000, -+ 0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000, -+ 0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000, -+ 0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000, -+ 0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000, -+ 0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000, -+ 0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000, -+ 0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000, -+ 0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000, -+ 0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000, -+ 0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000, -+ 0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000, -+ 0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000, -+ 0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000, -+ 0x08eda52100000000, 0x4391370100000000, 0x005a918600000000, -+ 0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000, -+ 0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000, -+ 0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000, -+ 0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000, -+ 0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000, -+ 0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000, -+ 0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000, -+ 0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000, -+ 0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000, -+ 0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000, -+ 0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000, -+ 0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000, -+ 0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000, -+ 0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000, -+ 0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000, -+ 0x7b23114500000000, 0x305f836500000000, 0x739425e200000000, -+ 0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000, -+ 0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000, -+ 0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000, -+ 0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000, -+ 0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000, -+ 0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000, -+ 0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000, -+ 0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000, -+ 0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000, -+ 0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000, -+ 0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000, -+ 0x4e36ba1800000000}, -+ {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000, -+ 0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000, -+ 0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000, -+ 0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000, -+ 0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000, -+ 0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000, -+ 0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000, -+ 0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000, -+ 0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000, -+ 0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000, -+ 0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000, -+ 0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000, -+ 0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000, -+ 0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000, -+ 0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000, -+ 0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000, -+ 0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000, -+ 0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000, -+ 0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000, -+ 0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000, -+ 0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000, -+ 0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000, -+ 0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000, -+ 0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000, -+ 0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000, -+ 0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000, -+ 0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000, -+ 0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000, -+ 0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000, -+ 0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000, -+ 0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000, -+ 0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000, -+ 0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000, -+ 0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000, -+ 0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000, -+ 0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000, -+ 0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000, -+ 0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000, -+ 0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000, -+ 0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000, -+ 0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000, -+ 0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000, -+ 0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000, -+ 0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000, -+ 0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000, -+ 0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000, -+ 0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000, -+ 0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000, -+ 0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000, -+ 0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000, -+ 0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000, -+ 0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000, -+ 0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000, -+ 0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000, -+ 0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000, -+ 0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000, -+ 0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000, -+ 0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000, -+ 0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000, -+ 0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000, -+ 0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000, -+ 0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000, -+ 0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000, -+ 0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000, -+ 0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000, -+ 0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000, -+ 0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000, -+ 0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000, -+ 0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000, -+ 0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000, -+ 0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000, -+ 0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000, -+ 0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000, -+ 0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000, -+ 0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000, -+ 0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000, -+ 0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000, -+ 0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000, -+ 0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000, -+ 0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000, -+ 0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000, -+ 0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000, -+ 0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000, -+ 0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000, -+ 0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000, -+ 0xa1d67c9100000000}, -+ {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000, -+ 0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000, -+ 0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000, -+ 0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000, -+ 0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000, -+ 0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000, -+ 0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000, -+ 0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000, -+ 0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000, -+ 0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000, -+ 0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000, -+ 0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000, -+ 0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000, -+ 0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000, -+ 0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000, -+ 0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000, -+ 0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000, -+ 0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000, -+ 0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000, -+ 0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000, -+ 0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000, -+ 0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000, -+ 0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000, -+ 0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000, -+ 0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000, -+ 0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000, -+ 0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000, -+ 0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000, -+ 0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000, -+ 0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000, -+ 0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000, -+ 0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000, -+ 0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000, -+ 0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000, -+ 0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000, -+ 0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000, -+ 0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000, -+ 0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000, -+ 0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000, -+ 0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000, -+ 0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000, -+ 0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000, -+ 0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000, -+ 0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000, -+ 0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000, -+ 0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000, -+ 0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000, -+ 0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000, -+ 0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000, -+ 0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000, -+ 0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000, -+ 0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000, -+ 0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000, -+ 0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000, -+ 0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000, -+ 0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000, -+ 0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000, -+ 0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000, -+ 0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000, -+ 0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000, -+ 0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000, -+ 0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000, -+ 0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000, -+ 0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000, -+ 0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000, -+ 0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000, -+ 0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000, -+ 0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000, -+ 0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000, -+ 0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000, -+ 0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000, -+ 0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000, -+ 0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000, -+ 0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000, -+ 0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000, -+ 0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000, -+ 0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000, -+ 0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000, -+ 0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000, -+ 0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000, -+ 0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000, -+ 0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000, -+ 0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000, -+ 0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000, -+ 0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000, -+ 0xa8ef40a100000000}, -+ {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000, -+ 0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000, -+ 0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000, -+ 0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000, -+ 0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000, -+ 0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000, -+ 0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000, -+ 0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000, -+ 0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000, -+ 0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000, -+ 0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000, -+ 0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000, -+ 0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000, -+ 0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000, -+ 0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000, -+ 0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000, -+ 0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000, -+ 0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000, -+ 0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000, -+ 0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000, -+ 0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000, -+ 0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000, -+ 0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000, -+ 0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000, -+ 0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000, -+ 0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000, -+ 0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000, -+ 0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000, -+ 0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000, -+ 0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000, -+ 0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000, -+ 0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000, -+ 0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000, -+ 0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000, -+ 0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000, -+ 0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000, -+ 0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000, -+ 0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000, -+ 0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000, -+ 0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000, -+ 0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000, -+ 0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000, -+ 0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000, -+ 0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000, -+ 0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000, -+ 0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000, -+ 0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000, -+ 0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000, -+ 0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000, -+ 0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000, -+ 0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000, -+ 0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000, -+ 0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000, -+ 0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000, -+ 0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000, -+ 0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000, -+ 0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000, -+ 0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000, -+ 0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000, -+ 0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000, -+ 0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000, -+ 0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000, -+ 0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000, -+ 0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000, -+ 0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000, -+ 0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000, -+ 0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000, -+ 0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000, -+ 0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000, -+ 0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000, -+ 0x933d017400000000, 0xd506661100000000, 0x46a022f000000000, -+ 0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000, -+ 0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000, -+ 0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000, -+ 0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000, -+ 0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000, -+ 0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000, -+ 0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000, -+ 0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000, -+ 0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000, -+ 0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000, -+ 0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000, -+ 0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000, -+ 0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000, -+ 0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000, -+ 0x356bacd800000000}, -+ {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000, -+ 0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000, -+ 0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000, -+ 0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000, -+ 0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000, -+ 0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000, -+ 0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000, -+ 0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000, -+ 0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000, -+ 0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000, -+ 0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000, -+ 0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000, -+ 0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000, -+ 0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000, -+ 0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000, -+ 0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000, -+ 0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000, -+ 0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000, -+ 0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000, -+ 0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000, -+ 0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000, -+ 0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000, -+ 0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000, -+ 0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000, -+ 0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000, -+ 0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000, -+ 0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000, -+ 0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000, -+ 0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000, -+ 0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000, -+ 0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000, -+ 0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000, -+ 0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000, -+ 0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000, -+ 0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000, -+ 0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000, -+ 0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000, -+ 0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000, -+ 0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000, -+ 0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000, -+ 0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000, -+ 0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000, -+ 0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000, -+ 0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000, -+ 0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000, -+ 0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000, -+ 0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000, -+ 0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000, -+ 0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000, -+ 0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000, -+ 0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000, -+ 0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000, -+ 0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000, -+ 0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000, -+ 0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000, -+ 0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000, -+ 0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000, -+ 0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000, -+ 0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000, -+ 0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000, -+ 0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000, -+ 0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000, -+ 0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000, -+ 0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000, -+ 0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000, -+ 0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000, -+ 0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000, -+ 0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000, -+ 0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000, -+ 0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000, -+ 0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000, -+ 0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000, -+ 0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000, -+ 0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000, -+ 0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000, -+ 0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000, -+ 0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000, -+ 0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000, -+ 0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000, -+ 0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000, -+ 0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000, -+ 0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000, -+ 0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000, -+ 0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000, -+ 0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000, -+ 0x48686b5600000000}, -+ {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000, -+ 0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000, -+ 0x805af17200000000, 0x403ed96500000000, 0x002643b900000000, -+ 0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000, -+ 0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000, -+ 0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000, -+ 0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000, -+ 0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000, -+ 0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000, -+ 0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000, -+ 0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000, -+ 0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000, -+ 0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000, -+ 0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000, -+ 0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000, -+ 0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000, -+ 0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000, -+ 0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000, -+ 0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000, -+ 0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000, -+ 0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000, -+ 0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000, -+ 0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000, -+ 0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000, -+ 0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000, -+ 0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000, -+ 0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000, -+ 0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000, -+ 0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000, -+ 0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000, -+ 0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000, -+ 0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000, -+ 0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000, -+ 0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000, -+ 0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000, -+ 0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000, -+ 0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000, -+ 0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000, -+ 0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000, -+ 0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000, -+ 0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000, -+ 0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000, -+ 0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000, -+ 0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000, -+ 0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000, -+ 0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000, -+ 0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000, -+ 0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000, -+ 0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000, -+ 0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000, -+ 0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000, -+ 0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000, -+ 0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000, -+ 0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000, -+ 0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000, -+ 0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000, -+ 0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000, -+ 0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000, -+ 0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000, -+ 0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000, -+ 0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000, -+ 0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000, -+ 0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000, -+ 0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000, -+ 0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000, -+ 0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000, -+ 0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000, -+ 0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000, -+ 0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000, -+ 0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000, -+ 0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000, -+ 0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000, -+ 0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000, -+ 0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000, -+ 0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000, -+ 0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000, -+ 0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000, -+ 0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000, -+ 0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000, -+ 0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000, -+ 0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000, -+ 0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000, -+ 0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000, -+ 0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000, -+ 0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000, -+ 0xcaa2517800000000}, -+ {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000, -+ 0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000, -+ 0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000, -+ 0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000, -+ 0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000, -+ 0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000, -+ 0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000, -+ 0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000, -+ 0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000, -+ 0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000, -+ 0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000, -+ 0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000, -+ 0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000, -+ 0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000, -+ 0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000, -+ 0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000, -+ 0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000, -+ 0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000, -+ 0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000, -+ 0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000, -+ 0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000, -+ 0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000, -+ 0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000, -+ 0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000, -+ 0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000, -+ 0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000, -+ 0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000, -+ 0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000, -+ 0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000, -+ 0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000, -+ 0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000, -+ 0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000, -+ 0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000, -+ 0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000, -+ 0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000, -+ 0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000, -+ 0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000, -+ 0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000, -+ 0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000, -+ 0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000, -+ 0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000, -+ 0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000, -+ 0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000, -+ 0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000, -+ 0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000, -+ 0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000, -+ 0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000, -+ 0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000, -+ 0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000, -+ 0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000, -+ 0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000, -+ 0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000, -+ 0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000, -+ 0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000, -+ 0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000, -+ 0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000, -+ 0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000, -+ 0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000, -+ 0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000, -+ 0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000, -+ 0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000, -+ 0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000, -+ 0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000, -+ 0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000, -+ 0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000, -+ 0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000, -+ 0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000, -+ 0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000, -+ 0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000, -+ 0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000, -+ 0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000, -+ 0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000, -+ 0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000, -+ 0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000, -+ 0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000, -+ 0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000, -+ 0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000, -+ 0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000, -+ 0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000, -+ 0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000, -+ 0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000, -+ 0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000, -+ 0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000, -+ 0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000, -+ 0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000, -+ 0x0c7ac97b00000000}, -+ {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000, -+ 0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000, -+ 0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000, -+ 0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000, -+ 0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000, -+ 0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000, -+ 0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000, -+ 0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000, -+ 0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000, -+ 0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000, -+ 0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000, -+ 0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000, -+ 0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000, -+ 0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000, -+ 0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000, -+ 0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000, -+ 0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000, -+ 0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000, -+ 0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000, -+ 0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000, -+ 0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000, -+ 0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000, -+ 0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000, -+ 0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000, -+ 0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000, -+ 0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000, -+ 0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000, -+ 0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000, -+ 0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000, -+ 0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000, -+ 0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000, -+ 0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000, -+ 0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000, -+ 0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000, -+ 0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000, -+ 0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000, -+ 0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000, -+ 0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000, -+ 0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000, -+ 0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000, -+ 0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000, -+ 0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000, -+ 0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000, -+ 0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000, -+ 0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000, -+ 0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000, -+ 0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000, -+ 0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000, -+ 0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000, -+ 0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000, -+ 0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000, -+ 0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000, -+ 0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000, -+ 0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000, -+ 0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000, -+ 0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000, -+ 0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000, -+ 0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000, -+ 0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000, -+ 0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000, -+ 0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000, -+ 0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000, -+ 0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000, -+ 0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000, -+ 0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000, -+ 0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000, -+ 0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000, -+ 0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000, -+ 0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000, -+ 0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000, -+ 0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000, -+ 0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000, -+ 0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000, -+ 0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000, -+ 0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000, -+ 0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000, -+ 0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000, -+ 0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000, -+ 0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000, -+ 0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000, -+ 0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000, -+ 0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000, -+ 0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000, -+ 0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000, -+ 0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000, -+ 0x5185cd0900000000}}; -+ -+#else /* W == 4 */ -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f, -+ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91, -+ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e, -+ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c, -+ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02, -+ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12, -+ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567, -+ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277, -+ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679, -+ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b, -+ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4, -+ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a, -+ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0, -+ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0, -+ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91, -+ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881, -+ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173, -+ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d, -+ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912, -+ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8, -+ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6, -+ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6, -+ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b, -+ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b, -+ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75, -+ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f, -+ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00, -+ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee, -+ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c, -+ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c, -+ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d, -+ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d, -+ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67, -+ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89, -+ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706, -+ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14, -+ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a, -+ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a, -+ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f, -+ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f, -+ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591, -+ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983, -+ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c, -+ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2, -+ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8, -+ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8, -+ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89, -+ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99, -+ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b, -+ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485, -+ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a, -+ 0x36197165}, -+ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382, -+ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85, -+ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06, -+ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca, -+ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e, -+ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc, -+ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616, -+ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54, -+ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10, -+ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc, -+ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f, -+ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58, -+ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef, -+ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad, -+ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b, -+ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29, -+ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6, -+ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1, -+ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622, -+ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039, -+ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d, -+ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f, -+ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32, -+ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770, -+ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034, -+ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f, -+ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc, -+ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db, -+ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154, -+ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16, -+ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0, -+ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592, -+ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca, -+ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd, -+ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e, -+ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882, -+ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6, -+ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384, -+ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1, -+ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3, -+ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7, -+ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b, -+ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8, -+ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff, -+ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7, -+ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5, -+ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23, -+ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761, -+ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee, -+ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9, -+ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a, -+ 0x1a3b93aa}, -+ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a, -+ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca, -+ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3, -+ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb, -+ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c, -+ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58, -+ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed, -+ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9, -+ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e, -+ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906, -+ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f, -+ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf, -+ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0, -+ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4, -+ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769, -+ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d, -+ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632, -+ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82, -+ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb, -+ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73, -+ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484, -+ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0, -+ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5, -+ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1, -+ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516, -+ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f, -+ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946, -+ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6, -+ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9, -+ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad, -+ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820, -+ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364, -+ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab, -+ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b, -+ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62, -+ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a, -+ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd, -+ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089, -+ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c, -+ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8, -+ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f, -+ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477, -+ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e, -+ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be, -+ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71, -+ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635, -+ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8, -+ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc, -+ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3, -+ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753, -+ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a, -+ 0xe147d714}, -+ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c, -+ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b, -+ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92, -+ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4, -+ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069, -+ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526, -+ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25, -+ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a, -+ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7, -+ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491, -+ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958, -+ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f, -+ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307, -+ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648, -+ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999, -+ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6, -+ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a, -+ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d, -+ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4, -+ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61, -+ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc, -+ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3, -+ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53, -+ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c, -+ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1, -+ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c, -+ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5, -+ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92, -+ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e, -+ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771, -+ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0, -+ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def, -+ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0, -+ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7, -+ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e, -+ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58, -+ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285, -+ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca, -+ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce, -+ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81, -+ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c, -+ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a, -+ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3, -+ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4, -+ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb, -+ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4, -+ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75, -+ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a, -+ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296, -+ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1, -+ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808, -+ 0x494f0c4b}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d, -+ 0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac, -+ 0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8, -+ 0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95, -+ 0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817, -+ 0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d, -+ 0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac, -+ 0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6, -+ 0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564, -+ 0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39, -+ 0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d, -+ 0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac, -+ 0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de, -+ 0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594, -+ 0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b, -+ 0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01, -+ 0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f, -+ 0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de, -+ 0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba, -+ 0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65, -+ 0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7, -+ 0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad, -+ 0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de, -+ 0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294, -+ 0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716, -+ 0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71, -+ 0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15, -+ 0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4, -+ 0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca, -+ 0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280, -+ 0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f, -+ 0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15, -+ 0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9, -+ 0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748, -+ 0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c, -+ 0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971, -+ 0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3, -+ 0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9, -+ 0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196, -+ 0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc, -+ 0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e, -+ 0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03, -+ 0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67, -+ 0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296, -+ 0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a, -+ 0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170, -+ 0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af, -+ 0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5, -+ 0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb, -+ 0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a, -+ 0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e, -+ 0x4b0c4f49}, -+ {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09, -+ 0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc, -+ 0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e, -+ 0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc, -+ 0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934, -+ 0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2, -+ 0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b, -+ 0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad, -+ 0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155, -+ 0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187, -+ 0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65, -+ 0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390, -+ 0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e, -+ 0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378, -+ 0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889, -+ 0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f, -+ 0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0, -+ 0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145, -+ 0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7, -+ 0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a, -+ 0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2, -+ 0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924, -+ 0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2, -+ 0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514, -+ 0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec, -+ 0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709, -+ 0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb, -+ 0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e, -+ 0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1, -+ 0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227, -+ 0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6, -+ 0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030, -+ 0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0, -+ 0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55, -+ 0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7, -+ 0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165, -+ 0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d, -+ 0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b, -+ 0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c, -+ 0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a, -+ 0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362, -+ 0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0, -+ 0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52, -+ 0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7, -+ 0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237, -+ 0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1, -+ 0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020, -+ 0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6, -+ 0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719, -+ 0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec, -+ 0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e, -+ 0x14d747e1}, -+ {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0, -+ 0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b, -+ 0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652, -+ 0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437, -+ 0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514, -+ 0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265, -+ 0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de, -+ 0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af, -+ 0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c, -+ 0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9, -+ 0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0, -+ 0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b, -+ 0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6, -+ 0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7, -+ 0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734, -+ 0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045, -+ 0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8, -+ 0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303, -+ 0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a, -+ 0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9, -+ 0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea, -+ 0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b, -+ 0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6, -+ 0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7, -+ 0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4, -+ 0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6, -+ 0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f, -+ 0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054, -+ 0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9, -+ 0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8, -+ 0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b, -+ 0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a, -+ 0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441, -+ 0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a, -+ 0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3, -+ 0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6, -+ 0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5, -+ 0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94, -+ 0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9, -+ 0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288, -+ 0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab, -+ 0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce, -+ 0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7, -+ 0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c, -+ 0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527, -+ 0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256, -+ 0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5, -+ 0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4, -+ 0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39, -+ 0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2, -+ 0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db, -+ 0xaa933b1a}, -+ {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603, -+ 0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d, -+ 0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9, -+ 0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b, -+ 0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a, -+ 0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792, -+ 0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4, -+ 0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c, -+ 0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d, -+ 0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f, -+ 0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb, -+ 0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65, -+ 0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330, -+ 0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8, -+ 0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da, -+ 0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742, -+ 0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f, -+ 0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1, -+ 0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5, -+ 0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f, -+ 0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e, -+ 0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6, -+ 0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8, -+ 0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250, -+ 0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021, -+ 0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb, -+ 0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f, -+ 0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511, -+ 0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c, -+ 0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4, -+ 0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886, -+ 0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e, -+ 0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b, -+ 0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5, -+ 0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791, -+ 0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003, -+ 0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272, -+ 0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea, -+ 0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc, -+ 0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24, -+ 0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55, -+ 0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7, -+ 0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3, -+ 0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d, -+ 0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548, -+ 0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0, -+ 0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2, -+ 0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a, -+ 0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47, -+ 0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9, -+ 0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad, -+ 0x65711936}}; -+ -+#endif -+ -+#endif -+ -+#if N == 4 -+ -+#if W == 8 -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a, -+ 0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe, -+ 0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b, -+ 0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656, -+ 0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd, -+ 0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d, -+ 0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7, -+ 0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47, -+ 0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac, -+ 0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691, -+ 0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404, -+ 0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0, -+ 0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4, -+ 0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424, -+ 0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5, -+ 0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65, -+ 0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67, -+ 0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3, -+ 0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626, -+ 0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9, -+ 0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222, -+ 0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2, -+ 0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a, -+ 0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a, -+ 0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1, -+ 0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2, -+ 0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077, -+ 0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3, -+ 0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1, -+ 0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621, -+ 0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0, -+ 0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60, -+ 0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0, -+ 0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64, -+ 0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1, -+ 0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc, -+ 0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027, -+ 0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7, -+ 0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9, -+ 0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79, -+ 0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292, -+ 0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af, -+ 0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a, -+ 0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee, -+ 0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e, -+ 0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe, -+ 0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f, -+ 0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff, -+ 0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd, -+ 0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29, -+ 0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc, -+ 0xe3c45916}, -+ {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344, -+ 0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59, -+ 0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e, -+ 0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463, -+ 0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98, -+ 0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d, -+ 0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3, -+ 0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656, -+ 0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad, -+ 0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0, -+ 0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397, -+ 0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a, -+ 0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2, -+ 0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357, -+ 0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8, -+ 0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d, -+ 0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696, -+ 0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b, -+ 0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc, -+ 0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0, -+ 0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b, -+ 0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be, -+ 0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811, -+ 0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384, -+ 0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f, -+ 0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955, -+ 0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362, -+ 0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f, -+ 0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94, -+ 0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701, -+ 0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe, -+ 0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b, -+ 0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1, -+ 0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc, -+ 0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b, -+ 0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986, -+ 0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d, -+ 0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8, -+ 0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4, -+ 0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371, -+ 0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a, -+ 0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87, -+ 0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0, -+ 0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad, -+ 0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527, -+ 0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2, -+ 0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d, -+ 0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998, -+ 0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73, -+ 0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e, -+ 0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59, -+ 0xa7520488}, -+ {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20, -+ 0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09, -+ 0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431, -+ 0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a, -+ 0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203, -+ 0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b, -+ 0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14, -+ 0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c, -+ 0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25, -+ 0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e, -+ 0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36, -+ 0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f, -+ 0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649, -+ 0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961, -+ 0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58, -+ 0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170, -+ 0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b, -+ 0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742, -+ 0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a, -+ 0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55, -+ 0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c, -+ 0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64, -+ 0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f, -+ 0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77, -+ 0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e, -+ 0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a, -+ 0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2, -+ 0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b, -+ 0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090, -+ 0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8, -+ 0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881, -+ 0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9, -+ 0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6, -+ 0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f, -+ 0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7, -+ 0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c, -+ 0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695, -+ 0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd, -+ 0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb, -+ 0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3, -+ 0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa, -+ 0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1, -+ 0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9, -+ 0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0, -+ 0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df, -+ 0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7, -+ 0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace, -+ 0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6, -+ 0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd, -+ 0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4, -+ 0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec, -+ 0x3522e9e4}, -+ {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1, -+ 0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86, -+ 0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b, -+ 0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669, -+ 0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7, -+ 0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352, -+ 0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03, -+ 0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6, -+ 0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38, -+ 0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a, -+ 0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7, -+ 0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80, -+ 0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7, -+ 0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522, -+ 0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d, -+ 0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8, -+ 0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103, -+ 0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54, -+ 0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9, -+ 0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0, -+ 0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e, -+ 0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb, -+ 0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1, -+ 0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624, -+ 0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea, -+ 0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a, -+ 0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37, -+ 0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360, -+ 0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab, -+ 0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e, -+ 0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741, -+ 0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4, -+ 0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334, -+ 0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63, -+ 0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de, -+ 0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c, -+ 0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942, -+ 0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7, -+ 0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131, -+ 0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4, -+ 0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a, -+ 0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758, -+ 0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5, -+ 0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2, -+ 0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32, -+ 0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7, -+ 0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8, -+ 0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d, -+ 0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6, -+ 0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1, -+ 0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c, -+ 0x97411e28}, -+ {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474, -+ 0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5, -+ 0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6, -+ 0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7, -+ 0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938, -+ 0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051, -+ 0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a, -+ 0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3, -+ 0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c, -+ 0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d, -+ 0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e, -+ 0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf, -+ 0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740, -+ 0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29, -+ 0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592, -+ 0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb, -+ 0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4, -+ 0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365, -+ 0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036, -+ 0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7, -+ 0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08, -+ 0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561, -+ 0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a, -+ 0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663, -+ 0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac, -+ 0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d, -+ 0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce, -+ 0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f, -+ 0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50, -+ 0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639, -+ 0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82, -+ 0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb, -+ 0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954, -+ 0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5, -+ 0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86, -+ 0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7, -+ 0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418, -+ 0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71, -+ 0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa, -+ 0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93, -+ 0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c, -+ 0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d, -+ 0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e, -+ 0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df, -+ 0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60, -+ 0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309, -+ 0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2, -+ 0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db, -+ 0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4, -+ 0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45, -+ 0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16, -+ 0x93c7a00b}, -+ {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45, -+ 0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb, -+ 0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d, -+ 0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696, -+ 0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf, -+ 0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb, -+ 0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028, -+ 0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c, -+ 0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65, -+ 0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be, -+ 0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038, -+ 0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6, -+ 0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15, -+ 0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11, -+ 0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d, -+ 0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19, -+ 0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05, -+ 0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b, -+ 0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d, -+ 0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c, -+ 0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35, -+ 0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31, -+ 0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068, -+ 0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c, -+ 0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25, -+ 0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a, -+ 0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac, -+ 0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22, -+ 0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e, -+ 0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a, -+ 0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36, -+ 0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32, -+ 0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84, -+ 0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a, -+ 0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c, -+ 0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057, -+ 0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e, -+ 0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a, -+ 0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc, -+ 0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8, -+ 0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1, -+ 0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a, -+ 0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec, -+ 0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62, -+ 0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4, -+ 0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0, -+ 0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc, -+ 0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8, -+ 0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4, -+ 0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a, -+ 0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc, -+ 0xce5f968d}, -+ {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de, -+ 0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b, -+ 0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d, -+ 0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680, -+ 0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4, -+ 0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d, -+ 0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde, -+ 0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97, -+ 0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3, -+ 0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e, -+ 0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678, -+ 0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d, -+ 0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723, -+ 0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a, -+ 0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0, -+ 0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9, -+ 0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85, -+ 0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770, -+ 0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56, -+ 0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a, -+ 0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e, -+ 0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67, -+ 0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785, -+ 0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc, -+ 0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788, -+ 0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90, -+ 0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6, -+ 0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843, -+ 0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f, -+ 0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336, -+ 0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac, -+ 0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5, -+ 0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68, -+ 0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d, -+ 0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb, -+ 0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36, -+ 0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72, -+ 0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b, -+ 0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b, -+ 0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402, -+ 0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446, -+ 0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb, -+ 0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed, -+ 0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418, -+ 0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95, -+ 0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc, -+ 0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946, -+ 0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f, -+ 0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233, -+ 0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6, -+ 0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0, -+ 0x3e721277}, -+ {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb, -+ 0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9, -+ 0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11, -+ 0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d, -+ 0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9, -+ 0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c, -+ 0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881, -+ 0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274, -+ 0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790, -+ 0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc, -+ 0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514, -+ 0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56, -+ 0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9, -+ 0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c, -+ 0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13, -+ 0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6, -+ 0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c, -+ 0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e, -+ 0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386, -+ 0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376, -+ 0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692, -+ 0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67, -+ 0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416, -+ 0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3, -+ 0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07, -+ 0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd, -+ 0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15, -+ 0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457, -+ 0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd, -+ 0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28, -+ 0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337, -+ 0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2, -+ 0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594, -+ 0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6, -+ 0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e, -+ 0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52, -+ 0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6, -+ 0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143, -+ 0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17, -+ 0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2, -+ 0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306, -+ 0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a, -+ 0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182, -+ 0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0, -+ 0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496, -+ 0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63, -+ 0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c, -+ 0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89, -+ 0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903, -+ 0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041, -+ 0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9, -+ 0x1c65ace7}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000, -+ 0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000, -+ 0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000, -+ 0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000, -+ 0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000, -+ 0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000, -+ 0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000, -+ 0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000, -+ 0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000, -+ 0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000, -+ 0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000, -+ 0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000, -+ 0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000, -+ 0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000, -+ 0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000, -+ 0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000, -+ 0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000, -+ 0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000, -+ 0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000, -+ 0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000, -+ 0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000, -+ 0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000, -+ 0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000, -+ 0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000, -+ 0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000, -+ 0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000, -+ 0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000, -+ 0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000, -+ 0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000, -+ 0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000, -+ 0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000, -+ 0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000, -+ 0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000, -+ 0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000, -+ 0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000, -+ 0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000, -+ 0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000, -+ 0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000, -+ 0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000, -+ 0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000, -+ 0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000, -+ 0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000, -+ 0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000, -+ 0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000, -+ 0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000, -+ 0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000, -+ 0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000, -+ 0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000, -+ 0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000, -+ 0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000, -+ 0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000, -+ 0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000, -+ 0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000, -+ 0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000, -+ 0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000, -+ 0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000, -+ 0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000, -+ 0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000, -+ 0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000, -+ 0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000, -+ 0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000, -+ 0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000, -+ 0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000, -+ 0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000, -+ 0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000, -+ 0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000, -+ 0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000, -+ 0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000, -+ 0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000, -+ 0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000, -+ 0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000, -+ 0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000, -+ 0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000, -+ 0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000, -+ 0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000, -+ 0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000, -+ 0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000, -+ 0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000, -+ 0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000, -+ 0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000, -+ 0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000, -+ 0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000, -+ 0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000, -+ 0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000, -+ 0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000, -+ 0xe7ac651c00000000}, -+ {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000, -+ 0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000, -+ 0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000, -+ 0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000, -+ 0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000, -+ 0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000, -+ 0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000, -+ 0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000, -+ 0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000, -+ 0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000, -+ 0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000, -+ 0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000, -+ 0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000, -+ 0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000, -+ 0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000, -+ 0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000, -+ 0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000, -+ 0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000, -+ 0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000, -+ 0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000, -+ 0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000, -+ 0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000, -+ 0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000, -+ 0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000, -+ 0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000, -+ 0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000, -+ 0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000, -+ 0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000, -+ 0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000, -+ 0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000, -+ 0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000, -+ 0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000, -+ 0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000, -+ 0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000, -+ 0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000, -+ 0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000, -+ 0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000, -+ 0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000, -+ 0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000, -+ 0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000, -+ 0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000, -+ 0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000, -+ 0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000, -+ 0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000, -+ 0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000, -+ 0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000, -+ 0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000, -+ 0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000, -+ 0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000, -+ 0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000, -+ 0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000, -+ 0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000, -+ 0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000, -+ 0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000, -+ 0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000, -+ 0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000, -+ 0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000, -+ 0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000, -+ 0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000, -+ 0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000, -+ 0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000, -+ 0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000, -+ 0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000, -+ 0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000, -+ 0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000, -+ 0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000, -+ 0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000, -+ 0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000, -+ 0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000, -+ 0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000, -+ 0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000, -+ 0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000, -+ 0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000, -+ 0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000, -+ 0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000, -+ 0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000, -+ 0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000, -+ 0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000, -+ 0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000, -+ 0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000, -+ 0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000, -+ 0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000, -+ 0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000, -+ 0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000, -+ 0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000, -+ 0x7712723e00000000}, -+ {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000, -+ 0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000, -+ 0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000, -+ 0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000, -+ 0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000, -+ 0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000, -+ 0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000, -+ 0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000, -+ 0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000, -+ 0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000, -+ 0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000, -+ 0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000, -+ 0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000, -+ 0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000, -+ 0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000, -+ 0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000, -+ 0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000, -+ 0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000, -+ 0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000, -+ 0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000, -+ 0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000, -+ 0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000, -+ 0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000, -+ 0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000, -+ 0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000, -+ 0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000, -+ 0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000, -+ 0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000, -+ 0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000, -+ 0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000, -+ 0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000, -+ 0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000, -+ 0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000, -+ 0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000, -+ 0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000, -+ 0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000, -+ 0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000, -+ 0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000, -+ 0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000, -+ 0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000, -+ 0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000, -+ 0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000, -+ 0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000, -+ 0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000, -+ 0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000, -+ 0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000, -+ 0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000, -+ 0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000, -+ 0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000, -+ 0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000, -+ 0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000, -+ 0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000, -+ 0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000, -+ 0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000, -+ 0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000, -+ 0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000, -+ 0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000, -+ 0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000, -+ 0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000, -+ 0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000, -+ 0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000, -+ 0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000, -+ 0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000, -+ 0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000, -+ 0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000, -+ 0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000, -+ 0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000, -+ 0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000, -+ 0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000, -+ 0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000, -+ 0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000, -+ 0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000, -+ 0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000, -+ 0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000, -+ 0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000, -+ 0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000, -+ 0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000, -+ 0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000, -+ 0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000, -+ 0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000, -+ 0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000, -+ 0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000, -+ 0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000, -+ 0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000, -+ 0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000, -+ 0x8d965fce00000000}, -+ {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000, -+ 0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000, -+ 0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000, -+ 0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000, -+ 0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000, -+ 0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000, -+ 0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000, -+ 0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000, -+ 0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000, -+ 0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000, -+ 0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000, -+ 0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000, -+ 0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000, -+ 0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000, -+ 0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000, -+ 0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000, -+ 0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000, -+ 0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000, -+ 0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000, -+ 0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000, -+ 0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000, -+ 0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000, -+ 0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000, -+ 0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000, -+ 0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000, -+ 0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000, -+ 0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000, -+ 0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000, -+ 0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000, -+ 0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000, -+ 0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000, -+ 0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000, -+ 0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000, -+ 0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000, -+ 0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000, -+ 0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000, -+ 0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000, -+ 0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000, -+ 0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000, -+ 0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000, -+ 0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000, -+ 0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000, -+ 0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000, -+ 0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000, -+ 0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000, -+ 0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000, -+ 0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000, -+ 0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000, -+ 0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000, -+ 0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000, -+ 0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000, -+ 0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000, -+ 0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000, -+ 0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000, -+ 0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000, -+ 0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000, -+ 0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000, -+ 0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000, -+ 0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000, -+ 0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000, -+ 0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000, -+ 0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000, -+ 0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000, -+ 0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000, -+ 0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000, -+ 0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000, -+ 0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000, -+ 0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000, -+ 0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000, -+ 0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000, -+ 0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000, -+ 0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000, -+ 0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000, -+ 0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000, -+ 0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000, -+ 0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000, -+ 0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000, -+ 0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000, -+ 0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000, -+ 0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000, -+ 0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000, -+ 0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000, -+ 0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000, -+ 0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000, -+ 0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000, -+ 0x0ba0c79300000000}, -+ {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000, -+ 0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000, -+ 0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000, -+ 0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000, -+ 0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000, -+ 0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000, -+ 0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000, -+ 0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000, -+ 0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000, -+ 0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000, -+ 0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000, -+ 0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000, -+ 0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000, -+ 0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000, -+ 0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000, -+ 0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000, -+ 0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000, -+ 0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000, -+ 0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000, -+ 0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000, -+ 0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000, -+ 0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000, -+ 0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000, -+ 0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000, -+ 0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000, -+ 0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000, -+ 0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000, -+ 0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000, -+ 0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000, -+ 0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000, -+ 0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000, -+ 0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000, -+ 0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000, -+ 0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000, -+ 0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000, -+ 0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000, -+ 0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000, -+ 0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000, -+ 0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000, -+ 0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000, -+ 0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000, -+ 0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000, -+ 0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000, -+ 0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000, -+ 0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000, -+ 0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000, -+ 0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000, -+ 0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000, -+ 0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000, -+ 0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000, -+ 0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000, -+ 0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000, -+ 0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000, -+ 0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000, -+ 0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000, -+ 0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000, -+ 0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000, -+ 0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000, -+ 0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000, -+ 0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000, -+ 0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000, -+ 0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000, -+ 0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000, -+ 0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000, -+ 0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000, -+ 0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000, -+ 0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000, -+ 0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000, -+ 0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000, -+ 0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000, -+ 0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000, -+ 0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000, -+ 0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000, -+ 0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000, -+ 0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000, -+ 0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000, -+ 0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000, -+ 0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000, -+ 0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000, -+ 0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000, -+ 0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000, -+ 0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000, -+ 0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000, -+ 0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000, -+ 0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000, -+ 0x281e419700000000}, -+ {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000, -+ 0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000, -+ 0x304a428900000000, 0x38a922b500000000, 0x011e763800000000, -+ 0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000, -+ 0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000, -+ 0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000, -+ 0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000, -+ 0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000, -+ 0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000, -+ 0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000, -+ 0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000, -+ 0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000, -+ 0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000, -+ 0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000, -+ 0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000, -+ 0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000, -+ 0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000, -+ 0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000, -+ 0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000, -+ 0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000, -+ 0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000, -+ 0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000, -+ 0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000, -+ 0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000, -+ 0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000, -+ 0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000, -+ 0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000, -+ 0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000, -+ 0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000, -+ 0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000, -+ 0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000, -+ 0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000, -+ 0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000, -+ 0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000, -+ 0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000, -+ 0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000, -+ 0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000, -+ 0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000, -+ 0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000, -+ 0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000, -+ 0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000, -+ 0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000, -+ 0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000, -+ 0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000, -+ 0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000, -+ 0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000, -+ 0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000, -+ 0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000, -+ 0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000, -+ 0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000, -+ 0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000, -+ 0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000, -+ 0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000, -+ 0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000, -+ 0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000, -+ 0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000, -+ 0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000, -+ 0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000, -+ 0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000, -+ 0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000, -+ 0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000, -+ 0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000, -+ 0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000, -+ 0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000, -+ 0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000, -+ 0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000, -+ 0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000, -+ 0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000, -+ 0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000, -+ 0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000, -+ 0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000, -+ 0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000, -+ 0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000, -+ 0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000, -+ 0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000, -+ 0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000, -+ 0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000, -+ 0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000, -+ 0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000, -+ 0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000, -+ 0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000, -+ 0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000, -+ 0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000, -+ 0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000, -+ 0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000, -+ 0xe4e9223500000000}, -+ {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000, -+ 0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000, -+ 0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000, -+ 0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000, -+ 0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000, -+ 0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000, -+ 0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000, -+ 0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000, -+ 0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000, -+ 0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000, -+ 0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000, -+ 0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000, -+ 0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000, -+ 0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000, -+ 0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000, -+ 0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000, -+ 0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000, -+ 0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000, -+ 0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000, -+ 0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000, -+ 0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000, -+ 0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000, -+ 0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000, -+ 0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000, -+ 0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000, -+ 0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000, -+ 0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000, -+ 0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000, -+ 0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000, -+ 0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000, -+ 0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000, -+ 0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000, -+ 0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000, -+ 0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000, -+ 0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000, -+ 0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000, -+ 0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000, -+ 0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000, -+ 0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000, -+ 0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000, -+ 0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000, -+ 0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000, -+ 0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000, -+ 0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000, -+ 0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000, -+ 0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000, -+ 0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000, -+ 0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000, -+ 0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000, -+ 0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000, -+ 0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000, -+ 0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000, -+ 0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000, -+ 0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000, -+ 0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000, -+ 0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000, -+ 0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000, -+ 0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000, -+ 0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000, -+ 0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000, -+ 0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000, -+ 0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000, -+ 0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000, -+ 0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000, -+ 0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000, -+ 0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000, -+ 0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000, -+ 0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000, -+ 0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000, -+ 0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000, -+ 0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000, -+ 0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000, -+ 0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000, -+ 0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000, -+ 0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000, -+ 0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000, -+ 0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000, -+ 0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000, -+ 0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000, -+ 0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000, -+ 0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000, -+ 0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000, -+ 0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000, -+ 0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000, -+ 0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000, -+ 0x880452a700000000}, -+ {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000, -+ 0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000, -+ 0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000, -+ 0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000, -+ 0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000, -+ 0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000, -+ 0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000, -+ 0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000, -+ 0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000, -+ 0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000, -+ 0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000, -+ 0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000, -+ 0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000, -+ 0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000, -+ 0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000, -+ 0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000, -+ 0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000, -+ 0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000, -+ 0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000, -+ 0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000, -+ 0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000, -+ 0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000, -+ 0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000, -+ 0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000, -+ 0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000, -+ 0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000, -+ 0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000, -+ 0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000, -+ 0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000, -+ 0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000, -+ 0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000, -+ 0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000, -+ 0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000, -+ 0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000, -+ 0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000, -+ 0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000, -+ 0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000, -+ 0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000, -+ 0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000, -+ 0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000, -+ 0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000, -+ 0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000, -+ 0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000, -+ 0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000, -+ 0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000, -+ 0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000, -+ 0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000, -+ 0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000, -+ 0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000, -+ 0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000, -+ 0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000, -+ 0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000, -+ 0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000, -+ 0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000, -+ 0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000, -+ 0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000, -+ 0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000, -+ 0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000, -+ 0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000, -+ 0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000, -+ 0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000, -+ 0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000, -+ 0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000, -+ 0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000, -+ 0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000, -+ 0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000, -+ 0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000, -+ 0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000, -+ 0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000, -+ 0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000, -+ 0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000, -+ 0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000, -+ 0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000, -+ 0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000, -+ 0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000, -+ 0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000, -+ 0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000, -+ 0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000, -+ 0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000, -+ 0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000, -+ 0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000, -+ 0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000, -+ 0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000, -+ 0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000, -+ 0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000, -+ 0x1659c4e300000000}}; -+ -+#else /* W == 4 */ -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87, -+ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede, -+ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab, -+ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c, -+ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1, -+ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7, -+ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e, -+ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308, -+ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5, -+ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472, -+ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07, -+ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e, -+ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa, -+ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec, -+ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6, -+ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0, -+ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3, -+ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba, -+ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf, -+ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975, -+ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8, -+ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde, -+ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a, -+ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c, -+ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1, -+ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65, -+ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410, -+ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649, -+ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a, -+ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c, -+ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946, -+ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450, -+ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e, -+ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857, -+ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022, -+ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5, -+ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758, -+ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e, -+ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d, -+ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b, -+ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6, -+ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401, -+ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74, -+ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d, -+ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073, -+ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65, -+ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f, -+ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749, -+ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a, -+ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033, -+ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846, -+ 0x0d7139d7}, -+ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563, -+ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f, -+ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875, -+ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536, -+ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8, -+ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43, -+ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f, -+ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184, -+ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a, -+ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39, -+ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523, -+ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f, -+ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d, -+ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6, -+ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b, -+ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0, -+ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151, -+ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d, -+ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47, -+ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a, -+ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964, -+ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef, -+ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d, -+ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6, -+ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348, -+ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53, -+ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449, -+ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645, -+ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4, -+ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f, -+ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2, -+ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69, -+ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46, -+ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a, -+ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650, -+ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13, -+ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded, -+ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366, -+ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57, -+ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc, -+ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222, -+ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61, -+ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b, -+ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277, -+ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558, -+ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3, -+ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e, -+ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5, -+ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74, -+ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78, -+ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262, -+ 0x1c53e98a}, -+ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b, -+ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40, -+ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580, -+ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7, -+ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a, -+ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37, -+ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75, -+ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218, -+ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5, -+ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2, -+ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02, -+ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59, -+ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1, -+ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c, -+ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a, -+ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307, -+ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486, -+ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd, -+ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d, -+ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2, -+ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f, -+ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72, -+ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8, -+ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985, -+ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268, -+ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94, -+ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454, -+ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f, -+ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e, -+ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3, -+ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915, -+ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778, -+ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821, -+ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a, -+ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba, -+ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d, -+ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560, -+ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d, -+ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe, -+ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3, -+ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e, -+ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509, -+ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9, -+ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92, -+ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb, -+ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6, -+ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50, -+ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d, -+ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc, -+ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7, -+ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927, -+ 0x3f88e851}, -+ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96, -+ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8, -+ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0, -+ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14, -+ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7, -+ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4, -+ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe, -+ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad, -+ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e, -+ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa, -+ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2, -+ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c, -+ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab, -+ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8, -+ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d, -+ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e, -+ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7, -+ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99, -+ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1, -+ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690, -+ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933, -+ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20, -+ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf, -+ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc, -+ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f, -+ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92, -+ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca, -+ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4, -+ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd, -+ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de, -+ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb, -+ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8, -+ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474, -+ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a, -+ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252, -+ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6, -+ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55, -+ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846, -+ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7, -+ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4, -+ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47, -+ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3, -+ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb, -+ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5, -+ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49, -+ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a, -+ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f, -+ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c, -+ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305, -+ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b, -+ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523, -+ 0x3dee8ca6}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0, -+ 0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587, -+ 0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa, -+ 0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09, -+ 0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee, -+ 0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3, -+ 0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3, -+ 0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce, -+ 0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429, -+ 0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda, -+ 0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7, -+ 0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0, -+ 0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd, -+ 0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0, -+ 0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287, -+ 0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a, -+ 0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9, -+ 0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e, -+ 0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3, -+ 0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3, -+ 0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054, -+ 0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49, -+ 0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da, -+ 0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7, -+ 0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20, -+ 0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d, -+ 0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00, -+ 0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347, -+ 0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14, -+ 0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209, -+ 0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e, -+ 0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33, -+ 0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3, -+ 0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194, -+ 0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9, -+ 0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a, -+ 0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd, -+ 0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0, -+ 0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d, -+ 0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460, -+ 0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87, -+ 0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674, -+ 0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509, -+ 0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e, -+ 0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae, -+ 0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3, -+ 0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694, -+ 0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989, -+ 0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da, -+ 0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d, -+ 0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0, -+ 0xa68cee3d}, -+ {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19, -+ 0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae, -+ 0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb, -+ 0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a, -+ 0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55, -+ 0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1, -+ 0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c, -+ 0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8, -+ 0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7, -+ 0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936, -+ 0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453, -+ 0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4, -+ 0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941, -+ 0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5, -+ 0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93, -+ 0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17, -+ 0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e, -+ 0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89, -+ 0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec, -+ 0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0, -+ 0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf, -+ 0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b, -+ 0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b, -+ 0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f, -+ 0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0, -+ 0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e, -+ 0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b, -+ 0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc, -+ 0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5, -+ 0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261, -+ 0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637, -+ 0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3, -+ 0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57, -+ 0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0, -+ 0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85, -+ 0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454, -+ 0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b, -+ 0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f, -+ 0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423, -+ 0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7, -+ 0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8, -+ 0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739, -+ 0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c, -+ 0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb, -+ 0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f, -+ 0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b, -+ 0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd, -+ 0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59, -+ 0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070, -+ 0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7, -+ 0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2, -+ 0x51e8883f}, -+ {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a, -+ 0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276, -+ 0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed, -+ 0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55, -+ 0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b, -+ 0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8, -+ 0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320, -+ 0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413, -+ 0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd, -+ 0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75, -+ 0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee, -+ 0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312, -+ 0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca, -+ 0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9, -+ 0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad, -+ 0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e, -+ 0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504, -+ 0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8, -+ 0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63, -+ 0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353, -+ 0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d, -+ 0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be, -+ 0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae, -+ 0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d, -+ 0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943, -+ 0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7, -+ 0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c, -+ 0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390, -+ 0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a, -+ 0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239, -+ 0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d, -+ 0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e, -+ 0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c, -+ 0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0, -+ 0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b, -+ 0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93, -+ 0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d, -+ 0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e, -+ 0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c, -+ 0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f, -+ 0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1, -+ 0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579, -+ 0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2, -+ 0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e, -+ 0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c, -+ 0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f, -+ 0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b, -+ 0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158, -+ 0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2, -+ 0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e, -+ 0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5, -+ 0x8ae9531c}, -+ {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4, -+ 0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd, -+ 0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220, -+ 0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf, -+ 0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495, -+ 0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def, -+ 0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90, -+ 0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea, -+ 0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0, -+ 0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f, -+ 0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2, -+ 0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab, -+ 0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e, -+ 0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754, -+ 0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda, -+ 0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0, -+ 0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c, -+ 0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215, -+ 0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8, -+ 0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910, -+ 0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a, -+ 0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30, -+ 0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658, -+ 0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22, -+ 0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478, -+ 0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2, -+ 0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f, -+ 0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606, -+ 0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba, -+ 0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0, -+ 0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e, -+ 0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034, -+ 0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f, -+ 0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996, -+ 0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b, -+ 0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84, -+ 0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de, -+ 0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4, -+ 0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5, -+ 0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f, -+ 0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5, -+ 0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a, -+ 0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7, -+ 0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce, -+ 0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65, -+ 0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f, -+ 0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91, -+ 0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb, -+ 0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57, -+ 0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e, -+ 0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3, -+ 0xd739710d}}; -+ -+#endif -+ -+#endif -+ -+#if N == 5 -+ -+#if W == 8 -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df, -+ 0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8, -+ 0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef, -+ 0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376, -+ 0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201, -+ 0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399, -+ 0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372, -+ 0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea, -+ 0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d, -+ 0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004, -+ 0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353, -+ 0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334, -+ 0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a, -+ 0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2, -+ 0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a, -+ 0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2, -+ 0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b, -+ 0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c, -+ 0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b, -+ 0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f, -+ 0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338, -+ 0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0, -+ 0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6, -+ 0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e, -+ 0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319, -+ 0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3, -+ 0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4, -+ 0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783, -+ 0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a, -+ 0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492, -+ 0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a, -+ 0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2, -+ 0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496, -+ 0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1, -+ 0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6, -+ 0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f, -+ 0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548, -+ 0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0, -+ 0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741, -+ 0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9, -+ 0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae, -+ 0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437, -+ 0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760, -+ 0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707, -+ 0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433, -+ 0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab, -+ 0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703, -+ 0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b, -+ 0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412, -+ 0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475, -+ 0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722, -+ 0xe9947565}, -+ {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5, -+ 0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22, -+ 0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c, -+ 0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed, -+ 0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d, -+ 0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1, -+ 0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e, -+ 0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32, -+ 0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142, -+ 0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93, -+ 0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d, -+ 0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a, -+ 0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58, -+ 0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14, -+ 0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81, -+ 0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd, -+ 0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab, -+ 0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c, -+ 0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72, -+ 0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f, -+ 0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff, -+ 0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3, -+ 0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30, -+ 0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c, -+ 0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c, -+ 0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558, -+ 0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146, -+ 0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581, -+ 0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7, -+ 0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab, -+ 0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e, -+ 0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272, -+ 0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838, -+ 0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff, -+ 0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1, -+ 0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330, -+ 0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840, -+ 0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c, -+ 0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb, -+ 0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7, -+ 0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7, -+ 0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616, -+ 0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208, -+ 0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf, -+ 0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85, -+ 0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9, -+ 0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c, -+ 0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10, -+ 0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76, -+ 0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1, -+ 0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf, -+ 0xf7d05006}, -+ {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b, -+ 0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774, -+ 0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58, -+ 0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a, -+ 0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb, -+ 0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952, -+ 0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e, -+ 0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7, -+ 0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746, -+ 0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14, -+ 0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338, -+ 0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907, -+ 0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777, -+ 0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de, -+ 0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064, -+ 0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd, -+ 0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951, -+ 0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e, -+ 0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42, -+ 0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b, -+ 0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a, -+ 0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3, -+ 0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904, -+ 0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad, -+ 0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c, -+ 0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d, -+ 0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861, -+ 0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e, -+ 0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2, -+ 0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b, -+ 0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1, -+ 0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78, -+ 0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f, -+ 0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40, -+ 0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c, -+ 0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e, -+ 0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf, -+ 0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166, -+ 0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d, -+ 0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4, -+ 0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805, -+ 0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157, -+ 0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b, -+ 0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644, -+ 0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43, -+ 0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea, -+ 0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850, -+ 0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9, -+ 0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165, -+ 0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a, -+ 0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676, -+ 0xb2075b94}, -+ {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf, -+ 0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61, -+ 0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be, -+ 0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd, -+ 0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3, -+ 0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063, -+ 0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105, -+ 0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5, -+ 0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb, -+ 0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8, -+ 0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07, -+ 0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9, -+ 0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5, -+ 0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515, -+ 0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4, -+ 0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014, -+ 0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7, -+ 0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269, -+ 0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6, -+ 0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af, -+ 0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1, -+ 0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111, -+ 0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d, -+ 0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad, -+ 0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3, -+ 0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75, -+ 0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa, -+ 0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74, -+ 0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7, -+ 0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477, -+ 0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6, -+ 0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176, -+ 0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af, -+ 0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71, -+ 0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae, -+ 0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd, -+ 0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3, -+ 0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073, -+ 0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0, -+ 0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400, -+ 0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e, -+ 0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d, -+ 0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2, -+ 0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c, -+ 0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5, -+ 0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505, -+ 0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4, -+ 0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004, -+ 0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7, -+ 0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279, -+ 0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6, -+ 0xba50bcb9}, -+ {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897, -+ 0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb, -+ 0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2, -+ 0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2, -+ 0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372, -+ 0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70, -+ 0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92, -+ 0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190, -+ 0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40, -+ 0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430, -+ 0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759, -+ 0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75, -+ 0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2, -+ 0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0, -+ 0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7, -+ 0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5, -+ 0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39, -+ 0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215, -+ 0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c, -+ 0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5, -+ 0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625, -+ 0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27, -+ 0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c, -+ 0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e, -+ 0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee, -+ 0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71, -+ 0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18, -+ 0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134, -+ 0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8, -+ 0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba, -+ 0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd, -+ 0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff, -+ 0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a, -+ 0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6, -+ 0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf, -+ 0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf, -+ 0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f, -+ 0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d, -+ 0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d, -+ 0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f, -+ 0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af, -+ 0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df, -+ 0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6, -+ 0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a, -+ 0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef, -+ 0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed, -+ 0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa, -+ 0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8, -+ 0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624, -+ 0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08, -+ 0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861, -+ 0x808abcf4}, -+ {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2, -+ 0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd, -+ 0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76, -+ 0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52, -+ 0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e, -+ 0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124, -+ 0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147, -+ 0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d, -+ 0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31, -+ 0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15, -+ 0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae, -+ 0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1, -+ 0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d, -+ 0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307, -+ 0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9, -+ 0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3, -+ 0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084, -+ 0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb, -+ 0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850, -+ 0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2, -+ 0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe, -+ 0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94, -+ 0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261, -+ 0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b, -+ 0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917, -+ 0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53, -+ 0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8, -+ 0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787, -+ 0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0, -+ 0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba, -+ 0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404, -+ 0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e, -+ 0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af, -+ 0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0, -+ 0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b, -+ 0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f, -+ 0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543, -+ 0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129, -+ 0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627, -+ 0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d, -+ 0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51, -+ 0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75, -+ 0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce, -+ 0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1, -+ 0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760, -+ 0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a, -+ 0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4, -+ 0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde, -+ 0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089, -+ 0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6, -+ 0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d, -+ 0xefdb3f95}, -+ {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8, -+ 0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7, -+ 0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945, -+ 0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9, -+ 0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652, -+ 0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc, -+ 0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a, -+ 0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4, -+ 0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f, -+ 0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3, -+ 0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51, -+ 0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e, -+ 0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c, -+ 0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362, -+ 0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11, -+ 0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff, -+ 0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7, -+ 0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8, -+ 0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a, -+ 0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690, -+ 0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b, -+ 0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5, -+ 0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05, -+ 0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb, -+ 0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740, -+ 0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f, -+ 0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded, -+ 0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2, -+ 0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa, -+ 0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714, -+ 0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67, -+ 0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89, -+ 0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7, -+ 0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8, -+ 0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a, -+ 0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6, -+ 0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d, -+ 0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3, -+ 0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9, -+ 0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57, -+ 0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc, -+ 0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540, -+ 0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2, -+ 0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd, -+ 0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93, -+ 0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d, -+ 0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e, -+ 0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0, -+ 0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8, -+ 0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7, -+ 0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75, -+ 0x0e2fbf43}, -+ {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc, -+ 0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a, -+ 0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3, -+ 0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7, -+ 0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b, -+ 0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154, -+ 0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3, -+ 0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc, -+ 0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330, -+ 0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264, -+ 0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd, -+ 0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b, -+ 0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a, -+ 0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175, -+ 0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275, -+ 0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a, -+ 0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234, -+ 0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2, -+ 0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b, -+ 0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a, -+ 0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6, -+ 0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189, -+ 0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b, -+ 0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204, -+ 0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8, -+ 0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226, -+ 0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff, -+ 0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219, -+ 0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167, -+ 0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258, -+ 0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158, -+ 0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267, -+ 0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c, -+ 0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da, -+ 0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003, -+ 0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157, -+ 0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b, -+ 0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4, -+ 0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179, -+ 0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246, -+ 0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a, -+ 0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de, -+ 0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107, -+ 0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1, -+ 0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba, -+ 0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285, -+ 0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185, -+ 0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba, -+ 0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4, -+ 0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322, -+ 0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb, -+ 0xf4377108}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000, -+ 0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000, -+ 0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000, -+ 0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000, -+ 0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000, -+ 0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000, -+ 0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000, -+ 0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000, -+ 0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000, -+ 0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000, -+ 0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000, -+ 0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000, -+ 0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000, -+ 0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000, -+ 0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000, -+ 0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000, -+ 0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000, -+ 0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000, -+ 0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000, -+ 0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000, -+ 0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000, -+ 0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000, -+ 0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000, -+ 0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000, -+ 0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000, -+ 0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000, -+ 0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000, -+ 0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000, -+ 0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000, -+ 0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000, -+ 0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000, -+ 0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000, -+ 0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000, -+ 0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000, -+ 0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000, -+ 0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000, -+ 0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000, -+ 0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000, -+ 0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000, -+ 0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000, -+ 0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000, -+ 0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000, -+ 0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000, -+ 0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000, -+ 0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000, -+ 0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000, -+ 0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000, -+ 0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000, -+ 0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000, -+ 0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000, -+ 0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000, -+ 0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000, -+ 0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000, -+ 0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000, -+ 0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000, -+ 0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000, -+ 0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000, -+ 0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000, -+ 0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000, -+ 0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000, -+ 0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000, -+ 0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000, -+ 0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000, -+ 0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000, -+ 0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000, -+ 0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000, -+ 0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000, -+ 0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000, -+ 0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000, -+ 0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000, -+ 0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000, -+ 0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000, -+ 0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000, -+ 0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000, -+ 0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000, -+ 0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000, -+ 0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000, -+ 0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000, -+ 0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000, -+ 0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000, -+ 0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000, -+ 0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000, -+ 0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000, -+ 0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000, -+ 0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000, -+ 0x087137f400000000}, -+ {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000, -+ 0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000, -+ 0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000, -+ 0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000, -+ 0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000, -+ 0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000, -+ 0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000, -+ 0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000, -+ 0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000, -+ 0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000, -+ 0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000, -+ 0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000, -+ 0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000, -+ 0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000, -+ 0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000, -+ 0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000, -+ 0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000, -+ 0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000, -+ 0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000, -+ 0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000, -+ 0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000, -+ 0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000, -+ 0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000, -+ 0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000, -+ 0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000, -+ 0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000, -+ 0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000, -+ 0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000, -+ 0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000, -+ 0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000, -+ 0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000, -+ 0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000, -+ 0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000, -+ 0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000, -+ 0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000, -+ 0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000, -+ 0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000, -+ 0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000, -+ 0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000, -+ 0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000, -+ 0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000, -+ 0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000, -+ 0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000, -+ 0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000, -+ 0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000, -+ 0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000, -+ 0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000, -+ 0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000, -+ 0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000, -+ 0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000, -+ 0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000, -+ 0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000, -+ 0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000, -+ 0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000, -+ 0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000, -+ 0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000, -+ 0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000, -+ 0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000, -+ 0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000, -+ 0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000, -+ 0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000, -+ 0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000, -+ 0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000, -+ 0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000, -+ 0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000, -+ 0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000, -+ 0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000, -+ 0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000, -+ 0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000, -+ 0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000, -+ 0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000, -+ 0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000, -+ 0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000, -+ 0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000, -+ 0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000, -+ 0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000, -+ 0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000, -+ 0x1129fad400000000, 0x621116d400000000, 0x544094f000000000, -+ 0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000, -+ 0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000, -+ 0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000, -+ 0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000, -+ 0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000, -+ 0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000, -+ 0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000, -+ 0x43bf2f0e00000000}, -+ {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000, -+ 0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000, -+ 0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000, -+ 0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000, -+ 0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000, -+ 0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000, -+ 0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000, -+ 0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000, -+ 0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000, -+ 0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000, -+ 0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000, -+ 0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000, -+ 0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000, -+ 0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000, -+ 0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000, -+ 0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000, -+ 0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000, -+ 0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000, -+ 0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000, -+ 0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000, -+ 0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000, -+ 0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000, -+ 0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000, -+ 0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000, -+ 0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000, -+ 0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000, -+ 0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000, -+ 0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000, -+ 0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000, -+ 0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000, -+ 0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000, -+ 0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000, -+ 0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000, -+ 0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000, -+ 0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000, -+ 0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000, -+ 0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000, -+ 0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000, -+ 0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000, -+ 0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000, -+ 0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000, -+ 0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000, -+ 0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000, -+ 0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000, -+ 0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000, -+ 0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000, -+ 0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000, -+ 0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000, -+ 0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000, -+ 0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000, -+ 0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000, -+ 0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000, -+ 0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000, -+ 0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000, -+ 0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000, -+ 0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000, -+ 0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000, -+ 0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000, -+ 0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000, -+ 0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000, -+ 0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000, -+ 0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000, -+ 0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000, -+ 0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000, -+ 0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000, -+ 0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000, -+ 0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000, -+ 0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000, -+ 0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000, -+ 0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000, -+ 0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000, -+ 0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000, -+ 0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000, -+ 0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000, -+ 0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000, -+ 0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000, -+ 0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000, -+ 0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000, -+ 0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000, -+ 0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000, -+ 0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000, -+ 0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000, -+ 0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000, -+ 0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000, -+ 0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000, -+ 0x953fdbef00000000}, -+ {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000, -+ 0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000, -+ 0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000, -+ 0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000, -+ 0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000, -+ 0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000, -+ 0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000, -+ 0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000, -+ 0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000, -+ 0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000, -+ 0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000, -+ 0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000, -+ 0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000, -+ 0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000, -+ 0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000, -+ 0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000, -+ 0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000, -+ 0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000, -+ 0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000, -+ 0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000, -+ 0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000, -+ 0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000, -+ 0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000, -+ 0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000, -+ 0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000, -+ 0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000, -+ 0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000, -+ 0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000, -+ 0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000, -+ 0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000, -+ 0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000, -+ 0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000, -+ 0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000, -+ 0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000, -+ 0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000, -+ 0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000, -+ 0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000, -+ 0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000, -+ 0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000, -+ 0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000, -+ 0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000, -+ 0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000, -+ 0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000, -+ 0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000, -+ 0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000, -+ 0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000, -+ 0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000, -+ 0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000, -+ 0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000, -+ 0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000, -+ 0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000, -+ 0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000, -+ 0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000, -+ 0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000, -+ 0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000, -+ 0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000, -+ 0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000, -+ 0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000, -+ 0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000, -+ 0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000, -+ 0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000, -+ 0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000, -+ 0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000, -+ 0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000, -+ 0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000, -+ 0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000, -+ 0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000, -+ 0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000, -+ 0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000, -+ 0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000, -+ 0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000, -+ 0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000, -+ 0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000, -+ 0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000, -+ 0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000, -+ 0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000, -+ 0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000, -+ 0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000, -+ 0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000, -+ 0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000, -+ 0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000, -+ 0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000, -+ 0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000, -+ 0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000, -+ 0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000, -+ 0xf4bc8a8000000000}, -+ {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000, -+ 0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000, -+ 0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000, -+ 0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000, -+ 0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000, -+ 0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000, -+ 0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000, -+ 0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000, -+ 0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000, -+ 0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000, -+ 0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000, -+ 0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000, -+ 0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000, -+ 0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000, -+ 0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000, -+ 0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000, -+ 0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000, -+ 0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000, -+ 0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000, -+ 0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000, -+ 0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000, -+ 0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000, -+ 0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000, -+ 0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000, -+ 0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000, -+ 0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000, -+ 0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000, -+ 0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000, -+ 0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000, -+ 0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000, -+ 0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000, -+ 0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000, -+ 0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000, -+ 0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000, -+ 0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000, -+ 0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000, -+ 0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000, -+ 0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000, -+ 0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000, -+ 0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000, -+ 0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000, -+ 0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000, -+ 0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000, -+ 0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000, -+ 0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000, -+ 0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000, -+ 0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000, -+ 0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000, -+ 0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000, -+ 0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000, -+ 0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000, -+ 0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000, -+ 0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000, -+ 0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000, -+ 0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000, -+ 0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000, -+ 0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000, -+ 0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000, -+ 0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000, -+ 0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000, -+ 0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000, -+ 0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000, -+ 0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000, -+ 0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000, -+ 0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000, -+ 0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000, -+ 0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000, -+ 0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000, -+ 0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000, -+ 0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000, -+ 0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000, -+ 0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000, -+ 0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000, -+ 0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000, -+ 0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000, -+ 0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000, -+ 0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000, -+ 0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000, -+ 0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000, -+ 0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000, -+ 0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000, -+ 0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000, -+ 0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000, -+ 0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000, -+ 0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000, -+ 0xb9bc50ba00000000}, -+ {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000, -+ 0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000, -+ 0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000, -+ 0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000, -+ 0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000, -+ 0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000, -+ 0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000, -+ 0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000, -+ 0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000, -+ 0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000, -+ 0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000, -+ 0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000, -+ 0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000, -+ 0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000, -+ 0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000, -+ 0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000, -+ 0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000, -+ 0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000, -+ 0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000, -+ 0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000, -+ 0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000, -+ 0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000, -+ 0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000, -+ 0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000, -+ 0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000, -+ 0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000, -+ 0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000, -+ 0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000, -+ 0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000, -+ 0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000, -+ 0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000, -+ 0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000, -+ 0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000, -+ 0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000, -+ 0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000, -+ 0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000, -+ 0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000, -+ 0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000, -+ 0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000, -+ 0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000, -+ 0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000, -+ 0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000, -+ 0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000, -+ 0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000, -+ 0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000, -+ 0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000, -+ 0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000, -+ 0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000, -+ 0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000, -+ 0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000, -+ 0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000, -+ 0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000, -+ 0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000, -+ 0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000, -+ 0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000, -+ 0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000, -+ 0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000, -+ 0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000, -+ 0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000, -+ 0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000, -+ 0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000, -+ 0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000, -+ 0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000, -+ 0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000, -+ 0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000, -+ 0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000, -+ 0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000, -+ 0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000, -+ 0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000, -+ 0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000, -+ 0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000, -+ 0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000, -+ 0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000, -+ 0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000, -+ 0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000, -+ 0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000, -+ 0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000, -+ 0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000, -+ 0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000, -+ 0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000, -+ 0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000, -+ 0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000, -+ 0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000, -+ 0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000, -+ 0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000, -+ 0x945b07b200000000}, -+ {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000, -+ 0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000, -+ 0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000, -+ 0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000, -+ 0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000, -+ 0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000, -+ 0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000, -+ 0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000, -+ 0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000, -+ 0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000, -+ 0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000, -+ 0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000, -+ 0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000, -+ 0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000, -+ 0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000, -+ 0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000, -+ 0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000, -+ 0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000, -+ 0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000, -+ 0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000, -+ 0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000, -+ 0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000, -+ 0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000, -+ 0x149f066100000000, 0xef839db200000000, 0x468814fc00000000, -+ 0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000, -+ 0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000, -+ 0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000, -+ 0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000, -+ 0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000, -+ 0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000, -+ 0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000, -+ 0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000, -+ 0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000, -+ 0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000, -+ 0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000, -+ 0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000, -+ 0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000, -+ 0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000, -+ 0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000, -+ 0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000, -+ 0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000, -+ 0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000, -+ 0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000, -+ 0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000, -+ 0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000, -+ 0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000, -+ 0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000, -+ 0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000, -+ 0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000, -+ 0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000, -+ 0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000, -+ 0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000, -+ 0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000, -+ 0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000, -+ 0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000, -+ 0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000, -+ 0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000, -+ 0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000, -+ 0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000, -+ 0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000, -+ 0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000, -+ 0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000, -+ 0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000, -+ 0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000, -+ 0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000, -+ 0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000, -+ 0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000, -+ 0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000, -+ 0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000, -+ 0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000, -+ 0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000, -+ 0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000, -+ 0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000, -+ 0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000, -+ 0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000, -+ 0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000, -+ 0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000, -+ 0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000, -+ 0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000, -+ 0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000, -+ 0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000, -+ 0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000, -+ 0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000, -+ 0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000, -+ 0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000, -+ 0x0650d0f700000000}, -+ {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000, -+ 0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000, -+ 0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000, -+ 0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000, -+ 0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000, -+ 0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000, -+ 0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000, -+ 0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000, -+ 0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000, -+ 0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000, -+ 0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000, -+ 0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000, -+ 0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000, -+ 0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000, -+ 0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000, -+ 0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000, -+ 0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000, -+ 0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000, -+ 0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000, -+ 0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000, -+ 0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000, -+ 0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000, -+ 0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000, -+ 0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000, -+ 0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000, -+ 0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000, -+ 0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000, -+ 0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000, -+ 0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000, -+ 0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000, -+ 0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000, -+ 0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000, -+ 0xc702c15700000000, 0x809085f800000000, 0x082039d200000000, -+ 0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000, -+ 0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000, -+ 0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000, -+ 0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000, -+ 0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000, -+ 0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000, -+ 0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000, -+ 0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000, -+ 0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000, -+ 0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000, -+ 0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000, -+ 0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000, -+ 0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000, -+ 0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000, -+ 0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000, -+ 0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000, -+ 0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000, -+ 0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000, -+ 0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000, -+ 0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000, -+ 0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000, -+ 0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000, -+ 0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000, -+ 0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000, -+ 0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000, -+ 0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000, -+ 0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000, -+ 0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000, -+ 0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000, -+ 0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000, -+ 0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000, -+ 0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000, -+ 0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000, -+ 0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000, -+ 0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000, -+ 0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000, -+ 0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000, -+ 0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000, -+ 0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000, -+ 0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000, -+ 0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000, -+ 0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000, -+ 0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000, -+ 0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000, -+ 0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000, -+ 0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000, -+ 0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000, -+ 0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000, -+ 0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000, -+ 0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000, -+ 0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000, -+ 0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000, -+ 0x657594e900000000}}; -+ -+#else /* W == 4 */ -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59, -+ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4, -+ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67, -+ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef, -+ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97, -+ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88, -+ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687, -+ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698, -+ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0, -+ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068, -+ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb, -+ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056, -+ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016, -+ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009, -+ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028, -+ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037, -+ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a, -+ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7, -+ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054, -+ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7, -+ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af, -+ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0, -+ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4, -+ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab, -+ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3, -+ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a, -+ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9, -+ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54, -+ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09, -+ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16, -+ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37, -+ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28, -+ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e, -+ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3, -+ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40, -+ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8, -+ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0, -+ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf, -+ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6, -+ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9, -+ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1, -+ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059, -+ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca, -+ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067, -+ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031, -+ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e, -+ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f, -+ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010, -+ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d, -+ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0, -+ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073, -+ 0xd8ac6b35}, -+ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2, -+ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd, -+ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696, -+ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3, -+ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f, -+ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35, -+ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5, -+ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f, -+ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673, -+ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46, -+ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d, -+ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632, -+ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28, -+ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192, -+ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c, -+ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6, -+ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0, -+ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff, -+ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4, -+ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95, -+ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9, -+ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03, -+ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7, -+ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d, -+ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151, -+ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808, -+ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343, -+ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c, -+ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a, -+ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0, -+ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e, -+ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594, -+ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6, -+ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399, -+ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2, -+ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7, -+ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb, -+ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571, -+ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289, -+ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33, -+ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f, -+ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a, -+ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461, -+ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e, -+ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c, -+ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6, -+ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918, -+ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2, -+ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484, -+ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb, -+ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0, -+ 0xa140efa8}, -+ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706, -+ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed, -+ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289, -+ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a, -+ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214, -+ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3, -+ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3, -+ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254, -+ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a, -+ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9, -+ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad, -+ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746, -+ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060, -+ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187, -+ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef, -+ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408, -+ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e, -+ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495, -+ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1, -+ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532, -+ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c, -+ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb, -+ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb, -+ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c, -+ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42, -+ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060, -+ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04, -+ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef, -+ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99, -+ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e, -+ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16, -+ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1, -+ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7, -+ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c, -+ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38, -+ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb, -+ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5, -+ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42, -+ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62, -+ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85, -+ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb, -+ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18, -+ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c, -+ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997, -+ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1, -+ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36, -+ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e, -+ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9, -+ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf, -+ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24, -+ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040, -+ 0x917cd6a1}, -+ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf, -+ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd, -+ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896, -+ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9, -+ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3, -+ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f, -+ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d, -+ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1, -+ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab, -+ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4, -+ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f, -+ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d, -+ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4, -+ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978, -+ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad, -+ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621, -+ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46, -+ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854, -+ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f, -+ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a, -+ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890, -+ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c, -+ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4, -+ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238, -+ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622, -+ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab, -+ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0, -+ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2, -+ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295, -+ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19, -+ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc, -+ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140, -+ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd, -+ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf, -+ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184, -+ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb, -+ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1, -+ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d, -+ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb, -+ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257, -+ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d, -+ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22, -+ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069, -+ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b, -+ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6, -+ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a, -+ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf, -+ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33, -+ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254, -+ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146, -+ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d, -+ 0x18ba364e}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873, -+ 0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661, -+ 0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441, -+ 0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44, -+ 0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1, -+ 0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05, -+ 0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa, -+ 0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e, -+ 0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb, -+ 0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be, -+ 0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e, -+ 0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c, -+ 0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d, -+ 0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9, -+ 0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f, -+ 0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b, -+ 0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39, -+ 0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b, -+ 0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b, -+ 0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20, -+ 0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595, -+ 0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61, -+ 0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0, -+ 0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644, -+ 0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1, -+ 0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d, -+ 0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d, -+ 0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f, -+ 0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad, -+ 0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359, -+ 0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f, -+ 0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b, -+ 0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7, -+ 0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5, -+ 0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5, -+ 0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0, -+ 0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65, -+ 0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091, -+ 0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633, -+ 0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7, -+ 0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272, -+ 0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77, -+ 0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57, -+ 0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145, -+ 0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9, -+ 0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d, -+ 0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb, -+ 0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f, -+ 0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad, -+ 0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf, -+ 0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f, -+ 0x4e36ba18}, -+ {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b, -+ 0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8, -+ 0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19, -+ 0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4, -+ 0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239, -+ 0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd, -+ 0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258, -+ 0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc, -+ 0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41, -+ 0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c, -+ 0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d, -+ 0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e, -+ 0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba, -+ 0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e, -+ 0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8, -+ 0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c, -+ 0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f, -+ 0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c, -+ 0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d, -+ 0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d, -+ 0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0, -+ 0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014, -+ 0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc, -+ 0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628, -+ 0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5, -+ 0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941, -+ 0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0, -+ 0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53, -+ 0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880, -+ 0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264, -+ 0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92, -+ 0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776, -+ 0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8, -+ 0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b, -+ 0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea, -+ 0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837, -+ 0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca, -+ 0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e, -+ 0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211, -+ 0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5, -+ 0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08, -+ 0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5, -+ 0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934, -+ 0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7, -+ 0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049, -+ 0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad, -+ 0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b, -+ 0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf, -+ 0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c, -+ 0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f, -+ 0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e, -+ 0xa1d67c91}, -+ {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9, -+ 0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de, -+ 0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94, -+ 0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0, -+ 0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a, -+ 0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924, -+ 0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052, -+ 0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c, -+ 0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6, -+ 0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2, -+ 0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8, -+ 0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f, -+ 0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d, -+ 0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273, -+ 0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30, -+ 0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e, -+ 0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7, -+ 0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980, -+ 0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca, -+ 0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8, -+ 0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62, -+ 0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c, -+ 0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c, -+ 0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032, -+ 0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798, -+ 0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d, -+ 0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07, -+ 0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630, -+ 0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389, -+ 0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7, -+ 0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4, -+ 0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca, -+ 0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55, -+ 0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662, -+ 0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828, -+ 0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c, -+ 0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6, -+ 0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98, -+ 0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3, -+ 0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d, -+ 0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037, -+ 0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913, -+ 0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759, -+ 0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e, -+ 0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1, -+ 0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf, -+ 0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c, -+ 0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2, -+ 0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b, -+ 0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c, -+ 0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276, -+ 0xa8ef40a1}, -+ {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e, -+ 0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8, -+ 0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819, -+ 0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f, -+ 0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d, -+ 0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756, -+ 0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0, -+ 0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb, -+ 0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9, -+ 0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f, -+ 0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e, -+ 0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8, -+ 0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835, -+ 0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e, -+ 0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62, -+ 0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749, -+ 0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b, -+ 0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d, -+ 0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc, -+ 0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80, -+ 0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2, -+ 0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599, -+ 0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05, -+ 0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e, -+ 0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c, -+ 0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e, -+ 0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef, -+ 0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359, -+ 0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b, -+ 0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0, -+ 0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc, -+ 0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7, -+ 0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f, -+ 0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189, -+ 0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568, -+ 0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e, -+ 0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c, -+ 0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27, -+ 0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794, -+ 0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf, -+ 0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d, -+ 0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db, -+ 0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a, -+ 0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c, -+ 0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544, -+ 0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f, -+ 0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013, -+ 0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38, -+ 0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea, -+ 0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c, -+ 0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd, -+ 0x356bacd8}}; -+ -+#endif -+ -+#endif -+ -+#if N == 6 -+ -+#if W == 8 -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370, -+ 0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d, -+ 0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69, -+ 0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426, -+ 0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3, -+ 0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f, -+ 0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c, -+ 0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490, -+ 0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155, -+ 0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a, -+ 0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e, -+ 0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603, -+ 0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349, -+ 0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5, -+ 0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50, -+ 0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc, -+ 0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b, -+ 0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76, -+ 0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862, -+ 0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9, -+ 0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c, -+ 0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0, -+ 0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937, -+ 0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b, -+ 0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e, -+ 0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e, -+ 0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a, -+ 0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357, -+ 0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0, -+ 0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c, -+ 0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9, -+ 0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165, -+ 0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766, -+ 0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b, -+ 0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f, -+ 0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030, -+ 0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5, -+ 0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59, -+ 0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63, -+ 0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf, -+ 0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a, -+ 0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845, -+ 0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51, -+ 0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c, -+ 0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f, -+ 0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3, -+ 0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46, -+ 0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea, -+ 0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d, -+ 0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60, -+ 0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74, -+ 0x8568a0a8}, -+ {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5, -+ 0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf, -+ 0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5, -+ 0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba, -+ 0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf, -+ 0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f, -+ 0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0, -+ 0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450, -+ 0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55, -+ 0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a, -+ 0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620, -+ 0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a, -+ 0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454, -+ 0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4, -+ 0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534, -+ 0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584, -+ 0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694, -+ 0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e, -+ 0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4, -+ 0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1, -+ 0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4, -+ 0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164, -+ 0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1, -+ 0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911, -+ 0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314, -+ 0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c, -+ 0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6, -+ 0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec, -+ 0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc, -+ 0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c, -+ 0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c, -+ 0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c, -+ 0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716, -+ 0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c, -+ 0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676, -+ 0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879, -+ 0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c, -+ 0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc, -+ 0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77, -+ 0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7, -+ 0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2, -+ 0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd, -+ 0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7, -+ 0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad, -+ 0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897, -+ 0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827, -+ 0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7, -+ 0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947, -+ 0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57, -+ 0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d, -+ 0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37, -+ 0x0d907052}, -+ {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d, -+ 0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89, -+ 0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31, -+ 0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81, -+ 0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e, -+ 0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0, -+ 0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f, -+ 0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291, -+ 0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e, -+ 0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e, -+ 0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936, -+ 0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2, -+ 0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13, -+ 0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d, -+ 0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f, -+ 0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1, -+ 0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a, -+ 0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae, -+ 0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516, -+ 0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f, -+ 0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20, -+ 0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe, -+ 0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28, -+ 0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6, -+ 0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419, -+ 0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5, -+ 0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d, -+ 0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889, -+ 0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412, -+ 0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c, -+ 0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e, -+ 0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0, -+ 0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02, -+ 0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986, -+ 0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e, -+ 0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e, -+ 0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221, -+ 0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf, -+ 0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913, -+ 0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d, -+ 0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622, -+ 0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592, -+ 0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a, -+ 0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae, -+ 0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c, -+ 0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82, -+ 0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20, -+ 0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe, -+ 0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025, -+ 0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1, -+ 0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719, -+ 0xfd1a6c8a}, -+ {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3, -+ 0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb, -+ 0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d, -+ 0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb, -+ 0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9, -+ 0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156, -+ 0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045, -+ 0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa, -+ 0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8, -+ 0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e, -+ 0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8, -+ 0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0, -+ 0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38, -+ 0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87, -+ 0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46, -+ 0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9, -+ 0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585, -+ 0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d, -+ 0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb, -+ 0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531, -+ 0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03, -+ 0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc, -+ 0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33, -+ 0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c, -+ 0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be, -+ 0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d, -+ 0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b, -+ 0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303, -+ 0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f, -+ 0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0, -+ 0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801, -+ 0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe, -+ 0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e, -+ 0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346, -+ 0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620, -+ 0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776, -+ 0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844, -+ 0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb, -+ 0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0, -+ 0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f, -+ 0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d, -+ 0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b, -+ 0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d, -+ 0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75, -+ 0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795, -+ 0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a, -+ 0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb, -+ 0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354, -+ 0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28, -+ 0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30, -+ 0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856, -+ 0x7895f01a}, -+ {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188, -+ 0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33, -+ 0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d, -+ 0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445, -+ 0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2, -+ 0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058, -+ 0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43, -+ 0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9, -+ 0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e, -+ 0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06, -+ 0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228, -+ 0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93, -+ 0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e, -+ 0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4, -+ 0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b, -+ 0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371, -+ 0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265, -+ 0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede, -+ 0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0, -+ 0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f, -+ 0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8, -+ 0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32, -+ 0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae, -+ 0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544, -+ 0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3, -+ 0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f, -+ 0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911, -+ 0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa, -+ 0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be, -+ 0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54, -+ 0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b, -+ 0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1, -+ 0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652, -+ 0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9, -+ 0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7, -+ 0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f, -+ 0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68, -+ 0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782, -+ 0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797, -+ 0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d, -+ 0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a, -+ 0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2, -+ 0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc, -+ 0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647, -+ 0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4, -+ 0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e, -+ 0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41, -+ 0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab, -+ 0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf, -+ 0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904, -+ 0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a, -+ 0x9239b848}, -+ {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad, -+ 0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0, -+ 0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40, -+ 0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b, -+ 0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d, -+ 0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b, -+ 0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb, -+ 0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d, -+ 0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b, -+ 0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0, -+ 0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840, -+ 0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d, -+ 0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b, -+ 0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d, -+ 0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6, -+ 0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0, -+ 0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580, -+ 0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd, -+ 0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d, -+ 0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b, -+ 0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d, -+ 0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b, -+ 0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6, -+ 0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0, -+ 0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6, -+ 0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c, -+ 0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c, -+ 0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461, -+ 0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841, -+ 0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317, -+ 0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac, -+ 0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa, -+ 0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7, -+ 0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba, -+ 0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a, -+ 0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161, -+ 0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777, -+ 0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21, -+ 0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a, -+ 0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc, -+ 0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da, -+ 0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1, -+ 0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01, -+ 0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c, -+ 0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241, -+ 0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917, -+ 0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac, -+ 0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa, -+ 0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da, -+ 0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397, -+ 0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537, -+ 0xeb36d3cc}, -+ {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b, -+ 0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059, -+ 0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251, -+ 0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d, -+ 0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9, -+ 0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c, -+ 0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41, -+ 0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4, -+ 0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10, -+ 0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c, -+ 0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54, -+ 0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476, -+ 0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8, -+ 0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d, -+ 0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92, -+ 0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307, -+ 0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad, -+ 0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f, -+ 0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87, -+ 0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17, -+ 0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3, -+ 0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46, -+ 0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197, -+ 0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02, -+ 0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6, -+ 0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e, -+ 0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96, -+ 0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4, -+ 0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e, -+ 0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b, -+ 0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934, -+ 0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1, -+ 0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7, -+ 0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5, -+ 0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd, -+ 0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1, -+ 0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475, -+ 0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0, -+ 0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155, -+ 0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0, -+ 0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304, -+ 0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348, -+ 0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140, -+ 0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862, -+ 0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14, -+ 0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181, -+ 0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e, -+ 0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab, -+ 0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01, -+ 0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523, -+ 0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b, -+ 0x38e5f3c5}, -+ {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06, -+ 0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad, -+ 0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509, -+ 0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba, -+ 0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414, -+ 0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3, -+ 0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733, -+ 0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994, -+ 0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a, -+ 0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889, -+ 0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d, -+ 0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386, -+ 0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621, -+ 0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886, -+ 0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e, -+ 0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389, -+ 0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f, -+ 0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294, -+ 0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30, -+ 0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3, -+ 0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d, -+ 0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba, -+ 0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a, -+ 0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad, -+ 0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03, -+ 0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2, -+ 0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306, -+ 0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad, -+ 0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b, -+ 0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc, -+ 0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914, -+ 0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3, -+ 0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435, -+ 0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e, -+ 0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a, -+ 0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589, -+ 0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27, -+ 0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080, -+ 0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21, -+ 0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586, -+ 0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28, -+ 0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b, -+ 0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f, -+ 0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94, -+ 0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12, -+ 0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5, -+ 0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d, -+ 0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba, -+ 0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c, -+ 0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7, -+ 0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103, -+ 0x3d3101a2}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000, -+ 0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000, -+ 0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000, -+ 0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000, -+ 0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000, -+ 0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000, -+ 0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000, -+ 0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000, -+ 0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000, -+ 0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000, -+ 0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000, -+ 0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000, -+ 0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000, -+ 0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000, -+ 0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000, -+ 0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000, -+ 0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000, -+ 0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000, -+ 0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000, -+ 0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000, -+ 0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000, -+ 0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000, -+ 0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000, -+ 0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000, -+ 0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000, -+ 0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000, -+ 0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000, -+ 0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000, -+ 0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000, -+ 0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000, -+ 0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000, -+ 0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000, -+ 0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000, -+ 0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000, -+ 0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000, -+ 0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000, -+ 0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000, -+ 0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000, -+ 0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000, -+ 0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000, -+ 0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000, -+ 0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000, -+ 0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000, -+ 0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000, -+ 0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000, -+ 0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000, -+ 0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000, -+ 0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000, -+ 0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000, -+ 0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000, -+ 0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000, -+ 0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000, -+ 0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000, -+ 0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000, -+ 0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000, -+ 0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000, -+ 0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000, -+ 0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000, -+ 0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000, -+ 0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000, -+ 0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000, -+ 0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000, -+ 0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000, -+ 0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000, -+ 0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000, -+ 0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000, -+ 0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000, -+ 0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000, -+ 0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000, -+ 0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000, -+ 0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000, -+ 0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000, -+ 0x3688267d00000000, 0x9718319500000000, 0x35af787600000000, -+ 0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000, -+ 0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000, -+ 0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000, -+ 0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000, -+ 0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000, -+ 0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000, -+ 0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000, -+ 0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000, -+ 0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000, -+ 0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000, -+ 0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000, -+ 0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000, -+ 0xa201313d00000000}, -+ {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000, -+ 0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000, -+ 0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000, -+ 0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000, -+ 0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000, -+ 0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000, -+ 0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000, -+ 0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000, -+ 0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000, -+ 0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000, -+ 0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000, -+ 0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000, -+ 0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000, -+ 0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000, -+ 0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000, -+ 0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000, -+ 0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000, -+ 0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000, -+ 0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000, -+ 0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000, -+ 0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000, -+ 0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000, -+ 0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000, -+ 0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000, -+ 0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000, -+ 0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000, -+ 0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000, -+ 0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000, -+ 0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000, -+ 0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000, -+ 0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000, -+ 0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000, -+ 0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000, -+ 0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000, -+ 0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000, -+ 0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000, -+ 0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000, -+ 0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000, -+ 0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000, -+ 0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000, -+ 0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000, -+ 0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000, -+ 0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000, -+ 0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000, -+ 0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000, -+ 0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000, -+ 0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000, -+ 0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000, -+ 0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000, -+ 0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000, -+ 0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000, -+ 0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000, -+ 0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000, -+ 0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000, -+ 0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000, -+ 0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000, -+ 0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000, -+ 0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000, -+ 0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000, -+ 0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000, -+ 0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000, -+ 0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000, -+ 0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000, -+ 0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000, -+ 0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000, -+ 0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000, -+ 0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000, -+ 0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000, -+ 0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000, -+ 0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000, -+ 0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000, -+ 0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000, -+ 0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000, -+ 0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000, -+ 0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000, -+ 0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000, -+ 0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000, -+ 0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000, -+ 0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000, -+ 0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000, -+ 0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000, -+ 0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000, -+ 0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000, -+ 0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000, -+ 0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000, -+ 0xc5f3e53800000000}, -+ {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000, -+ 0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000, -+ 0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000, -+ 0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000, -+ 0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000, -+ 0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000, -+ 0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000, -+ 0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000, -+ 0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000, -+ 0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000, -+ 0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000, -+ 0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000, -+ 0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000, -+ 0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000, -+ 0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000, -+ 0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000, -+ 0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000, -+ 0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000, -+ 0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000, -+ 0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000, -+ 0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000, -+ 0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000, -+ 0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000, -+ 0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000, -+ 0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000, -+ 0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000, -+ 0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000, -+ 0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000, -+ 0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000, -+ 0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000, -+ 0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000, -+ 0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000, -+ 0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000, -+ 0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000, -+ 0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000, -+ 0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000, -+ 0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000, -+ 0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000, -+ 0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000, -+ 0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000, -+ 0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000, -+ 0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000, -+ 0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000, -+ 0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000, -+ 0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000, -+ 0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000, -+ 0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000, -+ 0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000, -+ 0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000, -+ 0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000, -+ 0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000, -+ 0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000, -+ 0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000, -+ 0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000, -+ 0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000, -+ 0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000, -+ 0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000, -+ 0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000, -+ 0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000, -+ 0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000, -+ 0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000, -+ 0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000, -+ 0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000, -+ 0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000, -+ 0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000, -+ 0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000, -+ 0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000, -+ 0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000, -+ 0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000, -+ 0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000, -+ 0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000, -+ 0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000, -+ 0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000, -+ 0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000, -+ 0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000, -+ 0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000, -+ 0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000, -+ 0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000, -+ 0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000, -+ 0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000, -+ 0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000, -+ 0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000, -+ 0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000, -+ 0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000, -+ 0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000, -+ 0xccd336eb00000000}, -+ {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000, -+ 0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000, -+ 0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000, -+ 0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000, -+ 0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000, -+ 0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000, -+ 0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000, -+ 0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000, -+ 0xb249204500000000, 0xd071086f00000000, 0x7639701100000000, -+ 0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000, -+ 0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000, -+ 0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000, -+ 0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000, -+ 0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000, -+ 0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000, -+ 0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000, -+ 0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000, -+ 0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000, -+ 0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000, -+ 0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000, -+ 0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000, -+ 0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000, -+ 0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000, -+ 0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000, -+ 0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000, -+ 0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000, -+ 0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000, -+ 0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000, -+ 0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000, -+ 0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000, -+ 0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000, -+ 0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000, -+ 0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000, -+ 0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000, -+ 0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000, -+ 0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000, -+ 0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000, -+ 0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000, -+ 0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000, -+ 0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000, -+ 0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000, -+ 0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000, -+ 0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000, -+ 0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000, -+ 0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000, -+ 0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000, -+ 0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000, -+ 0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000, -+ 0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000, -+ 0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000, -+ 0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000, -+ 0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000, -+ 0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000, -+ 0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000, -+ 0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000, -+ 0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000, -+ 0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000, -+ 0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000, -+ 0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000, -+ 0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000, -+ 0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000, -+ 0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000, -+ 0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000, -+ 0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000, -+ 0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000, -+ 0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000, -+ 0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000, -+ 0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000, -+ 0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000, -+ 0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000, -+ 0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000, -+ 0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000, -+ 0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000, -+ 0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000, -+ 0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000, -+ 0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000, -+ 0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000, -+ 0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000, -+ 0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000, -+ 0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000, -+ 0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000, -+ 0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000, -+ 0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000, -+ 0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000, -+ 0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000, -+ 0x48b8399200000000}, -+ {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000, -+ 0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000, -+ 0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000, -+ 0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000, -+ 0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000, -+ 0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000, -+ 0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000, -+ 0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000, -+ 0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000, -+ 0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000, -+ 0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000, -+ 0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000, -+ 0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000, -+ 0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000, -+ 0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000, -+ 0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000, -+ 0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000, -+ 0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000, -+ 0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000, -+ 0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000, -+ 0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000, -+ 0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000, -+ 0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000, -+ 0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000, -+ 0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000, -+ 0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000, -+ 0xb521428400000000, 0xf909d42700000000, 0x762efede00000000, -+ 0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000, -+ 0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000, -+ 0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000, -+ 0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000, -+ 0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000, -+ 0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000, -+ 0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000, -+ 0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000, -+ 0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000, -+ 0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000, -+ 0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000, -+ 0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000, -+ 0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000, -+ 0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000, -+ 0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000, -+ 0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000, -+ 0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000, -+ 0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000, -+ 0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000, -+ 0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000, -+ 0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000, -+ 0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000, -+ 0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000, -+ 0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000, -+ 0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000, -+ 0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000, -+ 0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000, -+ 0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000, -+ 0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000, -+ 0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000, -+ 0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000, -+ 0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000, -+ 0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000, -+ 0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000, -+ 0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000, -+ 0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000, -+ 0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000, -+ 0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000, -+ 0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000, -+ 0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000, -+ 0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000, -+ 0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000, -+ 0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000, -+ 0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000, -+ 0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000, -+ 0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000, -+ 0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000, -+ 0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000, -+ 0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000, -+ 0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000, -+ 0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000, -+ 0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000, -+ 0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000, -+ 0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000, -+ 0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000, -+ 0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000, -+ 0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000, -+ 0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000, -+ 0x1af0957800000000}, -+ {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000, -+ 0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000, -+ 0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000, -+ 0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000, -+ 0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000, -+ 0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000, -+ 0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000, -+ 0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000, -+ 0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000, -+ 0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000, -+ 0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000, -+ 0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000, -+ 0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000, -+ 0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000, -+ 0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000, -+ 0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000, -+ 0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000, -+ 0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000, -+ 0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000, -+ 0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000, -+ 0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000, -+ 0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000, -+ 0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000, -+ 0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000, -+ 0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000, -+ 0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000, -+ 0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000, -+ 0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000, -+ 0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000, -+ 0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000, -+ 0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000, -+ 0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000, -+ 0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000, -+ 0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000, -+ 0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000, -+ 0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000, -+ 0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000, -+ 0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000, -+ 0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000, -+ 0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000, -+ 0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000, -+ 0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000, -+ 0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000, -+ 0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000, -+ 0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000, -+ 0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000, -+ 0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000, -+ 0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000, -+ 0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000, -+ 0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000, -+ 0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000, -+ 0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000, -+ 0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000, -+ 0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000, -+ 0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000, -+ 0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000, -+ 0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000, -+ 0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000, -+ 0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000, -+ 0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000, -+ 0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000, -+ 0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000, -+ 0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000, -+ 0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000, -+ 0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000, -+ 0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000, -+ 0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000, -+ 0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000, -+ 0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000, -+ 0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000, -+ 0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000, -+ 0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000, -+ 0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000, -+ 0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000, -+ 0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000, -+ 0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000, -+ 0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000, -+ 0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000, -+ 0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000, -+ 0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000, -+ 0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000, -+ 0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000, -+ 0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000, -+ 0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000, -+ 0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000, -+ 0x8a6c1afd00000000}, -+ {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000, -+ 0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000, -+ 0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000, -+ 0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000, -+ 0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000, -+ 0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000, -+ 0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000, -+ 0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000, -+ 0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000, -+ 0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000, -+ 0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000, -+ 0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000, -+ 0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000, -+ 0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000, -+ 0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000, -+ 0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000, -+ 0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000, -+ 0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000, -+ 0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000, -+ 0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000, -+ 0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000, -+ 0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000, -+ 0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000, -+ 0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000, -+ 0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000, -+ 0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000, -+ 0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000, -+ 0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000, -+ 0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000, -+ 0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000, -+ 0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000, -+ 0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000, -+ 0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000, -+ 0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000, -+ 0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000, -+ 0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000, -+ 0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000, -+ 0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000, -+ 0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000, -+ 0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000, -+ 0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000, -+ 0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000, -+ 0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000, -+ 0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000, -+ 0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000, -+ 0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000, -+ 0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000, -+ 0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000, -+ 0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000, -+ 0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000, -+ 0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000, -+ 0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000, -+ 0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000, -+ 0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000, -+ 0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000, -+ 0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000, -+ 0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000, -+ 0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000, -+ 0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000, -+ 0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000, -+ 0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000, -+ 0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000, -+ 0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000, -+ 0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000, -+ 0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000, -+ 0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000, -+ 0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000, -+ 0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000, -+ 0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000, -+ 0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000, -+ 0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000, -+ 0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000, -+ 0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000, -+ 0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000, -+ 0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000, -+ 0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000, -+ 0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000, -+ 0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000, -+ 0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000, -+ 0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000, -+ 0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000, -+ 0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000, -+ 0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000, -+ 0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000, -+ 0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000, -+ 0x5270900d00000000}, -+ {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000, -+ 0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000, -+ 0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000, -+ 0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000, -+ 0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000, -+ 0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000, -+ 0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000, -+ 0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000, -+ 0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000, -+ 0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000, -+ 0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000, -+ 0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000, -+ 0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000, -+ 0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000, -+ 0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000, -+ 0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000, -+ 0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000, -+ 0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000, -+ 0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000, -+ 0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000, -+ 0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000, -+ 0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000, -+ 0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000, -+ 0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000, -+ 0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000, -+ 0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000, -+ 0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000, -+ 0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000, -+ 0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000, -+ 0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000, -+ 0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000, -+ 0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000, -+ 0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000, -+ 0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000, -+ 0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000, -+ 0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000, -+ 0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000, -+ 0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000, -+ 0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000, -+ 0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000, -+ 0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000, -+ 0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000, -+ 0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000, -+ 0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000, -+ 0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000, -+ 0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000, -+ 0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000, -+ 0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000, -+ 0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000, -+ 0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000, -+ 0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000, -+ 0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000, -+ 0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000, -+ 0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000, -+ 0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000, -+ 0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000, -+ 0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000, -+ 0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000, -+ 0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000, -+ 0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000, -+ 0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000, -+ 0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000, -+ 0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000, -+ 0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000, -+ 0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000, -+ 0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000, -+ 0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000, -+ 0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000, -+ 0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000, -+ 0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000, -+ 0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000, -+ 0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000, -+ 0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000, -+ 0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000, -+ 0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000, -+ 0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000, -+ 0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000, -+ 0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000, -+ 0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000, -+ 0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000, -+ 0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000, -+ 0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000, -+ 0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000, -+ 0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000, -+ 0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000, -+ 0xa8a0688500000000}}; -+ -+#else /* W == 4 */ -+ -+local const z_crc_t FAR crc_braid_table[][256] = { -+ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f, -+ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999, -+ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee, -+ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615, -+ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383, -+ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb, -+ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275, -+ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d, -+ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b, -+ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460, -+ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317, -+ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1, -+ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5, -+ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd, -+ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04, -+ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c, -+ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7, -+ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11, -+ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66, -+ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7, -+ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871, -+ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309, -+ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd, -+ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85, -+ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913, -+ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d, -+ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a, -+ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc, -+ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57, -+ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f, -+ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6, -+ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e, -+ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f, -+ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289, -+ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe, -+ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05, -+ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893, -+ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb, -+ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0, -+ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8, -+ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e, -+ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5, -+ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2, -+ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574, -+ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5, -+ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add, -+ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114, -+ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c, -+ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7, -+ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701, -+ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076, -+ 0x09cd8551}, -+ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193, -+ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2, -+ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c, -+ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71, -+ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a, -+ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d, -+ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71, -+ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436, -+ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d, -+ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000, -+ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae, -+ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf, -+ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930, -+ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277, -+ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff, -+ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8, -+ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef, -+ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e, -+ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20, -+ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95, -+ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e, -+ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9, -+ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d, -+ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a, -+ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151, -+ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4, -+ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a, -+ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b, -+ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c, -+ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b, -+ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3, -+ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4, -+ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b, -+ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a, -+ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4, -+ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189, -+ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92, -+ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5, -+ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9, -+ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe, -+ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5, -+ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8, -+ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66, -+ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707, -+ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8, -+ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f, -+ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707, -+ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40, -+ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017, -+ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876, -+ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8, -+ 0x7bc97a0c}, -+ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300, -+ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0, -+ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80, -+ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701, -+ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41, -+ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81, -+ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43, -+ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83, -+ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3, -+ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42, -+ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202, -+ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2, -+ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7, -+ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407, -+ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47, -+ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87, -+ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86, -+ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46, -+ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506, -+ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44, -+ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704, -+ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4, -+ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5, -+ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505, -+ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45, -+ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f, -+ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f, -+ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f, -+ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e, -+ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e, -+ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e, -+ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce, -+ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c, -+ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc, -+ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c, -+ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d, -+ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d, -+ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d, -+ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88, -+ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48, -+ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708, -+ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89, -+ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9, -+ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309, -+ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb, -+ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b, -+ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b, -+ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b, -+ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a, -+ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a, -+ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a, -+ 0x7851a2ca}, -+ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb, -+ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8, -+ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0, -+ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f, -+ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a, -+ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf, -+ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5, -+ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380, -+ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815, -+ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa, -+ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2, -+ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1, -+ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1, -+ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4, -+ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa, -+ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df, -+ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6, -+ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5, -+ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad, -+ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca, -+ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f, -+ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a, -+ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8, -+ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d, -+ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708, -+ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d, -+ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865, -+ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636, -+ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f, -+ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a, -+ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744, -+ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061, -+ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0, -+ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293, -+ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb, -+ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874, -+ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1, -+ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4, -+ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f, -+ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a, -+ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f, -+ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120, -+ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778, -+ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b, -+ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a, -+ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af, -+ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81, -+ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4, -+ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd, -+ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e, -+ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6, -+ 0x566b6848}}; -+ -+local const z_word_t FAR crc_braid_big_table[][256] = { -+ {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912, -+ 0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba, -+ 0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3, -+ 0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30, -+ 0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e, -+ 0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3, -+ 0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73, -+ 0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe, -+ 0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0, -+ 0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643, -+ 0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a, -+ 0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082, -+ 0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4, -+ 0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279, -+ 0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735, -+ 0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8, -+ 0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad, -+ 0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05, -+ 0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c, -+ 0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718, -+ 0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46, -+ 0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb, -+ 0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc, -+ 0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41, -+ 0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f, -+ 0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad, -+ 0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4, -+ 0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c, -+ 0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779, -+ 0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4, -+ 0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8, -+ 0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235, -+ 0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7, -+ 0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f, -+ 0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476, -+ 0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195, -+ 0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb, -+ 0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46, -+ 0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622, -+ 0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af, -+ 0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1, -+ 0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12, -+ 0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b, -+ 0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3, -+ 0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51, -+ 0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc, -+ 0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90, -+ 0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d, -+ 0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708, -+ 0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0, -+ 0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9, -+ 0x48686b56}, -+ {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c, -+ 0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae, -+ 0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb, -+ 0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90, -+ 0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410, -+ 0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b, -+ 0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6, -+ 0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed, -+ 0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d, -+ 0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036, -+ 0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953, -+ 0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1, -+ 0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca, -+ 0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781, -+ 0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d, -+ 0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416, -+ 0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f, -+ 0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd, -+ 0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8, -+ 0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b, -+ 0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb, -+ 0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0, -+ 0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5, -+ 0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e, -+ 0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e, -+ 0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558, -+ 0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d, -+ 0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf, -+ 0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6, -+ 0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad, -+ 0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971, -+ 0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a, -+ 0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b, -+ 0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969, -+ 0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c, -+ 0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57, -+ 0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7, -+ 0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c, -+ 0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab, -+ 0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0, -+ 0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160, -+ 0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b, -+ 0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e, -+ 0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac, -+ 0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d, -+ 0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546, -+ 0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a, -+ 0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1, -+ 0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8, -+ 0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a, -+ 0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f, -+ 0xcaa25178}, -+ {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00, -+ 0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b, -+ 0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed, -+ 0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777, -+ 0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01, -+ 0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a, -+ 0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef, -+ 0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74, -+ 0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002, -+ 0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498, -+ 0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee, -+ 0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75, -+ 0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05, -+ 0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e, -+ 0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8, -+ 0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73, -+ 0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404, -+ 0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f, -+ 0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9, -+ 0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71, -+ 0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607, -+ 0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c, -+ 0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb, -+ 0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470, -+ 0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806, -+ 0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790, -+ 0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6, -+ 0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d, -+ 0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a, -+ 0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991, -+ 0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7, -+ 0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c, -+ 0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09, -+ 0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92, -+ 0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4, -+ 0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e, -+ 0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08, -+ 0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593, -+ 0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3, -+ 0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778, -+ 0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e, -+ 0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94, -+ 0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2, -+ 0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079, -+ 0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c, -+ 0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497, -+ 0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1, -+ 0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a, -+ 0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d, -+ 0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396, -+ 0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0, -+ 0x0c7ac97b}, -+ {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669, -+ 0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853, -+ 0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062, -+ 0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527, -+ 0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad, -+ 0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545, -+ 0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27, -+ 0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf, -+ 0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45, -+ 0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800, -+ 0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031, -+ 0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b, -+ 0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26, -+ 0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce, -+ 0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d, -+ 0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5, -+ 0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130, -+ 0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a, -+ 0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b, -+ 0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480, -+ 0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a, -+ 0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2, -+ 0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e, -+ 0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996, -+ 0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c, -+ 0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc, -+ 0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd, -+ 0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7, -+ 0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232, -+ 0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da, -+ 0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439, -+ 0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1, -+ 0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da, -+ 0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0, -+ 0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1, -+ 0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94, -+ 0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e, -+ 0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6, -+ 0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2, -+ 0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a, -+ 0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0, -+ 0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95, -+ 0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4, -+ 0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e, -+ 0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395, -+ 0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d, -+ 0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e, -+ 0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676, -+ 0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83, -+ 0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9, -+ 0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888, -+ 0x5185cd09}}; -+ -+#endif -+ -+#endif -+ -+#endif -+ -+local const z_crc_t FAR x2n_table[] = { -+ 0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000, -+ 0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467, -+ 0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0, -+ 0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169, -+ 0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37, -+ 0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a, -+ 0xc40ba6d0, 0xc4e22c3c}; -diff --git a/src/3rdparty/zlib/src/deflate.c b/src/3rdparty/zlib/src/deflate.c -index 1ec761448d..799fb93cc0 100644 ---- a/src/3rdparty/zlib/src/deflate.c -+++ b/src/3rdparty/zlib/src/deflate.c -@@ -1,5 +1,5 @@ - /* deflate.c -- compress data using the deflation algorithm -- * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler -+ * Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -52,7 +52,7 @@ - #include "deflate.h" - - const char deflate_copyright[] = -- " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler "; -+ " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler "; - /* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot -@@ -190,8 +190,11 @@ local const config configuration_table[10] = { - * prev[] will be initialized on the fly. - */ - #define CLEAR_HASH(s) \ -- s->head[s->hash_size-1] = NIL; \ -- zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); -+ do { \ -+ s->head[s->hash_size-1] = NIL; \ -+ zmemzero((Bytef *)s->head, \ -+ (unsigned)(s->hash_size-1)*sizeof(*s->head)); \ -+ } while (0) - - /* =========================================================================== - * Slide the hash table when sliding the window down (could be avoided with 32 -@@ -252,11 +255,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - int wrap = 1; - static const char my_version[] = ZLIB_VERSION; - -- ushf *overlay; -- /* We overlay pending_buf and d_buf+l_buf. This works since the average -- * output size for (length,distance) codes is <= 24 bits. -- */ -- - if (version == Z_NULL || version[0] != my_version[0] || - stream_size != sizeof(z_stream)) { - return Z_VERSION_ERROR; -@@ -326,9 +324,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - - s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - -- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); -- s->pending_buf = (uchf *) overlay; -- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); -+ /* We overlay pending_buf and sym_buf. This works since the average size -+ * for length/distance pairs over any compressed block is assured to be 31 -+ * bits or less. -+ * -+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5 -+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are -+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest -+ * possible fixed-codes length/distance pair is then 31 bits total. -+ * -+ * sym_buf starts one-fourth of the way into pending_buf. So there are -+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol -+ * in sym_buf is three bytes -- two for the distance and one for the -+ * literal/length. As each symbol is consumed, the pointer to the next -+ * sym_buf value to read moves forward three bytes. From that symbol, up to -+ * 31 bits are written to pending_buf. The closest the written pending_buf -+ * bits gets to the next sym_buf symbol to read is just before the last -+ * code is written. At that time, 31*(n-2) bits have been written, just -+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at -+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1 -+ * symbols are written.) The closest the writing gets to what is unread is -+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and -+ * can range from 128 to 32768. -+ * -+ * Therefore, at a minimum, there are 142 bits of space between what is -+ * written and what is read in the overlain buffers, so the symbols cannot -+ * be overwritten by the compressed data. That space is actually 139 bits, -+ * due to the three-bit fixed-code block header. -+ * -+ * That covers the case where either Z_FIXED is specified, forcing fixed -+ * codes, or when the use of fixed codes is chosen, because that choice -+ * results in a smaller compressed block than dynamic codes. That latter -+ * condition then assures that the above analysis also covers all dynamic -+ * blocks. A dynamic-code block will only be chosen to be emitted if it has -+ * fewer bits than a fixed-code block would for the same set of symbols. -+ * Therefore its average symbol length is assured to be less than 31. So -+ * the compressed data for a dynamic block also cannot overwrite the -+ * symbols from which it is being constructed. -+ */ -+ -+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4); -+ s->pending_buf_size = (ulg)s->lit_bufsize * 4; - - if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || - s->pending_buf == Z_NULL) { -@@ -337,8 +373,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - deflateEnd (strm); - return Z_MEM_ERROR; - } -- s->d_buf = overlay + s->lit_bufsize/sizeof(ush); -- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; -+ s->sym_buf = s->pending_buf + s->lit_bufsize; -+ s->sym_end = (s->lit_bufsize - 1) * 3; -+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K -+ * on 16 bit machines and because stored blocks are restricted to -+ * 64K-1 bytes. -+ */ - - s->level = level; - s->strategy = strategy; -@@ -488,13 +528,13 @@ int ZEXPORT deflateResetKeep (strm) - #ifdef GZIP - s->wrap == 2 ? GZIP_STATE : - #endif -- s->wrap ? INIT_STATE : BUSY_STATE; -+ INIT_STATE; - strm->adler = - #ifdef GZIP - s->wrap == 2 ? crc32(0L, Z_NULL, 0) : - #endif - adler32(0L, Z_NULL, 0); -- s->last_flush = Z_NO_FLUSH; -+ s->last_flush = -2; - - _tr_init(s); - -@@ -549,7 +589,8 @@ int ZEXPORT deflatePrime (strm, bits, value) - - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - s = strm->state; -- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) -+ if (bits < 0 || bits > 16 || -+ s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3)) - return Z_BUF_ERROR; - do { - put = Buf_size - s->bi_valid; -@@ -587,12 +628,12 @@ int ZEXPORT deflateParams(strm, level, strategy) - func = configuration_table[s->level].func; - - if ((strategy != s->strategy || func != configuration_table[level].func) && -- s->high_water) { -+ s->last_flush != -2) { - /* Flush the last buffer: */ - int err = deflate(strm, Z_BLOCK); - if (err == Z_STREAM_ERROR) - return err; -- if (strm->avail_out == 0) -+ if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead) - return Z_BUF_ERROR; - } - if (s->level != level) { -@@ -811,6 +852,8 @@ int ZEXPORT deflate (strm, flush) - } - - /* Write the header */ -+ if (s->status == INIT_STATE && s->wrap == 0) -+ s->status = BUSY_STATE; - if (s->status == INIT_STATE) { - /* zlib header */ - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; -@@ -1108,7 +1151,6 @@ int ZEXPORT deflateCopy (dest, source) - #else - deflate_state *ds; - deflate_state *ss; -- ushf *overlay; - - - if (deflateStateCheck(source) || dest == Z_NULL) { -@@ -1128,8 +1170,7 @@ int ZEXPORT deflateCopy (dest, source) - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); - ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); - ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); -- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); -- ds->pending_buf = (uchf *) overlay; -+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4); - - if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || - ds->pending_buf == Z_NULL) { -@@ -1143,8 +1184,7 @@ int ZEXPORT deflateCopy (dest, source) - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); - - ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); -- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); -- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; -+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize; - - ds->l_desc.dyn_tree = ds->dyn_ltree; - ds->d_desc.dyn_tree = ds->dyn_dtree; -@@ -1513,6 +1553,8 @@ local void fill_window(s) - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; -+ if (s->insert > s->strstart) -+ s->insert = s->strstart; - slide_hash(s); - more += wsize; - } -@@ -1742,6 +1784,7 @@ local block_state deflate_stored(s, flush) - s->matches = 2; /* clear hash */ - zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size); - s->strstart = s->w_size; -+ s->insert = s->strstart; - } - else { - if (s->window_size - s->strstart <= used) { -@@ -1750,12 +1793,14 @@ local block_state deflate_stored(s, flush) - zmemcpy(s->window, s->window + s->w_size, s->strstart); - if (s->matches < 2) - s->matches++; /* add a pending slide_hash() */ -+ if (s->insert > s->strstart) -+ s->insert = s->strstart; - } - zmemcpy(s->window + s->strstart, s->strm->next_in - used, used); - s->strstart += used; -+ s->insert += MIN(used, s->w_size - s->insert); - } - s->block_start = s->strstart; -- s->insert += MIN(used, s->w_size - s->insert); - } - if (s->high_water < s->strstart) - s->high_water = s->strstart; -@@ -1770,7 +1815,7 @@ local block_state deflate_stored(s, flush) - return block_done; - - /* Fill the window with any remaining input. */ -- have = s->window_size - s->strstart - 1; -+ have = s->window_size - s->strstart; - if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { - /* Slide the window down. */ - s->block_start -= s->w_size; -@@ -1779,12 +1824,15 @@ local block_state deflate_stored(s, flush) - if (s->matches < 2) - s->matches++; /* add a pending slide_hash() */ - have += s->w_size; /* more space now */ -+ if (s->insert > s->strstart) -+ s->insert = s->strstart; - } - if (have > s->strm->avail_in) - have = s->strm->avail_in; - if (have) { - read_buf(s->strm, s->window + s->strstart, have); - s->strstart += have; -+ s->insert += MIN(have, s->w_size - s->insert); - } - if (s->high_water < s->strstart) - s->high_water = s->strstart; -@@ -1912,7 +1960,7 @@ local block_state deflate_fast(s, flush) - FLUSH_BLOCK(s, 1); - return finish_done; - } -- if (s->last_lit) -+ if (s->sym_next) - FLUSH_BLOCK(s, 0); - return block_done; - } -@@ -2043,7 +2091,7 @@ local block_state deflate_slow(s, flush) - FLUSH_BLOCK(s, 1); - return finish_done; - } -- if (s->last_lit) -+ if (s->sym_next) - FLUSH_BLOCK(s, 0); - return block_done; - } -@@ -2118,7 +2166,7 @@ local block_state deflate_rle(s, flush) - FLUSH_BLOCK(s, 1); - return finish_done; - } -- if (s->last_lit) -+ if (s->sym_next) - FLUSH_BLOCK(s, 0); - return block_done; - } -@@ -2157,7 +2205,7 @@ local block_state deflate_huff(s, flush) - FLUSH_BLOCK(s, 1); - return finish_done; - } -- if (s->last_lit) -+ if (s->sym_next) - FLUSH_BLOCK(s, 0); - return block_done; - } -diff --git a/src/3rdparty/zlib/src/deflate.h b/src/3rdparty/zlib/src/deflate.h -index 23ecdd312b..17c226113b 100644 ---- a/src/3rdparty/zlib/src/deflate.h -+++ b/src/3rdparty/zlib/src/deflate.h -@@ -1,5 +1,5 @@ - /* deflate.h -- internal compression state -- * Copyright (C) 1995-2016 Jean-loup Gailly -+ * Copyright (C) 1995-2018 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -217,7 +217,7 @@ typedef struct internal_state { - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - -- uchf *l_buf; /* buffer for literals or lengths */ -+ uchf *sym_buf; /* buffer for distances and literals/lengths */ - - uInt lit_bufsize; - /* Size of match buffer for literals/lengths. There are 4 reasons for -@@ -239,13 +239,8 @@ typedef struct internal_state { - * - I can't count above 4 - */ - -- uInt last_lit; /* running index in l_buf */ -- -- ushf *d_buf; -- /* Buffer for distances. To simplify the code, d_buf and l_buf have -- * the same number of elements. To use different lengths, an extra flag -- * array would be necessary. -- */ -+ uInt sym_next; /* running index in sym_buf */ -+ uInt sym_end; /* symbol table full when sym_next reaches this */ - - ulg opt_len; /* bit length of current block with optimal trees */ - ulg static_len; /* bit length of current block with static trees */ -@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, - - # define _tr_tally_lit(s, c, flush) \ - { uch cc = (c); \ -- s->d_buf[s->last_lit] = 0; \ -- s->l_buf[s->last_lit++] = cc; \ -+ s->sym_buf[s->sym_next++] = 0; \ -+ s->sym_buf[s->sym_next++] = 0; \ -+ s->sym_buf[s->sym_next++] = cc; \ - s->dyn_ltree[cc].Freq++; \ -- flush = (s->last_lit == s->lit_bufsize-1); \ -+ flush = (s->sym_next == s->sym_end); \ - } - # define _tr_tally_dist(s, distance, length, flush) \ - { uch len = (uch)(length); \ - ush dist = (ush)(distance); \ -- s->d_buf[s->last_lit] = dist; \ -- s->l_buf[s->last_lit++] = len; \ -+ s->sym_buf[s->sym_next++] = dist; \ -+ s->sym_buf[s->sym_next++] = dist >> 8; \ -+ s->sym_buf[s->sym_next++] = len; \ - dist--; \ - s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ - s->dyn_dtree[d_code(dist)].Freq++; \ -- flush = (s->last_lit == s->lit_bufsize-1); \ -+ flush = (s->sym_next == s->sym_end); \ - } - #else - # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) -diff --git a/src/3rdparty/zlib/src/gzguts.h b/src/3rdparty/zlib/src/gzguts.h -index 20de7cb4ce..3ec32af25f 100644 ---- a/src/3rdparty/zlib/src/gzguts.h -+++ b/src/3rdparty/zlib/src/gzguts.h -@@ -1,5 +1,5 @@ - /* gzguts.h -- zlib internal header definitions for gz* operations -- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler -+ * Copyright (C) 2004-2019 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -10,15 +10,8 @@ - # ifndef _CRT_NONSTDC_NO_DEPRECATE - # define _CRT_NONSTDC_NO_DEPRECATE - # endif --#endif -- --#ifdef _LARGEFILE64_SOURCE --# ifndef _LARGEFILE_SOURCE --# define _LARGEFILE_SOURCE 1 --# endif --# ifdef _FILE_OFFSET_BITS --# undef _FILE_OFFSET_BITS --# endif -+// disable warnings like '=': conversion from 'size_t' to 'unsigned int', possible loss of data -+# pragma warning(disable: 4267; disable: 4244) - #endif - - #ifndef QT_BOOTSTRAPPED -@@ -29,6 +22,14 @@ - #define HAVE_HIDDEN - #endif - -+#ifdef _LARGEFILE64_SOURCE -+# ifndef _LARGEFILE_SOURCE -+# define _LARGEFILE_SOURCE 1 -+# endif -+# ifdef _FILE_OFFSET_BITS -+# undef _FILE_OFFSET_BITS -+# endif -+#endif - - #ifdef HAVE_HIDDEN - # define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -@@ -57,7 +58,7 @@ - # include <io.h> - #endif - --#if defined(_WIN32) || defined(__CYGWIN__) -+#if defined(_WIN32) - # define WIDECHAR - #endif - -@@ -208,6 +209,7 @@ typedef struct { - /* just for writing */ - int level; /* compression level */ - int strategy; /* compression strategy */ -+ int reset; /* true if a reset is pending after a Z_FINISH */ - /* seek request */ - z_off64_t skip; /* amount to skip (already rewound if backwards) */ - int seek; /* true if seek request pending */ -diff --git a/src/3rdparty/zlib/src/gzlib.c b/src/3rdparty/zlib/src/gzlib.c -index 4105e6aff9..dddaf26873 100644 ---- a/src/3rdparty/zlib/src/gzlib.c -+++ b/src/3rdparty/zlib/src/gzlib.c -@@ -1,11 +1,11 @@ - /* gzlib.c -- zlib functions common to reading and writing gzip files -- * Copyright (C) 2004-2017 Mark Adler -+ * Copyright (C) 2004-2019 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - - #include "gzguts.h" - --#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__) -+#if defined(_WIN32) && !defined(__BORLANDC__) - # define LSEEK _lseeki64 - #else - #if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 -@@ -81,6 +81,8 @@ local void gz_reset(state) - state->past = 0; /* have not read past end yet */ - state->how = LOOK; /* look for gzip header */ - } -+ else /* for writing ... */ -+ state->reset = 0; /* no deflateReset pending */ - state->seek = 0; /* no seek request pending */ - gz_error(state, Z_OK, NULL); /* clear error */ - state->x.pos = 0; /* no uncompressed data yet */ -@@ -397,7 +399,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence) - /* if within raw area while reading, just go there */ - if (state->mode == GZ_READ && state->how == COPY && - state->x.pos + offset >= 0) { -- ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); -+ ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR); - if (ret == -1) - return -1; - state->x.have = 0; -diff --git a/src/3rdparty/zlib/src/gzread.c b/src/3rdparty/zlib/src/gzread.c -index 956b91ea7d..884c9bfe4c 100644 ---- a/src/3rdparty/zlib/src/gzread.c -+++ b/src/3rdparty/zlib/src/gzread.c -@@ -1,5 +1,5 @@ - /* gzread.c -- zlib functions for reading gzip files -- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler -+ * Copyright (C) 2004-2017 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -314,9 +314,9 @@ local z_size_t gz_read(state, buf, len) - got = 0; - do { - /* set n to the maximum amount of len that fits in an unsigned int */ -- n = -1; -+ n = (unsigned)-1; - if (n > len) -- n = len; -+ n = (unsigned)len; - - /* first just try copying data from the output buffer */ - if (state->x.have) { -@@ -397,7 +397,7 @@ int ZEXPORT gzread(file, buf, len) - } - - /* read len or fewer bytes to buf */ -- len = gz_read(state, buf, len); -+ len = (unsigned)gz_read(state, buf, len); - - /* check for an error */ - if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) -@@ -447,7 +447,6 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file) - int ZEXPORT gzgetc(file) - gzFile file; - { -- int ret; - unsigned char buf[1]; - gz_statep state; - -@@ -469,8 +468,7 @@ int ZEXPORT gzgetc(file) - } - - /* nothing there -- try gz_read() */ -- ret = gz_read(state, buf, 1); -- return ret < 1 ? -1 : buf[0]; -+ return gz_read(state, buf, 1) < 1 ? -1 : buf[0]; - } - - int ZEXPORT gzgetc_(file) -diff --git a/src/3rdparty/zlib/src/gzwrite.c b/src/3rdparty/zlib/src/gzwrite.c -index c7b5651d70..a8ffc8f53d 100644 ---- a/src/3rdparty/zlib/src/gzwrite.c -+++ b/src/3rdparty/zlib/src/gzwrite.c -@@ -1,5 +1,5 @@ - /* gzwrite.c -- zlib functions for writing gzip files -- * Copyright (C) 2004-2017 Mark Adler -+ * Copyright (C) 2004-2019 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -97,6 +97,15 @@ local int gz_comp(state, flush) - return 0; - } - -+ /* check for a pending reset */ -+ if (state->reset) { -+ /* don't start a new gzip member unless there is data to write */ -+ if (strm->avail_in == 0) -+ return 0; -+ deflateReset(strm); -+ state->reset = 0; -+ } -+ - /* run deflate() on provided input until it produces no more output */ - ret = Z_OK; - do { -@@ -134,7 +143,7 @@ local int gz_comp(state, flush) - - /* if that completed a deflate stream, allow another to start */ - if (flush == Z_FINISH) -- deflateReset(strm); -+ state->reset = 1; - - /* all done, no errors */ - return 0; -@@ -209,7 +218,7 @@ local z_size_t gz_write(state, buf, len) - state->in); - copy = state->size - have; - if (copy > len) -- copy = len; -+ copy = (unsigned)len; - memcpy(state->in + have, buf, copy); - state->strm.avail_in += copy; - state->x.pos += copy; -@@ -229,7 +238,7 @@ local z_size_t gz_write(state, buf, len) - do { - unsigned n = (unsigned)-1; - if (n > len) -- n = len; -+ n = (unsigned)len; - state->strm.avail_in = n; - state->x.pos += n; - if (gz_comp(state, Z_NO_FLUSH) == -1) -@@ -349,12 +358,11 @@ int ZEXPORT gzputc(file, c) - } - - /* -- see zlib.h -- */ --int ZEXPORT gzputs(file, str) -+int ZEXPORT gzputs(file, s) - gzFile file; -- const char *str; -+ const char *s; - { -- int ret; -- z_size_t len; -+ z_size_t len, put; - gz_statep state; - - /* get internal structure */ -@@ -367,9 +375,13 @@ int ZEXPORT gzputs(file, str) - return -1; - - /* write string */ -- len = strlen(str); -- ret = gz_write(state, str, len); -- return ret == 0 && len != 0 ? -1 : ret; -+ len = strlen(s); -+ if ((int)len < 0 || (unsigned)len != len) { -+ gz_error(state, Z_STREAM_ERROR, "string length does not fit in int"); -+ return -1; -+ } -+ put = gz_write(state, s, len); -+ return put < len ? -1 : (int)len; - } - - #if defined(STDC) || defined(Z_HAVE_STDARG_H) -@@ -441,7 +453,7 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) - strm->avail_in = state->size; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->err; -- memcpy(state->in, state->in + state->size, left); -+ memmove(state->in, state->in + state->size, left); - strm->next_in = state->in; - strm->avail_in = left; - } -@@ -540,7 +552,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - strm->avail_in = state->size; - if (gz_comp(state, Z_NO_FLUSH) == -1) - return state->err; -- memcpy(state->in, state->in + state->size, left); -+ memmove(state->in, state->in + state->size, left); - strm->next_in = state->in; - strm->avail_in = left; - } -diff --git a/src/3rdparty/zlib/src/infback.c b/src/3rdparty/zlib/src/infback.c -index 59679ecbfc..a390c58e81 100644 ---- a/src/3rdparty/zlib/src/infback.c -+++ b/src/3rdparty/zlib/src/infback.c -@@ -1,5 +1,5 @@ - /* infback.c -- inflate using a call-back interface -- * Copyright (C) 1995-2016 Mark Adler -+ * Copyright (C) 1995-2022 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -477,6 +477,7 @@ void FAR *out_desc; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN; -+ /* fallthrough */ - - case LEN: - /* use inflate_fast() if we have enough input and output */ -diff --git a/src/3rdparty/zlib/src/inffast.c b/src/3rdparty/zlib/src/inffast.c -index 0dbd1dbc09..1fec7f363f 100644 ---- a/src/3rdparty/zlib/src/inffast.c -+++ b/src/3rdparty/zlib/src/inffast.c -@@ -70,7 +70,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ - code const FAR *dcode; /* local strm->distcode */ - unsigned lmask; /* mask for first level of length codes */ - unsigned dmask; /* mask for first level of distance codes */ -- code here; /* retrieved table entry */ -+ code const *here; /* retrieved table entry */ - unsigned op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - unsigned len; /* match length, unused bytes */ -@@ -107,20 +107,20 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ - hold += (unsigned long)(*in++) << bits; - bits += 8; - } -- here = lcode[hold & lmask]; -+ here = lcode + (hold & lmask); - dolen: -- op = (unsigned)(here.bits); -+ op = (unsigned)(here->bits); - hold >>= op; - bits -= op; -- op = (unsigned)(here.op); -+ op = (unsigned)(here->op); - if (op == 0) { /* literal */ -- Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? -+ Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ? - "inflate: literal '%c'\n" : -- "inflate: literal 0x%02x\n", here.val)); -- *out++ = (unsigned char)(here.val); -+ "inflate: literal 0x%02x\n", here->val)); -+ *out++ = (unsigned char)(here->val); - } - else if (op & 16) { /* length base */ -- len = (unsigned)(here.val); -+ len = (unsigned)(here->val); - op &= 15; /* number of extra bits */ - if (op) { - if (bits < op) { -@@ -138,14 +138,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ - hold += (unsigned long)(*in++) << bits; - bits += 8; - } -- here = dcode[hold & dmask]; -+ here = dcode + (hold & dmask); - dodist: -- op = (unsigned)(here.bits); -+ op = (unsigned)(here->bits); - hold >>= op; - bits -= op; -- op = (unsigned)(here.op); -+ op = (unsigned)(here->op); - if (op & 16) { /* distance base */ -- dist = (unsigned)(here.val); -+ dist = (unsigned)(here->val); - op &= 15; /* number of extra bits */ - if (bits < op) { - hold += (unsigned long)(*in++) << bits; -@@ -264,7 +264,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ - } - } - else if ((op & 64) == 0) { /* 2nd level distance code */ -- here = dcode[here.val + (hold & ((1U << op) - 1))]; -+ here = dcode + here->val + (hold & ((1U << op) - 1)); - goto dodist; - } - else { -@@ -274,7 +274,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */ - } - } - else if ((op & 64) == 0) { /* 2nd level length code */ -- here = lcode[here.val + (hold & ((1U << op) - 1))]; -+ here = lcode + here->val + (hold & ((1U << op) - 1)); - goto dolen; - } - else if (op & 32) { /* end-of-block */ -diff --git a/src/3rdparty/zlib/src/inflate.c b/src/3rdparty/zlib/src/inflate.c -index ac333e8c2e..7be8c63662 100644 ---- a/src/3rdparty/zlib/src/inflate.c -+++ b/src/3rdparty/zlib/src/inflate.c -@@ -1,5 +1,5 @@ - /* inflate.c -- zlib decompression -- * Copyright (C) 1995-2016 Mark Adler -+ * Copyright (C) 1995-2022 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -130,6 +130,7 @@ z_streamp strm; - state->mode = HEAD; - state->last = 0; - state->havedict = 0; -+ state->flags = -1; - state->dmax = 32768U; - state->head = Z_NULL; - state->hold = 0; -@@ -447,10 +448,10 @@ unsigned copy; - - /* check function to use adler32() for zlib or crc32() for gzip */ - #ifdef GUNZIP --# define UPDATE(check, buf, len) \ -+# define UPDATE_CHECK(check, buf, len) \ - (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) - #else --# define UPDATE(check, buf, len) adler32(check, buf, len) -+# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len) - #endif - - /* check macros for header crc */ -@@ -670,7 +671,6 @@ int flush; - state->mode = FLAGS; - break; - } -- state->flags = 0; /* expect zlib header */ - if (state->head != Z_NULL) - state->head->done = -1; - if (!(state->wrap & 1) || /* check if zlib header allowed */ -@@ -697,6 +697,7 @@ int flush; - break; - } - state->dmax = 1U << len; -+ state->flags = 0; /* indicate zlib header */ - Tracev((stderr, "inflate: zlib header ok\n")); - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = hold & 0x200 ? DICTID : TYPE; -@@ -722,6 +723,7 @@ int flush; - CRC2(state->check, hold); - INITBITS(); - state->mode = TIME; -+ /* fallthrough */ - case TIME: - NEEDBITS(32); - if (state->head != Z_NULL) -@@ -730,6 +732,7 @@ int flush; - CRC4(state->check, hold); - INITBITS(); - state->mode = OS; -+ /* fallthrough */ - case OS: - NEEDBITS(16); - if (state->head != Z_NULL) { -@@ -740,6 +743,7 @@ int flush; - CRC2(state->check, hold); - INITBITS(); - state->mode = EXLEN; -+ /* fallthrough */ - case EXLEN: - if (state->flags & 0x0400) { - NEEDBITS(16); -@@ -753,6 +757,7 @@ int flush; - else if (state->head != Z_NULL) - state->head->extra = Z_NULL; - state->mode = EXTRA; -+ /* fallthrough */ - case EXTRA: - if (state->flags & 0x0400) { - copy = state->length; -@@ -775,6 +780,7 @@ int flush; - } - state->length = 0; - state->mode = NAME; -+ /* fallthrough */ - case NAME: - if (state->flags & 0x0800) { - if (have == 0) goto inf_leave; -@@ -796,6 +802,7 @@ int flush; - state->head->name = Z_NULL; - state->length = 0; - state->mode = COMMENT; -+ /* fallthrough */ - case COMMENT: - if (state->flags & 0x1000) { - if (have == 0) goto inf_leave; -@@ -816,6 +823,7 @@ int flush; - else if (state->head != Z_NULL) - state->head->comment = Z_NULL; - state->mode = HCRC; -+ /* fallthrough */ - case HCRC: - if (state->flags & 0x0200) { - NEEDBITS(16); -@@ -839,6 +847,7 @@ int flush; - strm->adler = state->check = ZSWAP32(hold); - INITBITS(); - state->mode = DICT; -+ /* fallthrough */ - case DICT: - if (state->havedict == 0) { - RESTORE(); -@@ -846,8 +855,10 @@ int flush; - } - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = TYPE; -+ /* fallthrough */ - case TYPE: - if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; -+ /* fallthrough */ - case TYPEDO: - if (state->last) { - BYTEBITS(); -@@ -898,8 +909,10 @@ int flush; - INITBITS(); - state->mode = COPY_; - if (flush == Z_TREES) goto inf_leave; -+ /* fallthrough */ - case COPY_: - state->mode = COPY; -+ /* fallthrough */ - case COPY: - copy = state->length; - if (copy) { -@@ -935,6 +948,7 @@ int flush; - Tracev((stderr, "inflate: table sizes ok\n")); - state->have = 0; - state->mode = LENLENS; -+ /* fallthrough */ - case LENLENS: - while (state->have < state->ncode) { - NEEDBITS(3); -@@ -956,6 +970,7 @@ int flush; - Tracev((stderr, "inflate: code lengths ok\n")); - state->have = 0; - state->mode = CODELENS; -+ /* fallthrough */ - case CODELENS: - while (state->have < state->nlen + state->ndist) { - for (;;) { -@@ -1039,8 +1054,10 @@ int flush; - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN_; - if (flush == Z_TREES) goto inf_leave; -+ /* fallthrough */ - case LEN_: - state->mode = LEN; -+ /* fallthrough */ - case LEN: - if (have >= 6 && left >= 258) { - RESTORE(); -@@ -1090,6 +1107,7 @@ int flush; - } - state->extra = (unsigned)(here.op) & 15; - state->mode = LENEXT; -+ /* fallthrough */ - case LENEXT: - if (state->extra) { - NEEDBITS(state->extra); -@@ -1100,6 +1118,7 @@ int flush; - Tracevv((stderr, "inflate: length %u\n", state->length)); - state->was = state->length; - state->mode = DIST; -+ /* fallthrough */ - case DIST: - for (;;) { - here = state->distcode[BITS(state->distbits)]; -@@ -1127,6 +1146,7 @@ int flush; - state->offset = (unsigned)here.val; - state->extra = (unsigned)(here.op) & 15; - state->mode = DISTEXT; -+ /* fallthrough */ - case DISTEXT: - if (state->extra) { - NEEDBITS(state->extra); -@@ -1143,6 +1163,7 @@ int flush; - #endif - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - state->mode = MATCH; -+ /* fallthrough */ - case MATCH: - if (left == 0) goto inf_leave; - copy = out - left; -@@ -1202,7 +1223,7 @@ int flush; - state->total += out; - if ((state->wrap & 4) && out) - strm->adler = state->check = -- UPDATE(state->check, put - out, out); -+ UPDATE_CHECK(state->check, put - out, out); - out = left; - if ((state->wrap & 4) && ( - #ifdef GUNZIP -@@ -1218,10 +1239,11 @@ int flush; - } - #ifdef GUNZIP - state->mode = LENGTH; -+ /* fallthrough */ - case LENGTH: - if (state->wrap && state->flags) { - NEEDBITS(32); -- if (hold != (state->total & 0xffffffffUL)) { -+ if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) { - strm->msg = (char *)"incorrect length check"; - state->mode = BAD; - break; -@@ -1231,6 +1253,7 @@ int flush; - } - #endif - state->mode = DONE; -+ /* fallthrough */ - case DONE: - ret = Z_STREAM_END; - goto inf_leave; -@@ -1240,6 +1263,7 @@ int flush; - case MEM: - return Z_MEM_ERROR; - case SYNC: -+ /* fallthrough */ - default: - return Z_STREAM_ERROR; - } -@@ -1265,7 +1289,7 @@ int flush; - state->total += out; - if ((state->wrap & 4) && out) - strm->adler = state->check = -- UPDATE(state->check, strm->next_out - out, out); -+ UPDATE_CHECK(state->check, strm->next_out - out, out); - strm->data_type = (int)state->bits + (state->last ? 64 : 0) + - (state->mode == TYPE ? 128 : 0) + - (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); -@@ -1401,6 +1425,7 @@ int ZEXPORT inflateSync(strm) - z_streamp strm; - { - unsigned len; /* number of bytes to look at or looked at */ -+ int flags; /* temporary to save header status */ - unsigned long in, out; /* temporary to save total_in and total_out */ - unsigned char buf[4]; /* to restore bit buffer to byte string */ - struct inflate_state FAR *state; -@@ -1433,9 +1458,15 @@ z_streamp strm; - - /* return no joy or set up to restart inflate() on a new block */ - if (state->have != 4) return Z_DATA_ERROR; -+ if (state->flags == -1) -+ state->wrap = 0; /* if no header yet, treat as raw */ -+ else -+ state->wrap &= ~4; /* no point in computing a check value now */ -+ flags = state->flags; - in = strm->total_in; out = strm->total_out; - inflateReset(strm); - strm->total_in = in; strm->total_out = out; -+ state->flags = flags; - state->mode = TYPE; - return Z_OK; - } -@@ -1531,7 +1562,7 @@ int check; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; -- if (check) -+ if (check && state->wrap) - state->wrap |= 4; - else - state->wrap &= ~4; -diff --git a/src/3rdparty/zlib/src/inflate.h b/src/3rdparty/zlib/src/inflate.h -index a46cce6b6d..f127b6b1fa 100644 ---- a/src/3rdparty/zlib/src/inflate.h -+++ b/src/3rdparty/zlib/src/inflate.h -@@ -1,5 +1,5 @@ - /* inflate.h -- internal inflate state definition -- * Copyright (C) 1995-2016 Mark Adler -+ * Copyright (C) 1995-2019 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -86,7 +86,8 @@ struct inflate_state { - int wrap; /* bit 0 true for zlib, bit 1 true for gzip, - bit 2 true to validate check value */ - int havedict; /* true if dictionary provided */ -- int flags; /* gzip header method and flags (0 if zlib) */ -+ int flags; /* gzip header method and flags, 0 if zlib, or -+ -1 if raw or no header yet */ - unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ - unsigned long check; /* protected copy of check value */ - unsigned long total; /* protected copy of output count */ -diff --git a/src/3rdparty/zlib/src/inftrees.c b/src/3rdparty/zlib/src/inftrees.c -index 2ea08fc13e..09462a740b 100644 ---- a/src/3rdparty/zlib/src/inftrees.c -+++ b/src/3rdparty/zlib/src/inftrees.c -@@ -1,5 +1,5 @@ - /* inftrees.c -- generate Huffman trees for efficient decoding -- * Copyright (C) 1995-2017 Mark Adler -+ * Copyright (C) 1995-2022 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -9,7 +9,7 @@ - #define MAXBITS 15 - - const char inflate_copyright[] = -- " inflate 1.2.11 Copyright 1995-2017 Mark Adler "; -+ " inflate 1.2.12 Copyright 1995-2022 Mark Adler "; - /* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot -@@ -62,7 +62,7 @@ unsigned short FAR *work; - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; - static const unsigned short lext[31] = { /* Length codes 257..285 extra */ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, -- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202}; -+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 202}; - static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, -diff --git a/src/3rdparty/zlib/src/trees.c b/src/3rdparty/zlib/src/trees.c -index 50cf4b4571..f73fd99c37 100644 ---- a/src/3rdparty/zlib/src/trees.c -+++ b/src/3rdparty/zlib/src/trees.c -@@ -1,5 +1,5 @@ - /* trees.c -- output deflated data using Huffman coding -- * Copyright (C) 1995-2017 Jean-loup Gailly -+ * Copyright (C) 1995-2021 Jean-loup Gailly - * detect_data_type() function provided freely by Cosmin Truta, 2006 - * For conditions of distribution and use, see copyright notice in zlib.h - */ -@@ -149,7 +149,7 @@ local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - local void compress_block OF((deflate_state *s, const ct_data *ltree, - const ct_data *dtree)); - local int detect_data_type OF((deflate_state *s)); --local unsigned bi_reverse OF((unsigned value, int length)); -+local unsigned bi_reverse OF((unsigned code, int len)); - local void bi_windup OF((deflate_state *s)); - local void bi_flush OF((deflate_state *s)); - -@@ -416,7 +416,7 @@ local void init_block(s) - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; -- s->last_lit = s->matches = 0; -+ s->sym_next = s->matches = 0; - } - - #define SMALLEST 1 -@@ -870,7 +870,8 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) - bi_windup(s); /* align on byte boundary */ - put_short(s, (ush)stored_len); - put_short(s, (ush)~stored_len); -- zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); -+ if (stored_len) -+ zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); - s->pending += stored_len; - #ifdef ZLIB_DEBUG - s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; -@@ -947,7 +948,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) - - Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, -- s->last_lit)); -+ s->sym_next / 3)); - - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; - -@@ -1016,8 +1017,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc) - unsigned dist; /* distance of matched string */ - unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ - { -- s->d_buf[s->last_lit] = (ush)dist; -- s->l_buf[s->last_lit++] = (uch)lc; -+ s->sym_buf[s->sym_next++] = dist; -+ s->sym_buf[s->sym_next++] = dist >> 8; -+ s->sym_buf[s->sym_next++] = lc; - if (dist == 0) { - /* lc is the unmatched char */ - s->dyn_ltree[lc].Freq++; -@@ -1032,30 +1034,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc) - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; - s->dyn_dtree[d_code(dist)].Freq++; - } -- --#ifdef TRUNCATE_BLOCK -- /* Try to guess if it is profitable to stop the current block here */ -- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { -- /* Compute an upper bound for the compressed length */ -- ulg out_length = (ulg)s->last_lit*8L; -- ulg in_length = (ulg)((long)s->strstart - s->block_start); -- int dcode; -- for (dcode = 0; dcode < D_CODES; dcode++) { -- out_length += (ulg)s->dyn_dtree[dcode].Freq * -- (5L+extra_dbits[dcode]); -- } -- out_length >>= 3; -- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", -- s->last_lit, in_length, out_length, -- 100L - out_length*100L/in_length)); -- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; -- } --#endif -- return (s->last_lit == s->lit_bufsize-1); -- /* We avoid equality with lit_bufsize because of wraparound at 64K -- * on 16 bit machines and because stored blocks are restricted to -- * 64K-1 bytes. -- */ -+ return (s->sym_next == s->sym_end); - } - - /* =========================================================================== -@@ -1068,13 +1047,14 @@ local void compress_block(s, ltree, dtree) - { - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ -- unsigned lx = 0; /* running index in l_buf */ -+ unsigned sx = 0; /* running index in sym_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - -- if (s->last_lit != 0) do { -- dist = s->d_buf[lx]; -- lc = s->l_buf[lx++]; -+ if (s->sym_next != 0) do { -+ dist = s->sym_buf[sx++] & 0xff; -+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; -+ lc = s->sym_buf[sx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr," '%c' ", lc)); -@@ -1099,11 +1079,10 @@ local void compress_block(s, ltree, dtree) - } - } /* literal or match pair ? */ - -- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ -- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, -- "pendingBuf overflow"); -+ /* Check that the overlay between pending_buf and sym_buf is ok: */ -+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); - -- } while (lx < s->last_lit); -+ } while (sx < s->sym_next); - - send_code(s, END_BLOCK, ltree); - } -@@ -1112,9 +1091,9 @@ local void compress_block(s, ltree, dtree) - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the -- * "black list" (0..6, 14..25, 28..31). -+ * "block list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the -- * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). -+ * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: -@@ -1124,19 +1103,19 @@ local void compress_block(s, ltree, dtree) - local int detect_data_type(s) - deflate_state *s; - { -- /* black_mask is the bit mask of black-listed bytes -+ /* block_mask is the bit mask of block-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ -- unsigned long black_mask = 0xf3ffc07fUL; -+ unsigned long block_mask = 0xf3ffc07fUL; - int n; - -- /* Check for non-textual ("black-listed") bytes. */ -- for (n = 0; n <= 31; n++, black_mask >>= 1) -- if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) -+ /* Check for non-textual ("block-listed") bytes. */ -+ for (n = 0; n <= 31; n++, block_mask >>= 1) -+ if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0)) - return Z_BINARY; - -- /* Check for textual ("white-listed") bytes. */ -+ /* Check for textual ("allow-listed") bytes. */ - if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 - || s->dyn_ltree[13].Freq != 0) - return Z_TEXT; -@@ -1144,7 +1123,7 @@ local int detect_data_type(s) - if (s->dyn_ltree[n].Freq != 0) - return Z_TEXT; - -- /* There are no "black-listed" or "white-listed" bytes: -+ /* There are no "block-listed" or "allow-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -diff --git a/src/3rdparty/zlib/src/zlib.h b/src/3rdparty/zlib/src/zlib.h -index 32c2ce0957..84087ef332 100644 ---- a/src/3rdparty/zlib/src/zlib.h -+++ b/src/3rdparty/zlib/src/zlib.h -@@ -1,7 +1,7 @@ - /* zlib.h -- interface of the 'zlib' general purpose compression library -- version 1.2.11, January 15th, 2017 -+ version 1.2.12, March 11th, 2022 - -- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler -+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages -@@ -41,11 +41,11 @@ - extern "C" { - #endif - --#define ZLIB_VERSION "1.2.11 (Qt)" --#define ZLIB_VERNUM 0x12b0f -+#define ZLIB_VERSION "1.2.12 (Qt)" -+#define ZLIB_VERNUM 0x12c0 - #define ZLIB_VER_MAJOR 1 - #define ZLIB_VER_MINOR 2 --#define ZLIB_VER_REVISION 11 -+#define ZLIB_VER_REVISION 12 - #define ZLIB_VER_SUBREVISION 0 - - /* -@@ -547,8 +547,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int strategy)); - - This is another version of deflateInit with more compression options. The -- fields next_in, zalloc, zfree and opaque must be initialized before by the -- caller. -+ fields zalloc, zfree and opaque must be initialized before by the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. -@@ -716,11 +715,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression approach (which is a function of the level) or the -- strategy is changed, and if any input has been consumed in a previous -- deflate() call, then the input available so far is compressed with the old -- level and strategy using deflate(strm, Z_BLOCK). There are three approaches -- for the compression levels 0, 1..3, and 4..9 respectively. The new level -- and strategy will take effect at the next call of deflate(). -+ strategy is changed, and if there have been any deflate() calls since the -+ state was initialized or reset, then the input available so far is -+ compressed with the old level and strategy using deflate(strm, Z_BLOCK). -+ There are three approaches for the compression levels 0, 1..3, and 4..9 -+ respectively. The new level and strategy will take effect at the next call -+ of deflate(). - - If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does - not have enough output space to complete, then the parameter change will not -@@ -869,9 +869,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see -- below), inflate() will not automatically decode concatenated gzip streams. -- inflate() will return Z_STREAM_END at the end of the gzip stream. The state -- would need to be reset to continue decoding a subsequent gzip stream. -+ below), inflate() will *not* automatically decode concatenated gzip members. -+ inflate() will return Z_STREAM_END at the end of the gzip member. The state -+ would need to be reset to continue decoding a subsequent gzip member. This -+ *must* be done if there is more data after a gzip member, in order for the -+ decompression to be compliant with the gzip standard (RFC 1952). - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the -@@ -1306,14 +1308,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - /* - ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - -- Opens a gzip (.gz) file for reading or writing. The mode parameter is as -- in fopen ("rb" or "wb") but can also include a compression level ("wb9") or -- a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only -- compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' -- for fixed code compression as in "wb9F". (See the description of -- deflateInit2 for more information about the strategy parameter.) 'T' will -- request transparent writing or appending with no compression and not using -- the gzip format. -+ Open the gzip (.gz) file at path for reading and decompressing, or -+ compressing and writing. The mode parameter is as in fopen ("rb" or "wb") -+ but can also include a compression level ("wb9") or a strategy: 'f' for -+ filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h", -+ 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression -+ as in "wb9F". (See the description of deflateInit2 for more information -+ about the strategy parameter.) 'T' will request transparent writing or -+ appending with no compression and not using the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since -@@ -1343,9 +1345,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); - /* -- gzdopen associates a gzFile with the file descriptor fd. File descriptors -- are obtained from calls like open, dup, creat, pipe or fileno (if the file -- has been previously opened with fopen). The mode parameter is as in gzopen. -+ Associate a gzFile with the file descriptor fd. File descriptors are -+ obtained from calls like open, dup, creat, pipe or fileno (if the file has -+ been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor -@@ -1366,13 +1368,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); - - ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); - /* -- Set the internal buffer size used by this library's functions. The -- default buffer size is 8192 bytes. This function must be called after -- gzopen() or gzdopen(), and before any other calls that read or write the -- file. The buffer memory allocation is always deferred to the first read or -- write. Three times that size in buffer space is allocated. A larger buffer -- size of, for example, 64K or 128K bytes will noticeably increase the speed -- of decompression (reading). -+ Set the internal buffer size used by this library's functions for file to -+ size. The default buffer size is 8192 bytes. This function must be called -+ after gzopen() or gzdopen(), and before any other calls that read or write -+ the file. The buffer memory allocation is always deferred to the first read -+ or write. Three times that size in buffer space is allocated. A larger -+ buffer size of, for example, 64K or 128K bytes will noticeably increase the -+ speed of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - -@@ -1382,9 +1384,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); - - ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); - /* -- Dynamically update the compression level or strategy. See the description -- of deflateInit2 for the meaning of these parameters. Previously provided -- data is flushed before the parameter change. -+ Dynamically update the compression level and strategy for file. See the -+ description of deflateInit2 for the meaning of these parameters. Previously -+ provided data is flushed before applying the parameter changes. - - gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not - opened for writing, Z_ERRNO if there is an error writing the flushed data, -@@ -1393,7 +1395,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); - - ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); - /* -- Reads the given number of uncompressed bytes from the compressed file. If -+ Read and decompress up to len uncompressed bytes from file into buf. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - -@@ -1424,11 +1426,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); - ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, - gzFile file)); - /* -- Read up to nitems items of size size from file to buf, otherwise operating -- as gzread() does. This duplicates the interface of stdio's fread(), with -- size_t request and return types. If the library defines size_t, then -- z_size_t is identical to size_t. If not, then z_size_t is an unsigned -- integer type that can contain a pointer. -+ Read and decompress up to nitems items of size size from file into buf, -+ otherwise operating as gzread() does. This duplicates the interface of -+ stdio's fread(), with size_t request and return types. If the library -+ defines size_t, then z_size_t is identical to size_t. If not, then z_size_t -+ is an unsigned integer type that can contain a pointer. - - gzfread() returns the number of full items read of size size, or zero if - the end of the file was reached and a full item could not be read, or if -@@ -1447,18 +1449,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, - file, reseting and retrying on end-of-file, when size is not 1. - */ - --ZEXTERN int ZEXPORT gzwrite OF((gzFile file, -- voidpc buf, unsigned len)); -+ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len)); - /* -- Writes the given number of uncompressed bytes into the compressed file. -- gzwrite returns the number of uncompressed bytes written or 0 in case of -- error. -+ Compress and write the len uncompressed bytes at buf to file. gzwrite -+ returns the number of uncompressed bytes written or 0 in case of error. - */ - - ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, - z_size_t nitems, gzFile file)); - /* -- gzfwrite() writes nitems items of size size from buf to file, duplicating -+ Compress and write nitems items of size size from buf to file, duplicating - the interface of stdio's fwrite(), with size_t request and return types. If - the library defines size_t, then z_size_t is identical to size_t. If not, - then z_size_t is an unsigned integer type that can contain a pointer. -@@ -1471,22 +1471,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, - - ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); - /* -- Converts, formats, and writes the arguments to the compressed file under -- control of the format string, as in fprintf. gzprintf returns the number of -+ Convert, format, compress, and write the arguments (...) to file under -+ control of the string format, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or a negative zlib error code in case - of error. The number of uncompressed bytes written is limited to 8191, or - one less than the buffer size given to gzbuffer(). The caller should assure - that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if -- zlib was compiled with the insecure functions sprintf() or vsprintf() -+ zlib was compiled with the insecure functions sprintf() or vsprintf(), - because the secure snprintf() or vsnprintf() functions were not available. - This can be determined using zlibCompileFlags(). - */ - - ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); - /* -- Writes the given null-terminated string to the compressed file, excluding -+ Compress and write the given null-terminated string s to file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -@@ -1494,11 +1494,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); - - ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); - /* -- Reads bytes from the compressed file until len-1 characters are read, or a -- newline character is read and transferred to buf, or an end-of-file -- condition is encountered. If any characters are read or if len == 1, the -- string is terminated with a null character. If no characters are read due -- to an end-of-file or len < 1, then the buffer is left untouched. -+ Read and decompress bytes from file into buf, until len-1 characters are -+ read, or until a newline character is read and transferred to buf, or an -+ end-of-file condition is encountered. If any characters are read or if len -+ is one, the string is terminated with a null character. If no characters -+ are read due to an end-of-file or len is less than one, then the buffer is -+ left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at -@@ -1507,13 +1508,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); - - ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); - /* -- Writes c, converted to an unsigned char, into the compressed file. gzputc -+ Compress and write c, converted to an unsigned char, into file. gzputc - returns the value that was written, or -1 in case of error. - */ - - ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); - /* -- Reads one byte from the compressed file. gzgetc returns this byte or -1 -+ Read and decompress one byte from file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file -@@ -1522,8 +1523,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); - - ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); - /* -- Push one character back onto the stream to be read as the first character -- on the next read. At least one character of push-back is allowed. -+ Push c back onto the stream for file to be read as the first character on -+ the next read. At least one character of push-back is always allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the -@@ -1534,9 +1535,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); - - ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); - /* -- Flushes all pending output into the compressed file. The parameter flush -- is as in the deflate() function. The return value is the zlib error number -- (see function gzerror below). gzflush is only permitted when writing. -+ Flush all pending output to file. The parameter flush is as in the -+ deflate() function. The return value is the zlib error number (see function -+ gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new -@@ -1551,8 +1552,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - -- Sets the starting position for the next gzread or gzwrite on the given -- compressed file. The offset represents a number of bytes in the -+ Set the starting position to offset relative to whence for the next gzread -+ or gzwrite on file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - -@@ -1569,18 +1570,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - - ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); - /* -- Rewinds the given file. This function is supported only for reading. -+ Rewind file. This function is supported only for reading. - -- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -+ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET). - */ - - /* - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - -- Returns the starting position for the next gzread or gzwrite on the given -- compressed file. This position represents a number of bytes in the -- uncompressed data stream, and is zero when starting, even if appending or -- reading a gzip stream from the middle of a file using gzdopen(). -+ Return the starting position for the next gzread or gzwrite on file. -+ This position represents a number of bytes in the uncompressed data stream, -+ and is zero when starting, even if appending or reading a gzip stream from -+ the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) - */ -@@ -1588,22 +1589,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - /* - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - -- Returns the current offset in the file being read or written. This offset -- includes the count of bytes that precede the gzip stream, for example when -- appending or when using gzdopen() for reading. When reading, the offset -- does not include as yet unused buffered input. This information can be used -- for a progress indicator. On error, gzoffset() returns -1. -+ Return the current compressed (actual) read or write offset of file. This -+ offset includes the count of bytes that precede the gzip stream, for example -+ when appending or when using gzdopen() for reading. When reading, the -+ offset does not include as yet unused buffered input. This information can -+ be used for a progress indicator. On error, gzoffset() returns -1. - */ - - ZEXTERN int ZEXPORT gzeof OF((gzFile file)); - /* -- Returns true (1) if the end-of-file indicator has been set while reading, -- false (0) otherwise. Note that the end-of-file indicator is set only if the -- read tried to go past the end of the input, but came up short. Therefore, -- just like feof(), gzeof() may return false even if there is no more data to -- read, in the event that the last read request was for the exact number of -- bytes remaining in the input file. This will happen if the input file size -- is an exact multiple of the buffer size. -+ Return true (1) if the end-of-file indicator for file has been set while -+ reading, false (0) otherwise. Note that the end-of-file indicator is set -+ only if the read tried to go past the end of the input, but came up short. -+ Therefore, just like feof(), gzeof() may return false even if there is no -+ more data to read, in the event that the last read request was for the exact -+ number of bytes remaining in the input file. This will happen if the input -+ file size is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file -@@ -1612,7 +1613,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file)); - - ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); - /* -- Returns true (1) if file is being copied directly while reading, or false -+ Return true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input -@@ -1633,8 +1634,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); - - ZEXTERN int ZEXPORT gzclose OF((gzFile file)); - /* -- Flushes all pending output if necessary, closes the compressed file and -- deallocates the (de)compression state. Note that once file is closed, you -+ Flush all pending output for file, if necessary, close file and -+ deallocate the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. -@@ -1658,10 +1659,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); - - ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); - /* -- Returns the error message for the last error which occurred on the given -- compressed file. errnum is set to zlib error number. If an error occurred -- in the file system and not in the compression library, errnum is set to -- Z_ERRNO and the application may consult errno to get the exact error code. -+ Return the error message for the last error which occurred on file. -+ errnum is set to zlib error number. If an error occurred in the file system -+ and not in the compression library, errnum is set to Z_ERRNO and the -+ application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is -@@ -1674,7 +1675,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); - - ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); - /* -- Clears the error and end-of-file flags for file. This is analogous to the -+ Clear the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. - */ -@@ -1692,8 +1693,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); - ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); - /* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and -- return the updated checksum. If buf is Z_NULL, this function returns the -- required initial value for the checksum. -+ return the updated checksum. An Adler-32 value is in the range of a 32-bit -+ unsigned integer. If buf is Z_NULL, this function returns the required -+ initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed - much faster. -@@ -1726,12 +1728,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - negative, the result has no meaning or utility. - */ - --ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -+ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); - /* - Update a running CRC-32 with the bytes buf[0..len-1] and return the -- updated CRC-32. If buf is Z_NULL, this function returns the required -- initial value for the crc. Pre- and post-conditioning (one's complement) is -- performed within this function so it shouldn't be done by the application. -+ updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer. -+ If buf is Z_NULL, this function returns the required initial value for the -+ crc. Pre- and post-conditioning (one's complement) is performed within this -+ function so it shouldn't be done by the application. - - Usage example: - -@@ -1743,7 +1746,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); - if (crc != original_crc) error(); - */ - --ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, -+ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf, - z_size_t len)); - /* - Same as crc32(), but with a size_t length. -@@ -1759,6 +1762,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - len2. - */ - -+/* -+ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2)); -+ -+ Return the operator corresponding to length len2, to be used with -+ crc32_combine_op(). -+*/ -+ -+ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op)); -+/* -+ Give the same result as crc32_combine(), using op in place of len2. op is -+ is generated from len2 by crc32_combine_gen(). This will be faster than -+ crc32_combine() if the generated op is used more than once. -+*/ -+ - - /* various hacks, don't look :) */ - -@@ -1846,6 +1863,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t)); - #endif - - #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -@@ -1856,6 +1874,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ - # define z_gzoffset z_gzoffset64 - # define z_adler32_combine z_adler32_combine64 - # define z_crc32_combine z_crc32_combine64 -+# define z_crc32_combine_gen z_crc32_combine_gen64 - # else - # define gzopen gzopen64 - # define gzseek gzseek64 -@@ -1863,6 +1882,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ - # define gzoffset gzoffset64 - # define adler32_combine adler32_combine64 - # define crc32_combine crc32_combine64 -+# define crc32_combine_gen crc32_combine_gen64 - # endif - # ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); -@@ -1871,6 +1891,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t)); - # endif - #else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); -@@ -1879,12 +1900,14 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t)); - #endif - - #else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t)); - - #endif /* !Z_SOLO */ - -@@ -1897,7 +1920,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); - ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp)); - ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); - ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); --#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO) -+#if defined(_WIN32) && !defined(Z_SOLO) - ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); - #endif -diff --git a/src/3rdparty/zlib/src/zutil.c b/src/3rdparty/zlib/src/zutil.c -index a76c6b0c7e..dcab28a0d5 100644 ---- a/src/3rdparty/zlib/src/zutil.c -+++ b/src/3rdparty/zlib/src/zutil.c -@@ -136,8 +136,8 @@ const char * ZEXPORT zError(err) - return ERR_MSG(err); - } - --#if defined(_WIN32_WCE) -- /* The Microsoft C Run-Time Library for Windows CE doesn't have -+#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800 -+ /* The older Microsoft C Run-Time Library for Windows CE doesn't have - * errno. We define it as a global variable to simplify porting. - * Its value is always 0 and should not be used. - */ -diff --git a/src/3rdparty/zlib/src/zutil.h b/src/3rdparty/zlib/src/zutil.h -index 38066137fc..0d78483358 100644 ---- a/src/3rdparty/zlib/src/zutil.h -+++ b/src/3rdparty/zlib/src/zutil.h -@@ -1,5 +1,5 @@ - /* zutil.h -- internal interface and configuration of the compression library -- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler -+ * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -@@ -21,7 +21,6 @@ - #define HAVE_HIDDEN - #endif - -- - #ifdef HAVE_HIDDEN - # define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) - #else -@@ -38,10 +37,6 @@ - # include <stdlib.h> - #endif - --#ifdef Z_SOLO -- typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ --#endif -- - #ifndef local - # define local static - #endif -@@ -55,6 +50,17 @@ typedef unsigned short ush; - typedef ush FAR ushf; - typedef unsigned long ulg; - -+#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC) -+# include <limits.h> -+# if (ULONG_MAX == 0xffffffffffffffff) -+# define Z_U8 unsigned long -+# elif (ULLONG_MAX == 0xffffffffffffffff) -+# define Z_U8 unsigned long long -+# elif (UINT_MAX == 0xffffffffffffffff) -+# define Z_U8 unsigned -+# endif -+#endif -+ - extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ - /* (size given to avoid silly warnings with Visual C++) */ - -@@ -184,10 +190,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ - #if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX - # if defined(_WIN32_WCE) - # define fdopen(fd,mode) NULL /* No fdopen() */ --# ifndef _PTRDIFF_T_DEFINED -- typedef int ptrdiff_t; --# define _PTRDIFF_T_DEFINED --# endif - # else - # define fdopen(fd,type) _fdopen(fd,type) - # endif --- -2.36.0 - -From 92a38db9d628428cec0aa36ad7e0307935e55490 Mon Sep 17 00:00:00 2001 +From c4fe0a051d02eca614d04cb29314334979dd9922 Mon Sep 17 00:00:00 2001 From: Noah Davis <noahadvs@gmail.com> Date: Wed, 9 Feb 2022 10:29:33 -0500 -Subject: [PATCH 125/146] QPA: add ButtonPressKeys ThemeHint +Subject: [PATCH 031/123] QPA: add ButtonPressKeys ThemeHint Platforms should allow more than just Qt::Key_Space and Qt::Key_Select to press buttons. KDE Plasma developers want to be able to press buttons @@ -62890,7 +42783,7 @@ Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp -index 71521c0339..2325873245 100644 +index a11388fdb6f..aed480e8750 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -163,6 +163,8 @@ QT_BEGIN_NAMESPACE @@ -62912,7 +42805,7 @@ index 71521c0339..2325873245 100644 return QVariant(); } diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h -index 3185fc4541..7e6c9d5740 100644 +index 3185fc45413..7e6c9d57403 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -120,7 +120,8 @@ public: @@ -62926,12 +42819,12 @@ index 3185fc4541..7e6c9d5740 100644 enum DialogType { -- -2.36.0 +2.49.0 -From 181967b94173376558b65562f3497b1a40dd236f Mon Sep 17 00:00:00 2001 +From a2be811a87d14270dad88733f88192a87dee0c84 Mon Sep 17 00:00:00 2001 From: Noah Davis <noahadvs@gmail.com> Date: Wed, 16 Feb 2022 08:50:08 -0500 -Subject: [PATCH 126/146] QGnomeTheme: Allow Space, Return, Enter and Select to +Subject: [PATCH 032/123] QGnomeTheme: Allow Space, Return, Enter and Select to press buttons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -62950,7 +42843,7 @@ Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> 1 file changed, 4 insertions(+) diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp -index cb1b39db64..dafa3ec4da 100644 +index cb1b39db646..dafa3ec4dac 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -731,6 +731,7 @@ QGnomeTheme::QGnomeTheme() @@ -62972,12 +42865,12 @@ index cb1b39db64..dafa3ec4da 100644 break; } -- -2.36.0 +2.49.0 -From 0dbc1c8511b5bef3a9713ba21a6fff006472c166 Mon Sep 17 00:00:00 2001 +From 1ea9bb717b826c45a584757e20604be51aaa8b27 Mon Sep 17 00:00:00 2001 From: Noah Davis <noahadvs@gmail.com> Date: Thu, 17 Feb 2022 05:07:29 -0500 -Subject: [PATCH 127/146] QGnomeTheme: remove unneeded Q_D +Subject: [PATCH 033/123] QGnomeTheme: remove unneeded Q_D Change-Id: I3fcb1de9487bfdfab16bae5603fed09ef72e01ba Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> @@ -62988,7 +42881,7 @@ Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> 1 file changed, 1 deletion(-) diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp -index dafa3ec4da..6e01af052c 100644 +index dafa3ec4dac..6e01af052c1 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -731,7 +731,6 @@ QGnomeTheme::QGnomeTheme() @@ -63000,12 +42893,12 @@ index dafa3ec4da..6e01af052c 100644 case QPlatformTheme::DialogButtonBoxButtonsHaveIcons: return QVariant(true); -- -2.36.0 +2.49.0 -From 9a5d60d88624e78131933827e06c2dcb3cde3040 Mon Sep 17 00:00:00 2001 +From 7f7343d6393ce9e1ece3224ce768f9327d82ecce Mon Sep 17 00:00:00 2001 From: Noah Davis <noahadvs@gmail.com> Date: Thu, 17 Feb 2022 10:20:31 -0500 -Subject: [PATCH 128/146] testlib/qasciikey: Add keypad navigation keys +Subject: [PATCH 034/123] testlib/qasciikey: Add keypad navigation keys Needed to prevent qasciikey.cpp from failing an assertion when Qt::Key_Select is used in tests. @@ -63018,7 +42911,7 @@ Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> 1 file changed, 5 insertions(+) diff --git a/src/testlib/qasciikey.cpp b/src/testlib/qasciikey.cpp -index 9a308da2bc..93498b256f 100644 +index 9a308da2bc0..93498b256fb 100644 --- a/src/testlib/qasciikey.cpp +++ b/src/testlib/qasciikey.cpp @@ -498,6 +498,11 @@ char QTest::keyToAscii(Qt::Key key) @@ -63034,12 +42927,377 @@ index 9a308da2bc..93498b256f 100644 } } -- -2.36.0 +2.49.0 + +From 9e1fb4ea655e82773fbaf3c513ef4abee4576168 Mon Sep 17 00:00:00 2001 +From: Johannes Rosenqvist <xeroc81@gmail.com> +Date: Wed, 4 May 2022 12:49:24 +0200 +Subject: [PATCH 035/123] Fix a QDBusConnection crash with pending calls when + connection is closed + +QDBusConnection::closeConnection does not use deref() on pendingCall +list so if there is an QDBusPendingCallWatcher watching the +pending call the QDbusPendingCallPrivate destructor will +run twice causing a crash. + +Pick-to: 5.15 6.2 6.3 +Change-Id: Ib811da36d3510f4292aa310c52c0617b885947b7 +Reviewed-by: Johannes Rosenqvist <xeroc81@gmail.com> +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit bb334e8181c52ad1f2b1cf1b89337870579ac8b0) +--- + src/dbus/qdbusintegrator.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp +index a4cbfecc98b..9ccbbbb37d3 100644 +--- a/src/dbus/qdbusintegrator.cpp ++++ b/src/dbus/qdbusintegrator.cpp +@@ -1135,7 +1135,13 @@ void QDBusConnectionPrivate::closeConnection() + } + } + +- qDeleteAll(pendingCalls); ++ for (auto it = pendingCalls.begin(); it != pendingCalls.end(); ++it) { ++ auto call = *it; ++ if (!call->ref.deref()) { ++ delete call; ++ } ++ } ++ pendingCalls.clear(); + + // Disconnect all signals from signal hooks and from the object tree to + // avoid QObject::destroyed being sent to dbus daemon thread which has +-- +2.49.0 + +From cb96b4c720637ec5f0fb291afeeff09a205c5520 Mon Sep 17 00:00:00 2001 +From: Joni Poikelin <joni.poikelin@qt.io> +Date: Thu, 5 May 2022 13:11:53 +0300 +Subject: [PATCH 036/123] Prevent crashing when FcFontList fails + +FcFontList can return null pointer in failure cases which would lead to +null pointer dereference further down. + +Pick-to: 5.15 6.2 6.3 +Change-Id: I6b407cf2f27ead9eb471d3ee7a521468cebf7572 +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 691541023aa11c085186ef7f691507c158e1df75) +--- + .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +index 159b490ce0a..00aa80cd589 100644 +--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp ++++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +@@ -567,6 +567,8 @@ void QFontconfigDatabase::populateFontDatabase() + fonts = FcFontList(nullptr, pattern, os); + FcObjectSetDestroy(os); + FcPatternDestroy(pattern); ++ if (!fonts) ++ return; + } + + for (int i = 0; i < fonts->nfont; i++) +-- +2.49.0 + +From b6055fd46f8cd089fc9364ee79d06ad1a27c8809 Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher <ch.ehrlicher@gmx.de> +Date: Mon, 21 Dec 2020 14:16:57 +0100 +Subject: [PATCH 037/123] QPushButton/fusion style: don't ignore QIcon::On icon + +The fusion style did ignore the QIcon::On icon because it reset State_On +to avoid the visual shift of a pressed button. +But it's not needed to reset this flag - the shift does not happen +because the fusion style does return 0 as offset for +PM_ButtonShiftHorizontal/PM_ButtonShiftVertical so no shifting will +happen. + +Fixes: QTBUG-86736 +Fixes: QTBUG-82110 +Change-Id: Ie2aaddb14bc67874f5a9a23d9f04d7a08c6d070f +Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> +Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> +(cherry picked from commit e9ccdf4d8415717323ea7849ded195343560514a) +--- + src/widgets/styles/qfusionstyle.cpp | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp +index a225d4b5631..35e2769ac46 100644 +--- a/src/widgets/styles/qfusionstyle.cpp ++++ b/src/widgets/styles/qfusionstyle.cpp +@@ -1772,14 +1772,6 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio + proxy()->drawControl(CE_PushButtonLabel, &subopt, painter, widget); + } + break; +- case CE_PushButtonLabel: +- if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) { +- QStyleOptionButton b(*button); +- // no PM_ButtonShiftHorizontal and PM_ButtonShiftVertical for fusion style +- b.state &= ~(State_On | State_Sunken); +- QCommonStyle::drawControl(element, &b, painter, widget); +- } +- break; + case CE_MenuBarEmptyArea: + painter->save(); + { +-- +2.49.0 + +From 7237eda1eb45f65780395fed54668af51a1f87a7 Mon Sep 17 00:00:00 2001 +From: Lu YaNing <luyaning@uniontech.com> +Date: Thu, 31 Mar 2022 13:53:52 +0800 +Subject: [PATCH 038/123] CUPS: Add support for accessible IPP printers + +CUPS 2.2 adds accessible IPP printers to the list of destinations +that can be used. The "printer-uri-supported" option will be +present for those IPP printers that have been recently used. +https://github.com/OpenPrinting/cups/blob/master/cups/dest.c#L1611 + +Pick-to: 5.15 6.2 6.3 +Change-Id: I49b4d2f1ee6d96e9bcc04ed1cc2ed48d7a6e7563 +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit 2f5f276b4a2a19b9f2669b84f28ce8e970aaa39f) + +* asturmlechner 2022-06-09: Fix conflict with dev branch commit + 24d2a00ce2b2983655e9c59705025218cd0fa345 +--- + src/plugins/printsupport/cups/qcupsprintersupport.cpp | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp +index 42a7a821f2d..1131d43f646 100644 +--- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp ++++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp +@@ -165,9 +165,12 @@ QStringList QCupsPrinterSupport::availablePrintDeviceIds() const + list.reserve(count); + for (int i = 0; i < count; ++i) { + QString printerId = QString::fromLocal8Bit(dests[i].name); +- if (dests[i].instance) ++ if (dests[i].instance) { + printerId += QLatin1Char('/') + QString::fromLocal8Bit(dests[i].instance); +- list.append(printerId); ++ list.append(printerId); ++ } else if (cupsGetOption("printer-uri-supported", dests[i].num_options, dests[i].options)) { ++ list.append(printerId); ++ } + } + cupsFreeDests(count, dests); + return list; +-- +2.49.0 + +From c6aadf013ffa80b4a765c13282ffa9182249bc78 Mon Sep 17 00:00:00 2001 +From: David Faure <david.faure@kdab.com> +Date: Sun, 13 Mar 2022 15:21:19 +0100 +Subject: [PATCH 039/123] QShader: fix memory leak in detach() + +qAtomicDetach() does d = new T(*d); which calls the copy constructor. +Since there was no copy constructor declared for QShaderPrivate, +the compiler generated one which copied the refcount over, instead of +setting it to 1 in the detached instance. As a result, the destructor +didn't delete the QShaderPrivate. + +Nothing was calling this constructor that takes a pointer, so clearly +this was a typo for a copy constructor. + +Detected in an ASAN build, the qsb tool exited in error. + +Pick-to: 6.3 6.2 5.15 +Change-Id: Idbe659b52d2600ac7c11b09142a6aa5b25310df9 +Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> +(cherry picked from commit fd4672d02023d8c38d8a80da300e135e98b90164) + +* asturmlechner 2022-06-09: Fix conflict with dev branch commit + 04cdde30d64ed55adc8174dc379f131fb2aeba98 +--- + src/gui/rhi/qshader_p_p.h | 12 ++++++------ + src/gui/rhi/qshaderdescription_p_p.h | 18 +++++++++--------- + 2 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/src/gui/rhi/qshader_p_p.h b/src/gui/rhi/qshader_p_p.h +index ec9d25971fd..4a5a7a6d512 100644 +--- a/src/gui/rhi/qshader_p_p.h ++++ b/src/gui/rhi/qshader_p_p.h +@@ -68,13 +68,13 @@ struct Q_GUI_EXPORT QShaderPrivate + { + } + +- QShaderPrivate(const QShaderPrivate *other) ++ QShaderPrivate(const QShaderPrivate &other) + : ref(1), +- qsbVersion(other->qsbVersion), +- stage(other->stage), +- desc(other->desc), +- shaders(other->shaders), +- bindings(other->bindings) ++ qsbVersion(other.qsbVersion), ++ stage(other.stage), ++ desc(other.desc), ++ shaders(other.shaders), ++ bindings(other.bindings) + { + } + +diff --git a/src/gui/rhi/qshaderdescription_p_p.h b/src/gui/rhi/qshaderdescription_p_p.h +index ec2b0b6b4ce..3da33a8a2b1 100644 +--- a/src/gui/rhi/qshaderdescription_p_p.h ++++ b/src/gui/rhi/qshaderdescription_p_p.h +@@ -63,16 +63,16 @@ struct Q_GUI_EXPORT QShaderDescriptionPrivate + localSize[0] = localSize[1] = localSize[2] = 0; + } + +- QShaderDescriptionPrivate(const QShaderDescriptionPrivate *other) ++ QShaderDescriptionPrivate(const QShaderDescriptionPrivate &other) + : ref(1), +- inVars(other->inVars), +- outVars(other->outVars), +- uniformBlocks(other->uniformBlocks), +- pushConstantBlocks(other->pushConstantBlocks), +- storageBlocks(other->storageBlocks), +- combinedImageSamplers(other->combinedImageSamplers), +- storageImages(other->storageImages), +- localSize(other->localSize) ++ inVars(other.inVars), ++ outVars(other.outVars), ++ uniformBlocks(other.uniformBlocks), ++ pushConstantBlocks(other.pushConstantBlocks), ++ storageBlocks(other.storageBlocks), ++ combinedImageSamplers(other.combinedImageSamplers), ++ storageImages(other.storageImages), ++ localSize(other.localSize) + { + } + +-- +2.49.0 + +From 9963f8e5e2deec3106450a1050da4727b308fa2c Mon Sep 17 00:00:00 2001 +From: David Faure <david.faure@kdab.com> +Date: Tue, 2 Mar 2021 00:05:00 +0100 +Subject: [PATCH 040/123] QAbstractItemDelegate: fix rect given to tooltip + handing + +* The rect passed to QToolTip::showText() is in view coordinates, +not in global coordinates. + +* Determining this rect in the first place doesn't need calling view->visualRect(index) +The view already did this before calling this method, and stored it in +option.rect, so just use that. + +* The widget passed to QToolTip::showText() should be the viewport, +that's what option.rect is relative to (thanks Giuseppe!). + +Found these issues when implementing my own tooltip handing (for a subrect +of a delegate) by looking at this code. + +Pick-to: 6.3 6.2 5.15 +Change-Id: I852e5409def28da98137cd0c4c996083e5e45706 +Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> +(cherry picked from commit 741afd67529ccc51b2686f59f897b6136e041719) +--- + src/widgets/itemviews/qabstractitemdelegate.cpp | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/src/widgets/itemviews/qabstractitemdelegate.cpp b/src/widgets/itemviews/qabstractitemdelegate.cpp +index e120817edc6..8ea36b54278 100644 +--- a/src/widgets/itemviews/qabstractitemdelegate.cpp ++++ b/src/widgets/itemviews/qabstractitemdelegate.cpp +@@ -400,12 +400,7 @@ bool QAbstractItemDelegate::helpEvent(QHelpEvent *event, + const QString tooltip = index.isValid() ? + d->textForRole(Qt::ToolTipRole, index.data(Qt::ToolTipRole), option.locale, precision) : + QString(); +- QRect rect; +- if (index.isValid()) { +- const QRect r = view->visualRect(index); +- rect = QRect(view->mapToGlobal(r.topLeft()), r.size()); +- } +- QToolTip::showText(he->globalPos(), tooltip, view, rect); ++ QToolTip::showText(he->globalPos(), tooltip, view->viewport(), option.rect); + event->setAccepted(!tooltip.isEmpty()); + break; + } +-- +2.49.0 + +From ed218336b6de52957c0b6b7aa0ba81154870387f Mon Sep 17 00:00:00 2001 +From: Jonas Kvinge <jonas@jkvinge.net> +Date: Wed, 16 Jun 2021 00:45:53 +0200 +Subject: [PATCH 041/123] QDBusMenuConnection: Close open D-Bus connection + +Using QSystemTrayIcon::isSystemTrayAvailable() generates a new +connection from QDBusTrayIcon::isSystemTrayAvailable() with a new unique instance ID. +These were never closed, so calling +QSystemTrayIcon::isSystemTrayAvailable() frequently leads to crash when +it runs out of file descriptors. + +Fixes: QTBUG-94839 +Pick-to: 5.15 6.1 6.2 +Change-Id: Ib71441a6b680d8633707cc02f9b6081c0f02472b +Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +(cherry picked from commit 2ca19d2dd3137f2c29dcb2b1f2d23b23f3f1b0aa) +--- + .../themes/genericunix/dbusmenu/qdbusmenuconnection.cpp | 7 +++++++ + .../themes/genericunix/dbusmenu/qdbusmenuconnection_p.h | 2 ++ + 2 files changed, 9 insertions(+) + +diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp +index 345a853b1b7..cc7c7d4d8a8 100644 +--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp ++++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp +@@ -69,6 +69,7 @@ const QString MenuBarPath = QLatin1String("/MenuBar"); + */ + QDBusMenuConnection::QDBusMenuConnection(QObject *parent, const QString &serviceName) + : QObject(parent) ++ , m_serviceName(serviceName) + , m_connection(serviceName.isNull() ? QDBusConnection::sessionBus() + : QDBusConnection::connectToBus(QDBusConnection::SessionBus, serviceName)) + , m_dbusWatcher(new QDBusServiceWatcher(StatusNotifierWatcherService, m_connection, QDBusServiceWatcher::WatchForRegistration, this)) +@@ -83,6 +84,12 @@ QDBusMenuConnection::QDBusMenuConnection(QObject *parent, const QString &service + #endif + } + ++QDBusMenuConnection::~QDBusMenuConnection() ++{ ++ if (!m_serviceName.isEmpty() && m_connection.isConnected()) ++ QDBusConnection::disconnectFromBus(m_serviceName); ++} ++ + void QDBusMenuConnection::dbusError(const QDBusError &error) + { + qWarning() << "QDBusTrayIcon encountered a D-Bus error:" << error; +diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h +index 11c7e56534d..97bdfabb855 100644 +--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h ++++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h +@@ -70,6 +70,7 @@ class QDBusMenuConnection : public QObject + + public: + QDBusMenuConnection(QObject *parent = nullptr, const QString &serviceName = QString()); ++ ~QDBusMenuConnection(); + QDBusConnection connection() const { return m_connection; } + QDBusServiceWatcher *dbusWatcher() const { return m_dbusWatcher; } + bool isStatusNotifierHostRegistered() const { return m_statusNotifierHostRegistered; } +@@ -90,6 +91,7 @@ private Q_SLOTS: + void dbusError(const QDBusError &error); + + private: ++ QString m_serviceName; + QDBusConnection m_connection; + QDBusServiceWatcher *m_dbusWatcher; + bool m_statusNotifierHostRegistered; +-- +2.49.0 -From 8384dcd6324a5c7ea325162fa92953463e20905d Mon Sep 17 00:00:00 2001 +From f3ec0d4436498588d4a6f2e5b1100c906b594fef Mon Sep 17 00:00:00 2001 From: Noah Davis <noahadvs@gmail.com> Date: Wed, 9 Feb 2022 10:32:53 -0500 -Subject: [PATCH 129/146] Widgets: use QPlatformTheme::ButtonPressKeys for +Subject: [PATCH 042/123] Widgets: use QPlatformTheme::ButtonPressKeys for pressing buttons QComboBox is included because it works like a button when it is not @@ -63064,7 +43322,7 @@ Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> 11 files changed, 156 insertions(+), 44 deletions(-) diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp -index a128b23950..7be0858a58 100644 +index a128b239506..7be0858a58a 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -56,6 +56,7 @@ @@ -63133,10 +43391,10 @@ index a128b23950..7be0858a58 100644 /*!\reimp diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp -index 9bc346704f..c3bbeeae68 100644 +index 422082da6ce..6ce4429cfad 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp -@@ -3339,7 +3339,23 @@ void QComboBox::keyPressEvent(QKeyEvent *e) +@@ -3354,7 +3354,23 @@ void QComboBox::keyPressEvent(QKeyEvent *e) Move move = NoMove; int newIndex = currentIndex(); @@ -63161,7 +43419,7 @@ index 9bc346704f..c3bbeeae68 100644 case Qt::Key_Up: if (e->modifiers() & Qt::ControlModifier) break; // pass to line edit for auto completion -@@ -3381,26 +3397,11 @@ void QComboBox::keyPressEvent(QKeyEvent *e) +@@ -3396,26 +3412,11 @@ void QComboBox::keyPressEvent(QKeyEvent *e) return; } break; @@ -63189,7 +43447,7 @@ index 9bc346704f..c3bbeeae68 100644 case Qt::Key_Right: if (QApplicationPrivate::keypadNavigationEnabled() && !hasEditFocus()) diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp -index 02a0bed325..89a9a14743 100644 +index 02a0bed3256..89a9a14743f 100644 --- a/src/widgets/widgets/qgroupbox.cpp +++ b/src/widgets/widgets/qgroupbox.cpp @@ -54,6 +54,8 @@ @@ -63226,7 +43484,7 @@ index 02a0bed325..89a9a14743 100644 || d->pressedControl == QStyle::SC_GroupBoxCheckBox); d->pressedControl = QStyle::SC_None; diff --git a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp -index eb108a40de..dca5528c1b 100644 +index eb108a40de7..dca5528c1bf 100644 --- a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp +++ b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp @@ -41,6 +41,7 @@ @@ -63303,19 +43561,19 @@ index eb108a40de..dca5528c1b 100644 QTEST_MAIN(tst_QAbstractButton) #include "tst_qabstractbutton.moc" diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp -index 46e96616b1..3a7fad08a6 100644 +index 7af60ed7578..46b5af6d63b 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp -@@ -167,6 +167,7 @@ private slots: - void task_QTBUG_52027_mapCompleterIndex(); +@@ -168,6 +168,7 @@ private slots: void checkMenuItemPosWhenStyleSheetIsSet(); void checkEmbeddedLineEditWhenStyleSheetIsSet(); + void propagateStyleChanges(); + void buttonPressKeys(); private: PlatformInputContext m_platformInputContext; -@@ -3596,5 +3597,24 @@ void tst_QComboBox::checkEmbeddedLineEditWhenStyleSheetIsSet() - qApp->setStyleSheet(oldCss); +@@ -3642,5 +3643,24 @@ void tst_QComboBox::propagateStyleChanges() + QVERIFY(frameStyle.inquired); } +void tst_QComboBox::buttonPressKeys() @@ -63340,7 +43598,7 @@ index 46e96616b1..3a7fad08a6 100644 QTEST_MAIN(tst_QComboBox) #include "tst_qcombobox.moc" diff --git a/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro b/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro -index be3cfcd104..c228fdfcca 100644 +index be3cfcd1047..c228fdfcca9 100644 --- a/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro +++ b/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro @@ -1,6 +1,6 @@ @@ -63352,7 +43610,7 @@ index be3cfcd104..c228fdfcca 100644 diff --git a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp -index 0044d33c66..4cf06296e4 100644 +index 0044d33c665..4cf06296e4e 100644 --- a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp +++ b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp @@ -40,6 +40,9 @@ @@ -63395,7 +43653,7 @@ index 0044d33c66..4cf06296e4 100644 QCOMPARE( press_count, (uint)1 ); QCOMPARE( release_count, (uint)1 ); diff --git a/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro b/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro -index 4a5e76ff65..a235fa1fac 100644 +index 4a5e76ff656..a235fa1face 100644 --- a/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro +++ b/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro @@ -1,6 +1,6 @@ @@ -63407,7 +43665,7 @@ index 4a5e76ff65..a235fa1fac 100644 diff --git a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp -index 4fb5d262ca..d8d7562b73 100644 +index 4fb5d262ca4..d8d7562b73e 100644 --- a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp +++ b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp @@ -35,6 +35,9 @@ @@ -63450,7 +43708,7 @@ index 4fb5d262ca..d8d7562b73 100644 { // Send a MouseMove event without actually moving the pointer diff --git a/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro b/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro -index 353ad06ca2..e55f6148f2 100644 +index 353ad06ca21..e55f6148f20 100644 --- a/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro +++ b/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro @@ -1,6 +1,6 @@ @@ -63462,7 +43720,7 @@ index 353ad06ca2..e55f6148f2 100644 diff --git a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp -index e818514a79..4043e9326a 100644 +index e818514a79d..4043e9326a2 100644 --- a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp +++ b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp @@ -41,6 +41,9 @@ @@ -63505,42 +43763,12 @@ index e818514a79..4043e9326a 100644 QCOMPARE( press_count, (uint)1 ); QCOMPARE( release_count, (uint)1 ); -- -2.36.0 - -From 9ef1eeef8c3a2fd98231904995807d16c3925671 Mon Sep 17 00:00:00 2001 -From: Milian Wolff <milian.wolff@kdab.com> -Date: Thu, 21 Apr 2022 12:34:11 +0200 -Subject: [PATCH 130/146] Fix compile with Qt5: Use QString::mid instead of - QString::sliced - -Sliced is a faster version of mid. In a test it doesn't matter which -one we use, and this allows us to build Qt5 with tests enabled. +2.49.0 -Change-Id: I668580d675224324bf481e7b17358bbbe44741fd ---- - tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -index dc42b15a69..6d6d65b791 100644 ---- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp -@@ -2782,7 +2782,7 @@ void tst_QSqlQuery::prematureExec() - dbName.truncate(cut); - cut = dbName.indexOf(QChar('_')); - if (cut >= 0) -- dbName = dbName.sliced(cut + 1); -+ dbName = dbName.mid(cut + 1); - - auto db = QSqlDatabase::addDatabase(dbName); - QSqlQuery q(db); --- -2.36.0 - -From 8d476fc6c2d68b0b23bc1df0aca7b09ad8eb6a6a Mon Sep 17 00:00:00 2001 +From 55c1dee1a9877c33c8890dbc029ff12b6ff1465a Mon Sep 17 00:00:00 2001 From: Noah Davis <noahadvs@gmail.com> Date: Wed, 20 Apr 2022 18:20:10 -0400 -Subject: [PATCH 131/146] QAbstractButton/QComboBox/QGroupBox: static_cast +Subject: [PATCH 043/123] QAbstractButton/QComboBox/QGroupBox: static_cast event->key() to Qt::Key The default build settings don't like casting to the true type unless @@ -63554,7 +43782,7 @@ Change-Id: I1705dd2e2339f28bbfe46832f10cb40f1aa9abd2 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp -index 7be0858a58..dc40bf62fb 100644 +index 7be0858a58a..dc40bf62fbe 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -1078,7 +1078,7 @@ void QAbstractButton::keyPressEvent(QKeyEvent *e) @@ -63576,10 +43804,10 @@ index 7be0858a58..dc40bf62fb 100644 return; } diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp -index c3bbeeae68..7432eb4eb5 100644 +index 6ce4429cfad..5692c6e82ba 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp -@@ -3344,7 +3344,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e) +@@ -3359,7 +3359,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e) #ifdef QT_KEYPAD_NAVIGATION pressLikeButton |= QApplicationPrivate::keypadNavigationEnabled() && !hasEditFocus(); #endif @@ -63589,7 +43817,7 @@ index c3bbeeae68..7432eb4eb5 100644 const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme() ->themeHint(QPlatformTheme::ButtonPressKeys) diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp -index 89a9a14743..3f3eccc370 100644 +index 89a9a14743f..3f3eccc3709 100644 --- a/src/widgets/widgets/qgroupbox.cpp +++ b/src/widgets/widgets/qgroupbox.cpp @@ -365,7 +365,7 @@ bool QGroupBox::event(QEvent *e) @@ -63611,1274 +43839,6063 @@ index 89a9a14743..3f3eccc370 100644 || d->pressedControl == QStyle::SC_GroupBoxCheckBox); d->pressedControl = QStyle::SC_None; -- -2.36.0 +2.49.0 -From 319d5da8b2bf34cfa29f89b69dc5328b4463af54 Mon Sep 17 00:00:00 2001 -From: Thiago Macieira <thiago.macieira@intel.com> -Date: Mon, 31 Jan 2022 11:00:19 -0800 -Subject: [PATCH 132/146] QProcess/Unix: ensure we don't accidentally execute - something from CWD +From fb83cd121773c980c12a661d3e63207d267dcfa3 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Wed, 29 Jun 2022 19:39:40 +0800 +Subject: [PATCH 044/123] Drop call to setPlatformScreen in + QHighDpiScaling::setScreenFactor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Unless "." (or the empty string) is in $PATH, we're not supposed to find -executables in the current directory. This is how the Unix shells behave -and we match their behavior. It's also the behavior Qt had prior to 5.9 -(commit 28666d167aa8e602c0bea25ebc4d51b55005db13). On Windows, searching -the current directory is the norm, so we keep that behavior. +Drop call to setPlatformScreen since the only affected variables are +logicalDpi and geometry. Replace setPlatformScreen with updateLogicalDpi +which handles global scale factor changes in QScreen. -This commit does not add an explicit check for an empty return from -QStandardPaths::findExecutable(). Instead, we allow that empty string to -go all the way to execve(2), which will fail with ENOENT. We could catch -it early, before fork(2), but why add code for the error case? +Call updateGeometriesWithSignals() to check if there are any changes +in geometry or availableGeometry, since the geometry or availableGeometry +can also change when setting a scale factor. -See https://kde.org/info/security/advisory-20220131-1.txt +Move setPlatformScreen to QScreen ctor as the function is not used +elsewhere. -[ChangeLog][Important Behavior Changes] When passed a simple program -name with no slashes, QProcess on Unix systems will now only search the -current directory if "." is one of the entries in the PATH environment -variable. This bug fix restores the behavior QProcess had before Qt 5.9. -If launching an executable in the directory set by setWorkingDirectory() -or inherited from the parent is intended, pass a program name starting -with "./". For more information and best practices about finding an -executable, see QProcess' documentation. +Pick-to: 6.4 6.3 6.2 +Change-Id: I7acf40bf0643e89a1d9177674d66dc503829f98f +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +(cherry picked from commit 7b2ae3faab15913e006ece25d785e6a8453dd27a) +--- + src/gui/kernel/qhighdpiscaling.cpp | 3 +-- + src/gui/kernel/qscreen.cpp | 6 ++++++ + src/gui/kernel/qscreen_p.h | 1 + + 3 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp +index 85ff58c14cb..a433e94c228 100644 +--- a/src/gui/kernel/qhighdpiscaling.cpp ++++ b/src/gui/kernel/qhighdpiscaling.cpp +@@ -580,9 +580,8 @@ void QHighDpiScaling::setScreenFactor(QScreen *screen, qreal factor) + else + qNamedScreenScaleFactors()->insert(name, factor); + +- // hack to force re-evaluation of screen geometry + if (screen->handle()) +- screen->d_func()->setPlatformScreen(screen->handle()); // updates geometries based on scale factor ++ screen->d_func()->updateLogicalDpi(); + } + + QPoint QHighDpiScaling::mapPositionToNative(const QPoint &pos, const QPlatformScreen *platformScreen) +diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp +index 990272b0c25..d371dd60ab0 100644 +--- a/src/gui/kernel/qscreen.cpp ++++ b/src/gui/kernel/qscreen.cpp +@@ -77,6 +77,12 @@ QScreen::QScreen(QPlatformScreen *screen) + d->setPlatformScreen(screen); + } + ++void QScreenPrivate::updateLogicalDpi() ++{ ++ logicalDpi = QPlatformScreen::overrideDpi(platformScreen->logicalDpi()); ++ updateGeometriesWithSignals(); // updates geometries based on scale factor ++} ++ + void QScreenPrivate::updateGeometriesWithSignals() + { + const QRect oldGeometry = geometry; +diff --git a/src/gui/kernel/qscreen_p.h b/src/gui/kernel/qscreen_p.h +index 7da542c25eb..e50fc3190b8 100644 +--- a/src/gui/kernel/qscreen_p.h ++++ b/src/gui/kernel/qscreen_p.h +@@ -70,6 +70,7 @@ public: + geometry = platformScreen->deviceIndependentGeometry(); + availableGeometry = QHighDpi::fromNative(platformScreen->availableGeometry(), QHighDpiScaling::factor(platformScreen), geometry.topLeft()); + } ++ void updateLogicalDpi(); + + void updatePrimaryOrientation(); + void updateGeometriesWithSignals(); +-- +2.49.0 -Pick-to: 5.15 6.2 6.3 -Change-Id: I54f205f6b7314351b078fffd16cf7013c97ee9fb -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> +From 55f418c5ba08f12b5aead13574752e8f128872d4 Mon Sep 17 00:00:00 2001 +From: Ilya Fedin <fedin-ilja2010@ya.ru> +Date: Mon, 6 Jun 2022 20:57:22 +0400 +Subject: [PATCH 045/123] Add + QXdgDesktopPortalFileDialog::useNativeFileDialog() + +Task-number: QTBUG-98988 +Pick-to: 6.4 6.3 6.2 5.15 +Change-Id: I39417f089d839a9af009791088bd20058532bd7a +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit 6f9f6849c53e057e8b4186db64a1a6b5e1f31eca) +--- + .../qxdgdesktopportalfiledialog.cpp | 18 ++++++++++++++---- + .../qxdgdesktopportalfiledialog_p.h | 1 + + 2 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp +index c6596c35dea..f2250e9fc97 100644 +--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp ++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp +@@ -330,7 +330,7 @@ QUrl QXdgDesktopPortalFileDialog::directory() const + { + Q_D(const QXdgDesktopPortalFileDialog); + +- if (d->nativeFileDialog && (options()->fileMode() == QFileDialogOptions::Directory || options()->fileMode() == QFileDialogOptions::DirectoryOnly)) ++ if (d->nativeFileDialog && useNativeFileDialog()) + return d->nativeFileDialog->directory(); + + return d->directory; +@@ -352,7 +352,7 @@ QList<QUrl> QXdgDesktopPortalFileDialog::selectedFiles() const + { + Q_D(const QXdgDesktopPortalFileDialog); + +- if (d->nativeFileDialog && (options()->fileMode() == QFileDialogOptions::Directory || options()->fileMode() == QFileDialogOptions::DirectoryOnly)) ++ if (d->nativeFileDialog && useNativeFileDialog()) + return d->nativeFileDialog->selectedFiles(); + + QList<QUrl> files; +@@ -407,7 +407,7 @@ void QXdgDesktopPortalFileDialog::exec() + { + Q_D(QXdgDesktopPortalFileDialog); + +- if (d->nativeFileDialog && (options()->fileMode() == QFileDialogOptions::Directory || options()->fileMode() == QFileDialogOptions::DirectoryOnly)) { ++ if (d->nativeFileDialog && useNativeFileDialog()) { + d->nativeFileDialog->exec(); + return; + } +@@ -436,7 +436,7 @@ bool QXdgDesktopPortalFileDialog::show(Qt::WindowFlags windowFlags, Qt::WindowMo + d->modal = windowModality != Qt::NonModal; + d->winId = parent ? parent->winId() : 0; + +- if (d->nativeFileDialog && (options()->fileMode() == QFileDialogOptions::Directory || options()->fileMode() == QFileDialogOptions::DirectoryOnly)) ++ if (d->nativeFileDialog && useNativeFileDialog()) + return d->nativeFileDialog->show(windowFlags, windowModality, parent); + + openPortal(); +@@ -469,6 +469,16 @@ void QXdgDesktopPortalFileDialog::gotResponse(uint response, const QVariantMap & + } + } + ++bool QXdgDesktopPortalFileDialog::useNativeFileDialog() const ++{ ++ if (options()->fileMode() == QFileDialogOptions::Directory) ++ return true; ++ else if (options()->fileMode() == QFileDialogOptions::DirectoryOnly) ++ return true; ++ ++ return false; ++} ++ + QT_END_NAMESPACE + + #include "moc_qxdgdesktopportalfiledialog_p.cpp" +diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h +index 4f4de96ecf2..5c1231bb54b 100644 +--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h ++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h +@@ -93,6 +93,7 @@ private Q_SLOTS: + private: + void initializeDialog(); + void openPortal(); ++ bool useNativeFileDialog() const; + + QScopedPointer<QXdgDesktopPortalFileDialogPrivate> d_ptr; + }; +-- +2.49.0 + +From c9b43259724a852dd027a1cd289346038ef605a5 Mon Sep 17 00:00:00 2001 +From: Ilya Fedin <fedin-ilja2010@ya.ru> +Date: Wed, 1 Jun 2022 15:40:56 +0400 +Subject: [PATCH 046/123] Fallback to another file dialog implementation when + XDP is inaccessible + +Fixes: QTBUG-98988 +Pick-to: 6.4 6.3 6.2 5.15 +Change-Id: Idca1ab4cae0e9eabebc599f3c8efa136a7973918 +Reviewed-by: Jan Grulich <jgrulich@redhat.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 29fceed2ffb41954a63001414bd042611f2d4980) +(cherry picked from commit fb981a0954119ed0dfa4a402fdef78e7257ffc96) -Note: This currently breaks various autotests, as they rely on the test -helpers (same directory as the test) to be in $PATH. In Qt 6, the CMake -test code sets this explicitly, which is not the case in Qt 5 (yet). +* asturmlechner 2022-06-11: Fix conflict with dev branch commit + ceaa7d6341e666f6fe0d071ea34cad9877961a0e --- - src/corelib/io/qprocess_unix.cpp | 28 +++--- - .../auto/corelib/io/qprocess/tst_qprocess.cpp | 93 ++++++++++++++++++- - .../kernel/qapplication/tst_qapplication.cpp | 4 +- - 3 files changed, 109 insertions(+), 16 deletions(-) - -diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp -index 50390e57f5..15c8f30745 100644 ---- a/src/corelib/io/qprocess_unix.cpp -+++ b/src/corelib/io/qprocess_unix.cpp -@@ -1,7 +1,7 @@ - /**************************************************************************** - ** - ** Copyright (C) 2016 The Qt Company Ltd. --** Copyright (C) 2016 Intel Corporation. -+** Copyright (C) 2022 Intel Corporation. - ** Contact: https://www.qt.io/licensing/ - ** - ** This file is part of the QtCore module of the Qt Toolkit. -@@ -422,14 +422,15 @@ void QProcessPrivate::startProcess() - // Add the program name to the argument list. - argv[0] = nullptr; - if (!program.contains(QLatin1Char('/'))) { -+ // findExecutable() returns its argument if it's an absolute path, -+ // otherwise it searches $PATH; returns empty if not found (we handle -+ // that case much later) - const QString &exeFilePath = QStandardPaths::findExecutable(program); -- if (!exeFilePath.isEmpty()) { -- const QByteArray &tmp = QFile::encodeName(exeFilePath); -- argv[0] = ::strdup(tmp.constData()); -- } -- } -- if (!argv[0]) -+ const QByteArray &tmp = QFile::encodeName(exeFilePath); -+ argv[0] = ::strdup(tmp.constData()); -+ } else { - argv[0] = ::strdup(encodedProgramName.constData()); -+ } + .../qxdgdesktopportalfiledialog.cpp | 68 +++++++++++-------- + .../qxdgdesktopportalfiledialog_p.h | 11 ++- + .../qxdgdesktopportaltheme.cpp | 7 +- + 3 files changed, 53 insertions(+), 33 deletions(-) + +diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp +index f2250e9fc97..8987e3efd0d 100644 +--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp ++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp +@@ -102,15 +102,12 @@ const QDBusArgument &operator >>(const QDBusArgument &arg, QXdgDesktopPortalFile + class QXdgDesktopPortalFileDialogPrivate + { + public: +- QXdgDesktopPortalFileDialogPrivate(QPlatformFileDialogHelper *nativeFileDialog) ++ QXdgDesktopPortalFileDialogPrivate(QPlatformFileDialogHelper *nativeFileDialog, uint fileChooserPortalVersion) + : nativeFileDialog(nativeFileDialog) ++ , fileChooserPortalVersion(fileChooserPortalVersion) + { } + +- WId winId = 0; +- bool directoryMode = false; +- bool modal = false; +- bool multipleFiles = false; +- bool saveFile = false; ++ QEventLoop loop; + QString acceptLabel; + QString directory; + QString title; +@@ -122,11 +119,16 @@ public: + QString selectedNameFilter; + QStringList selectedFiles; + std::unique_ptr<QPlatformFileDialogHelper> nativeFileDialog; ++ uint fileChooserPortalVersion = 0; ++ bool failedToOpen = false; ++ bool directoryMode = false; ++ bool multipleFiles = false; ++ bool saveFile = false; + }; - // Add every argument to the list - for (int i = 0; i < arguments.count(); ++i) -@@ -983,15 +984,16 @@ bool QProcessPrivate::startDetached(qint64 *pid) - envp = _q_dupEnvironment(environment.d.constData()->vars, &envc); - } +-QXdgDesktopPortalFileDialog::QXdgDesktopPortalFileDialog(QPlatformFileDialogHelper *nativeFileDialog) ++QXdgDesktopPortalFileDialog::QXdgDesktopPortalFileDialog(QPlatformFileDialogHelper *nativeFileDialog, uint fileChooserPortalVersion) + : QPlatformFileDialogHelper() +- , d_ptr(new QXdgDesktopPortalFileDialogPrivate(nativeFileDialog)) ++ , d_ptr(new QXdgDesktopPortalFileDialogPrivate(nativeFileDialog, fileChooserPortalVersion)) + { + Q_D(QXdgDesktopPortalFileDialog); + +@@ -134,6 +136,9 @@ QXdgDesktopPortalFileDialog::QXdgDesktopPortalFileDialog(QPlatformFileDialogHelp + connect(d->nativeFileDialog.get(), SIGNAL(accept()), this, SIGNAL(accept())); + connect(d->nativeFileDialog.get(), SIGNAL(reject()), this, SIGNAL(reject())); + } ++ ++ d->loop.connect(this, SIGNAL(accept()), SLOT(quit())); ++ d->loop.connect(this, SIGNAL(reject()), SLOT(quit())); + } -- QByteArray tmp; - if (!program.contains(QLatin1Char('/'))) { -+ // findExecutable() returns its argument if it's an absolute path, -+ // otherwise it searches $PATH; returns empty if not found (we handle -+ // that case much later) - const QString &exeFilePath = QStandardPaths::findExecutable(program); -- if (!exeFilePath.isEmpty()) -- tmp = QFile::encodeName(exeFilePath); -+ const QByteArray &tmp = QFile::encodeName(exeFilePath); -+ argv[0] = ::strdup(tmp.constData()); + QXdgDesktopPortalFileDialog::~QXdgDesktopPortalFileDialog() +@@ -177,7 +182,7 @@ void QXdgDesktopPortalFileDialog::initializeDialog() + setDirectory(options()->initialDirectory()); + } + +-void QXdgDesktopPortalFileDialog::openPortal() ++void QXdgDesktopPortalFileDialog::openPortal(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) + { + Q_D(QXdgDesktopPortalFileDialog); + +@@ -185,13 +190,13 @@ void QXdgDesktopPortalFileDialog::openPortal() + QLatin1String("/org/freedesktop/portal/desktop"), + QLatin1String("org.freedesktop.portal.FileChooser"), + d->saveFile ? QLatin1String("SaveFile") : QLatin1String("OpenFile")); +- QString parentWindowId = QLatin1String("x11:") + QString::number(d->winId, 16); ++ QString parentWindowId = QLatin1String("x11:") + QString::number(parent ? parent->winId() : 0, 16); + + QVariantMap options; + if (!d->acceptLabel.isEmpty()) + options.insert(QLatin1String("accept_label"), d->acceptLabel); + +- options.insert(QLatin1String("modal"), d->modal); ++ options.insert(QLatin1String("modal"), windowModality != Qt::NonModal); + options.insert(QLatin1String("multiple"), d->multipleFiles); + options.insert(QLatin1String("directory"), d->directoryMode); + +@@ -293,10 +298,18 @@ void QXdgDesktopPortalFileDialog::openPortal() + + QDBusPendingCall pendingCall = QDBusConnection::sessionBus().asyncCall(message); + QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pendingCall); +- connect(watcher, &QDBusPendingCallWatcher::finished, this, [this] (QDBusPendingCallWatcher *watcher) { ++ connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] (QDBusPendingCallWatcher *watcher) { + QDBusPendingReply<QDBusObjectPath> reply = *watcher; +- if (reply.isError()) { +- Q_EMIT reject(); ++ // Any error means the dialog is not shown and we need to fallback ++ d->failedToOpen = reply.isError(); ++ if (d->failedToOpen) { ++ if (d->nativeFileDialog) { ++ d->nativeFileDialog->show(windowFlags, windowModality, parent); ++ if (d->loop.isRunning()) ++ d->nativeFileDialog->exec(); + } else { -+ argv[0] = ::strdup(QFile::encodeName(program)); - } -- if (tmp.isEmpty()) -- tmp = QFile::encodeName(program); -- argv[0] = tmp.data(); - - if (envp) - qt_safe_execve(argv[0], argv, envp); -diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp -index bc9df3f1f3..33051d3803 100644 ---- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp -+++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp -@@ -1,7 +1,7 @@ - /**************************************************************************** - ** - ** Copyright (C) 2020 The Qt Company Ltd. --** Copyright (C) 2020 Intel Corporation. -+** Copyright (C) 2022 Intel Corporation. - ** Contact: https://www.qt.io/licensing/ - ** - ** This file is part of the test suite of the Qt Toolkit. -@@ -149,6 +149,8 @@ private slots: - void startStopStartStopBuffers(); - void processEventsInAReadyReadSlot_data(); - void processEventsInAReadyReadSlot(); -+ void startFromCurrentWorkingDir_data(); -+ void startFromCurrentWorkingDir(); - - // keep these at the end, since they use lots of processes and sometimes - // caused obscure failures to occur in tests that followed them (esp. on the Mac) -@@ -2732,5 +2734,94 @@ void tst_QProcess::finishProcessBeforeReadingDone_deprecated() ++ Q_EMIT reject(); ++ } + } else { + QDBusConnection::sessionBus().connect(nullptr, + reply.value().path(), +@@ -413,10 +426,7 @@ void QXdgDesktopPortalFileDialog::exec() + } - #endif + // HACK we have to avoid returning until we emit that the dialog was accepted or rejected +- QEventLoop loop; +- loop.connect(this, SIGNAL(accept()), SLOT(quit())); +- loop.connect(this, SIGNAL(reject()), SLOT(quit())); +- loop.exec(); ++ d->loop.exec(); + } -+enum class ChdirMode { -+ None = 0, -+ InParent, -+ InChild -+}; -+Q_DECLARE_METATYPE(ChdirMode) + void QXdgDesktopPortalFileDialog::hide() +@@ -433,13 +443,10 @@ bool QXdgDesktopPortalFileDialog::show(Qt::WindowFlags windowFlags, Qt::WindowMo + + initializeDialog(); + +- d->modal = windowModality != Qt::NonModal; +- d->winId = parent ? parent->winId() : 0; +- +- if (d->nativeFileDialog && useNativeFileDialog()) ++ if (d->nativeFileDialog && useNativeFileDialog(OpenFallback)) + return d->nativeFileDialog->show(windowFlags, windowModality, parent); + +- openPortal(); ++ openPortal(windowFlags, windowModality, parent); + + return true; + } +@@ -469,13 +476,20 @@ void QXdgDesktopPortalFileDialog::gotResponse(uint response, const QVariantMap & + } + } + +-bool QXdgDesktopPortalFileDialog::useNativeFileDialog() const ++bool QXdgDesktopPortalFileDialog::useNativeFileDialog(QXdgDesktopPortalFileDialog::FallbackType fallbackType) const + { +- if (options()->fileMode() == QFileDialogOptions::Directory) +- return true; +- else if (options()->fileMode() == QFileDialogOptions::DirectoryOnly) ++ Q_D(const QXdgDesktopPortalFileDialog); ++ ++ if (d->failedToOpen && fallbackType != OpenFallback) + return true; + ++ if (d->fileChooserPortalVersion < 3) { ++ if (options()->fileMode() == QFileDialogOptions::Directory) ++ return true; ++ else if (options()->fileMode() == QFileDialogOptions::DirectoryOnly) ++ return true; ++ } ++ + return false; + } + +diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h +index 5c1231bb54b..65e22a5cf2a 100644 +--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h ++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog_p.h +@@ -51,6 +51,11 @@ class QXdgDesktopPortalFileDialog : public QPlatformFileDialogHelper + Q_OBJECT + Q_DECLARE_PRIVATE(QXdgDesktopPortalFileDialog) + public: ++ enum FallbackType { ++ GenericFallback, ++ OpenFallback ++ }; ++ + enum ConditionType : uint { + GlobalPattern = 0, + MimeType = 1 +@@ -69,7 +74,7 @@ public: + }; + typedef QVector<Filter> FilterList; + +- QXdgDesktopPortalFileDialog(QPlatformFileDialogHelper *nativeFileDialog = nullptr); ++ QXdgDesktopPortalFileDialog(QPlatformFileDialogHelper *nativeFileDialog = nullptr, uint fileChooserPortalVersion = 0); + ~QXdgDesktopPortalFileDialog(); + + bool defaultNameFilterDisables() const override; +@@ -92,8 +97,8 @@ private Q_SLOTS: + + private: + void initializeDialog(); +- void openPortal(); +- bool useNativeFileDialog() const; ++ void openPortal(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent); ++ bool useNativeFileDialog(FallbackType fallbackType = GenericFallback) const; + + QScopedPointer<QXdgDesktopPortalFileDialogPrivate> d_ptr; + }; +diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp +index 2fc3167fd58..b809503122f 100644 +--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp ++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp +@@ -153,11 +153,12 @@ QPlatformDialogHelper* QXdgDesktopPortalTheme::createPlatformDialogHelper(Dialog + { + Q_D(const QXdgDesktopPortalTheme); + +- if (type == FileDialog) { ++ if (type == FileDialog && d->fileChooserPortalVersion) { + // Older versions of FileChooser portal don't support opening directories, therefore we fallback + // to native file dialog opened inside the sandbox to open a directory. +- if (d->fileChooserPortalVersion < 3 && d->baseTheme->usePlatformNativeDialog(type)) +- return new QXdgDesktopPortalFileDialog(static_cast<QPlatformFileDialogHelper*>(d->baseTheme->createPlatformDialogHelper(type))); ++ if (d->baseTheme->usePlatformNativeDialog(type)) ++ return new QXdgDesktopPortalFileDialog(static_cast<QPlatformFileDialogHelper*>(d->baseTheme->createPlatformDialogHelper(type)), ++ d->fileChooserPortalVersion); + + return new QXdgDesktopPortalFileDialog; + } +-- +2.49.0 + +From 1ec51b6dd57f97705f5a56134c05c38b95046352 Mon Sep 17 00:00:00 2001 +From: Jonas Kvinge <jonas@jkvinge.net> +Date: Mon, 16 Aug 2021 22:01:39 +0200 +Subject: [PATCH 047/123] Fix compile with MinGW-W64 9.0.0: Redefinition of + 'struct _FILE_ID_INFO' + +With MinGW-W64 9.0.0, _WIN32_WINNT is set to Windows 10 by default, so +_FILE_ID_INFO is already defined. + +Fixes: QTBUG-94031 +Pick-to: 6.2 +Change-Id: I0b29a4a1932425e1c4079aba6768fe94460c60af +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> +(cherry picked from commit 4ddbfb68f858aee45cf7c33718f16b6c7b5beed7) +--- + src/corelib/io/qfilesystemengine_win.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp +index 002f720926a..e6f118a5c44 100644 +--- a/src/corelib/io/qfilesystemengine_win.cpp ++++ b/src/corelib/io/qfilesystemengine_win.cpp +@@ -664,14 +664,14 @@ QFileSystemEntry QFileSystemEngine::absoluteName(const QFileSystemEntry &entry) + return QFileSystemEntry(ret, QFileSystemEntry::FromInternalPath()); + } + +-#if defined(Q_CC_MINGW) && WINVER < 0x0602 // Windows 8 onwards ++#if defined(Q_CC_MINGW) && WINVER < 0x0602 && _WIN32_WINNT < _WIN32_WINNT_WIN8 // Windows 8 onwards + + typedef struct _FILE_ID_INFO { + ULONGLONG VolumeSerialNumber; + FILE_ID_128 FileId; + } FILE_ID_INFO, *PFILE_ID_INFO; + +-#endif // if defined (Q_CC_MINGW) && WINVER < 0x0602 ++#endif // if defined(Q_CC_MINGW) && WINVER < 0x0602 && _WIN32_WINNT < _WIN32_WINNT_WIN8 + + // File ID for Windows up to version 7 and FAT32 drives + static inline QByteArray fileId(HANDLE handle) +-- +2.49.0 + +From 334fde57b1b95d024d0557765b462c05b2a6ee6e Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer <volker.hilsheimer@qt.io> +Date: Thu, 28 Jul 2022 16:31:18 +0200 +Subject: [PATCH 048/123] Revert "CUPS: Add support for accessible IPP + printers" + +This reverts commit 2f5f276b4a2a19b9f2669b84f28ce8e970aaa39f, +after which valid printers are no longer listed anymore. + +Fixes: QTBUG-105242 +Pick-to: 6.2 6.3 6.4 5.15 +Change-Id: I6a388acff2a8033ad1052319edcf7e41a2f72c8f +Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> +(cherry-picked from commit f387bb55d4060c6bfac0cd6da736c80dd9a47066) + +* asturmlechner 2022-07-28: This actually reverts commit + 8d2c1e277f984bd4d2b98a4d58f23e578b677fd8 from kde/5.15 branch. +--- + src/plugins/printsupport/cups/qcupsprintersupport.cpp | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/src/plugins/printsupport/cups/qcupsprintersupport.cpp b/src/plugins/printsupport/cups/qcupsprintersupport.cpp +index 1131d43f646..42a7a821f2d 100644 +--- a/src/plugins/printsupport/cups/qcupsprintersupport.cpp ++++ b/src/plugins/printsupport/cups/qcupsprintersupport.cpp +@@ -165,12 +165,9 @@ QStringList QCupsPrinterSupport::availablePrintDeviceIds() const + list.reserve(count); + for (int i = 0; i < count; ++i) { + QString printerId = QString::fromLocal8Bit(dests[i].name); +- if (dests[i].instance) { ++ if (dests[i].instance) + printerId += QLatin1Char('/') + QString::fromLocal8Bit(dests[i].instance); +- list.append(printerId); +- } else if (cupsGetOption("printer-uri-supported", dests[i].num_options, dests[i].options)) { +- list.append(printerId); +- } ++ list.append(printerId); + } + cupsFreeDests(count, dests); + return list; +-- +2.49.0 + +From 3e70f93449848be7f7612924852626a58bf00a77 Mon Sep 17 00:00:00 2001 +From: Tang Haixiang <tanghaixiang@uniontech.com> +Date: Thu, 25 Feb 2021 18:05:17 +0800 +Subject: [PATCH 049/123] xcb: Update _NET_SUPPORTED when the window manager + changes it +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In some cases, the application may start before the window manager, and in some window managers +_NET_SUPPORTED may be changed. These situations will cause the _NET_SUPPORTED value obtained by Qt +to be inconsistent with the window manager. + +Fixes: QTBUG-91396 +Change-Id: I63c6934ad2538cdb9f05926b3748216bd0dcf04e +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> + + +(cherry picked from commit acb0065cc7e4ee849cc87ce72e46b05a61370c43) +--- + src/plugins/platforms/xcb/qxcbconnection.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp +index 013ca7369f3..631ade2ec71 100644 +--- a/src/plugins/platforms/xcb/qxcbconnection.cpp ++++ b/src/plugins/platforms/xcb/qxcbconnection.cpp +@@ -706,6 +706,8 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event) + QXcbVirtualDesktop *virtualDesktop = virtualDesktopForRootWindow(propertyNotify->window); + if (virtualDesktop) + virtualDesktop->updateWorkArea(); ++ } else if (propertyNotify->atom == atom(QXcbAtom::_NET_SUPPORTED)) { ++ m_wmSupport->updateNetWMAtoms(); + } else { + HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent); + } +-- +2.49.0 + +From fa356ebb2d3a588a3b5c3b7a8fae2faceaf0761b Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Mon, 18 Jul 2022 12:26:36 +0200 +Subject: [PATCH 050/123] fix AT_SPI_BUS_ADDRESS actually working + +the previous invocation wasn't working because QSpiAccessibleBridge +first needs to construct the connection before it can connect to the +enabledChanged signal that gets emitted as part of connectA11yBus, +effectively missing the signal emission because the connection wasn't +established by the time the emit happens. delay the signal emission +through the eventloop so the caller has time to connect to all signals. + +https://bugs.kde.org/show_bug.cgi?id=452132 + +Change-Id: I1cf9fdd824b2c118cc6278b207aaaedeff259bb1 +Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> +(cherry picked from commit be09628e151f26f602024bae6a957ffb27ac872d) +--- + .../linuxaccessibility/dbusconnection.cpp | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/platformsupport/linuxaccessibility/dbusconnection.cpp b/src/platformsupport/linuxaccessibility/dbusconnection.cpp +index 17fc130ed87..0e5af37e3f8 100644 +--- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp ++++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp +@@ -72,8 +72,15 @@ DBusConnection::DBusConnection(QObject *parent) + // If the bus is explicitly set via env var it overrides everything else. + QByteArray addressEnv = qgetenv("AT_SPI_BUS_ADDRESS"); + if (!addressEnv.isEmpty()) { +- m_enabled = true; +- connectA11yBus(QString::fromLocal8Bit(addressEnv)); ++ // Only connect on next loop run, connections to our enabled signal are ++ // only established after the ctor returns. ++ metaObject()->invokeMethod( ++ this, ++ [this, addressEnv] { ++ m_enabled = true; ++ connectA11yBus(QString::fromLocal8Bit(addressEnv)); ++ }, ++ Qt::QueuedConnection); + return; + } + +-- +2.49.0 + +From f1bf41c2e13eefaafaaa2bcee20db34779cf47c6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> +Date: Mon, 25 Jul 2022 10:26:20 +0200 +Subject: [PATCH 051/123] Use class scope to refer to static function + +The call to metaObject() in the ctor may generate a warning since it +calls a virtual function during construction. + +Amends be09628e151f26f602024bae6a957ffb27ac872d + +Change-Id: I27472786b41624d582525c4260a54db61ee7ed16 +Reviewed-by: Harald Sitter <sitter@kde.org> +Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> +(cherry picked from commit afbae9c2acf8d5c0846a87f03edfb9407672e9ee) +--- + src/platformsupport/linuxaccessibility/dbusconnection.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/platformsupport/linuxaccessibility/dbusconnection.cpp b/src/platformsupport/linuxaccessibility/dbusconnection.cpp +index 0e5af37e3f8..cc734abc639 100644 +--- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp ++++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp +@@ -74,7 +74,7 @@ DBusConnection::DBusConnection(QObject *parent) + if (!addressEnv.isEmpty()) { + // Only connect on next loop run, connections to our enabled signal are + // only established after the ctor returns. +- metaObject()->invokeMethod( ++ QMetaObject::invokeMethod( + this, + [this, addressEnv] { + m_enabled = true; +-- +2.49.0 + +From c9e7c4ece61e85f9ab26246651c5d1f34d1c1907 Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Mon, 11 Jul 2022 14:45:40 +0200 +Subject: [PATCH 052/123] add color picking support on wayland using the XDG + desktop portal + +On wayland applications are not trusted to perform screen grabs by +default, it is however possible to let the user specifically pick the +color of a pixel using the XDG desktop portal (otherwise used for +sandboxing etc.). Try to use this portal on unix systems by default. + +To support this use case some extra abstraction is necessary as this +constitutes a platformservice rather than a platform feature. To that +end the QPlatformService has gained a capability system and a pure +virtual helper class to facilitate asynchronous color picking. When +supported the color picking capability takes precedence over the custom +picking code in QColorDialog. + +Fixes: QTBUG-81538 +Change-Id: I4acb3af11d459e9d5ebefe5abbb41e50e3ccf7f0 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit b646c7b76c7787cff57bca0fde04d9f58abdfbb8) +--- + src/gui/kernel/qplatformservices.cpp | 24 +++ + src/gui/kernel/qplatformservices.h | 20 +++ + .../genericunix/qgenericunixservices.cpp | 154 ++++++++++++++++++ + .../genericunix/qgenericunixservices_p.h | 7 +- + src/widgets/dialogs/qcolordialog.cpp | 17 ++ + 5 files changed, 221 insertions(+), 1 deletion(-) + +diff --git a/src/gui/kernel/qplatformservices.cpp b/src/gui/kernel/qplatformservices.cpp +index fdc6a6c4aab..ac47f98c5de 100644 +--- a/src/gui/kernel/qplatformservices.cpp ++++ b/src/gui/kernel/qplatformservices.cpp +@@ -55,6 +55,19 @@ QT_BEGIN_NAMESPACE + \brief The QPlatformServices provides the backend for desktop-related functionality. + */ + ++/*! ++ \enum QPlatformServices::Capability ++ ++ Capabilities are used to determine a specific platform service's availability. + -+void tst_QProcess::startFromCurrentWorkingDir_data() ++ \value ColorPickingFromScreen The platform natively supports color picking from screen. ++ This capability indicates that the platform supports "opaque" color picking, where the ++ platform implements a complete user experience for color picking and outputs a color. ++ This is in contrast to the application implementing the color picking user experience ++ (taking care of showing a cross hair, instructing the platform integration to obtain ++ the color at a given pixel, etc.). The related service function is pickColor(). ++ */ ++ + QPlatformServices::QPlatformServices() + { } + +@@ -85,5 +98,16 @@ QByteArray QPlatformServices::desktopEnvironment() const + return QByteArray("UNKNOWN"); + } + ++QPlatformServiceColorPicker *QPlatformServices::colorPicker(QWindow *parent) +{ -+ qRegisterMetaType<ChdirMode>(); -+ QTest::addColumn<QString>("programPrefix"); -+ QTest::addColumn<ChdirMode>("chdirMode"); -+ QTest::addColumn<bool>("success"); ++ Q_UNUSED(parent); ++ return nullptr; ++} + -+ constexpr bool IsWindows = true -+#ifdef Q_OS_UNIX -+ && false -+#endif -+ ; ++bool QPlatformServices::hasCapability(Capability capability) const ++{ ++ Q_UNUSED(capability) ++ return false; ++} + + QT_END_NAMESPACE +diff --git a/src/gui/kernel/qplatformservices.h b/src/gui/kernel/qplatformservices.h +index 5de96cfa7d1..a8b2a4ce716 100644 +--- a/src/gui/kernel/qplatformservices.h ++++ b/src/gui/kernel/qplatformservices.h +@@ -50,16 +50,32 @@ + // + + #include <QtGui/qtguiglobal.h> ++#include <QtCore/qobject.h> + + QT_BEGIN_NAMESPACE + + class QUrl; ++class QWindow; + -+ // baseline: trying to execute the directory, this can't possibly succeed! -+ QTest::newRow("plain-same-cwd") << QString() << ChdirMode::None << false; ++class Q_GUI_EXPORT QPlatformServiceColorPicker : public QObject ++{ ++ Q_OBJECT ++public: ++ using QObject::QObject; ++ virtual void pickColor() = 0; ++Q_SIGNALS: ++ void colorPicked(const QColor &color); ++}; + + class Q_GUI_EXPORT QPlatformServices + { + public: + Q_DISABLE_COPY_MOVE(QPlatformServices) + ++ enum Capability { ++ ColorPicking, ++ }; + -+ // cross-platform behavior: neither OS searches the setWorkingDirectory() -+ // dir without "./" -+ QTest::newRow("plain-child-chdir") << QString() << ChdirMode::InChild << false; + QPlatformServices(); + virtual ~QPlatformServices() { } + +@@ -67,6 +83,10 @@ public: + virtual bool openDocument(const QUrl &url); + + virtual QByteArray desktopEnvironment() const; + -+ // cross-platform behavior: both OSes search the parent's CWD with "./" -+ QTest::newRow("prefixed-parent-chdir") << "./" << ChdirMode::InParent << true; ++ virtual bool hasCapability(Capability capability) const; + -+ // opposite behaviors: Windows searches the parent's CWD and Unix searches -+ // the child's with "./" -+ QTest::newRow("prefixed-child-chdir") << "./" << ChdirMode::InChild << !IsWindows; ++ virtual QPlatformServiceColorPicker *colorPicker(QWindow *parent = nullptr); + }; + + QT_END_NAMESPACE +diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +index f0d1722c95a..fa92a0dfa61 100644 +--- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp ++++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +@@ -58,6 +58,10 @@ + #include <QtCore/QFileInfo> + #include <QtCore/QUrlQuery> + ++#include <QtGui/QColor> ++#include <QtGui/QGuiApplication> ++#include <QtGui/QWindow> + -+ // Windows searches the parent's CWD without "./" -+ QTest::newRow("plain-parent-chdir") << QString() << ChdirMode::InParent << IsWindows; + #include <QtDBus/QDBusConnection> + #include <QtDBus/QDBusMessage> + #include <QtDBus/QDBusPendingCall> +@@ -298,8 +302,132 @@ static inline QDBusMessage xdgDesktopPortalSendEmail(const QUrl &url) + + return QDBusConnection::sessionBus().call(message); + } ++ ++namespace { ++struct XDGDesktopColor ++{ ++ double r = 0; ++ double g = 0; ++ double b = 0; ++ ++ QColor toQColor() const ++ { ++ constexpr auto rgbMax = 255; ++ return { static_cast<int>(r * rgbMax), static_cast<int>(g * rgbMax), ++ static_cast<int>(b * rgbMax) }; ++ } ++}; ++ ++const QDBusArgument &operator>>(const QDBusArgument &argument, XDGDesktopColor &myStruct) ++{ ++ argument.beginStructure(); ++ argument >> myStruct.r >> myStruct.g >> myStruct.b; ++ argument.endStructure(); ++ return argument; +} + -+void tst_QProcess::startFromCurrentWorkingDir() ++class XdgDesktopPortalColorPicker : public QPlatformServiceColorPicker +{ -+ QFETCH(QString, programPrefix); -+ QFETCH(ChdirMode, chdirMode); -+ QFETCH(bool, success); ++ Q_OBJECT ++public: ++ XdgDesktopPortalColorPicker(const QString &parentWindowId, QWindow *parent) ++ : QPlatformServiceColorPicker(parent), m_parentWindowId(parentWindowId) ++ { ++ } ++ ++ void pickColor() override ++ { ++ // DBus signature: ++ // PickColor (IN s parent_window, ++ // IN a{sv} options ++ // OUT o handle) ++ // Options: ++ // handle_token (s) - A string that will be used as the last element of the @handle. ++ ++ QDBusMessage message = QDBusMessage::createMethodCall( ++ QStringLiteral("org.freedesktop.portal.Desktop"), QStringLiteral("/org/freedesktop/portal/desktop"), ++ QStringLiteral("org.freedesktop.portal.Screenshot"), QStringLiteral("PickColor")); ++ message << m_parentWindowId << QVariantMap(); ++ ++ QDBusPendingCall pendingCall = QDBusConnection::sessionBus().asyncCall(message); ++ auto watcher = new QDBusPendingCallWatcher(pendingCall, this); ++ connect(watcher, &QDBusPendingCallWatcher::finished, this, ++ [this](QDBusPendingCallWatcher *watcher) { ++ watcher->deleteLater(); ++ QDBusPendingReply<QDBusObjectPath> reply = *watcher; ++ if (reply.isError()) { ++ qWarning("DBus call to pick color failed: %s", ++ qPrintable(reply.error().message())); ++ Q_EMIT colorPicked({}); ++ } else { ++ QDBusConnection::sessionBus().connect( ++ QStringLiteral("org.freedesktop.portal.Desktop"), reply.value().path(), ++ QStringLiteral("org.freedesktop.portal.Request"), QStringLiteral("Response"), this, ++ // clang-format off ++ SLOT(gotColorResponse(uint,QVariantMap)) ++ // clang-format on ++ ); ++ } ++ }); ++ } ++ ++private Q_SLOTS: ++ void gotColorResponse(uint result, const QVariantMap &map) ++ { ++ if (result != 0) ++ return; ++ XDGDesktopColor color{}; ++ map.value(QStringLiteral("color")).value<QDBusArgument>() >> color; ++ Q_EMIT colorPicked(color.toQColor()); ++ deleteLater(); ++ } + -+ QProcess process; -+ qRegisterMetaType<QProcess::ProcessError>(); -+ QSignalSpy errorSpy(&process, &QProcess::errorOccurred); -+ QVERIFY(errorSpy.isValid()); ++private: ++ const QString m_parentWindowId; ++}; ++} // namespace + -+ // both the dir name and the executable name -+ const QString target = QStringLiteral("testProcessNormal"); -+ process.setProgram(programPrefix + target); + #endif // QT_CONFIG(dbus) + ++QGenericUnixServices::QGenericUnixServices() ++{ ++#if QT_CONFIG(dbus) ++ QDBusMessage message = QDBusMessage::createMethodCall( ++ QStringLiteral("org.freedesktop.portal.Desktop"), QStringLiteral("/org/freedesktop/portal/desktop"), ++ QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("Get")); ++ message << QStringLiteral("org.freedesktop.portal.Screenshot") ++ << QStringLiteral("version"); ++ ++ QDBusPendingCall pendingCall = QDBusConnection::sessionBus().asyncCall(message); ++ auto watcher = new QDBusPendingCallWatcher(pendingCall); ++ QObject::connect(watcher, &QDBusPendingCallWatcher::finished, watcher, ++ [this](QDBusPendingCallWatcher *watcher) { ++ watcher->deleteLater(); ++ QDBusPendingReply<QVariant> reply = *watcher; ++ if (!reply.isError() && reply.value().toUInt() >= 2) ++ m_hasScreenshotPortalWithColorPicking = true; ++ }); + -+#ifdef Q_OS_UNIX -+ // Reset PATH, to be sure it doesn't contain . or the empty path. -+ // We can't do this on Windows because DLLs are searched in PATH -+ // and Windows always searches "." anyway. -+ auto restoreEnv = qScopeGuard([old = qgetenv("PATH")] { -+ qputenv("PATH", old); -+ }); -+ qputenv("PATH", "/"); +#endif ++} + -+ switch (chdirMode) { -+ case ChdirMode::InParent: { -+ auto restoreCwd = qScopeGuard([old = QDir::currentPath()] { -+ QDir::setCurrent(old); -+ }); -+ QVERIFY(QDir::setCurrent(target)); -+ process.start(); -+ break; -+ } -+ case ChdirMode::InChild: -+ process.setWorkingDirectory(target); -+ Q_FALLTHROUGH(); -+ case ChdirMode::None: -+ process.start(); -+ break; ++QPlatformServiceColorPicker *QGenericUnixServices::colorPicker(QWindow *parent) ++{ ++#if QT_CONFIG(dbus) ++ // Make double sure that we are in a wayland environment. In particular check ++ // WAYLAND_DISPLAY so also XWayland apps benefit from portal-based color picking. ++ // Outside wayland we'll rather rely on other means than the XDG desktop portal. ++ if (!qEnvironmentVariableIsEmpty("WAYLAND_DISPLAY") ++ || QGuiApplication::platformName().startsWith(QLatin1String("wayland"))) { ++ return new XdgDesktopPortalColorPicker(portalWindowIdentifier(parent), parent); + } ++ return nullptr; ++#else ++ Q_UNUSED(parent); ++ return nullptr; ++#endif ++} + -+ QCOMPARE(process.waitForStarted(), success); -+ QCOMPARE(errorSpy.count(), int(!success)); -+ if (success) { -+ QVERIFY(process.waitForFinished()); -+ } else { -+ QCOMPARE(process.error(), QProcess::FailedToStart); + QByteArray QGenericUnixServices::desktopEnvironment() const + { + static const QByteArray result = detectDesktopEnvironment(); +@@ -354,6 +482,8 @@ bool QGenericUnixServices::openDocument(const QUrl &url) + } + + #else ++QGenericUnixServices::QGenericUnixServices() = default; ++ + QByteArray QGenericUnixServices::desktopEnvironment() const + { + return QByteArrayLiteral("UNKNOWN"); +@@ -373,6 +503,30 @@ bool QGenericUnixServices::openDocument(const QUrl &url) + return false; + } + ++QPlatformServiceColorPicker *QGenericUnixServices::colorPicker(QWindow *parent) ++{ ++ Q_UNUSED(parent); ++ return nullptr; ++} ++ + #endif // QT_NO_MULTIPROCESS + ++QString QGenericUnixServices::portalWindowIdentifier(QWindow *window) ++{ ++ if (QGuiApplication::platformName() == QLatin1String("xcb")) ++ return QStringLiteral("x11:") + QString::number(window->winId(), 16); ++ return QString(); ++} ++ ++bool QGenericUnixServices::hasCapability(Capability capability) const ++{ ++ switch (capability) { ++ case Capability::ColorPicking: ++ return m_hasScreenshotPortalWithColorPicking; + } ++ return false; +} + - QTEST_MAIN(tst_QProcess) - #include "tst_qprocess.moc" -diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp -index a3b8ef78d8..4955cebd5d 100644 ---- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp -+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp -@@ -1498,7 +1498,7 @@ void tst_QApplication::desktopSettingsAware() - environment += QLatin1String("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM=1"); - testProcess.setEnvironment(environment); - #endif -- testProcess.start("desktopsettingsaware_helper"); -+ testProcess.start("./desktopsettingsaware_helper"); - QVERIFY2(testProcess.waitForStarted(), - qPrintable(QString::fromLatin1("Cannot start 'desktopsettingsaware_helper': %1").arg(testProcess.errorString()))); - QVERIFY(testProcess.waitForFinished(10000)); -@@ -2452,7 +2452,7 @@ void tst_QApplication::qtbug_12673() - #if QT_CONFIG(process) - QProcess testProcess; - QStringList arguments; -- testProcess.start("modal_helper", arguments); -+ testProcess.start("./modal_helper", arguments); - QVERIFY2(testProcess.waitForStarted(), - qPrintable(QString::fromLatin1("Cannot start 'modal_helper': %1").arg(testProcess.errorString()))); - QVERIFY(testProcess.waitForFinished(20000)); + QT_END_NAMESPACE ++ ++#include "qgenericunixservices.moc" +diff --git a/src/platformsupport/services/genericunix/qgenericunixservices_p.h b/src/platformsupport/services/genericunix/qgenericunixservices_p.h +index 8ac3de6f03c..30924e64bd5 100644 +--- a/src/platformsupport/services/genericunix/qgenericunixservices_p.h ++++ b/src/platformsupport/services/genericunix/qgenericunixservices_p.h +@@ -59,16 +59,21 @@ QT_BEGIN_NAMESPACE + class QGenericUnixServices : public QPlatformServices + { + public: +- QGenericUnixServices() {} ++ QGenericUnixServices(); + + QByteArray desktopEnvironment() const override; + ++ bool hasCapability(Capability capability) const override; + bool openUrl(const QUrl &url) override; + bool openDocument(const QUrl &url) override; ++ QPlatformServiceColorPicker *colorPicker(QWindow *parent = nullptr) override; ++ ++ virtual QString portalWindowIdentifier(QWindow *window); + + private: + QString m_webBrowser; + QString m_documentLauncher; ++ bool m_hasScreenshotPortalWithColorPicking = false; + }; + + QT_END_NAMESPACE +diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp +index 4247731275c..cb325be85ce 100644 +--- a/src/widgets/dialogs/qcolordialog.cpp ++++ b/src/widgets/dialogs/qcolordialog.cpp +@@ -78,7 +78,10 @@ + #include "qwindow.h" + + #include "private/qdialog_p.h" ++#include "private/qguiapplication_p.h" + ++#include <qpa/qplatformservices.h> ++#include <qpa/qplatformintegration.h> + #include <algorithm> + + QT_BEGIN_NAMESPACE +@@ -1611,6 +1614,20 @@ void QColorDialogPrivate::_q_newStandard(int r, int c) + void QColorDialogPrivate::_q_pickScreenColor() + { + Q_Q(QColorDialog); ++ ++ auto *platformServices = QGuiApplicationPrivate::platformIntegration()->services(); ++ if (platformServices->hasCapability(QPlatformServices::Capability::ColorPicking)) { ++ if (auto *colorPicker = platformServices->colorPicker(q->windowHandle())) { ++ q->connect(colorPicker, &QPlatformServiceColorPicker::colorPicked, q, ++ [q, colorPicker](const QColor &color) { ++ colorPicker->deleteLater(); ++ q->setCurrentColor(color); ++ }); ++ colorPicker->pickColor(); ++ return; ++ } ++ } ++ + if (!colorPickingEventFilter) + colorPickingEventFilter = new QColorPickingEventFilter(this, q); + q->installEventFilter(colorPickingEventFilter); +-- +2.49.0 + +From 14335f8c85b31425b5e3ca5f373617949af886e3 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Fri, 9 Sep 2022 22:12:33 +0200 +Subject: [PATCH 053/123] Fix build without dbus support + +Both QWindow and QGuiApplication are used outside of dbus #ifdefs. + +Follow-up to 2dc083df009a45c5dacfea27b0affeb85b01f847 + +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + .../services/genericunix/qgenericunixservices.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +index fa92a0dfa61..210e843e6d6 100644 +--- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp ++++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +@@ -51,6 +51,9 @@ + #include <QtCore/QStandardPaths> + #include <QtCore/QUrl> + ++#include <QtGui/QGuiApplication> ++#include <QtGui/QWindow> ++ + #if QT_CONFIG(dbus) + // These QtCore includes are needed for xdg-desktop-portal support + #include <QtCore/private/qcore_unix_p.h> +@@ -59,8 +62,6 @@ + #include <QtCore/QUrlQuery> + + #include <QtGui/QColor> +-#include <QtGui/QGuiApplication> +-#include <QtGui/QWindow> + + #include <QtDBus/QDBusConnection> + #include <QtDBus/QDBusMessage> +-- +2.49.0 + +From c5e1f6731557a678f5c1d317720c4a47b2d12919 Mon Sep 17 00:00:00 2001 +From: Duan Ting <duanting@uniontech.com> +Date: Wed, 22 Jun 2022 14:07:25 +0800 +Subject: [PATCH 054/123] Fix typo in code + +Found by codespell + +Pick-to: 6.4 6.3 6.2 5.15 +Change-Id: I75f4b14f3eded035a0c904d8a7174cb6f5b7d9ef +Reviewed-by: Wang Bo <wangbo@uniontech.com> +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit cd268e9e1d57ca2159371f3c4f93a63d3fe66c4e) +--- + .../eglfs_kms_support/qeglfskmseventreader.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp +index 645a0ae2e92..3e0e406f1ab 100644 +--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp ++++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_support/qeglfskmseventreader.cpp +@@ -179,7 +179,7 @@ void QEglFSKmsEventReader::create(QEglFSKmsDevice *device) + + m_device = device; + +- qCDebug(qLcEglfsKmsDebug, "Initalizing event reader for device %p fd %d", ++ qCDebug(qLcEglfsKmsDebug, "Initializing event reader for device %p fd %d", + m_device, m_device->fd()); + + m_thread = new QEglFSKmsEventReaderThread(m_device->fd()); -- -2.36.0 +2.49.0 -From 015c00b27b17065472454174b1f92b6c0ff4cc74 Mon Sep 17 00:00:00 2001 +From 27e7a75a8947b463abc428cbba359fe4ea1a0d31 Mon Sep 17 00:00:00 2001 From: Edward Welbourne <edward.welbourne@qt.io> -Date: Thu, 13 Aug 2020 10:40:11 +0200 -Subject: [PATCH 133/146] Fix crash on serializing default-constructed - QTimeZone +Date: Wed, 12 Aug 2020 14:24:10 +0200 +Subject: [PATCH 055/123] Assert validity in QStringIterator's unchecked + methods -The serialization code neglected to check against null. Sinze zones -are saved either by IANA ID or in our special OffsetFromUtc format, -representing an invalid zone by a string that cannot possibly be a -valid IANA ID will do. +These methods should never be used on strings not known to be valid UTF-16. +Their optimizations will produce undefined behavior otherwise. -Fixes: QTBUG-86019 -Pick-to: 5.15 -Pick-to: 5.12 -Change-Id: I6882026403d00f8b254aab34c645f1cf8f9fcc2d -Reviewed-by: Taylor Braun-Jones <taylor@braun-jones.org> +Change-Id: I03a95140dcbdd1f7189eea1be69289ce227331a5 +Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 14f3f419b0864944d75283a850dc0ce141feaf0e) +(cherry picked from commit 7715b186c79a968950fd1c8e0993641f2f58b3be) --- - src/corelib/time/qtimezone.cpp | 14 ++++++++-- - .../corelib/time/qtimezone/tst_qtimezone.cpp | 28 +++++++++++++++++++ - 2 files changed, 39 insertions(+), 3 deletions(-) - -diff --git a/src/corelib/time/qtimezone.cpp b/src/corelib/time/qtimezone.cpp -index 0309e43e52..3d451696a1 100644 ---- a/src/corelib/time/qtimezone.cpp -+++ b/src/corelib/time/qtimezone.cpp -@@ -1,6 +1,6 @@ - /**************************************************************************** - ** --** Copyright (C) 2013 John Layt <jlayt@kde.org> -+** Copyright (C) 2020 John Layt <jlayt@kde.org> - ** Contact: https://www.qt.io/licensing/ - ** - ** This file is part of the QtCore module of the Qt Toolkit. -@@ -975,9 +975,15 @@ QList<QByteArray> QTimeZone::windowsIdToIanaIds(const QByteArray &windowsId, + src/corelib/text/qstringiterator_p.h | 24 ++++++++++++++++++------ + 1 file changed, 18 insertions(+), 6 deletions(-) + +diff --git a/src/corelib/text/qstringiterator_p.h b/src/corelib/text/qstringiterator_p.h +index b31c7673c2d..731a241407a 100644 +--- a/src/corelib/text/qstringiterator_p.h ++++ b/src/corelib/text/qstringiterator_p.h +@@ -123,16 +123,20 @@ public: + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + +- if (Q_UNLIKELY((pos++)->isHighSurrogate())) ++ if (Q_UNLIKELY((pos++)->isHighSurrogate())) { ++ Q_ASSERT(pos < e && pos->isLowSurrogate()); + ++pos; ++ } + } + + inline uint peekNextUnchecked() const + { + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + +- if (Q_UNLIKELY(pos->isHighSurrogate())) ++ if (Q_UNLIKELY(pos->isHighSurrogate())) { ++ Q_ASSERT(pos + 1 < e && pos[1].isLowSurrogate()); + return QChar::surrogateToUcs4(pos[0], pos[1]); ++ } + + return pos->unicode(); + } +@@ -158,8 +162,10 @@ public: + Q_ASSERT_X(hasNext(), Q_FUNC_INFO, "iterator hasn't a next item"); + + const QChar cur = *pos++; +- if (Q_UNLIKELY(cur.isHighSurrogate())) ++ if (Q_UNLIKELY(cur.isHighSurrogate())) { ++ Q_ASSERT(pos < e && pos->isLowSurrogate()); + return QChar::surrogateToUcs4(cur, *pos++); ++ } + return cur.unicode(); + } + +@@ -199,16 +205,20 @@ public: + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + +- if (Q_UNLIKELY((--pos)->isLowSurrogate())) ++ if (Q_UNLIKELY((--pos)->isLowSurrogate())) { ++ Q_ASSERT(pos > i && pos[-1].isHighSurrogate()); + --pos; ++ } + } + + inline uint peekPreviousUnchecked() const + { + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + +- if (Q_UNLIKELY(pos[-1].isLowSurrogate())) ++ if (Q_UNLIKELY(pos[-1].isLowSurrogate())) { ++ Q_ASSERT(pos > i + 1 && pos[-2].isHighSurrogate()); + return QChar::surrogateToUcs4(pos[-2], pos[-1]); ++ } + return pos[-1].unicode(); + } + +@@ -233,8 +243,10 @@ public: + Q_ASSERT_X(hasPrevious(), Q_FUNC_INFO, "iterator hasn't a previous item"); + + const QChar cur = *--pos; +- if (Q_UNLIKELY(cur.isLowSurrogate())) ++ if (Q_UNLIKELY(cur.isLowSurrogate())) { ++ Q_ASSERT(pos > i && pos[-1].isHighSurrogate()); + return QChar::surrogateToUcs4(*--pos, cur); ++ } + return cur.unicode(); + } + +-- +2.49.0 + +From ba33584ccee6c58f22a78124d7cafb8b341935af Mon Sep 17 00:00:00 2001 +From: Johannes Kauffmann <johanneskauffmann@hotmail.com> +Date: Wed, 28 Sep 2022 12:52:41 +0200 +Subject: [PATCH 056/123] ANGLE: Fix compilation on GCC 11 + +GCC 11 no longer transitively includes <limits>, needed for +std::numeric_limits<T>::max and friends, and thus compilation breaks. + +Backport from angle upstream at 1b908d0a7ec791fdb856eff56f6bd2da9f93759e. + +Edited: the Qt5 version of angle doesn't have the <functional> include. +--- + src/3rdparty/angle/src/libANGLE/HandleAllocator.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/3rdparty/angle/src/libANGLE/HandleAllocator.cpp b/src/3rdparty/angle/src/libANGLE/HandleAllocator.cpp +index c3c184258fd..32af3f8f298 100644 +--- a/src/3rdparty/angle/src/libANGLE/HandleAllocator.cpp ++++ b/src/3rdparty/angle/src/libANGLE/HandleAllocator.cpp +@@ -10,6 +10,7 @@ + #include "libANGLE/HandleAllocator.h" + + #include <algorithm> ++#include <limits> + + #include "common/debug.h" + +-- +2.49.0 + +From dc7e66e2886e5f110949688cd20a355019ab2a1b Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Sat, 23 Jul 2022 09:31:14 +0800 +Subject: [PATCH 057/123] Send string to Atspi DBus interface on value changed + for comboboxes + +Orca only accepts string or list type for +object:property-change:accessible-name events. This fixes +NameChanged not being announced by Orca. + +Pick-to: 6.4 6.2 +Change-Id: Ib30fed94aad70b98400deec5e31630b4f8c22e26 +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit c6b1c3381461b01255b432468fe38ed5c32b6537) +--- + src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index 9153fd20bbe..7ea6680fbaa 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -1038,7 +1038,9 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) + // Combo Box with AT-SPI likes to be special + // It requires a name-change to update caches and then selection-changed + QString path = pathForInterface(iface); +- QVariantList args1 = packDBusSignalArguments(QLatin1String("accessible-name"), 0, 0, variantForPath(path)); ++ QVariantList args1 = packDBusSignalArguments( ++ QLatin1String("accessible-name"), 0, 0, ++ QVariant::fromValue(QDBusVariant(iface->text(QAccessible::Name)))); + sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), + QLatin1String("PropertyChange"), args1); + QVariantList args2 = packDBusSignalArguments(QString(), 0, 0, QVariant::fromValue(QDBusVariant(QVariant(0)))); +-- +2.49.0 + +From 5f74dbd43a86da565360026ef5c15e74f8742a48 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Sat, 23 Jul 2022 00:48:37 +0800 +Subject: [PATCH 058/123] Send string to Atspi DBus interface on + name/description changed + +Orca only accepts string or list type for +object:property-change:accessible-name and +object:property-change:accessible-description events. This fixes +NameChanged and DescriptionChanged not being announced by Orca. + +This also adds check for accessible interface and will ignore events +from invalid interfaces on name/description changed. + +See also: https://gitlab.gnome.org/GNOME/orca/-/issues/255 + +Pick-to: 6.4 6.2 +Change-Id: Iaaa50678e7223951e0f3af99c5e04aa7458e4d0d +Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit c9758d76c73c7e4bf6363a7f357ad8c2dfb8b4bc) + +CCMAIL: kde-accessibility@kde.org +--- + .../linuxaccessibility/atspiadaptor.cpp | 26 ++++++++++++++++--- + 1 file changed, 22 insertions(+), 4 deletions(-) + +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index 7ea6680fbaa..c8c717ba6b1 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -913,8 +913,17 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) + } + case QAccessible::NameChanged: { + if (sendObject || sendObject_property_change || sendObject_property_change_accessible_name) { +- QString path = pathForInterface(event->accessibleInterface()); +- QVariantList args = packDBusSignalArguments(QLatin1String("accessible-name"), 0, 0, variantForPath(path)); ++ QAccessibleInterface *iface = event->accessibleInterface(); ++ if (!iface) { ++ qCDebug(lcAccessibilityAtspi, ++ "NameChanged event from invalid accessible."); ++ return; ++ } ++ ++ QString path = pathForInterface(iface); ++ QVariantList args = packDBusSignalArguments( ++ QLatin1String("accessible-name"), 0, 0, ++ QVariant::fromValue(QDBusVariant(iface->text(QAccessible::Name)))); + sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), + QLatin1String("PropertyChange"), args); + } +@@ -922,8 +931,17 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) + } + case QAccessible::DescriptionChanged: { + if (sendObject || sendObject_property_change || sendObject_property_change_accessible_description) { +- QString path = pathForInterface(event->accessibleInterface()); +- QVariantList args = packDBusSignalArguments(QLatin1String("accessible-description"), 0, 0, variantForPath(path)); ++ QAccessibleInterface *iface = event->accessibleInterface(); ++ if (!iface) { ++ qCDebug(lcAccessibilityAtspi, ++ "DescriptionChanged event from invalid accessible."); ++ return; ++ } ++ ++ QString path = pathForInterface(iface); ++ QVariantList args = packDBusSignalArguments( ++ QLatin1String("accessible-description"), 0, 0, ++ QVariant::fromValue(QDBusVariant(iface->text(QAccessible::Description)))); + sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), + QLatin1String("PropertyChange"), args); + } +-- +2.49.0 + +From b80e8d7fadc90aa4b2c0843381f1161005ee6262 Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Mon, 17 Oct 2022 11:43:30 +0200 +Subject: [PATCH 059/123] offer an opt out of automatic xdg-desktop-portal use + +this allows users to skip over the portal invocation if it is +undesirable (e.g. during early stages of session setup on KDE's Plasma) + +Change-Id: I43e3c3a59b9bb71c77012f8f0ec7ad7ba904a050 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit a7bd656cf40b0cf7ee7f96e6c59974804a4894ba) +--- + .../services/genericunix/qgenericunixservices.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +index 210e843e6d6..2abe0391263 100644 +--- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp ++++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +@@ -393,6 +393,9 @@ private: + QGenericUnixServices::QGenericUnixServices() + { + #if QT_CONFIG(dbus) ++ if (qEnvironmentVariableIntValue("QT_NO_XDG_DESKTOP_PORTAL") > 0) { ++ return; ++ } + QDBusMessage message = QDBusMessage::createMethodCall( + QStringLiteral("org.freedesktop.portal.Desktop"), QStringLiteral("/org/freedesktop/portal/desktop"), + QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("Get")); +-- +2.49.0 + +From 09a017a67d5cf07210957beeb0bf2dad833502b3 Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Wed, 10 Aug 2022 13:20:33 +0200 +Subject: [PATCH 060/123] a11y: support GetAccessibleId for at-spi + +This introduces a new helper function accessibleIdForAccessible +(inspired by Windows' automationIdForAccessible) to synthesize an id out +of the objectNames of the accessible parent chain. The id is then +exposed via the GetAccessibleId D-Bus function for consumption in a11y +tools. + +Change-Id: If72b86c5864c43f4ca842aa11423dd8aea0dde4a +Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> +(cherry picked from commit 75e8754875350d53fa62b2c5964c0e0ea8cd69f6) +--- + .../linuxaccessibility/atspiadaptor.cpp | 26 +++++++++++++++++++ + .../tst_qaccessibilitylinux.cpp | 11 ++++++++ + 2 files changed, 37 insertions(+) + +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index c8c717ba6b1..255ea5e33ef 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -194,6 +194,9 @@ QString AtSpiAdaptor::introspect(const QString &path) const + " <arg direction=\"out\" type=\"(so)\"/>\n" + " <annotation value=\"QSpiObjectReference\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n" + " </method>\n" ++ " <method name=\"GetAccessibleId\">\n" ++ " <arg direction=\"out\" type=\"s\"/>\n" ++ " </method>\n" + " </interface>\n" + ); + +@@ -1378,6 +1381,26 @@ void AtSpiAdaptor::registerApplication() + delete registry; } - #ifndef QT_NO_DATASTREAM -+// Invalid, as an IANA ID: too long, starts with - and has other invalid characters in it -+static inline QString invalidId() { return QStringLiteral("-No Time Zone Specified!"); } ++namespace { ++QString accessibleIdForAccessible(QAccessibleInterface *accessible) ++{ ++ QString result; ++ while (accessible) { ++ if (!result.isEmpty()) ++ result.prepend(QLatin1Char('.')); ++ if (auto obj = accessible->object()) { ++ const QString name = obj->objectName(); ++ if (!name.isEmpty()) ++ result.prepend(name); ++ else ++ result.prepend(QString::fromUtf8(obj->metaObject()->className())); ++ } ++ accessible = accessible->parent(); ++ } ++ return result; ++} ++} // namespace + - QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz) + // Accessible + bool AtSpiAdaptor::accessibleInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection) { -- tz.d->serialize(ds); -+ if (tz.isValid()) -+ tz.d->serialize(ds); -+ else -+ ds << invalidId(); - return ds; +@@ -1461,6 +1484,9 @@ bool AtSpiAdaptor::accessibleInterface(QAccessibleInterface *interface, const QS + children << ref; + } + connection.send(message.createReply(QVariant::fromValue(children))); ++ } else if (function == QLatin1String("GetAccessibleId")) { ++ sendReply(connection, message, ++ QVariant::fromValue(QDBusVariant(accessibleIdForAccessible(interface)))); + } else { + qCDebug(lcAccessibilityAtspi) << "WARNING: AtSpiAdaptor::accessibleInterface does not implement " << function << message.path(); + return false; +diff --git a/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp b/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp +index 7ba3715e130..752aa122f64 100644 +--- a/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp ++++ b/tests/auto/other/qaccessibilitylinux/tst_qaccessibilitylinux.cpp +@@ -179,6 +179,7 @@ void tst_QAccessibilityLinux::initTestCase() + QVERIFY(!address.isEmpty()); + + m_window = new AccessibleTestWindow(); ++ m_window->setObjectName("mainWindow"_L1); + m_window->show(); + + QVERIFY(QTest::qWaitForWindowExposed(m_window)); +@@ -236,8 +237,11 @@ bool hasState(QDBusInterface *interface, AtspiStateType state) + void tst_QAccessibilityLinux::testLabel() + { + QLabel *l = new QLabel(m_window); ++ l->setObjectName("theObjectName"_L1); + l->setText("Hello A11y"); + m_window->addWidget(l); ++ auto a11yEmpty = new QLabel(m_window); ++ m_window->addWidget(l); + + // Application + QCOMPARE(getParent(mainWindow), QLatin1String(ATSPI_DBUS_PATH_ROOT)); +@@ -249,6 +253,8 @@ void tst_QAccessibilityLinux::testLabel() + QCOMPARE(getChildren(labelInterface).count(), 0); + QCOMPARE(labelInterface->call(QDBus::Block, "GetRoleName").arguments().first().toString(), QLatin1String("label")); + QCOMPARE(labelInterface->call(QDBus::Block, "GetRole").arguments().first().toUInt(), 29u); ++ QCOMPARE(labelInterface->call(QDBus::Block, "GetAccessibleId").arguments().first().toString(), ++ QLatin1String("mainWindow.theObjectName")); + QCOMPARE(getParent(labelInterface), mainWindow->path()); + QVERIFY(!hasState(labelInterface, ATSPI_STATE_EDITABLE)); + QVERIFY(hasState(labelInterface, ATSPI_STATE_READ_ONLY)); +@@ -256,7 +262,12 @@ void tst_QAccessibilityLinux::testLabel() + l->setText("New text"); + QCOMPARE(labelInterface->property("Name").toString(), l->text()); + ++ auto *a11yEmptyInterface = getInterface(children.at(1), "org.a11y.atspi.Accessible"); ++ QCOMPARE(a11yEmptyInterface->call(QDBus::Block, "GetAccessibleId").arguments().first().toString(), ++ QLatin1String("mainWindow.QLabel")); ++ + m_window->clearChildren(); ++ delete a11yEmptyInterface; + delete labelInterface; + } + +-- +2.49.0 + +From 17edd50be99672bb42dbce540bdc2b894ad398b0 Mon Sep 17 00:00:00 2001 +From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +Date: Sun, 10 Apr 2022 12:29:47 +0200 +Subject: [PATCH 061/123] Annotate QMutex with TSAN annotations + +The Q(Basic)Mutex fast paths are entirely inline in the caller, which +means we need to annotate its operations directly or TSAN doesn't know +what's going on. Also annotate QRecursiveMutex. + +The tryLock code could be in principle simplified via a QScopeGuard +but I didn't want to make a central class like QMutex depend on it. + +[ChangeLog][QtCore][QMutex] QMutex now has annotations for +ThreadSanitizer. + +Change-Id: Ibb130404e63a5ec9bcef9675f9addd16a2c38b7f +Reviewed-by: David Faure <david.faure@kdab.com> +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit b2233f19c9be9b87f4a49a4169aab6f5e7617563) +--- + src/corelib/thread/qfutex_p.h | 8 +-- + src/corelib/thread/qmutex.h | 21 +++++- + src/corelib/thread/qtsan_impl.h | 115 ++++++++++++++++++++++++++++++++ + 3 files changed, 138 insertions(+), 6 deletions(-) + create mode 100644 src/corelib/thread/qtsan_impl.h + +diff --git a/src/corelib/thread/qfutex_p.h b/src/corelib/thread/qfutex_p.h +index f287b752d75..e294537787e 100644 +--- a/src/corelib/thread/qfutex_p.h ++++ b/src/corelib/thread/qfutex_p.h +@@ -52,6 +52,7 @@ + // + + #include <qglobal.h> ++#include <QtCore/qtsan_impl.h> + + QT_BEGIN_NAMESPACE + +@@ -106,16 +107,13 @@ namespace QtLinuxFutex { + inline int _q_futex(int *addr, int op, int val, quintptr val2 = 0, + int *addr2 = nullptr, int val3 = 0) noexcept + { +- // A futex call ensures total ordering on the futex words +- // (in either success or failure of the call). Instruct TSAN accordingly, +- // as TSAN does not understand the futex(2) syscall. +- _q_tsan_release(addr, addr2); ++ QtTsan::futexRelease(addr, addr2); + + // we use __NR_futex because some libcs (like Android's bionic) don't + // provide SYS_futex etc. + int result = syscall(__NR_futex, addr, op | FUTEX_PRIVATE_FLAG, val, val2, addr2, val3); + +- _q_tsan_acquire(addr, addr2); ++ QtTsan::futexAcquire(addr, addr2); + + return result; + } +diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h +index b2e2640ba2d..1bae573a037 100644 +--- a/src/corelib/thread/qmutex.h ++++ b/src/corelib/thread/qmutex.h +@@ -42,6 +42,7 @@ + + #include <QtCore/qglobal.h> + #include <QtCore/qatomic.h> ++#include <QtCore/qtsan_impl.h> + #include <new> + + #if __has_include(<chrono>) +@@ -77,19 +78,37 @@ public: + + // BasicLockable concept + inline void lock() QT_MUTEX_LOCK_NOEXCEPT { ++ QtTsan::mutexPreLock(this, 0u); ++ + if (!fastTryLock()) + lockInternal(); ++ ++ QtTsan::mutexPostLock(this, 0u, 0); + } + + // BasicLockable concept + inline void unlock() noexcept { + Q_ASSERT(d_ptr.loadRelaxed()); //mutex must be locked ++ ++ QtTsan::mutexPreUnlock(this, 0u); ++ + if (!fastTryUnlock()) + unlockInternal(); ++ ++ QtTsan::mutexPostUnlock(this, 0u); + } + + bool tryLock() noexcept { +- return fastTryLock(); ++ unsigned tsanFlags = QtTsan::TryLock; ++ QtTsan::mutexPreLock(this, tsanFlags); ++ ++ const bool success = fastTryLock(); ++ ++ if (!success) ++ tsanFlags |= QtTsan::TryLockFailed; ++ QtTsan::mutexPostLock(this, tsanFlags, 0); ++ ++ return success; + } + + // Lockable concept +diff --git a/src/corelib/thread/qtsan_impl.h b/src/corelib/thread/qtsan_impl.h +new file mode 100644 +index 00000000000..580a738b914 +--- /dev/null ++++ b/src/corelib/thread/qtsan_impl.h +@@ -0,0 +1,115 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 Intel Corporation. ++** Copyright (C) 2022 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtCore module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QTSAN_IMPL_H ++#define QTSAN_IMPL_H ++ ++#include <QtCore/qglobal.h> ++ ++#if (__has_feature(thread_sanitizer) || defined(__SANITIZE_THREAD__)) && __has_include(<sanitizer/tsan_interface.h>) ++# define QT_BUILDING_UNDER_TSAN ++# include <sanitizer/tsan_interface.h> ++#endif ++ ++QT_BEGIN_NAMESPACE ++ ++namespace QtTsan { ++#ifdef QT_BUILDING_UNDER_TSAN ++inline void futexAcquire(void *addr, void *addr2 = nullptr) ++{ ++ // A futex call ensures total ordering on the futex words ++ // (in either success or failure of the call). Instruct TSAN accordingly, ++ // as TSAN does not understand the futex(2) syscall (or equivalent). ++ ::__tsan_acquire(addr); ++ if (addr2) ++ ::__tsan_acquire(addr2); ++} ++ ++inline void futexRelease(void *addr, void *addr2 = nullptr) ++{ ++ if (addr2) ++ ::__tsan_release(addr2); ++ ::__tsan_release(addr); ++} ++ ++inline void mutexPreLock(void *addr, unsigned flags) ++{ ++ ::__tsan_mutex_pre_lock(addr, flags); ++} ++ ++inline void mutexPostLock(void *addr, unsigned flags, int recursion) ++{ ++ ::__tsan_mutex_post_lock(addr, flags, recursion); ++} ++ ++inline void mutexPreUnlock(void *addr, unsigned flags) ++{ ++ ::__tsan_mutex_pre_unlock(addr, flags); ++} ++ ++inline void mutexPostUnlock(void *addr, unsigned flags) ++{ ++ ::__tsan_mutex_post_unlock(addr, flags); ++} ++ ++enum : unsigned { ++ MutexWriteReentrant = ::__tsan_mutex_write_reentrant, ++ TryLock = ::__tsan_mutex_try_lock, ++ TryLockFailed = ::__tsan_mutex_try_lock_failed, ++}; ++#else ++inline void futexAcquire(void *, void * = nullptr) {} ++inline void futexRelease(void *, void * = nullptr) {} ++ ++enum : unsigned { ++ MutexWriteReentrant, ++ TryLock, ++ TryLockFailed, ++}; ++inline void mutexPreLock(void *, unsigned) {} ++inline void mutexPostLock(void *, unsigned, int) {} ++inline void mutexPreUnlock(void *, unsigned) {} ++inline void mutexPostUnlock(void *, unsigned) {} ++#endif // QT_BUILDING_UNDER_TSAN ++} // namespace QtTsan ++ ++QT_END_NAMESPACE ++ ++#endif // QTSAN_IMPL_H +-- +2.49.0 + +From 2f1462a21283ac2bae5366977a0710dc735ac631 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Tue, 18 Oct 2022 20:38:35 +0800 +Subject: [PATCH 062/123] Send accessible focus event after list view has focus +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +QListView::currentChanged sends an accessible focus event even if the +list view doesn't have focus. For screen readers like Orca, accessible +focus events will be ignored if the target item does not have focus +when screen reader receives the event. + +This corrects the behavior by calling QAbstractItemView::currentChanged +before sending an accessible focus event. + +Pick-to: 6.4 +Change-Id: I71732f62e2f27d7856b4781b268495b88b24b715 +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit 2cf5253b91d5269e387c68d06f58f00ec36e80c0) +--- + src/widgets/itemviews/qlistview.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp +index fab44923dec..79254e052f5 100644 +--- a/src/widgets/itemviews/qlistview.cpp ++++ b/src/widgets/itemviews/qlistview.cpp +@@ -3389,6 +3389,7 @@ void QIconModeViewBase::updateContentsSize() + */ + void QListView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) + { ++ QAbstractItemView::currentChanged(current, previous); + #ifndef QT_NO_ACCESSIBILITY + if (QAccessible::isActive()) { + if (current.isValid()) { +@@ -3399,7 +3400,6 @@ void QListView::currentChanged(const QModelIndex ¤t, const QModelIndex &pr + } + } + #endif +- QAbstractItemView::currentChanged(current, previous); + } + + /*! +-- +2.49.0 + +From c1fdba09e7e59b67a933fdf4b5b2d793b9844002 Mon Sep 17 00:00:00 2001 +From: Martin Walch <walch.martin@web.de> +Date: Sat, 1 Oct 2022 15:48:42 +0200 +Subject: [PATCH 063/123] Scale BMP color samples with periodic bit expansion + +Scale samples up by periodically repeating the bit pattern of each value to fill +up the lower bits instead of padding them with 0. + +Vice versa truncate samples that exceed the bit depth of QRgb. + +Change-Id: I777519e359932f52e54a33073a1ff297a76f620c +Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> +(cherry picked from commit 1fee7adccf82c5e9e15dec3affd6007fe7cdb935) +--- + src/gui/image/qbmphandler.cpp | 74 +++++++++++++++++++++++------------ + 1 file changed, 49 insertions(+), 25 deletions(-) + +diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp +index 96f1e8cb1d9..0e73bbbdb05 100644 +--- a/src/gui/image/qbmphandler.cpp ++++ b/src/gui/image/qbmphandler.cpp +@@ -150,16 +150,42 @@ static QDataStream &operator<<(QDataStream &s, const BMP_INFOHDR &bi) + return s; } -@@ -985,7 +991,9 @@ QDataStream &operator>>(QDataStream &ds, QTimeZone &tz) +-static int calc_shift(uint mask) ++static uint calc_shift(uint mask) { - QString ianaId; - ds >> ianaId; -- if (ianaId == QLatin1String("OffsetFromUtc")) { -+ if (ianaId == invalidId()) { -+ tz = QTimeZone(); -+ } else if (ianaId == QLatin1String("OffsetFromUtc")) { - int utcOffset; - QString name; - QString abbreviation; -diff --git a/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp b/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp -index a59b58d57f..241c3e84ac 100644 ---- a/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp -+++ b/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp -@@ -63,6 +63,7 @@ private slots: - void isValidId_data(); - void isValidId(); - void malformed(); -+ void serialize(); - // Backend tests - void utcTest(); - void icuTest(); -@@ -947,6 +948,33 @@ void tst_QTimeZone::malformed() - barf.offsetFromUtc(now); +- int result = 0; +- while (mask && !(mask & 1)) { ++ uint result = 0; ++ while ((mask >= 0x100) || (!(mask & 1) && mask)) { + result++; + mask >>= 1; + } + return result; } -+void tst_QTimeZone::serialize() ++static uint calc_scale(uint low_mask) +{ -+ int parts = 0; -+#ifndef QT_NO_DEBUG_STREAM -+ qDebug() << QTimeZone(); // to verify no crash -+ parts++; -+#endif -+#ifndef QT_NO_DATASTREAM -+ QByteArray blob; -+ { -+ QDataStream stream(&blob, QIODevice::WriteOnly); -+ stream << QTimeZone("Europe/Oslo") << QTimeZone(420) << QTimeZone() << qint64(-1); ++ uint result = 8; ++ while (low_mask && result) { ++ result--; ++ low_mask >>= 1; + } -+ QDataStream stream(&blob, QIODevice::ReadOnly); -+ QTimeZone invalid, offset, oslo; -+ qint64 minusone; -+ stream >> oslo >> offset >> invalid >> minusone; -+ QCOMPARE(oslo, QTimeZone("Europe/Oslo")); -+ QCOMPARE(offset, QTimeZone(420)); -+ QVERIFY(!invalid.isValid()); -+ QCOMPARE(minusone, qint64(-1)); -+ parts++; -+#endif -+ if (!parts) -+ QSKIP("No serialization enabled"); ++ return result; ++} ++ ++static inline uint apply_scale(uint value, uint scale) ++{ ++ if (!(scale & 0x07)) // return immediately if scale == 8 or 0 ++ return value; ++ ++ uint filled = 8 - scale; ++ uint result = value << scale; ++ ++ do { ++ result |= result >> filled; ++ filled <<= 1; ++ } while (filled < 8); ++ ++ return result; +} + - void tst_QTimeZone::utcTest() + static bool read_dib_fileheader(QDataStream &s, BMP_FILEHDR &bf) { - #ifdef QT_BUILD_INTERNAL + // read BMP file header +@@ -222,14 +248,14 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset, + uint green_mask = 0; + uint blue_mask = 0; + uint alpha_mask = 0; +- int red_shift = 0; +- int green_shift = 0; +- int blue_shift = 0; +- int alpha_shift = 0; +- int red_scale = 0; +- int green_scale = 0; +- int blue_scale = 0; +- int alpha_scale = 0; ++ uint red_shift = 0; ++ uint green_shift = 0; ++ uint blue_shift = 0; ++ uint alpha_shift = 0; ++ uint red_scale = 0; ++ uint green_scale = 0; ++ uint blue_scale = 0; ++ uint alpha_scale = 0; + + if (!d->isSequential()) + d->seek(startpos + BMP_FILEHDR_SIZE + bi.biSize); // goto start of colormap or masks +@@ -308,19 +334,19 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset, + red_shift = calc_shift(red_mask); + if (((red_mask >> red_shift) + 1) == 0) + return false; +- red_scale = 256 / ((red_mask >> red_shift) + 1); ++ red_scale = calc_scale(red_mask >> red_shift); + green_shift = calc_shift(green_mask); + if (((green_mask >> green_shift) + 1) == 0) + return false; +- green_scale = 256 / ((green_mask >> green_shift) + 1); ++ green_scale = calc_scale(green_mask >> green_shift); + blue_shift = calc_shift(blue_mask); + if (((blue_mask >> blue_shift) + 1) == 0) + return false; +- blue_scale = 256 / ((blue_mask >> blue_shift) + 1); ++ blue_scale = calc_scale(blue_mask >> blue_shift); + alpha_shift = calc_shift(alpha_mask); + if (((alpha_mask >> alpha_shift) + 1) == 0) + return false; +- alpha_scale = 256 / ((alpha_mask >> alpha_shift) + 1); ++ alpha_scale = calc_scale(alpha_mask >> alpha_shift); + } else if (comp == BMP_RGB && (nbits == 24 || nbits == 32)) { + blue_mask = 0x000000ff; + green_mask = 0x0000ff00; +@@ -328,17 +354,15 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset, + blue_shift = 0; + green_shift = 8; + red_shift = 16; +- blue_scale = green_scale = red_scale = 1; ++ blue_scale = green_scale = red_scale = 0; + } else if (comp == BMP_RGB && nbits == 16) { + blue_mask = 0x001f; + green_mask = 0x03e0; + red_mask = 0x7c00; + blue_shift = 0; +- green_shift = 2; +- red_shift = 7; +- red_scale = 1; +- green_scale = 1; +- blue_scale = 8; ++ green_shift = 5; ++ red_shift = 10; ++ blue_scale = green_scale = red_scale = 3; + } + + #if 0 +@@ -544,10 +568,10 @@ static bool read_dib_body(QDataStream &s, const BMP_INFOHDR &bi, qint64 offset, + c |= *(uchar*)(b+2)<<16; + if (nbits > 24) + c |= *(uchar*)(b+3)<<24; +- *p++ = qRgba(((c & red_mask) >> red_shift) * red_scale, +- ((c & green_mask) >> green_shift) * green_scale, +- ((c & blue_mask) >> blue_shift) * blue_scale, +- transp ? ((c & alpha_mask) >> alpha_shift) * alpha_scale : 0xff); ++ *p++ = qRgba(apply_scale((c & red_mask) >> red_shift, red_scale), ++ apply_scale((c & green_mask) >> green_shift, green_scale), ++ apply_scale((c & blue_mask) >> blue_shift, blue_scale), ++ transp ? apply_scale((c & alpha_mask) >> alpha_shift, alpha_scale) : 0xff); + b += nbits/8; + } + } -- -2.36.0 +2.49.0 -From 120f74b4c8f92db8effe845f4069ec263c0b48a0 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Tue, 5 Oct 2021 07:45:50 +0200 -Subject: [PATCH 134/146] Revert "Support family names that end/start with - space" +From 4b636e8c8adf94f835f3e41d65abb3c89c881e62 Mon Sep 17 00:00:00 2001 +From: Laszlo Papp <lpapp@kde.org> +Date: Thu, 12 May 2022 13:37:27 +0100 +Subject: [PATCH 064/123] QKeySequence: Add missing modifier names +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -This reverts commit 7fd9ed32012bd9001e78ad692a4802e0e3366e44. +The issue is that when someone is trying to use the following code: -While trimming the font name worked for cases with application fonts, -it actually introduced an assert for system fonts that ended with a -space, because enumerating these failed. So the original assumption -that all Windows APIs also trimmed the family name was wrong. +QKeySequence keySequence(Qt::Key_Shift); +qDebug() << keySequence.toString(); -The original bug was that the font with the trailing space could -not be selected, but when using setFamilies(), it can. So there is -a perfectly fine way around the original bug when using a font that -has this problem. Therefore, no additional fix is needed for that. +This will print seemingly gibberish output. It is unicode in practice. For +Qt::Key_Shift, this would be: "�_@\uDC20" -[ChangeLog][Windows] Fixed an assert that happened when the system -had a font with a trailing or leading space in its name. +The reason why this is happening is because we have platform-specific ways to +handle this due to Mac glyphs which are not available on Linux or Windows. This +works fine on Mac. -Pick-to: 5.15 6.1 6.2 -Fixes: QTBUG-93885 -Task-number: QTBUG-79140 -Change-Id: I6d9df31a4f2c6555d38d51da374f69b6fb0f1ecb -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit 4d47b18c81f74ae6855e16197a12b69a6bcfe68a) ---- - src/gui/text/qfontdatabase.cpp | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) +But for the Linux and Windows codepaths, there is not really any mapping like +for other keys. It seems that modifiers were left out. -diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp -index 08c5ad273a..feb8ce22f2 100644 ---- a/src/gui/text/qfontdatabase.cpp -+++ b/src/gui/text/qfontdatabase.cpp -@@ -503,12 +503,10 @@ void QFontDatabasePrivate::invalidate() - emit static_cast<QGuiApplication *>(QCoreApplication::instance())->fontDatabaseChanged(); +The solution is to simply amend the list of mapping from these modifier key +codes to raw strings for Linux and Windows like it is done for other key codes. +So, now, modifiers will also be included in the list. + +So, the expected output will be generated for the above code, as: "Shift". + +[ChangeLog][QtGui][QKeySequence] Added missing modifier names + +Fixes: QTBUG-69715 +Fixes: QTBUG-40030 +Change-Id: I460d54bc8e593b350ff95894f23c5b4a7c819a44 +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit d83441340c210056d25777ed59ec6dab6351a55f) +--- + src/gui/kernel/qkeysequence.cpp | 4 ++++ + tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp +index 56cd2d02bcb..d448429f6cd 100644 +--- a/src/gui/kernel/qkeysequence.cpp ++++ b/src/gui/kernel/qkeysequence.cpp +@@ -701,6 +701,10 @@ static const struct { + { Qt::Key_TouchpadToggle, QT_TRANSLATE_NOOP("QShortcut", "Touchpad Toggle") }, + { Qt::Key_TouchpadOn, QT_TRANSLATE_NOOP("QShortcut", "Touchpad On") }, + { Qt::Key_TouchpadOff, QT_TRANSLATE_NOOP("QShortcut", "Touchpad Off") }, ++ { Qt::Key_Shift, QT_TRANSLATE_NOOP("QShortcut", "Shift") }, ++ { Qt::Key_Control, QT_TRANSLATE_NOOP("QShortcut", "Control") }, ++ { Qt::Key_Alt, QT_TRANSLATE_NOOP("QShortcut", "Alt") }, ++ { Qt::Key_Meta, QT_TRANSLATE_NOOP("QShortcut", "Meta") }, + + }; + static Q_CONSTEXPR int numKeyNames = sizeof keyname / sizeof *keyname; +diff --git a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp +index 874468c9546..04ceb4ab659 100644 +--- a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp ++++ b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp +@@ -507,6 +507,10 @@ void tst_QKeySequence::toStringFromKeycode_data() + QTest::newRow("Ctrl+Alt+Num+Del") << QKeySequence(Qt::ControlModifier | Qt::AltModifier | Qt::KeypadModifier | Qt::Key_Delete) << "Ctrl+Alt+Num+Del"; + QTest::newRow("Ctrl+Ins") << QKeySequence(Qt::ControlModifier | Qt::Key_Insert) << "Ctrl+Ins"; + QTest::newRow("Ctrl+Num+Ins(1)") << QKeySequence(Qt::Key_Insert | Qt::KeypadModifier | Qt::ControlModifier) << "Ctrl+Num+Ins"; ++ QTest::newRow("Ctrl") << QKeySequence(Qt::Key_Control) << "Control"; ++ QTest::newRow("Alt") << QKeySequence(Qt::Key_Alt) << "Alt"; ++ QTest::newRow("Shift") << QKeySequence(Qt::Key_Shift) << "Shift"; ++ QTest::newRow("Meta") << QKeySequence(Qt::Key_Meta) << "Meta"; } --QtFontFamily *QFontDatabasePrivate::family(const QString &family, FamilyRequestFlags flags) -+QtFontFamily *QFontDatabasePrivate::family(const QString &f, FamilyRequestFlags flags) + void tst_QKeySequence::toStringFromKeycode() +-- +2.49.0 + +From 20143aab09a24282aaa1ce42977c755475958ee1 Mon Sep 17 00:00:00 2001 +From: Timur Pocheptsov <timur.pocheptsov@qt.io> +Date: Wed, 21 Dec 2022 14:11:19 +0100 +Subject: [PATCH 065/123] TLS backend SecureTransport: properly clear + SSLContextRef +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Simply calling SSLClose on context is not enough. Properly clear +the context by calling 'reset' member-function. + +Pick-to: 6.5 6.4 6.2 5.15 +Change-Id: Ic6a32f6e4193bb19809d1cce184651b78d6273a7 +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> +(cherry picked from commit 6128a92e07c0c66c29445c2d79c3b6bdbf8efcda) +--- + src/network/ssl/qsslsocket_mac.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/network/ssl/qsslsocket_mac.cpp b/src/network/ssl/qsslsocket_mac.cpp +index 77e847e9722..e38a5e75de4 100644 +--- a/src/network/ssl/qsslsocket_mac.cpp ++++ b/src/network/ssl/qsslsocket_mac.cpp +@@ -468,6 +468,7 @@ void QSslSocketBackendPrivate::disconnectFromHost() + if (context) { + if (!shutdown) { + SSLClose(context); ++ context.reset(nullptr); + shutdown = true; + } + } +-- +2.49.0 + +From 027a745ead29f7e73e086f0c5b80c3cb1fb2b71c Mon Sep 17 00:00:00 2001 +From: David Edmundson <kde@davidedmundson.co.uk> +Date: Mon, 17 Oct 2022 22:18:58 +0100 +Subject: [PATCH 066/123] xcb: correctly disconnect xsettings callbacks + +registerCallbackForProperty can be initialized without us completely +initialializing a GTK theme. We need a different guard for the +destructor. + +(part cherry-picked from 012132c60d625b2de0039bdda3c22a0a8fe2dfe5) +--- + src/plugins/platforms/xcb/qxcbcursor.cpp | 8 +++++--- + src/plugins/platforms/xcb/qxcbcursor.h | 1 + + 2 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp +index 4210bf428e8..0670b6ebce1 100644 +--- a/src/plugins/platforms/xcb/qxcbcursor.cpp ++++ b/src/plugins/platforms/xcb/qxcbcursor.cpp +@@ -300,7 +300,7 @@ QXcbCursorCacheKey::QXcbCursorCacheKey(const QCursor &c) + #endif // !QT_NO_CURSOR + + QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen) +- : QXcbObject(conn), m_screen(screen), m_gtkCursorThemeInitialized(false) ++ : QXcbObject(conn), m_screen(screen), m_gtkCursorThemeInitialized(false), m_callbackForPropertyRegistered(false) + { + #if QT_CONFIG(cursor) + // see NUM_BITMAPS in libXcursor/src/xcursorint.h +@@ -343,7 +343,7 @@ QXcbCursor::~QXcbCursor() { - QtFontFamily *fam = nullptr; + xcb_connection_t *conn = xcb_connection(); -- const QString f = family.trimmed(); -- - int low = 0; - int high = count; - int pos = count / 2; +- if (m_gtkCursorThemeInitialized) { ++ if (m_callbackForPropertyRegistered) { + m_screen->xSettings()->removeCallbackForHandle(this); + } + +@@ -562,8 +562,10 @@ xcb_cursor_t QXcbCursor::createFontCursor(int cshape) + xcb_cursor_t cursor = XCB_NONE; + + #if QT_CONFIG(xcb_xlib) && QT_CONFIG(library) +- if (m_screen->xSettings()->initialized()) ++ if (m_screen->xSettings()->initialized()) { + m_screen->xSettings()->registerCallbackForProperty("Gtk/CursorThemeName",cursorThemePropertyChanged,this); ++ m_callbackForPropertyRegistered = true; ++ } + + // Try Xcursor first + if (cshape >= 0 && cshape <= Qt::LastCursor) { +diff --git a/src/plugins/platforms/xcb/qxcbcursor.h b/src/plugins/platforms/xcb/qxcbcursor.h +index 0b238823f02..82fb47e55da 100644 +--- a/src/plugins/platforms/xcb/qxcbcursor.h ++++ b/src/plugins/platforms/xcb/qxcbcursor.h +@@ -122,6 +122,7 @@ private: + void *handle); + #endif + bool m_gtkCursorThemeInitialized; ++ bool m_callbackForPropertyRegistered; + }; + + QT_END_NAMESPACE -- -2.36.0 - -From e0a15c11b853954d4189b2e30aa2450184de0987 Mon Sep 17 00:00:00 2001 -From: Rami Potinkara <rami.potinkara@qt.io> -Date: Fri, 15 Oct 2021 05:52:44 +0000 -Subject: [PATCH 135/146] Revert "Android: Place cursor correctly on screen - when editing" - -This reverts commit 5c6b10c3cee5737dbc041d0463220898c8120807. -It caused a regression such that the main window no longer resized or -panned when the VKB is shown, in spite of android:windowSoftInputMode -being set. - -Pick-to: 6.2 5.15 -Task-number: QTBUG-95300 -Task-number: QTBUG-96117 -Task-number: QTBUG-97503 -Change-Id: If56e1113eea69a940f6760bdb2ad06a93a0759c1 -Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> -Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> -(cherry picked from commit b1820295e1e8f04634cf9c008a2473d9e2889288) +2.49.0 + +From 2837ad9de5fc4fae5694684eac0495d7382d9f9c Mon Sep 17 00:00:00 2001 +From: Yuhang Zhao <2546789017@qq.com> +Date: Tue, 24 May 2022 14:05:10 +0800 +Subject: [PATCH 067/123] QSysInfo::prettyProductName(): add missing macOS + product names +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Pick-to: 6.2 6.3 6.4 5.15 +Change-Id: I9163917187b7a4cbf48e443303313b25473b229f +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +(cherry picked from commit 870cfa4e17c42698b77504cfc19728acfbf7d659) --- - .../qt5/android/QtActivityDelegate.java | 15 ++----- - .../org/qtproject/qt5/android/QtNative.java | 17 +------- - .../qt5/android/bindings/QtActivity.java | 11 ++--- - .../platforms/android/androidjniinput.cpp | 16 +------ - .../platforms/android/androidjniinput.h | 4 +- - .../android/qandroidinputcontext.cpp | 42 +------------------ - .../platforms/android/qandroidinputcontext.h | 2 - - 7 files changed, 13 insertions(+), 94 deletions(-) - -diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java -index a15a06a302..6aa935c2b1 100644 ---- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java -+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java -@@ -263,7 +263,7 @@ public class QtActivityDelegate - }, 5); - } + src/corelib/global/qglobal.cpp | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp +index 5ad82c259de..7428d8ec42e 100644 +--- a/src/corelib/global/qglobal.cpp ++++ b/src/corelib/global/qglobal.cpp +@@ -97,6 +97,10 @@ + # include <private/qcore_mac_p.h> + #endif -- public void showSoftwareKeyboard(final int x, final int y, final int width, final int height, final int editorHeight, final int inputHints, final int enterKeyType) -+ public void showSoftwareKeyboard(final int x, final int y, final int width, final int height, final int inputHints, final int enterKeyType) - { - if (m_imm == null) - return; -@@ -285,7 +285,7 @@ public class QtActivityDelegate - if (softInputIsHidden) - return; - } else { -- if (editorHeight > visibleHeight) -+ if (height > visibleHeight) - m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); - else - m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); -@@ -402,12 +402,12 @@ public class QtActivityDelegate - if (metrics.widthPixels > metrics.heightPixels) { // landscape - if (m_landscapeKeyboardHeight != r.bottom) { - m_landscapeKeyboardHeight = r.bottom; -- showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType); -+ showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType); - } - } else { - if (m_portraitKeyboardHeight != r.bottom) { - m_portraitKeyboardHeight = r.bottom; -- showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType); -+ showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType); - } - } - } else { -@@ -558,13 +558,6 @@ public class QtActivityDelegate ++#if defined(Q_OS_MACOS) ++#include <QtCore/qversionnumber.h> ++#endif ++ + #ifdef Q_OS_UNIX + #include <sys/utsname.h> + #include <private/qcore_unix_p.h> +@@ -2133,6 +2137,13 @@ QT_WARNING_POP + static const char *osVer_helper(QOperatingSystemVersion version = QOperatingSystemVersion::current()) + { + #ifdef Q_OS_MACOS ++ if (version.majorVersion() == 12) ++ return "Monterey"; ++ // Compare against predefined constant to handle 10.16/11.0 ++ if (QVersionNumber(QOperatingSystemVersion::MacOSBigSur.majorVersion(), ++ QOperatingSystemVersion::MacOSBigSur.minorVersion(), QOperatingSystemVersion::MacOSBigSur.microVersion()).isPrefixOf( ++ QVersionNumber(version.majorVersion(), version.minorVersion(), version.microVersion()))) ++ return "Big Sur"; + if (version.majorVersion() == 10) { + switch (version.minorVersion()) { + case 9: +@@ -2147,13 +2158,15 @@ static const char *osVer_helper(QOperatingSystemVersion version = QOperatingSyst + return "High Sierra"; + case 14: + return "Mojave"; ++ case 15: ++ return "Catalina"; } } + // unknown, future version + #else + Q_UNUSED(version); + #endif +- return 0; ++ return nullptr; + } + #endif -- public void updateInputItemRectangle(final int x, final int y, final int w, final int h) -- { -- if (m_layout == null || m_editText == null || !m_keyboardIsVisible) -- return; -- m_layout.setLayoutParams(m_editText, new QtLayout.LayoutParams(w, h, x, y), true); -- } -- - public boolean loadApplication(Activity activity, ClassLoader classLoader, Bundle loaderParams) - { - /// check parameters integrity -diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java -index 09c8af3dad..23beccbf74 100644 ---- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java -+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java -@@ -882,25 +882,10 @@ public class QtNative - }); +@@ -2278,7 +2291,7 @@ static const char *osVer_helper(QOperatingSystemVersion version = QOperatingSyst } + #undef Q_WINVER + // unknown, future version +- return 0; ++ return nullptr; + } -- private static void updateInputItemRectangle(final int x, -- final int y, -- final int w, -- final int h) -- { -- runAction(new Runnable() { -- @Override -- public void run() { -- m_activityDelegate.updateInputItemRectangle(x, y, w, h); -- } -- }); -- } -- -- - private static void showSoftwareKeyboard(final int x, - final int y, - final int width, - final int height, -- final int editorHeight, - final int inputHints, - final int enterKeyType) - { -@@ -908,7 +893,7 @@ public class QtNative - @Override - public void run() { - if (m_activityDelegate != null) -- m_activityDelegate.showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType); -+ m_activityDelegate.showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType); - } - }); - } -diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java -index b27f03fc7d..b257a16567 100644 ---- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java -+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java -@@ -1079,11 +1079,6 @@ public class QtActivity extends Activity - QtNative.activityDelegate().resetSoftwareKeyboard(); - } + #endif +-- +2.49.0 + +From 51468a5f652908faf26c727e8d2f5b001c9704b4 Mon Sep 17 00:00:00 2001 +From: Alexander Rezepkin <etu@vivaldi.net> +Date: Wed, 7 Dec 2022 20:36:15 +0300 +Subject: [PATCH 068/123] QSysInfo::prettyProductName(): Add macOS Ventura + product name +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Pick-to: 6.2 6.3 6.4 5.15 +Change-Id: I5f54866e30f08465943922e3dee5150f37054225 +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit a63d709195c2339ce5870a6b36e91d474347320f) +--- + src/corelib/global/qglobal.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp +index 7428d8ec42e..ecf7b1efaa6 100644 +--- a/src/corelib/global/qglobal.cpp ++++ b/src/corelib/global/qglobal.cpp +@@ -2137,6 +2137,8 @@ QT_WARNING_POP + static const char *osVer_helper(QOperatingSystemVersion version = QOperatingSystemVersion::current()) + { + #ifdef Q_OS_MACOS ++ if (version.majorVersion() == 13) ++ return "Ventura"; + if (version.majorVersion() == 12) + return "Monterey"; + // Compare against predefined constant to handle 10.16/11.0 +-- +2.49.0 + +From 506b2b0769b623b994e1a2072ae1065606c80fb0 Mon Sep 17 00:00:00 2001 +From: Marco Martin <notmart@gmail.com> +Date: Tue, 17 Jan 2023 12:56:36 +0000 +Subject: [PATCH 069/123] QToolButton: reimplement the fix for QTBUG-95255 + +The code in 188d739400e10fc8571bbf2ec86d5cd338b04a5d uses a connect() to +a lambda, passing UniqueConnection to avoid establishing the connection +more than once. The problem is that UniqueConnection does not work +with lambdas; it works only with "regular" PMFs to QObject subclasses. + +Re-do the same fix, but without a connection: use the checkStateSet() +virtual from the base class that will notify us if setChecked() is +being called on the tool button, and from there synchronize the state +of the default action. + +Change-Id: Id512812c562cd6d20bc1a489753b33c269919d32 +Fixes: QTBUG-95255 +Pick-to: 6.2 6.1 +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(part cherry-picked from c9830c2fb902f26dc8b2df61dfadc2d7a7d2b30e) +--- + src/widgets/widgets/qtoolbutton.cpp | 10 +++++++++- + src/widgets/widgets/qtoolbutton.h | 1 + + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp +index e380cb647ba..9953db73af3 100644 +--- a/src/widgets/widgets/qtoolbutton.cpp ++++ b/src/widgets/widgets/qtoolbutton.cpp +@@ -982,7 +982,15 @@ QAction *QToolButton::defaultAction() const + return d->defaultAction; + } -- public void updateInputItemRectangle(final int x, final int y, final int w, final int h) -- { -- QtNative.activityDelegate().updateInputItemRectangle(x, y, w, h); -- } - - public boolean setKeyboardVisibility(boolean visibility, long timeStamp) - { - return QtNative.activityDelegate().setKeyboardVisibility(visibility, timeStamp); -@@ -1095,10 +1090,10 @@ public class QtActivity extends Activity - } ++/*! ++ \reimp ++ */ ++void QToolButton::checkStateSet() ++{ ++ Q_D(QToolButton); ++ if (d->defaultAction && d->defaultAction->isCheckable()) ++ d->defaultAction->setChecked(isChecked()); ++} - public void showSoftwareKeyboard(final int x, final int y, final int width, -- final int height, final int editorHeight, -- final int inputHints, final int enterKeyType) -+ final int height, final int inputHints, -+ final int enterKeyType) - { -- QtNative.activityDelegate().showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType); -+ QtNative.activityDelegate().showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType); - } + /*! + \reimp +diff --git a/src/widgets/widgets/qtoolbutton.h b/src/widgets/widgets/qtoolbutton.h +index 52bd2d5f7a3..82b5d7924fe 100644 +--- a/src/widgets/widgets/qtoolbutton.h ++++ b/src/widgets/widgets/qtoolbutton.h +@@ -118,6 +118,7 @@ protected: + void changeEvent(QEvent *) override; + + bool hitButton(const QPoint &pos) const override; ++ void checkStateSet() override; + void nextCheckState() override; + void initStyleOption(QStyleOptionToolButton *option) const; - public boolean startApplication() -diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp -index fe1aff0cc4..e0232e2b2d 100644 ---- a/src/plugins/platforms/android/androidjniinput.cpp -+++ b/src/plugins/platforms/android/androidjniinput.cpp -@@ -80,16 +80,15 @@ namespace QtAndroidInput - candidatesEnd); - } +-- +2.49.0 + +From 1b5f52659f95930ec10d97d11ddb7708670aeb8a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Magnus=20Gro=C3=9F?= <magnus.gross@rwth-aachen.de> +Date: Thu, 18 Nov 2021 16:03:14 +0100 +Subject: [PATCH 070/123] Do not set Qt::ToolTip flag for QShapedPixmapWindow +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This hint is not really needed in the first place and only causes +problems in some environments. + +For example in KDE, the compositor animates changes in position and size +for all ToolTip windows. However, this is not wanted here because we use +this window as a thumbnail for a drag-and-drop operation. +Before this patch the dragged element would lag significantly behind the +cursor. Now it works as expected, i.e. the dragged element follows the +cursor immediately. + +Fixes: QTBUG-98048 +Change-Id: I49ef453c05228ce1a9336a9463046a794650acae +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +Reviewed-by: Liang Qi <liang.qi@qt.io> +(cherry picked from commit 180b496b537089b8592b48e8d00d90fa5dcb9cac) +--- + src/gui/kernel/qshapedpixmapdndwindow.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gui/kernel/qshapedpixmapdndwindow.cpp b/src/gui/kernel/qshapedpixmapdndwindow.cpp +index bb0d8e4ee70..b98fcc61e77 100644 +--- a/src/gui/kernel/qshapedpixmapdndwindow.cpp ++++ b/src/gui/kernel/qshapedpixmapdndwindow.cpp +@@ -56,7 +56,7 @@ QShapedPixmapWindow::QShapedPixmapWindow(QScreen *screen) + QSurfaceFormat format; + format.setAlphaBufferSize(8); + setFormat(format); +- setFlags(Qt::ToolTip | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint ++ setFlags(Qt::FramelessWindowHint | Qt::BypassWindowManagerHint + | Qt::WindowTransparentForInput | Qt::WindowDoesNotAcceptFocus); + } -- void showSoftwareKeyboard(int left, int top, int width, int height, int editorHeight, int inputHints, int enterKeyType) -+ void showSoftwareKeyboard(int left, int top, int width, int height, int inputHints, int enterKeyType) - { - QJNIObjectPrivate::callStaticMethod<void>(applicationClass(), - "showSoftwareKeyboard", -- "(IIIIIII)V", -+ "(IIIIII)V", - left, - top, - width, - height, -- editorHeight, - inputHints, - enterKeyType); - #ifdef QT_DEBUG_ANDROID_IM_PROTOCOL -@@ -131,17 +130,6 @@ namespace QtAndroidInput - anchor.x(), anchor.y(), rtl); +-- +2.49.0 + +From 6264d4221dfac0fc19467f3f5eaf88482d12ff8b Mon Sep 17 00:00:00 2001 +From: Laszlo Agocs <laszlo.agocs@qt.io> +Date: Fri, 17 Mar 2023 15:03:54 +0100 +Subject: [PATCH 071/123] Add QImage null check when QOpenGLTexture converts + +...the image to RGBA8888. Just mirror the first null check that is +done for the user-provided QImage. The same should be done for the +result of convertToFormat(). + +Pick-to: 6.5 6.5 6.2 5.15 +Fixes: QTBUG-68884 +Change-Id: I77091d7a2bc6e32d2aa292dc7650c1af091fcec1 +Reviewed-by: Andy Nichols <andy.nichols@qt.io> +(cherry picked from commit a561d52a8352f17f4a39bf54e0d3d9842c0d4064) +--- + src/gui/opengl/qopengltexture.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/gui/opengl/qopengltexture.cpp b/src/gui/opengl/qopengltexture.cpp +index 5490ad80255..afd3d8dbe65 100644 +--- a/src/gui/opengl/qopengltexture.cpp ++++ b/src/gui/opengl/qopengltexture.cpp +@@ -3725,6 +3725,12 @@ void QOpenGLTexture::setData(const QImage& image, MipMapGeneration genMipMaps) + return; } -- void updateInputItemRectangle(int left, int top, int width, int height) -- { -- QJNIObjectPrivate::callStaticMethod<void>(applicationClass(), -- "updateInputItemRectangle", -- "(IIII)V", -- left, -- top, -- width, -- height); -- } -- - static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y) - { - if (m_ignoreMouseEvents) -diff --git a/src/plugins/platforms/android/androidjniinput.h b/src/plugins/platforms/android/androidjniinput.h -index c1442f1904..cc3070c4aa 100644 ---- a/src/plugins/platforms/android/androidjniinput.h -+++ b/src/plugins/platforms/android/androidjniinput.h -@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE - namespace QtAndroidInput - { - // Software keyboard support -- void showSoftwareKeyboard(int top, int left, int width, int editorHeight, int height, int inputHints, int enterKeyType); -+ void showSoftwareKeyboard(int top, int left, int width, int height, int inputHints, int enterKeyType); - void resetSoftwareKeyboard(); - void hideSoftwareKeyboard(); - bool isSoftwareKeyboardVisible(); -@@ -57,8 +57,6 @@ namespace QtAndroidInput - void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd); - // Software keyboard support - -- // edit field resize -- void updateInputItemRectangle(int left, int top, int width, int height); - // cursor/selection handles - void updateHandles(int handleCount, QPoint editMenuPos = QPoint(), uint32_t editButtons = 0, QPoint cursor = QPoint(), QPoint anchor = QPoint(), bool rtl = false); - -diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp -index 687cced1e2..c716bb814d 100644 ---- a/src/plugins/platforms/android/qandroidinputcontext.cpp -+++ b/src/plugins/platforms/android/qandroidinputcontext.cpp -@@ -506,7 +506,7 @@ QAndroidInputContext::QAndroidInputContext() - m_androidInputContext = this; - - QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::cursorRectangleChanged, -- this, &QAndroidInputContext::updateInputItemRectangle); -+ this, &QAndroidInputContext::updateSelectionHandles); - QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::anchorRectangleChanged, - this, &QAndroidInputContext::updateSelectionHandles); - QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::inputItemClipRectangleChanged, this, [this]{ -@@ -931,50 +931,12 @@ void QAndroidInputContext::showInputPanel() ++ QImage glImage = image.convertToFormat(QImage::Format_RGBA8888); ++ if (glImage.isNull()) { ++ qWarning("QOpenGLTexture::setData() failed to convert image"); ++ return; ++ } ++ + if (context->isOpenGLES() && context->format().majorVersion() < 3) + setFormat(QOpenGLTexture::RGBAFormat); else - m_updateCursorPosConnection = connect(qGuiApp->focusObject(), SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition())); - -- QRect rect = cursorRect(); -+ QRect rect = screenInputItemRectangle(); - QtAndroidInput::showSoftwareKeyboard(rect.left(), rect.top(), rect.width(), rect.height(), -- inputItemRectangle().height(), - query->value(Qt::ImHints).toUInt(), - query->value(Qt::ImEnterKeyType).toUInt()); +@@ -3735,7 +3741,6 @@ void QOpenGLTexture::setData(const QImage& image, MipMapGeneration genMipMaps) + allocateStorage(QOpenGLTexture::RGBA, QOpenGLTexture::UInt8); + + // Upload pixel data and generate mipmaps +- QImage glImage = image.convertToFormat(QImage::Format_RGBA8888); + QOpenGLPixelTransferOptions uploadOptions; + uploadOptions.setAlignment(1); + setData(0, QOpenGLTexture::RGBA, QOpenGLTexture::UInt8, glImage.constBits(), &uploadOptions); +-- +2.49.0 + +From 0374a1ff5892323a557ff5aa849ec43b5025acc2 Mon Sep 17 00:00:00 2001 +From: Thiago Macieira <thiago.macieira@intel.com> +Date: Tue, 9 Nov 2021 15:24:45 -0800 +Subject: [PATCH 072/123] QCborValue: fix incorrect to{Array,Map} when the + value is empty + +When QCborValue referred to an empty array or map, toArray() and toMap() +would respectively return the default value instead of the empty object, +as expected. + +Pick-to: 6.2 6.3 +Change-Id: I5e52dc5b093c43a3b678fffd16b60456d0037ad7 +Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> +(cherry picked from commit de6ced66920600e659dbaa2509526a3bcb0b3360) +--- + src/corelib/serialization/qcborvalue.cpp | 6 +- + .../qcborvalue/tst_qcborvalue.cpp | 87 +++++++++++++++++++ + 2 files changed, 91 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp +index 89a928d3480..3a8c2cb9ec3 100644 +--- a/src/corelib/serialization/qcborvalue.cpp ++++ b/src/corelib/serialization/qcborvalue.cpp +@@ -2123,7 +2123,8 @@ QCborArray QCborValue::toArray(const QCborArray &defaultValue) const + Q_ASSERT(n == -1 || container == nullptr); + if (n < 0) + dd = container; +- return dd ? QCborArray(*dd) : defaultValue; ++ // return QCborArray(*dd); but that's UB if dd is nullptr ++ return dd ? QCborArray(*dd) : QCborArray(); } --QRect QAndroidInputContext::cursorRect() --{ -- QSharedPointer<QInputMethodQueryEvent> query = focusObjectInputMethodQuery(); -- // if single line, we do not want to mess with the editor's position, as we do not -- // have to follow the cursor in vertical axis -- if (query.isNull() -- || (query->value(Qt::ImHints).toUInt() & Qt::ImhMultiLine) != Qt::ImhMultiLine) -- return {}; + /*! +@@ -2165,7 +2166,8 @@ QCborMap QCborValue::toMap(const QCborMap &defaultValue) const + Q_ASSERT(n == -1 || container == nullptr); + if (n < 0) + dd = container; +- return dd ? QCborMap(*dd) : defaultValue; ++ // return QCborMap(*dd); but that's UB if dd is nullptr ++ return dd ? QCborMap(*dd) : QCborMap(); + } + + /*! +diff --git a/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp b/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp +index 533fb1c8aa7..63ce77d67fa 100644 +--- a/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp ++++ b/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp +@@ -75,6 +75,7 @@ private slots: + void arrayStringElements(); + void arraySelfAssign_data() { basics_data(); } + void arraySelfAssign(); ++ void arrayNested(); + + void mapDefaultInitialization(); + void mapEmptyInitializerList(); +@@ -93,6 +94,7 @@ private slots: + void mapSelfAssign(); + void mapComplexKeys_data() { basics_data(); } + void mapComplexKeys(); ++ void mapNested(); + + void sorting(); + +@@ -1570,6 +1572,91 @@ void tst_QCborValue::mapComplexKeys() + QVERIFY(!m.contains(tagged)); + } + ++void tst_QCborValue::arrayNested() ++{ ++ const QCborArray wrongArray = { false, nullptr, QCborValue() }; ++ { ++ QCborArray a1 = { 42, 47 }; ++ QCborArray a2 = { QCborValue(a1) }; ++ QCOMPARE(a2.size(), 1); ++ const QCborValue &first = qAsConst(a2).first(); ++ QVERIFY(first.isArray()); ++ QCOMPARE(first.toArray(wrongArray).size(), 2); ++ QCOMPARE(first.toArray(wrongArray).first(), 42); ++ QCOMPARE(first.toArray(wrongArray).last(), 47); ++ } ++ { ++ QCborArray a1 = { 42, 47 }; ++ QCborArray a2 = { QCborValue(a1) }; ++ QCOMPARE(a2.size(), 1); ++ QCborValueRef first = a2.first(); ++ QVERIFY(first.isArray()); ++ QCOMPARE(first.toArray(wrongArray).size(), 2); ++ QCOMPARE(first.toArray(wrongArray).first(), 42); ++ QCOMPARE(first.toArray(wrongArray).last(), 47); ++ } ++ ++ { ++ QCborArray a1; ++ a1 = { QCborValue(a1) }; // insert it into itself ++ QCOMPARE(a1.size(), 1); ++ const QCborValue &first = qAsConst(a1).first(); ++ QVERIFY(first.isArray()); ++ QCOMPARE(first, QCborArray()); ++ QCOMPARE(first.toArray(wrongArray), QCborArray()); ++ } ++ { ++ QCborArray a1; ++ a1 = { QCborValue(a1) }; // insert it into itself ++ QCborValueRef first = a1.first(); ++ QVERIFY(first.isArray()); ++ QCOMPARE(first, QCborArray()); ++ QCOMPARE(first.toArray(wrongArray), QCborArray()); ++ } ++ { ++ QCborArray a1; ++ a1.append(a1); // insert into itself ++ QCOMPARE(a1.size(), 1); ++ const QCborValue &first = qAsConst(a1).first(); ++ QVERIFY(first.isArray()); ++ QCOMPARE(first, QCborArray()); ++ QCOMPARE(first.toArray(), QCborArray()); ++ } ++ { ++ QCborArray a1; ++ a1.append(a1); // insert into itself ++ QCborValueRef first = a1.first(); ++ QVERIFY(first.isArray()); ++ QCOMPARE(first, QCborArray()); ++ QCOMPARE(first.toArray(), QCborArray()); ++ } ++} ++ ++void tst_QCborValue::mapNested() ++{ ++ const QCborMap wrongMap = { { -1, false }, {-2, nullptr }, { -3, QCborValue() } }; ++ { ++ QCborMap m1 = { {1, 42}, {2, 47} }; ++ QCborMap m2 = { { QString(), m1 } }; ++ QCOMPARE(m2.size(), 1); ++ const QCborValue &first = m2.constBegin().value(); ++ QVERIFY(first.isMap()); ++ QCOMPARE(first.toMap(wrongMap).size(), 2); ++ QCOMPARE(first.toMap(wrongMap).begin().key(), 1); ++ QCOMPARE(first.toMap(wrongMap).begin().value(), 42); ++ } ++ ++ { ++ QCborMap m1; ++ m1 = { { QString(), QCborValue(m1) } }; // insert it into itself ++ QCOMPARE(m1.size(), 1); ++ const QCborValue &first = m1.constBegin().value(); ++ QVERIFY(first.isMap()); ++ QCOMPARE(first, QCborMap()); ++ QCOMPARE(first.toMap(wrongMap), QCborMap()); ++ } ++} ++ + void tst_QCborValue::sorting() + { + QCborValue vundef, vnull(nullptr); +-- +2.49.0 + +From 3bf56be9db2e01f2d33caefec3ccfc55c9a2d1e7 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Wed, 24 May 2023 20:21:33 +0200 +Subject: [PATCH 073/123] Use pkgconfig in order to find libproxy configuration + +>=libproxy-0.5 moved proxy.h into a non-default include search path. + +See also: +https://github.com/libproxy/libproxy/issues/226#issuecomment-1557064225 +https://bugs.gentoo.org/906879 + +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + src/network/configure.json | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/network/configure.json b/src/network/configure.json +index 271ff164acc..ffba2d1eeab 100644 +--- a/src/network/configure.json ++++ b/src/network/configure.json +@@ -53,7 +53,7 @@ + }, + "headers": "proxy.h", + "sources": [ +- "-lproxy" ++ { "type": "pkgConfig", "args": "libproxy-1.0" } + ] + }, + "openssl_headers": { +-- +2.49.0 + +From 337538924287eb993fd95a8768bae98fe3d44e5f Mon Sep 17 00:00:00 2001 +From: Liang Qi <liang.qi@qt.io> +Date: Wed, 11 Jan 2023 10:06:44 +0100 +Subject: [PATCH 074/123] qxcbwindow.cpp: Fix sign-compare and another warnings + +qsizetype(int32 on 32bit, int64 on 64bit) vs uint32. + +qxcbwindow.cpp: In member function 'virtual void QXcbWindow::setWindowIcon(const QIcon&)': +qxcbwindow.cpp:1300:30: warning: comparison of integer expressions of different signedness: 'qsizetype' {aka 'int'} and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare] + 1300 | if (icon_data.size() > xcb_get_maximum_request_length(xcb_connection())) { + | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +qxcbwindow.cpp:1301:53: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 3 has type 'qsizetype' {aka 'int'} [-Wformat=] + 1301 | qWarning("Ignoring window icon: Size %llu exceeds maximum xcb request length %u.", + | ~~~^ + | | + | long long unsigned int + | %u + 1302 | icon_data.size(), xcb_get_maximum_request_length(xcb_connection())); + | ~~~~~~~~~~~~~~~~ + | | + | qsizetype {aka int} + +This amends ebdaf8ef9cea6f3669fc73bc3395acf2e497f7fc. + +Fixes: QTBUG-109610 +Pick-to: 6.5 6.4 6.2 5.15 +Change-Id: I2c9b5ad27881658463dd0870639c42d3ea8e7aba +Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> +(cherry picked from commit ec787ce14363c843f9c1149bad8045ff6acbcf1c) +--- + src/plugins/platforms/xcb/qxcbwindow.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp +index d123a781fb6..582f273aec6 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.cpp ++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp +@@ -1382,9 +1382,10 @@ void QXcbWindow::setWindowIcon(const QIcon &icon) + + if (!icon_data.isEmpty()) { + // Ignore icon exceeding maximum xcb request length +- if (size_t(icon_data.size()) > xcb_get_maximum_request_length(xcb_connection())) { +- qWarning("Ignoring window icon: Size %d exceeds maximum xcb request length %u.", +- icon_data.size(), xcb_get_maximum_request_length(xcb_connection())); ++ if (quint64(icon_data.size()) > quint64(xcb_get_maximum_request_length(xcb_connection()))) { ++ qWarning() << "Ignoring window icon" << icon_data.size() ++ << "exceeds maximum xcb request length" ++ << xcb_get_maximum_request_length(xcb_connection()); + return; + } + xcb_change_property(xcb_connection(), +-- +2.49.0 + +From b148b98028ca9d29440091b07865ced037f781f1 Mon Sep 17 00:00:00 2001 +From: Olivier Goffart <ogoffart@woboq.com> +Date: Thu, 5 Dec 2019 14:05:11 +0100 +Subject: [PATCH 075/123] Fix tst_moc for C++17 + +The throw() specification is no longer accepted in C++17 mode, so remove that. + +Also pass the -std=c++1z to the compiler as Qt is going to require C++17 soon + +Change-Id: I6d249e574d90cd1cf5c0ea595830d2db07681050 +Reviewed-by: Lars Knoll <lars.knoll@qt.io> +(cherry picked from commit b0498b1864829a314b70c4204bb47529ab3654b2) +--- + tests/auto/tools/moc/allmocs_baseline_in.json | 34 -------------- + tests/auto/tools/moc/moc.pro | 2 +- + tests/auto/tools/moc/task189996.h | 45 ------------------- + tests/auto/tools/moc/tst_moc.cpp | 22 ++------- + 4 files changed, 5 insertions(+), 98 deletions(-) + delete mode 100644 tests/auto/tools/moc/task189996.h + +diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json +index 18282505e48..ce518e78fb4 100644 +--- a/tests/auto/tools/moc/allmocs_baseline_in.json ++++ b/tests/auto/tools/moc/allmocs_baseline_in.json +@@ -668,40 +668,6 @@ + "inputFile": "task192552.h", + "outputRevision": 67 + }, +- { +- "classes": [ +- { +- "className": "InlineSlotsWithThrowDeclaration", +- "object": true, +- "qualifiedClassName": "InlineSlotsWithThrowDeclaration", +- "slots": [ +- { +- "access": "public", +- "name": "a", +- "returnType": "void" +- }, +- { +- "access": "public", +- "name": "b", +- "returnType": "void" +- }, +- { +- "access": "public", +- "name": "c", +- "returnType": "void" +- } +- ], +- "superClasses": [ +- { +- "access": "public", +- "name": "QObject" +- } +- ] +- } +- ], +- "inputFile": "task189996.h", +- "outputRevision": 67 +- }, + { + "classes": [ + { +diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro +index c324b3a8cd0..4aceb78dc0f 100644 +--- a/tests/auto/tools/moc/moc.pro ++++ b/tests/auto/tools/moc/moc.pro +@@ -15,7 +15,7 @@ cross_compile: DEFINES += MOC_CROSS_COMPILED + HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \ + slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \ + escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \ +- dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \ ++ dir-in-include-path.h single_function_keyword.h task192552.h \ + task234909.h task240368.h pure-virtual-signals.h cxx11-enums.h \ + cxx11-final-classes.h \ + cxx11-explicit-override-control.h \ +diff --git a/tests/auto/tools/moc/task189996.h b/tests/auto/tools/moc/task189996.h +deleted file mode 100644 +index ba9450c2718..00000000000 +--- a/tests/auto/tools/moc/task189996.h ++++ /dev/null +@@ -1,45 +0,0 @@ +-/**************************************************************************** +-** +-** Copyright (C) 2016 The Qt Company Ltd. +-** Contact: https://www.qt.io/licensing/ +-** +-** This file is part of the test suite of the Qt Toolkit. +-** +-** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +-** Commercial License Usage +-** Licensees holding valid commercial Qt licenses may use this file in +-** accordance with the commercial license agreement provided with the +-** Software or, alternatively, in accordance with the terms contained in +-** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see https://www.qt.io/terms-conditions. For further +-** information use the contact form at https://www.qt.io/contact-us. +-** +-** GNU General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 3 as published by the Free Software +-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +-** included in the packaging of this file. Please review the following +-** information to ensure the GNU General Public License requirements will +-** be met: https://www.gnu.org/licenses/gpl-3.0.html. +-** +-** $QT_END_LICENSE$ +-** +-****************************************************************************/ +-// inline functions can have throw declarations - -- auto im = qGuiApp->inputMethod(); -- if (!im) -- return {}; +-#ifndef TASK189996_H +-#define TASK189996_H - -- const auto cursorRect= im->cursorRectangle().toRect(); -- QRect finalRect(inputItemRectangle()); -- const QWindow *window = qGuiApp->focusWindow(); -- const double pd = window -- ? QHighDpiScaling::factor(window) -- : QHighDpiScaling::factor(QtAndroid::androidPlatformIntegration()->screen()); -- finalRect.setY(cursorRect.y() * pd); -- finalRect.setHeight(cursorRect.height() * pd); -- //fiddle a bit with vert margins, so the tracking rectangle is not too tight. -- finalRect += QMargins(0, cursorRect.height() / 4, 0, cursorRect.height() / 4); -- return finalRect; --} +-#include <QObject> - --void QAndroidInputContext::updateInputItemRectangle() +-class InlineSlotsWithThrowDeclaration : public QObject -{ -- QRect rect = cursorRect(); +- Q_OBJECT - -- if (!rect.isValid()) -- return; -- QtAndroidInput::updateInputItemRectangle(rect.left(), rect.top(), -- rect.width(), rect.height()); -- updateSelectionHandles(); +-public slots: +- void a() noexcept { } +- void b() const noexcept { } +- void c() noexcept; +-}; +- +-#endif +diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp +index 26e74e2fc7c..a6a1d23479f 100644 +--- a/tests/auto/tools/moc/tst_moc.cpp ++++ b/tests/auto/tools/moc/tst_moc.cpp +@@ -671,7 +671,6 @@ private slots: + void templateGtGt(); + void qprivateslots(); + void qprivateproperties(); +- void inlineSlotsWithThrowDeclaration(); + void warnOnPropertyWithoutREAD(); + void constructors(); + void typenameWithUnsigned(); +@@ -822,7 +821,7 @@ void tst_Moc::oldStyleCasts() + + QStringList args; + args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "." +- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; ++ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; + proc.start("gcc", args); + QVERIFY(proc.waitForStarted()); + proc.write(mocOut); +@@ -890,7 +889,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension() + + QStringList args; + args << "-c" << "-x" << "c++" << "-I" << ".." +- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; ++ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; + proc.start("gcc", args); + QVERIFY(proc.waitForStarted()); + proc.write(mocOut); +@@ -1165,7 +1164,7 @@ void tst_Moc::ignoreOptionClashes() + QStringList gccArgs; + gccArgs << "-c" << "-x" << "c++" << "-I" << ".." + << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null" +- << "-fPIC" << "-std=c++11" << "-"; ++ << "-fPIC" << "-std=c++1z" << "-"; + proc.start("gcc", gccArgs); + QVERIFY(proc.waitForStarted()); + proc.write(mocOut); +@@ -1574,19 +1573,6 @@ void tst_Moc::qprivateproperties() + + } + +-#include "task189996.h" +- +-void InlineSlotsWithThrowDeclaration::c() noexcept {} +- +-void tst_Moc::inlineSlotsWithThrowDeclaration() +-{ +- InlineSlotsWithThrowDeclaration tst; +- const QMetaObject *mobj = tst.metaObject(); +- QVERIFY(mobj->indexOfSlot("a()") != -1); +- QVERIFY(mobj->indexOfSlot("b()") != -1); +- QVERIFY(mobj->indexOfSlot("c()") != -1); -} - - void QAndroidInputContext::showInputPanelLater(Qt::ApplicationState state) + void tst_Moc::warnOnPropertyWithoutREAD() { - if (state != Qt::ApplicationActive) -diff --git a/src/plugins/platforms/android/qandroidinputcontext.h b/src/plugins/platforms/android/qandroidinputcontext.h -index 02a66c367a..e9bfb98e66 100644 ---- a/src/plugins/platforms/android/qandroidinputcontext.h -+++ b/src/plugins/platforms/android/qandroidinputcontext.h -@@ -138,7 +138,6 @@ public: - public slots: - void safeCall(const std::function<void()> &func, Qt::ConnectionType conType = Qt::BlockingQueuedConnection); - void updateCursorPosition(); -- void updateInputItemRectangle(); - void updateSelectionHandles(); - void handleLocationChanged(int handleId, int x, int y); - void touchDown(int x, int y); -@@ -155,7 +154,6 @@ private: - bool focusObjectIsComposing() const; - void focusObjectStartComposing(); - bool focusObjectStopComposing(); -- QRect cursorRect(); + #ifdef MOC_CROSS_COMPILED +@@ -1847,7 +1833,7 @@ void tst_Moc::notifyError() - private: - ExtractedText m_extractedText; + QStringList args; + args << "-c" << "-x" << "c++" << "-I" << "." +- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; ++ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; + proc.start("gcc", args); + QVERIFY(proc.waitForStarted()); + proc.write(mocOut); -- -2.36.0 +2.49.0 -From 0b6ea7bed655412740a3eaaed4114bc69b8c6f98 Mon Sep 17 00:00:00 2001 -From: Johannes Rosenqvist <xeroc81@gmail.com> -Date: Wed, 4 May 2022 12:49:24 +0200 -Subject: [PATCH 136/146] Fix a QDBusConnection crash with pending calls when - connection is closed +From 203506eea05e99e7484a6d2cc2caa6bd9e32d45e Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Mon, 12 Jun 2023 21:35:26 +0200 +Subject: [PATCH 076/123] Revert "Draw the cursor considering the descent is 0" -QDBusConnection::closeConnection does not use deref() on pendingCall -list so if there is an QDBusPendingCallWatcher watching the -pending call the QDbusPendingCallPrivate destructor will -run twice causing a crash. +This reverts commit b7c4b74146d51431bb9591965cf139abeb9561b1. -Pick-to: 5.15 6.2 6.3 -Change-Id: Ib811da36d3510f4292aa310c52c0617b885947b7 -Reviewed-by: Johannes Rosenqvist <xeroc81@gmail.com> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit bb334e8181c52ad1f2b1cf1b89337870579ac8b0) +This is not a pure upstream commit but follows the idea that the +commit that is being reverted is also reverted upstream by + de16300661bc498eb02d8d5b36ccc07ebe595ca2 --- - src/dbus/qdbusintegrator.cpp | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) + src/gui/text/qtextlayout.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) -diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp -index 5b66ce971b..3c2114b3b6 100644 ---- a/src/dbus/qdbusintegrator.cpp -+++ b/src/dbus/qdbusintegrator.cpp -@@ -1135,7 +1135,13 @@ void QDBusConnectionPrivate::closeConnection() - } +diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp +index 70f6ab285b3..dea4b7e1e98 100644 +--- a/src/gui/text/qtextlayout.cpp ++++ b/src/gui/text/qtextlayout.cpp +@@ -1336,13 +1336,13 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + bool rightToLeft = d->isRightToLeft(); + if (itm >= 0) { + const QScriptItem &si = d->layoutData->items.at(itm); +- if (si.ascent >= 0) ++ if (si.ascent > 0) + base = si.ascent; +- if (si.descent >= 0) ++ if (si.descent > 0) + descent = si.descent; + rightToLeft = si.analysis.bidiLevel % 2; } +- qreal y = position.y() + (sl.y + sl.base() + sl.descent - base - descent).toReal(); ++ qreal y = position.y() + (sl.y + sl.base() - base).toReal(); + bool toggleAntialiasing = !(p->renderHints() & QPainter::Antialiasing) + && (p->transform().type() > QTransform::TxTranslate); + if (toggleAntialiasing) +-- +2.49.0 + +From e1fb6ee80a47f46de9031a3c02669082be71c93c Mon Sep 17 00:00:00 2001 +From: Volker Krause <vkrause@kde.org> +Date: Tue, 11 Jul 2023 19:10:33 +0200 +Subject: [PATCH 077/123] Fix Croatia's currency + +Croatia switched to the Euro at the beginning of this year, but this isn't +reflected in the QLocale data tables yet. + +Qt 6 got this is part of a full CLDR update, which is neither easy nor +desirable to backport. So instead this is done by manually patching the +auto-generated QLocale data tables. Ugly, but at least minimally invasive. +--- + src/corelib/text/qlocale_data_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/text/qlocale_data_p.h b/src/corelib/text/qlocale_data_p.h +index c5e6a0d461c..c613e4e537a 100644 +--- a/src/corelib/text/qlocale_data_p.h ++++ b/src/corelib/text/qlocale_data_p.h +@@ -1340,7 +1340,7 @@ static const QLocaleData locale_data[] = { + { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 283,3 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3174,13 , 4,4 , 13,6 , 589,4 , 602,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau + { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 171,5 , 171,5 , 394,8 , 423,14 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 6,1 , 3187,13 , 4,4 , 13,6 , 589,4 , 611,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan + { 26, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Corsican/Latin/France +- { 27, 7, 54, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 286,7 , 5,17 , 22,23 , {72,82,75}, 141,3 , 3200,60 , 19,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia ++ { 27, 7, 54, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 286,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 19,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia + { 27, 7, 27, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2143,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 286,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 3260,85 , 19,5 , 4,0 , 613,8 , 629,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina + { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2157,21 , 2178,49 , 2227,14 , 2157,21 , 2178,49 , 2227,14 , 60,4 , 57,4 , 293,5 , 5,17 , 22,23 , {67,90,75}, 146,2 , 3345,68 , 19,5 , 4,0 , 648,7 , 655,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic + { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 505,23 , 239,5 , 244,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 665,7 , 2, 0, 1, 6, 7 }, // Danish/Latin/Denmark +-- +2.49.0 + +From 3f156e83d2edc26a861465a9110afd1e1d89c09d Mon Sep 17 00:00:00 2001 +From: Axel Spoerl <axel.spoerl@qt.io> +Date: Thu, 27 Jul 2023 12:01:34 +0200 +Subject: [PATCH 078/123] QColorDialog: Ignore mouse move events when no mouse + button is pressed + +mouseMoveEvent overrides in QColorLuminancePicker and QColorPicker +have triggered value changes unconditionally. This happened under the +assumption that the widget attribute WA_Hover is not set (which is the +default behavior). In that case, mouseMoveEvents are only delivered if +a button is pressed. + +If WA_Hover is set - e.g. by applying a style sheet - mouseMoveEvents +get delivered also when no button is pressed. This leads to faulty +behavior: The color and the luminance change, whenever the mouse is +moved into the respective widget. Color/luminance are changed to the +value representing the edge on which the mouse has left the area. + +This patch changes both mouseMoveEvent overrides. They return early +to avoid hovering changing the colors of the luminance/color picker, +but ignore() the event in case anything behind the picker needs hover. + +Since this is a purely graphical effect, an autotest was not added. + +Fixes: QTBUG-115516 +Pick-to: 6.6 6.5 6.2 5.15 +Change-Id: I000d113a1c81c46799cbb5197bf9acb3849e7d3b +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +(cherry picked from commit a2ec43b8ebcbf8462928800a7db4f6af7e482b18) +--- + src/widgets/dialogs/qcolordialog.cpp | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp +index cb325be85ce..30445fa069e 100644 +--- a/src/widgets/dialogs/qcolordialog.cpp ++++ b/src/widgets/dialogs/qcolordialog.cpp +@@ -804,6 +804,10 @@ QColorLuminancePicker::~QColorLuminancePicker() -- qDeleteAll(pendingCalls); -+ for (auto it = pendingCalls.begin(); it != pendingCalls.end(); ++it) { -+ auto call = *it; -+ if (!call->ref.deref()) { -+ delete call; -+ } + void QColorLuminancePicker::mouseMoveEvent(QMouseEvent *m) + { ++ if (m->buttons() == Qt::NoButton) { ++ m->ignore(); ++ return; + } -+ pendingCalls.clear(); - - // Disconnect all signals from signal hooks and from the object tree to - // avoid QObject::destroyed being sent to dbus daemon thread which has + setVal(y2val(m->y())); + } + void QColorLuminancePicker::mousePressEvent(QMouseEvent *m) +@@ -938,6 +942,10 @@ void QColorPicker::setCol(int h, int s) + void QColorPicker::mouseMoveEvent(QMouseEvent *m) + { + QPoint p = m->pos() - contentsRect().topLeft(); ++ if (m->buttons() == Qt::NoButton) { ++ m->ignore(); ++ return; ++ } + setCol(p); + emit newCol(hue, sat); + } -- -2.36.0 +2.49.0 -From 9b601fbd8a4919b40b5e96b188a967f7b981a3e6 Mon Sep 17 00:00:00 2001 -From: Allan Sandfeld Jensen <allan.jensen@qt.io> -Date: Tue, 12 Apr 2022 16:25:08 +0200 -Subject: [PATCH 137/146] Fix race condition in futex-based QSemaphore +From f62949e88fa242d7a5c12d26b487c68b4adc63a7 Mon Sep 17 00:00:00 2001 +From: Dmitry Shachnev <mitya57@gmail.com> +Date: Tue, 18 Apr 2023 13:09:27 +0300 +Subject: [PATCH 079/123] Fix capitalization error in auto-generated + qdbusmacros.h include -Add one and reset the wakeAll bit atomically. +https://bugs.launchpad.net/bugs/2016703 -This avoids a race in a case where an acquiring thread -is owning the semaphore, and deleting it after a -set number of releases (one for each thread referencing the semaphore). +Pick-to: 6.5 6.2 5.15 +Change-Id: I521c7b66d6c1c27ea790f0564b175cccb0027802 +Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> +(cherry picked from commit dca0304c26012a57abae79c9b82f6cbdd0467018) +--- + sync.profile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -Two releasing threads could enter the if statement under -futexNeedsWake(prevValue), the counter been incremented at -this point and reached the value being acquired, meaning the thread -acquiring can be awakened by just one of the two releasers, -delete the semaphore, and then the second releaser would access -the now deleted semaphore. +diff --git a/sync.profile b/sync.profile +index 0292bf0dc2f..7dd0177b908 100644 +--- a/sync.profile ++++ b/sync.profile +@@ -77,7 +77,7 @@ + "qsql.h" => "QtSql/qtsqlglobal.h" + }, + "QtDBus" => { +- "qdbusmacros.h" => "QtDbus/qtdbusglobal.h" ++ "qdbusmacros.h" => "QtDBus/qtdbusglobal.h" + }, + "QtTest" => { + "qtest_global.h" => "QtTest/qttestglobal.h" +-- +2.49.0 -The patch avoids that by unsetting and reading the wakeAll bit -atomically, so only one thread will try to wake all threads. +From 145140794ae1b688312ea305c4752d28285877d2 Mon Sep 17 00:00:00 2001 +From: Mike Krus <mike.krus@kdab.com> +Date: Tue, 21 Jun 2022 10:59:30 +0100 +Subject: [PATCH 080/123] Qt3DRender: includemocs +Task-number: QTBUG-103286 Pick-to: 6.3 6.2 5.15 -Fixes: QTBUG-102484 -Change-Id: I32172ed44d74378c627918e19b9e1aaadb5c6d1d -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 830b1550de303dd59c29a87c28e44fa41112b8f4) +Change-Id: Iaddad08bb469408ee975e463ac82c95870130cee +Reviewed-by: Sean Harmer <sean.harmer@kdab.com> +(cherry picked from commit 1e940bf2f8d260c313917718584736fa9fa86b14 in qt3d) --- - src/corelib/thread/qsemaphore.cpp | 9 ++++++--- - 1 file changed, 6 insertions(+), 3 deletions(-) + src/gui/util/qshaderlanguage.cpp | 2 ++ + 1 file changed, 2 insertions(+) -diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp -index 1d01fc1b28..3ecdee3747 100644 ---- a/src/corelib/thread/qsemaphore.cpp -+++ b/src/corelib/thread/qsemaphore.cpp -@@ -354,7 +354,12 @@ void QSemaphore::release(int n) - quintptr nn = unsigned(n); - if (futexHasWaiterCount) - nn |= quint64(nn) << 32; // token count replicated in high word -- quintptr prevValue = u.fetchAndAddRelease(nn); -+ quintptr prevValue = u.loadRelaxed(); -+ quintptr newValue; -+ do { // loop just to ensure the operations are done atomically -+ newValue = prevValue + nn; -+ newValue &= (futexNeedsWakeAllBit - 1); -+ } while (!u.testAndSetRelease(prevValue, newValue, prevValue)); - if (futexNeedsWake(prevValue)) { - #ifdef FUTEX_OP - if (futexHasWaiterCount) { -@@ -376,7 +381,6 @@ void QSemaphore::release(int n) - quint32 oparg = 0; - quint32 cmp = FUTEX_OP_CMP_NE; - quint32 cmparg = 0; -- u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); - futexWakeOp(*futexLow32(&u), n, INT_MAX, *futexHigh32(&u), FUTEX_OP(op, oparg, cmp, cmparg)); - return; +diff --git a/src/gui/util/qshaderlanguage.cpp b/src/gui/util/qshaderlanguage.cpp +index efd607ba604..9399d6efcc9 100644 +--- a/src/gui/util/qshaderlanguage.cpp ++++ b/src/gui/util/qshaderlanguage.cpp +@@ -52,3 +52,5 @@ void qt_register_ShaderLanguage_enums() + } + + QT_END_NAMESPACE ++ ++#include "moc_qshaderlanguage_p.cpp" +-- +2.49.0 + +From acdb891e035112817b938609c13be6a161335e4e Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Thu, 6 Jul 2023 18:07:27 +0200 +Subject: [PATCH 081/123] Fix UB (signed char passed to <cctype> function) + +Passing char to a <cctype> function is UB for characters that are outside the range [0...255, EOF]. + +You have to cast chars to uchar so the implicit conversion to int +does not produce negative values. + +Amends a6ffce09ce6d4fd39fbb50eb58f7b5d1027f4d60. + +Pick-to: 6.6 6.5 6.2 5.15 +Change-Id: I597ee3ff87d38c40dbdf794ee07d302da26f520e +Reviewed-by: Mike Krus <mike.krus@kdab.com> +(cherry picked from commit cf084d958c1d795fbdc06b6a377ab61d68e0960a in qt3d) + +* asturmlechner 2023-08-14: Resolve conflict with qt3d/dev commit + b291ef7442453d3ea842756189413d9521029b1b (int -> qsizetype) +--- + src/gui/util/qshadergenerator.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gui/util/qshadergenerator.cpp b/src/gui/util/qshadergenerator.cpp +index 1ec25ccd7b2..20ed6abc3ab 100644 +--- a/src/gui/util/qshadergenerator.cpp ++++ b/src/gui/util/qshadergenerator.cpp +@@ -492,7 +492,7 @@ QByteArray QShaderGenerator::createShaderCode(const QStringList &enabledLayers) + int end = begin + 1; + char endChar = line.at(end); + const int size = line.size(); +- while (end < size && (std::isalnum(endChar) || endChar == '_')) { ++ while (end < size && (std::isalnum(uchar(endChar)) || endChar == '_')) { + ++end; + endChar = line.at(end); } -@@ -388,7 +392,6 @@ void QSemaphore::release(int n) - // its acquisition anyway, so it has to wait; - // 2) it did not see the new counter value, in which case its - // futexWait will fail. -- u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); - if (futexHasWaiterCount) { - futexWakeAll(*futexLow32(&u)); - futexWakeAll(*futexHigh32(&u)); -- -2.36.0 +2.49.0 -From aa6f48907e3ae6b9c48b476344efd2fcc3c82f05 Mon Sep 17 00:00:00 2001 -From: Joni Poikelin <joni.poikelin@qt.io> -Date: Thu, 5 May 2022 13:11:53 +0300 -Subject: [PATCH 138/146] Prevent crashing when FcFontList fails +From c0290f580648eddb1662c1b2413985bb80bb89a2 Mon Sep 17 00:00:00 2001 +From: Shawn Rutledge <shawn.rutledge@qt.io> +Date: Fri, 4 Dec 2020 10:28:26 +0100 +Subject: [PATCH 082/123] Fix highdpi conversion of QTabletEvent coordinates on + xcb +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -FcFontList can return null pointer in failure cases which would lead to -null pointer dereference further down. +Amends 1535fc9fb9ddbfce1680979c0634b4fdf8d75fca : when high-dpi scaling +is enabled, there was an offset from the cursor position to the event +position, because QWindow::mapFromGlobal() works in device-independent +pixels, but we are using actual screen pixels here. -Pick-to: 5.15 6.2 6.3 -Change-Id: I6b407cf2f27ead9eb471d3ee7a521468cebf7572 -Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -(cherry picked from commit 691541023aa11c085186ef7f691507c158e1df75) +Pick-to: 6.0 +Pick-to: 5.15 +Pick-to: 5.12 +Task-number: QTBUG-77826 +Change-Id: Ic8743b9e5c4041065f530ed1d9d6c49337b0207a +Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> +Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> +(cherry picked from commit 9d51fb579bb4655f6740096f17f1ced50258c28f) + +2023-04-06: Dmitry Kazakov <dimula73@gmail.com> + this is a modification of Qt's commit, since the official fix uses + features available in Qt6 only + +KDE-bug: https://bugs.kde.org/show_bug.cgi?id=464256 --- - .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 2 ++ - 1 file changed, 2 insertions(+) + src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) -diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp -index 0d4bc288ea..c72c8d5400 100644 ---- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp -+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp -@@ -562,6 +562,8 @@ void QFontconfigDatabase::populateFontDatabase() - fonts = FcFontList(nullptr, pattern, os); - FcObjectSetDestroy(os); - FcPatternDestroy(pattern); -+ if (!fonts) -+ return; +diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp +index 1ced02f31da..5c8298a49d6 100644 +--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp ++++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp +@@ -1255,16 +1255,14 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD + if (Q_LIKELY(useValuators)) { + const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width()); + global.setX(value); +- // mapFromGlobal is ok for nested/embedded windows, but works only with whole-number QPoint; +- // so map it first, then add back the sub-pixel position +- local.setX(window->mapFromGlobal(QPoint(int(value), 0)).x() + (value - int(value))); ++ local.setX(xcbWindow->mapFromGlobal(QPoint(int(value), 0)).x() + (value - int(value))); + } + break; + case QXcbAtom::AbsY: + if (Q_LIKELY(useValuators)) { + qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.y(), physicalScreenArea.height()); + global.setY(value); +- local.setY(window->mapFromGlobal(QPoint(0, int(value))).y() + (value - int(value))); ++ local.setY(xcbWindow->mapFromGlobal(QPoint(0, int(value))).y() + (value - int(value))); + } + break; + case QXcbAtom::AbsPressure: +-- +2.49.0 + +From 124bb568dc21922ee71b2967fd0d732fce18cdb5 Mon Sep 17 00:00:00 2001 +From: David Faure <david.faure@kdab.com> +Date: Mon, 28 Aug 2023 17:42:02 +0200 +Subject: [PATCH 083/123] QMimeDatabase: fix detection of pattern conflict in + different prefixes + +Installing a second mimetype with *.txt as glob had a different +effect depending on whether it was installed into the same prefix +or a different prefix as the one where text/plain is installed. + +Pick-to: 6.6 +Change-Id: I7f54b8efe22f620eb57257745c48fe5402c87626 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(based on commit 1b39e61a775d70ee96287e9f0e418cb5741e6638) +--- + src/corelib/mimetypes/qmimeprovider.cpp | 23 ++++++++++++------- + src/corelib/mimetypes/qmimeprovider_p.h | 2 +- + .../mimetypes/qmimedatabase/testdata.qrc | 1 + + .../qmimedatabase/text-plain-subclass.xml | 15 ++++++++++++ + .../qmimedatabase/tst_qmimedatabase.cpp | 3 +++ + 5 files changed, 35 insertions(+), 9 deletions(-) + create mode 100644 tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml + +diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp +index 4642d0f2d00..5125704cf1d 100644 +--- a/src/corelib/mimetypes/qmimeprovider.cpp ++++ b/src/corelib/mimetypes/qmimeprovider.cpp +@@ -242,24 +242,28 @@ void QMimeBinaryProvider::addFileNameMatches(const QString &fileName, QMimeGlobM + return; + Q_ASSERT(m_cacheFile); + const QString lowerFileName = fileName.toLower(); ++ int numMatches = 0; + // Check literals (e.g. "Makefile") +- matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosLiteralListOffset), fileName); ++ numMatches = matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosLiteralListOffset), fileName); + // Check the very common *.txt cases with the suffix tree +- if (result.m_matchingMimeTypes.isEmpty()) { ++ if (numMatches == 0) { + const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset); + const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset); + const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4); +- matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false); +- if (result.m_matchingMimeTypes.isEmpty()) +- matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true); ++ if (matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false)) { ++ ++numMatches; ++ } else if (matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true)) { ++ ++numMatches; ++ } + } + // Check complex globs (e.g. "callgrind.out[0-9]*" or "README*") +- if (result.m_matchingMimeTypes.isEmpty()) ++ if (numMatches == 0) + matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName); + } + +-void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int off, const QString &fileName) ++int QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int off, const QString &fileName) + { ++ int numMatches = 0; + const int numGlobs = cacheFile->getUint32(off); + //qDebug() << "Loading" << numGlobs << "globs from" << cacheFile->file.fileName() << "at offset" << cacheFile->globListOffset; + for (int i = 0; i < numGlobs; ++i) { +@@ -275,9 +279,12 @@ void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile + //qDebug() << pattern << mimeType << weight << caseSensitive; + QMimeGlobPattern glob(pattern, QString() /*unused*/, weight, qtCaseSensitive); + +- if (glob.matchFileName(fileName)) ++ if (glob.matchFileName(fileName)) { + result.addMatch(QLatin1String(mimeType), weight, pattern); ++ ++numMatches; ++ } + } ++ return numMatches; + } + + bool QMimeBinaryProvider::matchSuffixTree(QMimeGlobMatchResult &result, QMimeBinaryProvider::CacheFile *cacheFile, int numEntries, int firstOffset, const QString &fileName, int charPos, bool caseSensitiveCheck) +diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h +index f9c8ef384c1..5b328a7d5e9 100644 +--- a/src/corelib/mimetypes/qmimeprovider_p.h ++++ b/src/corelib/mimetypes/qmimeprovider_p.h +@@ -115,7 +115,7 @@ public: + private: + struct CacheFile; + +- void matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int offset, const QString &fileName); ++ int matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int offset, const QString &fileName); + bool matchSuffixTree(QMimeGlobMatchResult &result, CacheFile *cacheFile, int numEntries, int firstOffset, const QString &fileName, int charPos, bool caseSensitiveCheck); + bool matchMagicRule(CacheFile *cacheFile, int numMatchlets, int firstOffset, const QByteArray &data); + QLatin1String iconForMime(CacheFile *cacheFile, int posListOffset, const QByteArray &inputMime); +diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc b/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc +index 1002d0195d1..d5774a0213f 100644 +--- a/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc ++++ b/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc +@@ -3,6 +3,7 @@ + <file alias="yast2-metapackage-handler-mimetypes.xml">yast2-metapackage-handler-mimetypes.xml</file> + <file alias="qml-again.xml">qml-again.xml</file> + <file alias="text-x-objcsrc.xml">text-x-objcsrc.xml</file> ++ <file alias="text-plain-subclass.xml">text-plain-subclass.xml</file> + <file alias="test.qml">test.qml</file> + <file>invalid-magic1.xml</file> + <file>invalid-magic2.xml</file> +diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml b/tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml +new file mode 100644 +index 00000000000..7b5cb7506d3 +--- /dev/null ++++ b/tests/auto/corelib/mimetypes/qmimedatabase/text-plain-subclass.xml +@@ -0,0 +1,15 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> ++ <mime-type type="text/x-microdvd"> ++ <comment>MicroDVD subtitles</comment> ++ <sub-class-of type="text/plain"/> ++ <magic priority="50"> ++ <match type="string" value="{1}" offset="0"/> ++ <match type="string" value="{0}" offset="0"/> ++ <match type="string" value="}{" offset="0:6"/> ++ </magic> ++ <generic-icon name="text-x-generic"/> ++ <glob pattern="*.sub"/> ++ <glob pattern="*.txt"/> ++ </mime-type> ++</mime-info> +diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +index 1a3256534be..4eb21b7659e 100644 +--- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp ++++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +@@ -49,6 +49,7 @@ static const char *const additionalMimeFiles[] = { + "yast2-metapackage-handler-mimetypes.xml", + "qml-again.xml", + "text-x-objcsrc.xml", ++ "text-plain-subclass.xml", + "invalid-magic1.xml", + "invalid-magic2.xml", + "invalid-magic3.xml", +@@ -1069,6 +1070,8 @@ void tst_QMimeDatabase::installNewLocalMimeType() + QVERIFY(objcsrc.isValid()); + QCOMPARE(objcsrc.globPatterns(), QStringList()); } ++ QCOMPARE(db.mimeTypeForFile(QLatin1String("foo.txt"), QMimeDatabase::MatchExtension).name(), ++ QString::fromLatin1("text/plain")); - for (int i = 0; i < fonts->nfont; i++) + // Test that a double-definition of a mimetype doesn't lead to sniffing ("conflicting globs"). + const QString qmlTestFile = QLatin1String(RESOURCE_PREFIX "test.qml"); -- -2.36.0 +2.49.0 -From 2ffb7ad8a1079a0444b9c72affe3d19b089b60de Mon Sep 17 00:00:00 2001 -From: Paul Olav Tvete <paul.tvete@qt.io> -Date: Wed, 5 May 2021 11:32:51 +0200 -Subject: [PATCH 139/146] Fix rare integer overflow in text shaping +From a3b329b8f785baac0acce32d2469f6b3cc266c72 Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <m.weghorn@posteo.de> +Date: Mon, 18 Jul 2022 09:11:42 +0200 +Subject: [PATCH 084/123] a11y atspi: Fix incorrect use of x instead of y + position +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -With extreme painter scaling, linearAdvance may be too large to fit in -an unsigned short. +Fixes: QTBUG-105031 +Pick-to: 6.4 6.3 6.2 +Change-Id: I26fcbfbd5a90982b87dda89b2880efe937f099d8 +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +(cherry picked from commit d40dacf5f4697a57314ec77709e4551977d97c29) +--- + src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -Fixes: QTBUG-91758 -Pick-to: 6.1 5.15 -Change-Id: I7bbe6e77ec9bcef4aa5259da1d3000ed1a8eb27a -Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -(cherry picked from commit e2bdff3555f8c2a275c7bbcf964d939a5f489100) +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index 255ea5e33ef..174408c86c1 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -1628,7 +1628,7 @@ static QRect getRelativeRect(QAccessibleInterface *interface) + wr = window->rect(); + + cr.setX(cr.x() - wr.x()); +- cr.setY(cr.x() - wr.y()); ++ cr.setY(cr.y() - wr.y()); + } + return cr; + } +-- +2.49.0 + +From c5d4907d638044795ccd7e18dda2efba0a8bf62b Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <m.weghorn@posteo.de> +Date: Mon, 18 Jul 2022 14:48:51 +0200 +Subject: [PATCH 085/123] a11y atspi: Take dialog into account as top-level + window +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Since a dialog is also a top-level window, it should be taken +into account when trying to find the accessible's top-level +window, relative to which the position will be calulated for +`ATSPI_COORD_TYPE_WINDOW`. + +Fixes: QTBUG-105042 +Pick-to: 6.4 6.3 6.2 +Change-Id: I74fae096fd886bab04187c122f268c26c91b86ab +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +(cherry picked from commit 49c966bc8561d1ca71a97b83ae40852233630eb9) --- - src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) + src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) -diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp -index be1b021638..5b32fc92c4 100644 ---- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp -+++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp -@@ -1051,7 +1051,8 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph, - info.height = TRUNC(top - bottom); +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index 174408c86c1..564330c27d2 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -1606,11 +1606,12 @@ bool AtSpiAdaptor::inheritsQAction(QObject *object) + // Component + static QAccessibleInterface * getWindow(QAccessibleInterface * interface) + { +- if (interface->role() == QAccessible::Window) ++ if (interface->role() == QAccessible::Dialog || interface->role() == QAccessible::Window) + return interface; - // If any of the metrics are too large to fit, don't cache them -- if (areMetricsTooLarge(info)) -+ // Also, avoid integer overflow when linearAdvance is to large to fit in a signed short -+ if (areMetricsTooLarge(info) || info.linearAdvance > 0x7FFF) - return nullptr; + QAccessibleInterface * parent = interface->parent(); +- while (parent && parent->role() != QAccessible::Window) ++ while (parent && parent->role() != QAccessible::Dialog ++ && parent->role() != QAccessible::Window) + parent = parent->parent(); - g = new Glyph; + return parent; -- -2.36.0 +2.49.0 -From 2984fcd1916fe5180881820288b236c26d213245 Mon Sep 17 00:00:00 2001 -From: Fabian Kosmale <fabian.kosmale@qt.io> -Date: Tue, 3 May 2022 08:53:38 +0200 -Subject: [PATCH 140/146] Revert "a11y: Do not cache classes that don't have a - factory plugin" +From e3ba239fa534bf35b3f0f5d89871293b0ef3721d Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <m.weghorn@posteo.de> +Date: Mon, 1 Aug 2022 14:18:05 +0200 +Subject: [PATCH 086/123] a11y atspi: translate coords for GetOffsetAtPoint the + right way +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -This reverts commit 583668005d4d6399fc16d165dcb6a5af2b94323d, and -provides an alternative fix for QTBUG-75106. +The coordinate type for "GetOffsetAtPoint" describes the +coordinate type of the input coordinates and +`QAccessibleTextInterface::offsetAtPoint` expects the +coordinates in screen coordinates. -Reason: This introduced QTBUG-103009, due to lack of caching. To fix the -original issue, we still reduce the amount of caching we do, by only -considering the first non-dynamic meta-object for QML related objects. +Therefore, if window-relative coordinates are given, +the screen coordinates of the window need to be added +(not subtracted) to the window-relative coordinates of the point +in order to calculate the screen coordinates of the point. -Task-number: QTBUG-75106 -Fixes: QTBUG-103009 -Pick-to: 6.3 6.2 5.15 -Change-Id: Ic76af26a719d1114208be9555286239c6c6df615 +Fixes: QTBUG-105281 +Pick-to: 6.4 6.3 6.2 +Change-Id: I5517335c0c0d6a47b8c45c7e4f8f8b5a91f0fcd7 +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +(cherry picked from commit fa0e24b641ad241195cab24d008fed6e68983944) +--- + src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index 564330c27d2..26537ff892d 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -1883,7 +1883,7 @@ bool AtSpiAdaptor::textInterface(QAccessibleInterface *interface, const QString + uint coordType = message.arguments().at(2).toUInt(); + if (coordType == ATSPI_COORD_TYPE_WINDOW) { + QWindow *win = interface->window(); +- point -= QPoint(win->x(), win->y()); ++ point += QPoint(win->x(), win->y()); + } + int offset = interface->textInterface()->offsetAtPoint(point); + sendReply(connection, message, offset); +-- +2.49.0 + +From 7ed3c4aaa79e1e1a929bd9f3f3163986118734ac Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Mon, 12 Jun 2023 22:51:51 +0200 +Subject: [PATCH 087/123] Fix QTextEdit cursor rectangle vertical positioning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When there are characters with different pointsize in QScriptLine, +the value of si.descent is less than sl.descent, which will cause +the y value of the cursor rectangle to be too large. +If si.descent is less than sl.descent, the height of the cursor +rectangle is equal to base plus si.descent. +Amends e99a883bd382ca950192bd66cafb2a1de6394ce7 + +Fixes: QTBUG-96288 +Done-with: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +Pick-to: 6.1 6.2 +Change-Id: I4a8566b32cfa75d8ca1a584f5e8e577c5c9caf0d Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit 02c2ad6cbea5b9c3e8da5a23bdbb402357dba0f0) +(cherry picked from commit 33238ea2c63b372ee8795eaafbfc5a859a778f8d) + +* asturmlechner 2023-06-12: Resolve conflict with kde/5.15 commit + 28b62aa315efd9408c7310331e45195ae4ed663d + +Change-Id: I2c145a12610e57666097318216d4b51906b60e50 --- - src/gui/accessible/qaccessible.cpp | 29 +++++++++++++++++++++++++---- - 1 file changed, 25 insertions(+), 4 deletions(-) - -diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp -index d705bfccb5..0caf3c808c 100644 ---- a/src/gui/accessible/qaccessible.cpp -+++ b/src/gui/accessible/qaccessible.cpp -@@ -54,6 +54,7 @@ - #include <QtCore/qdebug.h> - #include <QtCore/qloggingcategory.h> - #include <QtCore/qmetaobject.h> -+#include <QtCore/private/qmetaobject_p.h> - #include <QtCore/qhash.h> - #include <private/qfactoryloader_p.h> + src/gui/text/qtextlayout.cpp | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp +index dea4b7e1e98..d82ddbbbef3 100644 +--- a/src/gui/text/qtextlayout.cpp ++++ b/src/gui/text/qtextlayout.cpp +@@ -1333,13 +1333,16 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + + QFixed base = sl.base(); + QFixed descent = sl.descent; ++ QFixed cursorDescent = descent; + bool rightToLeft = d->isRightToLeft(); + if (itm >= 0) { + const QScriptItem &si = d->layoutData->items.at(itm); + if (si.ascent > 0) + base = si.ascent; +- if (si.descent > 0) ++ if (si.descent == 0) + descent = si.descent; ++ else if (si.descent > 0 && si.descent < descent) ++ cursorDescent = si.descent; + rightToLeft = si.analysis.bidiLevel % 2; + } + qreal y = position.y() + (sl.y + sl.base() - base).toReal(); +@@ -1353,7 +1356,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + const QTransform &deviceTransform = p->deviceTransform(); + const qreal xScale = deviceTransform.m11(); + if (deviceTransform.type() != QTransform::TxScale || std::trunc(xScale) == xScale) { +- p->fillRect(QRectF(x, y, qreal(width), (base + descent).toReal()), p->pen().brush()); ++ p->fillRect(QRectF(x, y, qreal(width), (base + cursorDescent).toReal()), p->pen().brush()); + } else { + // Ensure consistently rendered cursor width under fractional scaling + const QPen origPen = p->pen(); +@@ -1361,7 +1364,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + pen.setCosmetic(true); + const qreal center = x + qreal(width) / 2; + p->setPen(pen); +- p->drawLine(QPointF(center, y), QPointF(center, y + (base + descent).toReal())); ++ p->drawLine(QPointF(center, y), QPointF(center, y + (base + cursorDescent).toReal())); + p->setPen(origPen); + } + p->setCompositionMode(origCompositionMode); +-- +2.49.0 + +From 2c79b5bbdc39a8675d90ed6326ea41412f6f9f11 Mon Sep 17 00:00:00 2001 +From: Tang Haixiang <tanghaixiang@uniontech.com> +Date: Fri, 14 Oct 2022 10:42:07 +0800 +Subject: [PATCH 088/123] QTextLayout: Reconsider cursor drawing on TextObject + +Revert: e99a883bd382ca950192bd66cafb2a1de6394ce7 +Revert: 33238ea2c63b372ee8795eaafbfc5a859a778f8d + +These two commits made the drawing of the cursor incomprehensible, +but their purpose was to fix the problem of abnormal cursor drawing +when QScriptAnalysis::Object is present. Because objects require +some special handling, they can be specially aligned or floated. + +Anyway, the alignment is already reflected by ascent and descent, +and when drawing, y = position.y() + (sl.y + sl.base() - base).toReal(); +works fine. So roll them back now. + +We just need to specially consider the case where the QScriptItem is a +QScriptAnalysis::Object, keeping the base and descent the same as the row. + +Task-number: QTBUG-92468 +Task-number: QTBUG-86823 +Task-number: QTBUG-96288 +Pick-to: 6.2 6.4 +Change-Id: I6d9a0e00fbc3823e0cc8e0e8bd061da5782d1f8a +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +(cherry picked from commit de16300661bc498eb02d8d5b36ccc07ebe595ca2) + +* asturmlechner 2023-01-18: Resolve conflict with dev branch commit + 5335cc4a5a73bbd6d717989b4257660b92000fb6 + +* asturmlechner 2023-06-12: Resolve conflict with kde/5.15 commit + 28b62aa315efd9408c7310331e45195ae4ed663d +--- + src/gui/text/qtextlayout.cpp | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp +index d82ddbbbef3..a0c847459ce 100644 +--- a/src/gui/text/qtextlayout.cpp ++++ b/src/gui/text/qtextlayout.cpp +@@ -1333,16 +1333,16 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + + QFixed base = sl.base(); + QFixed descent = sl.descent; +- QFixed cursorDescent = descent; + bool rightToLeft = d->isRightToLeft(); + if (itm >= 0) { + const QScriptItem &si = d->layoutData->items.at(itm); +- if (si.ascent > 0) +- base = si.ascent; +- if (si.descent == 0) +- descent = si.descent; +- else if (si.descent > 0 && si.descent < descent) +- cursorDescent = si.descent; ++ // objects need some special treatment as they can have special alignment or be floating ++ if (si.analysis.flags != QScriptAnalysis::Object) { ++ if (si.ascent > 0) ++ base = si.ascent; ++ if (si.descent > 0) ++ descent = si.descent; ++ } + rightToLeft = si.analysis.bidiLevel % 2; + } + qreal y = position.y() + (sl.y + sl.base() - base).toReal(); +@@ -1356,7 +1356,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + const QTransform &deviceTransform = p->deviceTransform(); + const qreal xScale = deviceTransform.m11(); + if (deviceTransform.type() != QTransform::TxScale || std::trunc(xScale) == xScale) { +- p->fillRect(QRectF(x, y, qreal(width), (base + cursorDescent).toReal()), p->pen().brush()); ++ p->fillRect(QRectF(x, y, qreal(width), (base + descent).toReal()), p->pen().brush()); + } else { + // Ensure consistently rendered cursor width under fractional scaling + const QPen origPen = p->pen(); +@@ -1364,7 +1364,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition + pen.setCosmetic(true); + const qreal center = x + qreal(width) / 2; + p->setPen(pen); +- p->drawLine(QPointF(center, y), QPointF(center, y + (base + cursorDescent).toReal())); ++ p->drawLine(QPointF(center, y), QPointF(center, y + (base + descent).toReal())); + p->setPen(origPen); + } + p->setCompositionMode(origCompositionMode); +-- +2.49.0 + +From 27512ad038d4ec0fbb459600aace2e4e39bcde9a Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <m.weghorn@posteo.de> +Date: Thu, 13 Jul 2023 17:15:40 +0200 +Subject: [PATCH 089/123] a11y atspi: Map ButtonMenu role to AT-SPI equivalent +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +at-spi2-core commit [1] + + commit ed16f50e4930e32c29f80552eb698baa35b4677e + Author: Fushan Wen <qydwhotmail@gmail.com> + Date: Thu Jul 21 21:49:32 2022 +0800 + + Add `ATK_ROLE_PUSH_BUTTON_MENU` + + This role allows to specify a button will open a menu. It's widely used + in Hamburger buttons, and Qt has QAccessible:ButtonMenu role for it. + +added a new ATSPI_ROLE_PUSH_BUTTON_MENU role to AT-SPI, +so map to that from QAccessible::ButtonMenu when building +against a recent enough AT-SPI version. + +Note that only a follow-up fix [2] for the above-mentioned +at-spi2-core commit increased ATSPI_ROLE_COUNT accordingly: + + commit b0a062fd02c0cef5cc73b67aae282216856b8d8a + Author: Michael Weghorn <m.weghorn@posteo.de> + Date: Thu Jul 13 14:15:33 2023 +0200 + + Increase ATSPI_ROLE_COUNT after ed16f50e4 + + commit ed16f50e4930e32c29f80552eb698baa35b4677e + Date: Thu Jul 21 21:49:32 2022 +0800 + + Add `ATK_ROLE_PUSH_BUTTON_MENU` + + added a new role, so increase the role count + accordingly. + +[1] https://gitlab.gnome.org/GNOME/at-spi2-core/-/commit/ed16f50e4930e32c29f80552eb698baa35b4677e +[2] https://gitlab.gnome.org/GNOME/at-spi2-core/-/commit/b0a062fd02c0cef5cc73b67aae282216856b8d8a + +Change-Id: If7082c7478c95c6cc68d1c735de47933599f8d2b +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit beb1a48ef7b6bb19fee638bd58e494c41b776248) +--- + src/platformsupport/linuxaccessibility/bridge.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/platformsupport/linuxaccessibility/bridge.cpp b/src/platformsupport/linuxaccessibility/bridge.cpp +index fdc8cd31982..b17e1749c8d 100644 +--- a/src/platformsupport/linuxaccessibility/bridge.cpp ++++ b/src/platformsupport/linuxaccessibility/bridge.cpp +@@ -229,7 +229,11 @@ static RoleMapping map[] = { + //: Role of an accessible object + { QAccessible::ButtonDropDown, ATSPI_ROLE_PUSH_BUTTON, QT_TRANSLATE_NOOP("QSpiAccessibleBridge", "button with drop down") }, + //: Role of an accessible object ++#if ATSPI_ROLE_COUNT > 130 ++ { QAccessible::ButtonMenu, ATSPI_ROLE_PUSH_BUTTON_MENU, QT_TRANSLATE_NOOP("QSpiAccessibleBridge", "button menu") }, ++#else + { QAccessible::ButtonMenu, ATSPI_ROLE_PUSH_BUTTON, QT_TRANSLATE_NOOP("QSpiAccessibleBridge", "button menu") }, ++#endif + //: Role of an accessible object - a button that expands a grid. + { QAccessible::ButtonDropGrid, ATSPI_ROLE_PUSH_BUTTON, QT_TRANSLATE_NOOP("QSpiAccessibleBridge", "button with drop down grid") }, + //: Role of an accessible object - blank space between other objects. +-- +2.49.0 + +From cdd4ceef9c808688d925fe8a87bb0900349adae7 Mon Sep 17 00:00:00 2001 +From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +Date: Wed, 2 Feb 2022 16:10:18 +0100 +Subject: [PATCH 090/123] QPluginLoader: report the right load hints + +A default-constructed QPluginLoader erroneously reports that the +load hints are empty. However, setting a filename would then +automatically set the PreventUnload hint, surprising the user. + +Return the correct flags instead. + +Amends 494376f980e96339b6f1eff7c41336ca4d853065 + +Change-Id: I7a95964cb680afd3adf2f71ed73d2f93023238f2 +Fixes: QTBUG-100416 +Pick-to: 5.15 6.2 6.3 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit e7d627339cc35907c0d5bb263ede10a017e0b988) +--- + src/corelib/plugin/qpluginloader.cpp | 13 ++++++++++--- + .../plugin/qpluginloader/tst_qpluginloader.cpp | 11 ++++++++++- + 2 files changed, 20 insertions(+), 4 deletions(-) + +diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp +index 0a63b93762c..de429d5b476 100644 +--- a/src/corelib/plugin/qpluginloader.cpp ++++ b/src/corelib/plugin/qpluginloader.cpp +@@ -105,6 +105,8 @@ QT_BEGIN_NAMESPACE + \sa QLibrary, {Plug & Paint Example} + */ -@@ -681,6 +682,25 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object) - // Create a QAccessibleInterface for the object class. Start by the most - // derived class and walk up the class hierarchy. - const QMetaObject *mo = object->metaObject(); -+ const auto *objectPriv = QObjectPrivate::get(object); -+ /* -+ We do not want to cache each and every QML metaobject (Button_QMLTYPE_124, -+ Button_QMLTYPE_125, etc.). Those dynamic metaobjects shouldn't have an -+ accessible interface in any case. Instead, we start the whole checking -+ with the first non-dynamic meta-object. To avoid potential regressions -+ in other areas of Qt that also use dynamic metaobjects, we only do this -+ for objects that are QML-related (approximated by checking whether they -+ have ddata set). -+ */ -+ const bool qmlRelated = !objectPriv->isDeletingChildren && -+ objectPriv->declarativeData; -+ while (qmlRelated && mo) { -+ auto mop = QMetaObjectPrivate::get(mo); -+ if (!mop || !(mop->flags & DynamicMetaObject)) -+ break; ++static constexpr QLibrary::LoadHints defaultLoadHints = QLibrary::PreventUnloadHint; + -+ mo = mo->superClass(); -+ }; - while (mo) { - const QString cn = QLatin1String(mo->className()); - -@@ -696,14 +716,15 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object) - // Find a QAccessiblePlugin (factory) for the class name. If there's - // no entry in the cache try to create it using the plugin loader. - if (!qAccessiblePlugins()->contains(cn)) { -+ QAccessiblePlugin *factory = nullptr; // 0 means "no plugin found". This is cached as well. - const int index = loader()->indexOf(cn); -- if (index != -1) { -- QAccessiblePlugin *factory = qobject_cast<QAccessiblePlugin *>(loader()->instance(index)); -- qAccessiblePlugins()->insert(cn, factory); -- } -+ if (index != -1) -+ factory = qobject_cast<QAccessiblePlugin *>(loader()->instance(index)); -+ qAccessiblePlugins()->insert(cn, factory); - } + /*! + \class QStaticPlugin + \inmodule QtCore +@@ -155,7 +157,7 @@ QPluginLoader::QPluginLoader(const QString &fileName, QObject *parent) + : QObject(parent), d(nullptr), did_load(false) + { + setFileName(fileName); +- setLoadHints(QLibrary::PreventUnloadHint); ++ setLoadHints(defaultLoadHints); + } - // At this point the cache should contain a valid factory pointer or 0: -+ Q_ASSERT(qAccessiblePlugins()->contains(cn)); - QAccessiblePlugin *factory = qAccessiblePlugins()->value(cn); - if (factory) { - QAccessibleInterface *result = factory->create(cn, object); + /*! +@@ -357,7 +359,7 @@ static QString locatePlugin(const QString& fileName) + void QPluginLoader::setFileName(const QString &fileName) + { + #if defined(QT_SHARED) +- QLibrary::LoadHints lh = QLibrary::PreventUnloadHint; ++ QLibrary::LoadHints lh = defaultLoadHints; + if (d) { + lh = d->loadHints(); + d->release(); +@@ -422,7 +424,12 @@ void QPluginLoader::setLoadHints(QLibrary::LoadHints loadHints) + + QLibrary::LoadHints QPluginLoader::loadHints() const + { +- return d ? d->loadHints() : QLibrary::LoadHints(); ++ // Not having a d-pointer means that the user hasn't called ++ // setLoadHints() / setFileName() yet. In setFileName() we will ++ // then force defaultLoadHints on loading, so we must return them ++ // from here as well. ++ ++ return d ? d->loadHints() : defaultLoadHints; + } + + #endif // QT_CONFIG(library) +diff --git a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp +index ce8057372cf..3b91fc7d0d8 100644 +--- a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp ++++ b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp +@@ -243,10 +243,19 @@ void tst_QPluginLoader::loadHints() + QSKIP("This test requires Qt to create shared libraries."); + #endif + QPluginLoader loader; +- QCOMPARE(loader.loadHints(), QLibrary::LoadHints{}); //Do not crash ++ QCOMPARE(loader.loadHints(), QLibrary::PreventUnloadHint); //Do not crash + loader.setLoadHints(QLibrary::ResolveAllSymbolsHint); ++ QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); + loader.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin + QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); ++ ++ QPluginLoader loader2; ++ QCOMPARE(loader2.loadHints(), QLibrary::PreventUnloadHint); ++ loader2.setFileName(sys_qualifiedLibraryName("theplugin")); ++ QCOMPARE(loader2.loadHints(), QLibrary::PreventUnloadHint); ++ ++ QPluginLoader loader3(sys_qualifiedLibraryName("theplugin")); ++ QCOMPARE(loader3.loadHints(), QLibrary::PreventUnloadHint); + } + + void tst_QPluginLoader::deleteinstanceOnUnload() -- -2.36.0 +2.49.0 -From 2cd8cb273809205e37b5c2e62fc72a6b44c5ec41 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 13 May 2022 14:33:13 +0200 -Subject: [PATCH 141/146] QReadWriteLock: fix data race in dtor +From d3d967ac505e0887661c2a64b8d510261e29e9a4 Mon Sep 17 00:00:00 2001 +From: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> +Date: Tue, 13 Jun 2023 12:52:28 +0200 +Subject: [PATCH 091/123] QLibraryPrivate: Actually merge load hints -We need an acquire fence before we delete the d-pointer. Otherwise, -the reads that the dtor performs (QReadWriteLockPrivate contains many -non-trivial data types such as std::mutex and QVLA), race against -writes performed in other threads. The qWarning() indicates that -QReadWriteLock can not rely on external synchronization to ensure -a happens-before relationship between reads in the dtor and said writes. +Or old and new load hints in mergeLoadHints() instead of just storing +new ones. Andjust QLibraryPrivate::setLoadHints() to handle objects +with no file name differently and just set load hints directly. -While an explicit fence just before the delete would suffice, the guard -return is an extremely unlikely error case, and if we ignore it, then -loadAcquire() is correct, so use that. +Mention that load hints are merged once the file name is set +in the documentation for QLibrary::setLoadHints(). -Pick-to: 6.3 6.2 5.15 -Change-Id: I29773b665a7f864cd6b07a294da326e8b10399b5 -Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> +Add a regression test into tst_qfactoryloader. + +Update and extend tst_QPluginLoader::loadHints() to take into account +load hints merging. + +Fixes: QTBUG-114480 +Change-Id: I3b9afaec7acde1f5ff992d913f8d7217392c7e00 +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 8af70190966e38dc3a697859f427276aecfe44d4) +(cherry picked from commit 666ce51d4eb6b5dd312f98e2d7a18c54b59945e4) --- - src/corelib/thread/qreadwritelock.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/corelib/plugin/qlibrary.cpp | 13 ++++++++- + src/corelib/plugin/qpluginloader.cpp | 5 ++-- + .../plugin/qfactoryloader/plugin1/plugin1.h | 2 +- + .../qfactoryloader/plugin1/plugin1.json | 5 ++++ + .../qfactoryloader/tst_qfactoryloader.cpp | 27 +++++++++++++++++++ + .../qpluginloader/tst_qpluginloader.cpp | 26 +++++++++++++++--- + 6 files changed, 71 insertions(+), 7 deletions(-) + create mode 100644 tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.json + +diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp +index 5d2f0242674..45b5a3fe27f 100644 +--- a/src/corelib/plugin/qlibrary.cpp ++++ b/src/corelib/plugin/qlibrary.cpp +@@ -526,7 +526,7 @@ void QLibraryPrivate::mergeLoadHints(QLibrary::LoadHints lh) + if (pHnd.loadRelaxed()) + return; + +- loadHintsInt.storeRelaxed(lh); ++ loadHintsInt.fetchAndOrRelaxed(lh); + } + + QFunctionPointer QLibraryPrivate::resolve(const char *symbol) +@@ -538,6 +538,13 @@ QFunctionPointer QLibraryPrivate::resolve(const char *symbol) + + void QLibraryPrivate::setLoadHints(QLibrary::LoadHints lh) + { ++ // Set the load hints directly for a dummy if this object is not associated ++ // with a file. Such object is not shared between multiple instances. ++ if (fileName.isEmpty()) { ++ loadHintsInt.storeRelaxed(lh); ++ return; ++ } ++ + // this locks a global mutex + QMutexLocker lock(&qt_library_mutex); + mergeLoadHints(lh); +@@ -1166,6 +1173,10 @@ QString QLibrary::errorString() const + lazy symbol resolution, and will not export external symbols for resolution + in other dynamically-loaded libraries. + ++ \note Hints can only be cleared when this object is not associated with a ++ file. Hints can only be added once the file name is set (\a hints will ++ be or'ed with the old hints). ++ + \note Setting this property after the library has been loaded has no effect + and loadHints() will not reflect those changes. + +diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp +index de429d5b476..02b8c588be7 100644 +--- a/src/corelib/plugin/qpluginloader.cpp ++++ b/src/corelib/plugin/qpluginloader.cpp +@@ -416,10 +416,11 @@ QString QPluginLoader::errorString() const + void QPluginLoader::setLoadHints(QLibrary::LoadHints loadHints) + { + if (!d) { +- d = QLibraryPrivate::findOrCreate(QString()); // ugly, but we need a d-ptr ++ d = QLibraryPrivate::findOrCreate({}, {}, loadHints); // ugly, but we need a d-ptr + d->errorString.clear(); ++ } else { ++ d->setLoadHints(loadHints); + } +- d->setLoadHints(loadHints); + } + + QLibrary::LoadHints QPluginLoader::loadHints() const +diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h +index ca2ceed7a91..624316dfdbf 100644 +--- a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h ++++ b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.h +@@ -35,7 +35,7 @@ + class Plugin1 : public QObject, public PluginInterface1 + { + Q_OBJECT +- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.autotests.plugininterface1") ++ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.autotests.plugininterface1" FILE "plugin1.json") + Q_INTERFACES(PluginInterface1) + + public: +diff --git a/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.json b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.json +new file mode 100644 +index 00000000000..ce67846d485 +--- /dev/null ++++ b/tests/auto/corelib/plugin/qfactoryloader/plugin1/plugin1.json +@@ -0,0 +1,5 @@ ++{ ++ "Keys": [ ++ "plugin1" ++ ] ++} +diff --git a/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp b/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp +index 9fa61804b38..88ada1b806d 100644 +--- a/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp ++++ b/tests/auto/corelib/plugin/qfactoryloader/tst_qfactoryloader.cpp +@@ -31,6 +31,7 @@ + #include <QtCore/qfileinfo.h> + #include <QtCore/qplugin.h> + #include <private/qfactoryloader_p.h> ++#include <private/qlibrary_p.h> + #include "plugin1/plugininterface1.h" + #include "plugin2/plugininterface2.h" + +@@ -52,6 +53,7 @@ public slots: + + private slots: + void usingTwoFactoriesFromSameDir(); ++ void multiplePaths(); + }; + + static const char binFolderC[] = "bin"; +@@ -92,5 +94,30 @@ void tst_QFactoryLoader::usingTwoFactoriesFromSameDir() + QCOMPARE(plugin2->pluginName(), QLatin1String("Plugin2 ok")); + } + ++void tst_QFactoryLoader::multiplePaths() ++{ ++#if !QT_CONFIG(library) || !(defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN)) || defined(Q_OS_ANDROID) ++ QSKIP("Test not applicable in this configuration."); ++#else ++ const QString binFolder = QFINDTESTDATA(binFolderC); ++ ++ QTemporaryDir dir; ++ QVERIFY(dir.isValid()); ++ ++ QString pluginsPath = QFileInfo(binFolder, binFolderC).absolutePath(); ++ QString linkPath = dir.filePath(binFolderC); ++ QVERIFY(QFile::link(pluginsPath, linkPath)); ++ ++ QCoreApplication::setLibraryPaths({ QFileInfo(binFolder).absolutePath(), dir.path() }); ++ ++ const QString suffix = QLatin1Char('/') + QLatin1String(binFolderC); ++ QFactoryLoader loader1(PluginInterface1_iid, suffix); ++ ++ QLibraryPrivate *library1 = loader1.library("plugin1"); ++ QVERIFY(library1); ++ QCOMPARE(library1->loadHints(), QLibrary::PreventUnloadHint); ++#endif ++} ++ + QTEST_MAIN(tst_QFactoryLoader) + #include "tst_qfactoryloader.moc" +diff --git a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp +index 3b91fc7d0d8..833f68b1def 100644 +--- a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp ++++ b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp +@@ -193,7 +193,9 @@ void tst_QPluginLoader::errorString() + QVERIFY(!unloaded); + } + +-#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) && !defined(Q_OS_HPUX) ++// A bug in QNX causes the test to crash on exit after attempting to load ++// a shared library with undefined symbols (tracked as QTBUG-114682). ++#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC) && !defined(Q_OS_HPUX) && !defined(Q_OS_QNX) + { + QPluginLoader loader( sys_qualifiedLibraryName("almostplugin")); //a plugin with unresolved symbols + loader.setLoadHints(QLibrary::ResolveAllSymbolsHint); +@@ -246,16 +248,34 @@ void tst_QPluginLoader::loadHints() + QCOMPARE(loader.loadHints(), QLibrary::PreventUnloadHint); //Do not crash + loader.setLoadHints(QLibrary::ResolveAllSymbolsHint); + QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); ++ // We can clear load hints when file name is not set. ++ loader.setLoadHints(QLibrary::LoadHints{}); ++ QCOMPARE(loader.loadHints(), QLibrary::LoadHints{}); ++ // Set the hints again ++ loader.setLoadHints(QLibrary::ResolveAllSymbolsHint); ++ QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); + loader.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin + QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); + ++ QPluginLoader loader4; ++ QCOMPARE(loader4.loadHints(), QLibrary::PreventUnloadHint); ++ loader4.setLoadHints(QLibrary::LoadHints{}); ++ QCOMPARE(loader4.loadHints(), QLibrary::LoadHints{}); ++ loader4.setFileName(sys_qualifiedLibraryName("theplugin")); ++ // Hints are merged with hints from the previous loader. ++ QCOMPARE(loader4.loadHints(), QLibrary::ResolveAllSymbolsHint); ++ // We cannot clear load hints after associating the loader with a file. ++ loader.setLoadHints(QLibrary::LoadHints{}); ++ QCOMPARE(loader.loadHints(), QLibrary::ResolveAllSymbolsHint); ++ + QPluginLoader loader2; + QCOMPARE(loader2.loadHints(), QLibrary::PreventUnloadHint); + loader2.setFileName(sys_qualifiedLibraryName("theplugin")); +- QCOMPARE(loader2.loadHints(), QLibrary::PreventUnloadHint); ++ // Hints are merged with hints from previous loaders. ++ QCOMPARE(loader2.loadHints(), QLibrary::PreventUnloadHint | QLibrary::ResolveAllSymbolsHint); + + QPluginLoader loader3(sys_qualifiedLibraryName("theplugin")); +- QCOMPARE(loader3.loadHints(), QLibrary::PreventUnloadHint); ++ QCOMPARE(loader3.loadHints(), QLibrary::PreventUnloadHint | QLibrary::ResolveAllSymbolsHint); + } + + void tst_QPluginLoader::deleteinstanceOnUnload() +-- +2.49.0 + +From ca708f7b2131c0d63f7ee144b045feadb77b8b31 Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher <ch.ehrlicher@gmx.de> +Date: Sat, 11 Nov 2023 17:39:00 +0100 +Subject: [PATCH 092/123] QStandardItemModel: don't leak in mimeData() -diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp -index 8c28507d5a..e1052917d7 100644 ---- a/src/corelib/thread/qreadwritelock.cpp -+++ b/src/corelib/thread/qreadwritelock.cpp -@@ -155,7 +155,7 @@ QReadWriteLock::QReadWriteLock(RecursionMode recursionMode) +When an invalid index is given to QStandardItemModel::mimeData() the +function bails out with a warning and returns a nullptr. But the +allocated data from QAIM::modelData() was not freed. + +Pick-to: 6.6 6.5 6.2 5.15 +Task-number: QTBUG-116532 +Change-Id: Ibce9d51ea09d45f1b0eb3ca980aaff141af5bf68 +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit 37048d04172430ee88c9cd8f7589c51a5bbcd5f4) +--- + src/gui/itemmodels/qstandarditemmodel.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp +index fc9424763ef..a3e0853fa8b 100644 +--- a/src/gui/itemmodels/qstandarditemmodel.cpp ++++ b/src/gui/itemmodels/qstandarditemmodel.cpp +@@ -3113,13 +3113,13 @@ QStringList QStandardItemModel::mimeTypes() const */ - QReadWriteLock::~QReadWriteLock() + QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const { -- auto d = d_ptr.loadRelaxed(); -+ auto d = d_ptr.loadAcquire(); - if (isUncontendedLocked(d)) { - qWarning("QReadWriteLock: destroying locked QReadWriteLock"); - return; +- QMimeData *data = QAbstractItemModel::mimeData(indexes); +- if(!data) ++ std::unique_ptr<QMimeData> data(QAbstractItemModel::mimeData(indexes)); ++ if (!data) + return nullptr; + + const QString format = qStandardItemModelDataListMimeType(); + if (!mimeTypes().contains(format)) +- return data; ++ return data.release(); + QByteArray encoded; + QDataStream stream(&encoded, QIODevice::WriteOnly); + +@@ -3172,7 +3172,7 @@ QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const + } + + data->setData(format, encoded); +- return data; ++ return data.release(); + } + + -- -2.36.0 +2.49.0 -From a7b9d067c2f552000e0e581ff99c14ea580fe02a Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 13 May 2022 18:21:01 +0200 -Subject: [PATCH 142/146] QReadWriteLock: fix another data race in - stateForWaitCondition() +From 83baaf7583a5804f7ec300b92fbdfc27e5b3e67f Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher <ch.ehrlicher@gmx.de> +Date: Sun, 12 Nov 2023 13:49:16 +0100 +Subject: [PATCH 093/123] QDial: don't crash when min==max and setting a value + != min & max + +QDial::bound() is crashing when min == max due to a division by zero. +Therefore check for this condition beforehand and return min. + +Pick-to: 6.6 6.5 6.2 5.15 +Fixes: QTBUG-104641 +Change-Id: I612625af1ad18333d59a7771abfdec602301b58e +Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> +(cherry picked from commit e4315204b1412d74842b3167c3eb9a49dc233355) +--- + src/widgets/widgets/qdial.cpp | 2 ++ + tests/auto/widgets/widgets/qdial/tst_qdial.cpp | 10 ++++++++++ + 2 files changed, 12 insertions(+) -The writerCount member variable is only ever accessed under -Private::mutex protection, so we need to lock the mutex here, too. +diff --git a/src/widgets/widgets/qdial.cpp b/src/widgets/widgets/qdial.cpp +index 8f774a3cc72..ec5cec0d823 100644 +--- a/src/widgets/widgets/qdial.cpp ++++ b/src/widgets/widgets/qdial.cpp +@@ -94,6 +94,8 @@ int QDialPrivate::bound(int val) const + if (wrapping) { + if ((val >= minimum) && (val <= maximum)) + return val; ++ if (minimum == maximum) ++ return minimum; + val = minimum + ((val - minimum) % (maximum - minimum)); + if (val < minimum) + val += maximum - minimum; +diff --git a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp +index 356f773ae9f..a014df3b15f 100644 +--- a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp ++++ b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp +@@ -42,6 +42,7 @@ private slots: + void valueChanged(); + void sliderMoved(); + void wrappingCheck(); ++ void minEqualMaxValueOutsideRange(); + }; + + // Testing get/set functions +@@ -194,5 +195,14 @@ void tst_QDial::wrappingCheck() + } + } + ++// QTBUG-104641 ++void tst_QDial::minEqualMaxValueOutsideRange() ++{ ++ QDial dial; ++ dial.setRange(30, 30); ++ dial.setWrapping(true); ++ dial.setValue(45); ++} ++ + QTEST_MAIN(tst_QDial) + #include "tst_qdial.moc" +-- +2.49.0 + +From 5ec1762bee02e1131d07a2bec0a9a1e8d4534a4b Mon Sep 17 00:00:00 2001 +From: Jan Grulich <jgrulich@redhat.com> +Date: Tue, 2 May 2023 11:19:29 +0200 +Subject: [PATCH 094/123] OpenFile portal: do not use O_PATH fds + +Using O_PATH requires correctly specifying whether the fd is writable or +not. Stating that the fd is writable without it actually being writable +results into rejection on xdg-desktop-portal side. Other implementations +like xdg-open or gtk have also moved away from O_PATH fds so this will +make a matching implementation and avoid possible rejections from xdp. + +Fixes: QTBUG-113143 +Pick-to: 6.5 5.15 +Change-Id: Icc171752d73ee091282b7c655f71da3cb59179b1 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit 03cbcba7b2b0e42a04033a008c7fac87595e7f35) +--- + .../services/genericunix/qgenericunixservices.cpp | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) -Pick-to: 6.3 6.2 5.15 -Change-Id: I1717e5282eed2ecc14ccdc5090b9fc41174cccc8 +diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +index 2abe0391263..47ef7d2b5cf 100644 +--- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp ++++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp +@@ -210,8 +210,7 @@ static inline QDBusMessage xdgDesktopPortalOpenFile(const QUrl &url) + // handle_token (s) - A string that will be used as the last element of the @handle. + // writable (b) - Whether to allow the chosen application to write to the file. + +-#ifdef O_PATH +- const int fd = qt_safe_open(QFile::encodeName(url.toLocalFile()), O_PATH); ++ const int fd = qt_safe_open(QFile::encodeName(url.toLocalFile()), O_RDONLY); + if (fd != -1) { + QDBusMessage message = QDBusMessage::createMethodCall(QLatin1String("org.freedesktop.portal.Desktop"), + QLatin1String("/org/freedesktop/portal/desktop"), +@@ -221,16 +220,13 @@ static inline QDBusMessage xdgDesktopPortalOpenFile(const QUrl &url) + QDBusUnixFileDescriptor descriptor; + descriptor.giveFileDescriptor(fd); + +- const QVariantMap options = {{QLatin1String("writable"), true}}; ++ const QVariantMap options = {}; + + // FIXME parent_window_id + message << QString() << QVariant::fromValue(descriptor) << options; + + return QDBusConnection::sessionBus().call(message); + } +-#else +- Q_UNUSED(url) +-#endif + + return QDBusMessage::createError(QDBusError::InternalError, qt_error_string()); + } +-- +2.49.0 + +From 45348adfb69d5c52729382ff22888850972a1800 Mon Sep 17 00:00:00 2001 +From: Alex Henrie <alexhenrie24@gmail.com> +Date: Wed, 15 Nov 2023 09:36:06 -0700 +Subject: [PATCH 095/123] QMimeDatabase: handle buggy type definitions with + circular inheritance + +This fixes an infinite loop reported by a user who had both the +definition of text/javascript from shared-mime-info 2.3 and the +definition of text/javascript from shared-mime-info 2.4 installed at the +same time. In 2.3, text/javascript is a subtype of +application/ecmascript, but in 2.4 application/ecmascript is a subtype +of text/javascript. Having both at the same time resulted in circular +inheritance. + +https://gitlab.freedesktop.org/xdg/shared-mime-info/-/merge_requests/258#note_2167707 + +[ChangeLog][QtCore][QMimeDatabase] Added code to detect and break +circular inheritance loops in the MIME data, which were causing infinite +loops + +Pick-to: 6.5 +Change-Id: Ic207b1593a49c7bb88e4fd810d8f88aa630087ce Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 0ca2cf42e0de422634f13fb6a5e5a9d7560b323b) +Reviewed-by: David Faure <david.faure@kdab.com> +(cherry picked from commit 54656da9ace06caf4a0eeb1832989c0ab211a4a0) +Reviewed-by: Alex Henrie <alexhenrie24@gmail.com> --- - src/corelib/thread/qreadwritelock.cpp | 1 + - 1 file changed, 1 insertion(+) + src/corelib/mimetypes/qmimedatabase.cpp | 11 +++++++++-- + src/corelib/mimetypes/qmimetype.cpp | 7 +++++-- + .../qmimedatabase/circular-inheritance.xml | 13 +++++++++++++ + .../corelib/mimetypes/qmimedatabase/testdata.qrc | 1 + + .../mimetypes/qmimedatabase/tst_qmimedatabase.cpp | 8 ++++++++ + 5 files changed, 36 insertions(+), 4 deletions(-) + create mode 100644 tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml -diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp -index e1052917d7..f030f9fd6c 100644 ---- a/src/corelib/thread/qreadwritelock.cpp -+++ b/src/corelib/thread/qreadwritelock.cpp -@@ -453,6 +453,7 @@ QReadWriteLock::StateForWaitCondition QReadWriteLock::stateForWaitCondition() co - - if (!d) - return Unlocked; -+ const auto lock = qt_scoped_lock(d->mutex); - if (d->writerCount > 1) - return RecursivelyLocked; - else if (d->writerCount == 1) +diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp +index ff868a3268c..34591fc667b 100644 +--- a/src/corelib/mimetypes/qmimedatabase.cpp ++++ b/src/corelib/mimetypes/qmimedatabase.cpp +@@ -46,6 +46,9 @@ + #include "qmimeprovider_p.h" + #include "qmimetype_p.h" + ++#include <private/qduplicatetracker_p.h> ++#include <private/qfilesystementry_p.h> ++ + #include <QtCore/QFile> + #include <QtCore/QFileInfo> + #include <QtCore/QSet> +@@ -431,6 +434,7 @@ QList<QMimeType> QMimeDatabasePrivate::allMimeTypes() + bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent) + { + const QString resolvedParent = resolveAlias(parent); ++ QDuplicateTracker<QString> seen; + std::stack<QString, QStringList> toCheck; + toCheck.push(mime); + while (!toCheck.empty()) { +@@ -439,8 +443,11 @@ bool QMimeDatabasePrivate::inherits(const QString &mime, const QString &parent) + const QString mimeName = toCheck.top(); + toCheck.pop(); + const auto parentList = parents(mimeName); +- for (const QString &par : parentList) +- toCheck.push(resolveAlias(par)); ++ for (const QString &par : parentList) { ++ const QString resolvedPar = resolveAlias(par); ++ if (!seen.hasSeen(resolvedPar)) ++ toCheck.push(resolvedPar); ++ } + } + return false; + } +diff --git a/src/corelib/mimetypes/qmimetype.cpp b/src/corelib/mimetypes/qmimetype.cpp +index 0c0de63961a..d6a351262b1 100644 +--- a/src/corelib/mimetypes/qmimetype.cpp ++++ b/src/corelib/mimetypes/qmimetype.cpp +@@ -376,14 +376,17 @@ QStringList QMimeType::parentMimeTypes() const + static void collectParentMimeTypes(const QString &mime, QStringList &allParents) + { + const QStringList parents = QMimeDatabasePrivate::instance()->mimeParents(mime); ++ QStringList newParents; + for (const QString &parent : parents) { + // I would use QSet, but since order matters I better not +- if (!allParents.contains(parent)) ++ if (!allParents.contains(parent)) { + allParents.append(parent); ++ newParents.append(parent); ++ } + } + // We want a breadth-first search, so that the least-specific parent (octet-stream) is last + // This means iterating twice, unfortunately. +- for (const QString &parent : parents) ++ for (const QString &parent : newParents) + collectParentMimeTypes(parent, allParents); + } + +diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml b/tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml +new file mode 100644 +index 00000000000..466f039803d +--- /dev/null ++++ b/tests/auto/corelib/mimetypes/qmimedatabase/circular-inheritance.xml +@@ -0,0 +1,13 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> ++ <mime-type type="application/ecmascript"> ++ <comment>It's more accurate to say that ECMAScript is a subset of JavaScript</comment> ++ <sub-class-of type="text/javascript"/> ++ <glob pattern="*.js"/> ++ </mime-type> ++ <mime-type type="text/javascript"> ++ <comment>than to say that JavaScript is a subset of ECMAScript</comment> ++ <sub-class-of type="application/ecmascript"/> ++ <glob pattern="*.js"/> ++ </mime-type> ++</mime-info> +diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc b/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc +index d5774a0213f..49dbb0a8baf 100644 +--- a/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc ++++ b/tests/auto/corelib/mimetypes/qmimedatabase/testdata.qrc +@@ -8,6 +8,7 @@ + <file>invalid-magic1.xml</file> + <file>invalid-magic2.xml</file> + <file>invalid-magic3.xml</file> ++ <file>circular-inheritance.xml</file> + <file>magic-and-hierarchy.xml</file> + <file>magic-and-hierarchy.foo</file> + <file>magic-and-hierarchy2.foo</file> +diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +index 4eb21b7659e..d2dd8d340bc 100644 +--- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp ++++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +@@ -54,6 +54,7 @@ static const char *const additionalMimeFiles[] = { + "invalid-magic2.xml", + "invalid-magic3.xml", + "magic-and-hierarchy.xml", ++ "circular-inheritance.xml", + 0 + }; + +@@ -391,6 +392,13 @@ void tst_QMimeDatabase::inheritance() + const QMimeType mswordTemplate = db.mimeTypeForName(QString::fromLatin1("application/msword-template")); + QVERIFY(mswordTemplate.isValid()); + QVERIFY(mswordTemplate.inherits(QLatin1String("application/msword"))); ++ ++ // Check that buggy type definitions that have circular inheritance don't cause an infinite ++ // loop, especially when resolving a conflict between the file's name and its contents ++ const QMimeType ecmascript = db.mimeTypeForName(QString::fromLatin1("application/ecmascript")); ++ QVERIFY(ecmascript.allAncestors().contains("text/plain")); ++ const QMimeType javascript = db.mimeTypeForFileNameAndData("xml.js", "<?xml?>"); ++ QVERIFY(javascript.inherits(QString::fromLatin1("text/javascript"))); + } + + void tst_QMimeDatabase::aliases() -- -2.36.0 +2.49.0 -From da0bc958f3ed031c1119fb631841393045bec7ca Mon Sep 17 00:00:00 2001 +From a6be2f8c742c7549ca55491d03ab4bf498783ea1 Mon Sep 17 00:00:00 2001 From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 13 May 2022 18:21:01 +0200 -Subject: [PATCH 143/146] QReadWriteLock: fix data race in - stateForWaitCondition() +Date: Mon, 29 Jan 2024 10:33:14 +0100 +Subject: [PATCH 096/123] QBitArray: correct inline keyword -The function dereferences the load()ed pointer, so it needs an acquire -fence. +The mutable operator[] method was marked as inline only at the +definition, not the declaration. This is known to cause compilation +failures on MinGW when the function is used in other inline +implementation (cf. e.g. QTBUG-56459). It's not, atm, but fix the +issue proactively. -Pick-to: 6.3 6.2 5.15 -Change-Id: Ib951de3f00851d915fec3392cdaba64f4a994300 +Pick-to: 6.7 6.6 6.5 6.2 5.15 +Change-Id: If805122d9f8dbd72641173509c4b860c20fc1cdc Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 68f220c93b3e831a3f9b8cee0df6bd2ec69f7a11) +(cherry picked from commit 7310d2bd5562d1a88b69a544ab9b88c13cc3f978) --- - src/corelib/thread/qreadwritelock.cpp | 2 +- + src/corelib/tools/qbitarray.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/corelib/tools/qbitarray.h b/src/corelib/tools/qbitarray.h +index eaed17413d8..7934b55164d 100644 +--- a/src/corelib/tools/qbitarray.h ++++ b/src/corelib/tools/qbitarray.h +@@ -84,9 +84,9 @@ public: + bool toggleBit(int i); + + bool at(int i) const; +- QBitRef operator[](int i); ++ inline QBitRef operator[](int i); + bool operator[](int i) const; +- QBitRef operator[](uint i); ++ inline QBitRef operator[](uint i); + bool operator[](uint i) const; + + QBitArray& operator&=(const QBitArray &); +@@ -156,9 +156,9 @@ public: + QBitRef& operator=(bool val) { a.setBit(i, val); return *this; } + }; + +-inline QBitRef QBitArray::operator[](int i) ++QBitRef QBitArray::operator[](int i) + { Q_ASSERT(i >= 0); return QBitRef(*this, i); } +-inline QBitRef QBitArray::operator[](uint i) ++QBitRef QBitArray::operator[](uint i) + { return QBitRef(*this, i); } + + +-- +2.49.0 + +From 724f9e8d89cf2b57e7b4eaeea64dfe88c0067179 Mon Sep 17 00:00:00 2001 +From: Milian Wolff <milian.wolff@kdab.com> +Date: Thu, 4 Jan 2024 12:19:08 +0100 +Subject: [PATCH 097/123] Fix potential leak of QPropertyAnimation in + QLineEditIconButton + +When startOpacityAnimation is triggered and the animation doesn't +finish, it might get leaked during shutdown as shown by valgrind: + +``` +==133963== 600 (16 direct, 584 indirect) bytes in 1 blocks are definitely lost in loss record 2,326 of 2,356 +==133963== at 0x4841FA3: operator new(unsigned long) (vg_replace_malloc.c:483) +==133963== by 0x12698E2D: QLineEditIconButton::startOpacityAnimation(double) (qlineedit_p.cpp:437) +==133963== by 0x1269900D: displayWidgets(std::vector<QLineEditPrivate::SideWidgetEntry, std::allocator<QLineEditPrivate::SideWidgetEntry> > const&, bool) (qlineedit_p.cpp:459) +==133963== by 0x126A1084: QLineEdit::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_qlineedit.cpp:276) +==133963== by 0x152D781E: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3935) +==133963== by 0x1269AB01: QLineEdit::textChanged(QString const&) (moc_qlineedit.cpp:447) +==133963== by 0x126A0EF8: QLineEdit::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_qlineedit.cpp:255) +==133963== by 0x152D781E: void doActivate<false>(QObject*, int, void**) (qobject.cpp:3935) +==133963== by 0x126A1A94: QWidgetLineControl::textChanged(QString const&) (moc_qwidgetlinecontrol_p.cpp:273) +==133963== by 0x126A4C35: QWidgetLineControl::finishChange(int, bool, bool) (qwidgetlinecontrol.cpp:736) +==133963== by 0x126A4F05: QWidgetLineControl::internalSetText(QString const&, int, bool) (qwidgetlinecontrol.cpp:772) +==133963== by 0x12698AF4: setText (qwidgetlinecontrol_p.h:251) +==133963== by 0x12698AF4: QLineEditPrivate::setText(QString const&) (qlineedit_p.cpp:277) +``` + +Note that the line numbers above are potentially slightly off as that +backtrace was recorded on Qt 5.15.9. + +Pick-to: 6.7 6.6 6.5 6.2 5.15 +Change-Id: Ie79744d98d2783e4644e18ec51892c0bc43c1557 +Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> +Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> +(cherry picked from commit 76845e1d31a61735a0f0261fbc15ed7ea5ff71dc) +--- + src/widgets/widgets/qlineedit_p.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp -index f030f9fd6c..9dd8503116 100644 ---- a/src/corelib/thread/qreadwritelock.cpp -+++ b/src/corelib/thread/qreadwritelock.cpp -@@ -445,7 +445,7 @@ void QReadWriteLock::unlock() - /*! \internal Helper for QWaitCondition::wait */ - QReadWriteLock::StateForWaitCondition QReadWriteLock::stateForWaitCondition() const +diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp +index 80c9258da47..3fa0f29d280 100644 +--- a/src/widgets/widgets/qlineedit_p.cpp ++++ b/src/widgets/widgets/qlineedit_p.cpp +@@ -434,7 +434,7 @@ void QLineEditIconButton::animateShow(bool visible) + + void QLineEditIconButton::startOpacityAnimation(qreal endValue) { -- QReadWriteLockPrivate *d = d_ptr.loadRelaxed(); -+ QReadWriteLockPrivate *d = d_ptr.loadAcquire(); - switch (quintptr(d) & StateMask) { - case StateLockedForRead: return LockedForRead; - case StateLockedForWrite: return LockedForWrite; +- QPropertyAnimation *animation = new QPropertyAnimation(this, QByteArrayLiteral("opacity")); ++ QPropertyAnimation *animation = new QPropertyAnimation(this, QByteArrayLiteral("opacity"), this); + connect(animation, &QPropertyAnimation::finished, this, &QLineEditIconButton::onAnimationFinished); + + animation->setDuration(160); -- -2.36.0 +2.49.0 -From 0b45b0e13a87f08f5a3f452000aa26734d3c2bdf Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Tue, 17 May 2022 17:13:04 +0200 -Subject: [PATCH 144/146] Fix data race in QObject::moveToThread() +From 984b3adf2427004d0862f775689b717fbf3d4345 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Thu, 1 Feb 2024 10:02:37 +0100 +Subject: [PATCH 098/123] Revert "xcb: only set base size when it's valid" + +This reverts commit 6f9ed26a0f10dddde2ef48bd2baae93b1422ed5e. + +See also: https://invent.kde.org/qt/qt/qtbase/-/merge_requests/303 +KDE-bug: https://bugs.kde.org/show_bug.cgi?id=478141#c13 +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + src/plugins/platforms/xcb/qxcbwindow.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp +index 582f273aec6..71816f5aa77 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.cpp ++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp +@@ -1456,8 +1456,7 @@ void QXcbWindow::propagateSizeHints() + qMin(XCOORD_MAX, maximumSize.height())); + + if (sizeIncrement.width() > 0 || sizeIncrement.height() > 0) { +- if (!baseSize.isNull() && baseSize.isValid()) +- xcb_icccm_size_hints_set_base_size(&hints, baseSize.width(), baseSize.height()); ++ xcb_icccm_size_hints_set_base_size(&hints, baseSize.width(), baseSize.height()); + xcb_icccm_size_hints_set_resize_inc(&hints, sizeIncrement.width(), sizeIncrement.height()); + } + +-- +2.49.0 -We dereference thisThreadData in the next line, at a point in time -where we haven't, yet, verified that it's this_thread's QThreadData, -so we need an acquire fence. +From c203c4d9d2c0b4db29692a36c4f625d8eba8cc39 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Wed, 20 Mar 2024 10:41:56 +0100 +Subject: [PATCH 099/123] QObjectPrivate::Signal: initialize all members -The alternative would be to re-arrange the code so that dereferencing -the pointer is delayed until after we verified it's this_thread's, but -that doesn't seem readily possible. +A recent change in that area triggered Clang-SA to rescan the code and +complain about this pre-existing bug: If receiver == nullptr, then the +`previous` member was never initialized. -Even if it was easy, we'd first need to verify whether there are any -writes into QThreadData objects after they've been constructed, in -which case the acquire fence may be needed even in case it's 'ours'. +Fix by null'ing it using NSDMI. This is a trivial type, the compiler +will be able to avoid the redundant write. -So just add the acquire fence. +Amends ab92b9e40025dcf08c14232de762a268201a78b4(!). -Pick-to: 6.3 6.2 5.15 -Change-Id: I468bc1f971bd87345bfcd6c13b7384bdf09d086a -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 5dc724d98dec8b4dfaa04132cac227d1909ca825) +Pick-to: 6.7 6.6 6.5 6.2 5.15 +Change-Id: Ideed71f0f36d5f896fb6a4614f233757c1371ee3 +Reviewed-by: David Faure <david.faure@kdab.com> +Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> +(cherry picked from commit 40714c1ddd886f6d0bde53e05f27d6b3e9e6649b) --- - src/corelib/kernel/qobject.cpp | 2 +- + src/corelib/kernel/qobject_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp -index 9385419015..0124f88abd 100644 ---- a/src/corelib/kernel/qobject.cpp -+++ b/src/corelib/kernel/qobject.cpp -@@ -1547,7 +1547,7 @@ void QObject::moveToThread(QThread *targetThread) - - QThreadData *currentData = QThreadData::current(); - QThreadData *targetData = targetThread ? QThreadData::get2(targetThread) : nullptr; -- QThreadData *thisThreadData = d->threadData.loadRelaxed(); -+ QThreadData *thisThreadData = d->threadData.loadAcquire(); - if (!thisThreadData->thread.loadAcquire() && currentData == targetData) { - // one exception to the rule: we allow moving objects with no thread affinity to the current thread - currentData = d->threadData; +diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h +index 13ffb88999d..325a974f308 100644 +--- a/src/corelib/kernel/qobject_p.h ++++ b/src/corelib/kernel/qobject_p.h +@@ -220,7 +220,7 @@ public: + s = s->previous; + } + } +- Sender *previous; ++ Sender *previous = nullptr; + QObject *receiver; + QObject *sender; + int signal; -- -2.36.0 +2.49.0 -From 45534600dfaaa5ad120dfb2efa60cff8243ae15a Mon Sep 17 00:00:00 2001 -From: David Faure <david.faure@kdab.com> -Date: Wed, 23 Feb 2022 00:45:27 +0100 -Subject: [PATCH 145/146] QAbstractItemModel: fix persistent index corruption - when moving columns +From 775ba52c3768b1e45159b0c270b209c2154f84eb Mon Sep 17 00:00:00 2001 +From: Yifan Zhu <fanzhuyifan@gmail.com> +Date: Mon, 11 Mar 2024 09:08:25 -0700 +Subject: [PATCH 100/123] qxkbcommon: fix isKeypad -QHeaderView creates persistent indexes in -_q_sectionsAboutToBeChanged(), called by the slot connected to -rowsAboutToBeMoved/columnsAboutToBeMoved. +This amends a34e81ab8be6445877e040b1afb85deeaa725f86 . -In the case of rows, QAbstractItemModel emits the signal *before* -preparing to update persistent indexes in itemsAboutToBeMoved(), -so it can see the ones newly created by QHeaderView, all is well. +The previous range comparison doesn't work since XKB_KEY_KP_9 is 0xffb9 +while XKB_KEY_KP_Equal is 0xffbd. Change to an explicit switch. -In the case of columns, the emit was done *after* calling -itemsAboutToBeMoved(), so the additional persistent indexes created by -QHeaderView were ignored, and in endMoveRows() we could end up with: -ASSERT failure in QPersistentModelIndex::~QPersistentModelIndex: "persistent model indexes corrupted" +Pick-to: 6.7 6.6 6.5 6.2 5.15 +Change-Id: I3a340bac61fb074eef505ef9b06300a6468877f1 +Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +Reviewed-by: Liang Qi <liang.qi@qt.io> +(cherry picked from commit daa5f7bd5f3951e459f10666a8001c8a0076e827) +--- + .../input/xkbcommon/qxkbcommon_p.h | 41 ++++++++++++++++++- + 1 file changed, 40 insertions(+), 1 deletion(-) -This bug has been there since the very beginning of beginMoveColumns(), -but was undetected because moving columns in a model is pretty rare -(in my case there's a QTransposeProxyModel that turns columns into -rows in the underlying model, and a proxy that handles dropMimeData...) +diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon_p.h b/src/platformsupport/input/xkbcommon/qxkbcommon_p.h +index 8389bd8f5a1..55c46de8cdf 100644 +--- a/src/platformsupport/input/xkbcommon/qxkbcommon_p.h ++++ b/src/platformsupport/input/xkbcommon/qxkbcommon_p.h +@@ -98,7 +98,46 @@ public: + return sym <= 0xff; + } + static bool isKeypad(xkb_keysym_t sym) { +- return sym >= XKB_KEY_KP_Space && sym <= XKB_KEY_KP_9; ++ switch (sym) { ++ case XKB_KEY_KP_Space: ++ case XKB_KEY_KP_Tab: ++ case XKB_KEY_KP_Enter: ++ case XKB_KEY_KP_F1: ++ case XKB_KEY_KP_F2: ++ case XKB_KEY_KP_F3: ++ case XKB_KEY_KP_F4: ++ case XKB_KEY_KP_Home: ++ case XKB_KEY_KP_Left: ++ case XKB_KEY_KP_Up: ++ case XKB_KEY_KP_Right: ++ case XKB_KEY_KP_Down: ++ case XKB_KEY_KP_Prior: ++ case XKB_KEY_KP_Next: ++ case XKB_KEY_KP_End: ++ case XKB_KEY_KP_Begin: ++ case XKB_KEY_KP_Insert: ++ case XKB_KEY_KP_Delete: ++ case XKB_KEY_KP_Equal: ++ case XKB_KEY_KP_Multiply: ++ case XKB_KEY_KP_Add: ++ case XKB_KEY_KP_Separator: ++ case XKB_KEY_KP_Subtract: ++ case XKB_KEY_KP_Decimal: ++ case XKB_KEY_KP_Divide: ++ case XKB_KEY_KP_0: ++ case XKB_KEY_KP_1: ++ case XKB_KEY_KP_2: ++ case XKB_KEY_KP_3: ++ case XKB_KEY_KP_4: ++ case XKB_KEY_KP_5: ++ case XKB_KEY_KP_6: ++ case XKB_KEY_KP_7: ++ case XKB_KEY_KP_8: ++ case XKB_KEY_KP_9: ++ return true; ++ default: ++ return false; ++ } + } + + static void setXkbContext(QPlatformInputContext *inputContext, struct xkb_context *context); +-- +2.49.0 -Pick-to: 6.3 6.2 5.15 -Change-Id: I74bad137594019a04c2a19c2abb351ff3065c25a -Reviewed-by: Andreas Buhr <andreas.buhr@qt.io> -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> -(cherry picked from commit 74a4d88e9a002ec30b4bb7bbaf7776b458ae15db) +From b97af5607cde01b1e28a4e564dc20c2f25f58e71 Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher <ch.ehrlicher@gmx.de> +Date: Sun, 22 Jan 2023 19:59:16 +0100 +Subject: [PATCH 101/123] SQL/ODBC: Pass correct length to SQLColAttribute() + +This ensures the tst_QSqlQuery::record() test passes when checking the +tablename. + +Pick-to: 6.5 6.4 6.2 5.15 +Change-Id: I146f9f627ea366c6813af61ce48b930ca1041b15 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit 9ea00c70fbbe61d4c2da98c3d9390bfbada157bd) --- - src/corelib/itemmodels/qabstractitemmodel.cpp | 4 +--- - .../itemviews/qheaderview/tst_qheaderview.cpp | 20 +++++++++++++++++++ - 2 files changed, 21 insertions(+), 3 deletions(-) - -diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp -index 3a79c502af..997a634e76 100644 ---- a/src/corelib/itemmodels/qabstractitemmodel.cpp -+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp -@@ -3196,9 +3196,8 @@ bool QAbstractItemModel::beginMoveColumns(const QModelIndex &sourceParent, int s - destinationChange.needsAdjust = destinationParent.isValid() && destinationParent.row() >= sourceLast && destinationParent.parent() == sourceParent; - d->changes.push(destinationChange); - -- d->itemsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, Qt::Horizontal); -- - emit columnsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, QPrivateSignal()); -+ d->itemsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, Qt::Horizontal); - return true; + src/plugins/sqldrivers/odbc/qsql_odbc.cpp | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp +index 8e2e8836525..d1477740555 100644 +--- a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp ++++ b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp +@@ -745,10 +745,15 @@ static QSqlField qMakeFieldInfo(const SQLHANDLE hStmt, int i, QString *errorMess + f.setAutoValue(isAutoValue(hStmt, i)); + QVarLengthArray<SQLTCHAR> tableName(TABLENAMESIZE); + SQLSMALLINT tableNameLen; +- r = SQLColAttribute(hStmt, i + 1, SQL_DESC_BASE_TABLE_NAME, tableName.data(), +- TABLENAMESIZE, &tableNameLen, 0); ++ r = SQLColAttribute(hStmt, ++ i + 1, ++ SQL_DESC_BASE_TABLE_NAME, ++ tableName.data(), ++ SQLSMALLINT(tableName.size() * sizeof(SQLTCHAR)), // SQLColAttribute needs/returns size in bytes ++ &tableNameLen, ++ 0); + if (r == SQL_SUCCESS) +- f.setTableName(fromSQLTCHAR(tableName, tableNameLen)); ++ f.setTableName(fromSQLTCHAR(tableName, tableNameLen / sizeof(SQLTCHAR))); + return f; } -@@ -3231,7 +3230,6 @@ void QAbstractItemModel::endMoveColumns() - adjustedSource = createIndex(adjustedSource.row(), adjustedSource.column() + numMoved, adjustedSource.internalPointer()); +-- +2.49.0 + +From a75d6d17f87861fbb7dd8b717a551e7e43a9f2c6 Mon Sep 17 00:00:00 2001 +From: Lu YaNing <luyaning@uniontech.com> +Date: Wed, 8 May 2024 10:32:05 +0800 +Subject: [PATCH 102/123] xcb: Avoid repeatedly registering xsettings callbacks + When switching cursor themes, I found that xsettings callbacks are being + registered repeatedly. When disconnecting the xsettings callback, only one + can be disconnected. + +--- + src/plugins/platforms/xcb/qxcbcursor.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp +index 0670b6ebce1..4635c199d0d 100644 +--- a/src/plugins/platforms/xcb/qxcbcursor.cpp ++++ b/src/plugins/platforms/xcb/qxcbcursor.cpp +@@ -562,7 +562,7 @@ xcb_cursor_t QXcbCursor::createFontCursor(int cshape) + xcb_cursor_t cursor = XCB_NONE; + + #if QT_CONFIG(xcb_xlib) && QT_CONFIG(library) +- if (m_screen->xSettings()->initialized()) { ++ if (!m_callbackForPropertyRegistered && m_screen->xSettings()->initialized()) { + m_screen->xSettings()->registerCallbackForProperty("Gtk/CursorThemeName",cursorThemePropertyChanged,this); + m_callbackForPropertyRegistered = true; + } +-- +2.49.0 + +From 4fa041b43525799310db7cb2f317c2b10a27e1fa Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer <volker.hilsheimer@qt.io> +Date: Mon, 3 Jun 2024 10:14:54 +0200 +Subject: [PATCH 103/123] a11y atspi: Add null checks in table iface methods +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add null checks to cover the cases where +QAccessibleTableInterface::cellAt returns +nullptr (which happens e.g. when called with +invalid indices via AT-SPI) or where the +cell object doesn't implement the +QAccessibleTableCellInterface, which +would previously result in crashes. + +Cherry-picked into 5.15 as it fixes a crash in popular accessibility +client software. Conflict resolution: remove C++17'isms (`if` +with initializer). + +Fixes: QTBUG-119167 +Fixes: QTBUG-125954 +Change-Id: Ieb42617b32ca829af09ae1d54f5de9ec029e3ab2 +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit d91d53c951144255349e5d246353b598179ce967) +--- + .../linuxaccessibility/atspiadaptor.cpp | 37 +++++++++++++------ + 1 file changed, 26 insertions(+), 11 deletions(-) + +diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +index 26537ff892d..d30ed5b6dcb 100644 +--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp ++++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +@@ -2440,13 +2440,14 @@ bool AtSpiAdaptor::tableInterface(QAccessibleInterface *interface, const QString + if (cols > 0) { + row = index / cols; + col = index % cols; +- QAccessibleTableCellInterface *cell = interface->tableInterface()->cellAt(row, col)->tableCellInterface(); +- if (cell) { +- row = cell->rowIndex(); +- col = cell->columnIndex(); +- rowExtents = cell->rowExtent(); +- colExtents = cell->columnExtent(); +- isSelected = cell->isSelected(); ++ QAccessibleInterface *cell = interface->tableInterface()->cellAt(row, col); ++ QAccessibleTableCellInterface *cellIface = cell ? cell->tableCellInterface() : nullptr; ++ if (cellIface) { ++ row = cellIface->rowIndex(); ++ col = cellIface->columnIndex(); ++ rowExtents = cellIface->rowExtent(); ++ colExtents = cellIface->columnExtent(); ++ isSelected = cellIface->isSelected(); + success = true; + } + } +@@ -2457,12 +2458,22 @@ bool AtSpiAdaptor::tableInterface(QAccessibleInterface *interface, const QString + } else if (function == QLatin1String("GetColumnExtentAt")) { + int row = message.arguments().at(0).toInt(); + int column = message.arguments().at(1).toInt(); +- connection.send(message.createReply(interface->tableInterface()->cellAt(row, column)->tableCellInterface()->columnExtent())); ++ int columnExtent = 0; ++ QAccessibleInterface *cell = interface->tableInterface()->cellAt(row, column); ++ QAccessibleTableCellInterface *cellIface = cell ? cell->tableCellInterface() : nullptr; ++ if (cellIface) ++ columnExtent = cellIface->columnExtent(); ++ connection.send(message.createReply(columnExtent)); + + } else if (function == QLatin1String("GetRowExtentAt")) { + int row = message.arguments().at(0).toInt(); + int column = message.arguments().at(1).toInt(); +- connection.send(message.createReply(interface->tableInterface()->cellAt(row, column)->tableCellInterface()->rowExtent())); ++ int rowExtent = 0; ++ QAccessibleInterface *cell = interface->tableInterface()->cellAt(row, column); ++ QAccessibleTableCellInterface *cellIface = cell ? cell->tableCellInterface() : nullptr; ++ if (cellIface) ++ rowExtent = cellIface->rowExtent(); ++ connection.send(message.createReply(rowExtent)); + + } else if (function == QLatin1String("GetColumnHeader")) { + int column = message.arguments().at(0).toInt(); +@@ -2502,8 +2513,12 @@ bool AtSpiAdaptor::tableInterface(QAccessibleInterface *interface, const QString + } else if (function == QLatin1String("IsSelected")) { + int row = message.arguments().at(0).toInt(); + int column = message.arguments().at(1).toInt(); +- QAccessibleTableCellInterface* cell = interface->tableInterface()->cellAt(row, column)->tableCellInterface(); +- connection.send(message.createReply(cell->isSelected())); ++ bool isSelected = false; ++ QAccessibleInterface *cell = interface->tableInterface()->cellAt(row, column); ++ QAccessibleTableCellInterface *cellIface = cell ? cell->tableCellInterface() : nullptr; ++ if (cellIface) ++ isSelected = cellIface->isSelected(); ++ connection.send(message.createReply(isSelected)); + } else if (function == QLatin1String("AddColumnSelection")) { + int column = message.arguments().at(0).toInt(); + connection.send(message.createReply(interface->tableInterface()->selectColumn(column))); +-- +2.49.0 + +From b3ec8f968939198d507dd520eb2384f726286341 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> +Date: Tue, 25 Jun 2024 17:09:35 +0200 +Subject: [PATCH 104/123] HTTP2: Delay any communication until encrypted() can + be responded to + +We have the encrypted() signal that lets users do extra checks on the +established connection. It is emitted as BlockingQueued, so the HTTP +thread stalls until it is done emitting. Users can potentially call +abort() on the QNetworkReply at that point, which is passed as a Queued +call back to the HTTP thread. That means that any currently queued +signal emission will be processed before the abort() call is processed. + +In the case of HTTP2 it is a little special since it is multiplexed and +the code is built to start requests as they are available. This means +that, while the code worked fine for HTTP1, since one connection only +has one request, it is not working for HTTP2, since we try to send more +requests in-between the encrypted() signal and the abort() call. + +This patch changes the code to delay any communication until the +encrypted() signal has been emitted and processed, for HTTP2 only. +It's done by adding a few booleans, both to know that we have to return +early and so we can keep track of what events arose and what we need to +resume once enough time has passed that any abort() call must have been +processed. + +Fixes: QTBUG-126610 +Pick-to: 6.8 6.7 6.5 6.2 5.15 5.12 +Change-Id: Ic25a600c278203256e35f541026f34a8783235ae +Reviewed-by: Marc Mutz <marc.mutz@qt.io> +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit b1e75376cc3adfc7da5502a277dfe9711f3e0536) +(but really taken from upstream CVE-2024-39936-qtbase-5.15.patch) +--- + src/network/access/qhttp2protocolhandler.cpp | 6 +-- + .../access/qhttpnetworkconnectionchannel.cpp | 46 ++++++++++++++++++- + .../access/qhttpnetworkconnectionchannel_p.h | 6 +++ + 3 files changed, 53 insertions(+), 5 deletions(-) + +diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp +index f0dc8800316..995616b54e7 100644 +--- a/src/network/access/qhttp2protocolhandler.cpp ++++ b/src/network/access/qhttp2protocolhandler.cpp +@@ -375,12 +375,12 @@ bool QHttp2ProtocolHandler::sendRequest() + } + } - d->itemsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, Qt::Horizontal); +- if (!prefaceSent && !sendClientPreface()) +- return false; - - emit columnsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, QPrivateSignal()); + if (!requests.size()) + return true; + ++ if (!prefaceSent && !sendClientPreface()) ++ return false; ++ + m_channel->state = QHttpNetworkConnectionChannel::WritingState; + // Check what was promised/pushed, maybe we do not have to send a request + // and have a response already? +diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp +index 7620ca16470..13f9630c658 100644 +--- a/src/network/access/qhttpnetworkconnectionchannel.cpp ++++ b/src/network/access/qhttpnetworkconnectionchannel.cpp +@@ -255,6 +255,10 @@ void QHttpNetworkConnectionChannel::abort() + bool QHttpNetworkConnectionChannel::sendRequest() + { + Q_ASSERT(!protocolHandler.isNull()); ++ if (waitingForPotentialAbort) { ++ needInvokeSendRequest = true; ++ return false; // this return value is unused ++ } + return protocolHandler->sendRequest(); } -diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -index c355ee9665..88c09de8e0 100644 ---- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp -@@ -251,6 +251,7 @@ private slots: - void testResetCachedSizeHint(); - void statusTips(); - void testRemovingColumnsViaLayoutChanged(); -+ void testModelMovingColumns(); - - protected: - void setupTestData(bool use_reset_model = false); -@@ -360,6 +361,12 @@ public: - endRemoveColumns(); - } +@@ -267,21 +271,28 @@ bool QHttpNetworkConnectionChannel::sendRequest() + void QHttpNetworkConnectionChannel::sendRequestDelayed() + { + QMetaObject::invokeMethod(this, [this] { +- Q_ASSERT(!protocolHandler.isNull()); + if (reply) +- protocolHandler->sendRequest(); ++ sendRequest(); + }, Qt::ConnectionType::QueuedConnection); + } -+ void moveColumn(int from, int to) -+ { -+ beginMoveColumns(QModelIndex(), from, from, QModelIndex(), to); -+ endMoveColumns(); + void QHttpNetworkConnectionChannel::_q_receiveReply() + { + Q_ASSERT(!protocolHandler.isNull()); ++ if (waitingForPotentialAbort) { ++ needInvokeReceiveReply = true; ++ return; + } -+ - void cleanup() - { - emit layoutAboutToBeChanged(); -@@ -3627,5 +3634,18 @@ void tst_QHeaderView::testRemovingColumnsViaLayoutChanged() - // The main point of this test is that the section-size restoring code didn't go out of bounds. + protocolHandler->_q_receiveReply(); } -+void tst_QHeaderView::testModelMovingColumns() + void QHttpNetworkConnectionChannel::_q_readyRead() + { + Q_ASSERT(!protocolHandler.isNull()); ++ if (waitingForPotentialAbort) { ++ needInvokeReadyRead = true; ++ return; ++ } + protocolHandler->_q_readyRead(); + } + +@@ -1289,7 +1300,18 @@ void QHttpNetworkConnectionChannel::_q_encrypted() + // Similar to HTTP/1.1 counterpart below: + const auto &pairs = spdyRequestsToSend.values(); // (request, reply) + const auto &pair = pairs.first(); ++ waitingForPotentialAbort = true; + emit pair.second->encrypted(); ++ ++ // We don't send or handle any received data until any effects from ++ // emitting encrypted() have been processed. This is necessary ++ // because the user may have called abort(). We may also abort the ++ // whole connection if the request has been aborted and there is ++ // no more requests to send. ++ QMetaObject::invokeMethod(this, ++ &QHttpNetworkConnectionChannel::checkAndResumeCommunication, ++ Qt::QueuedConnection); ++ + // In case our peer has sent us its settings (window size, max concurrent streams etc.) + // let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection). + QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); +@@ -1307,6 +1329,26 @@ void QHttpNetworkConnectionChannel::_q_encrypted() + } + } + ++void QHttpNetworkConnectionChannel::checkAndResumeCommunication() +{ -+ QtTestModel model(10, 10); -+ QHeaderView hv(Qt::Horizontal); -+ hv.setModel(&model); -+ hv.resizeSections(QHeaderView::ResizeToContents); -+ hv.show(); -+ -+ QPersistentModelIndex index3 = model.index(0, 3); -+ model.moveColumn(3, 1); -+ QCOMPARE(index3.column(), 1); ++ Q_ASSERT(connection->connectionType() > QHttpNetworkConnection::ConnectionTypeHTTP); ++ ++ // Because HTTP/2 requires that we send a SETTINGS frame as the first thing we do, and respond ++ // to a SETTINGS frame with an ACK, we need to delay any handling until we can ensure that any ++ // effects from emitting encrypted() have been processed. ++ // This function is called after encrypted() was emitted, so check for changes. ++ ++ if (!reply && spdyRequestsToSend.isEmpty()) ++ abort(); ++ waitingForPotentialAbort = false; ++ if (needInvokeReadyRead) ++ _q_readyRead(); ++ if (needInvokeReceiveReply) ++ _q_receiveReply(); ++ if (needInvokeSendRequest) ++ sendRequest(); +} + - QTEST_MAIN(tst_QHeaderView) - #include "tst_qheaderview.moc" + void QHttpNetworkConnectionChannel::requeueSpdyRequests() + { + QList<HttpMessagePair> spdyPairs = spdyRequestsToSend.values(); +diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h +index d8ac3979d19..eac44464926 100644 +--- a/src/network/access/qhttpnetworkconnectionchannel_p.h ++++ b/src/network/access/qhttpnetworkconnectionchannel_p.h +@@ -107,6 +107,10 @@ public: + QAbstractSocket *socket; + bool ssl; + bool isInitialized; ++ bool waitingForPotentialAbort = false; ++ bool needInvokeReceiveReply = false; ++ bool needInvokeReadyRead = false; ++ bool needInvokeSendRequest = false; + ChannelState state; + QHttpNetworkRequest request; // current request, only used for HTTP + QHttpNetworkReply *reply; // current reply for this request, only used for HTTP +@@ -187,6 +191,8 @@ public: + void closeAndResendCurrentRequest(); + void resendCurrentRequest(); + ++ void checkAndResumeCommunication(); ++ + bool isSocketBusy() const; + bool isSocketWriting() const; + bool isSocketWaiting() const; -- -2.36.0 +2.49.0 -From a19d88a641e09e1fa5532c73b86df3bf75acc741 Mon Sep 17 00:00:00 2001 -From: Christian Ehrlicher <ch.ehrlicher@gmx.de> -Date: Mon, 21 Dec 2020 14:16:57 +0100 -Subject: [PATCH 146/146] QPushButton/fusion style: don't ignore QIcon::On icon +From 85618d73992ef5f24c33ad1cca15bc794a0b970d Mon Sep 17 00:00:00 2001 +From: Eirik Aavitsland <eirik.aavitsland@qt.io> +Date: Mon, 24 Jun 2024 11:07:00 +0200 +Subject: [PATCH 105/123] Avoid crash in font distancefield computation -The fusion style did ignore the QIcon::On icon because it reset State_On -to avoid the visual shift of a pressed button. -But it's not needed to reset this flag - the shift does not happen -because the fusion style does return 0 as offset for -PM_ButtonShiftHorizontal/PM_ButtonShiftVertical so no shifting will -happen. +A very particular glyph in one particular font would hit an assert in +the glyph path simplification code. It is not clear why this happens, +but at least it should not crash. So instead, this patch makes the +code bail out cleanly, just leaving that glyph empty (invisible). -Fixes: QTBUG-86736 -Fixes: QTBUG-82110 -Change-Id: Ie2aaddb14bc67874f5a9a23d9f04d7a08c6d070f -Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> -Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> -(cherry picked from commit e9ccdf4d8415717323ea7849ded195343560514a) +Task-number: QTBUG-124310 +Change-Id: Id3b9c0b03fb82800f029fc718000ee6ca81408f7 +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit b6f962c87f5084eaf962bfb033b1398f80475120) --- - src/widgets/styles/qfusionstyle.cpp | 8 -------- - 1 file changed, 8 deletions(-) + src/gui/painting/qpathsimplifier.cpp | 18 +++++++++++++----- + src/gui/text/qdistancefield.cpp | 5 +++++ + 2 files changed, 18 insertions(+), 5 deletions(-) + +diff --git a/src/gui/painting/qpathsimplifier.cpp b/src/gui/painting/qpathsimplifier.cpp +index 256a2fefe7f..a2900d8fe49 100644 +--- a/src/gui/painting/qpathsimplifier.cpp ++++ b/src/gui/painting/qpathsimplifier.cpp +@@ -345,7 +345,7 @@ private: + + void initElements(const QVectorPath &path, const QTransform &matrix); + void removeIntersections(); +- void connectElements(); ++ bool connectElements(); + void fillIndices(); + BVHNode *buildTree(Element **elements, int elementCount); + bool intersectNodes(QDataBuffer<Element *> &elements, BVHNode *elementNode, BVHNode *treeNode); +@@ -490,11 +490,17 @@ PathSimplifier::PathSimplifier(const QVectorPath &path, QDataBuffer<QPoint> &ver + { + m_points->reset(); + m_indices->reset(); ++ bool ok = true; + initElements(path, matrix); + if (!m_elements.isEmpty()) { + removeIntersections(); +- connectElements(); +- fillIndices(); ++ ok = connectElements(); ++ if (ok) ++ fillIndices(); ++ } ++ if (!ok) { ++ m_points->reset(); ++ m_indices->reset(); + } + } + +@@ -679,7 +685,7 @@ void PathSimplifier::removeIntersections() + m_bvh.free(); // The bounding volume hierarchy is not needed anymore. + } + +-void PathSimplifier::connectElements() ++bool PathSimplifier::connectElements() + { + Q_ASSERT(!m_elements.isEmpty()); + QDataBuffer<Event> events(m_elements.size() * 2); +@@ -859,7 +865,8 @@ void PathSimplifier::connectElements() + } + + if (!orderedElements.isEmpty()) { +- Q_ASSERT((orderedElements.size() & 1) == 0); ++ if (orderedElements.size() & 1) // Unexpected path structure ++ return false; + int i = 0; + Element *firstElement = orderedElements.at(0); + if (m_points->at(firstElement->indices[0]) != eventPoint) { +@@ -885,6 +892,7 @@ void PathSimplifier::connectElements() + Q_ASSERT((element->next == 0) == (element->previous == 0)); + } + #endif ++ return true; + } + + void PathSimplifier::fillIndices() +diff --git a/src/gui/text/qdistancefield.cpp b/src/gui/text/qdistancefield.cpp +index c843e3b706e..71d9763210f 100644 +--- a/src/gui/text/qdistancefield.cpp ++++ b/src/gui/text/qdistancefield.cpp +@@ -508,6 +508,11 @@ static void makeDistanceField(QDistanceFieldData *data, const QPainterPath &path + QDataBuffer<quint32> pathIndices(0); + QDataBuffer<QPoint> pathVertices(0); + qSimplifyPath(path, pathVertices, pathIndices, transform); ++ if (pathVertices.isEmpty()) { ++ qCWarning(lcDistanceField) << "Unexpected glyph path structure, bailing out"; ++ memset(data->data, 0, data->nbytes); ++ return; ++ } + + const qint32 interiorColor = -0x7f80; // 8:8 signed format, -127.5 + const qint32 exteriorColor = 0x7f80; // 8:8 signed format, 127.5 +-- +2.49.0 -diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp -index f4345d97c4..962912c838 100644 ---- a/src/widgets/styles/qfusionstyle.cpp -+++ b/src/widgets/styles/qfusionstyle.cpp -@@ -1772,14 +1772,6 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio - proxy()->drawControl(CE_PushButtonLabel, &subopt, painter, widget); +From 861b30001294e7ba2876664c7c61e530702feb6b Mon Sep 17 00:00:00 2001 +From: Eirik Aavitsland <eirik.aavitsland@qt.io> +Date: Mon, 12 Aug 2024 10:55:25 +0200 +Subject: [PATCH 106/123] Fix crash in font distancefield computation + +If setting a larger-than-default distance field base font size +(renderTypeQuality in qml), an exceptionally large glyph could cause +integer overflows in the distance filed computation, causing asserts +or crashes. +Change the computation types to avoid the overflow. + +This improves on b6f962c87f5084eaf962bfb033b1398f80475120. + +Fixes: QTBUG-124310 +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Change-Id: I48b7dc3c0a0f35859d45c40d03498ac057e9fa70 +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 30a753944300c13e96f9239a9891cbc8e2e378c1) +--- + src/gui/painting/qpathsimplifier.cpp | 34 ++++++++++++++++------------ + 1 file changed, 19 insertions(+), 15 deletions(-) + +diff --git a/src/gui/painting/qpathsimplifier.cpp b/src/gui/painting/qpathsimplifier.cpp +index a2900d8fe49..60018c18571 100644 +--- a/src/gui/painting/qpathsimplifier.cpp ++++ b/src/gui/painting/qpathsimplifier.cpp +@@ -164,11 +164,15 @@ QPoint IntersectionPoint::round() const + + // Return positive value if 'p' is to the right of the line 'v1'->'v2', negative if left of the + // line and zero if exactly on the line. +-// The returned value is the z-component of the qCross product between 'v2-v1' and 'p-v1', +-// which is twice the signed area of the triangle 'p'->'v1'->'v2' (positive for CW order). +-inline int pointDistanceFromLine(const QPoint &p, const QPoint &v1, const QPoint &v2) ++// The returned value is the sign of the cross product between 'v2-v1' and 'p-v1'. ++inline int pointSideOfLine(const QPoint &p, const QPoint &v1, const QPoint &v2) + { +- return cross(v2 - v1, p - v1); ++ qint64 ux = qint64(v2.x()) - v1.x(); ++ qint64 uy = qint64(v2.y()) - v1.y(); ++ qint64 vx = qint64(p.x()) - v1.x(); ++ qint64 vy = qint64(p.y()) - v1.y(); ++ qint64 c = (ux * vy) - (uy * vx); ++ return (c > 0) ? 1 : (c < 0) ? -1 : 0; + } + + IntersectionPoint intersectionPoint(const QPoint &u1, const QPoint &u2, +@@ -1428,19 +1432,19 @@ bool PathSimplifier::elementIsLeftOf(const Element *left, const Element *right) + return true; + if (leftU.x() > qMax(rightL.x(), rightU.x())) + return false; +- int d = pointDistanceFromLine(leftU, rightL, rightU); ++ int d = pointSideOfLine(leftU, rightL, rightU); + // d < 0: left, d > 0: right, d == 0: on top + if (d == 0) { +- d = pointDistanceFromLine(leftL, rightL, rightU); ++ d = pointSideOfLine(leftL, rightL, rightU); + if (d == 0) { + if (right->degree > Element::Line) { +- d = pointDistanceFromLine(leftL, rightL, m_points->at(right->indices[1])); ++ d = pointSideOfLine(leftL, rightL, m_points->at(right->indices[1])); + if (d == 0) +- d = pointDistanceFromLine(leftL, rightL, m_points->at(right->indices[2])); ++ d = pointSideOfLine(leftL, rightL, m_points->at(right->indices[2])); + } else if (left->degree > Element::Line) { +- d = pointDistanceFromLine(m_points->at(left->indices[1]), rightL, rightU); ++ d = pointSideOfLine(m_points->at(left->indices[1]), rightL, rightU); + if (d == 0) +- d = pointDistanceFromLine(m_points->at(left->indices[2]), rightL, rightU); ++ d = pointSideOfLine(m_points->at(left->indices[2]), rightL, rightU); + } } - break; -- case CE_PushButtonLabel: -- if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) { -- QStyleOptionButton b(*button); -- // no PM_ButtonShiftHorizontal and PM_ButtonShiftVertical for fusion style -- b.state &= ~(State_On | State_Sunken); -- QCommonStyle::drawControl(element, &b, painter, widget); -- } -- break; - case CE_MenuBarEmptyArea: - painter->save(); + } +@@ -1460,13 +1464,13 @@ QPair<PathSimplifier::RBNode *, PathSimplifier::RBNode *> PathSimplifier::outerB + Q_ASSERT(point >= v2 && point <= v1); + if (point == v1 || point == v2) + break; +- int d = pointDistanceFromLine(point, v1, v2); ++ int d = pointSideOfLine(point, v1, v2); + if (d == 0) { + if (element->degree == Element::Line) + break; +- d = pointDistanceFromLine(point, v1, m_points->at(element->indices[1])); ++ d = pointSideOfLine(point, v1, m_points->at(element->indices[1])); + if (d == 0) +- d = pointDistanceFromLine(point, v1, m_points->at(element->indices[2])); ++ d = pointSideOfLine(point, v1, m_points->at(element->indices[2])); + Q_ASSERT(d != 0); + } + if (d < 0) { +@@ -1492,7 +1496,7 @@ QPair<PathSimplifier::RBNode *, PathSimplifier::RBNode *> PathSimplifier::outerB + Q_ASSERT(point >= v2 && point <= v1); + bool equal = (point == v1 || point == v2); + if (!equal) { +- int d = pointDistanceFromLine(point, v1, v2); ++ int d = pointSideOfLine(point, v1, v2); + Q_ASSERT(d >= 0); + equal = (d == 0 && element->degree == Element::Line); + } +@@ -1513,7 +1517,7 @@ QPair<PathSimplifier::RBNode *, PathSimplifier::RBNode *> PathSimplifier::outerB + Q_ASSERT(point >= v2 && point <= v1); + bool equal = (point == v1 || point == v2); + if (!equal) { +- int d = pointDistanceFromLine(point, v1, v2); ++ int d = pointSideOfLine(point, v1, v2); + Q_ASSERT(d <= 0); + equal = (d == 0 && element->degree == Element::Line); + } +-- +2.49.0 + +From e998551972396103d8ddc1b10c60fa1a0f5f2584 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Tue, 28 May 2024 08:33:22 +0200 +Subject: [PATCH 107/123] qhttpmultipart_p.h: add missing qiodevice.h include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +QIODevice is a base class of one of the classes defined in this +header. QtCreator's clangd goes on a rampage in this header as a +consequence. + +Amends the start of the public history. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Change-Id: I06c6a26dde7e7ae72b722136fcd666684733d40f +Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> +(cherry picked from commit 09fce4a587047ff03c7ca37dbb2bb8f71a18a75e) +--- + src/network/access/qhttpmultipart_p.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/network/access/qhttpmultipart_p.h b/src/network/access/qhttpmultipart_p.h +index ead1eadf3be..e45f7545a4a 100644 +--- a/src/network/access/qhttpmultipart_p.h ++++ b/src/network/access/qhttpmultipart_p.h +@@ -54,7 +54,9 @@ + #include <QtNetwork/private/qtnetworkglobal_p.h> + #include "QtCore/qshareddata.h" + #include "qnetworkrequest_p.h" // for deriving QHttpPartPrivate from QNetworkHeadersPrivate ++ + #include "private/qobject_p.h" ++#include <QtCore/qiodevice.h> + + QT_REQUIRE_CONFIG(http); + +-- +2.49.0 + +From 542953d1bdda07a02a8973a177ace5623282a9b1 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Tue, 11 Jun 2024 12:01:12 +0200 +Subject: [PATCH 108/123] qfuturewatcher_p.h: fix missing qfuturewatcher.h + include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Extending headersclean_check to private headers has shown that +Q_DECLARE_PUBLIC needs to know the Public class in-size, so a +forward-declaration is not enough. Says Clang: + + qfuturewatcher_p.h:31:5: error: static_cast from 'QObject *' to 'QFutureWatcherBase *', which are not related by inheritance, is not allowed + Q_DECLARE_PUBLIC(QFutureWatcherBase) + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Amends the start of the public history. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: I1e132aaa844f5c87d57446e8818280fd141d2b1e +Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> +Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> +(cherry picked from commit b58d926090620079f602f4f2ce9f17fe7025c962) +--- + src/corelib/thread/qfuturewatcher_p.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/corelib/thread/qfuturewatcher_p.h b/src/corelib/thread/qfuturewatcher_p.h +index ead247b0408..2911e0fafe8 100644 +--- a/src/corelib/thread/qfuturewatcher_p.h ++++ b/src/corelib/thread/qfuturewatcher_p.h +@@ -51,6 +51,8 @@ + // We mean it. + // + ++#include <QtCore/qfuturewatcher.h> ++ + #include "qfutureinterface_p.h" + #include <qlist.h> + +@@ -60,7 +62,6 @@ QT_REQUIRE_CONFIG(future); + + QT_BEGIN_NAMESPACE + +-class QFutureWatcherBase; + class QFutureWatcherBasePrivate : public QObjectPrivate, + public QFutureCallOutInterface + { +-- +2.49.0 + +From 135eddfc29c8fce42a711b0624f2b7f813432030 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Tue, 17 Sep 2024 13:14:53 +0200 +Subject: [PATCH 109/123] qtextstream_p.h: fix -Wshadow in + QDeviceClosedNotifier + +Rename the data member to m_stream, as is idiomatic. + +Amends 327b2ba3b77e7a738ccfbe84c6ca5e9525010630. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: I830e90e0a6c88acf95de8394e45cad075d4c924e +Reviewed-by: David Faure <david.faure@kdab.com> +(cherry picked from commit e585b937167b9746091c520e303657fbec2fe221) +--- + src/corelib/serialization/qtextstream_p.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/corelib/serialization/qtextstream_p.h b/src/corelib/serialization/qtextstream_p.h +index 172824d27d8..994e2da1a00 100644 +--- a/src/corelib/serialization/qtextstream_p.h ++++ b/src/corelib/serialization/qtextstream_p.h +@@ -73,14 +73,14 @@ public: + disconnect(); + if (device) + connect(device, SIGNAL(aboutToClose()), this, SLOT(flushStream())); +- this->stream = stream; ++ m_stream = stream; + } + + public Q_SLOTS: +- inline void flushStream() { stream->flush(); } ++ void flushStream() { m_stream->flush(); } + + private: +- QTextStream *stream; ++ QTextStream *m_stream; + }; + #endif + +-- +2.49.0 + +From 1e786c388f0bb059034cebc98206c5400bde920e Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Thu, 12 Sep 2024 16:00:52 +0200 +Subject: [PATCH 110/123] qendian_p.h: fix -Wshadow warning + +Rename the private member to m_storage. That is more churn than the +alternative of just renaming the ctor argument name, but is more +idiomatic. + +This is in preparation of applying headercheck to private headers, +too. + +Amends 38002df2065d3730defe3513f73088b444e68139. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: Id638a4c286f7a0ef6649017904ed190aab2631b2 +Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> +(cherry picked from commit 7515c21f4badd80c09982901de8dfadf62401a3f) +--- + src/corelib/global/qendian_p.h | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/src/corelib/global/qendian_p.h b/src/corelib/global/qendian_p.h +index 5421a452d96..1b310a65b54 100644 +--- a/src/corelib/global/qendian_p.h ++++ b/src/corelib/global/qendian_p.h +@@ -171,16 +171,16 @@ public: + operator Type() const noexcept + { + if (std::is_signed<Type>::value) { +- UnsignedType i = S::fromSpecial(storage->val); ++ UnsignedType i = S::fromSpecial(m_storage->val); + i <<= (sizeof(Type) * 8) - width - pos; + Type t = Type(i); + t >>= (sizeof(Type) * 8) - width; + return t; + } +- return (S::fromSpecial(storage->val) & mask()) >> pos; ++ return (S::fromSpecial(m_storage->val) & mask()) >> pos; + } + +- bool operator!() const noexcept { return !(storage->val & S::toSpecial(mask())); } ++ bool operator!() const noexcept { return !(m_storage->val & S::toSpecial(mask())); } + + static constexpr UnsignedType mask() noexcept + { +@@ -192,21 +192,21 @@ private: + friend class QSpecialIntegerBitfieldUnion; + friend class QSpecialIntegerAccessor<S, pos, width, T>; + +- explicit QSpecialIntegerConstAccessor(Storage *storage) : storage(storage) {} ++ explicit QSpecialIntegerConstAccessor(Storage *storage) : m_storage(storage) {} + + friend bool operator==(const QSpecialIntegerConstAccessor<S, pos, width, T> &i, + const QSpecialIntegerConstAccessor<S, pos, width, T> &j) noexcept + { +- return ((i.storage->val ^ j.storage->val) & S::toSpecial(mask())) == 0; ++ return ((i.m_storage->val ^ j.m_storage->val) & S::toSpecial(mask())) == 0; + } + + friend bool operator!=(const QSpecialIntegerConstAccessor<S, pos, width, T> &i, + const QSpecialIntegerConstAccessor<S, pos, width, T> &j) noexcept + { +- return ((i.storage->val ^ j.storage->val) & S::toSpecial(mask())) != 0; ++ return ((i.m_storage->val ^ j.m_storage->val) & S::toSpecial(mask())) != 0; + } + +- Storage *storage; ++ Storage *m_storage; + }; + + template<class S, int pos, int width, class T> +@@ -224,22 +224,22 @@ public: + + QSpecialIntegerAccessor &operator=(Type t) + { +- UnsignedType i = S::fromSpecial(storage->val); ++ UnsignedType i = S::fromSpecial(m_storage->val); + i &= ~Const::mask(); + i |= (UnsignedType(t) << pos) & Const::mask(); +- storage->val = S::toSpecial(i); ++ m_storage->val = S::toSpecial(i); + return *this; + } + +- operator Const() { return Const(storage); } ++ operator Const() { return Const(m_storage); } + + private: + template<class Storage, typename... Accessors> + friend class QSpecialIntegerBitfieldUnion; + +- explicit QSpecialIntegerAccessor(Storage *storage) : storage(storage) {} ++ explicit QSpecialIntegerAccessor(Storage *storage) : m_storage(storage) {} + +- Storage *storage; ++ Storage *m_storage; + }; + + template<class S, typename... Accessors> +-- +2.49.0 + +From e4099ae01fa908baf0c15c7b63505eddea260f93 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Mon, 16 Sep 2024 15:23:38 +0200 +Subject: [PATCH 111/123] qsavefile_p.h: fix missing qsavefile.h include + +This causes + + qsavefile_p.h:28:22: error: unknown type name 'QSaveFile' + Q_DECLARE_PUBLIC(QSaveFile) + ^ + +when qsavefile_p.h is included before qsavefile.h was. + +Make the header self-sufficient by incuding the Public class' header, +too, as is customary. + +Amends e993df877131cfafbf1a3578dbef233a3041a82f. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: I17eb2a357bf1ef7ef5b5e3a3e56c4a921ba30951 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit ad6e4df580a2437cc69be416956f6128267ffbea) +--- + src/corelib/io/qsavefile_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/io/qsavefile_p.h b/src/corelib/io/qsavefile_p.h +index 3f81df9ae2f..81a662133a4 100644 +--- a/src/corelib/io/qsavefile_p.h ++++ b/src/corelib/io/qsavefile_p.h +@@ -51,7 +51,7 @@ + // We mean it. + // + +-#include <QtCore/qglobal.h> ++#include <QtCore/qsavefile.h> + + #ifndef QT_NO_TEMPORARYFILE + +-- +2.49.0 + +From cafa67183529dc8aa1bdb70ff87a3c333f250c3c Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Mon, 29 Jul 2024 20:10:50 +0200 +Subject: [PATCH 112/123] Add __attribute__((format(printf()))) to + q(v)nprintf() + +They were lacking it since the start of the public history, and +porting to std::snprintf() (which has the warning) as part of making +Qt compile with QT_NO_SNPRINTF has turned up surprisingly many +-Wformat warnings, so enable the warning for the remaining (non-tree) +users. + +Backporting aggressively, as this might unearth security bugs in user +code. + +[ChangeLog][QtCore][q(v)snprintf] Added attributes for GCC-compatible +compilers to detect format/argument mismatches. If this throws warnings +for your calls now, don't ignore them. printf() format mistakes could +be security-relevant. You may also find that you relied on undocumented +behavior, such as that certain implementations (Windows, Android, WASM) +of qsnprintf() support char16_t* instead of wchar_t* for %ls. In that +case, you should port to qUtf16Printable() and QString::asprintf(), or +suppress the warning and port away from the platform dependence at your +earliest convenience. + +Task-number: QTBUG-127110 +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Change-Id: I5c1fd9b2d5d2d55c68773f33edfd76acacd2408c +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +Reviewed-by: Jason McDonald <macadder1@gmail.com> +(cherry picked from commit 64416d3cf645187385d8ad90bc44d9c8e9ce864f) + +* asturmlechner 2024-10-16: Resolve conflict with dev branch commit + 631127126cc14e7c01cc611532b3256b58785670 +--- + src/corelib/text/qbytearray.h | 6 ++++-- + tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp | 4 ++++ + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h +index f4c335ca934..e1bcdc3e683 100644 +--- a/src/corelib/text/qbytearray.h ++++ b/src/corelib/text/qbytearray.h +@@ -102,8 +102,10 @@ Q_CORE_EXPORT int qstrnicmp(const char *, const char *, uint len); + Q_CORE_EXPORT int qstrnicmp(const char *, qsizetype, const char *, qsizetype = -1); + + // implemented in qvsnprintf.cpp +-Q_CORE_EXPORT int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap); +-Q_CORE_EXPORT int qsnprintf(char *str, size_t n, const char *fmt, ...); ++Q_CORE_EXPORT int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap) ++ Q_ATTRIBUTE_FORMAT_PRINTF(3, 0); ++Q_CORE_EXPORT int qsnprintf(char *str, size_t n, const char *fmt, ...) ++ Q_ATTRIBUTE_FORMAT_PRINTF(3, 4); + + // qChecksum: Internet checksum + Q_CORE_EXPORT quint16 qChecksum(const char *s, uint len); // ### Qt 6: Remove +diff --git a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp +index d8aa17d9eff..d5399413787 100644 +--- a/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp ++++ b/tests/auto/corelib/text/qbytearray/tst_qbytearray.cpp +@@ -869,7 +869,11 @@ void tst_QByteArray::qvsnprintf() + + #ifndef Q_OS_WIN + memset(buf, 42, sizeof(buf)); ++ QT_WARNING_PUSH ++ QT_WARNING_DISABLE_GCC("-Wformat-zero-length") ++ QT_WARNING_DISABLE_CLANG("-Wformat-zero-length") + QCOMPARE(::qsnprintf(buf, 10, ""), 0); ++ QT_WARNING_POP + #endif + } + +-- +2.49.0 + +From 4e5ee8e776acb6a8c7503d03ff04967c6f0da62d Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Tue, 22 Feb 2022 08:53:13 +0100 +Subject: [PATCH 113/123] Protect headers against min/max macros + +... using the usual pattern, which, being idiomatic, doesn't need a +comment explaining it. + +Pick-to: 6.3 +Change-Id: Id6b12450495a18f89e1f83f2018b6218b03ff6a7 +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +(cherry picked from commit b727f2190fb4878aad5edf1536e875e1b75907ae) + +* asturmlechner 2024-10-23: Resolve conflicts with dev branch commits + a14bba6803f674edede596eaeb5a46feed0f889e, + f11bc388508359b070320866eab4c917cb4c4739, + df8456061ef0d57ea6be37746951c50f38a65101 +--- + src/corelib/global/qendian.h | 4 ++-- + src/corelib/global/qrandom.h | 8 ++++---- + src/corelib/kernel/qdeadlinetimer.h | 2 +- + src/corelib/text/qlocale_p.h | 2 +- + src/corelib/time/qtimezoneprivate_p.h | 8 ++++---- + src/widgets/widgets/qcombobox_p.h | 2 +- + 6 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h +index e9e51c4b93d..85f72c494d4 100644 +--- a/src/corelib/global/qendian.h ++++ b/src/corelib/global/qendian.h +@@ -330,9 +330,9 @@ public: + } + + static Q_DECL_CONSTEXPR QSpecialInteger max() +- { return QSpecialInteger(std::numeric_limits<T>::max()); } ++ { return QSpecialInteger((std::numeric_limits<T>::max)()); } + static Q_DECL_CONSTEXPR QSpecialInteger min() +- { return QSpecialInteger(std::numeric_limits<T>::min()); } ++ { return QSpecialInteger((std::numeric_limits<T>::min)()); } + }; + + template<typename T> +diff --git a/src/corelib/global/qrandom.h b/src/corelib/global/qrandom.h +index 445b520c76a..4c216eeb65b 100644 +--- a/src/corelib/global/qrandom.h ++++ b/src/corelib/global/qrandom.h +@@ -169,8 +169,8 @@ public: + void seed(quint32 s = 1) { *this = { s }; } + void seed(std::seed_seq &sseq) noexcept { *this = { sseq }; } + Q_CORE_EXPORT void discard(unsigned long long z); +- static Q_DECL_CONSTEXPR result_type min() { return std::numeric_limits<result_type>::min(); } +- static Q_DECL_CONSTEXPR result_type max() { return std::numeric_limits<result_type>::max(); } ++ static Q_DECL_CONSTEXPR result_type min() { return (std::numeric_limits<result_type>::min)(); } ++ static Q_DECL_CONSTEXPR result_type max() { return (std::numeric_limits<result_type>::max)(); } + + static inline Q_DECL_CONST_FUNCTION QRandomGenerator *system(); + static inline Q_DECL_CONST_FUNCTION QRandomGenerator *global(); +@@ -245,8 +245,8 @@ public: + QRandomGenerator::discard(z * 2); + } + +- static Q_DECL_CONSTEXPR result_type min() { return std::numeric_limits<result_type>::min(); } +- static Q_DECL_CONSTEXPR result_type max() { return std::numeric_limits<result_type>::max(); } ++ static Q_DECL_CONSTEXPR result_type min() { return (std::numeric_limits<result_type>::min)(); } ++ static Q_DECL_CONSTEXPR result_type max() { return (std::numeric_limits<result_type>::max)(); } + static Q_DECL_CONST_FUNCTION Q_CORE_EXPORT QRandomGenerator64 *system(); + static Q_DECL_CONST_FUNCTION Q_CORE_EXPORT QRandomGenerator64 *global(); + static Q_CORE_EXPORT QRandomGenerator64 securelySeeded(); +diff --git a/src/corelib/kernel/qdeadlinetimer.h b/src/corelib/kernel/qdeadlinetimer.h +index 99e09eb31f8..e0dcb8d3aa5 100644 +--- a/src/corelib/kernel/qdeadlinetimer.h ++++ b/src/corelib/kernel/qdeadlinetimer.h +@@ -66,7 +66,7 @@ public: + Q_DECL_CONSTEXPR QDeadlineTimer(Qt::TimerType type_ = Qt::CoarseTimer) noexcept + : t1(0), t2(0), type(type_) {} + Q_DECL_CONSTEXPR QDeadlineTimer(ForeverConstant, Qt::TimerType type_ = Qt::CoarseTimer) noexcept +- : t1(std::numeric_limits<qint64>::max()), t2(0), type(type_) {} ++ : t1((std::numeric_limits<qint64>::max)()), t2(0), type(type_) {} + explicit QDeadlineTimer(qint64 msecs, Qt::TimerType type = Qt::CoarseTimer) noexcept; + + void swap(QDeadlineTimer &other) noexcept +diff --git a/src/corelib/text/qlocale_p.h b/src/corelib/text/qlocale_p.h +index 322eca43629..aa5b833a4e6 100644 +--- a/src/corelib/text/qlocale_p.h ++++ b/src/corelib/text/qlocale_p.h +@@ -256,7 +256,7 @@ public: + { + if (qIsInf(d)) + return float(d); +- if (std::fabs(d) > std::numeric_limits<float>::max()) { ++ if (std::fabs(d) > (std::numeric_limits<float>::max)()) { + if (ok) + *ok = false; + const float huge = std::numeric_limits<float>::infinity(); +diff --git a/src/corelib/time/qtimezoneprivate_p.h b/src/corelib/time/qtimezoneprivate_p.h +index cf2a690f507..fb9fb1528b4 100644 +--- a/src/corelib/time/qtimezoneprivate_p.h ++++ b/src/corelib/time/qtimezoneprivate_p.h +@@ -137,10 +137,10 @@ public: + virtual void serialize(QDataStream &ds) const; + + // Static Utility Methods +- static inline qint64 maxMSecs() { return std::numeric_limits<qint64>::max(); } +- static inline qint64 minMSecs() { return std::numeric_limits<qint64>::min() + 1; } +- static inline qint64 invalidMSecs() { return std::numeric_limits<qint64>::min(); } +- static inline qint64 invalidSeconds() { return std::numeric_limits<int>::min(); } ++ static inline qint64 maxMSecs() { return (std::numeric_limits<qint64>::max)(); } ++ static inline qint64 minMSecs() { return (std::numeric_limits<qint64>::min)() + 1; } ++ static inline qint64 invalidMSecs() { return (std::numeric_limits<qint64>::min)(); } ++ static inline qint64 invalidSeconds() { return (std::numeric_limits<int>::min)(); } + static Data invalidData(); + static QTimeZone::OffsetData invalidOffsetData(); + static QTimeZone::OffsetData toOffsetData(const Data &data); +diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h +index 45580ba943a..2a97f56791f 100644 +--- a/src/widgets/widgets/qcombobox_p.h ++++ b/src/widgets/widgets/qcombobox_p.h +@@ -429,7 +429,7 @@ public: + int minimumContentsLength = 0; + int indexBeforeChange = -1; + int maxVisibleItems = 10; +- int maxCount = std::numeric_limits<int>::max(); ++ int maxCount = (std::numeric_limits<int>::max)(); + int modelColumn = 0; + int placeholderIndex = -1; + bool shownOnce : 1; +-- +2.49.0 + +From b307078c6dd3bb0ad00e34524c6f938e500eb4b8 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Thu, 12 Sep 2024 16:38:12 +0200 +Subject: [PATCH 114/123] Fix -Wdouble-promotion in FP overload of + convertDoubleTo() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Found by applying headercheck to private headers. + +Says GCC: + + global/qnumeric_p.h: In instantiation of ‘[...] + {anonymous}::convertDoubleTo(double, T*, bool) [with T = float; + [...]]’: + + text/qlocale_p.h:312:51: required from here + + global/qnumeric_p.h:390:22: error: implicit conversion from ‘float’ + to ‘double’ to match other operand of binary expression + [-Werror=double-promotion] + + 390 | if (std::fabs(v) > (std::numeric_limits<T>::max)()) { + | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Since we already checked that numeric_limits<T>::max_exponent < +numeric_limits<double>::max_exponent at this point (see constexpr-if +at the top of this function template), we can assume that the cast of +the RHS of the relational operator to double is safe. Use braced +initialization to statically assert that this is, indeed, the case. + +Amends 1e43b64a7a5c3823a6bdcb8d0cd28a17955939a2 and +a14bba6803f674edede596eaeb5a46feed0f889e. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: If2b53d9b8ea7ebfcecec603408681eeffb9aaff6 +Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io> +Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> +(cherry picked from commit c38e58dcb02cd2273ba3c03c65a6f67b37100777) + +* asturmlechner 2024-10-23: Resolve conflict with dev branch commit + a14bba6803f674edede596eaeb5a46feed0f889e +--- + src/corelib/text/qlocale_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/text/qlocale_p.h b/src/corelib/text/qlocale_p.h +index aa5b833a4e6..bcf400527a2 100644 +--- a/src/corelib/text/qlocale_p.h ++++ b/src/corelib/text/qlocale_p.h +@@ -256,7 +256,7 @@ public: { + if (qIsInf(d)) + return float(d); +- if (std::fabs(d) > (std::numeric_limits<float>::max)()) { ++ if (std::fabs(d) > double{(std::numeric_limits<float>::max)()}) { + if (ok) + *ok = false; + const float huge = std::numeric_limits<float>::infinity(); +-- +2.49.0 + +From 294d190eefe04688bb533481a39b46129f77e88b Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Tue, 17 Sep 2024 10:56:52 +0200 +Subject: [PATCH 115/123] qxmlstreamparser_p.h: fix -Wshadow in parse() + +The name `prefix` is also used for a data member, and the very next +rule actually assigns to it, so using the same name in this huge +switch is actually impairing readability. + +Fix by abbreviating the local variable. + +This code predates the start of the public history. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: Iece828a9303b5449397ac93e51f540bf890f7d08 +Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> +Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> +Reviewed-by: Matthias Rauter <matthias.rauter@qt.io> +Reviewed-by: Lena Biliaieva <lena.biliaieva@qt.io> +(cherry picked from commit 2fda30053dcf13356d72f9a8116413d26bcb14a1) + +* asturmlechner 2024-10-23: Resolve conflicts with dev branch commits + 6eb1cdd1c6dc8cabc392942d0e1a1e1e89b6cc61 and + ecfb5d2d15e586c40ca2e8b097fb77821be8c884 +--- + src/corelib/serialization/qxmlstream.g | 6 +++--- + src/corelib/serialization/qxmlstream_p.h | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g +index 8c6a1a58870..18fbf14c035 100644 +--- a/src/corelib/serialization/qxmlstream.g ++++ b/src/corelib/serialization/qxmlstream.g +@@ -1512,8 +1512,8 @@ attribute_value_content ::= literal_content | char_ref | entity_ref_in_attribute + attribute ::= qname space_opt EQ space_opt attribute_value; + /. + case $rule_number: { +- QStringRef prefix = symPrefix(1); +- if (prefix.isEmpty() && symString(1) == QLatin1String("xmlns") && namespaceProcessing) { ++ const QStringRef prfx = symPrefix(1); ++ if (prfx.isEmpty() && symString(1) == QLatin1String("xmlns") && namespaceProcessing) { + NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); + namespaceDeclaration.prefix.clear(); + +@@ -1563,7 +1563,7 @@ attribute ::= qname space_opt EQ space_opt attribute_value; + attribute.value.pos = pos; + attribute.value.len = n; + } +- if (prefix == QLatin1String("xmlns") && namespaceProcessing) { ++ if (prfx == QLatin1String("xmlns") && namespaceProcessing) { + NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); + QStringRef namespacePrefix = symString(attribute.key); + QStringRef namespaceUri = symString(attribute.value); +diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h +index be7b1fe6655..fd8fcca4e15 100644 +--- a/src/corelib/serialization/qxmlstream_p.h ++++ b/src/corelib/serialization/qxmlstream_p.h +@@ -1722,8 +1722,8 @@ bool QXmlStreamReaderPrivate::parse() + break; + + case 229: { +- QStringRef prefix = symPrefix(1); +- if (prefix.isEmpty() && symString(1) == QLatin1String("xmlns") && namespaceProcessing) { ++ const QStringRef prfx = symPrefix(1); ++ if (prfx.isEmpty() && symString(1) == QLatin1String("xmlns") && namespaceProcessing) { + NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); + namespaceDeclaration.prefix.clear(); + +@@ -1773,7 +1773,7 @@ bool QXmlStreamReaderPrivate::parse() + attribute.value.pos = pos; + attribute.value.len = n; + } +- if (prefix == QLatin1String("xmlns") && namespaceProcessing) { ++ if (prfx == QLatin1String("xmlns") && namespaceProcessing) { + NamespaceDeclaration &namespaceDeclaration = namespaceDeclarations.push(); + QStringRef namespacePrefix = symString(attribute.key); + QStringRef namespaceUri = symString(attribute.value); +-- +2.49.0 + +From 0409f791f9703d8e67843449d577dd2210a8a7c9 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Thu, 12 Sep 2024 16:33:30 +0200 +Subject: [PATCH 116/123] QDuplicateTracker: fix redundant ; +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Found by applying headercheck to private headers, not just public +ones. + +Amends f21a6d409ea0504c64cd72861fc16b6f3e080086. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Task-number: QTBUG-126219 +Change-Id: I8be52a04ae9d9af2e68a72f1128bfbd09fd85e8e +Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io> +Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> +(cherry picked from commit 8bfd696297b35684ee1c80127d7b0ce09a374d85) +--- + src/corelib/tools/qduplicatetracker_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/tools/qduplicatetracker_p.h b/src/corelib/tools/qduplicatetracker_p.h +index 68284fb9164..c5ddfe37af0 100644 +--- a/src/corelib/tools/qduplicatetracker_p.h ++++ b/src/corelib/tools/qduplicatetracker_p.h +@@ -78,7 +78,7 @@ class QDuplicateTracker { + QSet<T> set = makeQSet(); + int setSize = 0; + #endif +- Q_DISABLE_COPY_MOVE(QDuplicateTracker); ++ Q_DISABLE_COPY_MOVE(QDuplicateTracker) + public: + QDuplicateTracker() = default; + void reserve(int n) { set.reserve(n); } +-- +2.49.0 + +From aafa293fa0e15891d7568021da918d912338ef03 Mon Sep 17 00:00:00 2001 +From: Liang Qi <liang.qi@qt.io> +Date: Mon, 16 Sep 2024 11:14:15 +0200 +Subject: [PATCH 117/123] xcb: check validity of RandR output info before using + it +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes: QTBUG-128906 +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Change-Id: Ibafdf4bb9c449b29437b0520299ab407238e5703 +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +(cherry picked from commit 439e19be17b9169f5786b2593e6d1ac6978bb84b) +--- + src/plugins/platforms/xcb/qxcbconnection_screens.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plugins/platforms/xcb/qxcbconnection_screens.cpp b/src/plugins/platforms/xcb/qxcbconnection_screens.cpp +index ec099101f5a..9cee3bc5e16 100644 +--- a/src/plugins/platforms/xcb/qxcbconnection_screens.cpp ++++ b/src/plugins/platforms/xcb/qxcbconnection_screens.cpp +@@ -165,7 +165,7 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event) + // Screen has been disabled + auto outputInfo = Q_XCB_REPLY(xcb_randr_get_output_info, xcb_connection(), + output.output, output.config_timestamp); +- if (outputInfo->crtc == XCB_NONE) { ++ if (!outputInfo || outputInfo->crtc == XCB_NONE) { + qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled"; + destroyScreen(screen); + } else { +-- +2.49.0 + +From 1d47627cc84d2db83544490cf086ca9742096775 Mon Sep 17 00:00:00 2001 +From: Eirik Aavitsland <eirik.aavitsland@qt.io> +Date: Fri, 9 Dec 2022 10:46:44 +0100 +Subject: [PATCH 118/123] Doc: note QWindow::winId() will cause platform window + creation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Worth it to emphasize this, as such a side effect from a const +accessor may well be unexpected. + +Change-Id: I0b70d81927e0b66799cbe736ce5d488e2ec77ce0 +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> +Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io> +(cherry picked from commit b1bb732639be849b225db635a725b3c19881380c) +--- + src/gui/kernel/qwindow.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp +index fa3a0243a64..c2f7dc67764 100644 +--- a/src/gui/kernel/qwindow.cpp ++++ b/src/gui/kernel/qwindow.cpp +@@ -644,7 +644,7 @@ bool QWindow::isVisible() const + into an actual native surface. However, the window remains hidden until setVisible() is called. + + Note that it is not usually necessary to call this function directly, as it will be implicitly +- called by show(), setVisible(), and other functions that require access to the platform ++ called by show(), setVisible(), winId(), and other functions that require access to the platform + resources. + + Call destroy() to free the platform resources if necessary. +-- +2.49.0 + +From 5ce15b5941a1af2c19c51d1f0b4d6b29a832beae Mon Sep 17 00:00:00 2001 +From: Stefan Gerlach <stefan.gerlach@uni-konstanz.de> +Date: Sun, 19 May 2024 09:28:22 +0000 +Subject: [PATCH 119/123] Opt out of standard library memory_resource on macOS + < 14 and iOS < 17 + +Change-Id: I42f681cc962ec4dae2e131fc44f9714f1b3f23c4 +--- + src/corelib/tools/qduplicatetracker_p.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/corelib/tools/qduplicatetracker_p.h b/src/corelib/tools/qduplicatetracker_p.h +index c5ddfe37af0..140fc31a34c 100644 +--- a/src/corelib/tools/qduplicatetracker_p.h ++++ b/src/corelib/tools/qduplicatetracker_p.h +@@ -52,7 +52,7 @@ + + #include <qglobal.h> + +-#if QT_HAS_INCLUDE(<memory_resource>) && __cplusplus > 201402L ++#if defined(__cpp_lib_memory_resource) && __cplusplus > 201402L + # include <unordered_set> + # include <memory_resource> + #else +-- +2.49.0 + +From cd7572c5ac43ce94dba457ef8131cd0bea8e4720 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io> +Date: Wed, 28 Aug 2024 13:31:13 +0200 +Subject: [PATCH 120/123] xcb: Sync XCB connection after reparenting window + +This is important for the reparenting to take effect even if there +are no other state changes to the window, such as changing its +geometry. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Change-Id: I9b39b56d163faf7a9b472cefbb19efdb944cb304 +Reviewed-by: Liang Qi <liang.qi@qt.io> +(cherry picked from commit 92619ce2ec8381aa01647337665e626b84063f59) +--- + src/plugins/platforms/xcb/qxcbwindow.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp +index 71816f5aa77..c4849eec1be 100644 +--- a/src/plugins/platforms/xcb/qxcbwindow.cpp ++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp +@@ -1334,6 +1334,7 @@ void QXcbWindow::setParent(const QPlatformWindow *parent) + m_embedded = false; + } + xcb_reparent_window(xcb_connection(), xcb_window(), xcb_parent_id, topLeft.x(), topLeft.y()); ++ connection()->sync(); + } + + void QXcbWindow::setWindowTitle(const QString &title) +-- +2.49.0 + +From 319f422dbcf2571b7431b0e0d3c8f8bd5ff1b056 Mon Sep 17 00:00:00 2001 +From: Christian Ehrlicher <ch.ehrlicher@gmx.de> +Date: Tue, 6 Aug 2024 22:39:44 +0200 +Subject: [PATCH 121/123] XML/QDom: speedup encodeText() + +The code copied the whole string, then replaced parts inline, at +the cost of relocating everything beyond, at each replacement. +Instead, copy character by character (in chunks where possible) +and append replacements as we skip what they replace. + +Manual conflict resolution for 6.5: +- This is a manual cherry-pick. The original change was only + picked to 6.8, but the quadratic behavior is present in Qt 5, too. +- Changed Task-number to Fixes: because this is the real fix; + the QString change, 315210de916d060c044c01e53ff249d676122b1b, + was unrelated to the original QTBUG-127549. + +Manual conflcit resolution for 5.15: +- Kept/re-added QTextCodec::canEncode() check +- Ported from Qt 6 to 5, to wit: + - qsizetype -> int + - QStringView::first/sliced(n) -> left/mid(n) + (these functions are clearly called in-range, so the widened + contract of the Qt 5 functions doesn't matter) +- Ported from C++17- and C++14-isms to C++11: + - replaced polymorphic lambda with a normal one (this requires + rewriting the !canEncode() branch to use QByteArray/QLatin1String + instead of QString) +- As a drive-by, corrected the indentation of the case labels to + horizontally align existing code (and follow Qt style) + +Fixes: QTBUG-127549 +Change-Id: I368482859ed0c4127f1eec2919183711b5488ada +Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> +(cherry picked from commit 2ce08e3671b8d18b0284447e5908ce15e6e8f80f) +Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> +(cherry picked from commit 225e235cf966a44af23dbe9aaaa2fd20ab6430ee) +Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> +(cherry picked from commit 905a5bd421efff6a1d90b6140500d134d32ca745) +--- + src/xml/dom/qdom.cpp | 94 ++++++++++++++++++++++++-------------------- + 1 file changed, 51 insertions(+), 43 deletions(-) + +diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp +index 45da7f961de..04b868a7e1d 100644 +--- a/src/xml/dom/qdom.cpp ++++ b/src/xml/dom/qdom.cpp +@@ -3676,59 +3676,67 @@ static QString encodeText(const QString &str, + const QTextCodec *const codec = s.codec(); + Q_ASSERT(codec); + #endif +- QString retval(str); +- int len = retval.length(); +- int i = 0; ++ QString retval; ++ int start = 0; ++ auto appendToOutput = [&](int cur, QLatin1String replacement) ++ { ++ if (start < cur) { ++ retval.reserve(str.size() + replacement.size()); ++ retval.append(QStringView(str).left(cur).mid(start)); ++ } ++ // Skip over str[cur], replaced by replacement ++ start = cur + 1; ++ retval.append(replacement); ++ }; + +- while (i < len) { +- const QChar ati(retval.at(i)); +- +- if (ati == QLatin1Char('<')) { +- retval.replace(i, 1, QLatin1String("<")); +- len += 3; +- i += 4; +- } else if (encodeQuotes && (ati == QLatin1Char('"'))) { +- retval.replace(i, 1, QLatin1String(""")); +- len += 5; +- i += 6; +- } else if (ati == QLatin1Char('&')) { +- retval.replace(i, 1, QLatin1String("&")); +- len += 4; +- i += 5; +- } else if (ati == QLatin1Char('>') && i >= 2 && retval[i - 1] == QLatin1Char(']') && retval[i - 2] == QLatin1Char(']')) { +- retval.replace(i, 1, QLatin1String(">")); +- len += 3; +- i += 4; +- } else if (performAVN && +- (ati == QChar(0xA) || +- ati == QChar(0xD) || +- ati == QChar(0x9))) { +- const QString replacement(QLatin1String("&#x") + QString::number(ati.unicode(), 16) + QLatin1Char(';')); +- retval.replace(i, 1, replacement); +- i += replacement.length(); +- len += replacement.length() - 1; +- } else if (encodeEOLs && ati == QChar(0xD)) { +- retval.replace(i, 1, QLatin1String("
")); // Replace a single 0xD with a ref for 0xD +- len += 4; +- i += 5; +- } else { ++ const int len = str.size(); ++ for (int cur = 0; cur < len; ++cur) { ++ switch (const char16_t ati = str[cur].unicode()) { ++ case u'<': ++ appendToOutput(cur, QLatin1String("<")); ++ break; ++ case u'"': ++ if (encodeQuotes) ++ appendToOutput(cur, QLatin1String(""")); ++ break; ++ case u'&': ++ appendToOutput(cur, QLatin1String("&")); ++ break; ++ case u'>': ++ if (cur >= 2 && str[cur - 1] == u']' && str[cur - 2] == u']') ++ appendToOutput(cur, QLatin1String(">")); ++ break; ++ case u'\r': ++ if (performAVN || encodeEOLs) ++ appendToOutput(cur, QLatin1String("
")); // \r == 0x0d ++ break; ++ case u'\n': ++ if (performAVN) ++ appendToOutput(cur, QLatin1String("
")); // \n == 0x0a ++ break; ++ case u'\t': ++ if (performAVN) ++ appendToOutput(cur, QLatin1String("	")); // \t == 0x09 ++ break; ++ default: + #if QT_CONFIG(textcodec) + if(codec->canEncode(ati)) +- ++i; ++ ; // continue + else + #endif + { + // We have to use a character reference to get it through. +- const ushort codepoint(ati.unicode()); +- const QString replacement(QLatin1String("&#x") + QString::number(codepoint, 16) + QLatin1Char(';')); +- retval.replace(i, 1, replacement); +- i += replacement.length(); +- len += replacement.length() - 1; ++ const QByteArray replacement = "&#x" + QByteArray::number(uint{ati}, 16) + ';'; ++ appendToOutput(cur, QLatin1String{replacement}); + } ++ break; + } + } +- +- return retval; ++ if (start > 0) { ++ retval.append(QStringView(str).left(len).mid(start)); ++ return retval; ++ } ++ return str; + } + + void QDomAttrPrivate::save(QTextStream& s, int, int) const +-- +2.49.0 + +From 128a1d2861ca5693e43e8b79fbd4278dcd451fbc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> +Date: Mon, 17 Mar 2025 14:22:11 +0100 +Subject: [PATCH 122/123] QFileSystemEngine/Win: Use GetTempPath2 when + available + +Because the documentation for GetTempPath nows says apps should call +GetTempPath2.[0] + +Starting with Windows 11[1], and recently Windows 10[2], +GetTempPath2 was added. The difference being that elevated +processes are returned a different directory. Usually +'C:\Windows\SystemTemp'. + +Currently temporary files of an elevated process may be placed in a +world write-able location. GetTempPath2, by default, but can be +overridden, places it in a directory that's only accessible by SYSTEM +and administrators. + +[0] https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-gettemppathw#remarks +[1] https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-gettemppath2w +(Minimum supported client - Windows 11 Build 22000) +[2] https://blogs.windows.com/windows-insider/2025/03/13/releasing-windows-10-build-19045-5674-to-the-release-preview-channel/ +(This update enables system processes to store temporary files ...) + +[ChangeLog][QtCore][Important Behavior Changes] On +Windows, generating temporary directories for processes with elevated +privileges may now return a different path with a stricter +set of permissions. Please consult Microsoft's documentation from when +they made the same change for the .NET framework: +https://support.microsoft.com/en-us/topic/gettemppath-changes-in-windows-february-cumulative-update-preview-4cc631fb-9d97-4118-ab6d-f643cd0a7259 + +Change-Id: I5caf11151fb2f711bbc5599231f140598b3c9d03 +Reviewed-by: Marc Mutz <marc.mutz@qt.io> +(cherry picked from commit 69633bcb58e681bac5bff3744e5a2352788dc36c) +Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> +(cherry picked from commit 6a684a53b371ec483b27bf243af24819be63f85f) +(cherry picked from commit bbeccc0c22e520f46f0b33e281fa5ac85ac9c727) +(cherry picked from commit 59d7eb9bbb4f13cccbd9323fd995a8c108b56e60) +--- + src/corelib/io/qfilesystemengine_win.cpp | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp +index e6f118a5c44..73177de0700 100644 +--- a/src/corelib/io/qfilesystemengine_win.cpp ++++ b/src/corelib/io/qfilesystemengine_win.cpp +@@ -1390,7 +1390,15 @@ QString QFileSystemEngine::tempPath() + QString ret; + #ifndef Q_OS_WINRT + wchar_t tempPath[MAX_PATH]; +- const DWORD len = GetTempPath(MAX_PATH, tempPath); ++ using GetTempPathPrototype = DWORD (WINAPI *)(DWORD, LPWSTR); ++ // We try to resolve GetTempPath2 and use that, otherwise fall back to GetTempPath: ++ static GetTempPathPrototype getTempPathW = []() { ++ const HMODULE kernel32 = GetModuleHandleW(L"kernel32.dll"); ++ if (auto *func = QFunctionPointer(GetProcAddress(kernel32, "GetTempPath2W"))) ++ return GetTempPathPrototype(func); ++ return GetTempPath; ++ }(); ++ const DWORD len = getTempPathW(MAX_PATH, tempPath); + if (len) { // GetTempPath() can return short names, expand. + wchar_t longTempPath[MAX_PATH]; + const DWORD longLen = GetLongPathName(tempPath, longTempPath, MAX_PATH); +-- +2.49.0 + +From c5b9db065ca5682b0bee339197c847da8b2710c1 Mon Sep 17 00:00:00 2001 +From: Marc Mutz <marc.mutz@qt.io> +Date: Fri, 25 Apr 2025 13:58:25 +0200 +Subject: [PATCH 123/123] qDecodeDataUrl(): fix precondition violation in call + to QByteArrayView::at() + +It is a precondition violation to call QByteArrayView::at() with +size() as argument. The code used that, though, as an implicit +end-of-string check, assuming == ' ' and == '=' would both fail for +null bytes. Besides, QByteArrays (but most certainly QByteArrayViews) +need not be null-terminated, so this could read even past size(). + +To fix, use higher-level API (startsWith()), consuming parsed tokens +along the way. + +Add a test that would crash in debug mode before the fix. + +Amends the start of the public history. + +[ChangeLog][QtCore] Fixed a bug in the handling of data: URLs that +could lead to a crash if Qt was built with assertions enabled. This +affects QNetworkManager and links in QTextDocument. + +Pick-to: 6.9 6.8 6.5 6.5.9 6.2 5.15 +Change-Id: I4331c88051dfbb0a18fe7da4f50858c707785d09 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +Reviewed-by: Ahmad Samir <a.samirh78@gmail.com> +Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> +(cherry picked from commit 4d839093b480d30eef8a89c0f864ee3f340adaa1) +(but really taken from upstream CVE-2025-5455-qtbase-5.15.patch) +--- + src/corelib/io/qdataurl.cpp | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/corelib/io/qdataurl.cpp b/src/corelib/io/qdataurl.cpp +index 9cb1b9abd0a..707bc358b98 100644 +--- a/src/corelib/io/qdataurl.cpp ++++ b/src/corelib/io/qdataurl.cpp +@@ -76,10 +76,11 @@ Q_CORE_EXPORT bool qDecodeDataUrl(const QUrl &uri, QString &mimeType, QByteArray + } + + if (data.toLower().startsWith("charset")) { +- int i = 7; // strlen("charset") +- while (data.at(i) == ' ') +- ++i; +- if (data.at(i) == '=') ++ int prefixSize = 7; // strlen("charset") ++ QLatin1String copy(data.constData() + prefixSize, data.size() - prefixSize); ++ while (copy.startsWith(QLatin1String(" "))) ++ copy = copy.mid(1); ++ if (copy.startsWith(QLatin1String("="))) + data.prepend("text/plain;"); + } + -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtdeclarative/APKBUILD b/user/qt5-qtdeclarative/APKBUILD index 403094791..fcdebe9f3 100644 --- a/user/qt5-qtdeclarative/APKBUILD +++ b/user/qt5-qtdeclarative/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtdeclarative _pkgname=${pkgname#qt5-}-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Qt Declarative and Qt Quick 2" url="https://www.qt.io/" @@ -36,7 +36,7 @@ package() { done } -sha512sums="8a4ff61238fde7cc563f9d94b5d1f4fd71ecb95ace447e57d08f71da82400b37c42f4f1ecdcd561116bffa1ed483219e06fb550f91c90842e5a43487bc4706b6 qtdeclarative-everywhere-opensource-src-5.15.4.tar.xz -7ef2bc3258a22dee2024c2a61102905d3bcbd0ac5fcea4797308b42e85d1410c16f592a5d2465460a9cb534d720dda05794e59d415736c71533a1e96618b9928 kde-lts.patch +sha512sums="7dbe9edfb43ab0b65bcf22c8b3226de851a210c8004b0c82dd346da5aa1ca4b8df0ca56ac78273d9d472252d8b756b62cc8e1d6432b048af947d51f4e9fef701 qtdeclarative-everywhere-opensource-src-5.15.17.tar.xz +c8ae7362d110773cd0833b4e33d9a178ba33d36167cec153829ad2ebd4add138a36a1b0dd0069c547746f0739ce5c0693372a20dd3ba17b60c76a334e40dd338 kde-lts.patch 7aad59e1b3a7c1e22638f43e4eb2d3e343b3463a16af99fa8609a94f368c58e08f44fb35754a71cd65c4cbfb7f8edc9c41179e04325128c96a6dfcb83aeaa48a add-execinfo.patch 70745f3636f00b9a3ae15af896d8b7edc037a83f58f833497066aef0ad3101c5475ddc0588925aacd500fa1d70080cae2881e82d3a5fb9ca134d600da60ffd66 endian.patch" diff --git a/user/qt5-qtdeclarative/kde-lts.patch b/user/qt5-qtdeclarative/kde-lts.patch index c09ed5232..8d1fcd36a 100644 --- a/user/qt5-qtdeclarative/kde-lts.patch +++ b/user/qt5-qtdeclarative/kde-lts.patch @@ -1,152 +1,7 @@ -From eb1025d7808f04e3f114b08c86a5e680b2d18010 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <albert.astals.cid@kdab.com> -Date: Fri, 21 May 2021 13:30:41 +0200 -Subject: [PATCH 01/19] Give a warning when StyledText encounters a non - supported entity - -Pick-to: 6.1 5.15 -Change-Id: Iea8bdf25542cd404ee71141467ac1f1398a7d0df -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -(cherry picked from commit 8cd43e370040e23fcbd03ad64969e683055bd7d0) ---- - src/quick/util/qquickstyledtext.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp -index 660852ba83..d531fc9205 100644 ---- a/src/quick/util/qquickstyledtext.cpp -+++ b/src/quick/util/qquickstyledtext.cpp -@@ -46,6 +46,8 @@ - #include "qquickstyledtext_p.h" - #include <QQmlContext> - -+Q_LOGGING_CATEGORY(lcStyledText, "qt.quick.styledtext") -+ - /* - QQuickStyledText supports few tags: - -@@ -566,6 +568,8 @@ void QQuickStyledTextPrivate::parseEntity(const QChar *&ch, const QString &textI - textOut += QChar(34); - else if (entity == QLatin1String("nbsp")) - textOut += QChar(QChar::Nbsp); -+ else -+ qCWarning(lcStyledText) << "StyledText doesn't support entity" << entity; - return; - } else if (*ch == QLatin1Char(' ')) { - QStringRef entity(&textIn, entityStart - 1, entityLength + 1); --- -2.36.0 - -From ba07a40a2afacfb57ddb8f7cb4cc90a39560f17d Mon Sep 17 00:00:00 2001 -From: Antonio Rojas <arojas@archlinux.org> -Date: Sun, 23 May 2021 14:32:46 +0200 -Subject: [PATCH 02/19] Add missing limits include to fix build with GCC 11 - -This is not required for Qt 6, since it is indirectly pulled via -qanystrigview.h, but it is for Qt 5 (where qanystrigview does -not exist) and, in any case, it is good to declare all used headers -and not rely on them being implicitly pulled. - -Pick-to: 6.1 5.15 -Change-Id: I97606ea493e723006759608b7d4c4f00632f340c -Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com> -(cherry picked from commit 367293b18ab0d0a0432c1c8ce445fee052e5eee5) ---- - src/qmldebug/qqmlprofilerevent_p.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/qmldebug/qqmlprofilerevent_p.h b/src/qmldebug/qqmlprofilerevent_p.h -index a7e37d1964..01b2f58f16 100644 ---- a/src/qmldebug/qqmlprofilerevent_p.h -+++ b/src/qmldebug/qqmlprofilerevent_p.h -@@ -48,6 +48,7 @@ - #include <QtCore/qmetatype.h> - - #include <initializer_list> -+#include <limits> - #include <type_traits> - - // --- -2.36.0 - -From eb9ebe3815ac100d4ab3b3a708f691a1dde270bf Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <albert.astals.cid@kdab.com> -Date: Fri, 21 May 2021 13:17:15 +0200 -Subject: [PATCH 03/19] Document that StyledText also supports and - " - -Change-Id: I1715f8ae8ec8d0fbaf6dbe2b8663cc169da663cd -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -(cherry picked from commit 5848c081c094a66e024493fc1e5c2569e06f73b6) ---- - src/quick/items/qquicktext.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp -index 6230186933..c1571fc6f5 100644 ---- a/src/quick/items/qquicktext.cpp -+++ b/src/quick/items/qquicktext.cpp -@@ -2168,7 +2168,7 @@ void QQuickText::resetMaximumLineCount() - <img src="" align="top,middle,bottom" width="" height=""> - inline images - <ol type="">, <ul type=""> and <li> - ordered and unordered lists - <pre></pre> - preformatted -- > < & -+ > < & " - \endcode - - \c Text.StyledText parser is strict, requiring tags to be correctly nested. --- -2.36.0 - -From 0aea240ef6d78989ef16ea1d41e161c641c2667c Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <albert.astals.cid@kdab.com> -Date: Fri, 21 May 2021 13:42:35 +0200 -Subject: [PATCH 04/19] Support ' in styled text - -Pick-to: 6.1 5.15 -Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929 -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -(cherry picked from commit 96b528efcba1226d2980828d1255160bdceae4cf) ---- - src/quick/items/qquicktext.cpp | 2 +- - src/quick/util/qquickstyledtext.cpp | 2 ++ - 2 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp -index c1571fc6f5..e823ca1095 100644 ---- a/src/quick/items/qquicktext.cpp -+++ b/src/quick/items/qquicktext.cpp -@@ -2168,7 +2168,7 @@ void QQuickText::resetMaximumLineCount() - <img src="" align="top,middle,bottom" width="" height=""> - inline images - <ol type="">, <ul type=""> and <li> - ordered and unordered lists - <pre></pre> - preformatted -- > < & " -+ > < & " ' - \endcode - - \c Text.StyledText parser is strict, requiring tags to be correctly nested. -diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp -index d531fc9205..a25af90414 100644 ---- a/src/quick/util/qquickstyledtext.cpp -+++ b/src/quick/util/qquickstyledtext.cpp -@@ -564,6 +564,8 @@ void QQuickStyledTextPrivate::parseEntity(const QChar *&ch, const QString &textI - textOut += QChar(60); - else if (entity == QLatin1String("amp")) - textOut += QChar(38); -+ else if (entity == QLatin1String("apos")) -+ textOut += QChar(39); - else if (entity == QLatin1String("quot")) - textOut += QChar(34); - else if (entity == QLatin1String("nbsp")) --- -2.36.0 - -From bdf7658d89e1df55ded318432d4412dbf1d5d0f9 Mon Sep 17 00:00:00 2001 +From 70c3f2cdc7b795a6faffbb5e7b552e6feb00c654 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <albert.astals.cid@kdab.com> Date: Thu, 17 Jun 2021 16:32:28 +0200 -Subject: [PATCH 05/19] Remove unused QPointer<QQuickPointerMask> +Subject: [PATCH 01/21] Remove unused QPointer<QQuickPointerMask> Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> @@ -176,167 +31,12 @@ index fba383e268..0d63618622 100644 QPointF targetStartPos; QPointF lastPos; -- -2.36.0 - -From 8da88589929a1d82103c8bbfa80210f3c1af3714 Mon Sep 17 00:00:00 2001 -From: Dmitry Shachnev <mitya57@gmail.com> -Date: Wed, 18 Aug 2021 22:50:29 +0300 -Subject: [PATCH 06/19] Include <limits> in Yarr.h to fix build with GCC 11 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- <limits.h> (aka <climits>) is needed for UINT_MAX macro constant. -- <limits> is needed for std::numeric_limits. - -Without this fix, qtdeclarative failed to build on some platforms: - - In file included from jsruntime/qv4regexp_p.h:62, - from jsruntime/qv4regexp.cpp:40: - ../3rdparty/masm/yarr/Yarr.h:46:44: error: ‘numeric_limits’ is not a member of ‘std’ - 46 | static const unsigned offsetNoMatch = std::numeric_limits<unsigned>::max(); - | ^~~~~~~~~~~~~~ - -Pick-to: 5.15 6.2 -Change-Id: I7cc9f7bc6624a52c8659f09034ab16064da5fd2f -Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com> -Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> -(cherry picked from commit db58b8518e157b765bf2e01e6382a9eed4751f27) ---- - src/3rdparty/masm/yarr/Yarr.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/3rdparty/masm/yarr/Yarr.h b/src/3rdparty/masm/yarr/Yarr.h -index ccf78f9880..2955ea7e72 100644 ---- a/src/3rdparty/masm/yarr/Yarr.h -+++ b/src/3rdparty/masm/yarr/Yarr.h -@@ -28,6 +28,7 @@ - #pragma once - - #include <limits.h> -+#include <limits> - #include "YarrErrorCode.h" - - namespace JSC { namespace Yarr { --- -2.36.0 +2.49.0 -From 103503f1cae9e928a4fa8b5e7e1f7af34f1add4d Mon Sep 17 00:00:00 2001 -From: Aleix Pol <aleixpol@kde.org> -Date: Tue, 21 Sep 2021 00:10:26 +0200 -Subject: [PATCH 07/19] QQuickLoader: Do not incubate if the source arrives - after setActive(false) - -Otherwise we end up in the crazy place of active being false but item -being non-null and forces us to workaround within the apps. - -Change-Id: I88c27c4b00ccec8b8e0c05a8e10b44fcabfc2e30 -Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> -(cherry picked from commit e78c068700fa74ab3aca6a23ab2450563b1c3a5c) -Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> ---- - src/quick/items/qquickloader.cpp | 3 +++ - .../data/loader-async-race-rect.qml | 10 ++++++++++ - .../qquickloader/data/loader-async-race.qml | 14 ++++++++++++++ - .../quick/qquickloader/tst_qquickloader.cpp | 19 +++++++++++++++++++ - 4 files changed, 46 insertions(+) - create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race-rect.qml - create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race.qml - -diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp -index cb4f79a3c2..7fbe66fdda 100644 ---- a/src/quick/items/qquickloader.cpp -+++ b/src/quick/items/qquickloader.cpp -@@ -737,6 +737,9 @@ void QQuickLoaderPrivate::_q_sourceLoaded() - return; - } - -+ if (!active) -+ return; -+ - QQmlContext *creationContext = component->creationContext(); - if (!creationContext) creationContext = qmlContext(q); - itemContext = new QQmlContext(creationContext); -diff --git a/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml -new file mode 100644 -index 0000000000..a56dcea5ad ---- /dev/null -+++ b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml -@@ -0,0 +1,10 @@ -+import QtQuick 2.15 -+ -+Rectangle { -+ anchors.fill: parent -+ color: "blue" -+ Item { -+ Item { -+ } -+ } -+} -diff --git a/tests/auto/quick/qquickloader/data/loader-async-race.qml b/tests/auto/quick/qquickloader/data/loader-async-race.qml -new file mode 100644 -index 0000000000..8ba625c5c1 ---- /dev/null -+++ b/tests/auto/quick/qquickloader/data/loader-async-race.qml -@@ -0,0 +1,14 @@ -+import QtQuick 2.15 -+ -+Item { -+ id: root -+ Component.onCompleted: { -+ myloader.active = false -+ } -+ Loader { -+ id: myloader -+ anchors.fill: parent -+ asynchronous: true -+ source: "loader-async-race-rect.qml" -+ } -+} -diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp -index 0f6c811adb..dddacbaa0b 100644 ---- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp -+++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp -@@ -132,6 +132,7 @@ private slots: - void statusChangeOnlyEmittedOnce(); - - void setSourceAndCheckStatus(); -+ void asyncLoaderRace(); - }; - - Q_DECLARE_METATYPE(QList<QQmlError>) -@@ -1496,6 +1497,24 @@ void tst_QQuickLoader::setSourceAndCheckStatus() - QCOMPARE(loader->status(), QQuickLoader::Null); - } - -+void tst_QQuickLoader::asyncLoaderRace() -+{ -+ QQmlApplicationEngine engine; -+ auto url = testFileUrl("loader-async-race.qml"); -+ engine.load(url); -+ auto root = engine.rootObjects().at(0); -+ QVERIFY(root); -+ -+ QQuickLoader *loader = root->findChild<QQuickLoader *>(); -+ QCOMPARE(loader->active(), false); -+ QCOMPARE(loader->status(), QQuickLoader::Null); -+ QCOMPARE(loader->item(), nullptr); -+ -+ QSignalSpy spy(loader, &QQuickLoader::itemChanged); -+ QVERIFY(!spy.wait(100)); -+ QCOMPARE(loader->item(), nullptr); -+} -+ - QTEST_MAIN(tst_QQuickLoader) - - #include "tst_qquickloader.moc" --- -2.36.0 - -From 0fdd8a998075a8b52954724743d3a04c105c6ce2 Mon Sep 17 00:00:00 2001 +From cd192119255ac8a1b451aad04a82c58b294d5cbf Mon Sep 17 00:00:00 2001 From: Aleix Pol <aleixpol@kde.org> Date: Thu, 23 Sep 2021 03:43:04 +0200 -Subject: [PATCH 08/19] QQmlDelegateModel: Refresh the view when a column is +Subject: [PATCH 02/21] QQmlDelegateModel: Refresh the view when a column is added at 0 It can happen that a model reports n>0 rows but columns=0 (See @@ -357,7 +57,7 @@ Signed-off-by: Aleix Pol <aleixpol@kde.org> create mode 100644 tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml diff --git a/src/qmlmodels/qqmldelegatemodel.cpp b/src/qmlmodels/qqmldelegatemodel.cpp -index 26ded63c41..53e511303e 100644 +index 3b57edfc5d..5b7e767ae2 100644 --- a/src/qmlmodels/qqmldelegatemodel.cpp +++ b/src/qmlmodels/qqmldelegatemodel.cpp @@ -389,6 +389,12 @@ void QQmlDelegateModelPrivate::connectToAbstractItemModel() @@ -386,7 +86,7 @@ index 26ded63c41..53e511303e 100644 QObject::disconnect(aim, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), q, SLOT(_q_dataChanged(QModelIndex,QModelIndex,QVector<int>))); QObject::disconnect(aim, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)), -@@ -1958,6 +1970,38 @@ void QQmlDelegateModel::_q_rowsMoved( +@@ -1979,6 +1991,38 @@ void QQmlDelegateModel::_q_rowsMoved( } } @@ -457,7 +157,7 @@ index 0000000000..206133bb39 + } +} diff --git a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp -index 71550a50f3..4c1eae7ac7 100644 +index f0afdb16ca..e128d77c52 100644 --- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp +++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp @@ -27,6 +27,8 @@ @@ -469,16 +169,16 @@ index 71550a50f3..4c1eae7ac7 100644 #include <QtQml/qqmlcomponent.h> #include <QtQmlModels/private/qqmldelegatemodel_p.h> #include <QtQuick/qquickview.h> -@@ -45,6 +47,7 @@ private slots: - void valueWithoutCallingObjectFirst_data(); - void valueWithoutCallingObjectFirst(); - void filterOnGroup_removeWhenCompleted(); +@@ -48,6 +50,7 @@ private slots: + void qtbug_86017(); + void contextAccessedByHandler(); + void deleteRace(); + void redrawUponColumnChange(); }; class AbstractItemModel : public QAbstractItemModel -@@ -149,6 +152,30 @@ void tst_QQmlDelegateModel::filterOnGroup_removeWhenCompleted() - QTest::qWaitFor([=]{ return model->count() == 2; } ); +@@ -187,6 +190,30 @@ void tst_QQmlDelegateModel::deleteRace() + QTRY_COMPARE(o->property("count").toInt(), 0); } +void tst_QQmlDelegateModel::redrawUponColumnChange() @@ -509,685 +209,12 @@ index 71550a50f3..4c1eae7ac7 100644 #include "tst_qqmldelegatemodel.moc" -- -2.36.0 - -From f2d1bfa96bedb09c27f52a802b03cbefb17a0257 Mon Sep 17 00:00:00 2001 -From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> -Date: Sun, 10 Oct 2021 21:04:21 +0300 -Subject: [PATCH 09/19] Fix sweep step for tainted QObject JavaScript wrappers - -Currently, whenever the garbage collector runs, it will destroy all -valid tainted wrappers. - -Only null or undefined wrappers will be preserved in the -m_multiplyWrappedQObjects map. - -It seems like "!" was overlooked in -3b5d37ce3841c4bfdf1c629d33f0e33b881b47fb. Prior to that change, it -was "!it.value()->markBit()", so calling erase() in the then branch -did make sense. But with "!it.value().isNullOrUndefined()", erase() -will be called for every valid wrapper, which is the opposite what we -want. - -Pick-to: 5.15 6.2 -Change-Id: I2bf2630f538af8cbd4bfffcff29d67be6c278265 -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -(cherry picked from commit e6b2f88d892dcf396580a61662f569bf69d6d9d1) ---- - src/qml/memory/qv4mm.cpp | 2 +- - tests/auto/qml/qjsengine/tst_qjsengine.cpp | 39 ++++++++++++++++++++++ - tests/auto/qml/qv4mm/tst_qv4mm.cpp | 6 ++-- - 3 files changed, 43 insertions(+), 4 deletions(-) - -diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp -index 06caf04e5a..da149a67c4 100644 ---- a/src/qml/memory/qv4mm.cpp -+++ b/src/qml/memory/qv4mm.cpp -@@ -981,7 +981,7 @@ void MemoryManager::sweep(bool lastSweep, ClassDestroyStatsCallback classCountPt - - if (MultiplyWrappedQObjectMap *multiplyWrappedQObjects = engine->m_multiplyWrappedQObjects) { - for (MultiplyWrappedQObjectMap::Iterator it = multiplyWrappedQObjects->begin(); it != multiplyWrappedQObjects->end();) { -- if (!it.value().isNullOrUndefined()) -+ if (it.value().isNullOrUndefined()) - it = multiplyWrappedQObjects->erase(it); - else - ++it; -diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp -index 3b7d74df63..b75bf820d5 100644 ---- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp -+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp -@@ -102,6 +102,7 @@ private slots: - void valueConversion_RegularExpression(); - void castWithMultipleInheritance(); - void collectGarbage(); -+ void collectGarbageNestedWrappersTwoEngines(); - void gcWithNestedDataStructure(); - void stacktrace(); - void numberParsing_data(); -@@ -1809,6 +1810,44 @@ void tst_QJSEngine::collectGarbage() - QVERIFY(ptr.isNull()); - } - -+class TestObjectContainer : public QObject -+{ -+ Q_OBJECT -+ Q_PROPERTY(QObject *dummy MEMBER m_dummy CONSTANT) -+ -+public: -+ TestObjectContainer() : m_dummy(new QObject(this)) {} -+ -+private: -+ QObject *m_dummy; -+}; -+ -+void tst_QJSEngine::collectGarbageNestedWrappersTwoEngines() -+{ -+ QJSEngine engine1; -+ QJSEngine engine2; -+ -+ TestObjectContainer container; -+ QQmlEngine::setObjectOwnership(&container, QQmlEngine::CppOwnership); -+ -+ engine1.globalObject().setProperty("foobar", engine1.newQObject(&container)); -+ engine2.globalObject().setProperty("foobar", engine2.newQObject(&container)); -+ -+ engine1.evaluate("foobar.dummy.baz = 42"); -+ engine2.evaluate("foobar.dummy.baz = 43"); -+ -+ QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42); -+ QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43); -+ -+ engine1.collectGarbage(); -+ engine2.collectGarbage(); -+ -+ // The GC should not collect dummy object wrappers neither in engine1 nor engine2, we -+ // verify that by checking whether the baz property still has its previous value. -+ QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42); -+ QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43); -+} -+ - void tst_QJSEngine::gcWithNestedDataStructure() - { - // The GC must be able to traverse deeply nested objects, otherwise this -diff --git a/tests/auto/qml/qv4mm/tst_qv4mm.cpp b/tests/auto/qml/qv4mm/tst_qv4mm.cpp -index 5d635aa63b..824fd89e5b 100644 ---- a/tests/auto/qml/qv4mm/tst_qv4mm.cpp -+++ b/tests/auto/qml/qv4mm/tst_qv4mm.cpp -@@ -76,10 +76,10 @@ void tst_qv4mm::multiWrappedQObjects() - QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1); - QCOMPARE(engine2.memoryManager->m_pendingFreedObjectWrapperValue.size(), 0); - -- // Moves the additional WeakValue from m_multiplyWrappedQObjects to -- // m_pendingFreedObjectWrapperValue. It's still alive after all. -+ // The additional WeakValue from m_multiplyWrappedQObjects hasn't been moved -+ // to m_pendingFreedObjectWrapperValue yet. It's still alive after all. - engine1.memoryManager->runGC(); -- QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 2); -+ QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1); - - // engine2 doesn't own the object as engine1 was the first to wrap it above. - // Therefore, no effect here. --- -2.36.0 - -From b884339e8b6dd8dcaed9704afda2ebed4fcaf9b5 Mon Sep 17 00:00:00 2001 -From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -Date: Tue, 12 Oct 2021 13:13:01 +0200 -Subject: [PATCH 10/19] Fix distorted text with subpixel matrix translation - -We would pixel-align native text *before* applying the -model-view matrix, which would cause GL_NEAREST artifacts to -show up when the text was positioned at a subpixel offset in -some cases. Instead, we pixel-align the coordinates after mapping -them to the view frustum, but before applying the projection to the -screen. - -To make it easier to modify the buffer layout for the shaders the -next time, this also adds some constants for offsets. - -[ChangeLog][Text] Fixed an issue where text using NativeRendering -would look slightly skewed if it was inside a parent that had -been positioned at a subpixel offset. - -Pick-to: 5.15 6.2 -Fixes: QTBUG-96112 -Fixes: QTBUG-83626 -Task-number: QTBUG-55638 -Change-Id: Ifb785ad5830093df94afc75a7bc288e24ca7aa38 -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit b21948f5e811ce1b7abf065bc48af61a231e86f4) ---- - .../scenegraph/qsgdefaultglyphnode_p.cpp | 46 ++++++---- - .../scenegraph/shaders_ng/24bittextmask.frag | 5 +- - .../scenegraph/shaders_ng/32bitcolortext.frag | 5 +- - .../scenegraph/shaders_ng/8bittextmask.frag | 3 +- - .../scenegraph/shaders_ng/8bittextmask_a.frag | 3 +- - .../scenegraph/shaders_ng/outlinedtext.frag | 5 +- - .../scenegraph/shaders_ng/outlinedtext.vert | 9 +- - .../scenegraph/shaders_ng/outlinedtext_a.frag | 5 +- - .../scenegraph/shaders_ng/styledtext.frag | 3 +- - .../scenegraph/shaders_ng/styledtext.vert | 7 +- - .../scenegraph/shaders_ng/styledtext_a.frag | 3 +- - src/quick/scenegraph/shaders_ng/textmask.frag | 3 +- - src/quick/scenegraph/shaders_ng/textmask.vert | 7 +- - ...text_nativerendering_subpixelpositions.qml | 91 +++++++++++++++++++ - 14 files changed, 155 insertions(+), 40 deletions(-) - create mode 100644 tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml - -diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -index 3c60f830de..0fd6581dc4 100644 ---- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -+++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp -@@ -428,6 +428,18 @@ QSGTextMaskRhiShader::QSGTextMaskRhiShader(QFontEngine::GlyphFormat glyphFormat) - QStringLiteral(":/qt-project.org/scenegraph/shaders_ng/textmask.frag.qsb")); - } - -+enum UbufOffset { -+ ModelViewMatrixOffset = 0, -+ ProjectionMatrixOffset = ModelViewMatrixOffset + 64, -+ ColorOffset = ProjectionMatrixOffset + 64, -+ TextureScaleOffset = ColorOffset + 16, -+ DprOffset = TextureScaleOffset + 8, -+ -+ // + 1 float padding (vec4 must be aligned to 16) -+ StyleColorOffset = DprOffset + 4 + 4, -+ ShiftOffset = StyleColorOffset + 16 -+}; -+ - bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - QSGMaterial *newMaterial, QSGMaterial *oldMaterial) - { -@@ -443,11 +455,14 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - - bool changed = false; - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= DprOffset + 4); - - if (state.isMatrixDirty()) { -- const QMatrix4x4 m = state.combinedMatrix(); -- memcpy(buf->data(), m.constData(), 64); -+ const QMatrix4x4 mv = state.modelViewMatrix(); -+ memcpy(buf->data() + ModelViewMatrixOffset, mv.constData(), 64); -+ const QMatrix4x4 p = state.projectionMatrix(); -+ memcpy(buf->data() + ProjectionMatrixOffset, p.constData(), 64); -+ - changed = true; - } - -@@ -456,13 +471,13 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state, - if (updated || !oldMat || oldRtex != newRtex) { - const QVector2D textureScale = QVector2D(1.0f / mat->rhiGlyphCache()->width(), - 1.0f / mat->rhiGlyphCache()->height()); -- memcpy(buf->data() + 64 + 16, &textureScale, 8); -+ memcpy(buf->data() + TextureScaleOffset, &textureScale, 8); - changed = true; - } - - if (!oldMat) { - float dpr = state.devicePixelRatio(); -- memcpy(buf->data() + 64 + 16 + 8, &dpr, 4); -+ memcpy(buf->data() + DprOffset, &dpr, 4); - } - - // move texture uploads/copies onto the renderer's soon-to-be-committed list -@@ -510,11 +525,11 @@ bool QSG8BitTextMaskRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast<QSGTextMaskMaterial *>(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 80); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - const QVector4D color = qsg_premultiply(mat->color(), state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -553,12 +568,12 @@ bool QSG24BitTextMaskRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast<QSGTextMaskMaterial *>(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - // shader takes vec4 but uses alpha only; coloring happens via the blend constant - const QVector4D color = qsg_premultiply(mat->color(), state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -608,12 +623,12 @@ bool QSG32BitColorTextRhiShader::updateUniformData(RenderState &state, - QSGTextMaskMaterial *oldMat = static_cast<QSGTextMaskMaterial *>(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 92); -+ Q_ASSERT(buf->size() >= ColorOffset + 16); - - if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) { - // shader takes vec4 but uses alpha only - const QVector4D color(0, 0, 0, mat->color().w() * state.opacity()); -- memcpy(buf->data() + 64, &color, 16); -+ memcpy(buf->data() + ColorOffset, &color, 16); - changed = true; - } - -@@ -649,20 +664,17 @@ bool QSGStyledTextRhiShader::updateUniformData(RenderState &state, - QSGStyledTextMaterial *oldMat = static_cast<QSGStyledTextMaterial *>(oldMaterial); - - QByteArray *buf = state.uniformData(); -- Q_ASSERT(buf->size() >= 120); -- -- // matrix..dpr + 1 float padding (vec4 must be aligned to 16) -- const int startOffset = 64 + 16 + 8 + 4 + 4; -+ Q_ASSERT(buf->size() >= ShiftOffset + 8); - - if (oldMat == nullptr || mat->styleColor() != oldMat->styleColor() || state.isOpacityDirty()) { - const QVector4D styleColor = qsg_premultiply(mat->styleColor(), state.opacity()); -- memcpy(buf->data() + startOffset, &styleColor, 16); -+ memcpy(buf->data() + StyleColorOffset, &styleColor, 16); - changed = true; - } - - if (oldMat == nullptr || oldMat->styleShift() != mat->styleShift()) { - const QVector2D v = mat->styleShift(); -- memcpy(buf->data() + startOffset + 16, &v, 8); -+ memcpy(buf->data() + ShiftOffset, &v, 8); - changed = true; - } - -diff --git a/src/quick/scenegraph/shaders_ng/24bittextmask.frag b/src/quick/scenegraph/shaders_ng/24bittextmask.frag -index bc3826a924..ed8da4cd30 100644 ---- a/src/quick/scenegraph/shaders_ng/24bittextmask.frag -+++ b/src/quick/scenegraph/shaders_ng/24bittextmask.frag -@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -- vec4 color; // only alpha is used, but must be vec4 due to layout compat -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; -+ vec4 color; - vec2 textureScale; - float dpr; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -index 63e445f90b..4198a4d339 100644 ---- a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -+++ b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag -@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -- vec4 color; // only alpha is used, but must be vec4 due to layout compat -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; -+ vec4 color; - vec2 textureScale; - float dpr; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask.frag b/src/quick/scenegraph/shaders_ng/8bittextmask.frag -index 6304e821ff..a06743876d 100644 ---- a/src/quick/scenegraph/shaders_ng/8bittextmask.frag -+++ b/src/quick/scenegraph/shaders_ng/8bittextmask.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -index 0d0fa1cd3a..f725cbc5e7 100644 ---- a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -+++ b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.frag b/src/quick/scenegraph/shaders_ng/outlinedtext.frag -index 947d161a50..e2f82d3845 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext.frag -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.frag -@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.vert b/src/quick/scenegraph/shaders_ng/outlinedtext.vert -index 023f9dfdc2..4068e42f28 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext.vert -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext.vert -@@ -10,11 +10,12 @@ layout(location = 3) out vec2 sCoordLeft; - layout(location = 4) out vec2 sCoordRight; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -@@ -28,6 +29,6 @@ void main() - sCoordDown = (tCoord - vec2(0.0, 1.0)) * ubuf.textureScale; - sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * ubuf.textureScale; - sCoordRight = (tCoord - vec2(1.0, 0.0)) * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -index 5b7bd9ca82..274d891a3c 100644 ---- a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -+++ b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag -@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- // must match styledtext -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -+ // the above must stay compatible with textmask/8bittextmask - vec4 styleColor; - vec2 shift; - } ubuf; -diff --git a/src/quick/scenegraph/shaders_ng/styledtext.frag b/src/quick/scenegraph/shaders_ng/styledtext.frag -index 0b16396037..2e380dfeae 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext.frag -+++ b/src/quick/scenegraph/shaders_ng/styledtext.frag -@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/styledtext.vert b/src/quick/scenegraph/shaders_ng/styledtext.vert -index beadf07c79..271dae8d8a 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext.vert -+++ b/src/quick/scenegraph/shaders_ng/styledtext.vert -@@ -7,7 +7,8 @@ layout(location = 0) out vec2 sampleCoord; - layout(location = 1) out vec2 shiftedSampleCoord; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -@@ -22,6 +23,6 @@ void main() - { - sampleCoord = tCoord * ubuf.textureScale; - shiftedSampleCoord = (tCoord - ubuf.shift) * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/src/quick/scenegraph/shaders_ng/styledtext_a.frag b/src/quick/scenegraph/shaders_ng/styledtext_a.frag -index b673137895..62e162c851 100644 ---- a/src/quick/scenegraph/shaders_ng/styledtext_a.frag -+++ b/src/quick/scenegraph/shaders_ng/styledtext_a.frag -@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/textmask.frag b/src/quick/scenegraph/shaders_ng/textmask.frag -index 518d5c965f..ed8da4cd30 100644 ---- a/src/quick/scenegraph/shaders_ng/textmask.frag -+++ b/src/quick/scenegraph/shaders_ng/textmask.frag -@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor; - layout(binding = 1) uniform sampler2D _qt_texture; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -diff --git a/src/quick/scenegraph/shaders_ng/textmask.vert b/src/quick/scenegraph/shaders_ng/textmask.vert -index 9d80d5dadb..e0b3c01bce 100644 ---- a/src/quick/scenegraph/shaders_ng/textmask.vert -+++ b/src/quick/scenegraph/shaders_ng/textmask.vert -@@ -6,7 +6,8 @@ layout(location = 1) in vec2 tCoord; - layout(location = 0) out vec2 sampleCoord; - - layout(std140, binding = 0) uniform buf { -- mat4 matrix; -+ mat4 modelViewMatrix; -+ mat4 projectionMatrix; - vec4 color; - vec2 textureScale; - float dpr; -@@ -17,6 +18,6 @@ out gl_PerVertex { vec4 gl_Position; }; - void main() - { - sampleCoord = tCoord * ubuf.textureScale; -- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr; -- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w); -+ vec4 xformed = ubuf.modelViewMatrix * vCoord; -+ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w); - } -diff --git a/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml -new file mode 100644 -index 0000000000..c60fc4d8b0 ---- /dev/null -+++ b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml -@@ -0,0 +1,91 @@ -+import QtQuick 2.0 -+ -+//vary font style, native rendering at non-integer offsets -+ -+Item { -+ id: topLevel -+ width: 320 -+ height: 580 -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 20 * index -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 100.5 + 20 * index -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 200.5 + 20 * index -+ x: 0.5 -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Text { -+ y: 300.5 + 20 * index -+ x: 0.5 -+ clip: true -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ -+ Repeater { -+ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken] -+ Rectangle { -+ y: 400.5 + 20 * index -+ x: 0.5 -+ width: topLevel.width -+ height: topLevel.height -+ clip: true -+ Text { -+ renderType: Text.NativeRendering -+ width: parent.width -+ wrapMode: Text.Wrap -+ font.pointSize: 10 -+ style: modelData -+ styleColor: "green" -+ text: "The quick fox jumps in style " + modelData -+ } -+ } -+ } -+} --- -2.36.0 - -From 8b0a4b1a329010e056b19fdd9940bad2036b5f57 Mon Sep 17 00:00:00 2001 -From: Laszlo Agocs <laszlo.agocs@qt.io> -Date: Mon, 11 Oct 2021 15:37:33 +0200 -Subject: [PATCH 11/19] Revert "Fix for possible crash in - QSGDefaultLayer::grab" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit 1c5de027d0c31d1d6697bd0557128d92207763d8. - -The fix here is not correct. Calling a QSGRhiLayer function from the gui -thread is very wrong and can cause a set of unexpected issues. The -Address Sanitizer catches this by recognizing that the render thread is -trying to do something with an object destroyed in the meantime on the -main thread in the layer->setItem(null) call. - -The issue the original fix is trying to address needs to be addressed in -some different form. - -Fixes: QTBUG-94975 -Pick-to: 6.2 6.1 5.15 -Change-Id: I46f904026281201fc6d233ed7d3bdc7080934afe -Reviewed-by: Christian Strømme <christian.stromme@qt.io> -(cherry picked from commit a5f0361622eb08eab6c3474d5fc249d1962e3d1e) ---- - src/quick/items/qquickshadereffectsource.cpp | 8 -------- - src/quick/items/qquickshadereffectsource_p.h | 1 - - 2 files changed, 9 deletions(-) - -diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp -index 4f61d61309..b298ed74da 100644 ---- a/src/quick/items/qquickshadereffectsource.cpp -+++ b/src/quick/items/qquickshadereffectsource.cpp -@@ -344,7 +344,6 @@ void QQuickShaderEffectSource::setSourceItem(QQuickItem *item) - d->refFromEffectItem(m_hideSource); - d->addItemChangeListener(this, QQuickItemPrivate::Geometry); - connect(m_sourceItem, SIGNAL(destroyed(QObject*)), this, SLOT(sourceItemDestroyed(QObject*))); -- connect(m_sourceItem, SIGNAL(parentChanged(QQuickItem*)), this, SLOT(sourceItemParentChanged(QQuickItem*))); - } else { - qWarning("ShaderEffectSource: sourceItem and ShaderEffectSource must both be children of the same window."); - m_sourceItem = nullptr; -@@ -364,13 +363,6 @@ void QQuickShaderEffectSource::sourceItemDestroyed(QObject *item) - } - - --void QQuickShaderEffectSource::sourceItemParentChanged(QQuickItem *parent) --{ -- if (!parent && m_texture) -- m_texture->setItem(0); --} -- -- - /*! - \qmlproperty rect QtQuick::ShaderEffectSource::sourceRect - -diff --git a/src/quick/items/qquickshadereffectsource_p.h b/src/quick/items/qquickshadereffectsource_p.h -index 4deb6c70a3..c0a1ccab78 100644 ---- a/src/quick/items/qquickshadereffectsource_p.h -+++ b/src/quick/items/qquickshadereffectsource_p.h -@@ -173,7 +173,6 @@ Q_SIGNALS: - private Q_SLOTS: - void sourceItemDestroyed(QObject *item); - void invalidateSceneGraph(); -- void sourceItemParentChanged(QQuickItem *parent); - - protected: - void releaseResources() override; --- -2.36.0 +2.49.0 -From 0e201d3561cecc8a1e982f81095f14af1dc3ceca Mon Sep 17 00:00:00 2001 +From 608d9a277e1d3e6a84b711e6828a8f50ce26d7ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= <jan-arve.saether@qt.io> Date: Thu, 3 Sep 2020 10:51:01 +0200 -Subject: [PATCH 12/19] Fix TapHandler so that it actually registers a tap +Subject: [PATCH 03/21] Fix TapHandler so that it actually registers a tap This bug caused all quick examples that used the shared\LauncherList.qml to be broken. @@ -1211,7 +238,7 @@ Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/quick/handlers/qquickhandlerpoint.cpp b/src/quick/handlers/qquickhandlerpoint.cpp -index 72efdfd0f4..6aef3545dd 100644 +index 7103206470..02141b9a9e 100644 --- a/src/quick/handlers/qquickhandlerpoint.cpp +++ b/src/quick/handlers/qquickhandlerpoint.cpp @@ -82,7 +82,7 @@ void QQuickHandlerPoint::localize(QQuickItem *item) @@ -1233,7 +260,7 @@ index 72efdfd0f4..6aef3545dd 100644 // all points are required to be from the same event, so pressed buttons and modifiers should be the same m_pressedButtons = points.first().pressedButtons(); diff --git a/src/quick/handlers/qquicksinglepointhandler.cpp b/src/quick/handlers/qquicksinglepointhandler.cpp -index b51f53b74f..89081b4e84 100644 +index d785d8c0ca..a508de455d 100644 --- a/src/quick/handlers/qquicksinglepointhandler.cpp +++ b/src/quick/handlers/qquicksinglepointhandler.cpp @@ -75,7 +75,7 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event) @@ -1255,12 +282,12 @@ index b51f53b74f..89081b4e84 100644 void QQuickSinglePointHandler::handlePointerEventImpl(QQuickPointerEvent *event) -- -2.36.0 +2.49.0 -From 5af400361da5d66427c68bf743c8def70b7cbc8e Mon Sep 17 00:00:00 2001 +From f5dd04cc3e358f7e8430b60e78ba90b6386b1cba Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <aacid@kde.org> Date: Tue, 16 Nov 2021 22:43:37 +0100 -Subject: [PATCH 13/19] Revert "Fix TapHandler so that it actually registers a +Subject: [PATCH 04/21] Revert "Fix TapHandler so that it actually registers a tap" This reverts commit 36e8ccd434f948e4f11a8f9d59139ec072e41ff5. @@ -1272,7 +299,7 @@ It's causing regresions 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/quick/handlers/qquickhandlerpoint.cpp b/src/quick/handlers/qquickhandlerpoint.cpp -index 6aef3545dd..72efdfd0f4 100644 +index 02141b9a9e..7103206470 100644 --- a/src/quick/handlers/qquickhandlerpoint.cpp +++ b/src/quick/handlers/qquickhandlerpoint.cpp @@ -82,7 +82,7 @@ void QQuickHandlerPoint::localize(QQuickItem *item) @@ -1294,7 +321,7 @@ index 6aef3545dd..72efdfd0f4 100644 // all points are required to be from the same event, so pressed buttons and modifiers should be the same m_pressedButtons = points.first().pressedButtons(); diff --git a/src/quick/handlers/qquicksinglepointhandler.cpp b/src/quick/handlers/qquicksinglepointhandler.cpp -index 89081b4e84..b51f53b74f 100644 +index a508de455d..d785d8c0ca 100644 --- a/src/quick/handlers/qquicksinglepointhandler.cpp +++ b/src/quick/handlers/qquicksinglepointhandler.cpp @@ -75,7 +75,7 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event) @@ -1316,99 +343,12 @@ index 89081b4e84..b51f53b74f 100644 void QQuickSinglePointHandler::handlePointerEventImpl(QQuickPointerEvent *event) -- -2.36.0 - -From 9a3aaa96c58d167ab9eec0d0c8105853e8c6117a Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Tue, 21 Dec 2021 09:20:17 +0100 -Subject: [PATCH 14/19] QQmlJs::FixedPoolArray: fix UB (precondition violation) - in allocate() - -Says ubsan: - - qqmljsfixedpoolarray_p.h:90:19: runtime error: null pointer passed as argument 2, which is declared to never be null - -Fix, like in so many other places, by a size check. - -Pick-to: 6.3 6.2 5.15 -Change-Id: I9181d6ecb467c2dc726978ce7f93b35a6bf2f944 -Reviewed-by: Lars Knoll <lars.knoll@qt.io> -(cherry picked from commit d74e931f3fc2587ac6d1e2930acbbe54ea5be2b5) ---- - src/qml/common/qqmljsfixedpoolarray_p.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/qml/common/qqmljsfixedpoolarray_p.h b/src/qml/common/qqmljsfixedpoolarray_p.h -index b65b994d6c..15a8cd6878 100644 ---- a/src/qml/common/qqmljsfixedpoolarray_p.h -+++ b/src/qml/common/qqmljsfixedpoolarray_p.h -@@ -86,7 +86,7 @@ public: - if (QTypeInfo<T>::isComplex) { - for (int i = 0; i < count; ++i) - new (data + i) T(vector.at(i)); -- } else { -+ } else if (count) { - memcpy(data, static_cast<const void*>(vector.constData()), count * sizeof(T)); - } - } --- -2.36.0 - -From 2dc624d1f7771d4e93ad7f5293fb43cf539b1ca4 Mon Sep 17 00:00:00 2001 -From: Ulf Hermann <ulf.hermann@qt.io> -Date: Thu, 3 Feb 2022 10:02:06 +0100 -Subject: [PATCH 15/19] V4: Do not call dtor of an object we continue to use - -After destroyObject(), the QObjectWrapper is still alive. We might use -its heap object again. Furthermore, the Heap::QObjectWrapper dtor does -not actually do anything defined. What we want to do here is clear the -QObject pointer because we've just gotten rid of the QObject. There is a -method for that: Heap::QObjectWrapper::destroy(). +2.49.0 -Finally, the internalClass must never ever be nullptr. Assert on that -rather than checking it. - -Pick-to: 5.15 6.2 6.3 -Task-number: QTBUG-100431 -Change-Id: I794a295c182b2ed4ba80673f58d6143c861b7391 -Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> -Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -(cherry picked from commit 6c197319f34b8098d034f1543eb5feb9d7be54c3) ---- - src/qml/jsruntime/qv4qobjectwrapper.cpp | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp -index 9899c9274e..272b85069f 100644 ---- a/src/qml/jsruntime/qv4qobjectwrapper.cpp -+++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp -@@ -1160,8 +1160,7 @@ void Heap::QObjectWrapper::markObjects(Heap::Base *that, QV4::MarkStack *markSta - void QObjectWrapper::destroyObject(bool lastCall) - { - Heap::QObjectWrapper *h = d(); -- if (!h->internalClass) -- return; // destroyObject already got called -+ Q_ASSERT(h->internalClass); - - if (h->object()) { - QQmlData *ddata = QQmlData::get(h->object(), false); -@@ -1191,7 +1190,7 @@ void QObjectWrapper::destroyObject(bool lastCall) - } - } - -- h->~Data(); -+ h->destroy(); - } - - --- -2.36.0 - -From 5eee7419f55c592a24d9c7746df0f197d8f0a71d Mon Sep 17 00:00:00 2001 +From 34752ab840ef2dc3bce327fe39c356f4b909f22a Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Date: Sat, 29 Jan 2022 21:59:33 +0200 -Subject: [PATCH 16/19] Make sure QQuickWidget and its offscreen window's +Subject: [PATCH 05/21] Make sure QQuickWidget and its offscreen window's screens are always in sync By default, the offscreen window is placed on the primary screen. @@ -1427,7 +367,7 @@ Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp -index 39780f8de3..223d91f579 100644 +index cf021d9a7c..c791f209cf 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -106,6 +106,7 @@ void QQuickWidgetPrivate::init(QQmlEngine* e) @@ -1449,7 +389,7 @@ index 39780f8de3..223d91f579 100644 QOpenGLContext *shareContext = qt_gl_global_share_context(); if (!shareContext) shareContext = QWidgetPrivate::get(q->window())->shareContext(); -@@ -1520,19 +1519,16 @@ bool QQuickWidget::event(QEvent *e) +@@ -1527,19 +1526,16 @@ bool QQuickWidget::event(QEvent *e) d->handleWindowChange(); break; @@ -1477,7 +417,7 @@ index 39780f8de3..223d91f579 100644 if (d->useSoftwareRenderer #if QT_CONFIG(opengl) -@@ -1545,7 +1541,7 @@ bool QQuickWidget::event(QEvent *e) +@@ -1552,7 +1548,7 @@ bool QQuickWidget::event(QEvent *e) d->render(true); } break; @@ -1487,238 +427,1539 @@ index 39780f8de3..223d91f579 100644 case QEvent::Move: d->updatePosition(); -- -2.36.0 +2.49.0 -From 51efb2ed2f071beda188270a23ac450fe4b318f7 Mon Sep 17 00:00:00 2001 -From: Fabian Kosmale <fabian.kosmale@qt.io> -Date: Wed, 4 May 2022 09:10:54 +0200 -Subject: [PATCH 17/19] QQuickItem: Guard against cycles in - nextPrevItemInTabFocusChain +From f2659326a01cd58ebd04b7590e486eb7d2830b28 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Tue, 1 Nov 2022 22:35:24 +0800 +Subject: [PATCH 06/21] Don't convert QByteArray in `startDrag` + +QMimeData::setData expects the provided data to contain the correctly +encoded QByteArray, so if the variant contains a QByteArray, then take +it as is to avoid data loss. + +If the variant is not already a byte array, then we ideally would make +sure that the mime type (i.e. the key of the map) and the QVariant's +type are compatible (image/png with a QImage works; text/plain with a +QImage does not). This changes behavior and needs to be a follow-up +commit. + +Fixes: QTBUG-71922 +Change-Id: I9b9f10fd332e1f9568f6835a69a1c359457f823c +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +(cherry picked from commit 062f9bf57657b54dc708015ec5fed3c89e5cc3ca) +Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> + + +(cherry picked from commit 22de23c4bb9ac5e2c545e9de3149a7d4f8edd5ee) +--- + src/quick/items/qquickdrag.cpp | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/src/quick/items/qquickdrag.cpp b/src/quick/items/qquickdrag.cpp +index 8321fcfeed..3b50370355 100644 +--- a/src/quick/items/qquickdrag.cpp ++++ b/src/quick/items/qquickdrag.cpp +@@ -481,7 +481,9 @@ void QQuickDragAttached::setKeys(const QStringList &keys) + \qmlattachedproperty stringlist QtQuick::Drag::mimeData + \since 5.2 + +- This property holds a map of mimeData that is used during startDrag. ++ This property holds a map from mime type to data that is used during startDrag. ++ The mime data needs to be a \c string, or an \c ArrayBuffer with the data encoded ++ according to the mime type. + */ + + QVariantMap QQuickDragAttached::mimeData() const +@@ -766,8 +768,12 @@ Qt::DropAction QQuickDragAttachedPrivate::startDrag(Qt::DropActions supportedAct + QDrag *drag = new QDrag(source ? source : q); + QMimeData *mimeData = new QMimeData(); + +- for (auto it = externalMimeData.cbegin(), end = externalMimeData.cend(); it != end; ++it) +- mimeData->setData(it.key(), it.value().toString().toUtf8()); ++ for (auto it = externalMimeData.cbegin(), end = externalMimeData.cend(); it != end; ++it) { ++ if (it.value().typeId() == QMetaType::QByteArray) ++ mimeData->setData(it.key(), it.value().toByteArray()); ++ else ++ mimeData->setData(it.key(), it.value().toString().toUtf8()); ++ } + + drag->setMimeData(mimeData); + if (pixmapLoader.isReady()) { +-- +2.49.0 + +From 771b2ebea68e8f4c33a9d440c20d3dd1157670f6 Mon Sep 17 00:00:00 2001 +From: Hannah von Reth <vonreth@kde.org> +Date: Sat, 5 Nov 2022 18:48:41 +0100 +Subject: [PATCH 07/21] Fix build after + 95290f66b806a307b8da1f72f8fc2c69801933d0 + +--- + src/quick/items/qquickdrag.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/quick/items/qquickdrag.cpp b/src/quick/items/qquickdrag.cpp +index 3b50370355..383078b3b9 100644 +--- a/src/quick/items/qquickdrag.cpp ++++ b/src/quick/items/qquickdrag.cpp +@@ -769,7 +769,7 @@ Qt::DropAction QQuickDragAttachedPrivate::startDrag(Qt::DropActions supportedAct + QMimeData *mimeData = new QMimeData(); + + for (auto it = externalMimeData.cbegin(), end = externalMimeData.cend(); it != end; ++it) { +- if (it.value().typeId() == QMetaType::QByteArray) ++ if (static_cast<QMetaType::Type>(it.value().type()) == QMetaType::QByteArray) + mimeData->setData(it.key(), it.value().toByteArray()); + else + mimeData->setData(it.key(), it.value().toString().toUtf8()); +-- +2.49.0 + +From 295c5e9912edf5976f2035b22baa5f37af40c7c2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io> +Date: Fri, 7 May 2021 10:07:50 +0200 +Subject: [PATCH 08/21] Implement accessibility for QQuickWidget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -nextPrevItemInTabFocusChain already had a check to prevent running into -cycles, it would however only detect if we reached the original item. If -our cycle instead would loop between reachable items without ever -returning to the initial one, as in the diagram below, then we would -never terminate the loop. - - /-->other item<---next item -initial-item \ ^ - \ | - --->different item - -To prevent this from happening, we keep track of all items we've seen so -far. One last complications arises due to the fact that we do visit the -parent twice under some cicrcumstances, but we already have the skip -variable to indicate that case – we simply skip the duplicate check if -it is set to true. - -Pick-to: 6.2 6.3 -Fixes: QTBUG-87190 -Change-Id: I1449a7ebf8f325f00c296e8a8db4360faf1049e4 +The accessibility tree for the Qt Quick content should +be rooted at the QQuickWidget, and not at the offscreen +QQuickWindow. + +For this to be the case, several things must happen: + - QQuickWindow must not report the child interfaces + - QQuickWidget must report the child interfaces + - The child interfaces must report the QQuickWidget as the parent + +Create accessibility interfaces for QQuickWidget and +and QQuickWigetOffscreenWindow (which now gets a proper +subclass), where the QQuickWidget interface reports +the child interfaces and the QQuickWigetOffscreenWindow +reports no children + +Change the code in QAccessibleQuickItem to use the +true (visible) window, where needed. + +Fixes: QTBUG-67290 +Change-Id: I387d0ef711138d248a8dd16eefc9839499b35eeb +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit e74bcf751495d9fe27efd195bc04e2a6ae6732a4) +(cherry picked from commit 41926e08d73ea6c4bbfc87a1dd52d2cdbc435c27) +--- + src/quick/accessible/qaccessiblequickitem.cpp | 29 +++-- + src/quick/accessible/qaccessiblequickview_p.h | 2 +- + src/quickwidgets/qaccessiblequickwidget.cpp | 110 ++++++++++++++++++ + src/quickwidgets/qaccessiblequickwidget.h | 84 +++++++++++++ + .../qaccessiblequickwidgetfactory.cpp | 60 ++++++++++ + .../qaccessiblequickwidgetfactory_p.h | 66 +++++++++++ + src/quickwidgets/qquickwidget.cpp | 18 ++- + src/quickwidgets/qquickwidget_p.h | 8 ++ + src/quickwidgets/quickwidgets.pro | 8 +- + 9 files changed, 368 insertions(+), 17 deletions(-) + create mode 100644 src/quickwidgets/qaccessiblequickwidget.cpp + create mode 100644 src/quickwidgets/qaccessiblequickwidget.h + create mode 100644 src/quickwidgets/qaccessiblequickwidgetfactory.cpp + create mode 100644 src/quickwidgets/qaccessiblequickwidgetfactory_p.h + +diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp +index 36b65f906c..4d9e307a48 100644 +--- a/src/quick/accessible/qaccessiblequickitem.cpp ++++ b/src/quick/accessible/qaccessiblequickitem.cpp +@@ -46,6 +46,7 @@ + #include "QtQuick/private/qquicktextinput_p.h" + #include "QtQuick/private/qquickaccessibleattached_p.h" + #include "QtQuick/qquicktextdocument.h" ++#include "QtQuick/qquickrendercontrol.h" + QT_BEGIN_NAMESPACE + + #if QT_CONFIG(accessibility) +@@ -57,7 +58,19 @@ QAccessibleQuickItem::QAccessibleQuickItem(QQuickItem *item) + + QWindow *QAccessibleQuickItem::window() const + { +- return item()->window(); ++ QQuickWindow *window = item()->window(); ++ ++ // For QQuickWidget the above window will be the offscreen QQuickWindow, ++ // which is not a part of the accessibility tree. Detect this case and ++ // return the window for the QQuickWidget instead. ++ if (window && !window->handle()) { ++ if (QQuickRenderControl *renderControl = QQuickWindowPrivate::get(window)->renderControl) { ++ if (QWindow *renderWindow = renderControl->renderWindow(nullptr)) ++ return renderWindow; ++ } ++ } ++ ++ return window; + } + + int QAccessibleQuickItem::childCount() const +@@ -113,19 +126,15 @@ QAccessibleInterface *QAccessibleQuickItem::childAt(int x, int y) const + QAccessibleInterface *QAccessibleQuickItem::parent() const + { + QQuickItem *parent = item()->parentItem(); +- QQuickWindow *window = item()->window(); +- QQuickItem *ci = window ? window->contentItem() : nullptr; ++ QQuickWindow *itemWindow = item()->window(); ++ QQuickItem *ci = itemWindow ? itemWindow->contentItem() : nullptr; + while (parent && !QQuickItemPrivate::get(parent)->isAccessible && parent != ci) + parent = parent->parentItem(); + + if (parent) { + if (parent == ci) { +- // Jump out to the scene widget if the parent is the root item. +- // There are two root items, QQuickWindow::rootItem and +- // QQuickView::declarativeRoot. The former is the true root item, +- // but is not a part of the accessibility tree. Check if we hit +- // it here and return an interface for the scene instead. +- return QAccessible::queryAccessibleInterface(window); ++ // Jump out to the window if the parent is the root item ++ return QAccessible::queryAccessibleInterface(window()); + } else { + while (parent && !parent->d_func()->isAccessible) + parent = parent->parentItem(); +@@ -193,7 +202,7 @@ QAccessible::State QAccessibleQuickItem::state() const + QRect viewRect_ = viewRect(); + QRect itemRect = rect(); + +- if (viewRect_.isNull() || itemRect.isNull() || !item()->window() || !item()->window()->isVisible() ||!item()->isVisible() || qFuzzyIsNull(item()->opacity())) ++ if (viewRect_.isNull() || itemRect.isNull() || !window() || !window()->isVisible() ||!item()->isVisible() || qFuzzyIsNull(item()->opacity())) + state.invisible = true; + if (!viewRect_.intersects(itemRect)) + state.offscreen = true; +diff --git a/src/quick/accessible/qaccessiblequickview_p.h b/src/quick/accessible/qaccessiblequickview_p.h +index 39ffcaf39c..8baa01330c 100644 +--- a/src/quick/accessible/qaccessiblequickview_p.h ++++ b/src/quick/accessible/qaccessiblequickview_p.h +@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE + + #if QT_CONFIG(accessibility) + +-class QAccessibleQuickWindow : public QAccessibleObject ++class Q_QUICK_EXPORT QAccessibleQuickWindow : public QAccessibleObject + { + public: + QAccessibleQuickWindow(QQuickWindow *object); +diff --git a/src/quickwidgets/qaccessiblequickwidget.cpp b/src/quickwidgets/qaccessiblequickwidget.cpp +new file mode 100644 +index 0000000000..6f04d6693f +--- /dev/null ++++ b/src/quickwidgets/qaccessiblequickwidget.cpp +@@ -0,0 +1,110 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2021 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtQuick module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qaccessiblequickwidget.h" ++ ++#include "qquickwidget_p.h" ++ ++QT_BEGIN_NAMESPACE ++ ++#if QT_CONFIG(accessibility) ++ ++QAccessibleQuickWidget::QAccessibleQuickWidget(QQuickWidget* widget) ++: QAccessibleWidget(widget) ++, m_accessibleWindow(QQuickWidgetPrivate::get(widget)->offscreenWindow) ++{ ++ // NOTE: m_accessibleWindow is a QAccessibleQuickWindow, and not a ++ // QAccessibleQuickWidgetOffscreenWindow (defined below). This means ++ // it will return the Quick item child interfaces, which is what's needed here ++ // (unlike QAccessibleQuickWidgetOffscreenWindow, which will report 0 children). ++} ++ ++QAccessibleInterface *QAccessibleQuickWidget::child(int index) const ++{ ++ return m_accessibleWindow.child(index); ++} ++ ++int QAccessibleQuickWidget::childCount() const ++{ ++ return m_accessibleWindow.childCount(); ++} ++ ++int QAccessibleQuickWidget::indexOfChild(const QAccessibleInterface *iface) const ++{ ++ return m_accessibleWindow.indexOfChild(iface); ++} ++ ++QAccessibleInterface *QAccessibleQuickWidget::childAt(int x, int y) const ++{ ++ return m_accessibleWindow.childAt(x, y); ++} ++ ++QAccessibleQuickWidgetOffscreenWindow::QAccessibleQuickWidgetOffscreenWindow(QQuickWindow *window) ++:QAccessibleQuickWindow(window) ++{ ++ ++} ++ ++QAccessibleInterface *QAccessibleQuickWidgetOffscreenWindow::child(int index) const ++{ ++ Q_UNUSED(index); ++ return nullptr; ++} ++ ++int QAccessibleQuickWidgetOffscreenWindow::childCount() const ++{ ++ return 0; ++} ++ ++int QAccessibleQuickWidgetOffscreenWindow::indexOfChild(const QAccessibleInterface *iface) const ++{ ++ Q_UNUSED(iface); ++ return -1; ++} ++ ++QAccessibleInterface *QAccessibleQuickWidgetOffscreenWindow::QAccessibleQuickWidgetOffscreenWindow::childAt(int x, int y) const ++{ ++ Q_UNUSED(x); ++ Q_UNUSED(y); ++ return nullptr; ++} ++ ++#endif // accessibility ++ ++QT_END_NAMESPACE +diff --git a/src/quickwidgets/qaccessiblequickwidget.h b/src/quickwidgets/qaccessiblequickwidget.h +new file mode 100644 +index 0000000000..1f52c78c46 +--- /dev/null ++++ b/src/quickwidgets/qaccessiblequickwidget.h +@@ -0,0 +1,84 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2021 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtQuick module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QACCESSIBLEQUICKWIDGET_H ++#define QACCESSIBLEQUICKWIDGET_H ++ ++#include "qquickwidget.h" ++#include <QtWidgets/qaccessiblewidget.h> ++ ++#include <private/qaccessiblequickview_p.h> ++ ++QT_BEGIN_NAMESPACE ++ ++#if QT_CONFIG(accessibility) ++ ++// These classes implement the QQuickWiget accessibility switcharoo, ++// where the child items of the QQuickWidgetOffscreenWindow are reported ++// as child accessible interfaces of the QAccessibleQuickWidget. ++class QAccessibleQuickWidget: public QAccessibleWidget ++{ ++public: ++ QAccessibleQuickWidget(QQuickWidget* widget); ++ ++ QAccessibleInterface *child(int index) const override; ++ int childCount() const override; ++ int indexOfChild(const QAccessibleInterface *iface) const override; ++ QAccessibleInterface *childAt(int x, int y) const override; ++ ++private: ++ QAccessibleQuickWindow m_accessibleWindow; ++ Q_DISABLE_COPY(QAccessibleQuickWidget) ++}; ++ ++class QAccessibleQuickWidgetOffscreenWindow: public QAccessibleQuickWindow ++{ ++public: ++ QAccessibleQuickWidgetOffscreenWindow(QQuickWindow *window); ++ QAccessibleInterface *child(int index) const override; ++ int childCount() const override; ++ int indexOfChild(const QAccessibleInterface *iface) const override; ++ QAccessibleInterface *childAt(int x, int y) const override; ++}; ++ ++#endif // accessibility ++ ++QT_END_NAMESPACE ++ ++#endif +diff --git a/src/quickwidgets/qaccessiblequickwidgetfactory.cpp b/src/quickwidgets/qaccessiblequickwidgetfactory.cpp +new file mode 100644 +index 0000000000..3756d0c27c +--- /dev/null ++++ b/src/quickwidgets/qaccessiblequickwidgetfactory.cpp +@@ -0,0 +1,60 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2021 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtQuick module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "qaccessiblequickwidgetfactory_p.h" ++#include "qaccessiblequickwidget.h" ++ ++QT_BEGIN_NAMESPACE ++ ++#if QT_CONFIG(accessibility) ++ ++QAccessibleInterface *qAccessibleQuickWidgetFactory(const QString &classname, QObject *object) ++{ ++ if (classname == QLatin1String("QQuickWidget")) { ++ return new QAccessibleQuickWidget(qobject_cast<QQuickWidget *>(object)); ++ } else if (classname == QLatin1String("QQuickWidgetOffscreenWindow")) { ++ return new QAccessibleQuickWidgetOffscreenWindow(qobject_cast<QQuickWindow *>(object)); ++ } ++ return 0; ++} ++ ++#endif // accessibility ++ ++QT_END_NAMESPACE ++ +diff --git a/src/quickwidgets/qaccessiblequickwidgetfactory_p.h b/src/quickwidgets/qaccessiblequickwidgetfactory_p.h +new file mode 100644 +index 0000000000..8c63b09f81 +--- /dev/null ++++ b/src/quickwidgets/qaccessiblequickwidgetfactory_p.h +@@ -0,0 +1,66 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2021 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the QtQuick module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include <QtGui/qaccessible.h> ++ ++#ifndef QACCESSIBLEQUICKWIDGETFACTORY_H ++#define QACCESSIBLEQUICKWIDGETFACTORY_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++QT_BEGIN_NAMESPACE ++ ++#if QT_CONFIG(accessibility) ++ ++QAccessibleInterface *qAccessibleQuickWidgetFactory(const QString &classname, QObject *object); ++ ++#endif ++ ++QT_END_NAMESPACE ++ ++#endif +diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp +index c791f209cf..b0117683f7 100644 +--- a/src/quickwidgets/qquickwidget.cpp ++++ b/src/quickwidgets/qquickwidget.cpp +@@ -39,6 +39,7 @@ + + #include "qquickwidget.h" + #include "qquickwidget_p.h" ++#include "qaccessiblequickwidgetfactory_p.h" + + #include "private/qquickwindow_p.h" + #include "private/qquickitem_p.h" +@@ -75,9 +76,16 @@ + + QT_BEGIN_NAMESPACE + ++QQuickWidgetOffscreenWindow::QQuickWidgetOffscreenWindow(QQuickWindowPrivate &dd, QQuickRenderControl *control) ++:QQuickWindow(dd, control) ++{ ++ setTitle(QString::fromLatin1("Offscreen")); ++ setObjectName(QString::fromLatin1("QQuickOffScreenWindow")); ++} ++ + // override setVisble to prevent accidental offscreen window being created + // by base class. +-class QQuickOffcreenWindowPrivate: public QQuickWindowPrivate { ++class QQuickWidgetOffscreenWindowPrivate: public QQuickWindowPrivate { + public: + void setVisible(bool visible) override { + Q_Q(QWindow); +@@ -105,10 +113,8 @@ void QQuickWidgetPrivate::init(QQmlEngine* e) + Q_Q(QQuickWidget); + + renderControl = new QQuickWidgetRenderControl(q); +- offscreenWindow = new QQuickWindow(*new QQuickOffcreenWindowPrivate(),renderControl); ++ offscreenWindow = new QQuickWidgetOffscreenWindow(*new QQuickWidgetOffscreenWindowPrivate(), renderControl); + offscreenWindow->setScreen(q->screen()); +- offscreenWindow->setTitle(QString::fromLatin1("Offscreen")); +- offscreenWindow->setObjectName(QString::fromLatin1("QQuickOffScreenWindow")); + // Do not call create() on offscreenWindow. + + // Check if the Software Adaptation is being used +@@ -139,6 +145,10 @@ void QQuickWidgetPrivate::init(QQmlEngine* e) + QWidget::connect(offscreenWindow, &QQuickWindow::focusObjectChanged, q, &QQuickWidget::propagateFocusObjectChanged); + QObject::connect(renderControl, SIGNAL(renderRequested()), q, SLOT(triggerUpdate())); + QObject::connect(renderControl, SIGNAL(sceneChanged()), q, SLOT(triggerUpdate())); ++ ++#if QT_CONFIG(accessibility) ++ QAccessible::installFactory(&qAccessibleQuickWidgetFactory); ++#endif + } + + void QQuickWidgetPrivate::ensureEngine() const +diff --git a/src/quickwidgets/qquickwidget_p.h b/src/quickwidgets/qquickwidget_p.h +index 881f7f9220..1a946bcc71 100644 +--- a/src/quickwidgets/qquickwidget_p.h ++++ b/src/quickwidgets/qquickwidget_p.h +@@ -148,6 +148,14 @@ public: + bool forceFullUpdate; + }; + ++class QQuickWidgetOffscreenWindow: public QQuickWindow ++{ ++ Q_OBJECT ++ ++public: ++ QQuickWidgetOffscreenWindow(QQuickWindowPrivate &dd, QQuickRenderControl *control); ++}; ++ + QT_END_NAMESPACE + + #endif // QQuickWidget_P_H +diff --git a/src/quickwidgets/quickwidgets.pro b/src/quickwidgets/quickwidgets.pro +index 2438e577ae..f46deb54ac 100644 +--- a/src/quickwidgets/quickwidgets.pro ++++ b/src/quickwidgets/quickwidgets.pro +@@ -7,9 +7,13 @@ DEFINES += QT_NO_URL_CAST_FROM_STRING QT_NO_INTEGER_EVENT_COORDINATES QT_NO_FO + HEADERS += \ + qquickwidget.h \ + qquickwidget_p.h \ +- qtquickwidgetsglobal.h ++ qtquickwidgetsglobal.h \ ++ qaccessiblequickwidget.h \ ++ qaccessiblequickwidgetfactory_p.h + + SOURCES += \ +- qquickwidget.cpp ++ qquickwidget.cpp \ ++ qaccessiblequickwidget.cpp \ ++ qaccessiblequickwidgetfactory.cpp + + load(qt_module) +-- +2.49.0 + +From 646152bc85f1586a2e958d5279a90213e4a7d658 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Sat, 5 Nov 2022 01:44:30 +0800 +Subject: [PATCH 09/21] Send ObjectShow event for visible components after + initialized +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently ObjectShow event is only sent when the visible property +changes from false to true, but for items with the notification +accessible role, a screen reader like Orca needs to receive an +ObjectShow event to read the notification, so also send the event after +a component is initialized. + +See also: https://gitlab.gnome.org/GNOME/orca/-/merge_requests/134 + +Pick-to: 6.4 +Change-Id: I626594b65ffe4d0582dcee9f489df0c2c63e53b7 +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit 9a4f2d23ecec2c7ff19f83cff28df6b97e3fda98) --- - src/quick/items/qquickitem.cpp | 7 ++++++- - .../data/activeFocusOnTab_infiniteLoop3.qml | 13 +++++++++++++ - tests/auto/quick/qquickitem2/tst_qquickitem.cpp | 12 ++++++++++++ - 3 files changed, 31 insertions(+), 1 deletion(-) - create mode 100644 tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml + src/quick/items/qquickitem.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp -index 497672b497..81b0db0b69 100644 +index c655b4c327..1e9d3a5cb7 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp -@@ -59,6 +59,7 @@ - #include <QtCore/private/qnumeric_p.h> - #include <QtGui/qpa/qplatformtheme.h> - #include <QtCore/qloggingcategory.h> -+#include <QtCore/private/qduplicatetracker_p.h> - - #include <private/qqmlglobal_p.h> - #include <private/qqmlengine_p.h> -@@ -2520,6 +2521,7 @@ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, boo - QQuickItem *current = item; - qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: startItem:" << startItem; - qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: firstFromItem:" << firstFromItem; -+ QDuplicateTracker<QQuickItem *> cycleDetector; - do { - qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: current:" << current; - qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: from:" << from; -@@ -2586,7 +2588,10 @@ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, boo - // traversed all of the chain (by compare the [current] item with [startItem]) - // Since the [startItem] might be promoted to its parent if it is invisible, - // we still have to check [current] item with original start item -- if ((current == startItem || current == originalStartItem) && from == firstFromItem) { -+ // We might also run into a cycle before we reach firstFromItem again -+ // but note that we have to ignore current if we are meant to skip it -+ if (((current == startItem || current == originalStartItem) && from == firstFromItem) || -+ (!skip && cycleDetector.hasSeen(current))) { - // wrapped around, avoid endless loops - if (item == contentItem) { - qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: looped, return contentItem"; -diff --git a/tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml b/tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml -new file mode 100644 -index 0000000000..889e480f3b ---- /dev/null -+++ b/tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml -@@ -0,0 +1,13 @@ -+import QtQuick 2.6 +@@ -5126,6 +5126,13 @@ void QQuickItem::componentComplete() + d->addToDirtyList(); + QQuickWindowPrivate::get(d->window)->dirtyItem(this); + } + -+Item { -+ visible: true -+ Item { -+ visible: false -+ Item { -+ objectName: "hiddenChild" -+ activeFocusOnTab: true -+ focus: true -+ } ++#if QT_CONFIG(accessibility) ++ if (d->isAccessible && d->effectiveVisible) { ++ QAccessibleEvent ev(this, QAccessible::ObjectShow); ++ QAccessible::updateAccessibility(&ev); + } -+} -diff --git a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp -index f65650cf9c..eeff768bb4 100644 ---- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp -+++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp -@@ -66,6 +66,7 @@ private slots: - void activeFocusOnTab10(); - void activeFocusOnTab_infiniteLoop_data(); - void activeFocusOnTab_infiniteLoop(); -+ void activeFocusOnTab_infiniteLoopControls(); - - void nextItemInFocusChain(); - void nextItemInFocusChain2(); -@@ -1055,6 +1056,17 @@ void tst_QQuickItem::activeFocusOnTab_infiniteLoop() - QCOMPARE(item, window->rootObject()); ++#endif + } + + QQuickStateGroup *QQuickItemPrivate::_states() +-- +2.49.0 + +From fa676c3d3a33ef8fe989aa0b69b447a5ded72139 Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer <volker.hilsheimer@qt.io> +Date: Wed, 9 Nov 2022 15:34:11 +0100 +Subject: [PATCH 10/21] QQuickItem: avoid emitting signals during destruction + +If a QQuickItem is in the QQuickItem destructor, then it is both unsafe +and unnecessary to emit property change notifications. Connected code +can no longer rely on the state of the emitting object - if it was +originally a subclass of QQuickItem, then those subclass destructors +will already have run. And the QQuickItem destructor will also have +partially run, leaving the object in an undefined state. + +Add a flag that we set to true at the top of ~QQuickItem, and don't emit +visibleChildrenChanged, parentChanged, visibleChanged, and +childrenChanged for items that are partially destroyed already. + +[ChangeLog][Qt Quick][QQuickItem] QQuickItem no longer emits change +notifications for the parent, children, visible, and visibleChildren +properties while it is being destroyed. + +Task-number: QTBUG-107850 +Change-Id: I36ea98842c89ad89fcc1c4a328d138f66f2a0446 +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> +(cherry picked from commit 74873324bdf3399753f9fcaf7461c0e00df628b1) +--- + src/quick/items/qquickitem.cpp | 21 +++++++++++++-------- + src/quick/items/qquickitem_p.h | 1 + + 2 files changed, 14 insertions(+), 8 deletions(-) + +diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp +index 1e9d3a5cb7..2627494bdd 100644 +--- a/src/quick/items/qquickitem.cpp ++++ b/src/quick/items/qquickitem.cpp +@@ -2328,6 +2328,7 @@ QQuickItem::QQuickItem(QQuickItemPrivate &dd, QQuickItem *parent) + QQuickItem::~QQuickItem() + { + Q_D(QQuickItem); ++ d->inDestructor = true; + + if (d->windowRefCount > 1) + d->windowRefCount = 1; // Make sure window is set to null in next call to derefWindow(). +@@ -2695,9 +2696,8 @@ void QQuickItem::setParentItem(QQuickItem *parentItem) + + const bool wasVisible = isVisible(); + op->removeChild(this); +- if (wasVisible) { ++ if (wasVisible && !op->inDestructor) + emit oldParentItem->visibleChildrenChanged(); +- } + } else if (d->window) { + QQuickWindowPrivate::get(d->window)->parentlessItems.remove(this); + } +@@ -2774,8 +2774,9 @@ void QQuickItem::setParentItem(QQuickItem *parentItem) + + d->itemChange(ItemParentHasChanged, d->parentItem); + +- emit parentChanged(d->parentItem); +- if (isVisible() && d->parentItem) ++ if (!d->inDestructor) ++ emit parentChanged(d->parentItem); ++ if (isVisible() && d->parentItem && !QQuickItemPrivate::get(d->parentItem)->inDestructor) + emit d->parentItem->visibleChildrenChanged(); + } + +@@ -2971,7 +2972,8 @@ void QQuickItemPrivate::removeChild(QQuickItem *child) + + itemChange(QQuickItem::ItemChildRemovedChange, child); + +- emit q->childrenChanged(); ++ if (!inDestructor) ++ emit q->childrenChanged(); + } + + void QQuickItemPrivate::refWindow(QQuickWindow *c) +@@ -3200,6 +3202,7 @@ QQuickItemPrivate::QQuickItemPrivate() + , touchEnabled(false) + #endif + , hasCursorHandler(false) ++ , inDestructor(false) + , dirtyAttributes(0) + , nextDirtyItem(nullptr) + , prevDirtyItem(nullptr) +@@ -6119,9 +6122,11 @@ bool QQuickItemPrivate::setEffectiveVisibleRecur(bool newEffectiveVisible) + QAccessible::updateAccessibility(&ev); + } + #endif +- emit q->visibleChanged(); +- if (childVisibilityChanged) +- emit q->visibleChildrenChanged(); ++ if (!inDestructor) { ++ emit q->visibleChanged(); ++ if (childVisibilityChanged) ++ emit q->visibleChildrenChanged(); ++ } + + return true; // effective visibility DID change + } +diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h +index d48b551064..6f329bd119 100644 +--- a/src/quick/items/qquickitem_p.h ++++ b/src/quick/items/qquickitem_p.h +@@ -472,6 +472,7 @@ public: + bool replayingPressEvent:1; + bool touchEnabled:1; + bool hasCursorHandler:1; ++ quint32 inDestructor:1; // has entered ~QQuickItem + + enum DirtyType { + TransformOrigin = 0x00000001, +-- +2.49.0 + +From 54a95a6307e0276bdd3e463108501dfb3c4826c1 Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Mon, 28 Nov 2022 14:59:33 +0100 +Subject: [PATCH 11/21] a11y: track item enabled state +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +disabled items are neither enabled nor focusable + +Change-Id: I4f286c7b85605d5ad6fa787d1f5cfcce1297d268 +Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit 20fd2902a6d7bdb4a3306005d2718ca5a8fef96d) +--- + src/quick/accessible/qaccessiblequickitem.cpp | 4 ++++ + src/quick/items/qquickitem.cpp | 9 +++++++++ + 2 files changed, 13 insertions(+) + +diff --git a/src/quick/accessible/qaccessiblequickitem.cpp b/src/quick/accessible/qaccessiblequickitem.cpp +index 4d9e307a48..99e6eff7c3 100644 +--- a/src/quick/accessible/qaccessiblequickitem.cpp ++++ b/src/quick/accessible/qaccessiblequickitem.cpp +@@ -215,6 +215,10 @@ QAccessible::State QAccessibleQuickItem::state() const + if (role() == QAccessible::EditableText) + if (auto ti = qobject_cast<QQuickTextInput *>(item())) + state.passwordEdit = ti->echoMode() != QQuickTextInput::Normal; ++ if (!item()->isEnabled()) { ++ state.focusable = false; ++ state.disabled = true; ++ } + return state; + } + +diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp +index 2627494bdd..8b139cb539 100644 +--- a/src/quick/items/qquickitem.cpp ++++ b/src/quick/items/qquickitem.cpp +@@ -6175,6 +6175,15 @@ void QQuickItemPrivate::setEffectiveEnableRecur(QQuickItem *scope, bool newEffec + } + + itemChange(QQuickItem::ItemEnabledHasChanged, effectiveEnable); ++#if QT_CONFIG(accessibility) ++ if (isAccessible) { ++ QAccessible::State changedState; ++ changedState.disabled = true; ++ changedState.focusable = true; ++ QAccessibleStateChangeEvent ev(q, changedState); ++ QAccessible::updateAccessibility(&ev); ++ } ++#endif + emit q->enabledChanged(); } +-- +2.49.0 + +From 37b588026cd2e9b6ab3d4fc374be8583432bbcc9 Mon Sep 17 00:00:00 2001 +From: Fabian Kosmale <fabian.kosmale@qt.io> +Date: Tue, 1 Jun 2021 16:40:44 +0200 +Subject: [PATCH 12/21] Make QaccessibleQuickWidget private API + +Its base class is private API, so it should be private API, too. + +Change-Id: Ic80f841fee19ed0305c60ad5f8e9349a05f09e5e +Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> +Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +(cherry picked from commit a4fa74d3e7581cb5c6bb82223ee17257f66fa41d) +--- + src/quickwidgets/qaccessiblequickwidget.cpp | 2 +- + ...ssiblequickwidget.h => qaccessiblequickwidget_p.h} | 11 +++++++++++ + src/quickwidgets/qaccessiblequickwidgetfactory.cpp | 2 +- + src/quickwidgets/quickwidgets.pro | 2 +- + 4 files changed, 14 insertions(+), 3 deletions(-) + rename src/quickwidgets/{qaccessiblequickwidget.h => qaccessiblequickwidget_p.h} (92%) + +diff --git a/src/quickwidgets/qaccessiblequickwidget.cpp b/src/quickwidgets/qaccessiblequickwidget.cpp +index 6f04d6693f..8a1c901880 100644 +--- a/src/quickwidgets/qaccessiblequickwidget.cpp ++++ b/src/quickwidgets/qaccessiblequickwidget.cpp +@@ -37,7 +37,7 @@ + ** + ****************************************************************************/ + +-#include "qaccessiblequickwidget.h" ++#include "qaccessiblequickwidget_p.h" + + #include "qquickwidget_p.h" + +diff --git a/src/quickwidgets/qaccessiblequickwidget.h b/src/quickwidgets/qaccessiblequickwidget_p.h +similarity index 92% +rename from src/quickwidgets/qaccessiblequickwidget.h +rename to src/quickwidgets/qaccessiblequickwidget_p.h +index 1f52c78c46..7c2ab930e0 100644 +--- a/src/quickwidgets/qaccessiblequickwidget.h ++++ b/src/quickwidgets/qaccessiblequickwidget_p.h +@@ -40,6 +40,17 @@ + #ifndef QACCESSIBLEQUICKWIDGET_H + #define QACCESSIBLEQUICKWIDGET_H + ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ + #include "qquickwidget.h" + #include <QtWidgets/qaccessiblewidget.h> + +diff --git a/src/quickwidgets/qaccessiblequickwidgetfactory.cpp b/src/quickwidgets/qaccessiblequickwidgetfactory.cpp +index 3756d0c27c..7ba88a1769 100644 +--- a/src/quickwidgets/qaccessiblequickwidgetfactory.cpp ++++ b/src/quickwidgets/qaccessiblequickwidgetfactory.cpp +@@ -38,7 +38,7 @@ + ****************************************************************************/ + + #include "qaccessiblequickwidgetfactory_p.h" +-#include "qaccessiblequickwidget.h" ++#include "qaccessiblequickwidget_p.h" + + QT_BEGIN_NAMESPACE + +diff --git a/src/quickwidgets/quickwidgets.pro b/src/quickwidgets/quickwidgets.pro +index f46deb54ac..85d156b8a3 100644 +--- a/src/quickwidgets/quickwidgets.pro ++++ b/src/quickwidgets/quickwidgets.pro +@@ -8,7 +8,7 @@ HEADERS += \ + qquickwidget.h \ + qquickwidget_p.h \ + qtquickwidgetsglobal.h \ +- qaccessiblequickwidget.h \ ++ qaccessiblequickwidget_p.h \ + qaccessiblequickwidgetfactory_p.h + + SOURCES += \ +-- +2.49.0 + +From b1fbbbcb6b0168946170a450ca01b09169b89e66 Mon Sep 17 00:00:00 2001 +From: Jaeyoon Jung <jaeyoon.jung@lge.com> +Date: Fri, 19 Feb 2021 08:11:57 +0900 +Subject: [PATCH 13/21] QQmlImportDatabase: Make sure the newly added import + path be first + +If it already exists in the import list, move it to the first place. +This is as per the description of QQmlEngine::addImportPath: +| The newly added path will be first in the importPathList(). + +Change-Id: I782d355c46ada2a46cff72e63326208f39028e01 +Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> +(cherry picked from commit 3e413803c698d21f398daf0450c8f501204eb167) +--- + src/qml/qml/qqmlimport.cpp | 9 ++++++--- + tests/auto/qml/qqmlimport/tst_qqmlimport.cpp | 5 +++++ + 2 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp +index e7263d1850..289f11d006 100644 +--- a/src/qml/qml/qqmlimport.cpp ++++ b/src/qml/qml/qqmlimport.cpp +@@ -2119,9 +2119,12 @@ void QQmlImportDatabase::addImportPath(const QString& path) + cPath.replace(Backslash, Slash); + } + +- if (!cPath.isEmpty() +- && !fileImportPath.contains(cPath)) +- fileImportPath.prepend(cPath); ++ if (!cPath.isEmpty()) { ++ if (fileImportPath.contains(cPath)) ++ fileImportPath.move(fileImportPath.indexOf(cPath), 0); ++ else ++ fileImportPath.prepend(cPath); ++ } + } + + /*! +diff --git a/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp b/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp +index 9c865b3f73..1f788f7a7f 100644 +--- a/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp ++++ b/tests/auto/qml/qqmlimport/tst_qqmlimport.cpp +@@ -154,6 +154,11 @@ void tst_QQmlImport::importPathOrder() + engine.addImportPath(QT_QMLTEST_DATADIR); + expectedImportPaths.prepend(QT_QMLTEST_DATADIR); + QCOMPARE(expectedImportPaths, engine.importPathList()); + -+void tst_QQuickItem::activeFocusOnTab_infiniteLoopControls() ++ // Add qml2Imports again to make it the first of the list ++ engine.addImportPath(qml2Imports); ++ expectedImportPaths.move(expectedImportPaths.indexOf(qml2Imports), 0); ++ QCOMPARE(expectedImportPaths, engine.importPathList()); + } + + Q_DECLARE_METATYPE(QQmlImports::ImportVersion) +-- +2.49.0 + +From cfae55e0beaf6636233f55940c50f82d1d5a4b96 Mon Sep 17 00:00:00 2001 +From: Ulf Hermann <ulf.hermann@qt.io> +Date: Wed, 29 Mar 2023 16:36:03 +0200 +Subject: [PATCH 14/21] Models: Avoid crashes when deleting cache items + +Pick-to: 6.5 6.2 5.15 +Fixes: QTBUG-91425 +Change-Id: I58cf9ee29922f83fc6621f771b80ed557b31f106 +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> +(cherry picked from commit 0cfdecba54e4f40468c4c9a8a6668cc1bc0eff65) + +* asturmlechner 2023-04-08: Resolve conflict with dev branch commit + c2d490a2385ea6f389340a296acaac0fa198c8b9 (qAsConst to std::as_const) +--- + .../qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp +index e128d77c52..e5daf2d28b 100644 +--- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp ++++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp +@@ -51,6 +51,7 @@ private slots: + void contextAccessedByHandler(); + void deleteRace(); + void redrawUponColumnChange(); ++ void deleteRace(); + }; + + class AbstractItemModel : public QAbstractItemModel +@@ -214,6 +215,17 @@ void tst_QQmlDelegateModel::redrawUponColumnChange() + QCOMPARE(item->property("text").toString(), "Coconut"); + } + ++void tst_QQmlDelegateModel::deleteRace() +{ -+ auto source = testFileUrl("activeFocusOnTab_infiniteLoop3.qml"); -+ QScopedPointer<QQuickView>window(new QQuickView()); -+ window->setSource(source); -+ window->show(); -+ QVERIFY(window->errors().isEmpty()); -+ QTest::keyClick(window.get(), Qt::Key_Tab); // should not hang ++ QQmlEngine engine; ++ QQmlComponent c(&engine, testFileUrl("deleteRace.qml")); ++ QVERIFY2(c.isReady(), qPrintable(c.errorString())); ++ QScopedPointer<QObject> o(c.create()); ++ QVERIFY(!o.isNull()); ++ QTRY_COMPARE(o->property("count").toInt(), 2); ++ QTRY_COMPARE(o->property("count").toInt(), 0); +} + - void tst_QQuickItem::nextItemInFocusChain() - { - if (!qt_tab_all_widgets()) + QTEST_MAIN(tst_QQmlDelegateModel) + + #include "tst_qqmldelegatemodel.moc" -- -2.36.0 +2.49.0 + +From f13592522e51087059442c254d22b582c7baa776 Mon Sep 17 00:00:00 2001 +From: Maximilian Goldstein <max.goldstein@qt.io> +Date: Wed, 9 Jun 2021 15:02:45 +0200 +Subject: [PATCH 15/21] qv4function: Fix crash due to reference being + invalidated -From 415cb49010e1f28405a6eeac16f3eb5a461330e5 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@kdab.com> -Date: Tue, 16 Jul 2019 11:23:37 +0200 -Subject: [PATCH 18/19] QSGOpenGLDistanceFieldGlyphCache: fix multiplication - result truncation +Function::updateInternalClass creates a reference to a QStringList that is appended to before being used. +This is unsafe and can leads to a segfault if the append() causes a reallocation. + +Fixes: QTBUG-94360 +Pick-to: 5.15 6.1 6.2 +Change-Id: Iac49e8d816cf440ca2b70e133c88314eb8df6b91 +Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> +Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> +(cherry picked from commit 7fa28f98824a94396106eadfc028b329985a0cfc) +--- + src/qml/jsruntime/qv4function.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -The type of the expression int * int is int, so truncation has already -happened when the result is assigned to a qint64. +diff --git a/src/qml/jsruntime/qv4function.cpp b/src/qml/jsruntime/qv4function.cpp +index cf8a53cf9f..223e64271e 100644 +--- a/src/qml/jsruntime/qv4function.cpp ++++ b/src/qml/jsruntime/qv4function.cpp +@@ -136,7 +136,7 @@ void Function::updateInternalClass(ExecutionEngine *engine, const QList<QByteArr + if (duplicate == -1) { + parameterNames.append(QString::fromUtf8(param)); + } else { +- const QString &dup = parameterNames[duplicate]; ++ const QString dup = parameterNames[duplicate]; + parameterNames.append(dup); + parameterNames[duplicate] = + QString(0xfffe) + QString::number(duplicate) + dup; +-- +2.49.0 -Fix by casting one of the multiplicants to qint64 before performing -the multiplication. This multiplication cannot overflow, because int -is 32-bit on all supported platforms. +From 0672c6e9a9b41ac26f434dbdc36967051fb601b2 Mon Sep 17 00:00:00 2001 +From: Fabian Kosmale <fabian.kosmale@qt.io> +Date: Tue, 29 Mar 2022 10:44:04 +0200 +Subject: [PATCH 16/21] Quick Animations: Fix crash -The addition of 'size' to the pointer will still truncate the result, -on 32bit platforms, but that check is in itself UB. A follow-up commit -will fix the check, and with it the last truncation to 32bit. +SwipeDelegate causes the running animation job to be deleted when +calling swipe.close in swipe.completed. Employ the RETURN_IF_DELETED +check in more places to avoid crashes. -Coverity-Id: 218769 +Fixes: QTBUG-100560 +Task-number: QTBUG-103223 Pick-to: 6.3 6.2 5.15 -Change-Id: I0d71950695b9743db8c96d825e68bb1e9c47de02 -Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit cacfc1dbb9719c0ef55cff69dad0921ce1405438) +Change-Id: I276eeaa9aed1bdb36449b322a24641fa02c4d5e4 +Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> +(cherry picked from commit 0238af0bd48b831d72126f2228d5913eccf67bae) + +* asturmlechner 2023-04-09: Resolve conflict with dev branch commit + 4938984f9a779192264757a06e6ca555fc8f5e91 --- - src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp | 2 +- + .../swipedelegate/CloseOnCompletedWorks.qml | 74 +++++++++++++++++++ + 1 file changed, 74 insertions(+) + create mode 100644 tests/manual/quickcontrols2/swipedelegate/CloseOnCompletedWorks.qml + +diff --git a/tests/manual/quickcontrols2/swipedelegate/CloseOnCompletedWorks.qml b/tests/manual/quickcontrols2/swipedelegate/CloseOnCompletedWorks.qml +new file mode 100644 +index 0000000000..38dfde41c3 +--- /dev/null ++++ b/tests/manual/quickcontrols2/swipedelegate/CloseOnCompletedWorks.qml +@@ -0,0 +1,74 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2022 The Qt Company Ltd. ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the test suite of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:BSD$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** BSD License Usage ++** Alternatively, you may use this file under the terms of the BSD license ++** as follows: ++** ++** "Redistribution and use in source and binary forms, with or without ++** modification, are permitted provided that the following conditions are ++** met: ++** * Redistributions of source code must retain the above copyright ++** notice, this list of conditions and the following disclaimer. ++** * Redistributions in binary form must reproduce the above copyright ++** notice, this list of conditions and the following disclaimer in ++** the documentation and/or other materials provided with the ++** distribution. ++** * Neither the name of The Qt Company Ltd nor the names of its ++** contributors may be used to endorse or promote products derived ++** from this software without specific prior written permission. ++** ++** ++** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++import QtQuick 2 ++import QtQuick.Controls 2 ++ApplicationWindow { ++ visible: true ++ width: 640 ++ height: 480 ++ ++ ListView { ++ anchors.fill: parent ++ model: 2 ++ ++ delegate: SwipeDelegate { ++ text: "Swipe me left (should not crash)" ++ ++ swipe.right: Label { ++ text: "Release (should not crash)" ++ } ++ ++ swipe.onCompleted: { ++ swipe.close() ++ } ++ } ++ } ++} +-- +2.49.0 + +From 3329a68014f64332636ac96e2c352e99d2caaadd Mon Sep 17 00:00:00 2001 +From: Joni Poikelin <joni.poikelin@qt.io> +Date: Thu, 3 Sep 2020 14:22:26 +0300 +Subject: [PATCH 17/21] Prevent crash when destroying asynchronous Loader + +Fixes: QTBUG-86255 +Pick-to: 5.15 +Change-Id: I30488b64d910a1409a43e2e98ee7ab084aec33d2 +Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> +(cherry picked from commit 149c1dd07b54ee0c027d94a49d52160dc4f4e2ac) + +* asturmlechner 2023-01-06: Resolve conflict with dev branch commits + d51c007ecc8aa6256cb95cf3992e5ac34a70fa3f and + b2a4a61e8cb0839ba293783ac03c72f35c7b1307 +--- + src/qml/qml/qqmlvmemetaobject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp -index 53b6fe117f..f7cb8bede3 100644 ---- a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp -+++ b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp -@@ -512,7 +512,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font) - - int width = texInfo->allocatedArea.width(); - int height = texInfo->allocatedArea.height(); -- qint64 size = width * height; -+ qint64 size = qint64(width) * height; - if (reinterpret_cast<const char *>(textureData + size) > qtdfTableEnd) { - qWarning("qtdf table too small in font '%s'.", - qPrintable(font.familyName())); +diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp +index 4fd2092fd3..0d59d197dc 100644 +--- a/src/qml/qml/qqmlvmemetaobject.cpp ++++ b/src/qml/qml/qqmlvmemetaobject.cpp +@@ -254,7 +254,7 @@ void QQmlVMEMetaObjectEndpoint::tryConnect() + if (!pd) + return; + +- if (pd->notifyIndex() != -1) ++ if (pd->notifyIndex() != -1 && ctxt->engine) + connect(target, pd->notifyIndex(), ctxt->engine); + } + -- -2.36.0 +2.49.0 + +From abdead2f5daef5aabe72882cb8005495dd93855b Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer <volker.hilsheimer@qt.io> +Date: Fri, 18 Nov 2022 14:20:20 +0100 +Subject: [PATCH 18/21] QQuickItem: Fix effective visibility for items without + parent + +Items are visible if they are children of a visible parent, and not +explicitly hidden. The effectiveVisible member stores the state and is +updated when conditions that impact the item visibility changes. + +The old code returned true for items outside a visual hierarchy, which +broke signal emission when items were removed from a parent, e.g. +because the parent got destroyed. With this change, items removed from +a visual hierarchy will emit the visibleChanged signal. + +Note: QQuickItem initializes the effectiveVisible member to true, even +if the item was created without parent item. Visual items are required +to be added to a visual hierarchy via setParentItem. For this reason, +newly created items never emit visibleChanged when they are added to +a parent. + +Adjust the QQuickItem::visible test - it creates an item hierarchy +without window. Such items are never visible, so add a window and +parent the test item hierarchy to the window's content item. + +This fixes the expected failures in the tests. It does introduce an +incompatibility with QGraphicsView and QGraphicsItem, which continue +to return true from QGraphicsItem::isVisible for items that are not +in an item hierarchy. + +[ChangeLog][Qt Quick][QQuickItem] The visible property of Items without +a parent now always returns false, and the visibleChanged signal gets +emitted when the parent item of a visible item becomes null. + +Fixes: QTBUG-108213 +Change-Id: If4b2947cefd1407853f0f29e6c3fdbd49fc9af65 +Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +(cherry picked from commit d1b9a4cacfb966cf0a37983d8f8044f3aedf5de3) -From 2454c808bfe99b50084aea59adb917e805c27afa Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@kdab.com> -Date: Tue, 16 Jul 2019 11:31:01 +0200 -Subject: [PATCH 19/19] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of - pointers not from the same array) +CCBUG: 467909 +CCBUG: 396359 +--- + src/quick/items/qquickitem.cpp | 6 ++---- + tests/auto/quick/qquickitem/tst_qquickitem.cpp | 2 ++ + 2 files changed, 4 insertions(+), 4 deletions(-) -The code performed out of bounds checks by adding the size of the -buffer to a pointer and comparing the result to the the -one-past-the-end pointer of the buffer. +diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp +index 8b139cb539..a5e91b2b61 100644 +--- a/src/quick/items/qquickitem.cpp ++++ b/src/quick/items/qquickitem.cpp +@@ -6082,10 +6082,8 @@ void QQuickItem::setEnabled(bool e) + + bool QQuickItemPrivate::calcEffectiveVisible() const + { +- // XXX todo - Should the effective visible of an element with no parent just be the current +- // effective visible? This would prevent pointless re-processing in the case of an element +- // moving to/from a no-parent situation, but it is different from what graphics view does. +- return explicitVisible && (!parentItem || QQuickItemPrivate::get(parentItem)->effectiveVisible); ++ // An item is visible if it is a child of a visible parent, and not explicitly hidden. ++ return explicitVisible && parentItem && QQuickItemPrivate::get(parentItem)->effectiveVisible; + } + + bool QQuickItemPrivate::setEffectiveVisibleRecur(bool newEffectiveVisible) +diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp +index 42348d8dd1..34eefd85e6 100644 +--- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp ++++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp +@@ -989,7 +989,9 @@ void tst_qquickitem::setParentItem() + + void tst_qquickitem::visible() + { ++ QQuickWindow window; + QQuickItem *root = new QQuickItem; ++ root->setParentItem(window.contentItem()); + + QQuickItem *child1 = new QQuickItem; + child1->setParentItem(root); +-- +2.49.0 -This is UB, for three reasons: +From 584e70bc485eb3aff7fe845c441efce24e410820 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Fri, 21 Apr 2023 23:38:04 +0800 +Subject: [PATCH 19/21] Revert "QQuickItem: Fix effective visibility for items + without parent" -- in one case, a qint64 is added to a pointer, silently truncating the - result on 32bit platforms +This breaks applications that use QQmlPropertyList to store QQuickItem +and don't set a parentItem for them. -- if the buffer overflow is large, the pointer value may wrap around, - yielding a result that is numerically less than the end pointer, but - still out-of-bounds. +Ref: https://github.com/musescore/MuseScore/issues/17276 -- pointer order is only defined within a C array, plus one past the - end. On failure, pointers outside that range are compared. +This reverts commit 45c22a0221937682f4496801a495458a00f76d3a. +--- + src/quick/items/qquickitem.cpp | 6 ++++-- + tests/auto/quick/qquickitem/tst_qquickitem.cpp | 2 -- + 2 files changed, 4 insertions(+), 4 deletions(-) -Fix by comparing distance(it, end) with the required size for the -chunk to be written instead. +diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp +index a5e91b2b61..8b139cb539 100644 +--- a/src/quick/items/qquickitem.cpp ++++ b/src/quick/items/qquickitem.cpp +@@ -6082,8 +6082,10 @@ void QQuickItem::setEnabled(bool e) + + bool QQuickItemPrivate::calcEffectiveVisible() const + { +- // An item is visible if it is a child of a visible parent, and not explicitly hidden. +- return explicitVisible && parentItem && QQuickItemPrivate::get(parentItem)->effectiveVisible; ++ // XXX todo - Should the effective visible of an element with no parent just be the current ++ // effective visible? This would prevent pointless re-processing in the case of an element ++ // moving to/from a no-parent situation, but it is different from what graphics view does. ++ return explicitVisible && (!parentItem || QQuickItemPrivate::get(parentItem)->effectiveVisible); + } + + bool QQuickItemPrivate::setEffectiveVisibleRecur(bool newEffectiveVisible) +diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp +index 34eefd85e6..42348d8dd1 100644 +--- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp ++++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp +@@ -989,9 +989,7 @@ void tst_qquickitem::setParentItem() + + void tst_qquickitem::visible() + { +- QQuickWindow window; + QQuickItem *root = new QQuickItem; +- root->setParentItem(window.contentItem()); + + QQuickItem *child1 = new QQuickItem; + child1->setParentItem(root); +-- +2.49.0 -Pick-to: 6.3 6.2 5.15 -Change-Id: I356bb8c8a65a93b8b1c1eb7bac381dd64bea719e +From ca6a197c9589c2c9a90f7a02fd7644c9b2f3eb00 Mon Sep 17 00:00:00 2001 +From: Ulf Hermann <ulf.hermann@qt.io> +Date: Wed, 8 Feb 2023 12:14:21 +0100 +Subject: [PATCH 20/21] QML: Fortify qmlExecuteDeferred some more + +I don't know how to trigger this, but a recent crash report from the CI +shows that we can get there without a valid engine. + +Pick-to: 6.5 +Change-Id: I9f17894da82b8e7eab88181c96dfa8eaf7795523 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> -Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> -(cherry picked from commit 8d9bd6b381bfc759d575954801b683354ad6a790) +(cherry picked from commit f69b6f0940b178b46ecbaa5f0b4956ac44e8379e) --- - src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp -index f7cb8bede3..219cdd5966 100644 ---- a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp -+++ b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp -@@ -446,7 +446,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font) - - const char *textureRecord = allocatorData; - for (int i = 0; i < textureCount; ++i, textureRecord += Qtdf::TextureRecordSize) { -- if (textureRecord + Qtdf::TextureRecordSize > qtdfTableEnd) { -+ if (qtdfTableEnd - textureRecord < Qtdf::TextureRecordSize) { - qWarning("qtdf table too small in font '%s'.", - qPrintable(font.familyName())); - return false; -@@ -462,7 +462,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font) - - const char *glyphRecord = textureRecord; - for (quint32 i = 0; i < glyphCount; ++i, glyphRecord += Qtdf::GlyphRecordSize) { -- if (glyphRecord + Qtdf::GlyphRecordSize > qtdfTableEnd) { -+ if (qtdfTableEnd - glyphRecord < Qtdf:: GlyphRecordSize) { - qWarning("qtdf table too small in font '%s'.", - qPrintable(font.familyName())); - return false; -@@ -513,7 +513,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font) - int width = texInfo->allocatedArea.width(); - int height = texInfo->allocatedArea.height(); - qint64 size = qint64(width) * height; -- if (reinterpret_cast<const char *>(textureData + size) > qtdfTableEnd) { -+ if (qtdfTableEnd - reinterpret_cast<const char *>(textureData) < size) { - qWarning("qtdf table too small in font '%s'.", - qPrintable(font.familyName())); - return false; + src/qml/qml/qqmlengine.cpp | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp +index 4337a7f454..5ae937e22f 100644 +--- a/src/qml/qml/qqmlengine.cpp ++++ b/src/qml/qml/qqmlengine.cpp +@@ -1583,17 +1583,22 @@ void qmlExecuteDeferred(QObject *object) + { + QQmlData *data = QQmlData::get(object); + +- if (data && !data->deferredData.isEmpty() && !data->wasDeleted(object)) { +- QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine); ++ if (!data ++ || !data->context ++ || !data->context->engine ++ || data->deferredData.isEmpty() ++ || data->wasDeleted(object)) { ++ return; ++ } + +- QQmlComponentPrivate::DeferredState state; +- QQmlComponentPrivate::beginDeferred(ep, object, &state); ++ QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine); ++ QQmlComponentPrivate::DeferredState state; ++ QQmlComponentPrivate::beginDeferred(ep, object, &state); + +- // Release the reference for the deferral action (we still have one from construction) +- data->releaseDeferredData(); ++ // Release the reference for the deferral action (we still have one from construction) ++ data->releaseDeferredData(); + +- QQmlComponentPrivate::completeDeferred(ep, &state); +- } ++ QQmlComponentPrivate::completeDeferred(ep, &state); + } + + QQmlContext *qmlContext(const QObject *obj) +-- +2.49.0 + +From 11ea94fc8ea95d0ba95745a021a1b139283b8b36 Mon Sep 17 00:00:00 2001 +From: Ulf Hermann <ulf.hermann@qt.io> +Date: Mon, 10 Jul 2023 07:43:28 +0200 +Subject: [PATCH 21/21] QtQml: Clean up QQmlData ctor +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Initialize the "dummy" member even though we never use it. Static +analyzers complain about it and we may appreciate it having a defined +value in the future. Also, initialize other members inline where +possible. + +Coverity-Id: 415867 +Change-Id: Ie428eb3294d6363afe9d7ab2d2bed6e52df0b304 +Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> +Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> +(cherry picked from commit 10985a568db8cfb4140140967f7d247627ec4350) + +* asturmlechner 2023-08-12: Resolve conflicts with dev branch commits + 10985a568db8cfb4140140967f7d247627ec4350 and + e5246cafffb93f69a49c133210390c253fcb71f2 and + d3b3fef5a878d7fd53de6a9f9fff196a273930e3 +--- + src/qml/qml/qqmldata_p.h | 20 ++++++++++---------- + src/qml/qml/qqmlengine.cpp | 7 ++----- + 2 files changed, 12 insertions(+), 15 deletions(-) + +diff --git a/src/qml/qml/qqmldata_p.h b/src/qml/qml/qqmldata_p.h +index c44fb8608e..69dac27c9a 100644 +--- a/src/qml/qml/qqmldata_p.h ++++ b/src/qml/qml/qqmldata_p.h +@@ -185,7 +185,7 @@ public: + private: + void layout(QQmlNotifierEndpoint*); + }; +- QAtomicPointer<NotifyList> notifyList; ++ QAtomicPointer<NotifyList> notifyList = nullptr; + + inline QQmlNotifierEndpoint *notify(int index) const; + void addNotify(int index, QQmlNotifierEndpoint *); +@@ -201,12 +201,12 @@ public: + QQmlContextData *outerContext = nullptr; + QQmlContextDataRef ownContext; + +- QQmlAbstractBinding *bindings; +- QQmlBoundSignal *signalHandlers; ++ QQmlAbstractBinding *bindings = nullptr; ++ QQmlBoundSignal *signalHandlers = nullptr; + + // Linked list for QQmlContext::contextObjects +- QQmlData *nextContextObject; +- QQmlData**prevContextObject; ++ QQmlData *nextContextObject = nullptr; ++ QQmlData**prevContextObject = nullptr; + + inline bool hasBindingBit(int) const; + inline void setBindingBit(QObject *obj, int); +@@ -216,10 +216,10 @@ public: + inline void setPendingBindingBit(QObject *obj, int); + inline void clearPendingBindingBit(int); + +- quint16 lineNumber; +- quint16 columnNumber; ++ quint16 lineNumber = 0; ++ quint16 columnNumber = 0; + +- quint32 jsEngineId; // id of the engine that created the jsWrapper ++ quint32 jsEngineId = 0; // id of the engine that created the jsWrapper + + struct DeferredData { + DeferredData(); +@@ -240,7 +240,7 @@ public: + + QQmlPropertyCache *propertyCache; + +- QQmlGuardImpl *guards; ++ QQmlGuardImpl *guards = 0; + + static QQmlData *get(const QObject *object, bool create = false) { + QObjectPrivate *priv = QObjectPrivate::get(const_cast<QObject *>(object)); +@@ -289,7 +289,7 @@ public: + + private: + // For attachedProperties +- mutable QQmlDataExtended *extendedData; ++ mutable QQmlDataExtended *extendedData = nullptr; + + Q_NEVER_INLINE static QQmlData *createQQmlData(QObjectPrivate *priv); + Q_NEVER_INLINE static QQmlPropertyCache *createPropertyCache(QJSEngine *engine, QObject *object); +diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp +index 5ae937e22f..afb117d36e 100644 +--- a/src/qml/qml/qqmlengine.cpp ++++ b/src/qml/qml/qqmlengine.cpp +@@ -719,11 +719,8 @@ void QQmlPrivate::qdeclarativeelement_destructor(QObject *o) + QQmlData::QQmlData() + : ownedByQml1(false), ownMemory(true), indestructible(true), explicitIndestructibleSet(false), + hasTaintedV4Object(false), isQueuedForDeletion(false), rootObjectInCreation(false), +- hasInterceptorMetaObject(false), hasVMEMetaObject(false), parentFrozen(false), +- bindingBitsArraySize(InlineBindingArraySize), notifyList(nullptr), +- bindings(nullptr), signalHandlers(nullptr), nextContextObject(nullptr), prevContextObject(nullptr), +- lineNumber(0), columnNumber(0), jsEngineId(0), +- propertyCache(nullptr), guards(nullptr), extendedData(nullptr) ++ hasInterceptorMetaObject(false), hasVMEMetaObject(false), parentFrozen(false), dummy(0), ++ bindingBitsArraySize(InlineBindingArraySize), propertyCache(nullptr) + { + memset(bindingBitsValue, 0, sizeof(bindingBitsValue)); + init(); -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtgraphicaleffects/APKBUILD b/user/qt5-qtgraphicaleffects/APKBUILD index 023e51394..82ffe13c6 100644 --- a/user/qt5-qtgraphicaleffects/APKBUILD +++ b/user/qt5-qtgraphicaleffects/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtgraphicaleffects _pkgname=qtgraphicaleffects-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Pre-made visual effects for QML" url="https://www.qt.io/" @@ -27,4 +27,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="00cf02057dfc1624c84079e1a08a65ceb6fb7df712f05ac9cb0006de0add9241e56a8e3909eeb04d1f6a90d5032909a41d59341e002750ab99d2449f635e64e3 qtgraphicaleffects-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="0745a3c928af94978f8d3d6748f6a09ad9b8086113371ef7c2729c0a6ab403a3dbdd34b0a4c53d8665e1bf6ddd47f8fbe4d346eab34c41515b9beff707b844a9 qtgraphicaleffects-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtimageformats/APKBUILD b/user/qt5-qtimageformats/APKBUILD index b771c7708..f15f3c682 100644 --- a/user/qt5-qtimageformats/APKBUILD +++ b/user/qt5-qtimageformats/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtimageformats _pkgname=qtimageformats-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Image handling plugin for Qt" url="https://www.qt.io/" @@ -29,5 +29,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="388a9ceebdca6d32f606615af37233f2d8394856d067c9a80486b88ad5714eac90263cd6555a3efd9c1b5fdcc27431b7f99eed6fc02760b1a9974515bfe70274 qtimageformats-everywhere-opensource-src-5.15.4.tar.xz -975fa493f321382876cc5ec45041a9ecdec839811d020c2d1849eea98ed87eb2dfb207ff45fc555c05c25f618b9c42027223729494ba940a9204b4047dbfa8c7 kde-lts.patch" +sha512sums="f73224594b3c1eb5b0da93143e21b13fa899d14bf93037022ded61c8e3594d5cce452b9090c9c522e5167baa22e8df45deb7b74f73af3451738efd7460d7a9e8 qtimageformats-everywhere-opensource-src-5.15.17.tar.xz +ff64790e362dbd823115d84f9372f5a54991c1c119464adefe6985410deee8245a42db549c8c146dad2a6d5a1c6a0eb9217638c4adb93d12b008242d92b97ff6 kde-lts.patch" diff --git a/user/qt5-qtimageformats/kde-lts.patch b/user/qt5-qtimageformats/kde-lts.patch index ff05fd6bb..7eeb6737e 100644 --- a/user/qt5-qtimageformats/kde-lts.patch +++ b/user/qt5-qtimageformats/kde-lts.patch @@ -1,78 +1,144 @@ -From b43e31b9f31ec482ddea2066fda7ca9315512815 Mon Sep 17 00:00:00 2001 +From 978210714d48bcbda0fa2628f444a0a3a21a1b62 Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Fri, 13 May 2022 11:42:35 +0200 -Subject: [PATCH] Add some basic checking against corrupt input -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Date: Thu, 8 Sep 2022 14:52:19 +0200 +Subject: [PATCH 1/2] webp: support sequential input device if full file is + available -Fixes: QTBUG-103454 -Pick-to: 6.3 6.2 5.15 -Change-Id: I169b0de8465bc5d90aebfd8250db0361819065c5 -Reviewed-by: Robert Löhning <robert.loehning@qt.io> -(cherry picked from commit 34731687ee77c59607db9d88c6361111631e48c6) +Since we do no random access during decoding, just a readAll() of the +whole image file. So if it is all available already, we can handle a +sequential device. That is useful for Quick AnimationImage, which will +pass a finished QNetworkReply as the input device. + +This commit removes some seek() calls in the header checking, that +supposedly should reset the device position. These were in practice +either no-ops or bugs, since the device is only being peeked, so the +position never changes in the first place, and a QImageIOHandler is +supposed to read from the device at the position it is at when passed. + +Fixes: QTBUG-70245 +Change-Id: I5a4ff5fa4bbd19b0545ad41645969d714b4dc7d5 +Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> + + +(cherry picked from commit 369be99d82a7c1182e3693756ab545cea86bb90d) --- - src/plugins/imageformats/icns/qicnshandler.cpp | 16 +++++++++++----- - 1 file changed, 11 insertions(+), 5 deletions(-) + .../imageformats/webp/qwebphandler.cpp | 29 +++++++++---------- + 1 file changed, 14 insertions(+), 15 deletions(-) -diff --git a/src/plugins/imageformats/icns/qicnshandler.cpp b/src/plugins/imageformats/icns/qicnshandler.cpp -index dde783c..d6fc589 100644 ---- a/src/plugins/imageformats/icns/qicnshandler.cpp -+++ b/src/plugins/imageformats/icns/qicnshandler.cpp -@@ -515,6 +515,9 @@ static bool parseIconEntryInfo(ICNSEntry &icon) +diff --git a/src/plugins/imageformats/webp/qwebphandler.cpp b/src/plugins/imageformats/webp/qwebphandler.cpp +index 82d38cb..d02eb05 100644 +--- a/src/plugins/imageformats/webp/qwebphandler.cpp ++++ b/src/plugins/imageformats/webp/qwebphandler.cpp +@@ -45,6 +45,7 @@ + #include <qdebug.h> + #include <qpainter.h> + #include <qvariant.h> ++#include <QtEndian> + + static const int riffHeaderSize = 12; // RIFF_HEADER_SIZE from webp/format_constants.h + +@@ -102,21 +103,23 @@ bool QWebpHandler::ensureScanned() const + + m_scanState = ScanError; + +- if (device()->isSequential()) { +- qWarning() << "Sequential devices are not supported"; ++ QWebpHandler *that = const_cast<QWebpHandler *>(this); ++ const int headerBytesNeeded = sizeof(WebPBitstreamFeatures); ++ QByteArray header = device()->peek(headerBytesNeeded); ++ if (header.size() < headerBytesNeeded) + return false; +- } + +- qint64 oldPos = device()->pos(); +- device()->seek(0); +- +- QWebpHandler *that = const_cast<QWebpHandler *>(this); +- QByteArray header = device()->peek(sizeof(WebPBitstreamFeatures)); ++ // We do no random access during decoding, just a readAll() of the whole image file. So if ++ // if it is all available already, we can accept a sequential device. The riff header contains ++ // the file size minus 8 bytes header ++ qint64 byteSize = qFromLittleEndian<quint32>(header.constData() + 4); ++ if (device()->isSequential() && device()->bytesAvailable() < byteSize + 8) { ++ qWarning() << "QWebpHandler: Insufficient data available in sequential device"; ++ return false; ++ } + if (WebPGetFeatures((const uint8_t*)header.constData(), header.size(), &(that->m_features)) == VP8_STATUS_OK) { + if (m_features.has_animation) { + // For animation, we have to read and scan whole file to determine loop count and images count +- device()->seek(oldPos); +- + if (that->ensureDemuxer()) { + that->m_loop = WebPDemuxGetI(m_demuxer, WEBP_FF_LOOP_COUNT); + that->m_frameCount = WebPDemuxGetI(m_demuxer, WEBP_FF_FRAME_COUNT); +@@ -126,17 +129,13 @@ bool QWebpHandler::ensureScanned() const + if (that->m_features.has_alpha) + that->m_composited->fill(Qt::transparent); + +- // We do not reset device position since we have read in all data + m_scanState = ScanSuccess; +- return true; + } + } else { + m_scanState = ScanSuccess; } - icon.height = icon.width; } -+ // Sanity check -+ if (icon.width == 0 || icon.width > 4096 || icon.depth > 32) -+ return false; - return true; + +- device()->seek(oldPos); +- + return m_scanState == ScanSuccess; } -@@ -685,7 +688,7 @@ bool QICNSHandler::canRead() const - bool QICNSHandler::read(QImage *outImage) +@@ -159,7 +158,7 @@ bool QWebpHandler::ensureDemuxer() + + bool QWebpHandler::read(QImage *image) { - QImage img; -- if (!ensureScanned()) { -+ if (!ensureScanned() || m_currentIconIndex >= m_icons.size()) { - qWarning("QICNSHandler::read(): The device wasn't parsed properly!"); +- if (!ensureScanned() || device()->isSequential() || !ensureDemuxer()) ++ if (!ensureScanned() || !ensureDemuxer()) return false; - } -@@ -892,7 +895,7 @@ bool QICNSHandler::scanDevice() - return false; - const qint64 blockDataOffset = device()->pos(); -- if (!isBlockHeaderValid(blockHeader)) { -+ if (!isBlockHeaderValid(blockHeader, ICNSBlockHeaderSize + filelength - blockDataOffset)) { - qWarning("QICNSHandler::scanDevice(): Failed, bad header at pos %s. OSType \"%s\", length %u", - QByteArray::number(blockDataOffset).constData(), - nameFromOSType(blockHeader.ostype).constData(), blockHeader.length); -@@ -927,11 +930,14 @@ bool QICNSHandler::scanDevice() - case ICNSBlockHeader::TypeOdrp: - // Icns container seems to have an embedded icon variant container - // Let's start a scan for entries -- while (device()->pos() < nextBlockOffset) { -+ while (!stream.atEnd() && device()->pos() < nextBlockOffset) { - ICNSBlockHeader icon; - stream >> icon; -+ if (stream.status() != QDataStream::Ok) -+ return false; - // Check for incorrect variant entry header and stop scan -- if (!isBlockHeaderValid(icon, blockDataLength)) -+ quint64 remaining = blockDataLength - (device()->pos() - blockDataOffset); -+ if (!isBlockHeaderValid(icon, ICNSBlockHeaderSize + remaining)) - break; - if (!addEntry(icon, device()->pos(), blockHeader.ostype)) - return false; -@@ -1003,7 +1009,7 @@ bool QICNSHandler::scanDevice() - break; - } - } -- return true; -+ return (m_icons.size() > 0); - } + QRect prevFrameRect; +-- +2.49.0 + +From f86afca95741b9c06202fd13c2b8c01d922a0e24 Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer <volker.hilsheimer@qt.io> +Date: Fri, 18 Mar 2022 09:16:36 +0100 +Subject: [PATCH 2/2] Explicitly include QVarLengthArray header + +The template is instantiated, but only forward declared after recent +cleanup of transitive includes. + +Pick-to: 6.3 +Change-Id: Id43dfe4dc8aa20815ff6b5f64ab307a269ce6c67 +Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> +Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> +(cherry picked from commit 1224337fdf898e502d3b04f9eb3975947de06fe8) +--- + src/plugins/imageformats/tiff/qtiffhandler.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/imageformats/tiff/qtiffhandler.cpp b/src/plugins/imageformats/tiff/qtiffhandler.cpp +index f0dfe7f..5cb0522 100644 +--- a/src/plugins/imageformats/tiff/qtiffhandler.cpp ++++ b/src/plugins/imageformats/tiff/qtiffhandler.cpp +@@ -38,13 +38,14 @@ + ****************************************************************************/ + + #include "qtiffhandler_p.h" +-#include <qvariant.h> + #include <qcolorspace.h> + #include <qdebug.h> + #include <qimage.h> + #include <qglobal.h> + #include <qbuffer.h> + #include <qfiledevice.h> ++#include <qvariant.h> ++#include <qvarlengtharray.h> - const ICNSEntry &QICNSHandler::getIconMask(const ICNSEntry &icon) const + extern "C" { + #include "tiffio.h" -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtmultimedia/APKBUILD b/user/qt5-qtmultimedia/APKBUILD index db4dd82c7..ed13a3b79 100644 --- a/user/qt5-qtmultimedia/APKBUILD +++ b/user/qt5-qtmultimedia/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtmultimedia _pkgname=qtmultimedia-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Audio, video, radio, and camera libraries for Qt 5" url="https://www.qt.io/" @@ -28,5 +28,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="bb0ada7560093b89751b5b3c0e1a573de215a388d621d356bc3c0e1acfffc2d696230c67b7a7cef037b18c4da900c7eb3d315bd2e73ce12f9aedd0e340399117 qtmultimedia-everywhere-opensource-src-5.15.4.tar.xz -8b34b7bc7f6ecaeca3795a20986d31650a1aededb69a46e718545ea2f2a4bd65673167e41645d1b6f34e21e583f9613a1903ae8e116d0e6088de0f8a1e0256c5 kde-lts.patch" +sha512sums="75cfe80d2a4555769557742a0609be96b7c064aa8f2e28efb4dcf88a121dcd95080a1077f300dd20777519db2b75247f7021d4f5b7cd5a98a78919b35509fc49 qtmultimedia-everywhere-opensource-src-5.15.17.tar.xz +8e7a9988fa08172024455b2efab2aa9fb37287aebd03728644a311574d7183eb05e92cbb98cd0bf62207fe9e5687648437dac4f220ee38f481747123d4c3304e kde-lts.patch" diff --git a/user/qt5-qtmultimedia/kde-lts.patch b/user/qt5-qtmultimedia/kde-lts.patch index 510e88d18..f939c1a85 100644 --- a/user/qt5-qtmultimedia/kde-lts.patch +++ b/user/qt5-qtmultimedia/kde-lts.patch @@ -1,64 +1,64 @@ -From c75ef0bb53562a62d67fb3247c9fc138356368b4 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Thu, 19 May 2022 12:02:04 +0200 -Subject: [PATCH] QPulseAudioSource: fix UB (memcpy() called with nullptr dest) - in read() +From 39233709c321a572ec071c97e417347ea67824f7 Mon Sep 17 00:00:00 2001 +From: Joshua Goins <josh@redstrate.com> +Date: Sun, 22 Jan 2023 10:39:59 -0500 +Subject: [PATCH 1/2] Pass explicit GL api when initializing GStreamer backend -deviceReady() calls read(nullptr, 0), but calling memcpy() with a -nullpt destination is UB, even if the length is simulateneously zero. +Recent GStreamer versions now require an explicit API instead of +GST_GL_API_ANY, so now we pass GL or GLES depending on what is used. -Ditto applyVolume() (called from read()). +Cherrypicked from 20153c34a4a46a755f8a48502f0ad36d01de2e98 +--- + src/gsttools/qgstvideorenderersink.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/gsttools/qgstvideorenderersink.cpp b/src/gsttools/qgstvideorenderersink.cpp +index 4000f2178..a446d93fe 100644 +--- a/src/gsttools/qgstvideorenderersink.cpp ++++ b/src/gsttools/qgstvideorenderersink.cpp +@@ -368,7 +368,8 @@ static GstGLContext *gstGLDisplayContext(QAbstractVideoSurface *surface) + if (!nativeContext) + qWarning() << "Could not find resource for" << contextName; + +- GstGLContext *appContext = gst_gl_context_new_wrapped(display, (guintptr)nativeContext, glPlatform, GST_GL_API_ANY); ++ GstGLAPI glApi = QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGL ? GST_GL_API_OPENGL : GST_GL_API_GLES2; ++ GstGLContext *appContext = gst_gl_context_new_wrapped(display, (guintptr)nativeContext, glPlatform, glApi); + if (!appContext) + qWarning() << "Could not create wrappped context for platform:" << glPlatform; + +-- +2.49.0 + +From d342547886448dacf38d2933cd40322c7435ee86 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Fri, 17 Sep 2021 10:14:42 +0200 +Subject: [PATCH 2/2] Drop obsolete QtOpengl dependency -Fix by guarding the memcpy() calls. +Widgets were ported away from QtOpenGL in 5.15.0 but bogus dependency +remained (commit 30034a140ca8aefa1986c9964ae1f30dcfef886e). -Add assertions to indicate that for these functions, nullptr is valid -input iff length is zero. +See also: https://bugreports.qt.io/browse/QTBUG-81902 -Found by clangsa's core.NonNullParamChecker. +qmake backport of upstream dev branch commit a7621a6db7bdbe514be825cbc2952d50e328bab4 -Pick-to: 6.3 6.2 5.15 -Change-Id: I9006b0e933e196a7a212e0ebe2bd27f6b9552518 -Reviewed-by: Rafael Roquetto <rafael.roquetto@qt.io> -(cherry picked from commit 8df415d5bcf23462bedb4cb7601b909851ee15dd) +Thanks-to: Davide Pesavento <pesa@gentoo.org> +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> --- - src/plugins/pulseaudio/qaudioinput_pulse.cpp | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) + src/multimediawidgets/multimediawidgets.pro | 2 -- + 1 file changed, 2 deletions(-) -diff --git a/src/plugins/pulseaudio/qaudioinput_pulse.cpp b/src/plugins/pulseaudio/qaudioinput_pulse.cpp -index 2b5325132..b68b4af1b 100644 ---- a/src/plugins/pulseaudio/qaudioinput_pulse.cpp -+++ b/src/plugins/pulseaudio/qaudioinput_pulse.cpp -@@ -402,6 +402,8 @@ int QPulseAudioInput::bytesReady() const - - qint64 QPulseAudioInput::read(char *data, qint64 len) - { -+ Q_ASSERT(data != nullptr || len == 0); -+ - m_bytesAvailable = checkBytesReady(); - - setError(QAudio::NoError); -@@ -411,7 +413,8 @@ qint64 QPulseAudioInput::read(char *data, qint64 len) - - if (!m_pullMode && !m_tempBuffer.isEmpty()) { - readBytes = qMin(static_cast<int>(len), m_tempBuffer.size()); -- memcpy(data, m_tempBuffer.constData(), readBytes); -+ if (readBytes) -+ memcpy(data, m_tempBuffer.constData(), readBytes); - m_totalTimeValue += readBytes; - - if (readBytes < m_tempBuffer.size()) { -@@ -502,9 +505,10 @@ qint64 QPulseAudioInput::read(char *data, qint64 len) - - void QPulseAudioInput::applyVolume(const void *src, void *dest, int len) - { -+ Q_ASSERT((src && dest) || len == 0); - if (m_volume < 1.f) - QAudioHelperInternal::qMultiplySamples(m_volume, m_format, src, dest, len); -- else -+ else if (len) - memcpy(dest, src, len); - } +diff --git a/src/multimediawidgets/multimediawidgets.pro b/src/multimediawidgets/multimediawidgets.pro +index 1919e8107..4c30d8fbf 100644 +--- a/src/multimediawidgets/multimediawidgets.pro ++++ b/src/multimediawidgets/multimediawidgets.pro +@@ -2,8 +2,6 @@ + TARGET = QtMultimediaWidgets + QT = core gui multimedia widgets-private + QT_PRIVATE += multimedia-private +-qtHaveModule(opengl): \ +- QT_PRIVATE += opengl + PRIVATE_HEADERS += \ + qvideowidget_p.h \ -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtnetworkauth/APKBUILD b/user/qt5-qtnetworkauth/APKBUILD index daba50112..7ab080fec 100644 --- a/user/qt5-qtnetworkauth/APKBUILD +++ b/user/qt5-qtnetworkauth/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtnetworkauth _pkgname=qtnetworkauth-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Network authentication module for Qt" url="https://www.qt.io/" @@ -24,4 +24,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="a36ce21151cb98bcbc99a819e873ef10f68d988aebfbae9aaaa7dc85bd4a693ad7510c47627f0f3841c5ef50173b21cdebe6a602fa429839fd9ad9bcc02d6c3c qtnetworkauth-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="3f1442c91b36d461646a49bdc27c61253e4ad6a909a19f452e101cd3e9428a3cced4408216a5f80d6662101ba9f9f0d5a0c721adc9bd1e203f66bebc9e03ea64 qtnetworkauth-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtpositioning/APKBUILD b/user/qt5-qtpositioning/APKBUILD index e81ddef81..3b12b00e8 100644 --- a/user/qt5-qtpositioning/APKBUILD +++ b/user/qt5-qtpositioning/APKBUILD @@ -2,8 +2,8 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtpositioning _pkgname=qtlocation-everywhere -pkgver=5.15.4 -pkgrel=1 +pkgver=5.15.17 +pkgrel=0 pkgdesc="Geolocation services for Qt 5" url="https://www.qt.io/" arch="all" @@ -29,4 +29,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="6208052d6ac173d19dc77496d8108558e7f31696dc5792fcbbeef2029539db76a60c5a51a7d198f54ea6c0ec23977a57cd8c8f8fa80fe5eac9528d2510c3dbb3 qtlocation-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="8ba1f386ce45201dbd3616a328ab256553c93da3bbb99fbe20b7b93419860f3a5612261258895e58b2621b8e05c8a841f3e9cb436384091e02e6a14b72a2be31 qtlocation-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtquickcontrols/APKBUILD b/user/qt5-qtquickcontrols/APKBUILD index e2e322f38..021fe5c0e 100644 --- a/user/qt5-qtquickcontrols/APKBUILD +++ b/user/qt5-qtquickcontrols/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtquickcontrols _pkgname=qtquickcontrols-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Controls for use with Qt Quick" url="https://www.qt.io/" @@ -25,4 +25,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="887a8f5fdcd3764575f9068ec8428526a049bb09ae0c214daef3652527d5e448baa53738dccf316b20ccf18f36951ecebd570aee3a27f9c32b9213ef7629de10 qtquickcontrols-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="b4c736db1f31d8f660f87283e477430a02eb4141cfb6ce9e9523a6df8a852d6d26734c6f68e2b06c654fa9da671ad9ac5527c305022e7cd59adb3354f2c5b89b qtquickcontrols-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtquickcontrols2/APKBUILD b/user/qt5-qtquickcontrols2/APKBUILD index b7fc29ba1..05e5b518d 100644 --- a/user/qt5-qtquickcontrols2/APKBUILD +++ b/user/qt5-qtquickcontrols2/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtquickcontrols2 _pkgname=qtquickcontrols2-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Qt Quick Controls 2.0" url="https://www.qt.io/" @@ -26,5 +26,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="4ebbb0199db156307140406b6da4fa83c47aee2105e8c46c0da96313ddc4d6d7ea2f1f85691856144eb8c5109c108bb6810ba0693a2d2411b4feaeed1ec9a8f4 qtquickcontrols2-everywhere-opensource-src-5.15.4.tar.xz -ee17fad4f4afd5af4c6782da99713d781b7c67fc24d849da2cec0a2645584dc030281da10280a7055847a3718cccd75f4474d21eb0b836f2949752854ad9458e kde-lts.patch" +sha512sums="c5c0277e26ef96e7012e7e2eac6027ce0f1b18fa6149f7f431a7c6911c70959bf94f5ee45e4f25065835c7e0ee5fc3e6436e4b0bfd0099505215173c920a80db qtquickcontrols2-everywhere-opensource-src-5.15.17.tar.xz +cf068e7cfa6922e364b3d30d1bec4e35137ad5657f6cd0206d87532a93367b937d6c527155d7bbb068aca03a1dc17b876477cc2b0959aa4d24716a14ac2ad85d kde-lts.patch" diff --git a/user/qt5-qtquickcontrols2/kde-lts.patch b/user/qt5-qtquickcontrols2/kde-lts.patch index e69ee5f60..5f14b2676 100644 --- a/user/qt5-qtquickcontrols2/kde-lts.patch +++ b/user/qt5-qtquickcontrols2/kde-lts.patch @@ -1,7 +1,7 @@ -From 38b25abb3d911b264ff01bfd99c906f74a2fb6c2 Mon Sep 17 00:00:00 2001 +From f6e0992ccd7d15456d528b9ee4e54ac6794e5d63 Mon Sep 17 00:00:00 2001 From: David Redondo <qt@david-redondo.de> Date: Mon, 19 Jul 2021 10:06:17 +0200 -Subject: [PATCH 1/4] Unset mouseGrabberPopup if it's removed from children +Subject: [PATCH 1/5] Unset mouseGrabberPopup if it's removed from children The mouseGrabberPopup is supposed to be unset in handleRelease, however when the exit transition of the mouseGrabberPopup (that closed itself on @@ -30,7 +30,7 @@ Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> create mode 100644 tests/auto/qquickpopup/data/releaseAfterExitTransition.qml diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp -index b8d417f29..c8cd142ae 100644 +index 91bd59184..0ce518f84 100644 --- a/src/quicktemplates2/qquickoverlay.cpp +++ b/src/quicktemplates2/qquickoverlay.cpp @@ -399,8 +399,11 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data) @@ -131,10 +131,10 @@ index 000000000..9e4598b9f + } +} diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp -index ede3640c2..f1840946b 100644 +index 54952d128..3d50e2dd4 100644 --- a/tests/auto/qquickpopup/tst_qquickpopup.cpp +++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp -@@ -97,6 +97,7 @@ private slots: +@@ -100,6 +100,7 @@ private slots: void invisibleToolTipOpen(); void centerInOverlayWithinStackViewItem(); void destroyDuringExitTransition(); @@ -142,7 +142,7 @@ index ede3640c2..f1840946b 100644 }; void tst_QQuickPopup::initTestCase() -@@ -1459,6 +1460,34 @@ void tst_QQuickPopup::destroyDuringExitTransition() +@@ -1575,6 +1576,34 @@ void tst_QQuickPopup::destroyDuringExitTransition() QVERIFY(!button->isDown()); } @@ -178,12 +178,12 @@ index ede3640c2..f1840946b 100644 #include "tst_qquickpopup.moc" -- -2.36.0 +2.49.0 -From cb0b21e52d2562e3dc46b1e36f248308de3fb204 Mon Sep 17 00:00:00 2001 +From dec090837242230f6bec4be9a09221ae773f01d8 Mon Sep 17 00:00:00 2001 From: Aleix Pol <aleixpol@kde.org> Date: Tue, 4 Jan 2022 16:34:16 +0100 -Subject: [PATCH 2/4] Ensure we don't crash when changing sizes after cleanup +Subject: [PATCH 2/5] Ensure we don't crash when changing sizes after cleanup This addresses the problems I've seen during destruction. Only encountered it when using complex layouts on a DialogButtonBox. @@ -228,7 +228,7 @@ index f38c2b09c..6eed2a024 100644 contentHeight = implicitContentHeight; diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp -index e6db14eb5..6197d1547 100644 +index e33c5c934..9afabd18a 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -237,7 +237,7 @@ static QRectF alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment @@ -261,143 +261,160 @@ index e6db14eb5..6197d1547 100644 qreal maxHeight = 0; for (int i = 0; i < count; ++i) { -- -2.36.0 +2.49.0 -From c8fe3805d53a8c24e126bcd20bb0f708bfb10958 Mon Sep 17 00:00:00 2001 -From: Oliver Eftevaag <oliver.eftevaag@qt.io> -Date: Wed, 19 Jan 2022 22:09:56 +0100 -Subject: [PATCH 3/4] QQuickAction: don't grab the same shortcut multiple times +From bc0ca722f27658c6f95b88a92e58fc1139620cb3 Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Wed, 2 Nov 2022 12:39:11 +0100 +Subject: [PATCH 3/5] implement a11y pressing of qquickabstractbutton +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -If the entry for the QQuickItem that the QQuickAction is set on has -already grabbed the shortcut, then m_shortcutId is no longer 0 and we -must not overwrite the value. Otherwise, the QQuickItem removing itself -from the action might not remove the correct entry from Qt's shortcut -map, leaving a dangling pointer behind. +this adds a pressAction default implementation that simply calls trigger +(which in turn either triggers the action or emits a click), allowing +accessibility tools to issue a button press via a11y api. -Multiple calls to QQuickActionPrivate::ShortcutEntry::grab are possible, -because we grab the shortcut whenever the shortcut changes, or when an -item representing the action becomes visible. - -The test case added reproduces this scenario by adding the action to a -menu item and then making the menu explicitly visible, resulting in two -calls to grab() which should be idempotent. - -Fixes: QTBUG-96551 -Fixes: QTBUG-96561 -Pick-to: 6.2 -Change-Id: I7d42a4f4c04f7d8759f2d0f24a133720f10e4c47 -Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> -Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> - -(cherry picked from commit 45af5ef2f63704adc515e29260ad8c6aaf51f08e in +Change-Id: I75b4fb8680835093b1135fdbf4329aaa85dc3243 +Reviewed-by: Arjen Hiemstra <ahiemstra@heimr.nl> +Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit 705659eaaf47af72eeb5f5c742e18a5c665a76eb in qtdeclarative) --- - src/quicktemplates2/qquickaction.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/quicktemplates2/qquickabstractbutton.cpp | 6 ++++++ + src/quicktemplates2/qquickabstractbutton_p.h | 1 + + 2 files changed, 7 insertions(+) -diff --git a/src/quicktemplates2/qquickaction.cpp b/src/quicktemplates2/qquickaction.cpp -index 2041e7741..8610cdfae 100644 ---- a/src/quicktemplates2/qquickaction.cpp -+++ b/src/quicktemplates2/qquickaction.cpp -@@ -145,7 +145,7 @@ int QQuickActionPrivate::ShortcutEntry::shortcutId() const +diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp +index 20cf59c1a..43af47a94 100644 +--- a/src/quicktemplates2/qquickabstractbutton.cpp ++++ b/src/quicktemplates2/qquickabstractbutton.cpp +@@ -1201,6 +1201,12 @@ QAccessible::Role QQuickAbstractButton::accessibleRole() const + } + return QAccessible::Button; + } ++ ++void QQuickAbstractButton::accessiblePressAction() ++{ ++ Q_D(QQuickAbstractButton); ++ d->trigger(); ++} + #endif - void QQuickActionPrivate::ShortcutEntry::grab(const QKeySequence &shortcut, bool enabled) - { -- if (shortcut.isEmpty()) -+ if (shortcut.isEmpty() || m_shortcutId) - return; + QT_END_NAMESPACE +diff --git a/src/quicktemplates2/qquickabstractbutton_p.h b/src/quicktemplates2/qquickabstractbutton_p.h +index 0fa48980e..ab66220d0 100644 +--- a/src/quicktemplates2/qquickabstractbutton_p.h ++++ b/src/quicktemplates2/qquickabstractbutton_p.h +@@ -209,6 +209,7 @@ protected: + #if QT_CONFIG(accessibility) + void accessibilityActiveChanged(bool active) override; + QAccessible::Role accessibleRole() const override; ++ Q_INVOKABLE void accessiblePressAction(); + #endif - Qt::ShortcutContext context = Qt::WindowShortcut; // TODO + private: -- -2.36.0 +2.49.0 -From 0d3d39e821ea7634c174a29910c18d7101bce6f7 Mon Sep 17 00:00:00 2001 -From: Ulf Hermann <ulf.hermann@qt.io> -Date: Tue, 11 Jan 2022 12:42:47 +0100 -Subject: [PATCH 4/4] QQuickAbstractButton: fix crash on destruction +From 33c61400f55eadbef023043742c720969f419872 Mon Sep 17 00:00:00 2001 +From: Inho Lee <inho.lee@qt.io> +Date: Mon, 22 Aug 2022 21:05:00 +0800 +Subject: [PATCH 4/5] Fix the popup position of a Menu +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -If we listen for size changes we also need to remove the object listened -to when it's deleted. +QPA code should operate in native coord. +Treat QWidgetPlatformMenu::showPopup's input as native coord. -Pick-to: 5.15 6.2 6.3 -Fixes: QTBUG-99644 -Change-Id: I613855ebd986b1e67685088020b88d8b070659cf -Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> -(cherry picked from commit 720ffaeb60d43123522066e1de3a69ad551644aa in +Fixes: QTBUG-94619 +Fixes: QTBUG-94783 +Change-Id: Iaa030c96d84e4a588e625fe191e4324f70be961f +Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> +(cherry picked from commit f8cf17166c9af147f0b8fea72f5b4a8a6098a5d7 in qtdeclarative) --- - src/quicktemplates2/qquickabstractbutton.cpp | 11 +++++++++ - .../qquickabstractbutton_p_p.h | 1 + - tests/auto/controls/data/tst_switch.qml | 23 +++++++++++++++++++ - 3 files changed, 35 insertions(+) + src/imports/platform/widgets/qwidgetplatformmenu.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) -diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp -index 950e4e099..1df0c706d 100644 ---- a/src/quicktemplates2/qquickabstractbutton.cpp -+++ b/src/quicktemplates2/qquickabstractbutton.cpp -@@ -387,6 +387,17 @@ void QQuickAbstractButtonPrivate::itemImplicitHeightChanged(QQuickItem *item) - emit q->implicitIndicatorHeightChanged(); - } +diff --git a/src/imports/platform/widgets/qwidgetplatformmenu.cpp b/src/imports/platform/widgets/qwidgetplatformmenu.cpp +index e5fe734f7..e36922775 100644 +--- a/src/imports/platform/widgets/qwidgetplatformmenu.cpp ++++ b/src/imports/platform/widgets/qwidgetplatformmenu.cpp +@@ -38,6 +38,7 @@ + #include "qwidgetplatformmenuitem_p.h" -+void QQuickAbstractButtonPrivate::itemDestroyed(QQuickItem *item) -+{ -+ Q_Q(QQuickAbstractButton); -+ QQuickControlPrivate::itemDestroyed(item); -+ if (item == indicator) { -+ indicator = nullptr; -+ emit q->implicitIndicatorWidthChanged(); -+ emit q->implicitIndicatorHeightChanged(); -+ } -+} -+ - QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const - { - Q_Q(const QQuickAbstractButton); -diff --git a/src/quicktemplates2/qquickabstractbutton_p_p.h b/src/quicktemplates2/qquickabstractbutton_p_p.h -index 9291c1a87..b729720f2 100644 ---- a/src/quicktemplates2/qquickabstractbutton_p_p.h -+++ b/src/quicktemplates2/qquickabstractbutton_p_p.h -@@ -109,6 +109,7 @@ public: + #include <QtGui/qwindow.h> ++#include <QtGui/private/qhighdpiscaling_p.h> + #include <QtWidgets/qmenu.h> + #include <QtWidgets/qaction.h> - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; -+ void itemDestroyed(QQuickItem *item) override; +@@ -145,7 +146,7 @@ void QWidgetPlatformMenu::showPopup(const QWindow *window, const QRect &targetRe - // copied from qabstractbutton.cpp - static const int AUTO_REPEAT_DELAY = 300; -diff --git a/tests/auto/controls/data/tst_switch.qml b/tests/auto/controls/data/tst_switch.qml -index b3fab41ca..10b6baa02 100644 ---- a/tests/auto/controls/data/tst_switch.qml -+++ b/tests/auto/controls/data/tst_switch.qml -@@ -608,4 +608,27 @@ TestCase { - mouseClick(control.indicator) - verify(control.activeFocus) - } -+ -+ Component { -+ id: deletionOrder1 -+ Item { -+ Image { id: innerImage } -+ Switch { indicator: innerImage } -+ } -+ } -+ -+ Component { -+ id: deletionOrder2 -+ Item { -+ Switch { indicator: innerImage } -+ Image { id: innerImage } -+ } -+ } -+ -+ function test_deletionOrder() { -+ var control1 = createTemporaryObject(deletionOrder1, testCase) -+ verify(control1) -+ var control2 = createTemporaryObject(deletionOrder2, testCase) -+ verify(control2) -+ } - } + QPoint targetPos = targetRect.bottomLeft(); + if (window) +- targetPos = window->mapToGlobal(targetPos); ++ targetPos = window->mapToGlobal(QHighDpi::fromNativeLocalPosition(targetPos, window)); + + const QWidgetPlatformMenuItem *widgetItem = qobject_cast<const QWidgetPlatformMenuItem *>(item); + m_menu->popup(targetPos, widgetItem ? widgetItem->action() : nullptr); +-- +2.49.0 + +From 9bdcebd1c093b6f0886e3a739711470cc37b1adb Mon Sep 17 00:00:00 2001 +From: Volker Hilsheimer <volker.hilsheimer@qt.io> +Date: Tue, 18 Apr 2023 22:05:36 +0200 +Subject: [PATCH 5/5] Accessibility: respect value in attached Accessible in + controls +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +QQuickItemPrivate::accessibleRole is virtual and called by the framework +to determine the role of an item. The default implementation checks and +respects a possible Accessible attached object. However, subclasses that +override the virtual don't, so the attached properties are ignored, and +the class-specific implementation wins. This makes it impossible to +change the role of e.g. a checkable button. + +To fix that, move the code respecting the attached object into a non- +virtual function that the framework calls instead, and only call the +virtual member if there is no attached object, or if that object is not +initialized with a role. Replace calls to the virtual from the +framework with calls to the non-virtual wrapper. + +Do this for both QQuickItem and for QQuickPopup, and adjust the logic +in QQuickControl types that create an attached object and initialize +it's role when accessibility becomes active. Use the non-overridable +effective role value for that as well. + +Add a test case, and to avoid any new framework calls to the virtual, +make it private. + +Fixes: QTBUG-110114 +Pick-to: 6.5 6.2 +Change-Id: Ia709cecbd181b6d8ee3297a4af60c1e7db9a2c51 +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io> +(cherry picked from commit 3c08d08ae2bbd449cc0579a1b3cb499383c7a60c) +--- + src/quicktemplates2/qquickpopup.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp +index 3f8691e2c..6b1ca32b3 100644 +--- a/src/quicktemplates2/qquickpopup.cpp ++++ b/src/quicktemplates2/qquickpopup.cpp +@@ -46,6 +46,7 @@ + + #include <QtQml/qqmlinfo.h> + #include <QtQuick/qquickitem.h> ++#include <QtQuick/private/qquickaccessibleattached_p.h> + #include <QtQuick/private/qquicktransition_p.h> + #include <QtQuick/private/qquickitem_p.h> + #include <QtQuick/private/qquickaccessibleattached_p.h> -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtscript/APKBUILD b/user/qt5-qtscript/APKBUILD index da4bb96d5..846f14489 100644 --- a/user/qt5-qtscript/APKBUILD +++ b/user/qt5-qtscript/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtscript _pkgname=qtscript-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Deprecated scripting framework for Qt applications" url="https://www.qt.io/" @@ -26,4 +26,4 @@ package() { make INSTALL_ROOT="$pkgdir" install } -sha512sums="01d3b03eec23f462a7931e268eb8572d85ed560dd8b24f85b420ff8ebb1932d4c18f47c8d5fad7b7c09c147158b02b6cceb9c571b10249ba4008b363e23d7f95 qtscript-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="8acfb38df7a1d925210179423347f478780ed651b2da63e9547c1d48984b9ca759cd258da8d813307f9843d746ede4942850dcf5c26b61fcaf49e8b67dd3b427 qtscript-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtsensors/APKBUILD b/user/qt5-qtsensors/APKBUILD index b13d0604d..50aafc9ac 100644 --- a/user/qt5-qtsensors/APKBUILD +++ b/user/qt5-qtsensors/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtsensors _pkgname=qtsensors-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Library for interfacing with sensors using Qt" url="https://www.qt.io/" @@ -24,4 +24,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="b8b9ffedfdcd392bd5c1ab76db3f621d16094f444e14900726378a289c04c08a75b82628cb61f4ca66bba8c1eeba2a56d9f90d9a82adfdc90fc00ac1b579c63e qtsensors-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="9404c642e654333630a203523a6cd96050fe891c55ecc29ae8828d586889025bba881a5267425e242cac1cfbaafa0a0e4cdc1a2108ebc287522c09820f97ad71 qtsensors-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtserialport/APKBUILD b/user/qt5-qtserialport/APKBUILD index b793a8532..a3e76f26a 100644 --- a/user/qt5-qtserialport/APKBUILD +++ b/user/qt5-qtserialport/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtserialport _pkgname=qtserialport-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Connect Qt applications to serial ports" url="https://www.qt.io/" @@ -24,4 +24,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="d8bc3d0b89bb4fc05bfe27a4c76bc3732ef5f8ba889400c8116f18c2ed58db7a3b99c4bda1cd60d1e8051121d31a4b55b95d20e89578a6e523d527e6182262ba qtserialport-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="cd31c7f15dd0f43edc38a287b8630ce4e45215bf572191765ea886182b539a1f99056dd1d17f596643df944e4745c72b273f2010a6b52370c367ff5e8519823d qtserialport-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtspeech/APKBUILD b/user/qt5-qtspeech/APKBUILD index 190852ad9..d76e94cb8 100644 --- a/user/qt5-qtspeech/APKBUILD +++ b/user/qt5-qtspeech/APKBUILD @@ -2,8 +2,8 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtspeech _pkgname=qtspeech-everywhere -pkgver=5.15.4 -pkgrel=1 +pkgver=5.15.17 +pkgrel=0 pkgdesc=" Library for speech processing and Text-to-Speech (TTS) in Qt" url="https://www.qt.io/" arch="all" @@ -26,5 +26,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="6582fe36950aee8428c72582ff2eda2dae433ad969c323e0c6e8be611be7d81766ceb1cae85a10dcd4d266e33a0cf782fe857e1502d7f3863e0dfb2306af2aed qtspeech-everywhere-opensource-src-5.15.4.tar.xz -e40cf1cf3e65e5add61c45c2a73bc48927a9bd34b0e0353bf6ecb77a57978b3fe2cf73608b6ffe4c84de807f9d2c1af3bf022b4a78411313ff0c4ecd425b415d kde-lts.patch" +sha512sums="584fa104ee41b93cb7344ccdd3d0dc6cbfac6a7db623888b062479715f90205ea0aa4eea1c529eca80f7ebac955ba7e1b530eff49f30696fe180cb353ac12a60 qtspeech-everywhere-opensource-src-5.15.17.tar.xz +92b8c20b9cea0bcd90e64b444e23b153ab1698c463b5d879c96aa6f445ee71101c4f12ad3f94be53b8cd415e540526bc43e2f51be802671346a90a4795fe6af4 kde-lts.patch" diff --git a/user/qt5-qtspeech/kde-lts.patch b/user/qt5-qtspeech/kde-lts.patch index c8d350cad..fd9a50986 100644 --- a/user/qt5-qtspeech/kde-lts.patch +++ b/user/qt5-qtspeech/kde-lts.patch @@ -1,4 +1,4 @@ -From c8a1dadc46ccdbeaef45aa805a9dc98d4b3220bd Mon Sep 17 00:00:00 2001 +From 088b86a0e53ebb714c1276d041ab2c06fee58e6e Mon Sep 17 00:00:00 2001 From: Jeremy Whiting <jpwhiting@kde.org> Date: Tue, 8 Feb 2022 11:04:41 -0700 Subject: [PATCH] Reverse list of voices before returning from @@ -32,5 +32,5 @@ index 6eb74b8..bcc7dd1 100644 // We have no way of knowing our own client_id since speech-dispatcher seems to be incomplete -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtsvg/APKBUILD b/user/qt5-qtsvg/APKBUILD index eedfb1353..7eb31338b 100644 --- a/user/qt5-qtsvg/APKBUILD +++ b/user/qt5-qtsvg/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtsvg _pkgname=qtsvg-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Qt SVG rendering library" url="https://www.qt.io/" @@ -27,5 +27,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="364400e17cdc659ff1a521f7bd171c5dfe537136f263cd5f64c6b5e27b0398d83ae0b5fe46e77847f3a2feccf0ea75f9591ff4b932d0250e5859272630b5a31c qtsvg-everywhere-opensource-src-5.15.4.tar.xz -c7442fccef8b010f429669d0581c2ebe06958b157f3574ada29311b04baa7f3edcbc8a4b842ecb1a4e048c78cf7e94fd6961dd34504f3156972946daa19548d4 kde-lts.patch" +sha512sums="8994b995ecceffd386b10f0776dca81c776232af0742017f40df35149eac5160d7c62e92f2fea28082d9fe5ed91754af37eb3d49d8602750d5d0c349931a8e70 qtsvg-everywhere-opensource-src-5.15.17.tar.xz +36b99264ae8a74bf9ef5060f4ead187a15430eaadbf69c749991c4dbd8341502389a1300925bda667ad1acff06139f8fb0695cf0854ee67bb870b2e32a2a1846 kde-lts.patch" diff --git a/user/qt5-qtsvg/kde-lts.patch b/user/qt5-qtsvg/kde-lts.patch index d48da723b..13e611a4a 100644 --- a/user/qt5-qtsvg/kde-lts.patch +++ b/user/qt5-qtsvg/kde-lts.patch @@ -1,7 +1,7 @@ -From df7c94a391e69adef6e2b7f3d415496c6ba62ab1 Mon Sep 17 00:00:00 2001 +From 62ad7cfc0290d2723e7c0afacfb7dbee6a1b0293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= <robert.loehning@qt.io> Date: Wed, 17 Feb 2021 19:20:42 +0100 -Subject: [PATCH 01/10] Avoid buffer overflow in isSupportedSvgFeature +Subject: [PATCH 1/5] Avoid buffer overflow in isSupportedSvgFeature Fixes oss-fuzz issue 29873. @@ -14,7 +14,7 @@ Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/svg/qsvgstructure.cpp b/src/svg/qsvgstructure.cpp -index b89608b..89c9e4e 100644 +index b89608b5..89c9e4ec 100644 --- a/src/svg/qsvgstructure.cpp +++ b/src/svg/qsvgstructure.cpp @@ -255,9 +255,13 @@ inline static bool isSupportedSvgFeature(const QString &str) @@ -34,48 +34,12 @@ index b89608b..89c9e4e 100644 return str == QLatin1String(wordlist[key]); } -- -2.36.0 +2.49.0 -From b8a829e3883b8a4ac564ac25d20d099797644c24 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Robert=20L=C3=B6hning?= <robert.loehning@qt.io> -Date: Fri, 23 Jul 2021 13:53:47 +0200 -Subject: [PATCH 02/10] Limit font size to avoid numerous overflows - -The font size will be passed through a QFixed in -QFontEngineBox::ascent() and overflow there as well as in further places. - -[ChangeLog] Avoid numerous overflows by limiting font size to 0xffff. -This fixes oss-fuzz issue 31701. - -Pick-to: 5.15 6.1 6.2 -Change-Id: I2d00c5639804af9b056f0efc979e9899c5358cf7 -Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> -(cherry picked from commit 76eeb072cdffc1a8c776ed01864e6751ccbfba85) ---- - src/svg/qsvghandler.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index 9dac05c..e496a54 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -1384,7 +1384,8 @@ static void parseFont(QSvgNode *node, - break; - case FontSizeValue: { - QSvgHandler::LengthType dummy; // should always be pixel size -- fontStyle->setSize(parseLength(attributes.fontSize, dummy, handler)); -+ fontStyle->setSize(qMin(parseLength(attributes.fontSize, dummy, handler), -+ qreal(0xffff))); - } - break; - default: --- -2.36.0 - -From 5b684556c7cbe136ff9f665b18a1e8c8e53f3175 Mon Sep 17 00:00:00 2001 +From 8d0ba96f68d8bf4ae2c6139ac88a026965bc6ef2 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <albert.astals.cid@kdab.com> Date: Mon, 11 Oct 2021 11:13:57 +0200 -Subject: [PATCH 03/10] Support font size not in pixels +Subject: [PATCH 2/5] Support font size not in pixels Fixes: QTBUG-97422 Pick-to: 6.2 @@ -87,10 +51,10 @@ Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index e496a54..6862494 100644 +index dd9b7164..f37bf42e 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp -@@ -1383,9 +1383,10 @@ static void parseFont(QSvgNode *node, +@@ -1393,9 +1393,10 @@ static void parseFont(QSvgNode *node, case FontSizeNone: break; case FontSizeValue: { @@ -105,12 +69,12 @@ index e496a54..6862494 100644 break; default: -- -2.36.0 +2.49.0 -From dd33c643251fbdcc9ed91f3617646a4367a434b7 Mon Sep 17 00:00:00 2001 +From 1342b53893ed984198d0664db491e3f4e353b405 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid <albert.astals.cid@kdab.com> Date: Mon, 11 Oct 2021 11:11:26 +0200 -Subject: [PATCH 04/10] Fix text x/y when the length is not in pixels +Subject: [PATCH 3/5] Fix text x/y when the length is not in pixels Fixes: QTBUG-97421 Pick-to: 6.2 @@ -122,10 +86,10 @@ Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io> 1 file changed, 2 insertions(+) diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index 6862494..ba894bc 100644 +index f37bf42e..836f9a65 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp -@@ -3346,7 +3346,9 @@ static QSvgNode *createTextNode(QSvgNode *parent, +@@ -3353,7 +3353,9 @@ static QSvgNode *createTextNode(QSvgNode *parent, //### editable and rotate not handled QSvgHandler::LengthType type; qreal nx = parseLength(x, type, handler); @@ -136,111 +100,12 @@ index 6862494..ba894bc 100644 QSvgNode *text = new QSvgText(parent, QPointF(nx, ny)); return text; -- -2.36.0 - -From 1f59a48d239045bda7cfd43ed48fbf8553d36756 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Wed, 7 Jul 2021 10:09:58 +0200 -Subject: [PATCH 05/10] Fix parsing of arc elements in paths - -The arc element takes some flag parameters, which could be mixed up -with the float parameters since svg does not require delimiting -characters here. Hence legal svg would be misread.. - -Fixes: QTBUG-92184 -Pick-to: 6.2 6.1 5.15 -Change-Id: I5885c50d47e2e06ab0f02afefb7a5585c5c713ff -Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> -(cherry picked from commit b313862fa04d9a5403c16670a0d911eb3c633ee5) ---- - src/svg/qsvghandler.cpp | 19 ++++++++++++++++--- - tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | 14 ++++++++++++++ - 2 files changed, 30 insertions(+), 3 deletions(-) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index ba894bc..bfacd56 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -728,15 +728,25 @@ static QVector<qreal> parseNumbersList(const QChar *&str) - return points; - } - --static inline void parseNumbersArray(const QChar *&str, QVarLengthArray<qreal, 8> &points) -+static inline void parseNumbersArray(const QChar *&str, QVarLengthArray<qreal, 8> &points, -+ const char *pattern = nullptr) - { -+ const size_t patternLen = qstrlen(pattern); - while (str->isSpace()) - ++str; - while (isDigit(str->unicode()) || - *str == QLatin1Char('-') || *str == QLatin1Char('+') || - *str == QLatin1Char('.')) { - -- points.append(toDouble(str)); -+ if (patternLen && pattern[points.size() % patternLen] == 'f') { -+ // flag expected, may only be 0 or 1 -+ if (*str != QLatin1Char('0') && *str != QLatin1Char('1')) -+ return; -+ points.append(*str == QLatin1Char('0') ? 0.0 : 1.0); -+ ++str; -+ } else { -+ points.append(toDouble(str)); -+ } - - while (str->isSpace()) - ++str; -@@ -1631,8 +1641,11 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - ++str; - QChar endc = *end; - *const_cast<QChar *>(end) = 0; // parseNumbersArray requires 0-termination that QStringRef cannot guarantee -+ const char *pattern = nullptr; -+ if (pathElem == QLatin1Char('a') || pathElem == QLatin1Char('A')) -+ pattern = "rrrffrr"; - QVarLengthArray<qreal, 8> arg; -- parseNumbersArray(str, arg); -+ parseNumbersArray(str, arg, pattern); - *const_cast<QChar *>(end) = endc; - if (pathElem == QLatin1Char('z') || pathElem == QLatin1Char('Z')) - arg.append(0);//dummy -diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp -index 8f1f03b..36c76ec 100644 ---- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp -+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp -@@ -74,6 +74,7 @@ private slots: - void fillRule(); - void opacity(); - void paths(); -+ void paths2(); - void displayMode(); - void strokeInherit(); - void testFillInheritance(); -@@ -1047,6 +1048,19 @@ void tst_QSvgRenderer::paths() - } - } - -+void tst_QSvgRenderer::paths2() -+{ -+ const char *svg = -+ "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">" -+ "<path d=\"M 3 8 A 5 5 0 1013 8\" id=\"path1\"/>" -+ "</svg>"; -+ -+ QByteArray data(svg); -+ QSvgRenderer renderer(data); -+ QVERIFY(renderer.isValid()); -+ QCOMPARE(renderer.boundsOnElement(QLatin1String("path1")).toRect(), QRect(3, 8, 10, 5)); -+} -+ - void tst_QSvgRenderer::displayMode() - { - static const char *svgs[] = { --- -2.36.0 +2.49.0 -From 8145bccbefe00a5daffd60c4e9fc11f551018df1 Mon Sep 17 00:00:00 2001 +From 45d600c4f73ae4cdc4cd87f622d680375ba7f573 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen <allan.jensen@qt.io> Date: Fri, 5 Mar 2021 12:52:36 +0100 -Subject: [PATCH 06/10] Improve parsing of "r" +Subject: [PATCH 4/5] Improve parsing of "r" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -256,10 +121,10 @@ Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index bfacd56..9575f14 100644 +index 836f9a65..222b6d89 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp -@@ -2585,6 +2585,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent, +@@ -2579,6 +2579,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent, qreal ncx = toDouble(cx); qreal ncy = toDouble(cy); qreal nr = toDouble(r); @@ -268,7 +133,7 @@ index bfacd56..9575f14 100644 QRectF rect(ncx-nr, ncy-nr, nr*2, nr*2); QSvgNode *circle = new QSvgCircle(parent, rect); -@@ -3055,15 +3057,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node, +@@ -3049,15 +3051,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node, qreal ncx = 0.5; qreal ncy = 0.5; @@ -289,353 +154,12 @@ index bfacd56..9575f14 100644 qreal nfx = ncx; if (!fx.isEmpty()) -- -2.36.0 - -From 4469006285be9994f7b8ab4587f089716f59ebb9 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Fri, 2 Jul 2021 16:09:30 +0200 -Subject: [PATCH 07/10] Fix parsing of animation clock values - -Color animation duration parsing mixed seconds and milliseconds. - -Factor out a common function for all clock value parsing, and -add checking for overflow and illegal values as a driveby.. - -Fixes: QTBUG-94878 -Pick-to: 6.2 6.1 5.15 -Change-Id: Ie1d974cd2db55a3d65d7ce02c373021021070489 -Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> -(cherry picked from commit 1da0a668e52994832d8a048772bed65b61cb0e9b) ---- - src/svg/qsvghandler.cpp | 70 ++++++++++++++++++++--------------------- - 1 file changed, 35 insertions(+), 35 deletions(-) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index 9575f14..b542089 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -2373,6 +2373,27 @@ static bool parseAnimateNode(QSvgNode *parent, - return true; - } - -+static int parseClockValue(QString str, bool *ok) -+{ -+ int res = 0; -+ int ms = 1000; -+ str = str.trimmed(); -+ if (str.endsWith(QLatin1String("ms"))) { -+ str.chop(2); -+ ms = 1; -+ } else if (str.endsWith(QLatin1String("s"))) { -+ str.chop(1); -+ } -+ double val = ms * toDouble(str, ok); -+ if (ok) { -+ if (val > std::numeric_limits<int>::min() && val < std::numeric_limits<int>::max()) -+ res = static_cast<int>(val); -+ else -+ *ok = false; -+ } -+ return res; -+} -+ - static bool parseAnimateColorNode(QSvgNode *parent, - const QXmlStreamAttributes &attributes, - QSvgHandler *handler) -@@ -2406,23 +2427,13 @@ static bool parseAnimateColorNode(QSvgNode *parent, - } - } - -- int ms = 1000; -- beginStr = beginStr.trimmed(); -- if (beginStr.endsWith(QLatin1String("ms"))) { -- beginStr.chop(2); -- ms = 1; -- } else if (beginStr.endsWith(QLatin1String("s"))) { -- beginStr.chop(1); -- } -- durStr = durStr.trimmed(); -- if (durStr.endsWith(QLatin1String("ms"))) { -- durStr.chop(2); -- ms = 1; -- } else if (durStr.endsWith(QLatin1String("s"))) { -- durStr.chop(1); -- } -- int begin = static_cast<int>(toDouble(beginStr) * ms); -- int end = static_cast<int>((toDouble(durStr) + begin) * ms); -+ bool ok = true; -+ int begin = parseClockValue(beginStr, &ok); -+ if (!ok) -+ return false; -+ int end = begin + parseClockValue(durStr, &ok); -+ if (!ok || end <= begin) -+ return false; - - QSvgAnimateColor *anim = new QSvgAnimateColor(begin, end, 0); - anim->setArgs((targetStr == QLatin1String("fill")), colors); -@@ -2512,24 +2523,13 @@ static bool parseAnimateTransformNode(QSvgNode *parent, - } - } - -- int ms = 1000; -- beginStr = beginStr.trimmed(); -- if (beginStr.endsWith(QLatin1String("ms"))) { -- beginStr.chop(2); -- ms = 1; -- } else if (beginStr.endsWith(QLatin1String("s"))) { -- beginStr.chop(1); -- } -- int begin = static_cast<int>(toDouble(beginStr) * ms); -- durStr = durStr.trimmed(); -- if (durStr.endsWith(QLatin1String("ms"))) { -- durStr.chop(2); -- ms = 1; -- } else if (durStr.endsWith(QLatin1String("s"))) { -- durStr.chop(1); -- ms = 1000; -- } -- int end = static_cast<int>(toDouble(durStr)*ms) + begin; -+ bool ok = true; -+ int begin = parseClockValue(beginStr, &ok); -+ if (!ok) -+ return false; -+ int end = begin + parseClockValue(durStr, &ok); -+ if (!ok || end <= begin) -+ return false; - - QSvgAnimateTransform::TransformType type = QSvgAnimateTransform::Empty; - if (typeStr == QLatin1String("translate")) { --- -2.36.0 - -From 53ada351e2e8ac14d2e428813e959689ca6fe583 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Mon, 25 Oct 2021 14:17:55 +0200 -Subject: [PATCH 08/10] Do stricter error checking when parsing path nodes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The SVG spec mandates that path parsing should terminate on the first -error encountered, and an error be reported. To improve the handling -of corrupt files, implement such error handling, and also limit the -number of QPainterPath elements to a reasonable range. - -Fixes: QTBUG-96044 -Pick-to: 6.2 5.15 5.12 -Change-Id: Ic5e65d6b658516d6f1317c72de365c8c7ad81891 -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> -Reviewed-by: Robert Löhning <robert.loehning@qt.io> -(cherry picked from commit 36cfd9efb9b22b891adee9c48d30202289cfa620) ---- - src/svg/qsvghandler.cpp | 59 +++++++++++++++++------------------------ - 1 file changed, 25 insertions(+), 34 deletions(-) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index b542089..2ea80ed 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -1627,6 +1627,7 @@ static void pathArc(QPainterPath &path, - - static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - { -+ const int maxElementCount = 0x7fff; // Assume file corruption if more path elements than this - qreal x0 = 0, y0 = 0; // starting point - qreal x = 0, y = 0; // current point - char lastMode = 0; -@@ -1634,7 +1635,8 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - const QChar *str = dataStr.constData(); - const QChar *end = str + dataStr.size(); - -- while (str != end) { -+ bool ok = true; -+ while (ok && str != end) { - while (str->isSpace() && (str + 1) != end) - ++str; - QChar pathElem = *str; -@@ -1651,14 +1653,13 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - arg.append(0);//dummy - const qreal *num = arg.constData(); - int count = arg.count(); -- while (count > 0) { -+ while (ok && count > 0) { - qreal offsetX = x; // correction offsets - qreal offsetY = y; // for relative commands - switch (pathElem.unicode()) { - case 'm': { - if (count < 2) { -- num++; -- count--; -+ ok = false; - break; - } - x = x0 = num[0] + offsetX; -@@ -1675,8 +1676,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - break; - case 'M': { - if (count < 2) { -- num++; -- count--; -+ ok = false; - break; - } - x = x0 = num[0]; -@@ -1702,8 +1702,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - break; - case 'l': { - if (count < 2) { -- num++; -- count--; -+ ok = false; - break; - } - x = num[0] + offsetX; -@@ -1716,8 +1715,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - break; - case 'L': { - if (count < 2) { -- num++; -- count--; -+ ok = false; - break; - } - x = num[0]; -@@ -1757,8 +1755,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - break; - case 'c': { - if (count < 6) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF c1(num[0] + offsetX, num[1] + offsetY); -@@ -1774,8 +1771,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 'C': { - if (count < 6) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF c1(num[0], num[1]); -@@ -1791,8 +1787,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 's': { - if (count < 4) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF c1; -@@ -1813,8 +1808,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 'S': { - if (count < 4) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF c1; -@@ -1835,8 +1829,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 'q': { - if (count < 4) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF c(num[0] + offsetX, num[1] + offsetY); -@@ -1851,8 +1844,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 'Q': { - if (count < 4) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF c(num[0], num[1]); -@@ -1867,8 +1859,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 't': { - if (count < 2) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF e(num[0] + offsetX, num[1] + offsetY); -@@ -1888,8 +1879,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 'T': { - if (count < 2) { -- num += count; -- count = 0; -+ ok = false; - break; - } - QPointF e(num[0], num[1]); -@@ -1909,8 +1899,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - case 'a': { - if (count < 7) { -- num += count; -- count = 0; -+ ok = false; - break; - } - qreal rx = (*num++); -@@ -1932,8 +1921,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - break; - case 'A': { - if (count < 7) { -- num += count; -- count = 0; -+ ok = false; - break; - } - qreal rx = (*num++); -@@ -1954,12 +1942,15 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) - } - break; - default: -- return false; -+ ok = false; -+ break; - } - lastMode = pathElem.toLatin1(); -+ if (path.elementCount() > maxElementCount) -+ ok = false; - } - } -- return true; -+ return ok; - } - - static bool parseStyle(QSvgNode *node, -@@ -2997,8 +2988,8 @@ static QSvgNode *createPathNode(QSvgNode *parent, - - QPainterPath qpath; - qpath.setFillRule(Qt::WindingFill); -- //XXX do error handling -- parsePathDataFast(data, qpath); -+ if (!parsePathDataFast(data, qpath)) -+ qCWarning(lcSvgHandler, "Invalid path data; path truncated."); - - QSvgNode *path = new QSvgPath(parent, qpath); - return path; --- -2.36.0 +2.49.0 -From 41ab201cd44e4f0c7f6d22fca862d5650bf574ee Mon Sep 17 00:00:00 2001 +From 9c149213f46b844607cf7db8f800d906db3a682f Mon Sep 17 00:00:00 2001 From: Eirik Aavitsland <eirik.aavitsland@qt.io> Date: Mon, 25 Oct 2021 14:43:09 +0200 -Subject: [PATCH 09/10] SVG Image reading: Reject oversize svgs as corrupt +Subject: [PATCH 5/5] SVG Image reading: Reject oversize svgs as corrupt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -656,10 +180,10 @@ asturmlechner 2022-01-03: resolve conflict with preceding dev branch 1 file changed, 2 insertions(+) diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp -index 4136aaf..fd3529a 100644 +index 561e77e9..12e05748 100644 --- a/src/plugins/imageformats/svg/qsvgiohandler.cpp +++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp -@@ -189,6 +189,8 @@ bool QSvgIOHandler::read(QImage *image) +@@ -191,6 +191,8 @@ bool QSvgIOHandler::read(QImage *image) } } if (!finalSize.isEmpty()) { @@ -669,48 +193,5 @@ index 4136aaf..fd3529a 100644 QPainter p(image); d->r.render(&p, bounds); -- -2.36.0 - -From 23b8cf7d833c335d7735855570c05e9e0893a9b7 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -Date: Wed, 5 Jan 2022 09:48:22 +0100 -Subject: [PATCH 10/10] Unconditionally stop parsing after the svg end tag -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -A QSvghandler may be created either with an external QXmlStreamReader -object, or with a bytearray/iodevice, in which case it will create its -own stream reader. The check to end parisng at the </svg> tag was -active only in the first case. This could result in different behavior -when reading an svg image from file vs. reading it from a bytearray -or resource. - -Fixes: QTBUG-99407 -Pick-to: 6.3 6.2 5.15 -Change-Id: I187b39256f2b16ea952a3ae1b77c067ff96e4155 -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> -Reviewed-by: Robert Löhning <robert.loehning@qt.io> -(cherry picked from commit 1749388cdc765fca4206aaf0f84ac9b0877dfc9a) ---- - src/svg/qsvghandler.cpp | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp -index 2ea80ed..f2653af 100644 ---- a/src/svg/qsvghandler.cpp -+++ b/src/svg/qsvghandler.cpp -@@ -3696,9 +3696,7 @@ void QSvgHandler::parse() - case QXmlStreamReader::EndElement: - endElement(xml->name()); - ++remainingUnfinishedElements; -- // if we are using somebody else's qxmlstreamreader -- // we should not read until the end of the stream -- done = !m_ownsReader && (xml->name() == QLatin1String("svg")); -+ done = (xml->name() == QLatin1String("svg")); - break; - case QXmlStreamReader::Characters: - characters(xml->text()); --- -2.36.0 +2.49.0 diff --git a/user/qt5-qttools/APKBUILD b/user/qt5-qttools/APKBUILD index dc271f62b..f176f351c 100644 --- a/user/qt5-qttools/APKBUILD +++ b/user/qt5-qttools/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qttools _pkgname=qttools-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Tools for Qt development" url="https://www.qt.io/" @@ -13,6 +13,7 @@ makedepends="qt5-qtbase-dev" subpackages="$pkgname-dev qt5-assistant:_assistant qt5-qdbusviewer:_dbusviewer qdbus qtpaths" source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz + kde-lts.patch assistant-qt5.desktop designer-qt5.desktop linguist-qt5.desktop @@ -116,7 +117,8 @@ _dbusviewer() { done } -sha512sums="26edf546a1ec7195f1ff5a9e40e430fdd0c7ebb7d86e44ed22b093426c23ff25b2c972fa520abd1064369d32609019746c2fe972a3f593c6f7539d339642f06e qttools-everywhere-opensource-src-5.15.4.tar.xz +sha512sums="053ff805a95516753dca0d2bfa392469c7ea763b7a99755c6e7a3c6d59afd4bc704ef9a3edfc81bd7ea8c0c37cbd11447201f075a2353774ae177cbba88ea679 qttools-everywhere-opensource-src-5.15.17.tar.xz +00f93b6e9db8d808a6d7b07b9f6a2bd8ae604847cc91520a2475ba48c28fff628201e8b50c369f8e866f139e1dc87e1a149f58d2fd4aa9cc21a42d67b48615d1 kde-lts.patch d566c5284854855541df7177b23f491d96f5064b571e899a44f1d4fcf8bbf1223590b05b1954278dc6f3f56341c917f5b846594c5bd2215b6a859224038d8ad2 assistant-qt5.desktop 72d9a2235a60c4ae05ba8395d473fe0b42c12e584da619dadb112eb67ba33a85fe0dab6c185d98112d7b25d3eeacaf02f7ef4731742e50c17eacc54c383661b3 designer-qt5.desktop b6d8a672d19eed39ab868ff6fc880f255da94acb9e1e84f5905c0f3b9b6055547e8a706492973692c06dc23d35ce77622fc13efc11adf21b62c3baf4ef5ab2ad linguist-qt5.desktop diff --git a/user/qt5-qttools/kde-lts.patch b/user/qt5-qttools/kde-lts.patch new file mode 100644 index 000000000..8d7134af5 --- /dev/null +++ b/user/qt5-qttools/kde-lts.patch @@ -0,0 +1,124 @@ +From 0dabe2dd2492553c33eb62f94712e668c3ec2d8c Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Thu, 16 Jun 2022 09:52:54 +0200 +Subject: [PATCH 1/3] Ensure FileAttributeSetTable is filled ordered so we get + the same qch file each time + +This is part of making all of Qt reproducible + +Change-Id: I1a4120cab6844887fb4b48edb238b8f1b55f0eb9 +Reviewed-by: Kai Koehne <kai.koehne@qt.io> +Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> +(cherry picked from commit 45dc9fa0221a3aadc9925eead484f012a62a6a58) +--- + src/assistant/qhelpgenerator/helpgenerator.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/assistant/qhelpgenerator/helpgenerator.cpp b/src/assistant/qhelpgenerator/helpgenerator.cpp +index feab1e2d5..cbfb82507 100644 +--- a/src/assistant/qhelpgenerator/helpgenerator.cpp ++++ b/src/assistant/qhelpgenerator/helpgenerator.cpp +@@ -445,7 +445,9 @@ bool HelpGeneratorPrivate::insertFiles(const QStringList &files, const QString & + if (filterSetId < 0) + return false; + ++filterSetId; +- for (int attId : qAsConst(filterAtts)) { ++ QList<int> attValues = filterAtts.values(); ++ std::sort(attValues.begin(), attValues.end()); ++ for (int attId : qAsConst(attValues)) { + m_query->prepare(QLatin1String("INSERT INTO FileAttributeSetTable " + "VALUES(?, ?)")); + m_query->bindValue(0, filterSetId); +-- +2.49.0 + +From 3512c3ac72abce0c44fdfe1657a8e32a8603efe7 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <asturm@gentoo.org> +Date: Fri, 18 Mar 2022 12:43:18 +0100 +Subject: [PATCH 2/3] Drop superfluous network dependency from + assistant/{help,qhelpgenerator}.pro + +Upstream's cmake equivalent commit is a9804f1a6496eccb79fb006fe4c9247eee1c4cec + +See also: +https://codereview.qt-project.org/gitweb?p=qt%2Fqttools.git;a=commit;h=a9804f1a6496eccb79fb006fe4c9247eee1c4cec + +Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org> +--- + src/assistant/help/help.pro | 1 - + src/assistant/qhelpgenerator/qhelpgenerator.pro | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/assistant/help/help.pro b/src/assistant/help/help.pro +index 800c4a38d..7556f451b 100644 +--- a/src/assistant/help/help.pro ++++ b/src/assistant/help/help.pro +@@ -1,7 +1,6 @@ + TARGET = QtHelp + + QT = core-private gui widgets sql +-QT_PRIVATE = network + + DEFINES += QHELP_LIB + +diff --git a/src/assistant/qhelpgenerator/qhelpgenerator.pro b/src/assistant/qhelpgenerator/qhelpgenerator.pro +index bb22000c8..415347a00 100644 +--- a/src/assistant/qhelpgenerator/qhelpgenerator.pro ++++ b/src/assistant/qhelpgenerator/qhelpgenerator.pro +@@ -1,4 +1,4 @@ +-QT += network help-private ++QT += help-private + + QTPLUGIN.platforms = qminimal + QTPLUGIN.sqldrivers = qsqlite +-- +2.49.0 + +From e02ce0dfa692913bd5dcc50917f7e21f5a41cd2b Mon Sep 17 00:00:00 2001 +From: Topi Reinio <topi.reinio@qt.io> +Date: Mon, 16 Jan 2023 09:31:24 +0000 +Subject: [PATCH 3/3] qdoc: Ensure the generated temporary header file is + closed properly + +Use the correct scope for the QFile object used for writing the +temporary header file; this ensures that the associated QTextStream +object is destroyed first and its contents flushed before destroying +the QFile, potentially leading to truncated writes to the file. + +Pick-to: 6.5 6.4 6.2 5.15 +Done-with: Simon Geisseler +Fixes: QTBUG-109614 +Change-Id: Ic6a68c0b52219ce607a5116c730862ee0cb37f04 +Reviewed-by: Luca Di Sera <luca.disera@qt.io> +(cherry picked from commit 0d8837c4103f941297adc3c76cb0ae6f67b6e34b) +--- + src/qdoc/clangcodeparser.cpp | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/src/qdoc/clangcodeparser.cpp b/src/qdoc/clangcodeparser.cpp +index 539a603da..a41b99cec 100644 +--- a/src/qdoc/clangcodeparser.cpp ++++ b/src/qdoc/clangcodeparser.cpp +@@ -1395,8 +1395,7 @@ void ClangCodeParser::buildPCH() + args_.push_back("-xc++"); + CXTranslationUnit tu; + QString tmpHeader = pchFileDir_->path() + "/" + module; +- QFile tmpHeaderFile(tmpHeader); +- if (tmpHeaderFile.open(QIODevice::Text | QIODevice::WriteOnly)) { ++ { QFile tmpHeaderFile(tmpHeader); if (tmpHeaderFile.open(QIODevice::Text | QIODevice::WriteOnly)) { + QTextStream out(&tmpHeaderFile); + if (header.isEmpty()) { + for (auto it = allHeaders_.constKeyValueBegin(); +@@ -1421,8 +1420,7 @@ void ClangCodeParser::buildPCH() + out << line << "\n"; + } + } +- tmpHeaderFile.close(); +- } ++ } } + if (printParsingErrors_ == 0) + qCWarning(lcQdoc) << "clang not printing errors; include paths were guessed"; + CXErrorCode err = +-- +2.49.0 + diff --git a/user/qt5-qtvirtualkeyboard/APKBUILD b/user/qt5-qtvirtualkeyboard/APKBUILD index ed9e4dc9b..c0bf0f041 100644 --- a/user/qt5-qtvirtualkeyboard/APKBUILD +++ b/user/qt5-qtvirtualkeyboard/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtvirtualkeyboard _pkgname=qtvirtualkeyboard-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="On-screen keyboard module for Qt 5" url="https://www.qt.io/" @@ -12,9 +12,7 @@ license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-ex depends="" makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev" subpackages="$pkgname-dev" -source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz - kde-lts.patch - " +source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz" builddir="$srcdir"/$_pkgname-src-$pkgver build() { @@ -26,5 +24,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="870279299a5e166badea0746a2d4badc758c66f8404e36d1df05997dcfeb66733154fc2a9830c433fbacf885b7afb44bc8dc8a5aacc02713966630ce98231ba3 qtvirtualkeyboard-everywhere-opensource-src-5.15.4.tar.xz -1b0f925421c00578b6884cd98103eeef12461ba6febf1077b8911d034eb61974183b5313d48ddfc60267251e76638b2aa558d3b551b08cdb3db93e317affe201 kde-lts.patch" +sha512sums="584c63f5c79122452ce9e424187ec76daa8263f16da14c08de6026e81c8cfe93cece62101fe1a57a07f4905bc743340a295f7669bd9f739c7c156935aa585ff8 qtvirtualkeyboard-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtvirtualkeyboard/kde-lts.patch b/user/qt5-qtvirtualkeyboard/kde-lts.patch deleted file mode 100644 index b2a584344..000000000 --- a/user/qt5-qtvirtualkeyboard/kde-lts.patch +++ /dev/null @@ -1,188 +0,0 @@ -From 594b1bd20256de146b759aa65d60795ee8542e53 Mon Sep 17 00:00:00 2001 -From: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -Date: Wed, 25 Aug 2021 16:42:32 +0300 -Subject: [PATCH 1/3] Avoid reparenting of InputPanel when the window is being - destroyed - -Fixes: QTBUG-95996 -Pick-to: 5.15 6.1 6.2 -Change-Id: Iac4d06cacf2e672bf4a7676f478798f27ab6f4a2 -Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> -(cherry picked from commit 0464e1bacca28d7e459f105b07fbea6bb5b20930) ---- - src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp -index a7c0aad9..e04c828d 100644 ---- a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp -+++ b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp -@@ -278,8 +278,10 @@ void QVirtualKeyboardInputContextPrivate::onInputItemChanged() - For integrated keyboards, make sure it's a sibling to the overlay. The - high z-order will make sure it gets events also during a modal session. - */ -- if (isDesktopPanel.isValid() && !isDesktopPanel.toBool()) -- vkbPanel->setParentItem(quickItem->window()->contentItem()); -+ if (isDesktopPanel.isValid() && !isDesktopPanel.toBool()) { -+ if (QQuickWindow *quickWindow = quickItem->window()) -+ vkbPanel->setParentItem(quickWindow->contentItem()); -+ } - } - } - } else { --- -2.36.0 - -From 1c15d4f231c66d3f39f648942b120159fe7a8be0 Mon Sep 17 00:00:00 2001 -From: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -Date: Mon, 7 Jun 2021 14:04:27 +0300 -Subject: [PATCH 2/3] Fix high CPU utilization caused by key repeat timer - -Key repeat timer has been broken since the beginning. - -The key repeat timer leaked timer instances while processing the event, -causing the accumulation of unprocessed timer events and high CPU -utilization. - -Fix the issue by killing the original timer (long press delay 600 ms) -and starting the key repeat timer (repeat delay 50 ms) once. - -[ChangeLog] Fixed high CPU utilization caused by key repeat timer. - -Pick-to: 5.12 5.15 6.1 6.2 -Fixes: QTBUG-94259 -Change-Id: Iff47249db27cda3750f497cb02c1cb642261e032 -Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -(cherry picked from commit 63a944ff12580f2c333a162ecaecd12419a39c10) ---- - src/virtualkeyboard/qvirtualkeyboardinputengine.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp b/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp -index e64ea4eb..5f74c2a7 100644 ---- a/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp -+++ b/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp -@@ -716,9 +716,11 @@ void QVirtualKeyboardInputEngine::timerEvent(QTimerEvent *timerEvent) - { - Q_D(QVirtualKeyboardInputEngine); - if (timerEvent->timerId() == d->repeatTimer) { -- d->repeatTimer = 0; - d->virtualKeyClick(d->activeKey, d->activeKeyText, d->activeKeyModifiers, true); -- d->repeatTimer = startTimer(50); -+ if (!d->repeatCount) { -+ killTimer(d->repeatTimer); -+ d->repeatTimer = startTimer(50); -+ } - d->repeatCount++; - } - } --- -2.36.0 - -From e8ae4757dd32e8dbf69a7c57f2bc5c1e238416db Mon Sep 17 00:00:00 2001 -From: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -Date: Tue, 8 Jun 2021 15:25:09 +0300 -Subject: [PATCH 3/3] Fix processing of hard Qt::Key_Backspace and - Qt::Key_Delete - -Even though the virtual keyboard does not support hard keys at the -moment, this kind of processing could be possible in the future. - -In the mean time, fix processing of backspace and delete keys. - -In particular, if such key is pressed the pre-edit text is not empty: - -- Reset input method state (should not modify pre-edit) -- Clear pre-edit -- Return true (to indicate no further processing is required) - -[ChangeLog] Fix processing of hard backspace and delete keys. - -Fixes: QTBUG-94017 -Pick-to: 5.15 6.1 6.2 -Change-Id: I7035f7612e966de6d17d92e754ecd7bdb3a6e530 -Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> -(cherry picked from commit ca5b712dfc8e67aece0eb7374ffe5921e2aa45e8) ---- - .../qvirtualkeyboardinputcontext_p.cpp | 14 ++++++++--- - tests/auto/inputpanel/data/tst_inputpanel.qml | 24 +++++++++++++++++++ - 2 files changed, 35 insertions(+), 3 deletions(-) - -diff --git a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp -index e04c828d..cacf33f0 100644 ---- a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp -+++ b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp -@@ -507,6 +507,7 @@ bool QVirtualKeyboardInputContextPrivate::filterEvent(const QEvent *event) - QEvent::Type type = event->type(); - if (type == QEvent::KeyPress || type == QEvent::KeyRelease) { - const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event); -+ const int key = keyEvent->key(); - - // Keep track of pressed keys update key event state - if (type == QEvent::KeyPress) -@@ -520,7 +521,6 @@ bool QVirtualKeyboardInputContextPrivate::filterEvent(const QEvent *event) - setState(State::KeyEvent); - - #ifdef QT_VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION -- int key = keyEvent->key(); - if ((key >= Qt::Key_Left && key <= Qt::Key_Down) || key == Qt::Key_Return) { - if (type == QEvent::KeyPress && platformInputContext->isInputPanelVisible()) { - activeNavigationKeys += key; -@@ -535,8 +535,16 @@ bool QVirtualKeyboardInputContextPrivate::filterEvent(const QEvent *event) - #endif - - // Break composing text since the virtual keyboard does not support hard keyboard events -- if (!preeditText.isEmpty()) -- commit(); -+ if (!preeditText.isEmpty()) { -+ if (type == QEvent::KeyPress && (key == Qt::Key_Delete || key == Qt::Key_Backspace)) { -+ reset(); -+ Q_Q(QVirtualKeyboardInputContext); -+ q->clear(); -+ return true; -+ } else { -+ commit(); -+ } -+ } - } - #ifdef QT_VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION - else if (type == QEvent::ShortcutOverride) { -diff --git a/tests/auto/inputpanel/data/tst_inputpanel.qml b/tests/auto/inputpanel/data/tst_inputpanel.qml -index d814f282..f60acc64 100644 ---- a/tests/auto/inputpanel/data/tst_inputpanel.qml -+++ b/tests/auto/inputpanel/data/tst_inputpanel.qml -@@ -321,6 +321,30 @@ Rectangle { - compare(textInput.text, "A") - } - -+ function test_hardKeyBackspaceClearsInput_data() { -+ return [ -+ { initLocale: "en_GB", initText: "12345", initCursorPosition: 1, inputSequence: "hello", outputText: "12345", expectedCursorPosition: 1 }, -+ ] -+ } -+ -+ function test_hardKeyBackspaceClearsInput(data) { -+ prepareTest(data) -+ -+ if (!inputPanel.wordCandidateListVisibleHint) -+ skip("Prediction/spell correction not enabled") -+ -+ compare(Qt.inputMethod.locale.name, Qt.locale(data.initLocale).name) -+ for (var inputIndex in data.inputSequence) { -+ verify(inputPanel.virtualKeyClick(data.inputSequence[inputIndex])) -+ } -+ -+ keyClick(Qt.Key_Backspace) -+ waitForRendering(textInput) -+ -+ compare(textInput.text, data.outputText) -+ compare(textInput.cursorPosition, data.expectedCursorPosition) -+ } -+ - function test_hardKeyInput() { - prepareTest() - --- -2.36.0 - diff --git a/user/qt5-qtwayland/APKBUILD b/user/qt5-qtwayland/APKBUILD index 5885128e8..eba10e88c 100644 --- a/user/qt5-qtwayland/APKBUILD +++ b/user/qt5-qtwayland/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtwayland _pkgname=qtwayland-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Unstable Qt platform module for experimental Wayland display system" url="https://www.qt.io/" @@ -45,5 +45,5 @@ tools() { mv "$pkgdir"/usr/lib/qt5/bin "$subpkgdir"/usr/lib/qt5/ } -sha512sums="58ae262f7aa0455fb577a36fe9413a969398a2043160642501bac064d6fbc3280f76aa566e62b9d73c67a8c3606849b1b97bcb9b0250d26c269ec921112f40e4 qtwayland-everywhere-opensource-src-5.15.4.tar.xz -53fa6317cf27eb2201f60c6b708c244c02906ef2de157356c88bd50e917985e5162fae75da164b19d075d415508724faed92d0896f9b89d18523e7b61468cee2 kde-lts.patch" +sha512sums="b14c7e0b7a58ae258bd440b68ee7322bfa918d95bf8fac4509e7e2636c21e4576a022a6707383eda37ace1943dccb0eacd9eccacd04806494d2f44a0c59b0dec qtwayland-everywhere-opensource-src-5.15.17.tar.xz +1728ee97ccb7fdef4586a300752ebe6bc369107f0c755bda4f63fd47ff98920a5b12507906680894377d20651a0570ada44476441be0439864f77db1b4a3e771 kde-lts.patch" diff --git a/user/qt5-qtwayland/kde-lts.patch b/user/qt5-qtwayland/kde-lts.patch index 4a884c995..87ddb050f 100644 --- a/user/qt5-qtwayland/kde-lts.patch +++ b/user/qt5-qtwayland/kde-lts.patch @@ -1,7 +1,7 @@ -From eca0516905c3f88aba876d18742c9102da2319db Mon Sep 17 00:00:00 2001 +From 71f68537466cf6f42981a1eb4929ac56c9ef12fe Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Date: Wed, 5 May 2021 20:49:26 +0300 -Subject: [PATCH 01/38] Client: Announce an output after receiving more +Subject: [PATCH 01/57] Client: Announce an output after receiving more complete state Output initialization is not atomic, meaning that the compositor may @@ -142,12 +142,12 @@ index df1c94f2..050cfdc0 100644 #if QT_CONFIG(cursor) -- -2.36.0 +2.49.0 -From 95a139413337bb92a9dbbbd95f61e52cc1f43649 Mon Sep 17 00:00:00 2001 +From 32bacc3b758a25a856e26f01f5d054d6ef2c0652 Mon Sep 17 00:00:00 2001 From: Jaeyoon Jung <jaeyoon.jung@lge.com> Date: Mon, 15 Feb 2021 08:31:06 +0900 -Subject: [PATCH 02/38] Fix issue with repeated window size changes +Subject: [PATCH 02/57] Fix issue with repeated window size changes Check if the new window size is different from the size requested previously before calling wl_egl_window_resize. It addresses the issue @@ -166,10 +166,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp -index 7889f575..201b583b 100644 +index e00c28c3..64f7caeb 100644 --- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp -@@ -131,14 +131,16 @@ void QWaylandEglWindow::updateSurface(bool create) +@@ -122,14 +122,16 @@ void QWaylandEglWindow::updateSurface(bool create) if (!disableResizeCheck) { wl_egl_window_get_attached_size(m_waylandEglWindow, ¤t_width, ¤t_height); } @@ -188,10 +188,10 @@ index 7889f575..201b583b 100644 if (!m_eglSurface && m_waylandEglWindow && create) { diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h -index 5b1f4d56..0079dfef 100644 +index 2fccbcea..ad1e5ee9 100644 --- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h +++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h -@@ -88,6 +88,7 @@ private: +@@ -85,6 +85,7 @@ private: mutable QOpenGLFramebufferObject *m_contentFBO = nullptr; QSurfaceFormat m_format; @@ -200,43 +200,12 @@ index 5b1f4d56..0079dfef 100644 } -- -2.36.0 +2.49.0 -From 4f5bef9e6e0d16bb859e7a99ef5ebfca2ac93f45 Mon Sep 17 00:00:00 2001 -From: Albert Astals Cid <albert.astals.cid@kdab.com> -Date: Mon, 10 May 2021 14:38:49 +0200 -Subject: [PATCH 03/38] Include locale.h for setlocale/LC_CTYPE - -Pick-to: 5.15 -Change-Id: Iced32a31a63cec71008549c1e0961d59ffc45a37 -Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> -(cherry picked from commit e9522eda46028f351d87311d898ab985856970b0) ---- - src/client/qwaylandinputcontext.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp -index ef5aa375..503fd735 100644 ---- a/src/client/qwaylandinputcontext.cpp -+++ b/src/client/qwaylandinputcontext.cpp -@@ -51,6 +51,10 @@ - #include "qwaylandinputmethodeventbuilder_p.h" - #include "qwaylandwindow_p.h" - -+#if QT_CONFIG(xkbcommon) -+#include <locale.h> -+#endif -+ - QT_BEGIN_NAMESPACE - - Q_LOGGING_CATEGORY(qLcQpaInputMethods, "qt.qpa.input.methods") --- -2.36.0 - -From 58f7e6cfb61e4f170ab7ced2e01b6222036f934d Mon Sep 17 00:00:00 2001 +From 98df701a25a9493c454699398482a4873f6e2cb9 Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Tue, 9 Feb 2021 16:09:21 +0000 -Subject: [PATCH 04/38] Client: Connect drags being accepted to updating the +Subject: [PATCH 03/57] Client: Connect drags being accepted to updating the source drag icon Currently in a multi-process drag and drop when the other client accepts @@ -258,10 +227,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 1 file changed, 1 insertion(+) diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp -index 19944a34..54a69c3c 100644 +index 4d2459d1..375f13fb 100644 --- a/src/client/qwaylanddatadevice.cpp +++ b/src/client/qwaylanddatadevice.cpp -@@ -124,6 +124,7 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon) +@@ -130,6 +130,7 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon) m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData)); connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled); @@ -270,12 +239,12 @@ index 19944a34..54a69c3c 100644 start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial()); return true; -- -2.36.0 +2.49.0 -From 0b8b965626c7d02ce885187fa46fe6c69af3ede3 Mon Sep 17 00:00:00 2001 +From bd2d78e034ffab276333d954eb391cd2d06438c8 Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Fri, 14 May 2021 13:23:24 +0100 -Subject: [PATCH 05/38] Client: Disconnect registry listener on destruction +Subject: [PATCH 04/57] Client: Disconnect registry listener on destruction If a display outlives a QWaylandClientExtension and a new global is announced we end up delivering an event to a now deleted extension which @@ -289,7 +258,7 @@ Change-Id: Idc0de40be61a2f7627ab4963e1fe29b22fbf3f04 2 files changed, 8 insertions(+) diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp -index 125b1e19..797b06fe 100644 +index 966096a8..2dc61b77 100644 --- a/src/client/global/qwaylandclientextension.cpp +++ b/src/client/global/qwaylandclientextension.cpp @@ -88,6 +88,13 @@ QWaylandClientExtension::QWaylandClientExtension(const int ver) @@ -319,12 +288,12 @@ index 98272e57..5bd28398 100644 QtWaylandClient::QWaylandIntegration *integration() const; int version() const; -- -2.36.0 +2.49.0 -From 71de867aab030a9f48bd73e4090d301da75e4102 Mon Sep 17 00:00:00 2001 +From 8329054a32746bc3b7d47d17cb75164aa4833f1a Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Mon, 3 May 2021 23:01:53 +0100 -Subject: [PATCH 06/38] Client: Set XdgShell size hints before the first commit +Subject: [PATCH 05/57] Client: Set XdgShell size hints before the first commit propagateSizeHints is only called in QWindow we have platform window and minimumSizeHint is then sent. We also need to send existing hints when @@ -343,10 +312,10 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp -index 3a1569f7..7d33dabd 100644 +index 77ae62d6..45519ae5 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp -@@ -105,8 +105,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() +@@ -106,8 +106,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() m_xdgSurface->m_window->resizeFromApplyConfigure(m_pending.size); } @@ -355,7 +324,7 @@ index 3a1569f7..7d33dabd 100644 m_applied = m_pending; qCDebug(lcQpaWayland) << "Applied pending xdg_toplevel configure event:" << m_applied.size << m_applied.states; } -@@ -257,6 +255,7 @@ QWaylandXdgSurface::QWaylandXdgSurface(QWaylandXdgShell *shell, ::xdg_surface *s +@@ -270,6 +268,7 @@ QWaylandXdgSurface::QWaylandXdgSurface(QWaylandXdgShell *shell, ::xdg_surface *s m_toplevel->set_parent(parentXdgSurface->m_toplevel->object()); } } @@ -364,7 +333,7 @@ index 3a1569f7..7d33dabd 100644 QWaylandXdgSurface::~QWaylandXdgSurface() diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp -index 2277bbb8..2fdd0a7c 100644 +index 1c23728b..1423d647 100644 --- a/tests/auto/client/xdgshell/tst_xdgshell.cpp +++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp @@ -505,7 +505,7 @@ void tst_xdgshell::minMaxSize() @@ -377,12 +346,12 @@ index 2277bbb8..2fdd0a7c 100644 QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100)); QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000)); -- -2.36.0 +2.49.0 -From 342e5b7d0b45db4ed6679af4b40b05b4bd96de09 Mon Sep 17 00:00:00 2001 +From 7a34952c2e7a32d0b6f5ec43468226296213e666 Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Mon, 14 Jun 2021 12:45:37 +0100 -Subject: [PATCH 07/38] Fix build +Subject: [PATCH 06/57] Fix build 1b5e43a593e917610e6245f7a272ac081c508ba4 relied on a patch that we can't backport. @@ -395,7 +364,7 @@ d6ac8cf6. 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp -index 797b06fe..edccfe63 100644 +index 2dc61b77..36609c08 100644 --- a/src/client/global/qwaylandclientextension.cpp +++ b/src/client/global/qwaylandclientextension.cpp @@ -74,7 +74,10 @@ void QWaylandClientExtensionPrivate::handleRegistryGlobal(void *data, ::wl_regis @@ -423,12 +392,12 @@ index 69cc46a0..9091efbe 100644 class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate -- -2.36.0 +2.49.0 -From 7d6a8aa51603e39a5da5b87af2acd0433a265987 Mon Sep 17 00:00:00 2001 +From 7a6744480cb1ff20d1bd7e08985f257f256fea6c Mon Sep 17 00:00:00 2001 From: Zhang Liang <zhanglianga@uniontech.com> Date: Mon, 1 Feb 2021 19:29:43 +0800 -Subject: [PATCH 08/38] Fix: remove listener +Subject: [PATCH 07/57] Fix: remove listener Add the operation for removing the listener form listener list @@ -440,10 +409,10 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org> 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index f10c1f79..e0dfe8b2 100644 +index 8a6d5db1..16f8ca1a 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -452,9 +452,10 @@ void QWaylandDisplay::addRegistryListener(RegistryListener listener, void *data) +@@ -456,9 +456,10 @@ void QWaylandDisplay::addRegistryListener(RegistryListener listener, void *data) void QWaylandDisplay::removeListener(RegistryListener listener, void *data) { @@ -456,12 +425,12 @@ index f10c1f79..e0dfe8b2 100644 uint32_t QWaylandDisplay::currentTimeMillisec() -- -2.36.0 +2.49.0 -From bea49655add94c2ab77ec39dfe33bf6c7f5ce927 Mon Sep 17 00:00:00 2001 +From c056a86ae6b48a23f1a677bdb298b3e0e00b2e58 Mon Sep 17 00:00:00 2001 From: David Redondo <qt@david-redondo.de> Date: Wed, 26 May 2021 14:49:40 +0200 -Subject: [PATCH 09/38] Hook up queryKeyboardModifers +Subject: [PATCH 08/57] Hook up queryKeyboardModifers Can be useful when upon enter a modifiers event is received but no key event so no QKeyEvent is generated. @@ -479,7 +448,7 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org> 2 files changed, 10 insertions(+) diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp -index c53ccb78..e5e7dd42 100644 +index d257e2e3..cd8569b1 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -262,6 +262,14 @@ QWaylandDisplay *QWaylandIntegration::display() const @@ -511,56 +480,12 @@ index ff70ae25..73b80658 100644 QStringList themeNames() const override; -- -2.36.0 - -From c7022c1c0107781993b1d13e7aa11dd3f7486249 Mon Sep 17 00:00:00 2001 -From: Aleix Pol <aleixpol@kde.org> -Date: Tue, 13 Jul 2021 13:32:15 +0200 -Subject: [PATCH 10/38] Do not update the mask if we do not have a surface - -mMask serves as a cache to remember what we've sent, the source of truth -for the value is window()->mask(). -No need to store values that we are going to discard, because it will -confuse the state of newly created windows. - -Change-Id: I6aa3da82c7f09c7ef90d0f7060f292fb042730f0 -Pick-to: 5.15 6.2 -Reviewed-by: David Edmundson <davidedmundson@kde.org> -(cherry picked from commit 962f87190c682562b369c5ebd93dc9ce0915ed7a) ---- - src/client/qwaylandwindow.cpp | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index e96d8fe9..bd70f4af 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -464,14 +464,15 @@ void QWaylandWindow::lower() - - void QWaylandWindow::setMask(const QRegion &mask) - { -+ QReadLocker locker(&mSurfaceLock); -+ if (!mSurface) -+ return; -+ - if (mMask == mask) - return; - - mMask = mask; - -- if (!mSurface) -- return; -- - if (mMask.isEmpty()) { - mSurface->set_input_region(nullptr); - --- -2.36.0 +2.49.0 -From 83a5e079e4bdf567010abc0b7d67eff052b76249 Mon Sep 17 00:00:00 2001 +From 73636c9dd2af7410e988fb63649262b669036f8b Mon Sep 17 00:00:00 2001 From: Jan Blackquill <uhhadd@gmail.com> Date: Tue, 24 Aug 2021 14:36:34 -0400 -Subject: [PATCH 11/38] Correctly detect if image format is supported by +Subject: [PATCH 09/57] Correctly detect if image format is supported by QImageWriter The code queries potential image formats by stripping a mimetype of its @@ -610,7 +535,7 @@ Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qwaylandmimehelper.cpp b/src/shared/qwaylandmimehelper.cpp -index a5fdd34d..051a91dc 100644 +index c5266ab3..e2fe1928 100644 --- a/src/shared/qwaylandmimehelper.cpp +++ b/src/shared/qwaylandmimehelper.cpp @@ -60,7 +60,7 @@ QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString & @@ -623,43 +548,12 @@ index a5fdd34d..051a91dc 100644 fmt = imgFmt; } -- -2.36.0 - -From 19d0878e56094b5cced1154ce07f566f2b147e2a Mon Sep 17 00:00:00 2001 -From: Paul Olav Tvete <paul.tvete@qt.io> -Date: Tue, 14 Sep 2021 11:56:23 +0200 -Subject: [PATCH 12/38] Wayland client: Fix crash when windows are shown/hidden - during drag - -Fixes: QTBUG-87624 -Pick-to: 6.2 5.15 -Change-Id: I1b9443df091878abcd4fbe9c55927cb819aebd59 -Reviewed-by: David Edmundson <davidedmundson@kde.org> -(cherry picked from commit c64c5d3849b40617e1de0295f8690f354cab2b3a) ---- - src/client/qwaylanddatadevice.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +2.49.0 -diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp -index 54a69c3c..bbd2d568 100644 ---- a/src/client/qwaylanddatadevice.cpp -+++ b/src/client/qwaylanddatadevice.cpp -@@ -169,7 +169,7 @@ void QWaylandDataDevice::data_device_drop() - - void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, wl_fixed_t x, wl_fixed_t y, wl_data_offer *id) - { -- auto *dragWaylandWindow = QWaylandWindow::fromWlSurface(surface); -+ auto *dragWaylandWindow = surface ? QWaylandWindow::fromWlSurface(surface) : nullptr; - if (!dragWaylandWindow) - return; // Ignore foreign surfaces - --- -2.36.0 - -From abaa0b1765551533112944e624ac5989df7d7b6c Mon Sep 17 00:00:00 2001 +From 0e054eab8f64ea3ad58225967b3374df380bcf8f Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto <gbsneto@gnome.org> Date: Thu, 27 May 2021 19:55:04 -0300 -Subject: [PATCH 13/38] Client: Don't always recreate frame callbacks +Subject: [PATCH 10/57] Client: Don't always recreate frame callbacks The main QWaylandWindow method that is executed when handling updates is QWaylandWindow::handleUpdate(). This method always, unconditionally queues @@ -696,10 +590,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 2 files changed, 6 insertions(+) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index bd70f4af..85307875 100644 +index d57094a7..9de284de 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp -@@ -1170,6 +1170,10 @@ void QWaylandWindow::requestUpdate() +@@ -1199,6 +1199,10 @@ void QWaylandWindow::requestUpdate() void QWaylandWindow::handleUpdate() { qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread(); @@ -711,7 +605,7 @@ index bd70f4af..85307875 100644 QReadLocker lock(&mSurfaceLock); if (!mSurface) diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp -index 2fdd0a7c..e2593314 100644 +index 1423d647..46f07c0a 100644 --- a/tests/auto/client/xdgshell/tst_xdgshell.cpp +++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp @@ -138,6 +138,7 @@ void tst_xdgshell::configureSize() @@ -731,12 +625,12 @@ index 2fdd0a7c..e2593314 100644 void tst_xdgshell::popup() -- -2.36.0 +2.49.0 -From 1428e39b6e686faf4d25ab4f8506662bcc23e6f9 Mon Sep 17 00:00:00 2001 +From f0753e3fa7a2a531ca03a51a9ad35a3df4ecba0c Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto <gbsneto@gnome.org> Date: Thu, 27 May 2021 20:02:53 -0300 -Subject: [PATCH 14/38] Client: Always destroy frame callback in the actual +Subject: [PATCH 11/57] Client: Always destroy frame callback in the actual callback It's good hygiene to destroy all frame callbacks. Destroy the @@ -758,10 +652,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 85307875..c020a58f 100644 +index 9de284de..e0093013 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp -@@ -622,9 +622,13 @@ void QWaylandWindow::commit() +@@ -635,9 +635,13 @@ void QWaylandWindow::commit() const wl_callback_listener QWaylandWindow::callbackListener = { [](void *data, wl_callback *callback, uint32_t time) { @@ -776,7 +670,7 @@ index 85307875..c020a58f 100644 window->handleFrameCallback(); } }; -@@ -1179,11 +1183,6 @@ void QWaylandWindow::handleUpdate() +@@ -1208,11 +1212,6 @@ void QWaylandWindow::handleUpdate() if (!mSurface) return; @@ -789,52 +683,12 @@ index 85307875..c020a58f 100644 struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object())); wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue); -- -2.36.0 - -From 132be08e4d81c1e05b93f31a6e2b6a6bd65d5726 Mon Sep 17 00:00:00 2001 -From: Rodney Dawes <dobey.pwns@gmail.com> -Date: Fri, 15 Oct 2021 12:55:33 -0400 -Subject: [PATCH 15/38] Fix the logic for decoding modifiers map in Wayland - text input protocol - -Correctly check for the flags in the modifiers map when we get it from -the compositor, instead of modifying the map in the for loop conditional. +2.49.0 -[ChangeLog][QWaylandInputContext] Fix modifiers map decoding -logic when receiving the map from the compositor. - -Fixes: QTBUG-97094 -Pick-to: 6.2 5.15 5.12 -Change-Id: Idad19f7b1f4560d40abbb5b31032360cfe915261 -Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> ---- - src/client/qwaylandinputcontext.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp -index 503fd735..e290baa2 100644 ---- a/src/client/qwaylandinputcontext.cpp -+++ b/src/client/qwaylandinputcontext.cpp -@@ -387,8 +387,10 @@ void QWaylandTextInput::zwp_text_input_v2_input_method_changed(uint32_t serial, - Qt::KeyboardModifiers QWaylandTextInput::modifiersToQtModifiers(uint32_t modifiers) - { - Qt::KeyboardModifiers ret = Qt::NoModifier; -- for (int i = 0; modifiers >>= 1; ++i) { -- ret |= m_modifiersMap[i]; -+ for (int i = 0; i < m_modifiersMap.size(); ++i) { -+ if (modifiers & (1 << i)) { -+ ret |= m_modifiersMap[i]; -+ } - } - return ret; - } --- -2.36.0 - -From f73a3ec466eb30e554f918d6d2da2c5d1b0e23bd Mon Sep 17 00:00:00 2001 +From 8c2c86baa59e7e867ab62263df75749fe8b1401d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com> Date: Wed, 18 Aug 2021 18:28:20 +0200 -Subject: [PATCH 16/38] Wayland client: use wl_keyboard to determine active +Subject: [PATCH 12/57] Wayland client: use wl_keyboard to determine active state Commit f497a5bb87270174b8e0106b7eca1992d44ff15d made QWaylandDisplay @@ -879,10 +733,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 13 files changed, 39 insertions(+), 66 deletions(-) diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index e0dfe8b2..27303110 100644 +index 16f8ca1a..d1ca0274 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -575,14 +575,10 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic +@@ -579,14 +579,10 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic if (mLastKeyboardFocus == keyboardFocus) return; @@ -901,7 +755,7 @@ index e0dfe8b2..27303110 100644 mLastKeyboardFocus = keyboardFocus; } -@@ -627,6 +623,13 @@ QWaylandInputDevice *QWaylandDisplay::defaultInputDevice() const +@@ -631,6 +627,13 @@ QWaylandInputDevice *QWaylandDisplay::defaultInputDevice() const return mInputDevices.isEmpty() ? 0 : mInputDevices.first(); } @@ -916,10 +770,10 @@ index e0dfe8b2..27303110 100644 QWaylandCursor *QWaylandDisplay::waylandCursor() diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index 3b092bc8..09a1736a 100644 +index 1bad8b67..15104d65 100644 --- a/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h -@@ -215,6 +215,7 @@ public: +@@ -219,6 +219,7 @@ public: void destroyFrameQueue(const FrameQueue &q); void dispatchQueueWhile(wl_event_queue *queue, std::function<bool()> condition, int timeout = -1); @@ -928,7 +782,7 @@ index 3b092bc8..09a1736a 100644 void blockingReadEvents(); void flushRequests(); diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index c020a58f..ba881cb3 100644 +index e0093013..bba43a54 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -96,7 +96,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display) @@ -948,7 +802,7 @@ index c020a58f..ba881cb3 100644 } QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface) -@@ -1083,10 +1084,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab) +@@ -1112,10 +1113,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab) return true; } @@ -969,7 +823,7 @@ index c020a58f..ba881cb3 100644 } diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h -index 6cc1664b..e0687962 100644 +index 01337cff..fb3ed606 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -148,6 +148,7 @@ public: @@ -1067,10 +921,10 @@ index 261f8cbb..c1bcd5c6 100644 private: QScopedPointer<QWaylandXdgShellV6> m_xdgShell; diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp -index 7d33dabd..d7d0ddf7 100644 +index 45519ae5..e7bd5117 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp -@@ -67,11 +67,6 @@ QWaylandXdgSurface::Toplevel::Toplevel(QWaylandXdgSurface *xdgSurface) +@@ -68,11 +68,6 @@ QWaylandXdgSurface::Toplevel::Toplevel(QWaylandXdgSurface *xdgSurface) QWaylandXdgSurface::Toplevel::~Toplevel() { @@ -1082,7 +936,7 @@ index 7d33dabd..d7d0ddf7 100644 // The protocol spec requires that the decoration object is deleted before xdg_toplevel. delete m_decoration; m_decoration = nullptr; -@@ -85,16 +80,15 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() +@@ -86,16 +81,15 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size(); @@ -1142,7 +996,7 @@ index b6caa6c9..2f929f98 100644 private: QScopedPointer<QWaylandXdgShell> m_xdgShell; diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp -index e2593314..73d1eb9c 100644 +index 46f07c0a..1da70ff2 100644 --- a/tests/auto/client/xdgshell/tst_xdgshell.cpp +++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp @@ -31,6 +31,7 @@ @@ -1168,14 +1022,14 @@ index e2593314..73d1eb9c 100644 + Qt::WindowActive)); // Just make sure it eventually get's set correctly const QSize screenSize(640, 480); - const uint maximizedSerial = exec([=] { + const uint maximizedSerial = exec([&] { -- -2.36.0 +2.49.0 -From 83440ae9e002f0c7bdec6b54db6b382d2e28bf7d Mon Sep 17 00:00:00 2001 +From b69868cb4d7d7717d08a8294896acd4043292546 Mon Sep 17 00:00:00 2001 From: Jan Grulich <jgrulich@redhat.com> Date: Fri, 16 Jul 2021 13:00:03 +0200 -Subject: [PATCH 17/38] Client: do not empty clipboard when a new popup/window +Subject: [PATCH 13/57] Client: do not empty clipboard when a new popup/window is opened If we open a new popup or a window within the same app we have to avoid @@ -1195,10 +1049,10 @@ Cherry-pick: 1e57ebd501cfc2255300392cd4565cd034efeed8 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 27303110..9f595af3 100644 +index d1ca0274..7560bf41 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -597,6 +597,19 @@ void QWaylandDisplay::handleWaylandSync() +@@ -601,6 +601,19 @@ void QWaylandDisplay::handleWaylandSync() QWindow *activeWindow = mActiveWindows.empty() ? nullptr : mActiveWindows.last()->window(); if (activeWindow != QGuiApplication::focusWindow()) QWindowSystemInterface::handleWindowActivated(activeWindow); @@ -1219,10 +1073,10 @@ index 27303110..9f595af3 100644 const wl_callback_listener QWaylandDisplay::syncCallbackListener = { diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp -index 613fe862..aaec7eb8 100644 +index 5994774f..5ec64faf 100644 --- a/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp -@@ -1300,14 +1300,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed() +@@ -1303,14 +1303,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed() void QWaylandInputDevice::Keyboard::handleFocusLost() { mFocus = nullptr; @@ -1238,41 +1092,12 @@ index 613fe862..aaec7eb8 100644 mRepeatTimer.stop(); } -- -2.36.0 +2.49.0 -From 1a476429c2d9034322d5b3366ce53375e484353a Mon Sep 17 00:00:00 2001 -From: Weng Xuetian <wengxt@gmail.com> -Date: Sat, 18 Dec 2021 23:42:49 -0800 -Subject: [PATCH 18/38] Set preedit cursor when cursor equals to 0 - -Pick-to: 6.3 6.2 5.15 -Change-Id: I832fbb22d973b36ac4ab51570fc53bc2e4c3ed58 -Reviewed-by: Liang Qi <liang.qi@qt.io> -(cherry picked from commit 719a55be13bdadfa659a732755f280e276a894bd) ---- - src/shared/qwaylandinputmethodeventbuilder.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp -index 526d0ef4..25be2509 100644 ---- a/src/shared/qwaylandinputmethodeventbuilder.cpp -+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp -@@ -151,7 +151,7 @@ QInputMethodEvent QWaylandInputMethodEventBuilder::buildPreedit(const QString &t - { - QList<QInputMethodEvent::Attribute> attributes; - -- if (m_preeditCursor < 0) { -+ if (m_preeditCursor <= 0) { - attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant())); - } else if (m_preeditCursor > 0) { - attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant())); --- -2.36.0 - -From 8afae71a44d0d5a0be477863da791dd2dfe2027d Mon Sep 17 00:00:00 2001 +From 77d8a85bedfd1f91970c8cf39709853776f80933 Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Tue, 16 Feb 2021 09:51:47 +0000 -Subject: [PATCH 19/38] Client: Implement DataDeviceV3 +Subject: [PATCH 14/57] Client: Implement DataDeviceV3 DataDeviceV2 fixes a leak of DataDevice resources. @@ -1307,7 +1132,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 12 files changed, 153 insertions(+), 46 deletions(-) diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp -index bbd2d568..fbb5aa91 100644 +index 375f13fb..89e4e372 100644 --- a/src/client/qwaylanddatadevice.cpp +++ b/src/client/qwaylanddatadevice.cpp @@ -72,6 +72,8 @@ QWaylandDataDevice::QWaylandDataDevice(QWaylandDataDeviceManager *manager, QWayl @@ -1328,8 +1153,8 @@ index bbd2d568..fbb5aa91 100644 { auto *seat = m_display->currentInputDevice(); auto *origin = seat->pointerFocus(); -@@ -123,8 +125,28 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon) - } +@@ -129,8 +131,28 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon) + mimeData->setData("application/x-qt-avoid-empty-placeholder", QByteArray("1")); m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData)); + @@ -1358,7 +1183,7 @@ index bbd2d568..fbb5aa91 100644 start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial()); return true; -@@ -153,7 +175,7 @@ void QWaylandDataDevice::data_device_drop() +@@ -159,7 +181,7 @@ void QWaylandDataDevice::data_device_drop() supportedActions = drag->supportedActions(); } else if (m_dragOffer) { dragData = m_dragOffer->mimeData(); @@ -1367,7 +1192,7 @@ index bbd2d568..fbb5aa91 100644 } else { return; } -@@ -163,7 +185,11 @@ void QWaylandDataDevice::data_device_drop() +@@ -169,7 +191,11 @@ void QWaylandDataDevice::data_device_drop() QGuiApplication::keyboardModifiers()); if (drag) { @@ -1380,7 +1205,7 @@ index bbd2d568..fbb5aa91 100644 } } -@@ -187,7 +213,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, +@@ -193,7 +219,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, supportedActions = drag->supportedActions(); } else if (m_dragOffer) { dragData = m_dragOffer->mimeData(); @@ -1389,7 +1214,7 @@ index bbd2d568..fbb5aa91 100644 } const QPlatformDragQtResponse &response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions, -@@ -198,11 +224,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, +@@ -204,11 +230,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response); } @@ -1402,7 +1227,7 @@ index bbd2d568..fbb5aa91 100644 } void QWaylandDataDevice::data_device_leave() -@@ -236,10 +258,10 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe +@@ -242,10 +264,10 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe supportedActions = drag->supportedActions(); } else { dragData = m_dragOffer->mimeData(); @@ -1415,7 +1240,7 @@ index bbd2d568..fbb5aa91 100644 QGuiApplication::mouseButtons(), QGuiApplication::keyboardModifiers()); -@@ -247,11 +269,7 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe +@@ -253,11 +275,7 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response); } @@ -1428,7 +1253,7 @@ index bbd2d568..fbb5aa91 100644 } #endif // QT_CONFIG(draganddrop) -@@ -281,11 +299,6 @@ void QWaylandDataDevice::dragSourceCancelled() +@@ -287,11 +305,6 @@ void QWaylandDataDevice::dragSourceCancelled() m_dragSource.reset(); } @@ -1440,7 +1265,7 @@ index bbd2d568..fbb5aa91 100644 QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) const { QPoint pnt(wl_fixed_to_int(x), wl_fixed_to_int(y)); -@@ -298,6 +311,33 @@ QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) con +@@ -304,6 +317,33 @@ QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) con } return pnt; } @@ -1542,10 +1367,10 @@ index bd05c0fb..510d9be4 100644 QWaylandDataDevice *getDataDevice(QWaylandInputDevice *inputDevice); diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp -index 2297e8a1..c9e158cc 100644 +index 6046a9b5..09e29973 100644 --- a/src/client/qwaylanddataoffer.cpp +++ b/src/client/qwaylanddataoffer.cpp -@@ -82,6 +82,15 @@ QMimeData *QWaylandDataOffer::mimeData() +@@ -87,6 +87,15 @@ QMimeData *QWaylandDataOffer::mimeData() return m_mimeData.data(); } @@ -1561,7 +1386,7 @@ index 2297e8a1..c9e158cc 100644 void QWaylandDataOffer::startReceiving(const QString &mimeType, int fd) { receive(mimeType, fd); -@@ -93,6 +102,22 @@ void QWaylandDataOffer::data_offer_offer(const QString &mime_type) +@@ -98,6 +107,22 @@ void QWaylandDataOffer::data_offer_offer(const QString &mime_type) m_mimeData->appendFormat(mime_type); } @@ -1611,10 +1436,10 @@ index 9cf1483c..6f667398 100644 diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp -index f45122fb..5599cbd4 100644 +index c86c1416..321170a6 100644 --- a/src/client/qwaylanddatasource.cpp +++ b/src/client/qwaylanddatasource.cpp -@@ -101,7 +101,32 @@ void QWaylandDataSource::data_source_send(const QString &mime_type, int32_t fd) +@@ -105,7 +105,32 @@ void QWaylandDataSource::data_source_send(const QString &mime_type, int32_t fd) void QWaylandDataSource::data_source_target(const QString &mime_type) { @@ -1649,11 +1474,11 @@ index f45122fb..5599cbd4 100644 } diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h -index 25afff79..96f07bc3 100644 +index 520b3165..089c5485 100644 --- a/src/client/qwaylanddatasource_p.h +++ b/src/client/qwaylanddatasource_p.h -@@ -77,17 +77,25 @@ public: - QMimeData *mimeData() const; +@@ -75,16 +75,24 @@ public: + ~QWaylandDataSource() override; Q_SIGNALS: - void targetChanged(const QString &mime_type); @@ -1672,7 +1497,6 @@ index 25afff79..96f07bc3 100644 + void data_source_action(uint32_t action) override; private: - QWaylandDisplay *m_display = nullptr; QMimeData *m_mime_data = nullptr; + bool m_accepted = false; + Qt::DropAction m_dropAction = Qt::IgnoreAction; @@ -1680,10 +1504,10 @@ index 25afff79..96f07bc3 100644 } diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 9f595af3..ea344c61 100644 +index 7560bf41..7f28d01c 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -354,7 +354,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin +@@ -356,7 +356,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin mInputDevices.append(inputDevice); #if QT_CONFIG(wayland_datadevice) } else if (interface == QStringLiteral("wl_data_device_manager")) { @@ -1780,12 +1604,12 @@ index 1568b3b9..067410d0 100644 class DataDeviceCompositor : public DefaultCompositor { public: -- -2.36.0 +2.49.0 -From e92aff243eca4c1e30c093692dce6f7c91d7a19c Mon Sep 17 00:00:00 2001 +From fd53a9ccbb0c5e3b8dc5b436c34958761cb4c5a4 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra <ahiemstra@heimr.nl> Date: Thu, 18 Nov 2021 13:05:30 +0100 -Subject: [PATCH 20/38] Client: Delay deletion of QDrag object until after +Subject: [PATCH 15/57] Client: Delay deletion of QDrag object until after we're done with it In certain cases, most notably when performing drag and drop operations @@ -1847,12 +1671,12 @@ index 747f0190..46f629ac 100644 private: QWaylandDisplay *m_display = nullptr; -- -2.36.0 +2.49.0 -From 340e89575c93435abab78ac73603b405f1f05ceb Mon Sep 17 00:00:00 2001 +From 757c941881e535178bf92ffc5c40f8ac7485b975 Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Sun, 14 Nov 2021 13:54:19 +0000 -Subject: [PATCH 21/38] Client: Avoid processing of events when showing windows +Subject: [PATCH 16/57] Client: Avoid processing of events when showing windows The only time we want to dispatch events from the wayland socket is when the application is waiting for external events. Doing so at any other @@ -1873,10 +1697,10 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> 1 file changed, 1 deletion(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index ba881cb3..1597f67e 100644 +index bba43a54..41e56d24 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp -@@ -436,7 +436,6 @@ void QWaylandWindow::setVisible(bool visible) +@@ -437,7 +437,6 @@ void QWaylandWindow::setVisible(bool visible) if (window()->type() == Qt::Popup || window()->type() == Qt::ToolTip) activePopups << this; initWindow(); @@ -1885,12 +1709,12 @@ index ba881cb3..1597f67e 100644 setGeometry(windowGeometry()); // Don't flush the events here, or else the newly visible window may start drawing, but since -- -2.36.0 +2.49.0 -From de7afd339100cac1470f875eafc22d3ee87870bd Mon Sep 17 00:00:00 2001 +From 980225f489e7ec09068c5ea2a51c14692a986c67 Mon Sep 17 00:00:00 2001 From: Elvis Lee <kwangwoong.lee@lge.com> Date: Thu, 18 Feb 2021 15:45:49 +0900 -Subject: [PATCH 22/38] Handle registry_global out of constructor +Subject: [PATCH 17/57] Handle registry_global out of constructor Factory functions in QWaylandDisplay::registry_global() can be overridden. Later, other classes instantiated in the registry_global can support @@ -1906,10 +1730,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index ea344c61..0f75cb7e 100644 +index 7f28d01c..c2482030 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -158,13 +158,6 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) +@@ -160,13 +160,6 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) if (!mXkbContext) qCWarning(lcQpaWayland, "failed to create xkb context"); #endif @@ -1923,7 +1747,7 @@ index ea344c61..0f75cb7e 100644 } QWaylandDisplay::~QWaylandDisplay(void) -@@ -189,6 +182,18 @@ QWaylandDisplay::~QWaylandDisplay(void) +@@ -191,6 +184,18 @@ QWaylandDisplay::~QWaylandDisplay(void) wl_display_disconnect(mDisplay); } @@ -1943,10 +1767,10 @@ index ea344c61..0f75cb7e 100644 { if (!mScreens.empty() || mPlaceholderScreen) diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index 09a1736a..d9c8849f 100644 +index 15104d65..49820255 100644 --- a/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h -@@ -129,6 +129,8 @@ public: +@@ -131,6 +131,8 @@ public: QWaylandDisplay(QWaylandIntegration *waylandIntegration); ~QWaylandDisplay(void) override; @@ -1956,7 +1780,7 @@ index 09a1736a..d9c8849f 100644 struct xkb_context *xkbContext() const { return mXkbContext.get(); } #endif diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp -index e5e7dd42..f5632982 100644 +index cd8569b1..8afecb31 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -200,6 +200,9 @@ void QWaylandIntegration::initialize() @@ -1970,12 +1794,12 @@ index e5e7dd42..f5632982 100644 mDisplay->ensureScreen(); } -- -2.36.0 +2.49.0 -From a5df6f67f446ed091c688336510b5da2970a0d84 Mon Sep 17 00:00:00 2001 +From 21ddde34937f948deeb0e1e69068e291d1ec6556 Mon Sep 17 00:00:00 2001 From: Elvis Lee <kwangwoong.lee@lge.com> Date: Wed, 17 Mar 2021 16:31:10 +0900 -Subject: [PATCH 23/38] Connect flushRequest after forceRoundTrip +Subject: [PATCH 18/57] Connect flushRequest after forceRoundTrip If flushRequest is connected with aboutToBlock, the flushRequest may consumes all events so that processEvents might be blocked in forceRoundTrip. @@ -1988,7 +1812,7 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp -index f5632982..3a6fa651 100644 +index 8afecb31..661cea53 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -192,10 +192,6 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const @@ -2017,12 +1841,12 @@ index f5632982..3a6fa651 100644 mDisplay->ensureScreen(); } -- -2.36.0 +2.49.0 -From 967883d20e94183bd9cf6648297b9d76ba0e167e Mon Sep 17 00:00:00 2001 +From 52a15fa6e08b056dcff74afc677d895251b97148 Mon Sep 17 00:00:00 2001 From: Adrien Faveraux <af@brain-networks.fr> Date: Fri, 26 Nov 2021 09:18:58 +0100 -Subject: [PATCH 24/38] Move the wayland socket polling to a separate event +Subject: [PATCH 19/57] Move the wayland socket polling to a separate event thread New event threads is introduced which calls poll() on the wayland fd, @@ -2053,10 +1877,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 5 files changed, 255 insertions(+), 108 deletions(-) diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 0f75cb7e..a7ce280a 100644 +index c2482030..c38f6f82 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -85,10 +85,203 @@ +@@ -87,10 +87,203 @@ #include <errno.h> @@ -2260,7 +2084,7 @@ index 0f75cb7e..a7ce280a 100644 Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland"); // for general (uncategorized) Wayland platform logging struct wl_surface *QWaylandDisplay::createSurface(void *handle) -@@ -162,6 +355,12 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) +@@ -164,6 +357,12 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) QWaylandDisplay::~QWaylandDisplay(void) { @@ -2273,7 +2097,7 @@ index 0f75cb7e..a7ce280a 100644 if (mSyncCallback) wl_callback_destroy(mSyncCallback); -@@ -208,98 +407,37 @@ void QWaylandDisplay::ensureScreen() +@@ -210,98 +409,37 @@ void QWaylandDisplay::ensureScreen() void QWaylandDisplay::checkError() const { @@ -2392,18 +2216,20 @@ index 0f75cb7e..a7ce280a 100644 } QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const -@@ -674,4 +812,6 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p +@@ -678,6 +816,8 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p } // namespace QtWaylandClient +#include "qwaylanddisplay.moc" + QT_END_NAMESPACE + + #include "moc_qwaylanddisplay_p.cpp" diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index d9c8849f..42bc661d 100644 +index 49820255..cf91b924 100644 --- a/src/client/qwaylanddisplay_p.h +++ b/src/client/qwaylanddisplay_p.h -@@ -109,6 +109,7 @@ class QWaylandSurface; +@@ -111,6 +111,7 @@ class QWaylandSurface; class QWaylandShellIntegration; class QWaylandCursor; class QWaylandCursorTheme; @@ -2411,7 +2237,7 @@ index d9c8849f..42bc661d 100644 typedef void (*RegistryListener)(void *data, struct wl_registry *registry, -@@ -120,12 +121,6 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDisplay : public QObject, public QtWayland +@@ -122,12 +123,6 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDisplay : public QObject, public QtWayland Q_OBJECT public: @@ -2424,7 +2250,7 @@ index d9c8849f..42bc661d 100644 QWaylandDisplay(QWaylandIntegration *waylandIntegration); ~QWaylandDisplay(void) override; -@@ -212,12 +207,11 @@ public: +@@ -216,12 +211,11 @@ public: void handleKeyboardFocusChanged(QWaylandInputDevice *inputDevice); void handleWindowDestroyed(QWaylandWindow *window); @@ -2440,7 +2266,7 @@ index d9c8849f..42bc661d 100644 public slots: void blockingReadEvents(); void flushRequests(); -@@ -240,6 +234,9 @@ private: +@@ -244,6 +238,9 @@ private: }; struct wl_display *mDisplay = nullptr; @@ -2450,7 +2276,7 @@ index d9c8849f..42bc661d 100644 QtWayland::wl_compositor mCompositor; QScopedPointer<QWaylandShm> mShm; QList<QWaylandScreen *> mWaitingScreens; -@@ -276,11 +273,9 @@ private: +@@ -282,11 +279,9 @@ private: QWaylandInputDevice *mLastInputDevice = nullptr; QPointer<QWaylandWindow> mLastInputWindow; QPointer<QWaylandWindow> mLastKeyboardFocus; @@ -2464,7 +2290,7 @@ index d9c8849f..42bc661d 100644 bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull(); diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp -index 3a6fa651..3b876047 100644 +index 661cea53..fbf00c6b 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -192,9 +192,7 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const @@ -2479,7 +2305,7 @@ index 3a6fa651..3b876047 100644 // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip() mDisplay->initialize(); diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 1597f67e..7de19a74 100644 +index 41e56d24..a38f7d55 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr; @@ -2499,7 +2325,7 @@ index 1597f67e..7de19a74 100644 delete mWindowDecoration; if (mSurface) -@@ -635,6 +632,8 @@ const wl_callback_listener QWaylandWindow::callbackListener = { +@@ -648,6 +645,8 @@ const wl_callback_listener QWaylandWindow::callbackListener = { void QWaylandWindow::handleFrameCallback() { @@ -2508,7 +2334,7 @@ index 1597f67e..7de19a74 100644 mWaitingForFrameCallback = false; mFrameCallbackElapsedTimer.invalidate(); -@@ -656,12 +655,16 @@ void QWaylandWindow::handleFrameCallback() +@@ -669,12 +668,16 @@ void QWaylandWindow::handleFrameCallback() mWaitingForUpdateDelivery = true; QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection); } @@ -2527,7 +2353,7 @@ index 1597f67e..7de19a74 100644 if (mWaitingForFrameCallback) { qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; -@@ -1157,8 +1160,11 @@ void QWaylandWindow::requestUpdate() +@@ -1186,8 +1189,11 @@ void QWaylandWindow::requestUpdate() Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA // If we have a frame callback all is good and will be taken care of there @@ -2541,7 +2367,7 @@ index 1597f67e..7de19a74 100644 // If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet // This is a somewhat redundant behavior and might indicate a bug in the calling code, so log -@@ -1171,7 +1177,12 @@ void QWaylandWindow::requestUpdate() +@@ -1200,7 +1206,12 @@ void QWaylandWindow::requestUpdate() // so use invokeMethod to delay the delivery a bit. QMetaObject::invokeMethod(this, [this] { // Things might have changed in the meantime @@ -2555,7 +2381,7 @@ index 1597f67e..7de19a74 100644 deliverUpdateRequest(); }, Qt::QueuedConnection); } -@@ -1191,9 +1202,10 @@ void QWaylandWindow::handleUpdate() +@@ -1220,9 +1231,10 @@ void QWaylandWindow::handleUpdate() if (!mSurface) return; @@ -2568,7 +2394,7 @@ index 1597f67e..7de19a74 100644 mFrameCallback = wl_surface_frame(wrappedSurface); wl_proxy_wrapper_destroy(wrappedSurface); wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this); -@@ -1203,6 +1215,8 @@ void QWaylandWindow::handleUpdate() +@@ -1232,6 +1244,8 @@ void QWaylandWindow::handleUpdate() // Start a timer for handling the case when the compositor stops sending frame callbacks. if (mFrameCallbackTimeout > 0) { QMetaObject::invokeMethod(this, [this] { @@ -2578,7 +2404,7 @@ index 1597f67e..7de19a74 100644 if (mFrameCallbackCheckIntervalTimerId < 0) mFrameCallbackCheckIntervalTimerId = startTimer(mFrameCallbackTimeout); diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h -index e0687962..d45980a8 100644 +index fb3ed606..54ac67a9 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -232,7 +232,7 @@ protected: @@ -2591,241 +2417,12 @@ index e0687962..d45980a8 100644 // True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer -- -2.36.0 - -From 520f58c24e0fbb33f84f329fc9879b72710c77ae Mon Sep 17 00:00:00 2001 -From: Roman Genkhel <roman.genhel@lge.com> -Date: Thu, 12 Nov 2020 12:21:51 +0300 -Subject: [PATCH 25/38] Check pointer for null before use in ASSERT - -Task-number: QTBUG-85195 -Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414 -Reviewed-by: David Edmundson <davidedmundson@kde.org> -(cherry picked from commit e235e8ddb1fc3cc5ab3b70b1fb285770b2c8c9ca) ---- - src/client/qwaylandwindow.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 7de19a74..ac01dc05 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -552,8 +552,8 @@ void QWaylandWindow::sendRecursiveExposeEvent() - - void QWaylandWindow::attach(QWaylandBuffer *buffer, int x, int y) - { -- Q_ASSERT(!buffer->committed()); - if (buffer) { -+ Q_ASSERT(!buffer->committed()); - handleUpdate(); - buffer->setBusy(); - --- -2.36.0 - -From 72f64f397c72afb22df1825382e17a310517add1 Mon Sep 17 00:00:00 2001 -From: Inho Lee <inho.lee@qt.io> -Date: Mon, 1 Nov 2021 14:23:58 +0100 -Subject: [PATCH 26/38] Do not create decorations when the shellSurface is not - ready - -A cases reported that client windows try to make decorations -when their shell surfaces are null. -Since the surfaces' requests for decorations should be applied, -those case will be failed to create decorations. - -This patch was modified by Paul Tvete's advice. -(paul.tvete@qt.io) - -Pick-to: 6.2 5.15 -Task-number: QTBUG-97608 -Change-Id: I2563dbd73b730f81cc411857af07da99ceb2d063 -Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> -(cherry picked from commit 246f0c0bc01dd059bf8165e81f7b49efa36e4d95) ---- - src/client/qwaylandwindow.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index ac01dc05..acfe390e 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -813,7 +813,7 @@ bool QWaylandWindow::createDecoration() - decoration = false; - if (mSubSurfaceWindow) - decoration = false; -- if (mShellSurface && !mShellSurface->wantsDecorations()) -+ if (!mShellSurface || !mShellSurface->wantsDecorations()) - decoration = false; - - bool hadDecoration = mWindowDecoration; --- -2.36.0 - -From 6935647966b456e760745a6b2a13a04ba6543803 Mon Sep 17 00:00:00 2001 -From: Paul Olav Tvete <paul.tvete@qt.io> -Date: Mon, 6 Jul 2020 14:37:35 +0200 -Subject: [PATCH 27/38] Use wl_surface.damage_buffer on the client side - -Prefer the newer, recommended damage_buffer when the compositor -supports it. - -Fixes: QTBUG-74929 -Change-Id: I9107966910b616a666931404a7b41bfac14c22c0 -Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> -(cherry picked from commit 314fd6db51277224cdc799b039ef79db1101f5cd) ---- - src/client/qwaylanddisplay.cpp | 2 +- - src/client/qwaylandwindow.cpp | 16 +++++++++++++--- - tests/auto/client/shared/coreprotocol.h | 2 +- - tests/auto/client/shared_old/mockcompositor.cpp | 2 +- - tests/auto/client/shared_old/mocksurface.cpp | 10 ++++++++++ - tests/auto/client/shared_old/mocksurface.h | 2 ++ - 6 files changed, 28 insertions(+), 6 deletions(-) - -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index a7ce280a..6f1bada5 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -488,7 +488,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - if (interface == QStringLiteral("wl_output")) { - mWaitingScreens << new QWaylandScreen(this, version, id); - } else if (interface == QStringLiteral("wl_compositor")) { -- mCompositorVersion = qMin((int)version, 3); -+ mCompositorVersion = qMin((int)version, 4); - mCompositor.init(registry, id, mCompositorVersion); - } else if (interface == QStringLiteral("wl_shm")) { - mShm.reset(new QWaylandShm(this, version, id)); -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index acfe390e..4c5711a0 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -571,7 +571,11 @@ void QWaylandWindow::attachOffset(QWaylandBuffer *buffer) - - void QWaylandWindow::damage(const QRect &rect) - { -- mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); -+ const int s = scale(); -+ if (mDisplay->compositorVersion() >= 4) -+ mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()); -+ else -+ mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); - } - - void QWaylandWindow::safeCommit(QWaylandBuffer *buffer, const QRegion &damage) -@@ -605,8 +609,14 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage) - return; - - attachOffset(buffer); -- for (const QRect &rect: damage) -- mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); -+ if (mDisplay->compositorVersion() >= 4) { -+ const int s = scale(); -+ for (const QRect &rect: damage) -+ mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()); -+ } else { -+ for (const QRect &rect: damage) -+ mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); -+ } - Q_ASSERT(!buffer->committed()); - buffer->setCommitted(); - mSurface->commit(); -diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h -index a1af137a..296dbf47 100644 ---- a/tests/auto/client/shared/coreprotocol.h -+++ b/tests/auto/client/shared/coreprotocol.h -@@ -158,7 +158,7 @@ class WlCompositor : public Global, public QtWaylandServer::wl_compositor - { - Q_OBJECT - public: -- explicit WlCompositor(CoreCompositor *compositor, int version = 3) -+ explicit WlCompositor(CoreCompositor *compositor, int version = 4) - : QtWaylandServer::wl_compositor(compositor->m_display, version) - , m_compositor(compositor) - {} -diff --git a/tests/auto/client/shared_old/mockcompositor.cpp b/tests/auto/client/shared_old/mockcompositor.cpp -index a415cbf5..b1d3d07d 100644 ---- a/tests/auto/client/shared_old/mockcompositor.cpp -+++ b/tests/auto/client/shared_old/mockcompositor.cpp -@@ -342,7 +342,7 @@ Compositor::Compositor(MockCompositor *mockCompositor) - exit(EXIT_FAILURE); - } - -- wl_global_create(m_display, &wl_compositor_interface, 1, this, bindCompositor); -+ wl_global_create(m_display, &wl_compositor_interface, 4, this, bindCompositor); - - m_data_device_manager.reset(new DataDeviceManager(this, m_display)); - -diff --git a/tests/auto/client/shared_old/mocksurface.cpp b/tests/auto/client/shared_old/mocksurface.cpp -index e9df5f90..c3246e4a 100644 ---- a/tests/auto/client/shared_old/mocksurface.cpp -+++ b/tests/auto/client/shared_old/mocksurface.cpp -@@ -125,6 +125,16 @@ void Surface::surface_damage(Resource *resource, - Q_UNUSED(height); - } - -+void Surface::surface_damage_buffer(Resource *resource, -+ int32_t x, int32_t y, int32_t width, int32_t height) -+{ -+ Q_UNUSED(resource); -+ Q_UNUSED(x); -+ Q_UNUSED(y); -+ Q_UNUSED(width); -+ Q_UNUSED(height); -+} -+ - void Surface::surface_frame(Resource *resource, - uint32_t callback) - { -diff --git a/tests/auto/client/shared_old/mocksurface.h b/tests/auto/client/shared_old/mocksurface.h -index 949dc23d..d176837e 100644 ---- a/tests/auto/client/shared_old/mocksurface.h -+++ b/tests/auto/client/shared_old/mocksurface.h -@@ -65,6 +65,8 @@ protected: - struct wl_resource *buffer, int x, int y) override; - void surface_damage(Resource *resource, - int32_t x, int32_t y, int32_t width, int32_t height) override; -+ void surface_damage_buffer(Resource *resource, -+ int32_t x, int32_t y, int32_t width, int32_t height) override; - void surface_frame(Resource *resource, - uint32_t callback) override; - void surface_commit(Resource *resource) override; --- -2.36.0 - -From 506d0372178134f208fd08b3f6b9499fc0e14a5e Mon Sep 17 00:00:00 2001 -From: Joni Poikelin <joni.poikelin@qt.io> -Date: Thu, 3 Feb 2022 14:01:50 +0200 -Subject: [PATCH 28/38] Fix crash if no input method module could be loaded - -Pick-to: 6.2 6.3 5.15 -Change-Id: I8f346def616606a6c5540856bd08a84ee7ed5ca2 -Reviewed-by: David Edmundson <davidedmundson@kde.org> -(cherry picked from commit 49fb7248f6ab7de046e2179c7861951ea1169e9b) ---- - src/client/qwaylandintegration.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) +2.49.0 -diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp -index 3b876047..fbf00c6b 100644 ---- a/src/client/qwaylandintegration.cpp -+++ b/src/client/qwaylandintegration.cpp -@@ -491,7 +491,7 @@ void QWaylandIntegration::reconfigureInputContext() - } - #endif - -- qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className(); -+ qCDebug(lcQpaWayland) << "using input method:" << (inputContext() ? inputContext()->metaObject()->className() : "<none>"); - } - - QWaylandShellIntegration *QWaylandIntegration::createShellIntegration(const QString &integrationName) --- -2.36.0 - -From c2e56e076f0ded39b1ab34ebf07afad2f344f53f Mon Sep 17 00:00:00 2001 +From 0068c01fc78ef3f4a2e75adf21028a44c239bff7 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Date: Tue, 1 Feb 2022 13:05:36 +0200 -Subject: [PATCH 29/38] Client: Remove mWaitingForUpdateDelivery +Subject: [PATCH 20/57] Client: Remove mWaitingForUpdateDelivery Currently, mWaitingForUpdateDelivery is shared between the main thread (doHandleFrameCallback()) and the frame callback event thread @@ -2847,10 +2444,10 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org> 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 4c5711a0..949374b1 100644 +index a38f7d55..6bf0fc4b 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp -@@ -648,23 +648,18 @@ void QWaylandWindow::handleFrameCallback() +@@ -651,23 +651,18 @@ void QWaylandWindow::handleFrameCallback() mFrameCallbackElapsedTimer.invalidate(); // The rest can wait until we can run it on the correct thread @@ -2887,7 +2484,7 @@ index 4c5711a0..949374b1 100644 mFrameSyncWait.notify_all(); } diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h -index d45980a8..3ff68ccb 100644 +index 54ac67a9..cf7ce879 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -228,7 +228,6 @@ protected: @@ -2899,135 +2496,12 @@ index d45980a8..3ff68ccb 100644 QElapsedTimer mFrameCallbackElapsedTimer; struct ::wl_callback *mFrameCallback = nullptr; -- -2.36.0 - -From 2d0bd70b55ebde2e22d0b95e8122235f90c8f9f1 Mon Sep 17 00:00:00 2001 -From: Weng Xuetian <wengxt@gmail.com> -Date: Tue, 8 Feb 2022 07:11:25 -0800 -Subject: [PATCH 30/38] Cursor position == 0 should still show the cursor - -Otherwise the cursor would be hidden even if preedit is empty. -Amends 719a55be13bdadfa659a732755f280e276a894bd - -Pick-to: 5.15 6.2 6.3 -Change-Id: I320733b917779b7b51aa4a28eaea411fdb10a318 -Reviewed-by: Liang Qi <liang.qi@qt.io> -(cherry picked from commit 31ae194e295651d9ece03408630d2358acd4f7b4) ---- - src/shared/qwaylandinputmethodeventbuilder.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp -index 25be2509..458d818e 100644 ---- a/src/shared/qwaylandinputmethodeventbuilder.cpp -+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp -@@ -151,9 +151,9 @@ QInputMethodEvent QWaylandInputMethodEventBuilder::buildPreedit(const QString &t - { - QList<QInputMethodEvent::Attribute> attributes; - -- if (m_preeditCursor <= 0) { -+ if (m_preeditCursor < 0) { - attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant())); -- } else if (m_preeditCursor > 0) { -+ } else { - attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant())); - } - --- -2.36.0 - -From f0f7b2bea822f73ae00fcfd4ee1679596d550a20 Mon Sep 17 00:00:00 2001 -From: Weng Xuetian <wengxt@gmail.com> -Date: Wed, 22 Dec 2021 10:42:38 -0800 -Subject: [PATCH 31/38] Update the preedit styling mapping - -- None mapping to no style. -- Default/Underline mapping to underline. -- Highlight/Selection mapping to background color/text color with highlight/highlight -text with underline. -- Active/Inactive mapping to bold text with underline. -- Incorrect mapping to red wave underline. - -Pick-to: 5.15 6.2 6.3 -Change-Id: Iab51d671b8f83aece8596f7f7610de19343fcceb -Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> -(cherry picked from commit f1fb5d9e568a24e213ee41e82a1142cef56f1098) ---- - .../qwaylandinputmethodeventbuilder.cpp | 31 ++++++++++++------- - 1 file changed, 20 insertions(+), 11 deletions(-) - -diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp -index 458d818e..f50ccf30 100644 ---- a/src/shared/qwaylandinputmethodeventbuilder.cpp -+++ b/src/shared/qwaylandinputmethodeventbuilder.cpp -@@ -39,7 +39,10 @@ - - #include "qwaylandinputmethodeventbuilder_p.h" - -+#include <QBrush> -+#include <QGuiApplication> - #include <QInputMethod> -+#include <QPalette> - #include <QTextCharFormat> - - #ifdef QT_BUILD_WAYLANDCOMPOSITOR_LIB -@@ -81,32 +84,38 @@ void QWaylandInputMethodEventBuilder::addPreeditStyling(uint32_t index, uint32_t - QTextCharFormat format; - - switch (style) { -- case 0: -- case 1: -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_NONE: -+ break; -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_DEFAULT: -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_UNDERLINE: - format.setFontUnderline(true); - format.setUnderlineStyle(QTextCharFormat::SingleUnderline); - m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format)); - break; -- case 2: -- case 3: -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_ACTIVE: -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INACTIVE: - format.setFontWeight(QFont::Bold); - format.setFontUnderline(true); - format.setUnderlineStyle(QTextCharFormat::SingleUnderline); - m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format)); - break; -- case 4: -- format.setFontUnderline(true); -- format.setUnderlineStyle(QTextCharFormat::SingleUnderline); -- m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format)); -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_HIGHLIGHT: -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_SELECTION: -+ { -+ format.setFontUnderline(true); -+ format.setUnderlineStyle(QTextCharFormat::SingleUnderline); -+ QPalette palette = qApp->palette(); -+ format.setBackground(QBrush(palette.color(QPalette::Active, QPalette::Highlight))); -+ format.setForeground(QBrush(palette.color(QPalette::Active, QPalette::HighlightedText))); -+ m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format)); -+ } - break; -- case 5: -+ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INCORRECT: - format.setFontUnderline(true); - format.setUnderlineStyle(QTextCharFormat::WaveUnderline); - format.setUnderlineColor(QColor(Qt::red)); - m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format)); - break; --// case QtWayland::wl_text_input::preedit_style_selection: --// case QtWayland::wl_text_input::preedit_style_none: - default: - break; - } --- -2.36.0 +2.49.0 -From 596ecf46bb0c2427cda2894dd2157b3f5a2cd34f Mon Sep 17 00:00:00 2001 +From a9f4245f4d42f544414f6bde4dc132aaf3622af0 Mon Sep 17 00:00:00 2001 From: David Edmundson <davidedmundson@kde.org> Date: Wed, 9 Feb 2022 17:20:48 +0000 -Subject: [PATCH 32/38] client: Simplify round trip behavior +Subject: [PATCH 21/57] client: Simplify round trip behavior The custom event queue was removed in 302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not @@ -3048,10 +2522,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 1 file changed, 1 insertion(+), 42 deletions(-) diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 6f1bada5..86045a35 100644 +index c38f6f82..b8da02b3 100644 --- a/src/client/qwaylanddisplay.cpp +++ b/src/client/qwaylanddisplay.cpp -@@ -611,50 +611,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec() +@@ -615,50 +615,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec() return 0; } @@ -3104,12 +2578,12 @@ index 6f1bada5..86045a35 100644 bool QWaylandDisplay::supportsWindowDecoration() const -- -2.36.0 +2.49.0 -From f7b7b39d00ae31676fc678446d7090e7a9dd95b4 Mon Sep 17 00:00:00 2001 +From 089279664f3586bb77b5378575f33af208732571 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Date: Sat, 19 Feb 2022 17:01:04 +0200 -Subject: [PATCH 33/38] Client: Fix opaque region setter +Subject: [PATCH 22/57] Client: Fix opaque region setter The rect is in the global coordinate system, while the opaque region must be in the surface local coordinate system. @@ -3122,7 +2596,7 @@ Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 949374b1..fee2ecdd 100644 +index 6bf0fc4b..9cc8cb12 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -372,7 +372,7 @@ void QWaylandWindow::setGeometry(const QRect &rect) @@ -3135,12 +2609,12 @@ index 949374b1..fee2ecdd 100644 void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset) -- -2.36.0 +2.49.0 -From 6a95428357872353a20ab6dcc5f8facdb520e8dc Mon Sep 17 00:00:00 2001 +From d8b932f753536c96acf8e8fc5cf774e8acae360e Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fabian@ritter-vogt.de> Date: Fri, 4 Feb 2022 11:07:36 +0100 -Subject: [PATCH 34/38] Use proper dependencies in compile tests +Subject: [PATCH 23/57] Use proper dependencies in compile tests Use the dependencies as found by the "libraries" section instead of relying on them being available in the default location (e.g. "-ldrm"). @@ -3157,25 +2631,15 @@ different patch and not a cherry-pick of 5fc2e1915c3a Fixes: QTBUG-100475 --- - src/client/configure.json | 8 ++++---- - src/compositor/configure.json | 34 +++++++++++++++++++++++++++++----- - 2 files changed, 33 insertions(+), 9 deletions(-) + src/client/configure.json | 5 +++-- + src/compositor/configure.json | 28 +++++++++++++++++++++++++++- + 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/client/configure.json b/src/client/configure.json -index 2f424580..29222357 100644 +index 73f23362..6247f85e 100644 --- a/src/client/configure.json +++ b/src/client/configure.json -@@ -149,8 +149,7 @@ - "#endif" - ] - }, -- "libs": "-ldrm", -- "use": "egl" -+ "use": "drm egl" - }, - "vulkan-server-buffer": { - "label": "Vulkan Buffer Sharing", -@@ -168,7 +167,8 @@ +@@ -167,7 +167,8 @@ "exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;", "return 0;" ] @@ -3185,7 +2649,7 @@ index 2f424580..29222357 100644 }, "egl_1_5-wayland": { "label": "EGL 1.5 with Wayland Platform", -@@ -183,7 +183,7 @@ +@@ -182,7 +183,7 @@ "eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);" ] }, @@ -3195,7 +2659,7 @@ index 2f424580..29222357 100644 }, diff --git a/src/compositor/configure.json b/src/compositor/configure.json -index bcfd5215..da95d07b 100644 +index c5b0f03e..031e4cc3 100644 --- a/src/compositor/configure.json +++ b/src/compositor/configure.json @@ -7,6 +7,31 @@ @@ -3230,27 +2694,7 @@ index bcfd5215..da95d07b 100644 "wayland-server": { "label": "wayland-server", "headers": "wayland-version.h", -@@ -151,8 +176,7 @@ - "#endif" - ] - }, -- "libs": "-ldrm", -- "use": "egl" -+ "use": "drm egl" - }, - "dmabuf-client-buffer": { - "label": "Linux Client dma-buf Buffer Sharing", -@@ -176,8 +200,7 @@ - "return 0;" - ] - }, -- "libs": "-ldrm", -- "use": "egl" -+ "use": "drm egl" - }, - "vulkan-server-buffer": { - "label": "Vulkan Buffer Sharing", -@@ -195,7 +218,8 @@ +@@ -193,7 +218,8 @@ "exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;", "return 0;" ] @@ -3261,62 +2705,12 @@ index bcfd5215..da95d07b 100644 }, -- -2.36.0 - -From 169052d99391eef62c181c8b5b107280688045d1 Mon Sep 17 00:00:00 2001 -From: Liang Qi <liang.qi@qt.io> -Date: Wed, 9 Mar 2022 10:47:42 +0100 -Subject: [PATCH 35/38] client: update button state and etc in pointer_leave() - -The cleanup work needs to be done even the surface is null, for -example, a window was closed in mouse press handler, then will not -get a mouse release. - -Fixes: QTBUG-100942 -Pick-to: 5.15 6.2 6.3 -Change-Id: I637a6744909ddbe62bdeba6b21494e5a6ae7fa9f -Reviewed-by: Tang Haixiang <tanghaixiang@uniontech.com> -Reviewed-by: David Edmundson <davidedmundson@kde.org> -(cherry picked from commit 409d1080f25b653b3ff3f57c9776c5c390912206) ---- - src/client/qwaylandinputdevice.cpp | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp -index aaec7eb8..c3cc4eca 100644 ---- a/src/client/qwaylandinputdevice.cpp -+++ b/src/client/qwaylandinputdevice.cpp -@@ -685,6 +685,11 @@ public: - - void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surface *surface) - { -+ invalidateFocus(); -+ mButtons = Qt::NoButton; -+ -+ mParent->mTime = time; -+ - // The event may arrive after destroying the window, indicated by - // a null surface. - if (!surface) -@@ -696,11 +701,6 @@ void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surfac - - if (!QWaylandWindow::mouseGrab()) - setFrameEvent(new LeaveEvent(window, mSurfacePos, mGlobalPos)); -- -- invalidateFocus(); -- mButtons = Qt::NoButton; -- -- mParent->mTime = time; - } - - class MotionEvent : public QWaylandPointerEvent --- -2.36.0 +2.49.0 -From 36756f5d1b8891465bddd31e990c81e149dce0f1 Mon Sep 17 00:00:00 2001 +From 8584cc9e877ecf67452c523d1c3f1691a6af1607 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete <paul.tvete@qt.io> Date: Tue, 15 Mar 2022 15:59:15 +0100 -Subject: [PATCH 36/38] Revert "Client: Remove mWaitingForUpdateDelivery" +Subject: [PATCH 24/57] Revert "Client: Remove mWaitingForUpdateDelivery" The reverted commit introduces a severe performance regression when a client window is resized while a QtQuick renderthread @@ -3333,10 +2727,10 @@ Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index fee2ecdd..bf41cc5b 100644 +index 9cc8cb12..3d1be31c 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp -@@ -655,11 +655,17 @@ void QWaylandWindow::handleFrameCallback() +@@ -658,11 +658,17 @@ void QWaylandWindow::handleFrameCallback() sendExposeEvent(QRect(QPoint(), geometry().size())); if (wasExposed && hasPendingUpdateRequest()) deliverUpdateRequest(); @@ -3358,7 +2752,7 @@ index fee2ecdd..bf41cc5b 100644 mFrameSyncWait.notify_all(); } diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h -index 3ff68ccb..d45980a8 100644 +index cf7ce879..54ac67a9 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -228,6 +228,7 @@ protected: @@ -3370,12 +2764,12 @@ index 3ff68ccb..d45980a8 100644 QElapsedTimer mFrameCallbackElapsedTimer; struct ::wl_callback *mFrameCallback = nullptr; -- -2.36.0 +2.49.0 -From a83e65ddc9a965b25e435d136849a50f0b99c4ae Mon Sep 17 00:00:00 2001 +From a743f6e0516b2d286fefe74b0c045509fed9626a Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete <paul.tvete@qt.io> Date: Tue, 15 Mar 2022 16:53:04 +0100 -Subject: [PATCH 37/38] Fix race condition on mWaitingForUpdateDelivery +Subject: [PATCH 25/57] Fix race condition on mWaitingForUpdateDelivery Change-Id: I0e91bda73722468b9339fc434fe04420b5e7d3da Reviewed-by: David Edmundson <davidedmundson@kde.org> @@ -3385,10 +2779,10 @@ Reviewed-by: David Edmundson <davidedmundson@kde.org> 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index bf41cc5b..ceaa4c73 100644 +index 3d1be31c..014e2d87 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp -@@ -649,24 +649,21 @@ void QWaylandWindow::handleFrameCallback() +@@ -652,24 +652,21 @@ void QWaylandWindow::handleFrameCallback() // The rest can wait until we can run it on the correct thread auto doHandleExpose = [this]() { @@ -3416,7 +2810,7 @@ index bf41cc5b..ceaa4c73 100644 } diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h -index d45980a8..cb9135f6 100644 +index 54ac67a9..c0a76345 100644 --- a/src/client/qwaylandwindow_p.h +++ b/src/client/qwaylandwindow_p.h @@ -228,7 +228,7 @@ protected: @@ -3429,12 +2823,12 @@ index d45980a8..cb9135f6 100644 QElapsedTimer mFrameCallbackElapsedTimer; struct ::wl_callback *mFrameCallback = nullptr; -- -2.36.0 +2.49.0 -From 36659e6130ed3fc2b3f0c91423408ef5ecb7b991 Mon Sep 17 00:00:00 2001 +From 5bc262cd799c8aec1a67193dfb5e2cb95962978f Mon Sep 17 00:00:00 2001 From: Kenneth Topp <ken@bllue.org> Date: Mon, 4 Apr 2022 09:36:21 -0400 -Subject: [PATCH 38/38] use poll(2) when reading from clipboard +Subject: [PATCH 26/57] use poll(2) when reading from clipboard change clipboard read away from select(2) call which can fail when an application has large number of open files @@ -3447,10 +2841,10 @@ Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp -index c9e158cc..fe0ea8c9 100644 +index 09e29973..0241a1df 100644 --- a/src/client/qwaylanddataoffer.cpp +++ b/src/client/qwaylanddataoffer.cpp -@@ -188,17 +188,18 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T +@@ -195,17 +195,18 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T int QWaylandMimeData::readData(int fd, QByteArray &data) const { @@ -3477,5 +2871,2390 @@ index c9e158cc..fe0ea8c9 100644 } else if (ready == 0) { qWarning("QWaylandDataOffer: timeout reading from pipe"); -- -2.36.0 +2.49.0 + +From 32b52debc17b894e02c4292ad408d4ce60ac4880 Mon Sep 17 00:00:00 2001 +From: Ulf Hermann <ulf.hermann@qt.io> +Date: Tue, 22 Feb 2022 12:31:08 +0100 +Subject: [PATCH 27/57] Reduce memory leakage + +We need to clean up the event queue when we're done. + +Change-Id: I13a9eb77e978f4eab227a3a28dab8ebc8de94405 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit 1264e5f565d8fb7ac200e4b00531ab876922458f) +--- + src/client/qwaylanddisplay.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index b8da02b3..4a331a4c 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -381,6 +381,9 @@ QWaylandDisplay::~QWaylandDisplay(void) + #endif + if (mDisplay) + wl_display_disconnect(mDisplay); ++ ++ if (m_frameEventQueue) ++ wl_event_queue_destroy(m_frameEventQueue); + } + + // Steps which is called just after constructor. This separates registry_global() out of the constructor +-- +2.49.0 + +From cedbdae068bedfafeb43c6661a88b8ea28cce680 Mon Sep 17 00:00:00 2001 +From: Weng Xuetian <wengxt@gmail.com> +Date: Wed, 20 Jul 2022 15:57:40 -0700 +Subject: [PATCH 28/57] Only close popup in the the hierchary + +Imagine following event sequences: +1. a tooltip is shown. activePopups = {tooltip} +2. user click menu bar to show the menu, QMenu::setVisible is called. + now activePopups(tooltip, menu} +3. tooltip visibility changed to false. +4. closePopups() close both tooltip and menu. + +This is a common pattern under wayland that menu is shown as a invisible +state. This patch tries to memorize the surface hierchary used to create +the popup role. And only close those popups whose ancesotor is hidden. + +Pick-to: 6.4 +Change-Id: I78aa0b4e32a5812603e003e756d8bcd202e94af4 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit f8e3257e9b1e22d52e9c221c62b8d9b6dd1151a3) +--- + src/client/qwaylandwindow.cpp | 33 ++++--- + src/client/qwaylandwindow_p.h | 6 ++ + .../xdg-shell-v5/qwaylandxdgpopupv5.cpp | 5 +- + .../xdg-shell-v5/qwaylandxdgpopupv5_p.h | 3 +- + .../xdg-shell-v5/qwaylandxdgshellv5.cpp | 2 +- + .../xdg-shell-v6/qwaylandxdgshellv6.cpp | 3 + + .../xdg-shell/qwaylandxdgshell.cpp | 22 +++-- + .../xdg-shell/qwaylandxdgshell_p.h | 5 +- + tests/auto/client/xdgshell/tst_xdgshell.cpp | 87 +++++++++++++++++++ + 9 files changed, 136 insertions(+), 30 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 014e2d87..1e916ca1 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -239,6 +239,7 @@ bool QWaylandWindow::shouldCreateSubSurface() const + + void QWaylandWindow::reset() + { ++ closeChildPopups(); + delete mShellSurface; + mShellSurface = nullptr; + delete mSubSurfaceWindow; +@@ -397,21 +398,6 @@ void QWaylandWindow::sendExposeEvent(const QRect &rect) + mLastExposeGeometry = rect; + } + +- +-static QVector<QPointer<QWaylandWindow>> activePopups; +- +-void QWaylandWindow::closePopups(QWaylandWindow *parent) +-{ +- while (!activePopups.isEmpty()) { +- auto popup = activePopups.takeLast(); +- if (popup.isNull()) +- continue; +- if (popup.data() == parent) +- return; +- popup->reset(); +- } +-} +- + QPlatformScreen *QWaylandWindow::calculateScreenFromSurfaceEvents() const + { + QReadLocker lock(&mSurfaceLock); +@@ -431,8 +417,6 @@ void QWaylandWindow::setVisible(bool visible) + lastVisible = visible; + + if (visible) { +- if (window()->type() == Qt::Popup || window()->type() == Qt::ToolTip) +- activePopups << this; + initWindow(); + + setGeometry(windowGeometry()); +@@ -441,7 +425,6 @@ void QWaylandWindow::setVisible(bool visible) + // QWaylandShmBackingStore::beginPaint(). + } else { + sendExposeEvent(QRect()); +- closePopups(this); + reset(); + } + } +@@ -1304,6 +1287,20 @@ void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea) + wl_region_destroy(region); + } + ++void QWaylandWindow::addChildPopup(QWaylandWindow *surface) { ++ mChildPopups.append(surface); ++} ++ ++void QWaylandWindow::removeChildPopup(QWaylandWindow *surface) { ++ mChildPopups.removeAll(surface); ++} ++ ++void QWaylandWindow::closeChildPopups() { ++ while (!mChildPopups.isEmpty()) { ++ auto popup = mChildPopups.takeLast(); ++ popup->reset(); ++ } ++} + } + + QT_END_NAMESPACE +diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h +index c0a76345..2be87bc0 100644 +--- a/src/client/qwaylandwindow_p.h ++++ b/src/client/qwaylandwindow_p.h +@@ -207,6 +207,10 @@ public: + void handleUpdate(); + void deliverUpdateRequest() override; + ++ void addChildPopup(QWaylandWindow* child); ++ void removeChildPopup(QWaylandWindow* child); ++ void closeChildPopups(); ++ + public slots: + void applyConfigure(); + +@@ -262,6 +266,8 @@ protected: + QWaylandBuffer *mQueuedBuffer = nullptr; + QRegion mQueuedBufferDamage; + ++ QList<QPointer<QWaylandWindow>> mChildPopups; ++ + private: + void setGeometry_helper(const QRect &rect); + void initWindow(); +diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp +index 85d25e3c..60bdd491 100644 +--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp ++++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp +@@ -47,18 +47,21 @@ QT_BEGIN_NAMESPACE + + namespace QtWaylandClient { + +-QWaylandXdgPopupV5::QWaylandXdgPopupV5(struct ::xdg_popup_v5 *popup, QWaylandWindow *window) ++QWaylandXdgPopupV5::QWaylandXdgPopupV5(struct ::xdg_popup_v5 *popup, QWaylandWindow* parent, QWaylandWindow *window) + : QWaylandShellSurface(window) + , QtWayland::xdg_popup_v5(popup) ++ , m_parent(parent) + , m_window(window) + { + if (window->display()->windowExtension()) + m_extendedWindow = new QWaylandExtendedSurface(window); ++ m_parent->addChildPopup(m_window); + } + + QWaylandXdgPopupV5::~QWaylandXdgPopupV5() + { + xdg_popup_destroy(object()); ++ m_parent->removeChildPopup(m_window); + delete m_extendedWindow; + } + +diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h +index 7494f6a6..d85f130b 100644 +--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h ++++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h +@@ -70,7 +70,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgPopupV5 : public QWaylandShellSurface + { + Q_OBJECT + public: +- QWaylandXdgPopupV5(struct ::xdg_popup_v5 *popup, QWaylandWindow *window); ++ QWaylandXdgPopupV5(struct ::xdg_popup_v5 *popup, QWaylandWindow* parent, QWaylandWindow *window); + ~QWaylandXdgPopupV5() override; + + protected: +@@ -78,6 +78,7 @@ protected: + + private: + QWaylandExtendedSurface *m_extendedWindow = nullptr; ++ QWaylandWindow *m_parent = nullptr; + QWaylandWindow *m_window = nullptr; + }; + +diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp +index 7e242c4a..def8452a 100644 +--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp ++++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp +@@ -84,7 +84,7 @@ QWaylandXdgPopupV5 *QWaylandXdgShellV5::createXdgPopup(QWaylandWindow *window, Q + int x = position.x() + parentWindow->frameMargins().left(); + int y = position.y() + parentWindow->frameMargins().top(); + +- auto popup = new QWaylandXdgPopupV5(get_xdg_popup(window->wlSurface(), parentSurface, seat, m_popupSerial, x, y), window); ++ auto popup = new QWaylandXdgPopupV5(get_xdg_popup(window->wlSurface(), parentSurface, seat, m_popupSerial, x, y), parentWindow, window); + m_popups.append(window); + QObject::connect(popup, &QWaylandXdgPopupV5::destroyed, [this, window](){ + m_popups.removeOne(window); +diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +index 8c371661..151c78e3 100644 +--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp ++++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +@@ -174,6 +174,7 @@ QWaylandXdgSurfaceV6::Popup::Popup(QWaylandXdgSurfaceV6 *xdgSurface, QWaylandXdg + , m_xdgSurface(xdgSurface) + , m_parent(parent) + { ++ m_parent->window()->addChildPopup(m_xdgSurface->window()); + } + + QWaylandXdgSurfaceV6::Popup::~Popup() +@@ -181,6 +182,8 @@ QWaylandXdgSurfaceV6::Popup::~Popup() + if (isInitialized()) + destroy(); + ++ m_parent->window()->removeChildPopup(m_xdgSurface->window()); ++ + if (m_grabbing) { + auto *shell = m_xdgSurface->m_shell; + Q_ASSERT(shell->m_topmostGrabbingPopup == this); +diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +index e7bd5117..c79b0e49 100644 +--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp ++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +@@ -196,12 +196,17 @@ QtWayland::xdg_toplevel::resize_edge QWaylandXdgSurface::Toplevel::convertToResi + | ((edges & Qt::RightEdge) ? resize_edge_right : 0)); + } + +-QWaylandXdgSurface::Popup::Popup(QWaylandXdgSurface *xdgSurface, QWaylandXdgSurface *parent, ++QWaylandXdgSurface::Popup::Popup(QWaylandXdgSurface *xdgSurface, QWaylandWindow *parent, + QtWayland::xdg_positioner *positioner) +- : xdg_popup(xdgSurface->get_popup(parent->object(), positioner->object())) +- , m_xdgSurface(xdgSurface) ++ : m_xdgSurface(xdgSurface) ++ , m_parentXdgSurface(qobject_cast<QWaylandXdgSurface *>(parent->shellSurface())) + , m_parent(parent) + { ++ ++ init(xdgSurface->get_popup(m_parentXdgSurface ? m_parentXdgSurface->object() : nullptr, positioner->object())); ++ if (m_parent) { ++ m_parent->addChildPopup(m_xdgSurface->window()); ++ } + } + + QWaylandXdgSurface::Popup::~Popup() +@@ -209,10 +214,14 @@ QWaylandXdgSurface::Popup::~Popup() + if (isInitialized()) + destroy(); + ++ if (m_parent) { ++ m_parent->removeChildPopup(m_xdgSurface->window()); ++ } ++ + if (m_grabbing) { + auto *shell = m_xdgSurface->m_shell; + Q_ASSERT(shell->m_topmostGrabbingPopup == this); +- shell->m_topmostGrabbingPopup = m_parent->m_popup; ++ shell->m_topmostGrabbingPopup = m_parentXdgSurface ? m_parentXdgSurface->m_popup : nullptr; + m_grabbing = false; + + // Synthesize Qt enter/leave events for popup +@@ -406,8 +415,6 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent) + { + Q_ASSERT(!m_toplevel && !m_popup); + +- auto parentXdgSurface = static_cast<QWaylandXdgSurface *>(parent->shellSurface()); +- + auto positioner = new QtWayland::xdg_positioner(m_shell->create_positioner()); + // set_popup expects a position relative to the parent + QPoint transientPos = m_window->geometry().topLeft(); // this is absolute +@@ -422,8 +429,9 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent) + positioner->set_size(m_window->geometry().width(), m_window->geometry().height()); + positioner->set_constraint_adjustment(QtWayland::xdg_positioner::constraint_adjustment_slide_x + | QtWayland::xdg_positioner::constraint_adjustment_slide_y); +- m_popup = new Popup(this, parentXdgSurface, positioner); ++ m_popup = new Popup(this, parent, positioner); + positioner->destroy(); ++ + delete positioner; + } + +diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h +index 96785205..4b518f0a 100644 +--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h ++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h +@@ -131,14 +131,15 @@ private: + + class Popup : public QtWayland::xdg_popup { + public: +- Popup(QWaylandXdgSurface *xdgSurface, QWaylandXdgSurface *parent, QtWayland::xdg_positioner *positioner); ++ Popup(QWaylandXdgSurface *xdgSurface, QWaylandWindow *parent, QtWayland::xdg_positioner *positioner); + ~Popup() override; + + void grab(QWaylandInputDevice *seat, uint serial); + void xdg_popup_popup_done() override; + + QWaylandXdgSurface *m_xdgSurface = nullptr; +- QWaylandXdgSurface *m_parent = nullptr; ++ QWaylandXdgSurface *m_parentXdgSurface = nullptr; ++ QWaylandWindow *m_parent = nullptr; + bool m_grabbing = false; + }; + +diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp +index 1da70ff2..c5271f63 100644 +--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp ++++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp +@@ -46,6 +46,7 @@ private slots: + void configureStates(); + void popup(); + void tooltipOnPopup(); ++ void tooltipAndSiblingPopup(); + void switchPopups(); + void hidePopupParent(); + void pongs(); +@@ -346,6 +347,92 @@ void tst_xdgshell::tooltipOnPopup() + QCOMPOSITOR_TRY_COMPARE(xdgPopup(0), nullptr); + } + ++void tst_xdgshell::tooltipAndSiblingPopup() ++{ ++ class ToolTip : public QRasterWindow { ++ public: ++ explicit ToolTip(QWindow *parent) { ++ setTransientParent(parent); ++ setFlags(Qt::ToolTip); ++ resize(100, 100); ++ show(); ++ } ++ void mousePressEvent(QMouseEvent *event) override { ++ QRasterWindow::mousePressEvent(event); ++ m_popup = new QRasterWindow; ++ m_popup->setTransientParent(transientParent()); ++ m_popup->setFlags(Qt::Popup); ++ m_popup->resize(100, 100); ++ m_popup->show(); ++ } ++ ++ QRasterWindow *m_popup = nullptr; ++ }; ++ ++ class Window : public QRasterWindow { ++ public: ++ void mousePressEvent(QMouseEvent *event) override { ++ QRasterWindow::mousePressEvent(event); ++ m_tooltip = new ToolTip(this); ++ } ++ ToolTip *m_tooltip = nullptr; ++ }; ++ ++ Window window; ++ window.resize(200, 200); ++ window.show(); ++ ++ QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); ++ exec([=] { xdgToplevel()->sendCompleteConfigure(); }); ++ QCOMPOSITOR_TRY_VERIFY(xdgToplevel()->m_xdgSurface->m_committedConfigureSerial); ++ ++ exec([=] { ++ auto *surface = xdgToplevel()->surface(); ++ auto *p = pointer(); ++ auto *c = client(); ++ p->sendEnter(surface, {100, 100}); ++ p->sendFrame(c); ++ p->sendButton(client(), BTN_LEFT, Pointer::button_state_pressed); ++ p->sendButton(client(), BTN_LEFT, Pointer::button_state_released); ++ p->sendFrame(c); ++ p->sendLeave(surface); ++ p->sendFrame(c); ++ }); ++ ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup()); ++ exec([=] { xdgPopup()->sendCompleteConfigure(QRect(100, 100, 100, 100)); }); ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup()->m_xdgSurface->m_committedConfigureSerial); ++ QCOMPOSITOR_TRY_VERIFY(!xdgPopup()->m_grabbed); ++ ++ exec([=] { ++ auto *surface = xdgPopup()->surface(); ++ auto *p = pointer(); ++ auto *c = client(); ++ p->sendEnter(surface, {100, 100}); ++ p->sendFrame(c); ++ p->sendButton(client(), BTN_LEFT, Pointer::button_state_pressed); ++ p->sendButton(client(), BTN_LEFT, Pointer::button_state_released); ++ p->sendFrame(c); ++ }); ++ ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup(1)); ++ exec([=] { xdgPopup(1)->sendCompleteConfigure(QRect(100, 100, 100, 100)); }); ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup(1)->m_xdgSurface->m_committedConfigureSerial); ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup(1)->m_grabbed); ++ ++ // Close the middle tooltip (it should not close the sibling popup) ++ window.m_tooltip->close(); ++ ++ QCOMPOSITOR_TRY_COMPARE(xdgPopup(1), nullptr); ++ // Verify the remaining xdg surface is a grab popup.. ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup(0)); ++ QCOMPOSITOR_TRY_VERIFY(xdgPopup(0)->m_grabbed); ++ ++ window.m_tooltip->m_popup->close(); ++ QCOMPOSITOR_TRY_COMPARE(xdgPopup(1), nullptr); ++ QCOMPOSITOR_TRY_COMPARE(xdgPopup(0), nullptr); ++} ++ + // QTBUG-65680 + void tst_xdgshell::switchPopups() + { +-- +2.49.0 + +From dd9a2f1e29ed3ecbbaf9362cdccda7f25dc51b29 Mon Sep 17 00:00:00 2001 +From: Roman Genkhel <roman.genhel@lge.com> +Date: Thu, 12 Nov 2020 12:21:51 +0300 +Subject: [PATCH 29/57] Check pointer for null before use in ASSERT + +Task-number: QTBUG-85195 +Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit e235e8ddb1fc3cc5ab3b70b1fb285770b2c8c9ca) +--- + src/client/qwaylandwindow.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 1e916ca1..d98a70e4 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -536,12 +536,12 @@ void QWaylandWindow::sendRecursiveExposeEvent() + + void QWaylandWindow::attach(QWaylandBuffer *buffer, int x, int y) + { +- Q_ASSERT(!buffer->committed()); + QReadLocker locker(&mSurfaceLock); + if (mSurface == nullptr) + return; + + if (buffer) { ++ Q_ASSERT(!buffer->committed()); + handleUpdate(); + buffer->setBusy(); + +-- +2.49.0 + +From f77a9af68b6b3d2827c6942fec8607d4b57ffdd7 Mon Sep 17 00:00:00 2001 +From: Paul Olav Tvete <paul.tvete@qt.io> +Date: Mon, 6 Jul 2020 14:37:35 +0200 +Subject: [PATCH 30/57] Use wl_surface.damage_buffer on the client side + +Prefer the newer, recommended damage_buffer when the compositor +supports it. + +Fixes: QTBUG-74929 +Change-Id: I9107966910b616a666931404a7b41bfac14c22c0 +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 314fd6db51277224cdc799b039ef79db1101f5cd) +--- + src/client/qwaylanddisplay.cpp | 2 +- + src/client/qwaylandwindow.cpp | 16 +++++++++++++--- + tests/auto/client/shared/coreprotocol.h | 2 +- + tests/auto/client/shared_old/mockcompositor.cpp | 2 +- + tests/auto/client/shared_old/mocksurface.cpp | 10 ++++++++++ + tests/auto/client/shared_old/mocksurface.h | 2 ++ + 6 files changed, 28 insertions(+), 6 deletions(-) + +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index 4a331a4c..f23c459d 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -493,7 +493,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin + if (interface == QStringLiteral("wl_output")) { + mWaitingScreens << new QWaylandScreen(this, version, id); + } else if (interface == QStringLiteral("wl_compositor")) { +- mCompositorVersion = qMin((int)version, 3); ++ mCompositorVersion = qMin((int)version, 4); + mCompositor.init(registry, id, mCompositorVersion); + } else if (interface == QStringLiteral("wl_shm")) { + mShm.reset(new QWaylandShm(this, version, id)); +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index d98a70e4..60665394 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -563,7 +563,11 @@ void QWaylandWindow::damage(const QRect &rect) + if (mSurface == nullptr) + return; + +- mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); ++ const int s = scale(); ++ if (mDisplay->compositorVersion() >= 4) ++ mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()); ++ else ++ mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); + } + + void QWaylandWindow::safeCommit(QWaylandBuffer *buffer, const QRegion &damage) +@@ -599,8 +603,14 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage) + return; + + attachOffset(buffer); +- for (const QRect &rect: damage) +- mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); ++ if (mDisplay->compositorVersion() >= 4) { ++ const int s = scale(); ++ for (const QRect &rect: damage) ++ mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()); ++ } else { ++ for (const QRect &rect: damage) ++ mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); ++ } + Q_ASSERT(!buffer->committed()); + buffer->setCommitted(); + mSurface->commit(); +diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h +index a1af137a..296dbf47 100644 +--- a/tests/auto/client/shared/coreprotocol.h ++++ b/tests/auto/client/shared/coreprotocol.h +@@ -158,7 +158,7 @@ class WlCompositor : public Global, public QtWaylandServer::wl_compositor + { + Q_OBJECT + public: +- explicit WlCompositor(CoreCompositor *compositor, int version = 3) ++ explicit WlCompositor(CoreCompositor *compositor, int version = 4) + : QtWaylandServer::wl_compositor(compositor->m_display, version) + , m_compositor(compositor) + {} +diff --git a/tests/auto/client/shared_old/mockcompositor.cpp b/tests/auto/client/shared_old/mockcompositor.cpp +index a415cbf5..b1d3d07d 100644 +--- a/tests/auto/client/shared_old/mockcompositor.cpp ++++ b/tests/auto/client/shared_old/mockcompositor.cpp +@@ -342,7 +342,7 @@ Compositor::Compositor(MockCompositor *mockCompositor) + exit(EXIT_FAILURE); + } + +- wl_global_create(m_display, &wl_compositor_interface, 1, this, bindCompositor); ++ wl_global_create(m_display, &wl_compositor_interface, 4, this, bindCompositor); + + m_data_device_manager.reset(new DataDeviceManager(this, m_display)); + +diff --git a/tests/auto/client/shared_old/mocksurface.cpp b/tests/auto/client/shared_old/mocksurface.cpp +index e9df5f90..c3246e4a 100644 +--- a/tests/auto/client/shared_old/mocksurface.cpp ++++ b/tests/auto/client/shared_old/mocksurface.cpp +@@ -125,6 +125,16 @@ void Surface::surface_damage(Resource *resource, + Q_UNUSED(height); + } + ++void Surface::surface_damage_buffer(Resource *resource, ++ int32_t x, int32_t y, int32_t width, int32_t height) ++{ ++ Q_UNUSED(resource); ++ Q_UNUSED(x); ++ Q_UNUSED(y); ++ Q_UNUSED(width); ++ Q_UNUSED(height); ++} ++ + void Surface::surface_frame(Resource *resource, + uint32_t callback) + { +diff --git a/tests/auto/client/shared_old/mocksurface.h b/tests/auto/client/shared_old/mocksurface.h +index 949dc23d..d176837e 100644 +--- a/tests/auto/client/shared_old/mocksurface.h ++++ b/tests/auto/client/shared_old/mocksurface.h +@@ -65,6 +65,8 @@ protected: + struct wl_resource *buffer, int x, int y) override; + void surface_damage(Resource *resource, + int32_t x, int32_t y, int32_t width, int32_t height) override; ++ void surface_damage_buffer(Resource *resource, ++ int32_t x, int32_t y, int32_t width, int32_t height) override; + void surface_frame(Resource *resource, + uint32_t callback) override; + void surface_commit(Resource *resource) override; +-- +2.49.0 + +From 0935e540b8a35f451cd473665c81deb8ccc7cc89 Mon Sep 17 00:00:00 2001 +From: David Edmundson <davidedmundson@kde.org> +Date: Fri, 5 Aug 2022 15:00:31 +0100 +Subject: [PATCH 31/57] Client: clear focus on touch cancel + +When we get a touch_cancel event all touches should be treated as +lifted. + +The next frame call focus is set, with no pending touch points but +without having gone through touch_up. We call mPendingTouchPoints.last() +without guards even though it is potentially now empty. + +Change-Id: I3719f9507c5d397d8641692271d878076b7c23b8 +Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> +Reviewed-by: Liang Qi <liang.qi@qt.io> +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit dbdcd92363b44d89440dcb195d8cb9e6c34f0ddf) +--- + src/client/qwaylandinputdevice.cpp | 1 + + tests/auto/client/seatv5/tst_seatv5.cpp | 30 +++++++++++++++++++++++ + tests/auto/client/shared/coreprotocol.cpp | 7 ++++++ + tests/auto/client/shared/coreprotocol.h | 1 + + 4 files changed, 39 insertions(+) + +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index 5ec64faf..76cbfb1f 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -1391,6 +1391,7 @@ void QWaylandInputDevice::Touch::touch_cancel() + if (touchExt) + touchExt->touchCanceled(); + ++ mFocus = nullptr; + QWindowSystemInterface::handleTouchCancelEvent(nullptr, mParent->mTouchDevice); + } + +diff --git a/tests/auto/client/seatv5/tst_seatv5.cpp b/tests/auto/client/seatv5/tst_seatv5.cpp +index 9312c2e5..b063e0d9 100644 +--- a/tests/auto/client/seatv5/tst_seatv5.cpp ++++ b/tests/auto/client/seatv5/tst_seatv5.cpp +@@ -73,6 +73,7 @@ private slots: + void multiTouch(); + void multiTouchUpAndMotionFrame(); + void tapAndMoveInSameFrame(); ++ void cancelTouch(); + }; + + void tst_seatv5::bindsToSeat() +@@ -646,5 +647,34 @@ void tst_seatv5::tapAndMoveInSameFrame() + QTRY_COMPARE(window.m_events.last().touchPoints.first().state(), Qt::TouchPointState::TouchPointReleased); + } + ++void tst_seatv5::cancelTouch() ++{ ++ TouchWindow window; ++ QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); ++ ++ exec([=] { ++ auto *t = touch(); ++ auto *c = client(); ++ t->sendDown(xdgToplevel()->surface(), {32, 32}, 1); ++ t->sendFrame(c); ++ t->sendCancel(c); ++ t->sendFrame(c); ++ }); ++ ++ QTRY_VERIFY(!window.m_events.empty()); ++ { ++ auto e = window.m_events.takeFirst(); ++ QCOMPARE(e.type, QEvent::TouchBegin); ++ QCOMPARE(e.touchPointStates, QEventPoint::State::Pressed); ++ QCOMPARE(e.touchPoints.length(), 1); ++ QCOMPARE(e.touchPoints.first().position(), QPointF(32-window.frameMargins().left(), 32-window.frameMargins().top())); ++ } ++ { ++ auto e = window.m_events.takeFirst(); ++ QCOMPARE(e.type, QEvent::TouchCancel); ++ QCOMPARE(e.touchPoints.length(), 0); ++ } ++} ++ + QCOMPOSITOR_TEST_MAIN(tst_seatv5) + #include "tst_seatv5.moc" +diff --git a/tests/auto/client/shared/coreprotocol.cpp b/tests/auto/client/shared/coreprotocol.cpp +index 0d988521..d1a2e7cb 100644 +--- a/tests/auto/client/shared/coreprotocol.cpp ++++ b/tests/auto/client/shared/coreprotocol.cpp +@@ -451,6 +451,13 @@ void Touch::sendFrame(wl_client *client) + send_frame(r->handle); + } + ++void Touch::sendCancel(wl_client *client) ++{ ++ const auto touchResources = resourceMap().values(client); ++ for (auto *r : touchResources) ++ send_cancel(r->handle); ++} ++ + uint Keyboard::sendEnter(Surface *surface) + { + auto serial = m_seat->m_compositor->nextSerial(); +diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h +index 296dbf47..210d8ddb 100644 +--- a/tests/auto/client/shared/coreprotocol.h ++++ b/tests/auto/client/shared/coreprotocol.h +@@ -364,6 +364,7 @@ public: + uint sendUp(wl_client *client, int id); + void sendMotion(wl_client *client, const QPointF &position, int id); + void sendFrame(wl_client *client); ++ void sendCancel(wl_client *client); + + Seat *m_seat = nullptr; + }; +-- +2.49.0 + +From 1eba2ed4c7a45c4cf6098dac9c4e578da2880be2 Mon Sep 17 00:00:00 2001 +From: David Edmundson <davidedmundson@kde.org> +Date: Thu, 3 Feb 2022 19:42:33 +0000 +Subject: [PATCH 32/57] Guard mResizeDirty by the correctMutex + +mResizeDirty is used in the GUI thread in setCanResize which can be +called from the GUI thread. It is queried and set whilst the resizeLock +is held. We need to guard our usage. + +Change-Id: I5f8dcf8aa2cb2c4bb6274103df1da9e3e268605a +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 4ac96662c936821efff2875bbe555b40612caf8a) +--- + src/client/qwaylandwindow.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 60665394..e5d1a97d 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -358,11 +358,12 @@ void QWaylandWindow::setGeometry(const QRect &rect) + if (mWindowDecoration) + mWindowDecoration->update(); + +- if (mResizeAfterSwap && windowType() == Egl && mSentInitialResize) ++ if (mResizeAfterSwap && windowType() == Egl && mSentInitialResize) { ++ QMutexLocker lock(&mResizeLock); + mResizeDirty = true; +- else ++ } else { + QWindowSystemInterface::handleGeometryChange(window(), geometry()); +- ++ } + mSentInitialResize = true; + } + QRect exposeGeometry(QPoint(), geometry().size()); +-- +2.49.0 + +From 276082c73945b024ac603f65fad8699c5a70a17c Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Fri, 9 Sep 2022 15:37:49 +0200 +Subject: [PATCH 33/57] Fix compile tests + +Broken in c618467da4c06528537026e2b78f92265bce446f +--- + tests/auto/client/seatv5/tst_seatv5.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/auto/client/seatv5/tst_seatv5.cpp b/tests/auto/client/seatv5/tst_seatv5.cpp +index b063e0d9..2ea382f1 100644 +--- a/tests/auto/client/seatv5/tst_seatv5.cpp ++++ b/tests/auto/client/seatv5/tst_seatv5.cpp +@@ -665,9 +665,9 @@ void tst_seatv5::cancelTouch() + { + auto e = window.m_events.takeFirst(); + QCOMPARE(e.type, QEvent::TouchBegin); +- QCOMPARE(e.touchPointStates, QEventPoint::State::Pressed); ++ QCOMPARE(e.touchPointStates, Qt::TouchPointPressed); + QCOMPARE(e.touchPoints.length(), 1); +- QCOMPARE(e.touchPoints.first().position(), QPointF(32-window.frameMargins().left(), 32-window.frameMargins().top())); ++ QCOMPARE(e.touchPoints.first().pos(), QPointF(32-window.frameMargins().left(), 32-window.frameMargins().top())); + } + { + auto e = window.m_events.takeFirst(); +-- +2.49.0 + +From 9052ae44c73bcf9b538f1a37e8797848492b4cd2 Mon Sep 17 00:00:00 2001 +From: Fushan Wen <qydwhotmail@gmail.com> +Date: Sun, 18 Sep 2022 18:17:18 +0800 +Subject: [PATCH 34/57] Call `finishDrag()` in + `QWaylandDataDevice::dragSourceCancelled()` + +Drags can either get finished or cancelled. If a drag is finished +successfully we call finish on the QBasicDrag instance, which quits +the nested event loop. This patch adds the connection for cancelled +drags. + +See also: https://bugs.kde.org/show_bug.cgi?id=446111 + +Pick-to: 6.4 6.2 5.15 +Change-Id: Ib93040648da88a433d647c87adcb7a7fabcaef6c +Reviewed-by: Liang Qi <liang.qi@qt.io> +(cherry picked from commit c92282b865efcf8c571bb52b5f96d8ad260a1cda) + +BUG: 446111 +--- + src/client/qwaylanddatadevice.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp +index 89e4e372..5c5b8485 100644 +--- a/src/client/qwaylanddatadevice.cpp ++++ b/src/client/qwaylanddatadevice.cpp +@@ -302,6 +302,7 @@ void QWaylandDataDevice::selectionSourceCancelled() + #if QT_CONFIG(draganddrop) + void QWaylandDataDevice::dragSourceCancelled() + { ++ static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->finishDrag(); + m_dragSource.reset(); + } + +-- +2.49.0 + +From cdea3b7e5f10e0f9c55135ba27a62f2677231160 Mon Sep 17 00:00:00 2001 +From: David Edmundson <davidedmundson@kde.org> +Date: Mon, 12 Sep 2022 13:28:08 +0100 +Subject: [PATCH 35/57] Hold surface read lock throughout + QWaylandEglWindow::updateSurface + +QWaylandEGLWindow::updateSurface is called from both the main and render +threads. It is called on the render thread when making the surface +current, which could be after the window is hidden if there are cleanup +jobs to be done. + +Whilst the getter wlSurface() holds a read lock, it's not enough as we +need the instance alive between the two calls and throughout the mesa +code. + +This potentially fixes a crash seen in mesa where we crash creating a +surface for an invalid wl_surface object. + +Change-Id: I497356e752ffaf3549d174f10c4c268234b02cbd +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 50f1ccc66c68f9f4c0b08400747942109c16b2be) +--- + src/client/qwaylandwindow_p.h | 6 ++++-- + .../client/wayland-egl/qwaylandeglwindow.cpp | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h +index 2be87bc0..ea3d1995 100644 +--- a/src/client/qwaylandwindow_p.h ++++ b/src/client/qwaylandwindow_p.h +@@ -220,7 +220,11 @@ signals: + + protected: + QWaylandDisplay *mDisplay = nullptr; ++ ++ // mSurface can be written by the main thread. Other threads should claim a read lock for access ++ mutable QReadWriteLock mSurfaceLock; + QScopedPointer<QWaylandSurface> mSurface; ++ + QWaylandShellSurface *mShellSurface = nullptr; + QWaylandSubSurface *mSubSurfaceWindow = nullptr; + QVector<QWaylandSubSurface *> mChildren; +@@ -294,8 +298,6 @@ private: + + static QWaylandWindow *mMouseGrab; + +- mutable QReadWriteLock mSurfaceLock; +- + friend class QWaylandSubSurface; + }; + +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +index 64f7caeb..dbe2845a 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +@@ -40,6 +40,7 @@ + #include "qwaylandeglwindow.h" + + #include <QtWaylandClient/private/qwaylandscreen_p.h> ++#include <QtWaylandClient/private/qwaylandsurface_p.h> + #include "qwaylandglcontext.h" + + #include <QtEglSupport/private/qeglconvenience_p.h> +@@ -115,6 +116,7 @@ void QWaylandEglWindow::updateSurface(bool create) + } + mOffset = QPoint(); + } else { ++ QReadLocker locker(&mSurfaceLock); + if (m_waylandEglWindow) { + int current_width, current_height; + static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt(); +@@ -129,8 +131,8 @@ void QWaylandEglWindow::updateSurface(bool create) + + m_resize = true; + } +- } else if (create && wlSurface()) { +- m_waylandEglWindow = wl_egl_window_create(wlSurface(), sizeWithMargins.width(), sizeWithMargins.height()); ++ } else if (create && mSurface) { ++ m_waylandEglWindow = wl_egl_window_create(mSurface->object(), sizeWithMargins.width(), sizeWithMargins.height()); + m_requestedSize = sizeWithMargins; + } + +-- +2.49.0 + +From cb024141363e56cca76304457098ff7fbe7dd3e2 Mon Sep 17 00:00:00 2001 +From: David Redondo <qt@david-redondo.de> +Date: Wed, 8 Jun 2022 11:25:59 +0200 +Subject: [PATCH 36/57] Keep toplevel windows in the top left corner of the + screen + +We can't know the actual position of a window on the screen. This causes +an issue when Widgets try to position a popup/menu absolutely and keep +it on the screen when the screen geometry doesn't include (0,0). +Instead report their positions always as the top left corner of +the screen that they are on. +This new behavior can be disabled for qt-shell or via an environment +variable by users that rely on the old behavior. + +Fixes: QTBUG-85297 +Change-Id: Iacb91cb03a0df87af950115760d2f41124ac06a3 +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +Reviewed-by: David Edmundson <davidedmundson@kde.org> +Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> +(cherry picked from commit a46795a22e05722917c6ebc60ed01bebf49898ae) +--- + src/client/qwaylandintegration.cpp | 3 +++ + src/client/qwaylandwindow.cpp | 14 +++++++++++++- + src/client/qwaylandwindow_p.h | 3 +++ + 3 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp +index fbf00c6b..54861600 100644 +--- a/src/client/qwaylandintegration.cpp ++++ b/src/client/qwaylandintegration.cpp +@@ -125,6 +125,9 @@ QWaylandIntegration::QWaylandIntegration() + #endif + + reconfigureInputContext(); ++ ++ QWaylandWindow::fixedToplevelPositions = ++ !qEnvironmentVariableIsSet("QT_WAYLAND_DISABLE_FIXED_POSITIONS"); + } + + QWaylandIntegration::~QWaylandIntegration() +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index e5d1a97d..464441b1 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -350,8 +350,13 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect) + } + } + +-void QWaylandWindow::setGeometry(const QRect &rect) ++void QWaylandWindow::setGeometry(const QRect &r) + { ++ auto rect = r; ++ if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup ++ && window()->type() != Qt::ToolTip) { ++ rect.moveTo(screen()->geometry().topLeft()); ++ } + setGeometry_helper(rect); + + if (window()->isVisible() && rect.isValid()) { +@@ -1033,6 +1038,13 @@ void QWaylandWindow::handleScreensChanged() + + QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); + mLastReportedScreen = newScreen; ++ if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup ++ && window()->type() != Qt::ToolTip ++ && geometry().topLeft() != newScreen->geometry().topLeft()) { ++ auto geometry = this->geometry(); ++ geometry.moveTo(newScreen->geometry().topLeft()); ++ setGeometry(geometry); ++ } + + int scale = newScreen->isPlaceholder() ? 1 : static_cast<QWaylandScreen *>(newScreen)->scale(); + if (scale != mScale) { +diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h +index ea3d1995..487a91a6 100644 +--- a/src/client/qwaylandwindow_p.h ++++ b/src/client/qwaylandwindow_p.h +@@ -98,6 +98,9 @@ public: + QWaylandWindow(QWindow *window, QWaylandDisplay *display); + ~QWaylandWindow() override; + ++ // Keep Toplevels position on the top left corner of their screen ++ static inline bool fixedToplevelPositions = true; ++ + virtual WindowType windowType() const = 0; + virtual void ensureSize(); + WId winId() const override; +-- +2.49.0 + +From f04b16e84979b8ec576adf5bdfdc3abf5aab696b Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Thu, 17 Nov 2022 15:25:37 +0200 +Subject: [PATCH 37/57] Client: Add F_SEAL_SHRINK seal to shm backing file + +This lets libwayland-server avoid installing a SIGBUS handler when it +wants to mmap() the backing file and access the contents of shared +memory client buffers. + +Change-Id: Id0b17f729799535d73e8700c5a99c32fd88a068a +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit 0c1cbb376e0cf878e3a91ab4917fe784a3b4c547) +--- + src/client/qwaylandshmbackingstore.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp +index dc7ff670..98acd42d 100644 +--- a/src/client/qwaylandshmbackingstore.cpp ++++ b/src/client/qwaylandshmbackingstore.cpp +@@ -52,6 +52,7 @@ + + #include <QtWaylandClient/private/wayland-wayland-client-protocol.h> + ++#include <fcntl.h> + #include <unistd.h> + #include <sys/mman.h> + +@@ -61,6 +62,9 @@ + # ifndef MFD_CLOEXEC + # define MFD_CLOEXEC 0x0001U + # endif ++# ifndef MFD_ALLOW_SEALING ++# define MFD_ALLOW_SEALING 0x0002U ++# endif + #endif + + QT_BEGIN_NAMESPACE +@@ -75,7 +79,9 @@ QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display, + int fd = -1; + + #ifdef SYS_memfd_create +- fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC); ++ fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC | MFD_ALLOW_SEALING); ++ if (fd >= 0) ++ fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL); + #endif + + QScopedPointer<QFile> filePointer; +-- +2.49.0 + +From a18c3a89bd7dc8d9b7acc1cbde157147479731d6 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Mon, 21 Nov 2022 18:39:40 +0200 +Subject: [PATCH 38/57] Client: Call wl_output_release() upon QWaylandScreen + destruction + +It ensures that the proxy gets destroyed. + +Change-Id: I915cc8814e33dd3b0405b2bf82bd12ce6b5f785b +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit 054e54759dbd6c3e76b55d5c4a9a54f62967ad1a) +--- + src/client/qwaylandscreen.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp +index 7c2d9be3..64ae4fe7 100644 +--- a/src/client/qwaylandscreen.cpp ++++ b/src/client/qwaylandscreen.cpp +@@ -81,6 +81,8 @@ QWaylandScreen::~QWaylandScreen() + { + if (zxdg_output_v1::isInitialized()) + zxdg_output_v1::destroy(); ++ if (wl_output::isInitialized() && wl_output_get_version(wl_output::object()) >= WL_OUTPUT_RELEASE_SINCE_VERSION) ++ wl_output::release(); + } + + uint QWaylandScreen::requiredEvents() const +-- +2.49.0 + +From 9af4a53aa7a1ec0dad74d115527eeec18b5f4075 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Tue, 22 Nov 2022 12:33:41 +0200 +Subject: [PATCH 39/57] Client: Bump wl_output version + +wl_output_release is available starting with wl_output v3. + +Change-Id: I21822b26728ffb9318f1f8b4bd82ef7329682838 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit c14916f5fd84f6b5483024b3df77592661a0f04e) +--- + src/client/qwaylandscreen.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp +index 64ae4fe7..5537dafd 100644 +--- a/src/client/qwaylandscreen.cpp ++++ b/src/client/qwaylandscreen.cpp +@@ -60,7 +60,7 @@ QWaylandXdgOutputManagerV1::QWaylandXdgOutputManagerV1(QWaylandDisplay* display, + } + + QWaylandScreen::QWaylandScreen(QWaylandDisplay *waylandDisplay, int version, uint32_t id) +- : QtWayland::wl_output(waylandDisplay->wl_registry(), id, qMin(version, 2)) ++ : QtWayland::wl_output(waylandDisplay->wl_registry(), id, qMin(version, 3)) + , m_outputId(id) + , mWaylandDisplay(waylandDisplay) + , mOutputName(QStringLiteral("Screen%1").arg(id)) +-- +2.49.0 + +From eade2f1f746d239410d185d88404c203fed7ebdf Mon Sep 17 00:00:00 2001 +From: Weng Xuetian <wengxt@gmail.com> +Date: Sun, 27 Nov 2022 12:44:40 -0800 +Subject: [PATCH 40/57] Fix frame sync related to unprotected multithread + access + +There is a few crashes happens in real life that frame callback is +double-free'd and hit an assertion in wayland-client. e.g. +https://bugs.kde.org/show_bug.cgi?id=450003 + +This is due to the WaylandEventThread and calls to QWaylandWindow::reset +may free and unset the mFrameCallback at the same time. mFrameSyncMutex +should be used to protect such access. + +Pick-to: 6.4 +Change-Id: Ie01d08d07a2f10f70606ed1935caac09cb4f0382 +(cherry picked from commit b6cbb5e323822d6e3ef5ed4dd5a4c4cc1ea85038) +--- + src/client/qwaylandwindow.cpp | 64 ++++++++++++++++++++--------------- + src/client/qwaylandwindow_p.h | 11 +++--- + 2 files changed, 43 insertions(+), 32 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 464441b1..96de798b 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -252,13 +252,16 @@ void QWaylandWindow::reset() + mSurface.reset(); + } + +- if (mFrameCallback) { +- wl_callback_destroy(mFrameCallback); +- mFrameCallback = nullptr; +- } ++ { ++ QMutexLocker lock(&mFrameSyncMutex); ++ if (mFrameCallback) { ++ wl_callback_destroy(mFrameCallback); ++ mFrameCallback = nullptr; ++ } + +- mFrameCallbackElapsedTimer.invalidate(); +- mWaitingForFrameCallback = false; ++ mFrameCallbackElapsedTimer.invalidate(); ++ mWaitingForFrameCallback = false; ++ } + mFrameCallbackTimedOut = false; + + mMask = QRegion(); +@@ -633,18 +636,21 @@ const wl_callback_listener QWaylandWindow::callbackListener = { + [](void *data, wl_callback *callback, uint32_t time) { + Q_UNUSED(time); + auto *window = static_cast<QWaylandWindow*>(data); +- +- Q_ASSERT(callback == window->mFrameCallback); +- wl_callback_destroy(callback); +- window->mFrameCallback = nullptr; +- +- window->handleFrameCallback(); ++ window->handleFrameCallback(callback); + } + }; + +-void QWaylandWindow::handleFrameCallback() ++void QWaylandWindow::handleFrameCallback(wl_callback* callback) + { + QMutexLocker locker(&mFrameSyncMutex); ++ if (!mFrameCallback) { ++ // This means the callback is already unset by QWaylandWindow::reset. ++ // The wl_callback object will be destroyed there too. ++ return; ++ } ++ Q_ASSERT(callback == mFrameCallback); ++ wl_callback_destroy(callback); ++ mFrameCallback = nullptr; + + mWaitingForFrameCallback = false; + mFrameCallbackElapsedTimer.invalidate(); +@@ -1172,19 +1178,24 @@ void QWaylandWindow::timerEvent(QTimerEvent *event) + if (event->timerId() != mFrameCallbackCheckIntervalTimerId) + return; + +- bool callbackTimerExpired = mFrameCallbackElapsedTimer.hasExpired(mFrameCallbackTimeout); +- if (!mFrameCallbackElapsedTimer.isValid() || callbackTimerExpired ) { +- killTimer(mFrameCallbackCheckIntervalTimerId); +- mFrameCallbackCheckIntervalTimerId = -1; +- } +- if (mFrameCallbackElapsedTimer.isValid() && callbackTimerExpired) { +- mFrameCallbackElapsedTimer.invalidate(); ++ { ++ QMutexLocker lock(&mFrameSyncMutex); + +- qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; +- mFrameCallbackTimedOut = true; +- mWaitingForUpdate = false; +- sendExposeEvent(QRect()); ++ bool callbackTimerExpired = mFrameCallbackElapsedTimer.hasExpired(mFrameCallbackTimeout); ++ if (!mFrameCallbackElapsedTimer.isValid() || callbackTimerExpired ) { ++ killTimer(mFrameCallbackCheckIntervalTimerId); ++ mFrameCallbackCheckIntervalTimerId = -1; ++ } ++ if (!mFrameCallbackElapsedTimer.isValid() || !callbackTimerExpired) { ++ return; ++ } ++ mFrameCallbackElapsedTimer.invalidate(); + } ++ ++ qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; ++ mFrameCallbackTimedOut = true; ++ mWaitingForUpdate = false; ++ sendExposeEvent(QRect()); + } + + void QWaylandWindow::requestUpdate() +@@ -1227,15 +1238,14 @@ void QWaylandWindow::handleUpdate() + { + qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread(); + +- if (mWaitingForFrameCallback) +- return; +- + // TODO: Should sync subsurfaces avoid requesting frame callbacks? + QReadLocker lock(&mSurfaceLock); + if (!mSurface) + return; + + QMutexLocker locker(&mFrameSyncMutex); ++ if (mWaitingForFrameCallback) ++ return; + + struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object())); + wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mDisplay->frameEventQueue()); +diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h +index 487a91a6..2f219d8c 100644 +--- a/src/client/qwaylandwindow_p.h ++++ b/src/client/qwaylandwindow_p.h +@@ -237,12 +237,13 @@ protected: + Qt::MouseButtons mMousePressedInContentArea = Qt::NoButton; + + WId mWindowId; +- bool mWaitingForFrameCallback = false; + bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out +- QAtomicInt mWaitingForUpdateDelivery = false; + int mFrameCallbackCheckIntervalTimerId = -1; +- QElapsedTimer mFrameCallbackElapsedTimer; +- struct ::wl_callback *mFrameCallback = nullptr; ++ QAtomicInt mWaitingForUpdateDelivery = false; ++ ++ bool mWaitingForFrameCallback = false; // Protected by mFrameSyncMutex ++ QElapsedTimer mFrameCallbackElapsedTimer; // Protected by mFrameSyncMutex ++ struct ::wl_callback *mFrameCallback = nullptr; // Protected by mFrameSyncMutex + QMutex mFrameSyncMutex; + QWaitCondition mFrameSyncWait; + +@@ -297,7 +298,7 @@ private: + QRect mLastExposeGeometry; + + static const wl_callback_listener callbackListener; +- void handleFrameCallback(); ++ void handleFrameCallback(struct ::wl_callback* callback); + + static QWaylandWindow *mMouseGrab; + +-- +2.49.0 + +From 029095e9efb0c296771d3df6c68b03a3e8de791e Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Tue, 27 Sep 2022 22:05:07 +0300 +Subject: [PATCH 41/57] Client: Handle zwp_primary_selection_device_manager_v1 + global removal + +The zwp_primary_selection_device_manager_v1 global can be withdrawn if +the compositor disables the primary selection, i.e. middle click to +paste selected text. QtWayland needs to handle that; otherwise the app +can crash. + +Pick-to: 6.5 +Change-Id: Idbb4db18b605f85a5951fa12c1bdf61898b0d123 +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 45163234a4e4baad0012d3ee07501093d98ba91c) +--- + src/client/qwaylanddisplay.cpp | 9 +++++++++ + src/client/qwaylandprimaryselectionv1.cpp | 5 ----- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index f23c459d..cc321497 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -519,6 +519,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin + #if QT_CONFIG(wayland_client_primary_selection) + } else if (interface == QStringLiteral("zwp_primary_selection_device_manager_v1")) { + mPrimarySelectionManager.reset(new QWaylandPrimarySelectionDeviceManagerV1(this, id, 1)); ++ for (QWaylandInputDevice *inputDevice : qAsConst(mInputDevices)) ++ inputDevice->setPrimarySelectionDevice(mPrimarySelectionManager->createDevice(inputDevice)); + #endif + } else if (interface == QStringLiteral("zwp_text_input_manager_v2") && !mClientSideInputContextRequested) { + mTextInputManager.reset(new QtWayland::zwp_text_input_manager_v2(registry, id, 1)); +@@ -577,6 +579,13 @@ void QWaylandDisplay::registry_global_remove(uint32_t id) + inputDevice->setTextInput(nullptr); + mWaylandIntegration->reconfigureInputContext(); + } ++#if QT_CONFIG(wayland_client_primary_selection) ++ if (global.interface == QStringLiteral("zwp_primary_selection_device_manager_v1")) { ++ mPrimarySelectionManager.reset(); ++ for (QWaylandInputDevice *inputDevice : qAsConst(mInputDevices)) ++ inputDevice->setPrimarySelectionDevice(nullptr); ++ } ++#endif + mGlobals.removeAt(i); + break; + } +diff --git a/src/client/qwaylandprimaryselectionv1.cpp b/src/client/qwaylandprimaryselectionv1.cpp +index 7805dd73..dac532b2 100644 +--- a/src/client/qwaylandprimaryselectionv1.cpp ++++ b/src/client/qwaylandprimaryselectionv1.cpp +@@ -54,11 +54,6 @@ QWaylandPrimarySelectionDeviceManagerV1::QWaylandPrimarySelectionDeviceManagerV1 + : zwp_primary_selection_device_manager_v1(display->wl_registry(), id, qMin(version, uint(1))) + , m_display(display) + { +- // Create devices for all seats. +- // This only works if we get the global before all devices +- const auto seats = m_display->inputDevices(); +- for (auto *seat : seats) +- seat->setPrimarySelectionDevice(createDevice(seat)); + } + + QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat) +-- +2.49.0 + +From 42fead566aa704237efa3c883597d4df32b56c3c Mon Sep 17 00:00:00 2001 +From: Aleix Pol <aleixpol@kde.org> +Date: Mon, 19 Dec 2022 15:31:03 +0100 +Subject: [PATCH 42/57] Fixes the build on CentOS + +Change-Id: I3c21972e7681be99b0f45c3ea3a57be285e4ff8e +--- + src/client/qwaylandshmbackingstore.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp +index 98acd42d..41cffdf7 100644 +--- a/src/client/qwaylandshmbackingstore.cpp ++++ b/src/client/qwaylandshmbackingstore.cpp +@@ -78,7 +78,7 @@ QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display, + int alloc = stride * size.height(); + int fd = -1; + +-#ifdef SYS_memfd_create ++#if defined(SYS_memfd_create) && defined(F_SEAL_SEAL) + fd = syscall(SYS_memfd_create, "wayland-shm", MFD_CLOEXEC | MFD_ALLOW_SEALING); + if (fd >= 0) + fcntl(fd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_SEAL); +-- +2.49.0 + +From 14ae8c7d0375693ab15b7642876a2114495a2d56 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +Date: Mon, 23 May 2022 09:47:24 +0200 +Subject: [PATCH 43/57] client: Avoid protocol error with invalid min/max size + +If the application sets an invalid minimum and maximum size +(where the minimum is higher than the maximum), then we +would blindly send this over the protocol, which is a protocol +error according to the spec. Qt compositors will warn about +this and ignore the size, but mainly because "but there's no +matching error defined" according to the comment. Other +compositors may close the connection when this happens. + +To avoid crashing the app based on bogus min/max size, we +make sure we never send a maximum size which is less than +the minimum size. This corresponds to the behavior of +compositors which accept the size without raising an error: +the minimum size takes precedence. + +Note that 0 means "no maximum size" in the protocol, so we +cap the value before applying this logic. + +[ChangeLog][Client] Fixed an issue where setting an invalid +minimum and maximum size on a window would cause some +compositors to raise a protocol error. + +Pick-to: 6.2 6.3 +Fixes: QTBUG-102626 +Fixes: QTBUG-103391 +Change-Id: I4004a4550a9fe3dae6a27169b4d1a9a616e21841 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit 487de47277ccc31891f6340ce4c971c91336d9a4) +--- + src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +index c79b0e49..6ddcc410 100644 +--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp ++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +@@ -387,10 +387,10 @@ void QWaylandXdgSurface::setSizeHints() + const int minHeight = qMax(0, m_window->windowMinimumSize().height()); + m_toplevel->set_min_size(minWidth, minHeight); + +- int maxWidth = qMax(0, m_window->windowMaximumSize().width()); ++ int maxWidth = qMax(minWidth, m_window->windowMaximumSize().width()); + if (maxWidth == QWINDOWSIZE_MAX) + maxWidth = 0; +- int maxHeight = qMax(0, m_window->windowMaximumSize().height()); ++ int maxHeight = qMax(minHeight, m_window->windowMaximumSize().height()); + if (maxHeight == QWINDOWSIZE_MAX) + maxHeight = 0; + m_toplevel->set_max_size(maxWidth, maxHeight); +-- +2.49.0 + +From e4922c95446cf0693da5c47d1064a5120e6287ce Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Tue, 22 Nov 2022 23:27:34 +0200 +Subject: [PATCH 44/57] Client: Fix handling of Qt::BlankCursor + +The cursor may not be properly set when a window has Qt::BlankCursor and +it's shown. In that case, the cursor surface may not be present and +wl_pointer.set_cursor won't be called. + +On the other hand, wl_pointer.set_cursor must be always called when +wl_pointer.enter is received. + +Pick-to: 6.5 +Change-Id: I8540e7a02df1579b3380a1a1d4cfab42c1ab3104 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> +(cherry picked from commit e954853f0e68d78ac1a98bc3533713881496064c) +--- + src/client/qwaylandinputdevice.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index 76cbfb1f..278e31f9 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -311,8 +311,7 @@ void QWaylandInputDevice::Pointer::updateCursor() + auto shape = seat()->mCursor.shape; + + if (shape == Qt::BlankCursor) { +- if (mCursor.surface) +- mCursor.surface->hide(); ++ getOrCreateCursorSurface()->hide(); + return; + } + +-- +2.49.0 + +From 78b46c8d7045a8f4d40d55a959c995cdfabbe4d9 Mon Sep 17 00:00:00 2001 +From: Marco Martin <notmart@gmail.com> +Date: Fri, 24 Feb 2023 17:40:48 +0100 +Subject: [PATCH 45/57] client: Force a roundtrip when an XdgOutput is not + ready yet + +Is possible that the server sends a surface_enter before +all the information of the XdgOutput have been processed by the client. +in this case the associated QScreen doesn't exist yet, causing a +QWindow::SetScreen(nullptr), which will fall back to +QGuiApplication::primaryScreen(), having the QWindow being assigned the +wrong screen + +Change-Id: I923d5d3a35484deafa6f0572f79c16c27b1f87f0 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +--- + src/client/qwaylandwindow.cpp | 2 ++ + tests/auto/client/shared/coreprotocol.cpp | 2 ++ + tests/auto/client/shared/coreprotocol.h | 3 ++ + tests/auto/client/xdgoutput/tst_xdgoutput.cpp | 35 +++++++++++++++++++ + 4 files changed, 42 insertions(+) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 96de798b..5280a9f7 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -1042,6 +1042,8 @@ void QWaylandWindow::handleScreensChanged() + if (newScreen == mLastReportedScreen) + return; + ++ if (!newScreen->isPlaceholder() && !newScreen->QPlatformScreen::screen()) ++ mDisplay->forceRoundTrip(); + QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->QPlatformScreen::screen()); + mLastReportedScreen = newScreen; + if (fixedToplevelPositions && !QPlatformWindow::parent() && window()->type() != Qt::Popup +diff --git a/tests/auto/client/shared/coreprotocol.cpp b/tests/auto/client/shared/coreprotocol.cpp +index d1a2e7cb..53e12291 100644 +--- a/tests/auto/client/shared/coreprotocol.cpp ++++ b/tests/auto/client/shared/coreprotocol.cpp +@@ -185,6 +185,8 @@ void Output::output_bind_resource(QtWaylandServer::wl_output::Resource *resource + + if (m_version >= WL_OUTPUT_DONE_SINCE_VERSION) + wl_output::send_done(resource->handle); ++ ++ Q_EMIT outputBound(resource); + } + + // Seat stuff +diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h +index 210d8ddb..00c439e1 100644 +--- a/tests/auto/client/shared/coreprotocol.h ++++ b/tests/auto/client/shared/coreprotocol.h +@@ -273,6 +273,9 @@ public: + OutputData m_data; + int m_version = 1; // TODO: remove on libwayland upgrade + ++Q_SIGNALS: ++ void outputBound(Resource *resource); ++ + protected: + void output_bind_resource(Resource *resource) override; + }; +diff --git a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp +index 20f762e0..2a0cad1d 100644 +--- a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp ++++ b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp +@@ -55,6 +55,7 @@ private slots: + void primaryScreen(); + void overrideGeometry(); + void changeGeometry(); ++ void outputCreateEnterRace(); + }; + + void tst_xdgoutput::cleanup() +@@ -134,5 +135,39 @@ void tst_xdgoutput::changeGeometry() + exec([&] { remove(output(1)); }); + } + ++void tst_xdgoutput::outputCreateEnterRace() ++{ ++ m_config.autoConfigure = true; ++ m_config.autoEnter = false; ++ QRasterWindow window; ++ QSignalSpy screenChanged(&window, &QWindow::screenChanged); ++ window.resize(400, 320); ++ window.show(); ++ QCOMPOSITOR_TRY_VERIFY(xdgSurface() && xdgSurface()->m_committedConfigureSerial); ++ exec([=] { xdgToplevel()->surface()->sendEnter(output(0));}); ++ ++ QTRY_COMPARE(QGuiApplication::screens().size(), 1); ++ QScreen *primaryScreen = QGuiApplication::screens().first(); ++ QCOMPARE(window.screen(), primaryScreen); ++ ++ auto *out = exec([=] { ++ return add<Output>(); ++ }); ++ ++ // In Compositor Thread ++ connect(out, &Output::outputBound, this, [this](QtWaylandServer::wl_output::Resource *resource){ ++ auto surface = xdgToplevel()->surface(); ++ surface->sendLeave(output(0)); ++ surface->QtWaylandServer::wl_surface::send_enter(surface->resource()->handle, resource->handle); ++ }, Qt::DirectConnection); ++ ++ QTRY_COMPARE(QGuiApplication::screens().size(), 2); ++ QTRY_COMPARE(window.screen(), QGuiApplication::screens()[1]); ++ ++ exec([=] { remove(out); }); ++ m_config.autoConfigure = false; ++ m_config.autoEnter = true; ++} ++ + QCOMPOSITOR_TEST_MAIN(tst_xdgoutput) + #include "tst_xdgoutput.moc" +-- +2.49.0 + +From d6fc2f8ddc1eb2d016b7bbeccef5f433e9d8e0b6 Mon Sep 17 00:00:00 2001 +From: David Redondo <qt@david-redondo.de> +Date: Tue, 11 Apr 2023 14:27:27 +0200 +Subject: [PATCH 46/57] Destroy frame queue before display + +wl_event_queue_destroy accesses the display. +Found by running a test under valgrind. + +Pick-to: 6.5 +Change-Id: Ic89cbd3b6e98b4fc9561b0e63b5fab4886a1ec50 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit a76bf824fcd1cc3789f0d3454a0423c0241d9718) +--- + src/client/qwaylanddisplay.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index cc321497..737b539d 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -379,11 +379,12 @@ QWaylandDisplay::~QWaylandDisplay(void) + #if QT_CONFIG(cursor) + qDeleteAll(mCursorThemes); + #endif +- if (mDisplay) +- wl_display_disconnect(mDisplay); + + if (m_frameEventQueue) + wl_event_queue_destroy(m_frameEventQueue); ++ ++ if (mDisplay) ++ wl_display_disconnect(mDisplay); + } + + // Steps which is called just after constructor. This separates registry_global() out of the constructor +-- +2.49.0 + +From 80bce1e6a818ee86011cfdad6b2a9a79cd4e0300 Mon Sep 17 00:00:00 2001 +From: David Edmundson <davidedmundson@kde.org> +Date: Wed, 7 Jun 2023 22:12:15 +0100 +Subject: [PATCH 47/57] client: Fix crash on dnd updates after client facing + drag ends + +A platform drag and a application-facing drag have two different +lifespans. + +The platform drag lasts until all mimedata is transferred and the client +receiving the drops marks it as finished. + +The application facing QDrag lasts until the client deletes it. We can +get a crash if we get updates during this time. + +The drop event is guarded, but not the action negotiation. + +Pick-to: 6.6 +Change-Id: Ib9c047f04d65883105d4cd3f169637d0e038a63f +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 22daca49b807fefba58113a06b86df4274e49f62) +--- + src/client/qwaylanddatadevice.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp +index 5c5b8485..c57f1a49 100644 +--- a/src/client/qwaylanddatadevice.cpp ++++ b/src/client/qwaylanddatadevice.cpp +@@ -138,6 +138,9 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, Qt::DropActions supporte + connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled); + connect(m_dragSource.data(), &QWaylandDataSource::dndResponseUpdated, this, [this](bool accepted, Qt::DropAction action) { + auto drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag()); ++ if (!drag->currentDrag()) { ++ return; ++ } + // in old versions drop action is not set, so we guess + if (wl_data_source_get_version(m_dragSource->object()) < 3) { + drag->setResponse(accepted); +-- +2.49.0 + +From 5223ce7a3620a35197d98be95d7d8ffbe1565979 Mon Sep 17 00:00:00 2001 +From: Michael Weghorn <m.weghorn@posteo.de> +Date: Mon, 20 Feb 2023 14:02:23 +0100 +Subject: [PATCH 48/57] Convert cursor bitmap to supported format + +The 1-bit image formats QImage::Format_Mono and +QImage::Format_MonoLSB used by cursor bitmaps don't have +a corresponding wl_shm_format. + +Therefore, convert to a supported image format as necessary +to make such bitmap cursors work on Wayland as well. + +Fixes: QTBUG-95434 +Change-Id: I402fd870b301ddc01075251b66f2cf7cc1923133 +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit 45ec1362f8fcb5ade92f4d2d4985b1c24e78c8ba) + +Backport changes: Use Qt::ReturnByValue version for QCursor::mask() and QCursor::bitmap() +--- + src/client/qwaylandcursor.cpp | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp +index e4eca9d4..ba76ba2d 100644 +--- a/src/client/qwaylandcursor.cpp ++++ b/src/client/qwaylandcursor.cpp +@@ -44,6 +44,7 @@ + #include "qwaylandshmbackingstore_p.h" + + #include <QtGui/QImageReader> ++#include <QBitmap> + #include <QDebug> + + #include <wayland-cursor.h> +@@ -250,7 +251,27 @@ QWaylandCursor::QWaylandCursor(QWaylandDisplay *display) + QSharedPointer<QWaylandBuffer> QWaylandCursor::cursorBitmapBuffer(QWaylandDisplay *display, const QCursor *cursor) + { + Q_ASSERT(cursor->shape() == Qt::BitmapCursor); +- const QImage &img = cursor->pixmap().toImage(); ++ ++ const QBitmap mask = cursor->mask(Qt::ReturnByValue); ++ QImage img; ++ if (cursor->pixmap().isNull()) ++ img = cursor->bitmap(Qt::ReturnByValue).toImage(); ++ else ++ img = cursor->pixmap().toImage(); ++ ++ // convert to supported format if necessary ++ if (!display->shm()->formatSupported(img.format())) { ++ if (mask.isNull()) { ++ img.convertTo(QImage::Format_RGB32); ++ } else { ++ // preserve mask ++ img.convertTo(QImage::Format_ARGB32); ++ QPixmap pixmap = QPixmap::fromImage(img); ++ pixmap.setMask(mask); ++ img = pixmap.toImage(); ++ } ++ } ++ + QSharedPointer<QWaylandShmBuffer> buffer(new QWaylandShmBuffer(display, img.size(), img.format())); + memcpy(buffer->image()->bits(), img.bits(), size_t(img.sizeInBytes())); + return buffer; +-- +2.49.0 + +From 9214e8235fa31123e83fda8b2a6bc32999863c1d Mon Sep 17 00:00:00 2001 +From: Jungi Byun <jungi.byun@lge.com> +Date: Wed, 27 Jan 2021 08:24:23 +0900 +Subject: [PATCH 49/57] Replace scale with devicePixelRatio for non-integer + scaling + +The 'scale' event from wayland cannot support non-integer scaling +which was originally supported in Qt. + +As default, devicePixelRatio follows the 'scale' so that the high DPI +still works as the mechanism in Wayland. But if non-integer scaling +factor such as 150% is needed, it can be supported to override the +devicePixelRatio. + +Change-Id: I63a04db27bd521264b6d0904e1ddd05a572dc970 +Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com> +Reviewed-by: Jungi Byun <jungi.byun@lge.com> +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit cf98abbc6ae9ba9373803ffe193f839324e0c80b) +--- + src/client/qwaylandabstractdecoration.cpp | 2 +- + src/client/qwaylandshmbackingstore.cpp | 6 +++--- + src/client/qwaylandshmbackingstore_p.h | 2 +- + src/client/qwaylandwindow.cpp | 16 ++++++++-------- + src/client/qwaylandwindow_p.h | 2 +- + .../client/wayland-egl/qwaylandglcontext.cpp | 2 +- + 6 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/src/client/qwaylandabstractdecoration.cpp b/src/client/qwaylandabstractdecoration.cpp +index b628930d..d15a7f9f 100644 +--- a/src/client/qwaylandabstractdecoration.cpp ++++ b/src/client/qwaylandabstractdecoration.cpp +@@ -122,7 +122,7 @@ const QImage &QWaylandAbstractDecoration::contentImage() + if (d->m_isDirty) { + // Update the decoration backingstore + +- const int bufferScale = waylandWindow()->scale(); ++ const qreal bufferScale = waylandWindow()->scale(); + const QSize imageSize = waylandWindow()->surfaceSize() * bufferScale; + d->m_decorationContentImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied); + // Only scale by buffer scale, not QT_SCALE_FACTOR etc. +diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp +index 41cffdf7..90e37e95 100644 +--- a/src/client/qwaylandshmbackingstore.cpp ++++ b/src/client/qwaylandshmbackingstore.cpp +@@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE + namespace QtWaylandClient { + + QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display, +- const QSize &size, QImage::Format format, int scale) ++ const QSize &size, QImage::Format format, qreal scale) + { + int stride = size.width() * 4; + int alloc = stride * size.height(); +@@ -114,7 +114,7 @@ QWaylandShmBuffer::QWaylandShmBuffer(QWaylandDisplay *display, + QWaylandShm* shm = display->shm(); + wl_shm_format wl_format = shm->formatFrom(format); + mImage = QImage(data, size.width(), size.height(), stride, format); +- mImage.setDevicePixelRatio(qreal(scale)); ++ mImage.setDevicePixelRatio(scale); + + mShmPool = wl_shm_create_pool(shm->object(), fd, alloc); + init(wl_shm_pool_create_buffer(mShmPool,0, size.width(), size.height(), +@@ -277,7 +277,7 @@ QWaylandShmBuffer *QWaylandShmBackingStore::getBuffer(const QSize &size) + void QWaylandShmBackingStore::resize(const QSize &size) + { + QMargins margins = windowDecorationMargins(); +- int scale = waylandWindow()->scale(); ++ qreal scale = waylandWindow()->scale(); + QSize sizeWithMargins = (size + QSize(margins.left()+margins.right(),margins.top()+margins.bottom())) * scale; + + // We look for a free buffer to draw into. If the buffer is not the last buffer we used, +diff --git a/src/client/qwaylandshmbackingstore_p.h b/src/client/qwaylandshmbackingstore_p.h +index e01632da..f3fae438 100644 +--- a/src/client/qwaylandshmbackingstore_p.h ++++ b/src/client/qwaylandshmbackingstore_p.h +@@ -71,7 +71,7 @@ class QWaylandWindow; + class Q_WAYLAND_CLIENT_EXPORT QWaylandShmBuffer : public QWaylandBuffer { + public: + QWaylandShmBuffer(QWaylandDisplay *display, +- const QSize &size, QImage::Format format, int scale = 1); ++ const QSize &size, QImage::Format format, qreal scale = 1); + ~QWaylandShmBuffer() override; + QSize size() const override { return mImage.size(); } + int scale() const override { return int(mImage.devicePixelRatio()); } +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 5280a9f7..38b10269 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -185,7 +185,7 @@ void QWaylandWindow::initWindow() + // typically be integer 1 (normal-dpi) or 2 (high-dpi). Call set_buffer_scale() + // to inform the compositor that high-resolution buffers will be provided. + if (mDisplay->compositorVersion() >= 3) +- mSurface->set_buffer_scale(scale()); ++ mSurface->set_buffer_scale(mScale); + + if (QScreen *s = window()->screen()) + setOrientationMask(s->orientationUpdateMask()); +@@ -572,9 +572,9 @@ void QWaylandWindow::damage(const QRect &rect) + if (mSurface == nullptr) + return; + +- const int s = scale(); ++ const qreal s = scale(); + if (mDisplay->compositorVersion() >= 4) +- mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()); ++ mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height())); + else + mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); + } +@@ -613,9 +613,9 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage) + + attachOffset(buffer); + if (mDisplay->compositorVersion() >= 4) { +- const int s = scale(); ++ const qreal s = scale(); + for (const QRect &rect: damage) +- mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()); ++ mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height())); + } else { + for (const QRect &rect: damage) + mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); +@@ -1106,14 +1106,14 @@ bool QWaylandWindow::isActive() const + return mDisplay->isWindowActivated(this); + } + +-int QWaylandWindow::scale() const ++qreal QWaylandWindow::scale() const + { +- return mScale; ++ return devicePixelRatio(); + } + + qreal QWaylandWindow::devicePixelRatio() const + { +- return mScale; ++ return qreal(mScale); + } + + bool QWaylandWindow::setMouseGrabEnabled(bool grab) +diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h +index 2f219d8c..741f9e5c 100644 +--- a/src/client/qwaylandwindow_p.h ++++ b/src/client/qwaylandwindow_p.h +@@ -158,7 +158,7 @@ public: + + void setMask(const QRegion ®ion) override; + +- int scale() const; ++ qreal scale() const; + qreal devicePixelRatio() const override; + + void requestActivateWindow() override; +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +index c1f45fa6..bbc63444 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +@@ -195,7 +195,7 @@ public: + QOpenGLTextureCache *cache = QOpenGLTextureCache::cacheForContext(m_context->context()); + + QSize surfaceSize = window->surfaceSize(); +- int scale = window->scale() ; ++ qreal scale = window->scale() ; + glViewport(0, 0, surfaceSize.width() * scale, surfaceSize.height() * scale); + + //Draw Decoration +-- +2.49.0 + +From 9792ec7b5edc421c7ca88bd10cadc8b6b8462128 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Thu, 3 Aug 2023 12:28:44 +0300 +Subject: [PATCH 50/57] Client: Fix buffer damage + +If the specified damage rectangle has fractional coordinates in the buffer +local coordinate space, the buffer damage needs to be expanded, i.e. + +- bufferRect.left = floor(rect.left * scale) +- bufferRect.right = ceil(rect.right * scale) = ceil((rect.x + rect.width) * scale) + +Flooring the coordinates and ceiling the size is not enough. It can +produce incorrect results. + +For example, consider that a rectangle with logical coordinates of +QRect(0, 23, 179, 46) has been damaged in a window with scale 1.5. When +flooring the coordinates and ceiling the size, the following buffer +damage rect will be produced: QRect(0, 34, 269, 69). Its height is off by +1, the expected height is 70 (ceil((23 + 46) * 1.5) - floor(23 * 1.5) = +ceil(103.5) - floor(34.5) = 104 - 34 = 70). + +Pick-to: 5.15 6.5 6.6 +Change-Id: I927e75a2224bb58b4634125011d1305dbdfbb3aa +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit d79db699866b37bd3e3358ca18a210dfc5c0b4b9) +--- + src/client/qwaylandwindow.cpp | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 38b10269..5d01507d 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -573,10 +573,15 @@ void QWaylandWindow::damage(const QRect &rect) + return; + + const qreal s = scale(); +- if (mDisplay->compositorVersion() >= 4) +- mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height())); +- else ++ if (mDisplay->compositorVersion() >= 4) { ++ const QRect bufferRect = ++ QRectF(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()) ++ .toAlignedRect(); ++ mSurface->damage_buffer(bufferRect.x(), bufferRect.y(), bufferRect.width(), ++ bufferRect.height()); ++ } else { + mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); ++ } + } + + void QWaylandWindow::safeCommit(QWaylandBuffer *buffer, const QRegion &damage) +@@ -614,8 +619,13 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage) + attachOffset(buffer); + if (mDisplay->compositorVersion() >= 4) { + const qreal s = scale(); +- for (const QRect &rect: damage) +- mSurface->damage_buffer(qFloor(s * rect.x()), qFloor(s * rect.y()), qCeil(s * rect.width()), qCeil(s * rect.height())); ++ for (const QRect &rect : damage) { ++ const QRect bufferRect = ++ QRectF(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height()) ++ .toAlignedRect(); ++ mSurface->damage_buffer(bufferRect.x(), bufferRect.y(), bufferRect.width(), ++ bufferRect.height()); ++ } + } else { + for (const QRect &rect: damage) + mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height()); +-- +2.49.0 + +From b2757109906778aee52f8fd97f129800b8b10139 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Fri, 25 Aug 2023 10:19:07 +0300 +Subject: [PATCH 51/57] Client: Commit the initial surface state explicitly + +QWaylandWindow lacks an explicit step to finish initializing the shell +surface by committing the surface. So far it used to work because of +hidden surface commits in +QWaylandWindow::handleContentOrientationChange(), +QWaylandWindow::setMask() and so on. + +This change adds an explicit step to commit the initial surface state to +make the shell surface initialization robust. + +Change-Id: Ibc38a4e0dbea689a727451c25a61af0270c7e548 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit 225432c2294bdfbf24856b2f155cd274b24543b2) +--- + src/client/qwaylandwindow.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 5d01507d..5eee0414 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -200,6 +200,8 @@ void QWaylandWindow::initWindow() + mShellSurface->requestWindowStates(window()->windowStates()); + handleContentOrientationChange(window()->contentOrientation()); + mFlags = window()->flags(); ++ ++ mSurface->commit(); + } + + void QWaylandWindow::initializeWlSurface() +-- +2.49.0 + +From cd324e2ff6130dbd2a17799e28a87743894e5d94 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Fri, 15 Sep 2023 10:06:32 +0300 +Subject: [PATCH 52/57] tests: Fix tst_xdgshell::minMaxSize() + +Amends e8cff6fb39c0fd01548bce18542820a6612dbe49. + +The new size hints will be committed when the surface is committed. + +Change-Id: I94e944fee7dac63d5e9ac86fb348b5d24d54abfc +Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +(cherry picked from commit d8d3d6097afeac62f1b0285e3d5365c7cb580547) +--- + tests/auto/client/xdgshell/tst_xdgshell.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp +index c5271f63..f2181fd6 100644 +--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp ++++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp +@@ -604,9 +604,11 @@ void tst_xdgshell::minMaxSize() + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000)); + + window.setMaximumSize(QSize(500, 400)); ++ window.update(); + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(500, 400)); + + window.setMinimumSize(QSize(50, 40)); ++ window.update(); + QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(50, 40)); + } + +-- +2.49.0 + +From 1bbec113edfd6424f769a83b877541e5147f8233 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Fri, 25 Aug 2023 10:15:29 +0300 +Subject: [PATCH 53/57] Client: Remove some surface commits + +The buffer transform, input and opaque regions are double buffered +state. They will be applied on the next surface commit. + +But the issue with them is that the relevant code makes surface commits +too. It's undesired as it can lead to qtwayland committing partial +state, for example it can break xdg surface window geometry. + +This change removes hidden surface commits. The relevant properties will +be applied on the next frame. + +Change-Id: I1c40c9a5430fb6b91d7643b20d628f8a9a9d501a +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit e8cff6fb39c0fd01548bce18542820a6612dbe49) +--- + src/client/qwaylandwindow.cpp | 4 ---- + src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 3 --- + 2 files changed, 7 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 5eee0414..7a9bccc1 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -478,8 +478,6 @@ void QWaylandWindow::setMask(const QRegion &mask) + if (isOpaque()) + setOpaqueArea(mMask); + } +- +- mSurface->commit(); + } + + void QWaylandWindow::applyConfigureWhenPossible() +@@ -794,8 +792,6 @@ void QWaylandWindow::handleContentOrientationChange(Qt::ScreenOrientation orient + Q_UNREACHABLE(); + } + mSurface->set_buffer_transform(transform); +- // set_buffer_transform is double buffered, we need to commit. +- mSurface->commit(); + } + + void QWaylandWindow::setOrientationMask(Qt::ScreenOrientations mask) +diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +index 6ddcc410..9c6cbb81 100644 +--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp ++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +@@ -370,9 +370,6 @@ bool QWaylandXdgSurface::wantsDecorations() const + void QWaylandXdgSurface::propagateSizeHints() + { + setSizeHints(); +- +- if (m_toplevel && m_window) +- m_window->commit(); + } + + void QWaylandXdgSurface::setWindowGeometry(const QRect &rect) +-- +2.49.0 + +From 686d1a0026a37f2fc3225b6f91ee30a73cb1c105 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Wed, 30 Aug 2023 09:49:41 +0300 +Subject: [PATCH 54/57] Client: Avoid locking resizing in + QWaylandShmBackingStore + +QWaylandWindow::setCanResize(false) will block applying configure +events. QWaylandWindow::setCanResize(true) will unblock configure events +and potentially apply a scheduled configure event if there's one. + +QWaylandWindow::setCanResize(true) has to be called **after** committing +the surface to ensure that the xdg window geometry matches the buffer. +We don't want the xdg window geometry change when painting. + +Unfortunately, setCanResize(true) can be called before the surface is +committed when using a RasterSurface, for example + + - QWaylandShmBackingStore::beginPaint(): calls setCanResize(false) + - QWaylandShmBackingStore::endPaint(): calls setCanResize(true) + - QWaylandWindow::setCanResize(true): applies pending configure event + - QWaylandShmBackingStore::flush(): commits the surface, but the xdg + window geometry is wrong now + +As is, beginPaint() and endPaint() are not entirely correct functions +where configure events can be blocked. We need functions that wrap both +painting and flushing, which are not feasible with the current backing +store design. + +On the other hand, it's worth noting that blocking configure events in +the backing store is not necessary because painting happens on the main +thread unlike OpenGL or Vulkan code paths. + +Given the lack of synchronization points and the fact that rendering +happens on the main thread, this change removes blocking configure +events in QWaylandShmBackingStore. It fixes dolphin and various other +applications that use QtWidgets jumping while being interactively +resized. + +Change-Id: I156e4fd5e04a6bba7e8d48171510d5ab0ec89713 +Reviewed-by: David Edmundson <davidedmundson@kde.org> +(cherry picked from commit 8828452bcf2ecf4e02a64380a1697d148c4366b0) +--- + src/client/qwaylandshmbackingstore.cpp | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp +index 90e37e95..145f933b 100644 +--- a/src/client/qwaylandshmbackingstore.cpp ++++ b/src/client/qwaylandshmbackingstore.cpp +@@ -186,8 +186,6 @@ void QWaylandShmBackingStore::beginPaint(const QRegion ®ion) + mPainting = true; + ensureSize(); + +- waylandWindow()->setCanResize(false); +- + if (mBackBuffer->image()->hasAlphaChannel()) { + QPainter p(paintDevice()); + p.setCompositionMode(QPainter::CompositionMode_Source); +@@ -202,7 +200,6 @@ void QWaylandShmBackingStore::endPaint() + mPainting = false; + if (mPendingFlush) + flush(window(), mPendingRegion, QPoint()); +- waylandWindow()->setCanResize(true); + } + + void QWaylandShmBackingStore::ensureSize() +-- +2.49.0 + +From 898f4f4b8761f54ba4f8ea15451ad22802ad6fc4 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> +Date: Fri, 10 May 2024 13:20:30 +0200 +Subject: [PATCH 55/57] Fix race condition in drag and drop + +The data source may be deleted by libwayland while we hold a +reference to it. This could cause crashes when dragging +and dropping repeatedly and very rapidly between two +components. + +Tapping into sourceDestroyed() for this as well allows us to +recover more gracefully. + +This also required adding some null pointer checks to the code, +since it wasn't really prepared for the data source +disappearing. + +Pick-to: 5.15 6.2 6.5 6.7 6.8 +Fixes: QTBUG-124502 +Change-Id: Ic3df8bf70176c5424ac5c693f8456f61e7b2762b +Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> +(cherry picked from commit 792bd8510e3bc6b47bcaedfb1386390ce3a10a3a) +--- + src/compositor/wayland_wrapper/qwldatadevice.cpp | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/src/compositor/wayland_wrapper/qwldatadevice.cpp b/src/compositor/wayland_wrapper/qwldatadevice.cpp +index a3a795f9..f301678e 100644 +--- a/src/compositor/wayland_wrapper/qwldatadevice.cpp ++++ b/src/compositor/wayland_wrapper/qwldatadevice.cpp +@@ -76,6 +76,9 @@ void DataDevice::sourceDestroyed(DataSource *source) + { + if (m_selectionSource == source) + m_selectionSource = nullptr; ++ ++ if (m_dragDataSource == source) ++ m_dragDataSource = nullptr; + } + + #if QT_CONFIG(draganddrop) +@@ -105,9 +108,11 @@ void DataDevice::setDragFocus(QWaylandSurface *focus, const QPointF &localPositi + if (m_dragDataSource && !offer) + return; + +- send_enter(resource->handle, serial, focus->resource(), +- wl_fixed_from_double(localPosition.x()), wl_fixed_from_double(localPosition.y()), +- offer->resource()->handle); ++ if (offer) { ++ send_enter(resource->handle, serial, focus->resource(), ++ wl_fixed_from_double(localPosition.x()), wl_fixed_from_double(localPosition.y()), ++ offer->resource()->handle); ++ } + + m_dragFocus = focus; + m_dragFocusResource = resource; +@@ -139,7 +144,7 @@ void DataDevice::drop() + if (m_dragFocusResource) { + send_drop(m_dragFocusResource->handle); + setDragFocus(nullptr, QPoint()); +- } else { ++ } else if (m_dragDataSource) { + m_dragDataSource->cancel(); + } + m_dragOrigin = nullptr; +@@ -155,6 +160,8 @@ void DataDevice::data_device_start_drag(Resource *resource, struct ::wl_resource + { + m_dragClient = resource->client(); + m_dragDataSource = source ? DataSource::fromResource(source) : nullptr; ++ if (m_dragDataSource) ++ m_dragDataSource->setDevice(this); + m_dragOrigin = QWaylandSurface::fromResource(origin); + QWaylandDrag *drag = m_seat->drag(); + setDragIcon(icon ? QWaylandSurface::fromResource(icon) : nullptr); +-- +2.49.0 + +From ec4fa1a0bf2981b7ef6d7caec84f3b1ac706d14b Mon Sep 17 00:00:00 2001 +From: Liu Zheng <liuzheng@uniontech.com> +Date: Wed, 24 Jul 2024 09:22:42 +0800 +Subject: [PATCH 56/57] fix: variable not initialized + +If the disableResizeCheck logic is not checked, initialization will fail. Problems will arise later. + +Pick-to: 6.8 6.7 6.5 6.2 5.15 +Change-Id: Ifffd4f7407b3ef616d436b81f3b2148c1139c3f7 +Reviewed-by: Liang Qi <liang.qi@qt.io> +(cherry picked from commit dc49720c135e0d59dff42c9fd28f57a6199c33b9) +--- + .../client/wayland-egl/qwaylandeglwindow.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +index dbe2845a..95e8c666 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp +@@ -118,7 +118,8 @@ void QWaylandEglWindow::updateSurface(bool create) + } else { + QReadLocker locker(&mSurfaceLock); + if (m_waylandEglWindow) { +- int current_width, current_height; ++ int current_width = 0; ++ int current_height = 0; + static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt(); + + if (!disableResizeCheck) { +-- +2.49.0 + +From c1ac089f3f37ab172d8010b0fabf4007d62d1812 Mon Sep 17 00:00:00 2001 +From: Kai Uwe Broulik <kde@privat.broulik.de> +Date: Thu, 4 Jan 2024 20:30:33 +0100 +Subject: [PATCH 57/57] bradient: Use QWaylandWindow actual window title + +It may include a suffix containing the application name +and is also what's set on the XDG Toplevel, i.e. what +the rest of the environment (task switcher, etc) sees. + +This stores the title in QWaylandWindow and adds a +getter to retrieve it. + +Pick-to: 6.7 +Change-Id: I84f41c68b16b680cdbb5cf656c7078d1e41767d4 +Reviewed-by: David Edmundson <davidedmundson@kde.org> + +(cherry-picked from commit 34c1dca) +--- + src/client/qwaylandwindow.cpp | 35 ++++++++++++++--------- + src/client/qwaylandwindow_p.h | 2 ++ + src/plugins/decorations/bradient/main.cpp | 2 +- + 3 files changed, 24 insertions(+), 15 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 7a9bccc1..7c338d27 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -303,26 +303,33 @@ void QWaylandWindow::setParent(const QPlatformWindow *parent) + } + } + ++QString QWaylandWindow::windowTitle() const ++{ ++ return mWindowTitle; ++} ++ + void QWaylandWindow::setWindowTitle(const QString &title) + { +- if (mShellSurface) { +- const QString separator = QString::fromUtf8(" \xe2\x80\x94 "); // unicode character U+2014, EM DASH +- const QString formatted = formatWindowTitle(title, separator); ++ const QString separator = QString::fromUtf8(" \xe2\x80\x94 "); // unicode character U+2014, EM DASH ++ const QString formatted = formatWindowTitle(title, separator); + +- const int libwaylandMaxBufferSize = 4096; +- // Some parts of the buffer is used for metadata, so subtract 100 to be on the safe side. +- // Also, QString is in utf-16, which means that in the worst case each character will be +- // three bytes when converted to utf-8 (which is what libwayland uses), so divide by three. +- const int maxLength = libwaylandMaxBufferSize / 3 - 100; ++ const int libwaylandMaxBufferSize = 4096; ++ // Some parts of the buffer is used for metadata, so subtract 100 to be on the safe side. ++ // Also, QString is in utf-16, which means that in the worst case each character will be ++ // three bytes when converted to utf-8 (which is what libwayland uses), so divide by three. ++ const int maxLength = libwaylandMaxBufferSize / 3 - 100; + +- auto truncated = QStringRef(&formatted).left(maxLength); +- if (truncated.length() < formatted.length()) { +- qCWarning(lcQpaWayland) << "Window titles longer than" << maxLength << "characters are not supported." +- << "Truncating window title (from" << formatted.length() << "chars)"; +- } +- mShellSurface->setTitle(truncated.toString()); ++ auto truncated = QStringRef(&formatted).left(maxLength); ++ if (truncated.length() < formatted.length()) { ++ qCWarning(lcQpaWayland) << "Window titles longer than" << maxLength << "characters are not supported." ++ << "Truncating window title (from" << formatted.length() << "chars)"; + } + ++ mWindowTitle = truncated.toString(); ++ ++ if (mShellSurface) ++ mShellSurface->setTitle(mWindowTitle); ++ + if (mWindowDecoration && window()->isVisible()) + mWindowDecoration->update(); + } +diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h +index 741f9e5c..5e9f4ebf 100644 +--- a/src/client/qwaylandwindow_p.h ++++ b/src/client/qwaylandwindow_p.h +@@ -107,6 +107,7 @@ public: + void setVisible(bool visible) override; + void setParent(const QPlatformWindow *parent) override; + ++ QString windowTitle() const; + void setWindowTitle(const QString &title) override; + + inline QIcon windowIcon() const; +@@ -263,6 +264,7 @@ protected: + int mScale = 1; + QPlatformScreen *mLastReportedScreen = nullptr; + ++ QString mWindowTitle; + QIcon mWindowIcon; + + Qt::WindowFlags mFlags; +diff --git a/src/plugins/decorations/bradient/main.cpp b/src/plugins/decorations/bradient/main.cpp +index fa885143..fbdbe284 100644 +--- a/src/plugins/decorations/bradient/main.cpp ++++ b/src/plugins/decorations/bradient/main.cpp +@@ -171,7 +171,7 @@ void QWaylandBradientDecoration::paint(QPaintDevice *device) + } + + // Window title +- QString windowTitleText = window()->title(); ++ QString windowTitleText = waylandWindow()->windowTitle(); + if (!windowTitleText.isEmpty()) { + if (m_windowTitle.text() != windowTitleText) { + m_windowTitle.setText(windowTitleText); +-- +2.49.0 diff --git a/user/qt5-qtwebchannel/APKBUILD b/user/qt5-qtwebchannel/APKBUILD index e54ea70c3..0464e42ef 100644 --- a/user/qt5-qtwebchannel/APKBUILD +++ b/user/qt5-qtwebchannel/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtwebchannel _pkgname=qtwebchannel-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Connect Qt applications to WebSockets" url="https://www.qt.io/" @@ -26,5 +26,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="18d5e6f44b780c7dfc94e1620ba76d7b0731d671df537b2e29fef062a0775e8dc973deb6c949b37000f5e8a49bdd31a723aa069bafcb9ecdc3259d0bf97e5a26 qtwebchannel-everywhere-opensource-src-5.15.4.tar.xz -3a797ea504343c321e8ff29bb143a3305bbc1ec0bfecd484974acab7597b8b8f5bbcd6b9fb8c5bf47d25e8de4801d4d9a5c0a38b7e4f135174f2393c924af782 kde-lts.patch" +sha512sums="6d616f4143ee34eeab361eba86d2bcdd1a502b6290813ad0053163cd4ee1d1e7f2a0903b82d8632050bdab710d28c7b06d6a3bcf30ce1db398dcb78ebe014389 qtwebchannel-everywhere-opensource-src-5.15.17.tar.xz +1be8505f4ca56289ddfdc1c08047a577c2a06a88600dc119699513a99cd7316f37e4b595911db521aa0df413971462a361409b1a799a99fa83a59a73636da90d kde-lts.patch" diff --git a/user/qt5-qtwebchannel/kde-lts.patch b/user/qt5-qtwebchannel/kde-lts.patch index 352a4a906..8516af2a2 100644 --- a/user/qt5-qtwebchannel/kde-lts.patch +++ b/user/qt5-qtwebchannel/kde-lts.patch @@ -1,4 +1,4 @@ -From adfc4bacdf18d9876a1ea908ce6aeb43555b0dbd Mon Sep 17 00:00:00 2001 +From 886d16fc8e93b5d758a23ce78504e1abc2550a1e Mon Sep 17 00:00:00 2001 From: Milian Wolff <milian.wolff@kdab.com> Date: Fri, 13 Dec 2019 18:07:26 +0100 Subject: [PATCH 1/3] Handle signals in the registered object's thread @@ -127,7 +127,7 @@ index bbd9875..ded0d33 100644 // true when the client is idle, false otherwise bool clientIsIdle; diff --git a/src/webchannel/signalhandler_p.h b/src/webchannel/signalhandler_p.h -index 27afadb..d77373c 100644 +index 66b6147..1b08643 100644 --- a/src/webchannel/signalhandler_p.h +++ b/src/webchannel/signalhandler_p.h @@ -56,6 +56,7 @@ @@ -177,9 +177,9 @@ index 181da9e..7f846f5 100644 } -- -2.36.0 +2.49.0 -From 01803a64b0a0b03eb8d9add60008829bc9d5c11e Mon Sep 17 00:00:00 2001 +From 59b4bf9c1e94959a427782338f2115edd0c47b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98ystein=20Heskestad?= <oystein.heskestad@qt.io> Date: Fri, 7 May 2021 15:23:38 +0200 Subject: [PATCH 2/3] Handle per-transport client idle status @@ -512,9 +512,9 @@ index eae21f4..dd4e690 100644 void testDeletionDuringMethodInvocation(); -- -2.36.0 +2.49.0 -From 8c842152da613f941892481d62267c73c4a4f006 Mon Sep 17 00:00:00 2001 +From 85ba097de9759efe5563156e43de1ad8473d5d54 Mon Sep 17 00:00:00 2001 From: Arno Rehn <a.rehn@menlosystems.com> Date: Wed, 8 Dec 2021 22:44:49 +0100 Subject: [PATCH 3/3] QMetaObjectPublisher: Never send stale queued messages @@ -572,5 +572,5 @@ index 3897c07..898d769 100644 } -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtwebkit/APKBUILD b/user/qt5-qtwebkit/APKBUILD index 71f3238aa..7c90582bf 100644 --- a/user/qt5-qtwebkit/APKBUILD +++ b/user/qt5-qtwebkit/APKBUILD @@ -4,7 +4,7 @@ pkgname=qt5-qtwebkit _realname=qtwebkit pkgver=5.212.0_git20200924 _ts=1600955993 -pkgrel=4 +pkgrel=5 pkgdesc="Open source Web browser engine" url="https://github.com/qtwebkit/qtwebkit/wiki" arch="all" diff --git a/user/qt5-qtwebsockets/APKBUILD b/user/qt5-qtwebsockets/APKBUILD index f9fce48d9..201845791 100644 --- a/user/qt5-qtwebsockets/APKBUILD +++ b/user/qt5-qtwebsockets/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtwebsockets _pkgname=qtwebsockets-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Qt implementation of WebSockets" url="https://www.qt.io/" @@ -26,5 +26,5 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="01714b9927c3a234fac9386a596aa3dc3833d9cfe8cc152892fec969e51b428bed00f501c16b8e4f810452739ff8491e5c64f9b936aa10e1a839c09c8f2832ce qtwebsockets-everywhere-opensource-src-5.15.4.tar.xz -cbffbd9de347d4c58a38ddb3c50427a96ae08019de90a0035672fe49ce061015873fdb70f491c84ac09dc28871ced851782bae2195b26ce123a135b44a3f1a0b kde-lts.patch" +sha512sums="59afb4a8992b3fd1ca50f26a5ae13b0ffd79ac321475963cfdc7e64ef7a1a070b8eee1052d1cff26fa0c3bda1d8bbb2849e8e84b4c15f1b4ba936cb54a6f4014 qtwebsockets-everywhere-opensource-src-5.15.17.tar.xz +c32d811bb44a777be69f67657a2a38ffd5498e57826e3167b3a68dae7b5aa35980de306cd166b3531c3a76ee0ca296b269b791fe3479e2d197a8fbd6cdd157cd kde-lts.patch" diff --git a/user/qt5-qtwebsockets/kde-lts.patch b/user/qt5-qtwebsockets/kde-lts.patch index aeaabdb14..10c952151 100644 --- a/user/qt5-qtwebsockets/kde-lts.patch +++ b/user/qt5-qtwebsockets/kde-lts.patch @@ -1,7 +1,7 @@ -From c905caaecf33c1820eebae34e7b5ef1e71642af0 Mon Sep 17 00:00:00 2001 +From c91acbedf93a3526e8c58197b1ae8d6676a54078 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen <allan.jensen@qt.io> Date: Mon, 25 Jan 2021 15:34:22 +0100 -Subject: [PATCH 1/3] Clear frame on reconnect +Subject: [PATCH 1/2] Clear frame on reconnect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -22,10 +22,10 @@ Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> 1 file changed, 1 insertion(+) diff --git a/src/websockets/qwebsocketdataprocessor.cpp b/src/websockets/qwebsocketdataprocessor.cpp -index e2cc291..69c4fa8 100644 +index 2affdd5..95f1194 100644 --- a/src/websockets/qwebsocketdataprocessor.cpp +++ b/src/websockets/qwebsocketdataprocessor.cpp -@@ -269,6 +269,7 @@ void QWebSocketDataProcessor::clear() +@@ -273,6 +273,7 @@ void QWebSocketDataProcessor::clear() if (!m_pConverterState) m_pConverterState = new QTextCodec::ConverterState(QTextCodec::ConvertInvalidToNull | QTextCodec::IgnoreHeader); @@ -34,82 +34,40 @@ index e2cc291..69c4fa8 100644 /*! -- -2.36.0 +2.49.0 -From 6b318a2f39942b248574438925e23b46235009b2 Mon Sep 17 00:00:00 2001 -From: Jens Trillmann <jens.trillmann@governikus.de> -Date: Fri, 26 Feb 2021 13:06:49 +0100 -Subject: [PATCH 2/3] Pass ignoreSslErrors to unterlying QSslSocket +From db9cb84499229143506a9692fc65d3cb223b3978 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io> +Date: Tue, 13 Dec 2022 17:07:48 +0100 +Subject: [PATCH 2/2] Disconnect when handshake fails -When setting ignoreSslErrors(List<QSslError>) during the sslErrors -signal handling the call got ignored. Only the internal config for -creating a QSslSocket would be updated but not the current QSslSocket. -The request of the caller to ignore specific QSslErrors would be -ignored. +It is unexpected that websocket does not disconnect once +it knows the handshake has failed. -Pick-to: 5.12 5.15 6.2 -Change-Id: I6aaea2111fe1d26e07e6eaaa7532ae1b14a187a8 -Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> -(cherry picked from commit b13f23d232cfdd372ef812d427872d52eed2337e) +Pick-to: 6.5 6.4 6.2 5.15 +Change-Id: I11e64745ffdb01c11ac79739cf7f384ad6cc4590 +Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> +(cherry picked from commit 7efdec16d9f6116fc6c13bc3ae7c9b9e229e5a49) + +* asturmlechner 2023-01-06: Resolve conflict with dev branch commit + 55cef3a13c8377c55b2fe050751c8a05eb7f9fce --- - src/websockets/qwebsocket_p.cpp | 5 +++++ - 1 file changed, 5 insertions(+) + src/websockets/qwebsocket_p.cpp | 2 ++ + 1 file changed, 2 insertions(+) diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp -index aedc3c6..824184a 100644 +index cf3087f..0dd0fa6 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp -@@ -270,6 +270,11 @@ QSslConfiguration QWebSocketPrivate::sslConfiguration() const - void QWebSocketPrivate::ignoreSslErrors(const QList<QSslError> &errors) - { - m_configuration.m_ignoredSslErrors = errors; -+ if (Q_LIKELY(m_pSocket)) { -+ QSslSocket *pSslSocket = qobject_cast<QSslSocket *>(m_pSocket); -+ if (Q_LIKELY(pSslSocket)) -+ pSslSocket->ignoreSslErrors(errors); -+ } +@@ -1100,6 +1100,8 @@ void QWebSocketPrivate::processHandshake(QTcpSocket *pSocket) + m_handshakeState = AllDoneState; + setErrorString(errorDescription); + Q_EMIT q->error(QAbstractSocket::ConnectionRefusedError); ++ if (m_pSocket->state() != QAbstractSocket::UnconnectedState) ++ m_pSocket->disconnectFromHost(); + } } - /*! --- -2.36.0 - -From 6a4991250793cd38efa5e8db858cd49c82439130 Mon Sep 17 00:00:00 2001 -From: Marc Mutz <marc.mutz@qt.io> -Date: Fri, 17 Dec 2021 09:08:45 +0100 -Subject: [PATCH 3/3] QWebSocketProtocol: fix potential UB (signed overflow) in - masking operation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The size of the payload is a 64-bit integer, which the loop counts -down. If the size is > INT_MAX, then we'll overflow the int i used to -track the current position in the mask. - -Fix by using an unsigned integer type instead. - -Pick-to: 6.3 6.2 5.15 -Change-Id: Ia3b8d42ae906eb03c1c7399cb1137a08121fcde3 -Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> -(cherry picked from commit 38218494a65049b5f9da7a8aab012a969c7dac86) ---- - src/websockets/qwebsocketprotocol.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/websockets/qwebsocketprotocol.cpp b/src/websockets/qwebsocketprotocol.cpp -index df87a93..d0465f1 100644 ---- a/src/websockets/qwebsocketprotocol.cpp -+++ b/src/websockets/qwebsocketprotocol.cpp -@@ -210,7 +210,7 @@ void QWebSocketProtocol::mask(char *payload, quint64 size, quint32 maskingKey) - quint8((maskingKey & 0x0000FF00u) >> 8), - quint8((maskingKey & 0x000000FFu)) - }; -- int i = 0; -+ quint64 i = 0; - while (size-- > 0) - *payload++ ^= mask[i++ % 4]; - } -- -2.36.0 +2.49.0 diff --git a/user/qt5-qtx11extras/APKBUILD b/user/qt5-qtx11extras/APKBUILD index 269831a27..8d1c7e0d7 100644 --- a/user/qt5-qtx11extras/APKBUILD +++ b/user/qt5-qtx11extras/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtx11extras _pkgname=qtx11extras-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Qt 5 libraries for X11 support" url="https://www.qt.io/" @@ -24,4 +24,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="79c718eff9daba9ff3f361d38f828f8f3c447b87486d652d4ed1f964ec686259ae4d0a1a50b7b6b9349453ba3f8b56b3c20c8a5f26971d5cc3c8f99d668744d6 qtx11extras-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="f66ea15f8eddd75aa396f3b4aba2f9acdb69fe1330c45b973c9e445a089a923ba6290edc5d9608e72ddd0dde9a55f7205ee539abe7846222a9905566133a2700 qtx11extras-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/qt5-qtxmlpatterns/APKBUILD b/user/qt5-qtxmlpatterns/APKBUILD index 4d22dc051..33e191189 100644 --- a/user/qt5-qtxmlpatterns/APKBUILD +++ b/user/qt5-qtxmlpatterns/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=qt5-qtxmlpatterns _pkgname=qtxmlpatterns-everywhere -pkgver=5.15.4 +pkgver=5.15.17 pkgrel=0 pkgdesc="Qt support library for XPath, XQuery, XSLT, and XML schema validation" url="https://www.qt.io/" @@ -26,4 +26,4 @@ package() { make install INSTALL_ROOT="$pkgdir" } -sha512sums="fc4b4723407f6a1e765933d9d76ec4ffe874cb4a70e47bc4110def2c4a491b86fa753c33ef31ef95ad1a6eaa3de1fadbc49deb7783d32d8fc2f51672670d5a87 qtxmlpatterns-everywhere-opensource-src-5.15.4.tar.xz" +sha512sums="45c01b5b0d0345f0dffd0855eb05e8824462dbef729b8c26aa0561d1366395ae3586e03a8f1ce16965bfe57c510b7332c41d7706fc4d5a9683cde58ca77b86cb qtxmlpatterns-everywhere-opensource-src-5.15.17.tar.xz" diff --git a/user/r/APKBUILD b/user/r/APKBUILD index 25d44ef4d..22a127d84 100644 --- a/user/r/APKBUILD +++ b/user/r/APKBUILD @@ -1,8 +1,8 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=r -pkgver=4.2.3 -pkgrel=1 +pkgver=4.5.1 +pkgrel=0 pkgdesc="Environment for statistical computing and graphics" url="https://www.r-project.org/" arch="all" @@ -13,9 +13,7 @@ makedepends="byacc bzip2-dev cairo-dev curl-dev gfortran icu-dev libice-dev libtirpc-dev libx11-dev libxt-dev pango-dev pcre-dev pcre2-dev xz-dev zlib-dev" subpackages="$pkgname-dev $pkgname-doc" -source="https://cran.r-project.org/src/base/R-${pkgver%%.*}/R-$pkgver.tar.gz - curl-8-support.patch - " +source="https://cran.r-project.org/src/base/R-${pkgver%%.*}/R-$pkgver.tar.gz" builddir="$srcdir/R-$pkgver" build() { @@ -40,5 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="060bb4e1d1f1a5a0383a3b4372ac9247c0a20285020da17cebeb40ddc54da12d5f369ea243ea04d2c6970986fe22b3f9c37fbdfb3405cd8aa4f2353091ea9c5c R-4.2.3.tar.gz -051dcaae4f082e8e6138a748dcf880aa0d6f8ee371025f3b09068f21530be36271a69cf2f5973c2f0832c4c865b9425c62bbeb59a2243a8ddff05969a743ddf8 curl-8-support.patch" +sha512sums="b357bb6db93d1068d90505da02f14872d28f00d42e531a078c001370d14df4dd28202b5ae359d793b29c6396d89db42849711375a96048210895bfb42d0a62d1 R-4.5.1.tar.gz" diff --git a/user/r/curl-8-support.patch b/user/r/curl-8-support.patch deleted file mode 100644 index f70960691..000000000 --- a/user/r/curl-8-support.patch +++ /dev/null @@ -1,62 +0,0 @@ -This patch differs from upstream in the following ways: - - * it does not modify doc/manual/R-admin.texi - -From da6638896413bcbb5970b2335b92582853f94e3c Mon Sep 17 00:00:00 2001 -From: ripley <ripley@00db46b3-68df-0310-9c12-caf00c1e9a41> -Date: Sat, 25 Mar 2023 09:01:30 +0000 -Subject: [PATCH] allow libcurl 8 as its API/ABI is said to be unchanged - -git-svn-id: https://svn.r-project.org/R/trunk@84049 00db46b3-68df-0310-9c12-caf00c1e9a41 ---- - configure | 6 +++--- - doc/manual/R-admin.texi | 13 ++++++------- - m4/R.m4 | 4 ++-- - 3 files changed, 11 insertions(+), 12 deletions(-) - -diff --git a/configure b/configure -index c71e78d5017..f5e8e4992f7 100755 ---- a/configure -+++ b/configure -@@ -51680,8 +51680,8 @@ fi - done - - if test "x${have_libcurl}" = "xyes"; then --{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libcurl is version 7 and >= 7.28.0" >&5 --printf %s "checking if libcurl is version 7 and >= 7.28.0... " >&6; } -+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libcurl is >= 7.28.0" >&5 -+printf %s "checking if libcurl is >= 7.28.0... " >&6; } - if test ${r_cv_have_curl728+y} - then : - printf %s "(cached) " >&6 -@@ -51699,7 +51699,7 @@ int main(void) - { - #ifdef LIBCURL_VERSION_MAJOR - #if LIBCURL_VERSION_MAJOR > 7 -- exit(1); -+ exit(0); - #elif LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 28 - exit(0); - #else -diff --git a/m4/R.m4 b/m4/R.m4 -index 214dc1a8c7d..c4b9aa8f1c1 100644 ---- a/m4/R.m4 -+++ b/m4/R.m4 -@@ -4620,7 +4620,7 @@ LIBS="${CURL_LIBS} ${LIBS}" - AC_CHECK_HEADERS(curl/curl.h, [have_libcurl=yes], [have_libcurl=no]) - - if test "x${have_libcurl}" = "xyes"; then --AC_CACHE_CHECK([if libcurl is version 7 and >= 7.28.0], [r_cv_have_curl728], -+AC_CACHE_CHECK([if libcurl is >= 7.28.0], [r_cv_have_curl728], - [AC_RUN_IFELSE([AC_LANG_SOURCE([[ - #include <stdlib.h> - #include <curl/curl.h> -@@ -4628,7 +4628,7 @@ int main(void) - { - #ifdef LIBCURL_VERSION_MAJOR - #if LIBCURL_VERSION_MAJOR > 7 -- exit(1); -+ exit(0); - #elif LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 28 - exit(0); - #else diff --git a/user/rspamd/APKBUILD b/user/rspamd/APKBUILD index e4d36f982..1dcbd4baa 100644 --- a/user/rspamd/APKBUILD +++ b/user/rspamd/APKBUILD @@ -5,7 +5,7 @@ # Contributor: Duncan Bellamy <dunk@denkimushi.com> # Maintainer: Lee Starnes <lee@canned-death.us> pkgname=rspamd -pkgver=3.11.1 +pkgver=3.12.1 pkgrel=0 pkgdesc="Fast, free and open-source spam filtering system" url="https://rspamd.com/" @@ -136,7 +136,7 @@ utils() { mv "$pkgdir/usr/bin/${pkgname}"_stats "$subpkgdir/usr/bin/" } -sha512sums="979aad9d2cc720c12922d55f4ad742b65e18d0ca52ebb764a2432bd3d64e559461c8e1fa87f7ac52e614df71d0a776aa0362a876eaa745cd3f8c21afee52b8ab rspamd-3.11.1.tar.gz +sha512sums="5e049f6aa872f9ded9ee7f580222edb83260a3a8dc14b74a0f95b88796d36690ac5e9b33b143560253111f79cc8cd5231fd2478661d8cfe92d75874cc472cf6c rspamd-3.12.1.tar.gz 2efe28575c40d1fba84b189bb872860e744400db80dce2f6330be6c6287fb3f46e6511284729b957488bf40bcb9b0952e26df9934f5f138334bd2766075c45cb rspamd.logrotated c136126e3d3953079939b2b0b9b49f5f921af4c3aa0ad59a206632436ff963a69b5980a3b8e4eb14882d8db31d6fd96045a9e1cd6302ad111d76b8e92fab890e rspamd.initd a2003ef0c9d64a44480f59302864a2dfedcbe3a0047fcbb655408bc8aae9014b6ad0ddc6b64d4abeeb21bea0f86678afd30589ac8eed83e07ad7f87710e93702 rspamd.confd" diff --git a/user/sddm-kcm/APKBUILD b/user/sddm-kcm/APKBUILD index 576c81ef9..cf7359737 100644 --- a/user/sddm-kcm/APKBUILD +++ b/user/sddm-kcm/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=sddm-kcm -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE configuration applet for SDDM" url="https://www.kde.org/" @@ -24,7 +24,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="1fbc050e70dde74bcaa0a97ac982f017146ca65f180ea07e57190bd13ea653789fb369b83bc0b2583b73d37e4cd3db087eebe2cdaa3346b81c1d7d11730fad15 sddm-kcm-5.24.5.tar.xz" +sha512sums="b9fb61ddcec3c9fa277449bafa7a99f27906134b0a8a98088f9d73a48a155cd9bd32b5f13d4e310cb3d34cd96eec15086bf79f0465f52483b4df651a2b1b8641 sddm-kcm-5.27.12.tar.xz" diff --git a/user/solid/APKBUILD b/user/solid/APKBUILD index fc737cc74..bd7d98d94 100644 --- a/user/solid/APKBUILD +++ b/user/solid/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=solid -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Platform-independent hardware discovery and access" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="c72da5c52512c97a4ff164e34d06d572a7747f9f434ad574bc3bd106574bef617db48a1b00b2cca6b944f9ab5bf74563e36d25fa7618fd56782506d61ebfea37 solid-5.94.0.tar.xz" +sha512sums="1d6cb0c096bfede35a4b2963cd87e2ef0cb1a6be640d18c737434451e288645f7bbb0657c8ac780f3a60104c153b3b20ed7bd9c90b077d9aa7daea5740947b36 solid-5.116.0.tar.xz" diff --git a/user/sonnet/APKBUILD b/user/sonnet/APKBUILD index 5f6d6526d..2216c1a7e 100644 --- a/user/sonnet/APKBUILD +++ b/user/sonnet/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=sonnet -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for implementing portable spell check functionality" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -48,4 +48,4 @@ hunspell() { "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_hunspell.so } -sha512sums="4904361fa8b941181c1e18fc39fb614cd9b1177a4d49c6b16ae8c5941e6328f3b803d558d44500ce002a9da92597eecb1a295e956dada994934c4cfe89c62055 sonnet-5.94.0.tar.xz" +sha512sums="d40f721679f77d0eef706eddaa4369c63bb28a45852f0ad8f09518762ef249983dcdc1b4fac2b08fa37b2f4d53a6c301ec1abe2aab2af075ee52d442c248e88b sonnet-5.116.0.tar.xz" diff --git a/user/sword/APKBUILD b/user/sword/APKBUILD index 4cbe32615..a76f0809b 100644 --- a/user/sword/APKBUILD +++ b/user/sword/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=sword pkgver=1.9.0 -pkgrel=1 +pkgrel=2 pkgdesc="Cross-platform library for accessing and searching OSIS books" url="http://www.crosswire.org/sword/index.jsp" arch="all" diff --git a/user/syndication/APKBUILD b/user/syndication/APKBUILD index 1c2971228..633f25b40 100644 --- a/user/syndication/APKBUILD +++ b/user/syndication/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=syndication -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="RSS/Atom parser framework for Qt / KDE" url="https://www.kde.org/" @@ -21,7 +21,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -37,4 +37,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="8b33ca8eddd59d4461822b51a536fce53b86ec2e6b9a26d3c7e66b0317d13b2a6a271e2c011e5e9298d8d328abc961f58566caa5f1a2caf6f825b6eb5fdc1a7c syndication-5.94.0.tar.xz" +sha512sums="82ca9937286cc9ab525bb078b2c884c368be7d243462a636d50a005e8667666f5cfdc11b324be75269857bf9f143a7b3704fc6411600bbfb60acd30dd772181d syndication-5.116.0.tar.xz" diff --git a/user/syntax-highlighting/APKBUILD b/user/syntax-highlighting/APKBUILD index c7aae36eb..6f90e9587 100644 --- a/user/syntax-highlighting/APKBUILD +++ b/user/syntax-highlighting/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=syntax-highlighting -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="Framework for rendering programming code with formatting" url="https://www.kde.org/" @@ -23,7 +23,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -39,4 +39,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="34e3ec926ae576e0366216c67ee73ef62c538e38369d664ca104951cf08a52848fd7b4d75e29ef23650259b113af727bf71837b6b6ced0f63d4264c0c903acb2 syntax-highlighting-5.94.0.tar.xz" +sha512sums="e8d0f424ad0349ef1a97fa6cb6a785ef9f2d20ca116b92ad4455bb87a61f868197cbb40e014a4eb0778aee12f40cf892af12717ebbd3545adf76afc05657d5a5 syntax-highlighting-5.116.0.tar.xz" diff --git a/user/systemsettings/APKBUILD b/user/systemsettings/APKBUILD index 16d27031e..6f28dfae6 100644 --- a/user/systemsettings/APKBUILD +++ b/user/systemsettings/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox-kde@adelielinux.org> pkgname=systemsettings -pkgver=5.24.5 +pkgver=5.27.12 pkgrel=0 pkgdesc="KDE system settings configuration utility" url="https://www.kde.org/" @@ -25,7 +25,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ ${CMAKE_CROSSOPTS} . @@ -40,4 +40,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="7dd2aa3d2b0ad821569eaa6e17d064a2216d35a525baf82621a1fb31867a340372ec0349488cc6bf344156f9d9052b589be5d01ed82a1c18fcedaa64fb4986b1 systemsettings-5.24.5.tar.xz" +sha512sums="3d1a85825a0e49240c6ee987f30ad6969395e57b779d4883d1eaea0ecde3a92b30efa6f84df2298774128a6e09e6c1ea8109e12497de7deb4c83d0033a93be2e systemsettings-5.27.12.tar.xz" diff --git a/user/threadweaver/APKBUILD b/user/threadweaver/APKBUILD index 1a2471ef0..9fecfc82a 100644 --- a/user/threadweaver/APKBUILD +++ b/user/threadweaver/APKBUILD @@ -1,7 +1,7 @@ # Contributor: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=threadweaver -pkgver=5.94.0 +pkgver=5.116.0 pkgrel=0 pkgdesc="High-level threading framework" url="https://www.kde.org/" @@ -22,7 +22,7 @@ build() { -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=True \ - -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DBUILD_QCH:BOOL=ON \ @@ -38,4 +38,4 @@ package() { make DESTDIR="$pkgdir" install } -sha512sums="3ca7c63ec47a6c11182304bec96b9de6ca2e5a370de1e93350d00861a5d8d842e55e8e32390befa77d880e69ba763a0d576e17856bae650326dd9f1cb48a0fdc threadweaver-5.94.0.tar.xz" +sha512sums="ef365148a91a54d3252ba831c5a49fe7e369850e5d86c87173c5b621eeb1132af6eb76e33e858499c7a2135073497d05519ca9cdb906881419272387aedc16d3 threadweaver-5.116.0.tar.xz" diff --git a/user/thunderbird/APKBUILD b/user/thunderbird/APKBUILD index 21b415dc6..e28d04514 100644 --- a/user/thunderbird/APKBUILD +++ b/user/thunderbird/APKBUILD @@ -1,6 +1,6 @@ # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=thunderbird -pkgver=128.10.1 +pkgver=128.11.1 pkgrel=0 _llvmver=18 pkgdesc="Email client from Mozilla" @@ -32,6 +32,7 @@ source="https://archive.mozilla.org/pub/thunderbird/releases/$_tbver/source/thun fix-mutex-build.patch fix-seccomp-bpf.patch icu-75.patch + icu-77.patch jpeg-link.patch js-endian.patch mozilla-build-arm.patch @@ -154,12 +155,13 @@ package() { ${pkgdir}/usr/share/applications/thunderbird.desktop } -sha512sums="09b54450928c6e0d948cd79a56c28bdb5fe5a81d7c710470a1ec195dd295c433b872682102c74930f19b1184391c30115293dadcd7dc8a08ae8baeb12770ef9c thunderbird-128.10.1esr.source.tar.xz +sha512sums="8fd99f68895b543bdc5bba38d7720f0e48e2a82c9fe5e8ca15534e3918cc40b5b2911666dbbbda0a7911783a03a0d8f7371ea353fd67416baca1e1dffdd25c44 thunderbird-128.11.1esr.source.tar.xz fec4e343db973f90a38cc86e145c8ab0c8bec8f6eed36ff47f9986b154ea44f0e72ea1b5c9862e772505b3371dc0a9265fa1a6bed59007a5845a1dc622fce4e8 mozconfig 1fff71be77aa34791ef8aa972b5dc5f131d79f4b895ebbfb59bc223078764d6f79c82a3a4e4c717a3893ecbe4907d556f27e97d2692e41f02365f06da759a71a bad-google-code.patch 5e6c3fa027052cc43ba161cf5c12016b07723e7c0b002a42431bbd5d716d512d5245ab6befbb56c37c7d244441533f810f4e7b583f83bbe965981931f1435a94 fix-mutex-build.patch 9f2892eff9d09f3eed1f9a9ee98ba9c6a6826c30ccdeabfefb8733abc98e7b612418827262423568e830c6354a2b8242f471bc200b7079f21862bb00947da716 fix-seccomp-bpf.patch 0a84e8cb6604fdb7601745b60c04ee74733632ada32bfd85eb32db8fee095cfb79c82033e5e3cf3bbc7b7f4df753e86ffe18e26e63a6603a93c3bb5a459aabd3 icu-75.patch +2b22004984295c7df4ce6d8f2105ad3199020f61c5163c18328e928448e77d24a36aa7b38c42adfb68b257199a4e975e23b1b5d36c680bf8fe9e9502324d9a12 icu-77.patch a2400c8df888637d9ebe33d82dc2fb95792685c9938b5486230a5c15bc819cbb850a2bdcb54a775516652fc8ffd6b40f8c591ab7941211f9516064101380ebbf jpeg-link.patch d40e6c1a6e62d5e1dc350dc0bbaf2b8488b19ea0911532784f1df1199a7a5af0aae81b0b0d77c4398a2d903d86b5560f4442386eb446d9af8d58e73eea475e4f js-endian.patch 9f5730ee3a29b86786089abcfffab32bf2210f1a1ec43260ae824a08acda687dbfa37306b82a4978dd022bcf747eab155f7f3c5f73a1375f1c3c4fcd106dae3e mozilla-build-arm.patch diff --git a/user/thunderbird/icu-77.patch b/user/thunderbird/icu-77.patch new file mode 100644 index 000000000..5d239d542 --- /dev/null +++ b/user/thunderbird/icu-77.patch @@ -0,0 +1,40 @@ + +# HG changeset patch +# User Martin Weinelt <martin+mozilla@linuxlounge.net> +# Date 1747057716 0 +# Node ID 1c2e812125e0f1ada57bbe606bf46fb7be9e9059 +# Parent f2dc324ff88fea439d7c4c6a5ffd2ff327b5b377 +Bug 1927380 - Update icu pkgconfig module lookup r=anba + +After upgrading to icu76 the build started failing to look up symbols +from icu when using the --system-icu option. Updating the pkgconfig +lookups to also read the icu-uc pkgconfig fixes the build. + +Differential Revision: https://phabricator.services.mozilla.com/D248707 + + +diff --git a/js/moz.configure b/js/moz.configure +--- a/js/moz.configure ++++ b/js/moz.configure +@@ -1300,17 +1300,19 @@ system_lib_option( + ) + + + @depends("--with-system-icu", when=use_pkg_config) + def enable_system_icu_option(enable_system_icu): + return enable_system_icu + + +-system_icu = pkg_check_modules("MOZ_ICU", "icu-i18n >= 73.1", when="--with-system-icu") ++system_icu = pkg_check_modules( ++ "MOZ_ICU", "icu-uc icu-i18n >= 76.1", when="--with-system-icu" ++) + + + @depends(enable_system_icu_option) + def in_tree_icu(system_icu): + return not system_icu + + + # Set MOZ_ICU_CFLAGS to an explicit empty value when --with-system-icu is *not* used, + diff --git a/user/tinyfugue/APKBUILD b/user/tinyfugue/APKBUILD index e4c0a604a..60ef61b2a 100644 --- a/user/tinyfugue/APKBUILD +++ b/user/tinyfugue/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> pkgname=tinyfugue pkgver=5.1.6 -pkgrel=0 +pkgrel=1 pkgdesc="Powerful curses-based MUD client" url="https://github.com/ingwarsw/tinyfugue" arch="all" diff --git a/user/waypipe/0.9.2-fix-compile.patch b/user/waypipe/0.9.2-fix-compile.patch new file mode 100644 index 000000000..096e4851b --- /dev/null +++ b/user/waypipe/0.9.2-fix-compile.patch @@ -0,0 +1,11 @@ +diff '--color=auto' -Nurd waypipe-v0.9.2/src/secctx.c waypipe-v0.9.2.new/src/secctx.c +--- waypipe-v0.9.2/src/secctx.c 2024-11-18 14:29:20.000000000 -0800 ++++ waypipe-v0.9.2.new/src/secctx.c 2024-11-25 10:20:47.643421280 -0800 +@@ -2,6 +2,7 @@ + #include "util.h" + #include <sys/socket.h> + #include <sys/un.h> ++#include <string.h> + #include <unistd.h> + #include <wayland-client.h> + diff --git a/user/waypipe/APKBUILD b/user/waypipe/APKBUILD new file mode 100644 index 000000000..311c4e8c6 --- /dev/null +++ b/user/waypipe/APKBUILD @@ -0,0 +1,37 @@ +# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house> +# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house> +pkgname=waypipe +pkgver=0.9.2 +pkgrel=0 +pkgdesc="proxy for Wayland clients" +url="https://gitlab.freedesktop.org/mstoeckl/waypipe" +arch="all" +license="MIT" +depends="" +makedepends="ffmpeg-dev libdrm-dev libva-dev lz4-dev mesa-dev meson scdoc wayland-dev wayland-protocols" +subpackages="$pkgname-doc" +source="https://gitlab.freedesktop.org/mstoeckl/waypipe/-/archive/v$pkgver/$pkgname-v$pkgver.tar.bz2 + 0.9.2-fix-compile.patch" +builddir="$srcdir/$pkgname-v$pkgver" + +build() { + meson setup \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + . output + meson compile -C output +} + +check() { + meson test -C output +} + +package() { + DESTDIR="$pkgdir" meson install -C output +} + +sha512sums="0ffdb49cb5dbee717798721505e4661710fcd234a55bbfe2452888024d4a8b99a0e0e99cdce23ba0b92ee456aeb9f14324baba1c7c5724cb8cca7bb6e9c276bb waypipe-v0.9.2.tar.bz2 +30c818075c95b198d351cad94e48e3d7eb3dc18f9b38964c2090483131365bf37f7eeb12ba89f17822c8cab9dbb658e7e2efcc81f0433e79c9a2cdb8bbf92dc6 0.9.2-fix-compile.patch" diff --git a/user/xfsprogs/APKBUILD b/user/xfsprogs/APKBUILD index 8d717f51e..4233634b8 100644 --- a/user/xfsprogs/APKBUILD +++ b/user/xfsprogs/APKBUILD @@ -1,7 +1,7 @@ # Contributor: Valery Kartel <valery.kartel@gmail.com> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=xfsprogs -pkgver=6.9.0 +pkgver=6.15.0 pkgrel=0 pkgdesc="XFS filesystem utilities" url="https://xfs.org/index.php/Main_Page" @@ -26,7 +26,9 @@ build() { --prefix=/usr \ --sbindir=/sbin \ --libexecdir=/usr/lib \ - --enable-editline + --localstatedir=/var \ + --enable-editline \ + --with-udev-rule-dir=/lib/udev/rules.d make SHELL=/bin/bash } @@ -49,6 +51,6 @@ base() { mv "$subpkgdir"/sbin/xfs_scrub "$pkgdir"/sbin/ } -sha512sums="bfb3c98e7571180f1c5c130ca9aece5dde97bc6c628dc3d6560b0da75e5b43e8febe3eec193d3db2ec877b3a27258c53c033c7ed3d881efd2d4e3216033aaf2b xfsprogs-6.9.0.tar.gz +sha512sums="9568935dcac86a111b5b7905bd593db61520adb66bba44871bcef288419d445ab8375ef1c62eef5e816bb7fd4d128eed061106aac87e6544a797427589b8dd3d xfsprogs-6.15.0.tar.gz 29c77c550fa8f7a0b3794649d278a2cb3a65c9368db19415866910160adb6d5a52f1be4f8713b58c5c87f149b6212c068ae27a4547a6c4e4fe7b1584e1261dae no-utmp-header.patch -d83e2ae819a338273fae7999a0ae1376faa593308974f93abc6db140b134ec98f855a2ea5585583f739b041fbb5d4b8a0d4d27ecd73df6c34cd799b2cee55b9a scrub.patch" +ee3bafc60ff0535b7305552cb7cb5da27bd364ff6deea957a533926aa56d04a24c7e69048db2dbd76f59936e11b469fdee24e8994d370e89e2c8d04aa6dc8b1e scrub.patch" diff --git a/user/xfsprogs/scrub.patch b/user/xfsprogs/scrub.patch index a466aab34..6333869af 100644 --- a/user/xfsprogs/scrub.patch +++ b/user/xfsprogs/scrub.patch @@ -18,7 +18,7 @@ diff --git a/scrub/common.c b/scrub/common.c index 283ac84e..bd8bde35 100644 --- a/scrub/common.c +++ b/scrub/common.c -@@ -122,7 +122,8 @@ __str_out( +@@ -126,7 +126,8 @@ __str_out( fprintf(stream, "%s%s: %s: ", stream_start(stream), _(err_levels[level].string), descr); if (error) { @@ -28,22 +28,3 @@ index 283ac84e..bd8bde35 100644 } else { va_start(args, format); vfprintf(stream, format, args); -diff --git a/scrub/inodes.c b/scrub/inodes.c -index 16c79cf4..f0e7289c 100644 ---- a/scrub/inodes.c -+++ b/scrub/inodes.c -@@ -65,9 +65,9 @@ bulkstat_for_inumbers( - error = -xfrog_bulkstat(&ctx->mnt, breq); - if (error) { - char errbuf[DESCR_BUFSZ]; -+ strerror_r(error, errbuf, DESCR_BUFSZ); - -- str_info(ctx, descr_render(dsc), "%s", -- strerror_r(error, errbuf, DESCR_BUFSZ)); -+ str_info(ctx, descr_render(dsc), "%s", errbuf); - } - - /* --- -2.40.0 - |