From e4497063d8fc85624ecd7f34ec086ef5b833e0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sat, 7 Oct 2023 18:03:10 +0200 Subject: [PATCH] cmake-3.27.7 Fixes rhbz#2242491 --- 0001-Linting-Fix-empty-evaluated-genex.patch | 70 -------------- ...ndroid-Require-Clang-18-for-std-c-23.patch | 59 ------------ ...rify-RunCMake.CTestTimeout-case-name.patch | 43 --------- ...pport-for-timeout-values-higher-than.patch | 93 ------------------- ...P0124-behavior-on-already-set-variab.patch | 76 --------------- ...ostgreSQL-Add-support-for-version-16.patch | 39 -------- cmake.spec | 15 ++- sources | 2 +- 8 files changed, 7 insertions(+), 390 deletions(-) delete mode 100644 0001-Linting-Fix-empty-evaluated-genex.patch delete mode 100644 0002-Android-Require-Clang-18-for-std-c-23.patch delete mode 100644 0003-Tests-Clarify-RunCMake.CTestTimeout-case-name.patch delete mode 100644 0004-ctest-Restore-support-for-timeout-values-higher-than.patch delete mode 100644 0005-Help-Document-CMP0124-behavior-on-already-set-variab.patch delete mode 100644 0006-FindPostgreSQL-Add-support-for-version-16.patch diff --git a/0001-Linting-Fix-empty-evaluated-genex.patch b/0001-Linting-Fix-empty-evaluated-genex.patch deleted file mode 100644 index 4ec6256..0000000 --- a/0001-Linting-Fix-empty-evaluated-genex.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 80df7b174506eb5c7d9db3e65e2ffb59b9e8f16d Mon Sep 17 00:00:00 2001 -From: Orkun Tokdemir -Date: Mon, 25 Sep 2023 14:50:59 +0200 -Subject: [PATCH 1/6] Linting: Fix empty evaluated genex -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Update logic added by commit 099934e313 (Add generator expression -support to static code analysis hooks, 2023-03-24, v3.27.0-rc1~261^2), -and preserved by commit 993dde925f (TargetGenerator: Factor out -generation of code check rules, 2023-05-12, v3.27.0-rc1~84^2~2), to -handle a generator expression that evaluates to the empty string. - -If `_CPPCHECK`, `_CPPLINT`, `_CLANG_TIDY`, or -`_INCLUDE_WHAT_YOU_USE` are empty after evaluating generator -expressions, do not run their lints. - -Fixes: #25265 -Signed-off-by: Björn Esser ---- - Source/cmCommonTargetGenerator.cxx | 5 +---- - Tests/RunCMake/MultiLint/RunCMakeTest.cmake | 1 + - Tests/RunCMake/MultiLint/genex.cmake | 6 ++++++ - 3 files changed, 8 insertions(+), 4 deletions(-) - create mode 100644 Tests/RunCMake/MultiLint/genex.cmake - -diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx -index 1924235dda..c781137669 100644 ---- a/Source/cmCommonTargetGenerator.cxx -+++ b/Source/cmCommonTargetGenerator.cxx -@@ -335,10 +335,7 @@ std::string cmCommonTargetGenerator::GenerateCodeCheckRules( - auto evaluatedProp = cmGeneratorExpression::Evaluate( - *value, this->GeneratorTarget->GetLocalGenerator(), config, - this->GeneratorTarget, nullptr, this->GeneratorTarget, lang); -- if (!evaluatedProp.empty()) { -- return evaluatedProp; -- } -- return *value; -+ return evaluatedProp; - }; - std::string const tidy_prop = cmStrCat(lang, "_CLANG_TIDY"); - tidy = evaluateProp(tidy_prop); -diff --git a/Tests/RunCMake/MultiLint/RunCMakeTest.cmake b/Tests/RunCMake/MultiLint/RunCMakeTest.cmake -index 9b7a6a9971..f2df29019b 100644 ---- a/Tests/RunCMake/MultiLint/RunCMakeTest.cmake -+++ b/Tests/RunCMake/MultiLint/RunCMakeTest.cmake -@@ -24,6 +24,7 @@ run_multilint(CXX) - if(NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") - run_multilint(C-launch) - run_multilint(CXX-launch) -+ run_multilint(genex) - endif() - - function(run_skip_linting test_name) -diff --git a/Tests/RunCMake/MultiLint/genex.cmake b/Tests/RunCMake/MultiLint/genex.cmake -new file mode 100644 -index 0000000000..17f9248b00 ---- /dev/null -+++ b/Tests/RunCMake/MultiLint/genex.cmake -@@ -0,0 +1,6 @@ -+enable_language(CXX) -+set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "$,${PSEUDO_IWYU},>") -+set(CMAKE_CXX_CLANG_TIDY "$,${PSEUDO_TIDY} --error,>") -+set(CMAKE_CXX_CPPLINT "$,${PSEUDO_CPPLINT} --error,>") -+set(CMAKE_CXX_CPPCHECK "$,${PSEUDO_CPPCHECK} -bad,>") -+add_executable(main main.cxx) --- -2.41.0 - diff --git a/0002-Android-Require-Clang-18-for-std-c-23.patch b/0002-Android-Require-Clang-18-for-std-c-23.patch deleted file mode 100644 index 1f5bf0c..0000000 --- a/0002-Android-Require-Clang-18-for-std-c-23.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 75e9918a669666b16e7819b384c50858ea9d868b Mon Sep 17 00:00:00 2001 -From: Brad King -Date: Wed, 27 Sep 2023 12:15:27 -0400 -Subject: [PATCH 2/6] Android: Require Clang 18 for -std=c++23 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Update the Clang version checks added by - -* commit eacacc70fc (Clang: use -std=c++23 for Clang 17.0+, - 2023-05-08, v3.27.0-rc1~115^2) -* commit 0183956d30 (Clang: C++26 support, - 2023-05-16, v3.27.0-rc1~85^2) - -to account for Android NDK r26's distribution of a Clang based on a -development version of LLVM/Clang 17.0 that pre-dated addition of -these flags. - -Follow the pattern from commit 12e6796b62 (Android: Do not pass -non-existent Clang -std flags, 2018-04-02, v3.12.0-rc1~284^2), -which fixed the same problem for `-std=c++17`. - -Fixes: #25281 -Signed-off-by: Björn Esser ---- - Modules/Compiler/Clang.cmake | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/Modules/Compiler/Clang.cmake b/Modules/Compiler/Clang.cmake -index 46f5fc1941..e5683c2c03 100644 ---- a/Modules/Compiler/Clang.cmake -+++ b/Modules/Compiler/Clang.cmake -@@ -173,7 +173,12 @@ macro(__compiler_clang_cxx_standards lang) - - unset(_clang_version_std17) - -- if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 17.0) -+ set(_clang_version_std23 17.0) -+ if(CMAKE_SYSTEM_NAME STREQUAL "Android") -+ set(_clang_version_std23 18.0) -+ endif() -+ -+ if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std23}") - set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std=c++23") - set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++23") - set(CMAKE_${lang}26_STANDARD_COMPILE_OPTION "-std=c++26") -@@ -183,6 +188,8 @@ macro(__compiler_clang_cxx_standards lang) - set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++2b") - endif() - -+ unset(_clang_version_std23) -+ - if("x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC") - # The MSVC standard library requires C++14, and MSVC itself has no - # notion of operating in a mode not aware of at least that standard. --- -2.41.0 - diff --git a/0003-Tests-Clarify-RunCMake.CTestTimeout-case-name.patch b/0003-Tests-Clarify-RunCMake.CTestTimeout-case-name.patch deleted file mode 100644 index 90eadb5..0000000 --- a/0003-Tests-Clarify-RunCMake.CTestTimeout-case-name.patch +++ /dev/null @@ -1,43 +0,0 @@ -From dd779a4bc2f1b845a03b00885cd33ed2cc8adac3 Mon Sep 17 00:00:00 2001 -From: Brad King -Date: Fri, 29 Sep 2023 08:54:51 -0400 -Subject: [PATCH 3/6] Tests: Clarify RunCMake.CTestTimeout case name -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Björn Esser ---- - ...erridesScript-stdout.txt => PropertyOverridesVar-stdout.txt} | 2 +- - Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - rename Tests/RunCMake/CTestTimeout/{PropertyOverridesScript-stdout.txt => PropertyOverridesVar-stdout.txt} (72%) - -diff --git a/Tests/RunCMake/CTestTimeout/PropertyOverridesScript-stdout.txt b/Tests/RunCMake/CTestTimeout/PropertyOverridesVar-stdout.txt -similarity index 72% -rename from Tests/RunCMake/CTestTimeout/PropertyOverridesScript-stdout.txt -rename to Tests/RunCMake/CTestTimeout/PropertyOverridesVar-stdout.txt -index 6e46485759..aeeb3c9c39 100644 ---- a/Tests/RunCMake/CTestTimeout/PropertyOverridesScript-stdout.txt -+++ b/Tests/RunCMake/CTestTimeout/PropertyOverridesVar-stdout.txt -@@ -1,5 +1,5 @@ - Test project [^ --]*/Tests/RunCMake/CTestTimeout/PropertyOverridesScript-build -+]*/Tests/RunCMake/CTestTimeout/PropertyOverridesVar-build - Start 1: TestTimeout - 1/1 Test #1: TestTimeout ...................... Passed +[1-9][0-9.]* sec - + -diff --git a/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake b/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake -index 2f9eda121d..e9ecc5f20d 100644 ---- a/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake -+++ b/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake -@@ -92,5 +92,5 @@ block() - set(TIMEOUT 4) - set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)") - set(CASE_CMAKELISTS_SUFFIX_CODE "set_property(TEST TestTimeout PROPERTY TIMEOUT 10)\n") -- run_ctest_timeout(PropertyOverridesScript) -+ run_ctest_timeout(PropertyOverridesVar) - endblock() --- -2.41.0 - diff --git a/0004-ctest-Restore-support-for-timeout-values-higher-than.patch b/0004-ctest-Restore-support-for-timeout-values-higher-than.patch deleted file mode 100644 index 5b7abfe..0000000 --- a/0004-ctest-Restore-support-for-timeout-values-higher-than.patch +++ /dev/null @@ -1,93 +0,0 @@ -From d267c128a232e9beb99576f901ee1b9291ba1480 Mon Sep 17 00:00:00 2001 -From: Brad King -Date: Fri, 29 Sep 2023 09:00:30 -0400 -Subject: [PATCH 4/6] ctest: Restore support for --timeout values higher than - default test timeout -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Since refactoring in commit 0a5aeaf302 (cmCTestRunTest: Consolidate test -timeout selection logic, 2023-05-04, v3.27.0-rc1~120^2) we accidentally -truncate `--timeout` values to ctest's default `TimeOut`. Fix the -logic to prefer the flag whenever the `TIMEOUT` property is not set. - -In combination with the prior refactoring, this also fixes a bug that -caused `--timeout` values of 10000000 seconds or more to be ignored. - -Fixes: #23979 -Signed-off-by: Björn Esser ---- - Help/manual/ctest.1.rst | 3 ++- - Source/CTest/cmCTestRunTest.cxx | 11 ++++++----- - .../RunCMake/CTestTimeout/FlagOverridesVar-stdout.txt | 6 ++++++ - Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake | 7 +++++++ - 4 files changed, 21 insertions(+), 6 deletions(-) - create mode 100644 Tests/RunCMake/CTestTimeout/FlagOverridesVar-stdout.txt - -diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst -index 994ae47b77..5c3889e3be 100644 ---- a/Help/manual/ctest.1.rst -+++ b/Help/manual/ctest.1.rst -@@ -1230,7 +1230,8 @@ Configuration settings include: - - ``TimeOut`` - The default timeout for each test if not specified by the -- :prop_test:`TIMEOUT` test property. -+ :prop_test:`TIMEOUT` test property or the -+ :option:`--timeout ` flag. - - * `CTest Script`_ variable: :variable:`CTEST_TEST_TIMEOUT` - * :module:`CTest` module variable: ``DART_TESTING_TIMEOUT`` -diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx -index 563439acda..19e505fcfe 100644 ---- a/Source/CTest/cmCTestRunTest.cxx -+++ b/Source/CTest/cmCTestRunTest.cxx -@@ -768,11 +768,12 @@ bool cmCTestRunTest::ForkProcess() - timeout = this->CTest->GetGlobalTimeout(); - } - -- // Check CTEST_TEST_TIMEOUT. -- cmDuration ctestTestTimeout = this->CTest->GetTimeOut(); -- if (ctestTestTimeout > cmDuration::zero() && -- (!timeout || ctestTestTimeout < *timeout)) { -- timeout = ctestTestTimeout; -+ if (!timeout) { -+ // Check CTEST_TEST_TIMEOUT. -+ cmDuration ctestTestTimeout = this->CTest->GetTimeOut(); -+ if (ctestTestTimeout > cmDuration::zero()) { -+ timeout = ctestTestTimeout; -+ } - } - } - -diff --git a/Tests/RunCMake/CTestTimeout/FlagOverridesVar-stdout.txt b/Tests/RunCMake/CTestTimeout/FlagOverridesVar-stdout.txt -new file mode 100644 -index 0000000000..f580871638 ---- /dev/null -+++ b/Tests/RunCMake/CTestTimeout/FlagOverridesVar-stdout.txt -@@ -0,0 +1,6 @@ -+Test project [^ -+]*/Tests/RunCMake/CTestTimeout/FlagOverridesVar-build -+ Start 1: TestTimeout -+1/1 Test #1: TestTimeout ...................... Passed +[1-9][0-9.]* sec -++ -+100% tests passed, 0 tests failed out of 1 -diff --git a/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake b/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake -index e9ecc5f20d..470bbd890d 100644 ---- a/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake -+++ b/Tests/RunCMake/CTestTimeout/RunCMakeTest.cmake -@@ -94,3 +94,10 @@ block() - set(CASE_CMAKELISTS_SUFFIX_CODE "set_property(TEST TestTimeout PROPERTY TIMEOUT 10)\n") - run_ctest_timeout(PropertyOverridesVar) - endblock() -+ -+block() -+ set(TIMEOUT 4) -+ set(CASE_TEST_PREFIX_CODE "set(CTEST_TEST_TIMEOUT 2)") -+ set(CASE_CMAKELISTS_SUFFIX_CODE "set_property(TEST TestTimeout PROPERTY TIMEOUT)\n") -+ run_ctest_timeout(FlagOverridesVar --timeout 10000001) -+endblock() --- -2.41.0 - diff --git a/0005-Help-Document-CMP0124-behavior-on-already-set-variab.patch b/0005-Help-Document-CMP0124-behavior-on-already-set-variab.patch deleted file mode 100644 index 5ecc99f..0000000 --- a/0005-Help-Document-CMP0124-behavior-on-already-set-variab.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 55bf2a34948a01329f075d2da692c0eba49d45f4 Mon Sep 17 00:00:00 2001 -From: Brad King -Date: Fri, 29 Sep 2023 10:10:39 -0400 -Subject: [PATCH 5/6] Help: Document CMP0124 behavior on already-set variables -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Improve the documentation from commit 46896d98bb (foreach(): loop -variables are only available in the loop scope, 2021-04-25, -v3.21.0-rc1~245^2) to follow policy documentation convention. - -Fixes: #25224 -Inspired-by: Marius Messerschmidt -Signed-off-by: Björn Esser ---- - Help/policy/CMP0124.rst | 42 ++++++++++++++++++++++++++++++++++++----- - 1 file changed, 37 insertions(+), 5 deletions(-) - -diff --git a/Help/policy/CMP0124.rst b/Help/policy/CMP0124.rst -index 3935166ad5..d5cde64d42 100644 ---- a/Help/policy/CMP0124.rst -+++ b/Help/policy/CMP0124.rst -@@ -3,12 +3,44 @@ CMP0124 - - .. versionadded:: 3.21 - --When this policy is set to ``NEW``, the scope of loop variables defined by the --:command:`foreach` command is restricted to the loop only. They will be unset --at the end of the loop. -+:command:`foreach` loop variables are only available in the loop scope. - --The ``OLD`` behavior for this policy still clears the loop variables at the end --of the loop, but does not unset them. This leaves them as defined, but empty. -+CMake 3.20 and below always leave the loop variable set at the end of the -+loop, either to the value it had before the loop, if any, or to the empty -+string. CMake 3.21 and above prefer to leave the loop variable in the -+state it had before the loop started, either set or unset. This policy -+provides compatibility for projects that expect the loop variable to always -+be left set. -+ -+The ``OLD`` behavior for this policy is to set the loop variable at the -+end of the loop, either to its original value, or to an empty value. -+The ``NEW`` behavior for this policy is to restore the loop variable to -+the state it had before the loop started, either set or unset. -+ -+For example: -+ -+.. code-block:: cmake -+ -+ set(items a b c) -+ -+ set(var1 "value") -+ unset(var2) -+ -+ foreach(var1 IN LISTS items) -+ endforeach() -+ -+ foreach(var2 IN LISTS items) -+ endforeach() -+ -+ if(DEFINED var1) -+ message("var1: ${var1}") -+ endif() -+ if(DEFINED var2) -+ message("var2: ${var2}") -+ endif() -+ -+Under the ``OLD`` behavior, this code prints ``var1: value`` and ``var2:``. -+Under the ``NEW`` behavior, this code prints only ``var1: value``. - - This policy was introduced in CMake version 3.21. Use the - :command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly. --- -2.41.0 - diff --git a/0006-FindPostgreSQL-Add-support-for-version-16.patch b/0006-FindPostgreSQL-Add-support-for-version-16.patch deleted file mode 100644 index 6633565..0000000 --- a/0006-FindPostgreSQL-Add-support-for-version-16.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 25644a78de165af0cb6373e3ca103a93971041eb Mon Sep 17 00:00:00 2001 -From: Brad King -Date: Mon, 2 Oct 2023 14:43:30 -0400 -Subject: [PATCH 6/6] FindPostgreSQL: Add support for version 16 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Fixes: #25292 -Signed-off-by: Björn Esser ---- - Modules/FindPostgreSQL.cmake | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Modules/FindPostgreSQL.cmake b/Modules/FindPostgreSQL.cmake -index 6e970e8432..84bc1ed2bf 100644 ---- a/Modules/FindPostgreSQL.cmake -+++ b/Modules/FindPostgreSQL.cmake -@@ -53,7 +53,7 @@ is set regardless of the presence of the ``Server`` component in find_package ca - # In Windows the default installation of PostgreSQL uses that as part of the path. - # E.g C:\Program Files\PostgreSQL\8.4. - # Currently, the following version numbers are known to this module: --# "15" "14" "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0" -+# "16" "15" "14" "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0" - # - # To use this variable just do something like this: - # set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4") -@@ -102,7 +102,7 @@ set(PostgreSQL_ROOT_DIR_MESSAGE "Set the PostgreSQL_ROOT system variable to wher - - - set(PostgreSQL_KNOWN_VERSIONS ${PostgreSQL_ADDITIONAL_VERSIONS} -- "15" "14" "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0") -+ "16" "15" "14" "13" "12" "11" "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0") - - # Define additional search paths for root directories. - set( PostgreSQL_ROOT_DIRECTORIES --- -2.41.0 - diff --git a/cmake.spec b/cmake.spec index 2f709bf..d29fb00 100644 --- a/cmake.spec +++ b/cmake.spec @@ -69,10 +69,10 @@ %global major_version 3 %global minor_version 27 -%global patch_version 6 +%global patch_version 7 # For handling bump release by rpmdev-bumpspec and mass rebuild -%global baserelease 2 +%global baserelease 1 # Set to RC version if building RC, else comment out. #global rcsuf rc1 @@ -123,13 +123,6 @@ Patch100: %{name}-findruby.patch Patch1: %{name}-rename.patch %endif -Patch10001: 0001-Linting-Fix-empty-evaluated-genex.patch -Patch10002: 0002-Android-Require-Clang-18-for-std-c-23.patch -Patch10003: 0003-Tests-Clarify-RunCMake.CTestTimeout-case-name.patch -Patch10004: 0004-ctest-Restore-support-for-timeout-values-higher-than.patch -Patch10005: 0005-Help-Document-CMP0124-behavior-on-already-set-variab.patch -Patch10006: 0006-FindPostgreSQL-Add-support-for-version-16.patch - BuildRequires: coreutils BuildRequires: findutils BuildRequires: gcc-c++ @@ -556,6 +549,10 @@ popd %changelog +* Sat Oct 07 2023 Björn Esser - 3.27.7-1 +- cmake-3.27.7 + Fixes rhbz#2242491 + * Tue Oct 03 2023 Björn Esser - 3.27.6-2 - Include new upstream patches diff --git a/sources b/sources index ee8c9ce..33c9587 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cmake-3.27.6.tar.gz) = 268b5bd84800c37ce0e311cadf13c275a538d612844cc8687107549fe6341a6c3115560e3b9162836843016213d225f62db130bc251bf8aff50c69b9bd58e638 +SHA512 (cmake-3.27.7.tar.gz) = 2e9b83dee8f8c012be4219ab74ebaa8b8438ea55d5204237a1c9feba94c732afe7baceddb9c681672903112b1e40f7b1a86b284cfceed15f46ce8f90143dbb86