diff --git a/composer.json b/composer.json
index 5c56d61aa82a184e1076be4b6a4dc6e94da9ca51..e7ed0164337badd904ca983779ffcc7f8cfe89e1 100644
--- a/composer.json
+++ b/composer.json
@@ -102,7 +102,7 @@
   ],
   "require": {
     "php": ">=8.1",
-    "bower-asset/bootstrap": "v5.3.3",
+    "twbs/bootstrap": "5.3.3",
     "bower-asset/jquery-cycle": "3.0.3",
     "bower-asset/jquery-hoverintent": "v1.10.2",
     "bower-asset/json2": "dev-master",
@@ -123,7 +123,7 @@
     "drupal/cern-dev-status": "3.1.2",
     "drupal/cern-display-formats": "3.0.1",
     "drupal/cern-full-html-format": "3.0.2",
-    "drupal/cern-indico-feeds": "3.0.2",
+    "drupal/cern-indico-feeds": "3.0.4",
     "drupal/cern-install-profiles": "9.0.2",
     "drupal/cern-integration": "2.0.0",
     "drupal/cern-landing-page": "3.0.4",
@@ -145,10 +145,11 @@
     "drupal/components": "3.1.0",
     "drupal/config_update": "2.0.0-alpha4",
     "drupal/content_access": "2.0.0",
-    "drupal/core-composer-scaffold": "10.3.10",
-    "drupal/core-project-message": "10.3.10",
-    "drupal/core-recommended": "10.3.10",
+    "drupal/core-composer-scaffold": "10.4.3",
+    "drupal/core-project-message": "10.4.3",
+    "drupal/core-recommended": "10.4.3",
     "drupal/ctools": "4.1.0",
+    "drupal/date_filter": "1.0.2",
     "drupal/date_popup": "2.0.2",
     "drupal/devel": "5.3.1",
     "drupal/ds": "3.24.0",
@@ -307,10 +308,12 @@
         "Fixes crash if an external URL is specified in page path https://www.drupal.org/project/drupal/issues/2973422": "patches/save_views_external_url-2973422-19.patch",
         "Fixes call to a member function getAccountName() on null https://www.drupal.org/project/drupal/issues/3161212": "patches/core-node_add_author_error-3161212-2-9.x.patch",
         "Fixes TypeError: Cannot access offset of type string on string https://www.drupal.org/project/drupal/issues/3336312": "patches/3336312.patch",
-        "Fixes Rewrite as URL adding equals sign to end of url https://www.drupal.org/project/drupal/issues/1464244#comment-15685744":"patches/1464244-71.patch",
+        "Fixes Rewrite as URL adding equals sign to end of url https://www.drupal.org/project/drupal/issues/1464244#comment-15685744": "patches/1464244-71.patch",
         "Fixes markup issue https://www.drupal.org/project/drupal/issues/3253568": "patches/3253568-18.patch",
         "Fixes RssFields compatibility issue https://www.drupal.org/project/drupal/issues/2511878#comment-15806953": "patches/2511878-85-10.3.patch",
-        "Fixes Argument #2 must be of type array, null given in array_diff() https://www.drupal.org/project/drupal/issues/3460773": "patches/ThemeRegistry.patch"
+        "Fixes Argument #2 must be of type array, null given in array_diff() https://www.drupal.org/project/drupal/issues/3460773": "patches/ThemeRegistry.patch",
+        "Grouped exposed filters do not work when input from user is an array https://www.drupal.org/project/drupal/issues/3357973": "patches/core-1810148_114-1.patch",
+        "Invalid config structure can result in exceptions when saving a config entity https://www.drupal.org/project/drupal/issues/2925890": "patches/2925890-75.patch"
       },
       "drupal/paragraphs": {
         "Fixes data loss on using the Paragraphs Asymmetric Translation Widgets https://www.drupal.org/project/paragraphs_asymmetric_translation_widgets/issues/2992777": "patches/patch-to-fix-wrong-summary-on-converted-async-paragraphs-after-running-patch-2992777-v2.patch"
@@ -322,7 +325,7 @@
         "Fixes call to a member function isEmpty() on null https://www.drupal.org/project/filefield_paths/issues/3339688": "patches/filefield_paths-call_isEmpty_on_null-3339688-4.patch"
       },
       "drupal/filelog": {
-        "Fixes Circular reference detected for service https://www.drupal.org/project/filelog/issues/3416342":"patches/3416342-12.patch"
+        "Fixes Circular reference detected for service https://www.drupal.org/project/filelog/issues/3416342": "patches/3416342-12.patch"
       },
       "__comments__": {}
     },
@@ -339,4 +342,4 @@
       "merge-scripts": true
     }
   }
-}
\ No newline at end of file
+}
diff --git a/patches/2925890-75.patch b/patches/2925890-75.patch
new file mode 100644
index 0000000000000000000000000000000000000000..fc8f3943a87016554d687ff9d6fccc772c4bb43e
--- /dev/null
+++ b/patches/2925890-75.patch
@@ -0,0 +1,116 @@
+diff --git a/core/lib/Drupal/Core/Config/Config.php b/core/lib/Drupal/Core/Config/Config.php
+index 447bed82fb..edff99d4ea 100644
+--- a/core/lib/Drupal/Core/Config/Config.php
++++ b/core/lib/Drupal/Core/Config/Config.php
+@@ -204,18 +204,26 @@ public function save($has_trusted_data = FALSE) {
+ 
+     // If there is a schema for this configuration object, cast all values to
+     // conform to the schema.
+-    if (!$has_trusted_data) {
+-      if ($this->typedConfigManager->hasConfigSchema($this->name)) {
+-        // Ensure that the schema wrapper has the latest data.
+-        $this->schemaWrapper = NULL;
+-        $this->data = $this->castValue(NULL, $this->data);
+-      }
+-      else {
+-        foreach ($this->data as $key => $value) {
+-          $this->validateValue($key, $value);
++    try {
++      if (!$has_trusted_data) {
++        if ($this->typedConfigManager->hasConfigSchema($this->name)) {
++          // Ensure that the schema wrapper has the latest data.
++          $this->schemaWrapper = NULL;
++          foreach ($this->data as $key => $value) {
++            $this->data[$key] = $this->castValue($key, $value);
++          }
++        }
++        else {
++          foreach ($this->data as $key => $value) {
++            $this->validateValue($key, $value);
++          }
+         }
+       }
+     }
++    catch (\Exception $e) {
++      // Log and ignore exceptions caused by invalid config structures.
++      watchdog_exception('config', $e);
++    }
+ 
+     // Potentially configuration schema could have changed the underlying data's
+     // types.
+diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php
+index c337f574d6..a4863f93b7 100644
+--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php
++++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigCRUDTest.php
+@@ -9,7 +9,6 @@
+ use Drupal\Core\Config\ConfigNameException;
+ use Drupal\Core\Config\ConfigValueException;
+ use Drupal\Core\Config\DatabaseStorage;
+-use Drupal\Core\Config\UnsupportedDataTypeConfigException;
+ use Drupal\KernelTests\KernelTestBase;
+ 
+ /**
+@@ -264,7 +263,7 @@ public function testValueValidation(): void {
+    * Tests data type handling.
+    */
+   public function testDataTypes(): void {
+-    \Drupal::service('module_installer')->install(['config_test']);
++    \Drupal::service('module_installer')->install(['config_test', 'dblog']);
+     $storage = new DatabaseStorage($this->container->get('database'), 'config');
+     $name = 'config_test.types';
+     $config = $this->config($name);
+@@ -327,28 +326,26 @@ public function testDataTypes(): void {
+ 
+     // Test that setting an unsupported type for a config object with a schema
+     // fails.
+-    try {
+-      $config->set('stream', fopen(__FILE__, 'r'))->save();
+-      $this->fail('No Exception thrown upon saving invalid data type.');
+-    }
+-    catch (UnsupportedDataTypeConfigException $e) {
+-      // Expected exception; just continue testing.
+-    }
++    // does not throw an exception but logs an error.
++    $config->set('stream', fopen(__FILE__, 'r'))->save();
++    $last_watchdog = \Drupal::database()->query('SELECT * FROM {watchdog} ORDER BY wid DESC')->fetchAssoc();
++    $variables = unserialize($last_watchdog['variables']);
++    $this->assertEquals('Invalid data type for config element config_test.types:stream', $variables['@message']);
++    $this->assertEquals('Drupal\Core\Config\UnsupportedDataTypeConfigException', $variables['%type']);
+ 
+     // Test that setting an unsupported type for a config object with no schema
+     // also fails.
++    // also logs an error.
+     $typed_config_manager = $this->container->get('config.typed');
+     $config_name = 'config_test.no_schema';
+     $config = $this->config($config_name);
+     $this->assertFalse($typed_config_manager->hasConfigSchema($config_name));
+ 
+-    try {
+-      $config->set('stream', fopen(__FILE__, 'r'))->save();
+-      $this->fail('No Exception thrown upon saving invalid data type.');
+-    }
+-    catch (UnsupportedDataTypeConfigException $e) {
+-      // Expected exception; just continue testing.
+-    }
++    $config->set('stream', fopen(__FILE__, 'r'))->save();
++    $last_watchdog = \Drupal::database()->query('SELECT * FROM {watchdog} ORDER BY wid DESC')->fetchAssoc();
++    $variables = unserialize($last_watchdog['variables']);
++    $this->assertEquals('Invalid data type for config element config_test.no_schema:stream', $variables['@message']);
++    $this->assertEquals('Drupal\Core\Config\UnsupportedDataTypeConfigException', $variables['%type']);
+   }
+ 
+ }
+diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php
+index 6c0fcf5d42..265742906e 100644
+--- a/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php
++++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigSchemaTest.php
+@@ -482,8 +482,8 @@ public function testConfigSaveWithSchema(): void {
+   public function testConfigSaveMappingSort(): void {
+     // Top level map sorting.
+     $data = [
+-      'foo' => '1',
+       'bar' => '2',
++      'foo' => '1',
+     ];
+     // Save config which has a schema that enforces types.
+     $this->config('config_schema_test.schema_mapping_sort')
\ No newline at end of file
diff --git a/patches/core-1810148_114-1.patch b/patches/core-1810148_114-1.patch
new file mode 100644
index 0000000000000000000000000000000000000000..a63851647bb919abb6e728a99bed015963e2f753
--- /dev/null
+++ b/patches/core-1810148_114-1.patch
@@ -0,0 +1,32 @@
+diff --git a/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php b/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php
+index 76c9635559..74541853e8 100644
+--- a/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php
++++ b/core/modules/taxonomy/src/Plugin/views/filter/TaxonomyIndexTid.php
+@@ -350,9 +350,24 @@ public function validateExposed(&$form, FormStateInterface $form_state) {
+     $identifier = $this->options['expose']['identifier'];
+     $input = $form_state->getValue($identifier);
+
+-    if ($this->options['is_grouped'] && isset($this->options['group_info']['group_items'][$input])) {
+-      $this->validated_exposed_input = $this->options['group_info']['group_items'][$input]['value'];
+-      return;
++    if ($this->options['is_grouped']) {
++      if (is_array($input)) {
++        $filtered_inputs = array_filter($input);
++        if ($filtered_inputs) {
++          $values = [];
++          foreach ($filtered_inputs as $filtered_input) {
++            $values += $this->options['group_info']['group_items'][$filtered_input]['value'];
++          }
++          $this->validated_exposed_input = $values;
++          return;
++        }
++      }
++      else {
++        if (isset($this->options['group_info']['group_items'][$input])) {
++          $this->validated_exposed_input = $this->options['group_info']['group_items'][$input]['value'];
++          return;
++        }
++      }
+     }
+
+     // We only validate if they've chosen the text field style.
\ No newline at end of file