diff --git a/.gitignore b/.gitignore index 9ace0dc..c7fe514 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,4 @@ /Ahem.ttf /chromium-69.0.3497.92-clean.tar.xz /chromium-69.0.3497.100-clean.tar.xz +/chromium-70.0.3538.77-clean.tar.xz diff --git a/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch b/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch new file mode 100644 index 0000000..0c60643 --- /dev/null +++ b/chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch @@ -0,0 +1,13 @@ +diff -up chromium-70.0.3538.67/base/test/BUILD.gn.nofc chromium-70.0.3538.67/base/test/BUILD.gn +--- chromium-70.0.3538.67/base/test/BUILD.gn.nofc 2018-10-29 11:29:01.356812567 -0400 ++++ chromium-70.0.3538.67/base/test/BUILD.gn 2018-10-29 11:29:12.631584916 -0400 +@@ -209,9 +209,6 @@ static_library("test_support") { + data_deps = [ + "//third_party/test_fonts", + ] +- if (current_toolchain == host_toolchain) { +- data_deps += [ ":do_generate_fontconfig_caches" ] +- } + } + + if (is_ios) { diff --git a/chromium-70.0.3538.67-sandbox-pie.patch b/chromium-70.0.3538.67-sandbox-pie.patch new file mode 100644 index 0000000..0f104e9 --- /dev/null +++ b/chromium-70.0.3538.67-sandbox-pie.patch @@ -0,0 +1,20 @@ +diff -up chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie chromium-70.0.3538.67/sandbox/linux/BUILD.gn +--- chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie 2018-10-18 12:14:05.766939769 -0400 ++++ chromium-70.0.3538.67/sandbox/linux/BUILD.gn 2018-10-18 12:16:37.820027182 -0400 +@@ -315,10 +315,16 @@ if (is_linux) { + # For ULLONG_MAX + "-std=gnu99", + ++ "-fPIE", ++ + # These files have a suspicious comparison. + # TODO fix this and re-enable this warning. + "-Wno-sign-compare", + ] ++ ++ ldflags = [ ++ "-pie", ++ ] + } + } + diff --git a/chromium-gcc8-r588316.patch b/chromium-gcc8-r588316.patch new file mode 100644 index 0000000..d980805 --- /dev/null +++ b/chromium-gcc8-r588316.patch @@ -0,0 +1,98 @@ +From 87902b3202f81d689dd314c17006ffc907fe12a1 Mon Sep 17 00:00:00 2001 +From: Wang Qing +Date: Mon, 3 Sep 2018 02:41:08 +0000 +Subject: [PATCH] Fix build error for blink. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This CLs fixed the error of constexpr function call to non-constexpr function. + +Bug: 878202 +Change-Id: I6ad217a687e62a9a384980d852743a56479de3a9 +Reviewed-on: https://chromium-review.googlesource.com/1192467 +Commit-Queue: 汪 清 +Reviewed-by: Eric Willigers +Cr-Commit-Position: refs/heads/master@{#588316} +--- + .../core/animation/animation_time_delta.cc | 22 ++++++++++++++ + .../core/animation/animation_time_delta.h | 30 +++++++------------ + 2 files changed, 32 insertions(+), 20 deletions(-) + +diff --git a/third_party/blink/renderer/core/animation/animation_time_delta.cc b/third_party/blink/renderer/core/animation/animation_time_delta.cc +index 1b25469c7f2f..2e30a18890da 100644 +--- a/third_party/blink/renderer/core/animation/animation_time_delta.cc ++++ b/third_party/blink/renderer/core/animation/animation_time_delta.cc +@@ -7,6 +7,28 @@ + namespace blink { + + #if !defined(BLINK_ANIMATION_USE_TIME_DELTA) ++// Comparison operators on AnimationTimeDelta. ++bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() == rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() != rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() > rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() >= rhs.InSecondsF(); ++} ++bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs) { ++ return lhs.InSecondsF() <= rhs.InSecondsF(); ++} ++ + std::ostream& operator<<(std::ostream& os, AnimationTimeDelta time) { + return os << time.InSecondsF() << " s"; + } +diff --git a/third_party/blink/renderer/core/animation/animation_time_delta.h b/third_party/blink/renderer/core/animation/animation_time_delta.h +index 1903c1150d3e..95d218466d90 100644 +--- a/third_party/blink/renderer/core/animation/animation_time_delta.h ++++ b/third_party/blink/renderer/core/animation/animation_time_delta.h +@@ -90,26 +90,16 @@ AnimationTimeDelta operator*(T a, AnimationTimeDelta td) { + } + + // Comparison operators on AnimationTimeDelta. +-constexpr bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() == rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() != rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() > rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() >= rhs.InSecondsF(); +-} +-constexpr bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs, +- const AnimationTimeDelta& rhs) { +- return lhs.InSecondsF() <= rhs.InSecondsF(); +-} ++bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); ++bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs, ++ const AnimationTimeDelta& rhs); + + // Defined to allow DCHECK_EQ/etc to work with the class. + CORE_EXPORT std::ostream& operator<<(std::ostream& os, AnimationTimeDelta time); +-- +2.17.2 + diff --git a/chromium-gcc8-r588547.patch b/chromium-gcc8-r588547.patch new file mode 100644 index 0000000..5f12f7f --- /dev/null +++ b/chromium-gcc8-r588547.patch @@ -0,0 +1,30 @@ +From e3ad3deb6a6e79284f3748fa7410311d87df91c5 Mon Sep 17 00:00:00 2001 +From: Henrique Nakashima +Date: Tue, 4 Sep 2018 16:49:51 +0000 +Subject: [PATCH] IWYU: stdint.h in pdfium_mem_buffer_file_write.h for uint8_t + +Bug: 879900 +Change-Id: I9c15d1c280a23c53d31f2d72c9d0d1db79eab886 +Reviewed-on: https://chromium-review.googlesource.com/1204410 +Reviewed-by: Lei Zhang +Commit-Queue: Henrique Nakashima +Cr-Commit-Position: refs/heads/master@{#588547} +--- + pdf/pdfium/pdfium_mem_buffer_file_write.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/pdf/pdfium/pdfium_mem_buffer_file_write.h b/pdf/pdfium/pdfium_mem_buffer_file_write.h +index 03c54bb63800..82e82d23684d 100644 +--- a/pdf/pdfium/pdfium_mem_buffer_file_write.h ++++ b/pdf/pdfium/pdfium_mem_buffer_file_write.h +@@ -6,6 +6,7 @@ + #define PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_H_ + + #include ++#include + + #include + +-- +2.17.2 + diff --git a/chromium-gcc8-r589614.patch b/chromium-gcc8-r589614.patch new file mode 100644 index 0000000..0c187fd --- /dev/null +++ b/chromium-gcc8-r589614.patch @@ -0,0 +1,37 @@ +From cbdb8bd6567c8143dc8c1e5e86a21a8ea064eea4 Mon Sep 17 00:00:00 2001 +From: Maksim Sisov +Date: Fri, 7 Sep 2018 18:57:42 +0000 +Subject: [PATCH] OmniboxTextView: fix gcc error for structure initialization + +It looks like there is bug in GCC 6, which cannot go through +structure initialization normally. + +Thus, instead of a default initialization of one of the members, +explicitly initialize it to a default value. + +Change-Id: Ia55cc6658e6b6b2f8a80c2582dd28f001c9e648c +Reviewed-on: https://chromium-review.googlesource.com/1213181 +Reviewed-by: Scott Violet +Commit-Queue: Maksim Sisov +Cr-Commit-Position: refs/heads/master@{#589614} +--- + chrome/browser/ui/views/omnibox/omnibox_text_view.cc | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc +index f0a8083dc930..9021284f166d 100644 +--- a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc ++++ b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc +@@ -175,7 +175,8 @@ void ApplyTextStyleForType(SuggestionAnswer::TextStyle text_style, + style = {part_color, .baseline = gfx::SUPERIOR}; + break; + case SuggestionAnswer::TextStyle::BOLD: +- style = {part_color, .weight = gfx::Font::Weight::BOLD}; ++ style = {part_color, .baseline = gfx::NORMAL_BASELINE, ++ .weight = gfx::Font::Weight::BOLD}; + break; + case SuggestionAnswer::TextStyle::NORMAL: + case SuggestionAnswer::TextStyle::NORMAL_DIM: +-- +2.17.2 + diff --git a/chromium-gcc8-r591015.patch b/chromium-gcc8-r591015.patch new file mode 100644 index 0000000..65c09e8 --- /dev/null +++ b/chromium-gcc8-r591015.patch @@ -0,0 +1,70 @@ +From e98f8ef8b2f236ecbb01df8c39e6ee1c8fbe8d7d Mon Sep 17 00:00:00 2001 +From: Maksim Sisov +Date: Thu, 13 Sep 2018 15:17:29 +0000 +Subject: [PATCH] ScrollPaintPropertyNode: Rename SnapContainerData() to + GetSnapContainerData() + +GCC is stricter than clang when it comes to class members' names and how +they can change the meaning of a previously existing symbol with the same +name. + +Here is a short error message: + +error: changes meaning of 'SnapContainerData' from 'using SnapContainerData = +class cc::SnapContainerData' [-fpermissive] using SnapContainerData = +cc::SnapContainerData; + +Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel +Change-Id: I0de5460f17b13484253e1ff0538b111c9a3b0d13 +Reviewed-on: https://chromium-review.googlesource.com/1213180 +Commit-Queue: Maksim Sisov +Reviewed-by: Philip Rogers +Cr-Commit-Position: refs/heads/master@{#591015} +--- + .../blink/renderer/core/paint/paint_property_tree_update_tests.cc | 2 +- + .../renderer/platform/graphics/compositing/property_tree_manager.cc | 2 +- + .../blink/renderer/platform/graphics/paint/scroll_paint_property_node.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc +index 0d999d45076f..1fe1815a5659 100644 +--- a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc ++++ b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc +@@ -1310,7 +1310,7 @@ TEST_P(PaintPropertyTreeUpdateTest, EnsureSnapContainerData) { + GetDocument().View()->Resize(300, 300); + GetDocument().View()->UpdateAllLifecyclePhases(); + +- auto doc_snap_container_data = DocScroll()->SnapContainerData(); ++ auto doc_snap_container_data = DocScroll()->GetSnapContainerData(); + ASSERT_TRUE(doc_snap_container_data); + EXPECT_EQ(doc_snap_container_data->scroll_snap_type().axis, SnapAxis::kBoth); + EXPECT_EQ(doc_snap_container_data->scroll_snap_type().strictness, +diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc +index 745b8c8b387e..5f87eeea9435 100644 +--- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc ++++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc +@@ -333,7 +333,7 @@ void PropertyTreeManager::CreateCompositorScrollNode( + scroll_node->OverscrollBehaviorX()), + static_cast( + scroll_node->OverscrollBehaviorY())); +- compositor_node.snap_container_data = scroll_node->SnapContainerData(); ++ compositor_node.snap_container_data = scroll_node->GetSnapContainerData(); + + auto compositor_element_id = scroll_node->GetCompositorElementId(); + if (compositor_element_id) { +diff --git a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h +index e1479269ccc3..5bd7f65f10ba 100644 +--- a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h ++++ b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h +@@ -99,7 +99,7 @@ class PLATFORM_EXPORT ScrollPaintPropertyNode + return state_.overscroll_behavior.y; + } + +- base::Optional SnapContainerData() const { ++ base::Optional GetSnapContainerData() const { + return state_.snap_container_data; + } + +-- +2.14.3 + diff --git a/chromium.spec b/chromium.spec index d9ecfc0..06d4203 100644 --- a/chromium.spec +++ b/chromium.spec @@ -13,6 +13,7 @@ # Leave this alone, please. %global target out/Release %global headlesstarget out/Headless +%global remotingtarget out/Remoting # Debuginfo packages aren't very useful here. If you need to debug # you should do a proper debug build (not implemented in this spec yet) @@ -36,9 +37,9 @@ %global __provides_exclude_from %{chromium_path}/.*\\.so|%{chromium_path}/lib/.*\\.so|%{chromium_path}/lib/.*\\.so.* %if 0%{?rhel} == 7 -%global privlibs libEGL|libGLESv2|libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_threading|libVkLayer_unique_objects|libaccessibility|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcatalog_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libffmpeg|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtk3ui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libleveldatabase|libmanager|libmedia|libmedia_blink|libmedia_devices_mojo_bindings_shared|libmedia_gpu|libmedia_mojo_services|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_platform_shared|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libperfetto|libplatform|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp|libresource_coordinator_cpp_base|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_base|libui_base_ime|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|liburl|libui_views_mus_lib|liburl_ipc|liburl_matcher|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libwebdata_common|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libfontconfig +%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_threading|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcatalog_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia|libmedia_blink|libmedia_devices_mojo_bindings_shared|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_session_public_mojom|libmedia_session_public_mojom_shared|libmedia_webrtc|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_platform_shared|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp|libresource_coordinator_cpp_base|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_base|libui_base_ime|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libvr_common|libvr_ui|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote|libfontconfig %else -%global privlibs libEGL|libGLESv2|libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_threading|libVkLayer_unique_objects|libaccessibility|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcatalog_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libffmpeg|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtk3ui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libleveldatabase|libmanager|libmedia|libmedia_blink|libmedia_devices_mojo_bindings_shared|libmedia_gpu|libmedia_mojo_services|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_platform_shared|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libperfetto|libplatform|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp|libresource_coordinator_cpp_base|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_base|libui_base_ime|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|liburl|libui_views_mus_lib|liburl_ipc|liburl_matcher|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format|libvr_common|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libwebdata_common|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote +%global privlibs libEGL|libGLESv2|libVkICD_mock_icd|libVkLayer_core_validation|libVkLayer_object_tracker|libVkLayer_parameter_validation|libVkLayer_threading|libVkLayer_unique_objects|libaccessibility|libandroid_mojo_bindings_shared|libanimation|libapdu|libaura|libaura_extra|libbase|libbase_i18n|libbindings|libbindings_base|libblink_android_mojo_bindings_shared|libblink_common|libblink_controller|libblink_core|libblink_core_mojo_bindings_shared|libblink_embedded_frame_sink_mojo_bindings_shared|libblink_modules|libblink_mojo_bindings_shared|libblink_platform|libbluetooth|libboringssl|libbrowser_ui_views|libcaptive_portal|libcapture_base|libcapture_lib|libcatalog_lib|libcbor|libcc|libcc_animation|libcc_base|libcc_debug|libcc_mojo_embedder|libcc_paint|libcdm_manager|libchrome_features|libchromium_sqlite3|libclearkeycdm|libclient|libcloud_policy_proto_generated_compile|libcodec|libcolor_space|libcommon|libcompositor|libcontent|libcontent_common_mojo_bindings_shared|libcontent_public_common_mojo_bindings_shared|libcontent_service_cpp|libcontent_service_mojom|libcontent_service_mojom_shared|libcrash_key|libcrcrypto|libdbus|libdevice_base|libdevice_event_log|libdevice_features|libdevice_gamepad|libdevice_vr|libdevice_vr_mojo_bindings|libdevice_vr_mojo_bindings_blink|libdevice_vr_mojo_bindings_shared|libdevices|libdiscardable_memory_client|libdiscardable_memory_common|libdiscardable_memory_service|libdisplay|libdisplay_types|libdisplay_util|libdomain_reliability|libembedder|libembedder_switches|libevents|libevents_base|libevents_devices_x11|libevents_ozone_layout|libevents_x|libfido|libfingerprint|libfreetype_harfbuzz|libgamepad_mojom|libgamepad_mojom_blink|libgamepad_mojom_shared|libgamepad_shared_typemap_traits|libgcm|libgeometry|libgeometry_skia|libgesture_detection|libgfx|libgfx_ipc|libgfx_ipc_buffer_types|libgfx_ipc_color|libgfx_ipc_geometry|libgfx_ipc_skia|libgfx_switches|libgfx_x11|libgin|libgl_in_process_context|libgl_init|libgl_wrapper|libgles2|libgles2_implementation|libgles2_utils|libgpu|libgpu_ipc_service|libgtkui|libheadless|libhost|libicui18n|libicuuc|libinterfaces_shared|libipc|libipc_mojom|libipc_mojom_shared|libkeycodes_x11|libkeyed_service_content|libkeyed_service_core|libleveldatabase|liblive_tab_count_metrics|libmanager|libmedia|libmedia_blink|libmedia_devices_mojo_bindings_shared|libmedia_gpu|libmedia_mojo_services|libmedia_session_cpp|libmedia_session_public_mojom|libmedia_session_public_mojom_shared|libmedia_webrtc|libmessage_center|libmessage_support|libmetrics_cpp|libmidi|libmirclient.so.9|libmirroring_service|libmojo_base_lib|libmojo_base_mojom|libmojo_base_mojom_blink|libmojo_base_mojom_shared|libmojo_base_shared_typemap_traits|libmojo_core_embedder|libmojo_core_embedder_internal|libmojo_core_ports|libmojo_cpp_platform|libmojo_ime_lib|libmojo_mojom_bindings|libmojo_mojom_bindings_shared|libmojo_public_system|libmojo_public_system_cpp|libmojom_core_shared|libmojom_platform_shared|libnative_theme|libnet|libnet_with_v8|libnetwork_cpp|libnetwork_cpp_base|libnetwork_service|libnetwork_session_configurator|libonc|libos_crypt|libperfetto|libplatform|libpolicy_component|libpolicy_proto|libppapi_host|libppapi_proxy|libppapi_shared|libprefs|libprinting|libprotobuf_lite|libproxy_config|libpublic|librange|libraster|libresource_coordinator_cpp|libresource_coordinator_cpp_base|libresource_coordinator_public_mojom|libresource_coordinator_public_mojom_blink|libresource_coordinator_public_mojom_shared|libsandbox|libsandbox_services|libscheduling_metrics|libseccomp_bpf|libservice|libservice_manager_cpp|libservice_manager_cpp_types|libservice_manager_mojom|libservice_manager_mojom_blink|libservice_manager_mojom_constants|libservice_manager_mojom_constants_blink|libservice_manager_mojom_constants_shared|libservice_manager_mojom_shared|libsessions|libshared_memory_support|libshell_dialogs|libskia|libsnapshot|libsql|libstartup_tracing|libstorage_browser|libstorage_common|libstub_window|libsuid_sandbox_client|libsurface|libtracing|libtracing_cpp|libtracing_mojom|libtracing_mojom_shared|libui_base|libui_base_ime|libui_base_x|libui_data_pack|libui_devtools|libui_message_center_cpp|libui_touch_selection|libui_views_mus_lib|liburl|liburl_ipc|liburl_matcher|libusb_shared|libuser_manager|libuser_prefs|libv8|libv8_libbase|libv8_libplatform|libviews|libviz_common|libviz_resource_format_utils|libvr_common|libvr_ui|libvulkan_init|libvulkan_wrapper|libvulkan_x11|libweb_dialogs|libwebdata_common|libwebgpu|libwebview|libwm|libwm_public|libwtf|libx11_events_platform|libx11_window|libzygote %endif %global __requires_exclude ^(%{privlibs})\\.so* @@ -113,9 +114,9 @@ BuildRequires: libicu-devel >= 5.4 %global bundlefontconfig 0 %endif -# Needs at least harfbuzz 1.7.3 now. -# 2018-03-07 -%if 0%{?fedora} < 28 +# Needs at least harfbuzz 1.8.6 now. +# 2018-10-24 +%if 0%{?fedora} < 29 %global bundleharfbuzz 1 %else %global bundleharfbuzz 0 @@ -137,15 +138,15 @@ BuildRequires: libicu-devel >= 5.4 %global chromoting_client_id %nil %endif -%global majorversion 69 +%global majorversion 70 %if %{freeworld} Name: chromium%{chromium_channel}%{?freeworld:-freeworld} %else Name: chromium%{chromium_channel} %endif -Version: %{majorversion}.0.3497.100 -Release: 2%{?dist} +Version: %{majorversion}.0.3538.77 +Release: 1%{?dist} Summary: A WebKit (Blink) powered web browser Url: http://www.chromium.org/Home License: BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) @@ -170,7 +171,7 @@ Patch9: chromium-48.0.2564.116-libusb_interrupt_event_handler.patch # https://bugs.chromium.org/p/chromium/issues/detail?id=622493 Patch12: chromium-55.0.2883.75-cups22.patch # Use PIE in the Linux sandbox (from openSUSE via Russian Fedora) -Patch15: chromium-55.0.2883.75-sandbox-pie.patch +Patch15: chromium-70.0.3538.67-sandbox-pie.patch # Use /etc/chromium for master_prefs Patch18: chromium-68.0.3440.106-master-prefs-path.patch # Disable MADV_FREE (if set by glibc) @@ -265,10 +266,6 @@ Patch101: chromium-68.0.3440.106-fedora-user-agent.patch # Try to fix version.py for Rawhide Patch102: chromium-67.0.3396.99-py3fix.patch Patch103: chromium-69.0.3497.81-py2-bootstrap.patch -# GCC: do not std::move unique ptr of forward declared UrlIndex -# Patch108: chromium-68.0.3440.84-move-unique-ptr.patch -# https://github.com/OSSystems/meta-browser/blob/master/recipes-browser/chromium/files/0001-vpx_sum_squares_2d_i16_neon-Make-s2-a-uint64x1_t.patch -Patch109: 0001-vpx_sum_squares_2d_i16_neon-Make-s2-a-uint64x1_t.patch # Fix default on redeclaration error # https://chromium.googlesource.com/chromium/src/+/122692ccee62223f266a988c575ae687e3f4c056%5E%21/#F0 Patch110: chromium-68.0.3440.106-fix-default-on-redeclaration.patch @@ -279,7 +276,13 @@ Patch111: chromium-69.0.3497.81-widevine-r2.patch # Forget about trying to make libc++ # BUILD SANELY PLEASE Patch112: chromium-69.0.3497.81-build-sanely-please.patch - +# Still moar GCC cleanups from upstream +Patch113: chromium-gcc8-r588316.patch +Patch114: chromium-gcc8-r588547.patch +Patch115: chromium-gcc8-r589614.patch +Patch116: chromium-gcc8-r591015.patch +# Disable fontconfig cache magic that breaks remoting +Patch117: chromium-70.0.3538.67-disable-fontconfig-cache-magic.patch # Use chromium-latest.py to generate clean tarball from released build tarballs, found here: # http://build.chromium.org/buildbot/official/ @@ -582,7 +585,7 @@ Provides: bundled(freetype) = 2.9.3 %endif Provides: bundled(gperftools) = svn144 %if 0%{?bundleharfbuzz} -Provides: bundled(harfbuzz) = 1.4.2 +Provides: bundled(harfbuzz) = 1.8.6 %endif Provides: bundled(hunspell) = 1.6.0 Provides: bundled(iccjpeg) @@ -813,10 +816,14 @@ udev. %patch102 -p1 -b .py3fix %patch103 -p1 -b .py2 # %%patch108 -p1 -b .move-unique-ptr -%patch109 -p1 -b .aarch64-int64x1_t %patch110 -p1 -b .fix-default-redeclaration %patch111 -p1 -b .wvhack %patch112 -p1 -b .sanebuild +%patch113 -p1 -b .r588316 +%patch114 -p1 -b .r588547 +%patch115 -p1 -b .r589614 +%patch116 -p1 -b .r591015 +%patch117 -p1 -b .nofc # Change shebang in all relevant files in this directory and all subdirectories # See `man find` for how the `-exec command {} +` syntax works @@ -992,6 +999,7 @@ CHROMIUM_CORE_GN_DEFINES+=' use_custom_libcxx=false' %ifarch aarch64 CHROMIUM_CORE_GN_DEFINES+=' target_cpu="arm64"' %endif +CHROMIUM_CORE_GN_DEFINES+=' use_jumbo_build=true jumbo_file_merge_limit=12' export CHROMIUM_CORE_GN_DEFINES CHROMIUM_BROWSER_GN_DEFINES="" @@ -1008,11 +1016,6 @@ CHROMIUM_BROWSER_GN_DEFINES+=' remove_webcore_debug_symbols=true enable_hangout_ CHROMIUM_BROWSER_GN_DEFINES+=' use_aura=true' CHROMIUM_BROWSER_GN_DEFINES+=' enable_widevine=true' # CHROMIUM_BROWSER_GN_DEFINES+=' enable_webrtc=true' -%if 0%{gtk3} -CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=true' -%else -CHROMIUM_BROWSER_GN_DEFINES+=' use_gtk3=false' -%endif export CHROMIUM_BROWSER_GN_DEFINES CHROMIUM_HEADLESS_GN_DEFINES="" @@ -1048,6 +1051,7 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'net/third_party/nss' \ 'net/third_party/quic' \ 'net/third_party/spdy' \ + 'net/third_party/uri_template' \ 'third_party/WebKit' \ 'third_party/abseil-cpp' \ 'third_party/adobe' \ @@ -1120,6 +1124,8 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'third_party/libXNVCtrl' \ 'third_party/libaddressinput' \ 'third_party/libaom' \ + 'third_party/libaom/source/libaom/third_party/vector' \ + 'third_party/libaom/source/libaom/third_party/x86inc' \ 'third_party/libdrm' \ 'third_party/libjingle' \ 'third_party/libjpeg_turbo' \ @@ -1206,6 +1212,13 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'third_party/web-animations-js' \ 'third_party/webdriver' \ 'third_party/webrtc' \ + 'third_party/webrtc/common_audio/third_party/fft4g' \ + 'third_party/webrtc/common_audio/third_party/spl_sqrt_floor' \ + 'third_party/webrtc/modules/third_party/fft' \ + 'third_party/webrtc/modules/third_party/g711' \ + 'third_party/webrtc/modules/third_party/g722' \ + 'third_party/webrtc/rtc_base/third_party/base64' \ + 'third_party/webrtc/rtc_base/third_party/sigslot' \ 'third_party/widevine' \ 'third_party/woff2' \ 'third_party/xdg-utils' \ @@ -1216,7 +1229,7 @@ build/linux/unbundle/remove_bundled_libraries.py \ 'url/third_party/mozilla' \ 'v8/src/third_party/utf8-decoder' \ 'v8/src/third_party/valgrind' \ - 'v8/third_party/antlr4' \ + 'v8/third_party/v8' \ 'v8/third_party/inspector_protocol' \ --do-remove @@ -1316,6 +1329,8 @@ tools/gn/bootstrap/bootstrap.py -v "$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_ %{target}/gn --script-executable=/usr/bin/python2 gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_HEADLESS_GN_DEFINES" %{headlesstarget} %endif +%{target}/gn --script-executable=/usr/bin/python2 gen --args="$CHROMIUM_CORE_GN_DEFINES $CHROMIUM_BROWSER_GN_DEFINES" %{remotingtarget} + %if %{bundlelibusbx} # no hackity hack hack %else @@ -1347,7 +1362,7 @@ sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"Fedora Project"/' $FILE pushd remoting # ../../depot_tools/ninja -C ../%{target} -vvv remoting_me2me_host remoting_start_host remoting_it2me_native_messaging_host remoting_me2me_native_messaging_host remoting_native_messaging_manifests remoting_resources -../../depot_tools/ninja -C ../%{target} -vvv remoting_all +../../depot_tools/ninja -C ../%{remotingtarget} -vvv remoting_all %if 0%{?build_remoting_app} %if 0%{?nacl} GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=%{chromoting_client_id} ../../depot_tools/ninja -vv -C ../out/Release/ remoting_webapp @@ -1443,6 +1458,9 @@ for i in ../chromium-browser%{?chromium_channel}/lib*.so; do done popd %endif +popd + +pushd %{remotingtarget} # See remoting/host/installer/linux/Makefile for logic cp -a remoting_native_messaging_host %{buildroot}%{crd_path}/native-messaging-host @@ -1468,6 +1486,7 @@ for i in ../../../chromium/native-messaging-hosts/*; do cp -a $i . done popd +popd mkdir -p %{buildroot}/var/lib/chrome-remote-desktop touch %{buildroot}/var/lib/chrome-remote-desktop/hashes @@ -1482,7 +1501,6 @@ popd cp -a remoting_client_plugin_newlib.* %{buildroot}%{chromium_path} %endif %endif -popd pushd %{headlesstarget} cp -a headless_lib.pak headless_shell %{buildroot}%{chromium_path} @@ -1772,6 +1790,12 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %changelog +* Fri Nov 2 2018 Tom Callaway - 70.0.3538.77-1 +- .77 came out while I was working on this. :/ + +* Fri Nov 2 2018 Tom Callaway - 70.0.3538.67-1 +- update to 70 + * Tue Oct 16 2018 Tom Callaway - 69.0.3497.100-2 - do not play with fonts on freeworld builds diff --git a/sources b/sources index 6be1d19..1bbb46d 100644 --- a/sources +++ b/sources @@ -17,4 +17,4 @@ SHA512 (Tinos-Italic.ttf) = d4f4f096110ef98a781a2a0e0d319317e5f84e650fe6f4d4f6b0 SHA512 (Tinos-Regular.ttf) = 58085c5dac6d067d60ba2ab3220c4a0cc1efcf279cadfcfb8746a5e5fa1a6f6daa62750dc2051b3b2d8a51b4d2e9bb0f66594caf2253c0870ed9c7286fa45e8f SHA512 (chromium-68.0.3440.106-clean.tar.xz) = a609975c96674f3a84a33bb3d57271535671e11d0775efeceff4f8a965851216038cf491281aaab0cc64c6e99af033f9c8a93f759f232e8c686408dbc09c8dd5 SHA512 (Ahem.ttf) = aeb64b10ab9c87860714cb60b4900254b13dc52c51319256a1a3722c882026ab7c616bf628fbc2fe14e38a6003f3a481af60b52a7ed62071d28ddaf428e4e3fd -SHA512 (chromium-69.0.3497.100-clean.tar.xz) = 6e7bf831054d78e9bde8d708616189215e5b4baaeb2c37ca2864d3fb37326d70f5cb01ad91ad1fc0facfc1a688b6ae24c3649495759c00ed546b3f90c8d3fc54 +SHA512 (chromium-70.0.3538.77-clean.tar.xz) = 6086567e3ef317fed2c9edd9a435c1a862aafff39d496d827da3a21ed3ae60570ab2b052df5a8cfe5cee00742c4ca30ad9af25f8d70e52d1878aed92503fda20