diff --git a/composer.json b/composer.json
index 997c43fd1c24a04b0cde6f0267b0fb8adf83186a..2bbf0609c559f72fd3b7c44ae2f50e33ab6a10f1 100644
--- a/composer.json
+++ b/composer.json
@@ -107,7 +107,7 @@
         "drupal/core-recommended": "9.5.11",
         "drupal/crop": "2.3",
         "drupal/ctools": "3.14",
-        "drupal/decorative_image_widget": "1.0",
+        "drupal/decorative_image_widget": "^1.0",
         "drupal/dropzonejs": "2.8",
         "drupal/editor_advanced_link": "2.2.4",
         "drupal/embed": "1.6",
@@ -141,7 +141,7 @@
         "drupal/multiple_fields_remove_button": "2.2.0",
         "drupal/pantheon_advanced_page_cache": "^2.1",
         "drupal/paragraphs": "1.16",
-        "drupal/pathauto": "1.11",
+        "drupal/pathauto": "1.12",
         "drupal/queue_mail": "^1.4",
         "drupal/realname": "^2.0@beta",
         "drupal/rebuild_cache_access": "^1.8",
@@ -165,7 +165,7 @@
         "drupal/video_embed_field": "2.5",
         "drupal/view_unpublished": "1.1",
         "drupal/views_ajax_history": "1.7",
-        "drupal/views_autocomplete_filters": "1.4",
+        "drupal/views_autocomplete_filters": "1.6",
         "drupal/views_bootstrap": "^3.9",
         "drupal/views_bulk_operations": "4.2.5",
         "drupal/views_fieldsets": "^4",
@@ -278,9 +278,6 @@
             "drupal/addtocalendar": {
                 "UTC Time Adjustment": "patches/utc-time-adjustment.patch"
             },
-            "drupal/decorative_image_widget": {
-                "3383305": "https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch"
-            },
             "drupal/entity_embed": {
                 "3077225": "https://www.drupal.org/files/issues/2019-12-11/3077225-10.reduce-invalid-config-logs.patch"
             },
diff --git a/composer.lock b/composer.lock
index 13686b244a677140bb0a2a2a6cb4d3722d059466..b1891e69e57e8ef1f814fb5735946559f9fb3248 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "104ad135cd2c808452366057a8c99003",
+    "content-hash": "73a72fff269378d6acaaca7619168fa2",
     "packages": [
         {
             "name": "asm89/stack-cors",
@@ -1664,6 +1664,10 @@
                 "GPL-2.0-or-later"
             ],
             "authors": [
+                {
+                    "name": "Dylan Donkersgoed",
+                    "homepage": "https://www.drupal.org/user/2803351"
+                },
                 {
                     "name": "Mohammed J. Razem",
                     "homepage": "https://www.drupal.org/user/255384"
@@ -2749,17 +2753,17 @@
         },
         {
             "name": "drupal/decorative_image_widget",
-            "version": "1.0.0",
+            "version": "1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/decorative_image_widget.git",
-                "reference": "1.0.0"
+                "reference": "1.0.1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.0.zip",
-                "reference": "1.0.0",
-                "shasum": "da118d519d20ba2d3ed4ffeb037259a267cbc0f7"
+                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.1.zip",
+                "reference": "1.0.1",
+                "shasum": "1bcd473add81bc96296a98796880cb2f6a0ccb47"
             },
             "require": {
                 "drupal/core": "^9.2 || ^10"
@@ -2767,8 +2771,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "1.0.0",
-                    "datestamp": "1691175827",
+                    "version": "1.0.1",
+                    "datestamp": "1696726436",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -3503,6 +3507,10 @@
                 "GPL-2.0-or-later"
             ],
             "authors": [
+                {
+                    "name": "Anybody",
+                    "homepage": "https://www.drupal.org/user/291091"
+                },
                 {
                     "name": "Hydra",
                     "homepage": "https://www.drupal.org/user/647364"
@@ -5197,17 +5205,17 @@
         },
         {
             "name": "drupal/msqrole",
-            "version": "1.0.10",
+            "version": "1.0.11",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/msqrole.git",
-                "reference": "1.0.10"
+                "reference": "1.0.11"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/msqrole-1.0.10.zip",
-                "reference": "1.0.10",
-                "shasum": "90867c8709093ffa83f5b06c5a6088e9bc30a30f"
+                "url": "https://ftp.drupal.org/files/projects/msqrole-1.0.11.zip",
+                "reference": "1.0.11",
+                "shasum": "602bfa20415218672d923d0d54c6aace89e698b8"
             },
             "require": {
                 "drupal/core": "^9.4 || ^10",
@@ -5217,8 +5225,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "1.0.10",
-                    "datestamp": "1690031508",
+                    "version": "1.0.11",
+                    "datestamp": "1696844688",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -5460,17 +5468,17 @@
         },
         {
             "name": "drupal/pathauto",
-            "version": "1.11.0",
+            "version": "1.12.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/pathauto.git",
-                "reference": "8.x-1.11"
+                "reference": "8.x-1.12"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.11.zip",
-                "reference": "8.x-1.11",
-                "shasum": "a006fe9e6046a9833711a1ae56aa4752e65bcdc8"
+                "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.12.zip",
+                "reference": "8.x-1.12",
+                "shasum": "b7b6432e315e38e59a7c6cc117134326c580de4c"
             },
             "require": {
                 "drupal/core": "^9.3 || ^10",
@@ -5483,8 +5491,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-1.11",
-                    "datestamp": "1660129564",
+                    "version": "8.x-1.12",
+                    "datestamp": "1696776683",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -6999,17 +7007,17 @@
         },
         {
             "name": "drupal/views_autocomplete_filters",
-            "version": "1.4.0",
+            "version": "1.6.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/views_autocomplete_filters.git",
-                "reference": "8.x-1.4"
+                "reference": "8.x-1.6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.4.zip",
-                "reference": "8.x-1.4",
-                "shasum": "f65d5c6d25df802968c514836ea8edd22ba063a1"
+                "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.6.zip",
+                "reference": "8.x-1.6",
+                "shasum": "43a2de203ef7a4fdd3116394e97c7a6e23a97055"
             },
             "require": {
                 "drupal/core": "^8 || ^9 || ^10"
@@ -7017,8 +7025,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-1.4",
-                    "datestamp": "1677771862",
+                    "version": "8.x-1.6",
+                    "datestamp": "1696855914",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -7317,17 +7325,17 @@
         },
         {
             "name": "drupal/webform",
-            "version": "6.2.0-beta6",
+            "version": "6.2.0-beta7",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/webform.git",
-                "reference": "6.2.0-beta6"
+                "reference": "6.2.0-beta7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/webform-6.2.0-beta6.zip",
-                "reference": "6.2.0-beta6",
-                "shasum": "b466ad3629c58f45994cbca55ab6bd8baaa4b838"
+                "url": "https://ftp.drupal.org/files/projects/webform-6.2.0-beta7.zip",
+                "reference": "6.2.0-beta7",
+                "shasum": "2c15e8103abf105c9a4357c5890fa80b0103c5bd"
             },
             "require": {
                 "drupal/core": "^9.4 || ^10"
@@ -7338,16 +7346,16 @@
                 "drupal/captcha": "^1 || ^2",
                 "drupal/chosen": "3.0.x-dev",
                 "drupal/ckeditor": "1.0.x-dev",
-                "drupal/clientside_validation": "*",
+                "drupal/clientside_validation": "^3 || ^4",
                 "drupal/clientside_validation_jquery": "*",
-                "drupal/devel": "*",
+                "drupal/devel": "5.x-dev",
                 "drupal/entity": "1.x-dev",
-                "drupal/entity_print": "*",
+                "drupal/entity_print": "2.x-dev",
                 "drupal/group": "1.x-dev",
                 "drupal/hal": "1 - 2",
                 "drupal/jquery_ui": "1.x-dev",
-                "drupal/jquery_ui_checkboxradio": "*",
-                "drupal/jquery_ui_datepicker": "*",
+                "drupal/jquery_ui_checkboxradio": "2.x-dev",
+                "drupal/jquery_ui_datepicker": "2.x-dev",
                 "drupal/mailsystem": "4.x-dev",
                 "drupal/metatag": "1.x-dev",
                 "drupal/paragraphs": "1.x-dev",
@@ -7355,7 +7363,7 @@
                 "drupal/smtp": "1.x-dev",
                 "drupal/styleguide": "^1 || ^2",
                 "drupal/telephone_validation": "2.x-dev",
-                "drupal/token": "*",
+                "drupal/token": "1.x-dev",
                 "drupal/variationcache": "1.x-dev",
                 "drupal/webform_access": "*",
                 "drupal/webform_attachment": "*",
@@ -7375,8 +7383,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "6.2.0-beta6",
-                    "datestamp": "1686598812",
+                    "version": "6.2.0-beta7",
+                    "datestamp": "1696543693",
                     "security-coverage": {
                         "status": "not-covered",
                         "message": "Beta releases are not covered by Drupal security advisories."
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 4e8c17303389996c657721ba42e3144456ef07c2..f2e6b4536b60e65ecfe13170d5f893ed8b3c8a31 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2867,18 +2867,18 @@
         },
         {
             "name": "drupal/decorative_image_widget",
-            "version": "1.0.0",
-            "version_normalized": "1.0.0.0",
+            "version": "1.0.1",
+            "version_normalized": "1.0.1.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/decorative_image_widget.git",
-                "reference": "1.0.0"
+                "reference": "1.0.1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.0.zip",
-                "reference": "1.0.0",
-                "shasum": "da118d519d20ba2d3ed4ffeb037259a267cbc0f7"
+                "url": "https://ftp.drupal.org/files/projects/decorative_image_widget-1.0.1.zip",
+                "reference": "1.0.1",
+                "shasum": "1bcd473add81bc96296a98796880cb2f6a0ccb47"
             },
             "require": {
                 "drupal/core": "^9.2 || ^10"
@@ -2886,15 +2886,12 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "1.0.0",
-                    "datestamp": "1691175827",
+                    "version": "1.0.1",
+                    "datestamp": "1696726436",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
                     }
-                },
-                "patches_applied": {
-                    "3383305": "https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch"
                 }
             },
             "installation-source": "dist",
@@ -5441,18 +5438,18 @@
         },
         {
             "name": "drupal/msqrole",
-            "version": "1.0.10",
-            "version_normalized": "1.0.10.0",
+            "version": "1.0.11",
+            "version_normalized": "1.0.11.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/msqrole.git",
-                "reference": "1.0.10"
+                "reference": "1.0.11"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/msqrole-1.0.10.zip",
-                "reference": "1.0.10",
-                "shasum": "90867c8709093ffa83f5b06c5a6088e9bc30a30f"
+                "url": "https://ftp.drupal.org/files/projects/msqrole-1.0.11.zip",
+                "reference": "1.0.11",
+                "shasum": "602bfa20415218672d923d0d54c6aace89e698b8"
             },
             "require": {
                 "drupal/core": "^9.4 || ^10",
@@ -5462,8 +5459,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "1.0.10",
-                    "datestamp": "1690031508",
+                    "version": "1.0.11",
+                    "datestamp": "1696844688",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -5716,18 +5713,18 @@
         },
         {
             "name": "drupal/pathauto",
-            "version": "1.11.0",
-            "version_normalized": "1.11.0.0",
+            "version": "1.12.0",
+            "version_normalized": "1.12.0.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/pathauto.git",
-                "reference": "8.x-1.11"
+                "reference": "8.x-1.12"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.11.zip",
-                "reference": "8.x-1.11",
-                "shasum": "a006fe9e6046a9833711a1ae56aa4752e65bcdc8"
+                "url": "https://ftp.drupal.org/files/projects/pathauto-8.x-1.12.zip",
+                "reference": "8.x-1.12",
+                "shasum": "b7b6432e315e38e59a7c6cc117134326c580de4c"
             },
             "require": {
                 "drupal/core": "^9.3 || ^10",
@@ -5740,8 +5737,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-1.11",
-                    "datestamp": "1660129564",
+                    "version": "8.x-1.12",
+                    "datestamp": "1696776683",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -7329,18 +7326,18 @@
         },
         {
             "name": "drupal/views_autocomplete_filters",
-            "version": "1.4.0",
-            "version_normalized": "1.4.0.0",
+            "version": "1.6.0",
+            "version_normalized": "1.6.0.0",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/views_autocomplete_filters.git",
-                "reference": "8.x-1.4"
+                "reference": "8.x-1.6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.4.zip",
-                "reference": "8.x-1.4",
-                "shasum": "f65d5c6d25df802968c514836ea8edd22ba063a1"
+                "url": "https://ftp.drupal.org/files/projects/views_autocomplete_filters-8.x-1.6.zip",
+                "reference": "8.x-1.6",
+                "shasum": "43a2de203ef7a4fdd3116394e97c7a6e23a97055"
             },
             "require": {
                 "drupal/core": "^8 || ^9 || ^10"
@@ -7348,8 +7345,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "8.x-1.4",
-                    "datestamp": "1677771862",
+                    "version": "8.x-1.6",
+                    "datestamp": "1696855914",
                     "security-coverage": {
                         "status": "covered",
                         "message": "Covered by Drupal's security advisory policy"
@@ -7662,18 +7659,18 @@
         },
         {
             "name": "drupal/webform",
-            "version": "6.2.0-beta6",
-            "version_normalized": "6.2.0.0-beta6",
+            "version": "6.2.0-beta7",
+            "version_normalized": "6.2.0.0-beta7",
             "source": {
                 "type": "git",
                 "url": "https://git.drupalcode.org/project/webform.git",
-                "reference": "6.2.0-beta6"
+                "reference": "6.2.0-beta7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/webform-6.2.0-beta6.zip",
-                "reference": "6.2.0-beta6",
-                "shasum": "b466ad3629c58f45994cbca55ab6bd8baaa4b838"
+                "url": "https://ftp.drupal.org/files/projects/webform-6.2.0-beta7.zip",
+                "reference": "6.2.0-beta7",
+                "shasum": "2c15e8103abf105c9a4357c5890fa80b0103c5bd"
             },
             "require": {
                 "drupal/core": "^9.4 || ^10"
@@ -7684,16 +7681,16 @@
                 "drupal/captcha": "^1 || ^2",
                 "drupal/chosen": "3.0.x-dev",
                 "drupal/ckeditor": "1.0.x-dev",
-                "drupal/clientside_validation": "*",
+                "drupal/clientside_validation": "^3 || ^4",
                 "drupal/clientside_validation_jquery": "*",
-                "drupal/devel": "*",
+                "drupal/devel": "5.x-dev",
                 "drupal/entity": "1.x-dev",
-                "drupal/entity_print": "*",
+                "drupal/entity_print": "2.x-dev",
                 "drupal/group": "1.x-dev",
                 "drupal/hal": "1 - 2",
                 "drupal/jquery_ui": "1.x-dev",
-                "drupal/jquery_ui_checkboxradio": "*",
-                "drupal/jquery_ui_datepicker": "*",
+                "drupal/jquery_ui_checkboxradio": "2.x-dev",
+                "drupal/jquery_ui_datepicker": "2.x-dev",
                 "drupal/mailsystem": "4.x-dev",
                 "drupal/metatag": "1.x-dev",
                 "drupal/paragraphs": "1.x-dev",
@@ -7701,7 +7698,7 @@
                 "drupal/smtp": "1.x-dev",
                 "drupal/styleguide": "^1 || ^2",
                 "drupal/telephone_validation": "2.x-dev",
-                "drupal/token": "*",
+                "drupal/token": "1.x-dev",
                 "drupal/variationcache": "1.x-dev",
                 "drupal/webform_access": "*",
                 "drupal/webform_attachment": "*",
@@ -7721,8 +7718,8 @@
             "type": "drupal-module",
             "extra": {
                 "drupal": {
-                    "version": "6.2.0-beta6",
-                    "datestamp": "1686598812",
+                    "version": "6.2.0-beta7",
+                    "datestamp": "1696543693",
                     "security-coverage": {
                         "status": "not-covered",
                         "message": "Beta releases are not covered by Drupal security advisories."
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index d744a9272466ba1a335998fd773535837bd120fb..5d4f62a644264251ed8edb31047bf3c3a2a01315 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -3,7 +3,7 @@
         'name' => 'osu-asc-webservices/d8-upstream',
         'pretty_version' => 'dev-master',
         'version' => 'dev-master',
-        'reference' => 'fe8daab509c90a8c984673aa0c6d6770fdfd1cab',
+        'reference' => '84ad3bbd3bb9ce3e5d5d5672cfe5cfa6c8246ee6',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -563,9 +563,9 @@
             'dev_requirement' => false,
         ),
         'drupal/decorative_image_widget' => array(
-            'pretty_version' => '1.0.0',
-            'version' => '1.0.0.0',
-            'reference' => '1.0.0',
+            'pretty_version' => '1.0.1',
+            'version' => '1.0.1.0',
+            'reference' => '1.0.1',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/decorative_image_widget',
             'aliases' => array(),
@@ -905,9 +905,9 @@
             'dev_requirement' => false,
         ),
         'drupal/msqrole' => array(
-            'pretty_version' => '1.0.10',
-            'version' => '1.0.10.0',
-            'reference' => '1.0.10',
+            'pretty_version' => '1.0.11',
+            'version' => '1.0.11.0',
+            'reference' => '1.0.11',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/msqrole',
             'aliases' => array(),
@@ -941,9 +941,9 @@
             'dev_requirement' => false,
         ),
         'drupal/pathauto' => array(
-            'pretty_version' => '1.11.0',
-            'version' => '1.11.0.0',
-            'reference' => '8.x-1.11',
+            'pretty_version' => '1.12.0',
+            'version' => '1.12.0.0',
+            'reference' => '8.x-1.12',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/pathauto',
             'aliases' => array(),
@@ -1166,9 +1166,9 @@
             'dev_requirement' => false,
         ),
         'drupal/views_autocomplete_filters' => array(
-            'pretty_version' => '1.4.0',
-            'version' => '1.4.0.0',
-            'reference' => '8.x-1.4',
+            'pretty_version' => '1.6.0',
+            'version' => '1.6.0.0',
+            'reference' => '8.x-1.6',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/views_autocomplete_filters',
             'aliases' => array(),
@@ -1211,9 +1211,9 @@
             'dev_requirement' => false,
         ),
         'drupal/webform' => array(
-            'pretty_version' => '6.2.0-beta6',
-            'version' => '6.2.0.0-beta6',
-            'reference' => '6.2.0-beta6',
+            'pretty_version' => '6.2.0-beta7',
+            'version' => '6.2.0.0-beta7',
+            'reference' => '6.2.0-beta7',
             'type' => 'drupal-module',
             'install_path' => __DIR__ . '/../../web/modules/webform',
             'aliases' => array(),
@@ -1450,7 +1450,7 @@
         'osu-asc-webservices/d8-upstream' => array(
             'pretty_version' => 'dev-master',
             'version' => 'dev-master',
-            'reference' => 'fe8daab509c90a8c984673aa0c6d6770fdfd1cab',
+            'reference' => '84ad3bbd3bb9ce3e5d5d5672cfe5cfa6c8246ee6',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
diff --git a/web/modules/decorative_image_widget/PATCHES.txt b/web/modules/decorative_image_widget/PATCHES.txt
deleted file mode 100644
index 96c127dca0a71456cfa52c86cd7513bc1959ad8d..0000000000000000000000000000000000000000
--- a/web/modules/decorative_image_widget/PATCHES.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-This file was automatically generated by Composer Patches (https://github.com/cweagans/composer-patches)
-Patches applied to this directory:
-
-3383305
-Source: https://www.drupal.org/files/issues/2023-08-25/3383305-2.patch
-
-
diff --git a/web/modules/decorative_image_widget/decorative_image_widget.info.yml b/web/modules/decorative_image_widget/decorative_image_widget.info.yml
index db12e16c72a0510b9b6bf8edad3445c0312990e5..d9b241136b4bd3e80400f057854309548f3e8d36 100644
--- a/web/modules/decorative_image_widget/decorative_image_widget.info.yml
+++ b/web/modules/decorative_image_widget/decorative_image_widget.info.yml
@@ -6,7 +6,7 @@ package: Media
 dependencies:
   - drupal:image
 
-# Information added by Drupal.org packaging script on 2023-08-04
-version: '1.0.0'
+# Information added by Drupal.org packaging script on 2023-10-08
+version: '1.0.1'
 project: 'decorative_image_widget'
-datestamp: 1691175829
+datestamp: 1696726438
diff --git a/web/modules/decorative_image_widget/decorative_image_widget.module b/web/modules/decorative_image_widget/decorative_image_widget.module
index ad8a87739e65c7b09c8906e12a3a69dc1fe7a657..5a700449edc2c5e337c0fe311d78a8af51663c94 100644
--- a/web/modules/decorative_image_widget/decorative_image_widget.module
+++ b/web/modules/decorative_image_widget/decorative_image_widget.module
@@ -36,15 +36,17 @@ function decorative_image_widget_field_widget_settings_summary_alter(array &$sum
  * Implements hook_field_widget_form_alter().
  */
 function decorative_image_widget_field_widget_form_alter(array &$element, FormStateInterface $form_state, array $context) {
+  // Note this hook is only executed for Drupal 9.
   if ($context['widget'] instanceof ImageWidget) {
     DecorativeImageWidgetHelper::alter($element, $context['widget']);
   }
 }
 
 /**
- * Implements hook_field_widget_single_element_WIDGET_TYPE_form_alter().
+ * Implements hook_field_widget_single_element_form_alter().
  */
-function decorative_image_widget_field_widget_single_element_image_image_form_alter(array &$element, FormStateInterface $form_state, array $context) {
+function decorative_image_widget_field_widget_single_element_form_alter(array &$element, FormStateInterface $form_state, array $context) {
+  // Note this hook is only executed for Drupal 10+.
   if ($context['widget'] instanceof ImageWidget) {
     DecorativeImageWidgetHelper::alter($element, $context['widget']);
   }
diff --git a/web/modules/decorative_image_widget/js/decorative-image-widget.js b/web/modules/decorative_image_widget/js/decorative-image-widget.js
index 8ea643323797c3ecb060a9f963831ad724476ab9..81b271557f94b3d38995796d3f74e46f14345cfc 100644
--- a/web/modules/decorative_image_widget/js/decorative-image-widget.js
+++ b/web/modules/decorative_image_widget/js/decorative-image-widget.js
@@ -20,14 +20,30 @@
 
       function enableOrDisableAltTextField($altTextField, enable) {
         if (!enable) {
+          // Edit input field attributes.
           $altTextField
-            .prop('disabled', true)
-            .parent().addClass('form-disabled');
+            .prop("disabled", true)
+            .prop("required", false)
+            .removeClass("required");
+
+          // Edit parent element classes.
+          $altTextField.parent().addClass("form-disabled");
+
+          // Edit label element.
+          $altTextField.parent().find("label").removeClass("form-required");
         }
         else {
+          // Edit input field attributes.
           $altTextField
-            .prop('disabled', false)
-            .parent().removeClass('form-disabled');
+            .prop("disabled", false)
+            .prop("required", true)
+            .addClass("required");
+
+          // Edit parent element classes.
+          $altTextField.parent().removeClass("form-disabled");
+
+          // Edit label element.
+          $altTextField.parent().find("label").addClass("form-required");
         }
       }
     },
diff --git a/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php b/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php
index df0139c2caeea335b545090f8febed2160a1d69c..12c078fca206ba9e6a18cd0a5e224ef6ceca8b65 100644
--- a/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php
+++ b/web/modules/decorative_image_widget/src/DecorativeImageWidgetHelper.php
@@ -170,15 +170,20 @@ public static function validateAltText(array $element, FormStateInterface $formS
       return;
     }
 
-    // If the alt text is empty, then throw a validation error if the
-    // decorative checkbox was left unchecked.
-    if (empty($formState->getValue($element['#parents']))) {
-      $parents = $element['#parents'];
-      array_pop($parents);
-      $parents[] = 'decorative';
-      if (empty($formState->getValue($parents))) {
-        $formState->setErrorByName(implode('][', $element['#parents']), t('You must provide alternative text or indicate the image is decorative.'));
-      }
+    $parents = $element['#parents'];
+    array_pop($parents);
+
+    // Back out if no image was submitted.
+    $fid_form_element = array_merge($parents, ['fids']);
+    if (empty($formState->getValue($fid_form_element))) {
+      return;
+    }
+
+    $missing_alt_text = empty($formState->getValue($element['#parents']));
+    $decorative_form_element = array_merge($parents, ['decorative']);
+    $decorative_checked = (bool) $formState->getValue($decorative_form_element);
+    if ($missing_alt_text && !$decorative_checked) {
+      $formState->setErrorByName(implode('][', $element['#parents']), t('You must provide alternative text or indicate the image is decorative.'));
     }
   }
 
diff --git a/web/modules/msqrole/msqrole.info.yml b/web/modules/msqrole/msqrole.info.yml
index 2fcd6cac5beab4ed6e787b506f167f2ed153a796..4f7b8568b162dd39450df7e1e4d804f92489524d 100644
--- a/web/modules/msqrole/msqrole.info.yml
+++ b/web/modules/msqrole/msqrole.info.yml
@@ -7,7 +7,7 @@ configure: msqrole.settings_form
 dependencies:
   - token:token
 
-# Information added by Drupal.org packaging script on 2023-07-22
-version: '1.0.10'
+# Information added by Drupal.org packaging script on 2023-10-09
+version: '1.0.11'
 project: 'msqrole'
-datestamp: 1690031510
+datestamp: 1696844690
diff --git a/web/modules/msqrole/src/Entity/MasqueradeRoleUser.php b/web/modules/msqrole/src/Entity/MasqueradeRoleUser.php
index 2386d5e0150baf2f25dae51099cdd23aa7e34fe7..597750fa003b066d870a6990c7d6e3182ed00bf8 100644
--- a/web/modules/msqrole/src/Entity/MasqueradeRoleUser.php
+++ b/web/modules/msqrole/src/Entity/MasqueradeRoleUser.php
@@ -32,11 +32,11 @@ protected function roleManager(): RoleManagerInterface {
    * {@inheritdoc}
    */
   public function getRoles($exclude_locked_roles = FALSE) {
-    if (!$this->roleManager()->isActive($this->id())) {
+    if (!($id = $this->id()) || !$this->roleManager()->isActive($id)) {
       return parent::getRoles($exclude_locked_roles);
     }
 
-    $roles = $this->roleManager()->getRoles($this->id());
+    $roles = $this->roleManager()->getRoles($id);
     if ($exclude_locked_roles) {
       unset($roles[RoleInterface::ANONYMOUS_ID]);
       unset($roles[RoleInterface::AUTHENTICATED_ID]);
@@ -45,4 +45,4 @@ public function getRoles($exclude_locked_roles = FALSE) {
     return $roles;
   }
 
-}
\ No newline at end of file
+}
diff --git a/web/modules/msqrole/src/RoleManager.php b/web/modules/msqrole/src/RoleManager.php
index 7810aee59eccdc6f1330ff7986613bcf7bfe4184..e54503d3de74b132c149231a65df12044c4bc395 100644
--- a/web/modules/msqrole/src/RoleManager.php
+++ b/web/modules/msqrole/src/RoleManager.php
@@ -25,25 +25,18 @@ class RoleManager implements RoleManagerInterface {
   protected UserDataInterface $userData;
 
   /**
-   * The entity type manager.
-   *
-   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
-   */
-  protected EntityTypeManagerInterface $entityTypeManager;
-
-  /**
-   * The msqrole config.
+   * The config factory.
    *
-   * @var \Drupal\Core\Config\ImmutableConfig
+   * @var \Drupal\Core\Config\ConfigFactoryInterface
    */
-  protected ImmutableConfig $config;
+  protected ConfigFactoryInterface $configFactory;
 
   /**
-   * The theme config.
+   * The entity type manager.
    *
-   * @var \Drupal\Core\Config\ImmutableConfig
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
    */
-  protected ImmutableConfig $themeConfig;
+  protected EntityTypeManagerInterface $entityTypeManager;
 
   /**
    * The token service.
@@ -65,8 +58,7 @@ class RoleManager implements RoleManagerInterface {
   public function __construct(UserDataInterface $user_data, EntityTypeManagerInterface $entity_type_manager, ConfigFactoryInterface $config_factory, Token $token) {
     $this->userData = $user_data;
     $this->entityTypeManager = $entity_type_manager;
-    $this->config = $config_factory->get('msqrole.settings');
-    $this->themeConfig = $config_factory->get('system.theme');
+    $this->configFactory = $config_factory;
     $this->token = $token;
   }
 
@@ -184,13 +176,15 @@ public function removeData($uid, ?string $key = NULL) {
    */
   public function invalidateTags($uid) {
     $user = User::load($uid);
-    $admin_theme = $this->themeConfig->get('admin');
-    $default_theme = $this->themeConfig->get('default');
+    $config = $this->configFactory->get('msqrole.settings');
+    $theme_config = $this->configFactory->get('system.theme');
+    $admin_theme = $theme_config->get('admin');
+    $default_theme = $theme_config->get('default');
 
     // Replace possible variables in the tags.
     $tags = Cache::mergeTags(
       RoleManagerInterface::TAGS_TO_INVALIDATE,
-      (unserialize($this->config->get('tags_to_invalidate')) ?: [])
+      (unserialize($config->get('tags_to_invalidate')) ?: [])
     );
     foreach ($tags as &$tag) {
       $tag = $this->token->replace($tag, [
diff --git a/web/modules/pathauto/.gitlab-ci.yml b/web/modules/pathauto/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..94b86d0a8f356eb6869e9e96a21b40064b3ac38c
--- /dev/null
+++ b/web/modules/pathauto/.gitlab-ci.yml
@@ -0,0 +1,97 @@
+################
+# DrupalCI GitLabCI template
+#
+# Gitlab-ci.yml to replicate DrupalCI testing for Contrib
+#
+# With thanks to:
+#   * The GitLab Acceleration Initiative participants
+#   * DrupalSpoons
+################
+
+################
+# Guidelines
+#
+# This template is designed to give any Contrib maintainer everything they need to test, without requiring modification. It is also designed to keep up to date with Core Development automatically through the use of include files that can be centrally maintained.
+#
+# However, you can modify this template if you have additional needs for your project.
+################
+
+################
+# Includes
+#
+# Additional configuration can be provided through includes.
+# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include.
+#
+# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml
+# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values
+################
+
+include:
+  ################
+  # DrupalCI includes:
+  # As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
+  # View these include files at https://git.drupalcode.org/project/gitlab_templates/
+  ################
+  - project: $_GITLAB_TEMPLATES_REPO
+    ref: $_GITLAB_TEMPLATES_REF
+    file:
+      - '/includes/include.drupalci.main.yml'
+      - '/includes/include.drupalci.variables.yml'
+      - '/includes/include.drupalci.workflows.yml'
+
+################
+# Pipeline configuration variables
+#
+# These are the variables provided to the Run Pipeline form that a user may want to override.
+#
+# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/1.0.x/includes/include.drupalci.variables.yml
+################
+# variables:
+#   SKIP_ESLINT: '1'
+
+
+###################################################################################
+#
+#                                        *
+#                                       /(
+#                                      ((((,
+#                                    /(((((((
+#                                   ((((((((((*
+#                                ,(((((((((((((((
+#                              ,(((((((((((((((((((
+#                            ((((((((((((((((((((((((*
+#                         *(((((((((((((((((((((((((((((
+#                       ((((((((((((((((((((((((((((((((((*
+#                    *((((((((((((((((((  .((((((((((((((((((
+#                  ((((((((((((((((((.       /(((((((((((((((((*
+#                /(((((((((((((((((            .(((((((((((((((((,
+#             ,((((((((((((((((((                 ((((((((((((((((((
+#           .((((((((((((((((((((                   .(((((((((((((((((
+#          (((((((((((((((((((((((                     ((((((((((((((((/
+#        (((((((((((((((((((((((((((/                    ,(((((((((((((((*
+#      .((((((((((((((/  /(((((((((((((.                   ,(((((((((((((((
+#     *((((((((((((((      ,(((((((((((((/                   *((((((((((((((.
+#    ((((((((((((((,          /(((((((((((((.                  ((((((((((((((,
+#   (((((((((((((/              ,(((((((((((((*                 ,(((((((((((((,
+#  *(((((((((((((                .(((((((((((((((                ,(((((((((((((
+#  ((((((((((((/                /((((((((((((((((((.              ,((((((((((((/
+# (((((((((((((              *(((((((((((((((((((((((*             *((((((((((((
+# (((((((((((((            ,(((((((((((((..(((((((((((((           *((((((((((((
+# ((((((((((((,          /((((((((((((*      /((((((((((((/         ((((((((((((
+# (((((((((((((        /((((((((((((/          (((((((((((((*       ((((((((((((
+# (((((((((((((/     /((((((((((((               ,((((((((((((,    *((((((((((((
+#  ((((((((((((((  *(((((((((((/                   *((((((((((((.  ((((((((((((/
+#  *((((((((((((((((((((((((((,                      /(((((((((((((((((((((((((
+#   (((((((((((((((((((((((((                         ((((((((((((((((((((((((,
+#   .(((((((((((((((((((((((/                         ,(((((((((((((((((((((((
+#     ((((((((((((((((((((((/                         ,(((((((((((((((((((((/
+#      *(((((((((((((((((((((                         (((((((((((((((((((((,
+#       ,(((((((((((((((((((((,                      ((((((((((((((((((((/
+#         ,(((((((((((((((((((((*                  /((((((((((((((((((((
+#            ((((((((((((((((((((((,           ,/((((((((((((((((((((,
+#              ,(((((((((((((((((((((((((((((((((((((((((((((((((((
+#                 .(((((((((((((((((((((((((((((((((((((((((((((
+#                     .((((((((((((((((((((((((((((((((((((,.
+#                          .,(((((((((((((((((((((((((.
+#
+###################################################################################
diff --git a/web/modules/pathauto/pathauto.info.yml b/web/modules/pathauto/pathauto.info.yml
index ea15350dd5fd75b1ce541d9d3a9e2e80a198088a..d9016d99da99083c19cecc363aafd60744b6495f 100644
--- a/web/modules/pathauto/pathauto.info.yml
+++ b/web/modules/pathauto/pathauto.info.yml
@@ -12,7 +12,7 @@ configure: entity.pathauto_pattern.collection
 recommends:
 - redirect:redirect
 
-# Information added by Drupal.org packaging script on 2022-08-02
-version: '8.x-1.11'
+# Information added by Drupal.org packaging script on 2023-10-08
+version: '8.x-1.12'
 project: 'pathauto'
-datestamp: 1659472551
+datestamp: 1696776686
diff --git a/web/modules/pathauto/src/AliasCleaner.php b/web/modules/pathauto/src/AliasCleaner.php
index 20cdb6d5aa5568101529eca458e3e2b978fddbe5..14c515bcfb43771e0f338eefe6736935b1b2b3a1 100644
--- a/web/modules/pathauto/src/AliasCleaner.php
+++ b/web/modules/pathauto/src/AliasCleaner.php
@@ -70,6 +70,13 @@ class AliasCleaner implements AliasCleanerInterface {
    */
   protected $moduleHandler;
 
+  /**
+   * An array of arrays for punctuation values.
+   *
+   * @var array
+   */
+  protected $punctuationCharacters = [];
+
   /**
    * Creates a new AliasCleaner.
    *
diff --git a/web/modules/pathauto/src/AliasStorageHelper.php b/web/modules/pathauto/src/AliasStorageHelper.php
index 06ce2c4e52a2450a7fc23a62cbcc7930d8b528f5..c415e220125100c8e02bb0fe48a9c66857218700 100644
--- a/web/modules/pathauto/src/AliasStorageHelper.php
+++ b/web/modules/pathauto/src/AliasStorageHelper.php
@@ -114,14 +114,14 @@ public function save(array $path, $existing_alias = NULL, $op = NULL) {
       return NULL;
     }
 
+    // Don't create a new alias if it is identical to the current alias.
+    if ($existing_alias && $existing_alias->getAlias() == $alias) {
+      return NULL;
+    }
+
     // Update the existing alias if there is one and the configuration is set to
     // replace it.
     if ($existing_alias && $config->get('update_action') == PathautoGeneratorInterface::UPDATE_ACTION_DELETE) {
-      // Skip replacing the current alias with an identical alias.
-      if ($existing_alias->getAlias() == $alias) {
-        return NULL;
-      }
-
       $old_alias = $existing_alias->getAlias();
       $existing_alias->setAlias($alias)->save();
 
diff --git a/web/modules/pathauto/src/AliasTypeManager.php b/web/modules/pathauto/src/AliasTypeManager.php
index df982b66cf383a189e91bf7ea0378693b190e03b..e1a7d98c384a2a609e774949381f8e1cd101770e 100644
--- a/web/modules/pathauto/src/AliasTypeManager.php
+++ b/web/modules/pathauto/src/AliasTypeManager.php
@@ -2,10 +2,10 @@
 
 namespace Drupal\pathauto;
 
+use Drupal\Component\Plugin\FallbackPluginManagerInterface;
 use Drupal\Core\Cache\CacheBackendInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Plugin\DefaultPluginManager;
-use Drupal\Component\Plugin\FallbackPluginManagerInterface;
 
 /**
  * Manages pathauto alias type plugins.
diff --git a/web/modules/pathauto/src/EventSubscriber/PathautoSettingsCacheTag.php b/web/modules/pathauto/src/EventSubscriber/PathautoSettingsCacheTag.php
index 67ba325cc724e400301ba4e530c7403df4e2486f..69ef4854613915f5cd73aaab0e4ff05004453951 100644
--- a/web/modules/pathauto/src/EventSubscriber/PathautoSettingsCacheTag.php
+++ b/web/modules/pathauto/src/EventSubscriber/PathautoSettingsCacheTag.php
@@ -4,9 +4,9 @@
 
 use Drupal\Core\Config\ConfigCrudEvent;
 use Drupal\Core\Config\ConfigEvents;
-use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Drupal\Core\Entity\EntityFieldManagerInterface;
 use Drupal\pathauto\AliasTypeManager;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
  * A subscriber to clear fielddefinition cache when saving pathauto settings.
diff --git a/web/modules/pathauto/src/Form/PathautoAdminDelete.php b/web/modules/pathauto/src/Form/PathautoAdminDelete.php
index 2409d38853a74ccde3704bea2cefcdc5f5344598..2a660b238e96804f33a2eba8beb9046027d00754 100644
--- a/web/modules/pathauto/src/Form/PathautoAdminDelete.php
+++ b/web/modules/pathauto/src/Form/PathautoAdminDelete.php
@@ -4,8 +4,8 @@
 
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
-use Drupal\pathauto\AliasTypeManager;
 use Drupal\pathauto\AliasStorageHelperInterface;
+use Drupal\pathauto\AliasTypeManager;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
diff --git a/web/modules/pathauto/src/PathautoGenerator.php b/web/modules/pathauto/src/PathautoGenerator.php
index 04a6ded15c3b9568991db5a2d3dfd61fc2d0b131..5e503592d54fc7d271d8ffd26826d70fa05fbfa2 100644
--- a/web/modules/pathauto/src/PathautoGenerator.php
+++ b/web/modules/pathauto/src/PathautoGenerator.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Entity\EntityMalformedException;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Entity\Exception\UndefinedLinkTemplateException;
 use Drupal\Core\Entity\RevisionableInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
@@ -16,7 +17,6 @@
 use Drupal\Core\StringTranslation\TranslationInterface;
 use Drupal\Core\Utility\Token;
 use Drupal\token\TokenEntityMapperInterface;
-use Drupal\Core\Entity\EntityTypeManagerInterface;
 
 /**
  * Provides methods for generating path aliases.
diff --git a/web/modules/pathauto/src/Plugin/migrate/source/PathautoPattern.php b/web/modules/pathauto/src/Plugin/migrate/source/PathautoPattern.php
index 85618dd3f4d8ae7509b6ff91dc32c51436fddc3a..c30bddec99f360ebbe9b34026e8ccb7894581bc5 100644
--- a/web/modules/pathauto/src/Plugin/migrate/source/PathautoPattern.php
+++ b/web/modules/pathauto/src/Plugin/migrate/source/PathautoPattern.php
@@ -2,8 +2,8 @@
 
 namespace Drupal\pathauto\Plugin\migrate\source;
 
-use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Entity\EntityTypeBundleInfo;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\State\StateInterface;
 use Drupal\migrate\Plugin\MigrationInterface;
 use Drupal\migrate\Row;
diff --git a/web/modules/pathauto/tests/modules/pathauto_custom_punctuation_test/pathauto_custom_punctuation_test.info.yml b/web/modules/pathauto/tests/modules/pathauto_custom_punctuation_test/pathauto_custom_punctuation_test.info.yml
index 115717769465fefd50f71277290a11590af0dd7e..093b519cd47aeb29546b1acf6fcbe03f4cd5d113 100644
--- a/web/modules/pathauto/tests/modules/pathauto_custom_punctuation_test/pathauto_custom_punctuation_test.info.yml
+++ b/web/modules/pathauto/tests/modules/pathauto_custom_punctuation_test/pathauto_custom_punctuation_test.info.yml
@@ -3,7 +3,7 @@ type: module
 description: 'Add some uncommon punctuation to the replacement list.'
 package: Testing
 
-# Information added by Drupal.org packaging script on 2022-08-02
-version: '8.x-1.11'
+# Information added by Drupal.org packaging script on 2023-10-08
+version: '8.x-1.12'
 project: 'pathauto'
-datestamp: 1659472551
+datestamp: 1696776686
diff --git a/web/modules/pathauto/tests/modules/pathauto_string_id_test/pathauto_string_id_test.info.yml b/web/modules/pathauto/tests/modules/pathauto_string_id_test/pathauto_string_id_test.info.yml
index ab3a4ec4b0d2edca780e1fada3fe4c6140941313..76c69f89b68bf60604f50989392ad99bc0861751 100644
--- a/web/modules/pathauto/tests/modules/pathauto_string_id_test/pathauto_string_id_test.info.yml
+++ b/web/modules/pathauto/tests/modules/pathauto_string_id_test/pathauto_string_id_test.info.yml
@@ -5,7 +5,7 @@ package: Testing
 dependencies:
   - token:token
 
-# Information added by Drupal.org packaging script on 2022-08-02
-version: '8.x-1.11'
+# Information added by Drupal.org packaging script on 2023-10-08
+version: '8.x-1.12'
 project: 'pathauto'
-datestamp: 1659472551
+datestamp: 1696776686
diff --git a/web/modules/pathauto/tests/modules/pathauto_views_test/pathauto_views_test.info.yml b/web/modules/pathauto/tests/modules/pathauto_views_test/pathauto_views_test.info.yml
index 43c2b322c68a54c263379afb461200fd37f70a23..9feab74b440e0575d88cb156fd2640ec1ae8f058 100644
--- a/web/modules/pathauto/tests/modules/pathauto_views_test/pathauto_views_test.info.yml
+++ b/web/modules/pathauto/tests/modules/pathauto_views_test/pathauto_views_test.info.yml
@@ -5,7 +5,7 @@ package: Testing
 dependencies:
   - drupal:views
 
-# Information added by Drupal.org packaging script on 2022-08-02
-version: '8.x-1.11'
+# Information added by Drupal.org packaging script on 2023-10-08
+version: '8.x-1.12'
 project: 'pathauto'
-datestamp: 1659472551
+datestamp: 1696776686
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoBulkUpdateTest.php b/web/modules/pathauto/tests/src/Functional/PathautoBulkUpdateTest.php
index 059f38f2769a1c7066d39c209ea980ea144819ac..a7193720b58d26bf48a14a678c85f990f57edd3c 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoBulkUpdateTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoBulkUpdateTest.php
@@ -2,11 +2,10 @@
 
 namespace Drupal\Tests\pathauto\Functional;
 
+use Drupal\Component\Render\FormattableMarkup;
 use Drupal\pathauto\PathautoGeneratorInterface;
 use Drupal\pathauto\PathautoState;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\Component\Render\FormattableMarkup;
-
 
 /**
  * Bulk update functionality tests.
@@ -20,7 +19,7 @@ class PathautoBulkUpdateTest extends BrowserTestBase {
  /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoEnablingEntityTypesTest.php b/web/modules/pathauto/tests/src/Functional/PathautoEnablingEntityTypesTest.php
index 5f736d2497a8d897146f67d1371814d01de2165a..6d762944978ed7f91a74f6b63045f848c9d54ba1 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoEnablingEntityTypesTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoEnablingEntityTypesTest.php
@@ -2,8 +2,8 @@
 
 namespace Drupal\Tests\pathauto\Functional;
 
-use Drupal\Tests\BrowserTestBase;
 use Drupal\comment\Tests\CommentTestTrait;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Tests pathauto settings form.
@@ -19,7 +19,7 @@ class PathautoEnablingEntityTypesTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoMassDeleteTest.php b/web/modules/pathauto/tests/src/Functional/PathautoMassDeleteTest.php
index bab12efc94058f91913e4e69a561c34f2bce3c8e..6142fee4eda50d916e95c910ac7a1487f1031c9b 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoMassDeleteTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoMassDeleteTest.php
@@ -2,9 +2,9 @@
 
 namespace Drupal\Tests\pathauto\Functional;
 
+use Drupal\Component\Render\FormattableMarkup;
 use Drupal\pathauto\PathautoState;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\Component\Render\FormattableMarkup;
 
 /**
  * Mass delete functionality tests.
@@ -18,7 +18,7 @@ class PathautoMassDeleteTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoNodeWebTest.php b/web/modules/pathauto/tests/src/Functional/PathautoNodeWebTest.php
index e81adfb122d4a6a06714ad3838ef598e46adb6de..6748c26db2a3d600298eaf6747df9ea20b5062a4 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoNodeWebTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoNodeWebTest.php
@@ -2,12 +2,11 @@
 
 namespace Drupal\Tests\pathauto\Functional;
 
-use Drupal\pathauto\Entity\PathautoPattern;
+use Drupal\Component\Render\FormattableMarkup;
 use Drupal\node\Entity\Node;
+use Drupal\pathauto\Entity\PathautoPattern;
 use Drupal\pathauto\PathautoState;
 use Drupal\Tests\BrowserTestBase;
-use Drupal\Component\Render\FormattableMarkup;
-
 
 /**
  * Tests pathauto node UI integration.
@@ -21,7 +20,7 @@ class PathautoNodeWebTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoSettingsFormWebTest.php b/web/modules/pathauto/tests/src/Functional/PathautoSettingsFormWebTest.php
index eeb8b3f1599e4b8c2c338f12ee46901c98ffb8ea..40902781413c5e9c9e862048e7bcedda3a42e51d 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoSettingsFormWebTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoSettingsFormWebTest.php
@@ -17,7 +17,7 @@ class PathautoSettingsFormWebTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoTaxonomyWebTest.php b/web/modules/pathauto/tests/src/Functional/PathautoTaxonomyWebTest.php
index b0d0ca4e113d0359ae419216a2bc07087ea0a1f3..8804596d8c3284b92ec6f36792f5f7da0ccc13b3 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoTaxonomyWebTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoTaxonomyWebTest.php
@@ -16,7 +16,7 @@ class PathautoTaxonomyWebTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoTestHelperTrait.php b/web/modules/pathauto/tests/src/Functional/PathautoTestHelperTrait.php
index 6473c859a929956c01d4d552864ebb7a3d58cb09..f98439774d0ee01e31eb1d34cb52d4e315d2f1fa 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoTestHelperTrait.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoTestHelperTrait.php
@@ -7,9 +7,9 @@
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\pathauto\Entity\PathautoPattern;
 use Drupal\pathauto\PathautoPatternInterface;
-use Drupal\taxonomy\VocabularyInterface;
-use Drupal\taxonomy\Entity\Vocabulary;
 use Drupal\taxonomy\Entity\Term;
+use Drupal\taxonomy\Entity\Vocabulary;
+use Drupal\taxonomy\VocabularyInterface;
 use Drupal\Tests\Traits\Core\PathAliasTestTrait;
 
 /**
@@ -65,18 +65,29 @@ protected function addBundleCondition(PathautoPatternInterface $pattern, $entity
         'negate' => FALSE,
         'context_mapping' => [
           $entity_type => $entity_type,
-        ]
+        ],
       ]
     );
   }
 
+  /**
+   * Assert the expected value for a token.
+   */
   public function assertToken($type, $object, $token, $expected) {
     $bubbleable_metadata = new BubbleableMetadata();
     $tokens = \Drupal::token()->generate($type, [$token => $token], [$type => $object], [], $bubbleable_metadata);
     $tokens += [$token => ''];
-    $this->assertSame($tokens[$token], $expected, t("Token value for [@type:@token] was '@actual', expected value '@expected'.", ['@type' => $type, '@token' => $token, '@actual' => $tokens[$token], '@expected' => $expected]));
+    $this->assertSame($tokens[$token], $expected, t("Token value for [@type:@token] was '@actual', expected value '@expected'.", [
+      '@type' => $type,
+      '@token' => $token,
+      '@actual' => $tokens[$token],
+      '@expected' => $expected,
+    ]));
   }
 
+  /**
+   * Create a path alias for an entity.
+   */
   public function saveEntityAlias(EntityInterface $entity, $alias, $langcode = NULL) {
     // By default, use the entity language.
     if (!$langcode) {
@@ -85,6 +96,9 @@ public function saveEntityAlias(EntityInterface $entity, $alias, $langcode = NUL
     return $this->createPathAlias('/' . $entity->toUrl()->getInternalPath(), $alias, $langcode);
   }
 
+  /**
+   * Assert the expected value for an entity path alias.
+   */
   public function assertEntityAlias(EntityInterface $entity, $expected_alias, $langcode = NULL) {
     // By default, use the entity language.
     if (!$langcode) {
@@ -93,10 +107,16 @@ public function assertEntityAlias(EntityInterface $entity, $expected_alias, $lan
     $this->assertAlias('/' . $entity->toUrl()->getInternalPath(), $expected_alias, $langcode);
   }
 
+  /**
+   * Assert that an alias exists for the given entity's internal path.
+   */
   public function assertEntityAliasExists(EntityInterface $entity) {
     return $this->assertAliasExists(['path' => '/' . $entity->toUrl()->getInternalPath()]);
   }
 
+  /**
+   * Assert that the given entity does not have a path alias.
+   */
   public function assertNoEntityAlias(EntityInterface $entity, $langcode = NULL) {
     // By default, use the entity language.
     if (!$langcode) {
@@ -105,6 +125,9 @@ public function assertNoEntityAlias(EntityInterface $entity, $langcode = NULL) {
     $this->assertEntityAlias($entity, '/' . $entity->toUrl()->getInternalPath(), $langcode);
   }
 
+  /**
+   * Assert that no alias exists matching the given entity path/alias.
+   */
   public function assertNoEntityAliasExists(EntityInterface $entity, $alias = NULL) {
     $path = ['path' => '/' . $entity->toUrl()->getInternalPath()];
     if (!empty($alias)) {
@@ -113,6 +136,9 @@ public function assertNoEntityAliasExists(EntityInterface $entity, $alias = NULL
     $this->assertNoAliasExists($path);
   }
 
+  /**
+   * Assert the expected alias for the given source/language.
+   */
   public function assertAlias($source, $expected_alias, $langcode = Language::LANGCODE_NOT_SPECIFIED) {
     \Drupal::service('path_alias.manager')->cacheClear($source);
     $entity_type_manager = \Drupal::entityTypeManager();
@@ -123,26 +149,53 @@ public function assertAlias($source, $expected_alias, $langcode = Language::LANG
       ['%source' => $source, '@language' => $langcode]));
   }
 
+  /**
+   * Assert that an alias exists for the given conditions.
+   */
   public function assertAliasExists($conditions) {
     $path = $this->loadPathAliasByConditions($conditions);
     $this->assertNotEmpty($path, t('Alias with conditions @conditions found.', ['@conditions' => var_export($conditions, TRUE)]));
     return $path;
   }
 
+  /**
+   * Assert that no alias exists for the given conditions.
+   */
   public function assertNoAliasExists($conditions) {
     $alias = $this->loadPathAliasByConditions($conditions);
     $this->assertEmpty($alias, t('Alias with conditions @conditions not found.', ['@conditions' => var_export($conditions, TRUE)]));
   }
 
+  /**
+   * Assert that exactly one alias matches the given conditions.
+   */
+  public function assertAliasIsUnique($conditions) {
+    $storage = \Drupal::entityTypeManager()->getStorage('path_alias');
+    $query = $storage->getQuery()->accessCheck(FALSE);
+    foreach ($conditions as $field => $value) {
+      $query->condition($field, $value);
+    }
+    $entities = $storage->loadMultiple($query->execute());
+
+    return $this->assertCount(1, $entities);
+  }
+
+  /**
+   * Delete all path aliases.
+   */
   public function deleteAllAliases() {
     \Drupal::service('pathauto.alias_storage_helper')->deleteAll();
     \Drupal::service('path_alias.manager')->cacheClear();
   }
 
   /**
+   * Create a new vocabulary.
+   *
    * @param array $values
+   *   Vocabulary properties.
    *
    * @return \Drupal\taxonomy\VocabularyInterface
+   *   The Vocabulary object.
    */
   public function addVocabulary(array $values = []) {
     $name = mb_strtolower($this->randomMachineName(5));
@@ -156,6 +209,9 @@ public function addVocabulary(array $values = []) {
     return $vocabulary;
   }
 
+  /**
+   * Add a new taxonomy term to the given vocabulary.
+   */
   public function addTerm(VocabularyInterface $vocabulary, array $values = []) {
     $values += [
       'name' => mb_strtolower($this->randomMachineName(5)),
@@ -167,6 +223,9 @@ public function addTerm(VocabularyInterface $vocabulary, array $values = []) {
     return $term;
   }
 
+  /**
+   * Helper for testTaxonomyPattern().
+   */
   public function assertEntityPattern($entity_type, $bundle, $langcode, $expected) {
 
     $values = [
@@ -179,9 +238,12 @@ public function assertEntityPattern($entity_type, $bundle, $langcode, $expected)
     $this->assertSame($expected, $pattern->getPattern());
   }
 
+  /**
+   * Load a taxonomy term by name.
+   */
   public function drupalGetTermByName($name, $reset = FALSE) {
     if ($reset) {
-      // @todo - implement cache reset.
+      // @todo implement cache reset.
     }
     $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties(['name' => $name]);
     return !empty($terms) ? reset($terms) : FALSE;
diff --git a/web/modules/pathauto/tests/src/Functional/PathautoUserWebTest.php b/web/modules/pathauto/tests/src/Functional/PathautoUserWebTest.php
index 2f53c59abb7751b57491e3a0fa64e23f017795d0..38b6c7cf7dc3e8224f95907808dcefb6c757a772 100644
--- a/web/modules/pathauto/tests/src/Functional/PathautoUserWebTest.php
+++ b/web/modules/pathauto/tests/src/Functional/PathautoUserWebTest.php
@@ -17,7 +17,7 @@ class PathautoUserWebTest extends BrowserTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
diff --git a/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoLocaleTest.php b/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoLocaleTest.php
index 5677353d2dbe873c0f44238486c52e6a1e17f4b0..cff107fcd38c83c4d837b140f7fc6045a08e33da 100644
--- a/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoLocaleTest.php
+++ b/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoLocaleTest.php
@@ -4,12 +4,10 @@
 
 use Drupal\Core\Language\Language;
 use Drupal\Core\Language\LanguageInterface;
+use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\pathauto\PathautoState;
-use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 use Drupal\Tests\pathauto\Functional\PathautoTestHelperTrait;
-use Drupal\Component\Render\FormattableMarkup;
-
 
 /**
  * Test pathauto functionality with localization and translation.
@@ -23,7 +21,7 @@ class PathautoLocaleTest extends WebDriverTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
@@ -105,8 +103,8 @@ public function testLanguagePatterns() {
       'access content overview',
       'administer languages',
       'translate any entity',
-      'administer content translation'
-
+      'administer content translation',
+      'create content translations'
     ];
     $admin_user = $this->drupalCreateUser($permissions);
     $this->drupalLogin($admin_user);
@@ -127,13 +125,17 @@ public function testLanguagePatterns() {
     $page = $session->getPage();
     $page->fillField('type', 'canonical_entities:node');
     $this->assertSession()->assertWaitOnAjaxRequest();
+    sleep(1);
 
-    $page->fillField('pattern', '/the-articles/[node:title]');
-    $page->fillField('bundles[article]', TRUE);
-    $page->fillField('languages[en]', TRUE);
     $page->fillField('label', 'English articles');
     $this->assertSession()->waitForElementVisible('css', '#edit-label-machine-name-suffix .machine-name-value');
-    $page->pressButton('Save');
+    $edit = [
+      'bundles[article]' => TRUE,
+      'languages[en]' => TRUE,
+      'pattern' => '/the-articles/[node:title]',
+    ];
+    $this->submitForm($edit, 'Save');
+
     $this->assertSession()->pageTextContains('Pattern English articles saved.');
 
     // Create a pattern for French articles.
@@ -141,13 +143,15 @@ public function testLanguagePatterns() {
 
     $page->fillField('type', 'canonical_entities:node');
     $this->assertSession()->assertWaitOnAjaxRequest();
-
-    $page->fillField('pattern', '/les-articles/[node:title]');
-    $page->fillField('bundles[article]', TRUE);
-    $page->fillField('languages[fr]', TRUE);
     $page->fillField('label', 'French articles');
     $this->assertSession()->waitForElementVisible('css', '#edit-label-machine-name-suffix .machine-name-value');
-    $page->pressButton('Save');
+
+    $edit = [
+      'bundles[article]' => TRUE,
+      'languages[fr]' => TRUE,
+      'pattern' => '/les-articles/[node:title]',
+    ];
+    $this->submitForm($edit, 'Save');
     $this->assertSession()->pageTextContains('Pattern French articles saved.');
 
     // Create a node and its translation. Assert aliases.
@@ -157,21 +161,17 @@ public function testLanguagePatterns() {
     ];
     $this->drupalGet('node/add/article');
     $this->submitForm($edit, 'Save');
-    $english_node = $this->drupalGetNodeByTitle('English node');
-    return;
-    $this->assertAlias('/node/' . $english_node->id(), '/the-articles/english-node', 'en');
+    $node = $this->drupalGetNodeByTitle('English node');
+    $this->assertAlias('/node/' . $node->id(), '/the-articles/english-node', 'en');
 
-    $this->drupalGet('node/' . $english_node->id() . '/translations');
+    $this->drupalGet('node/' . $node->id() . '/translations');
     $this->clickLink('Add');
     $edit = [
       'title[0][value]' => 'French node',
     ];
-    $this->drupalGet(NULL);
     $this->submitForm($edit, 'Save (this translation)');
     $this->rebuildContainer();
-    $english_node = $this->drupalGetNodeByTitle('English node');
-    $french_node = $english_node->getTranslation('fr');
-    $this->assertAlias('/node/' . $french_node->id(), '/les-articles/french-node', 'fr');
+    $this->assertAlias('/node/' . $node->id(), '/les-articles/french-node', 'fr');
 
     // Bulk delete and Bulk generate patterns. Assert aliases.
     $this->deleteAllAliases();
@@ -181,9 +181,10 @@ public function testLanguagePatterns() {
     ];
     $this->drupalGet('admin/config/search/path/update_bulk');
     $this->submitForm($edit, 'Update');
+    $this->assertSession()->assertWaitOnAjaxRequest();
     $this->assertSession()->pageTextContains('Generated 2 URL aliases.');
-    $this->assertAlias('/node/' . $english_node->id(), '/the-articles/english-node', 'en');
-    $this->assertAlias('/node/' . $french_node->id(), '/les-articles/french-node', 'fr');
+    $this->assertAlias('/node/' . $node->id(), '/the-articles/english-node', 'en');
+    $this->assertAlias('/node/' . $node->id(), '/les-articles/french-node', 'fr');
   }
 
   /**
diff --git a/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoUiTest.php b/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoUiTest.php
index c6e8b118abdf6a71bd74f90003cf0c4d98fa8a54..6644977f198cbabe6d772f39a4f0ac806ef6bc1b 100644
--- a/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoUiTest.php
+++ b/web/modules/pathauto/tests/src/FunctionalJavascript/PathautoUiTest.php
@@ -2,12 +2,11 @@
 
 namespace Drupal\Tests\pathauto\FunctionalJavascript;
 
+use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Url;
 use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
 use Drupal\pathauto\Entity\PathautoPattern;
 use Drupal\Tests\pathauto\Functional\PathautoTestHelperTrait;
-use Drupal\Component\Render\FormattableMarkup;
-
 
 /**
  * Test basic pathauto functionality.
@@ -21,7 +20,7 @@ class PathautoUiTest extends WebDriverTestBase {
   /**
    * {@inheritdoc}
    */
-  protected $defaultTheme = 'stable';
+  protected $defaultTheme = 'stark';
 
   /**
    * Modules to enable.
@@ -96,10 +95,12 @@ public function testPatternsWorkflow() {
     $this->submitForm($edit, 'Save');
 
     $this->assertSession()->waitForElementVisible('css', '[name="id"]');
-    $edit += [
-      'id' => 'page_pattern',
-    ];
-    $this->submitForm( $edit, 'Save');
+    if (version_compare(\Drupal::VERSION, '10.1', '<')) {
+      $edit += [
+        'id' => 'page_pattern',
+      ];
+      $this->submitForm($edit, 'Save');
+    }
 
     $this->assertSession()->pageTextContains('Path pattern is using the following invalid tokens: [user:name], [term:name].');
     $this->assertSession()->pageTextNotContains('The configuration options have been saved.');
@@ -199,10 +200,17 @@ public function testPatternsWorkflow() {
     $this->drupalGet('/admin/config/search/path/patterns');
     $session->getPage()->find('css', '.dropbutton-toggle > button')->press();
     $this->clickLink('Delete');
-    $address = Url::fromRoute('entity.pathauto_pattern.delete_form', ['pathauto_pattern' => 'page_pattern'], [$destination_query]);
-    $this->assertSession()->addressEquals($address);
-    $this->assertSession()->pageTextContains('This action cannot be undone.');
-    $this->submitForm([], 'Delete');
+    $this->assertSession()->assertWaitOnAjaxRequest();
+    if (version_compare(\Drupal::VERSION, '10.1', '>=')) {
+      $this->assertSession()->pageTextContains('This action cannot be undone.');
+      $this->getSession()->getPage()->find('css', '.ui-dialog-buttonpane')->findButton('Delete')->press();
+      $this->assertSession()->assertWaitOnAjaxRequest();
+    }
+    else {
+      $address = Url::fromRoute('entity.pathauto_pattern.delete_form', ['pathauto_pattern' => 'page_pattern'], [$destination_query]);
+      $this->assertSession()->addressEquals($address);
+      $this->submitForm([], 'Delete');
+    }
     $this->assertSession()->pageTextContains('The pathauto pattern Test has been deleted.');
 
     $this->assertEmpty(PathautoPattern::load('page_pattern'));
diff --git a/web/modules/pathauto/tests/src/Kernel/PathautoEntityWithStringIdTest.php b/web/modules/pathauto/tests/src/Kernel/PathautoEntityWithStringIdTest.php
index 6f4e45d34f481eb87cbfa18080d3d5caad25398c..02891ececf4bd75b273e1b6e617a0fd48739551b 100644
--- a/web/modules/pathauto/tests/src/Kernel/PathautoEntityWithStringIdTest.php
+++ b/web/modules/pathauto/tests/src/Kernel/PathautoEntityWithStringIdTest.php
@@ -6,10 +6,10 @@
 use Drupal\Component\Utility\Crypt;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
 use Drupal\Core\KeyValueStore\KeyValueDatabaseFactory;
-use Drupal\pathauto\PathautoState;
-use Drupal\Tests\pathauto\Functional\PathautoTestHelperTrait;
 use Drupal\KernelTests\KernelTestBase;
+use Drupal\pathauto\PathautoState;
 use Drupal\pathauto_string_id_test\Entity\PathautoStringIdTest;
+use Drupal\Tests\pathauto\Functional\PathautoTestHelperTrait;
 
 /**
  * Tests auto-aliasing of entities that use string IDs.
diff --git a/web/modules/pathauto/tests/src/Kernel/PathautoKernelTest.php b/web/modules/pathauto/tests/src/Kernel/PathautoKernelTest.php
index dd7040542814368907f7fcd4a295718daa2813dd..1307a8c03344d8c08e1519b2a38255f20a022bb0 100644
--- a/web/modules/pathauto/tests/src/Kernel/PathautoKernelTest.php
+++ b/web/modules/pathauto/tests/src/Kernel/PathautoKernelTest.php
@@ -2,23 +2,22 @@
 
 namespace Drupal\Tests\pathauto\Kernel;
 
+use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Component\Utility\Html;
 use Drupal\Core\Language\Language;
 use Drupal\Core\Language\LanguageInterface;
-use Drupal\language\Entity\ConfigurableLanguage;
 use Drupal\field\Entity\FieldConfig;
 use Drupal\field\Entity\FieldStorageConfig;
+use Drupal\KernelTests\KernelTestBase;
+use Drupal\language\Entity\ConfigurableLanguage;
+use Drupal\node\Entity\Node;
 use Drupal\node\Entity\NodeType;
 use Drupal\pathauto\PathautoGeneratorInterface;
 use Drupal\pathauto\PathautoState;
-use Drupal\Tests\pathauto\Functional\PathautoTestHelperTrait;
-use Drupal\KernelTests\KernelTestBase;
 use Drupal\taxonomy\Entity\Term;
 use Drupal\taxonomy\Entity\Vocabulary;
-use Drupal\node\Entity\Node;
+use Drupal\Tests\pathauto\Functional\PathautoTestHelperTrait;
 use Drupal\user\Entity\User;
-use Drupal\Component\Render\FormattableMarkup;
-
 
 /**
  * Unit tests for Pathauto functions.
@@ -29,20 +28,51 @@ class PathautoKernelTest extends KernelTestBase {
 
   use PathautoTestHelperTrait;
 
-  protected static $modules = ['system', 'field', 'text', 'user', 'node', 'path', 'path_alias', 'pathauto', 'pathauto_custom_punctuation_test', 'taxonomy', 'token', 'filter', 'language'];
+  /**
+   * Modules.
+   *
+   * @var string[]
+   */
+  protected static $modules = [
+    'system',
+    'field',
+    'text',
+    'user',
+    'node',
+    'path',
+    'path_alias',
+    'pathauto',
+    'pathauto_custom_punctuation_test',
+    'taxonomy',
+    'token',
+    'filter',
+    'language',
+  ];
 
+  /**
+   * The current user.
+   *
+   * @var \Drupal\user\Entity\UserInterface
+   */
   protected $currentUser;
 
   /**
+   * Node pattern.
+   *
    * @var \Drupal\pathauto\PathautoPatternInterface
    */
   protected $nodePattern;
 
   /**
+   * User pattern.
+   *
    * @var \Drupal\pathauto\PathautoPatternInterface
    */
   protected $userPattern;
 
+  /**
+   * {@inheritdoc}
+   */
   public function setUp(): void {
     parent::setup();
 
@@ -52,7 +82,12 @@ public function setUp(): void {
     if ($this->container->get('entity_type.manager')->hasDefinition('path_alias')) {
       $this->installEntitySchema('path_alias');
     }
-    $this->installConfig(['pathauto', 'taxonomy', 'system', 'node']);
+    $this->installConfig([
+      'pathauto',
+      'taxonomy',
+      'system',
+      'node',
+    ]);
 
     ConfigurableLanguage::createFromLangcode('fr')->save();
 
@@ -98,7 +133,7 @@ public function testPatternLoadByEntity() {
         'negate' => FALSE,
         'context_mapping' => [
           'language' => 'node:langcode:language',
-        ]
+        ],
       ]
     );
 
@@ -275,7 +310,9 @@ public function testPathDeleteMultiple() {
   }
 
   /**
-   * Test the different update actions in \Drupal::service('pathauto.generator')->createEntityAlias().
+   * Test the different update actions in createEntityAlias().
+   *
+   * Tests \Drupal::service('pathauto.generator')->createEntityAlias().
    */
   public function testUpdateActions() {
     $config = $this->config('pathauto.settings');
@@ -302,7 +339,18 @@ public function testUpdateActions() {
     $node->setTitle('Third title');
     $node->save();
     $this->assertEntityAlias($node, '/content/third-title');
-    $this->assertAliasExists(['path' => '/' . $node->toUrl()->getInternalPath(), 'alias' => '/content/second-title']);
+    $this->assertAliasExists([
+      'path' => '/' . $node->toUrl()->getInternalPath(),
+      'alias' => '/content/second-title',
+    ]);
+
+    // Confirm that aliases are not duplicated when entities are re-saved.
+    $node->save();
+    $this->assertEntityAlias($node, '/content/third-title');
+    $this->assertAliasIsUnique([
+      'path' => '/' . $node->toUrl()->getInternalPath(),
+      'alias' => '/content/third-title',
+    ]);
 
     $config->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_DELETE);
     $config->save();
@@ -311,7 +359,10 @@ public function testUpdateActions() {
     $this->assertEntityAlias($node, '/content/fourth-title');
     $this->assertNoAliasExists(['alias' => '/content/third-title']);
     // The older second alias is not deleted yet.
-    $older_path = $this->assertAliasExists(['path' => '/' . $node->toUrl()->getInternalPath(), 'alias' => '/content/second-title']);
+    $older_path = $this->assertAliasExists([
+      'path' => '/' . $node->toUrl()->getInternalPath(),
+      'alias' => '/content/second-title',
+    ]);
     \Drupal::service('entity_type.manager')->getStorage('path_alias')->delete([$older_path]);
 
     $config->set('update_action', PathautoGeneratorInterface::UPDATE_ACTION_NO_NEW);
@@ -334,6 +385,8 @@ public function testUpdateActions() {
   }
 
   /**
+   * Test createEntityAlias().
+   *
    * Test that \Drupal::service('pathauto.generator')->createEntityAlias() will
    * not create an alias for a pattern that does not get any tokens replaced.
    */
@@ -352,7 +405,7 @@ public function testNoTokensNoAlias() {
   }
 
   /**
-   * Test the handling of path vs non-path tokens in pathauto_clean_token_values().
+   * Test path vs non-path tokens in pathauto_clean_token_values().
    */
   public function testPathTokens() {
     $this->createPattern('taxonomy_term', '/[term:parent:url:path]/[term:name]');
@@ -362,7 +415,10 @@ public function testPathTokens() {
     $term1 = $this->addTerm($vocab, ['name' => 'Parent term']);
     $this->assertEntityAlias($term1, '/parent-term');
 
-    $term2 = $this->addTerm($vocab, ['name' => 'Child term', 'parent' => $term1->id()]);
+    $term2 = $this->addTerm($vocab, [
+      'name' => 'Child term',
+      'parent' => $term1->id(),
+    ]);
     $this->assertEntityAlias($term2, '/parent-term/child-term');
 
     $this->saveEntityAlias($term1, '/My Crazy/Alias/');
@@ -381,9 +437,16 @@ public function testParentChildPathTokens() {
     Vocabulary::create(['vid' => 'tags'])->save();
 
     $fieldname = 'a' . mb_strtolower($this->randomMachineName());
-    $field_storage = FieldStorageConfig::create(['entity_type' => 'taxonomy_term', 'field_name' => $fieldname, 'type' => 'string']);
+    $field_storage = FieldStorageConfig::create([
+      'entity_type' => 'taxonomy_term',
+      'field_name' => $fieldname,
+      'type' => 'string',
+    ]);
     $field_storage->save();
-    $field = FieldConfig::create(['field_storage' => $field_storage, 'bundle' => 'tags']);
+    $field = FieldConfig::create([
+      'field_storage' => $field_storage,
+      'bundle' => 'tags',
+    ]);
     $field->save();
 
     $display = \Drupal::service('entity_display.repository')->getViewDisplay('taxonomy_term', 'tags');
@@ -395,11 +458,20 @@ public function testParentChildPathTokens() {
     $this->createPattern('taxonomy_term', '/[term:parents:join-path]/[term:' . $fieldname . ']');
 
     // Start by creating a parent term.
-    $parent = Term::create(['vid' => 'tags', $fieldname => $this->randomMachineName(), 'name' => $this->randomMachineName()]);
+    $parent = Term::create([
+      'vid' => 'tags',
+      $fieldname => $this->randomMachineName(),
+      'name' => $this->randomMachineName(),
+    ]);
     $parent->save();
 
     // Create the child term.
-    $child = Term::create(['vid' => 'tags', $fieldname => $this->randomMachineName(), 'parent' => $parent, 'name' => $this->randomMachineName()]);
+    $child = Term::create([
+      'vid' => 'tags',
+      $fieldname => $this->randomMachineName(),
+      'parent' => $parent,
+      'name' => $this->randomMachineName(),
+    ]);
     $child->save();
     $this->assertEntityAlias($child, '/' . mb_strtolower($parent->getName() . '/' . $child->$fieldname->value));
 
@@ -421,6 +493,9 @@ public function testTaxonomyPattern() {
     $this->assertEntityPattern('taxonomy_term', 'name', Language::LANGCODE_NOT_SPECIFIED, 'bundle');
   }
 
+  /**
+   * Test that aliases matching existing paths are not generated.
+   */
   public function testNoExistingPathAliases() {
     $this->config('pathauto.settings')
       ->set('punctuation.period', PathautoGeneratorInterface::PUNCTUATION_DO_NOTHING)
@@ -455,7 +530,10 @@ public function testNoExistingPathAliases() {
    * Test programmatic entity creation for aliases.
    */
   public function testProgrammaticEntityCreation() {
-    $node = $this->drupalCreateNode(['title' => 'Test node', 'path' => ['pathauto' => TRUE]]);
+    $node = $this->drupalCreateNode([
+      'title' => 'Test node',
+      'path' => ['pathauto' => TRUE],
+    ]);
     $this->assertEntityAlias($node, '/content/test-node');
 
     // Check the case when the pathauto widget is hidden, so it can not populate
@@ -463,12 +541,18 @@ public function testProgrammaticEntityCreation() {
     // \Drupal\path\Plugin\Field\FieldType\PathFieldItemList::computeValue()
     // populates the 'path' field with a 'langcode' property, for example during
     // an AJAX call on the entity form.
-    $node = $this->drupalCreateNode(['title' => 'Test node 2', 'path' => ['langcode' => 'en']]);
+    $node = $this->drupalCreateNode([
+      'title' => 'Test node 2',
+      'path' => ['langcode' => 'en'],
+    ]);
     $this->assertEntityAlias($node, '/content/test-node-2');
 
     $this->createPattern('taxonomy_term', '/[term:vocabulary]/[term:name]');
     $vocabulary = $this->addVocabulary(['name' => 'Tags']);
-    $term = $this->addTerm($vocabulary, ['name' => 'Test term', 'path' => ['pathauto' => TRUE]]);
+    $term = $this->addTerm($vocabulary, [
+      'name' => 'Test term',
+      'path' => ['pathauto' => TRUE],
+    ]);
     $this->assertEntityAlias($term, '/tags/test-term');
 
     $edit['name'] = 'Test user';
@@ -489,12 +573,18 @@ public function testPathAliasUniquifyWordsafe() {
       ->set('max_length', 26)
       ->save();
 
-    $node_1 = $this->drupalCreateNode(['title' => 'thequick brownfox jumpedover thelazydog', 'type' => 'page']);
-    $node_2 = $this->drupalCreateNode(['title' => 'thequick brownfox jumpedover thelazydog', 'type' => 'page']);
+    $node_1 = $this->drupalCreateNode([
+      'title' => 'thequick brownfox jumpedover thelazydog',
+      'type' => 'page',
+    ]);
+    $node_2 = $this->drupalCreateNode([
+      'title' => 'thequick brownfox jumpedover thelazydog',
+      'type' => 'page',
+    ]);
 
     // Check that alias uniquifying is truncating with $wordsafe param set to
     // TRUE.
-    // If it doesn't path alias result would be content/thequick-brownf-0
+    // If it doesn't path alias result would be content/thequick-brownf-0.
     $this->assertEntityAlias($node_1, '/content/thequick-brownfox');
     $this->assertEntityAlias($node_2, '/content/thequick-0');
   }
@@ -554,7 +644,10 @@ public function testSettingChangeInvalidatesCache() {
    * Tests that aliases are only generated for default revisions.
    */
   public function testDefaultRevision() {
-    $node1 = $this->drupalCreateNode(['title' => 'Default revision', 'type' => 'page']);
+    $node1 = $this->drupalCreateNode([
+      'title' => 'Default revision',
+      'type' => 'page',
+    ]);
     $this->assertEntityAlias($node1, '/content/default-revision');
 
     $node1->setNewRevision(TRUE);
@@ -590,7 +683,7 @@ public function testCreateNodeWhileAccessingPath() {
    * @return \Drupal\node\Entity\Node
    *   The created node.
    */
-  protected function drupalCreateNode(array $settings = [] ){
+  protected function drupalCreateNode(array $settings = []) {
     // Populate defaults array.
     $settings += [
       'title' => $this->randomMachineName(8),
diff --git a/web/modules/pathauto/tests/src/Kernel/PathautoTokenTest.php b/web/modules/pathauto/tests/src/Kernel/PathautoTokenTest.php
index f101132d6617950d1fb09fd1154b2d522b9f61d2..faf03cc01961b6fcd8b236e611d488c14288bec2 100644
--- a/web/modules/pathauto/tests/src/Kernel/PathautoTokenTest.php
+++ b/web/modules/pathauto/tests/src/Kernel/PathautoTokenTest.php
@@ -2,9 +2,9 @@
 
 namespace Drupal\Tests\pathauto\Kernel;
 
+use Drupal\Component\Render\FormattableMarkup;
 use Drupal\Core\Render\BubbleableMetadata;
 use Drupal\KernelTests\KernelTestBase;
-use Drupal\Component\Render\FormattableMarkup;
 
 /**
  * Tests tokens provided by Pathauto.
diff --git a/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php b/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php
index e9873f6631ebed8fe3cd1dd0ce36a7fee417154e..74dc82da48e6a6f5f20a4e3002b071b12335fc8f 100644
--- a/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php
+++ b/web/modules/views_autocomplete_filters/src/Controller/ViewsAutocompleteFiltersController.php
@@ -7,6 +7,7 @@
 use Drupal\Component\Utility\Xss;
 use Drupal\Core\Access\AccessResult;
 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
+use Drupal\Core\Entity\EntityRepositoryInterface;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Views;
@@ -26,14 +27,19 @@ class ViewsAutocompleteFiltersController implements ContainerInjectionInterface
    */
   protected $logger;
 
+  /**
+   * @var \Drupal\Core\Entity\EntityRepositoryInterface
+   */
+  protected $entityRepository;
 
   /**
    * ViewsAutocompleteFiltersController constructor.
    *
    * @param \Psr\Log\LoggerInterface $logger
    */
-  public function __construct(LoggerInterface $logger) {
+  public function __construct(LoggerInterface $logger, EntityRepositoryInterface $entityRepository) {
     $this->logger = $logger;
+    $this->entityRepository = $entityRepository;
   }
 
 
@@ -42,7 +48,8 @@ public function __construct(LoggerInterface $logger) {
    */
   public static function create(ContainerInterface $container) {
     return new static(
-      $container->get('logger.factory')->get('views_autocomplete_filters')
+      $container->get('logger.factory')->get('views_autocomplete_filters'),
+      $container->get('entity.repository')
     );
   }
 
@@ -201,11 +208,14 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte
     $use_raw_suggestion = !empty($expose_options['autocomplete_raw_suggestion']);
     $use_raw_dropdown = !empty($expose_options['autocomplete_raw_dropdown']);
 
+    /** @var \Drupal\views\Plugin\views\style\StylePluginBase $style_plugin */
+    $style_plugin = $display_handler->getPlugin('style');
+    /** @var \Drupal\views\Plugin\views\field\FieldHandlerInterface $handler */
+    $fields_handler = $display_handler->getHandlers('field');
+
     $view->row_index = 0;
     foreach ($view->result as $index => $row) {
       $view->row_index = $index;
-      /** @var \Drupal\views\Plugin\views\style\StylePluginBase $style_plugin */
-      $style_plugin = $display_handler->getPlugin('style');
 
       foreach ($field_names as $field_name) {
         $rendered_field = $raw_field = '';
@@ -215,9 +225,26 @@ public function autocomplete(Request $request, $view_name, $view_display, $filte
         }
         // Get the raw field value only if suggestion or dropdown item is in RAW format.
         if ($use_raw_suggestion || $use_raw_dropdown) {
-          $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
-          $entity = $view->result[$index]->_entity->getTranslation($langcode);
-          $raw_field = $entity->$field_name->value;
+          $view_field = $fields_handler[$field_name];
+          // Make sure we get the right entity.
+          $view_entity = NULL;
+          $field_relationship = $view_field->options['relationship'];
+          if ($field_relationship === 'none') {
+            $view_entity = $view->result[$index]->_entity;
+          }
+          elseif (!empty($view->result[$index]->_relationship_entities[$field_relationship])) {
+            $view_entity = $view->result[$index]->_relationship_entities[$field_relationship];
+          }
+          if ($view_entity) {
+            $entity = $this->entityRepository->getTranslationFromContext($view_entity);
+            // Make sure we get the right entity field (value).
+            $real_field_name = $view_field->field;
+            $raw_field = $entity->$real_field_name->value;
+          }
+          // Get the view value, if the filter is not an entity field.
+          else {
+            $raw_field = $style_plugin->getFieldValue($index, $field_name);
+          }
           if (!is_array($raw_field)) {
             $raw_field = [['value' => $raw_field]];
           }
diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersCombine.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersCombine.php
index 2858405b5689645b9dc1569d7759769ba7ee30f5..7203f199bb36f4b3f189c1cbe7ff3eed398a0c4c 100644
--- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersCombine.php
+++ b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersCombine.php
@@ -5,25 +5,16 @@
 use Drupal\views\Plugin\views\filter\Combine;
 
 /**
- * Autocomplete for Combine fields filter which allows to search on multiple
+ * Autocomplete for Combine fields filter which allows searching on multiple
  * fields.
  *
  * @ingroup views_filter_handlers
- *
- * @ViewsFilter("views_autocomplete_filters_combine")
  */
-class ViewsAutocompleteFiltersCombine extends Combine implements ViewsAutocompleteFiltersInterface {
+class ViewsAutocompleteFiltersCombine extends Combine {
 
   // Exposed filter options.
   var $alwaysMultiple = TRUE;
 
   use ViewsAutocompleteFiltersTrait;
 
-  /**
-   * {@inheritdoc}
-   */
-  public function hasAutocompleteFieldSelector() {
-    return FALSE;
-  }
-
 }
diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersInterface.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersInterface.php
deleted file mode 100644
index 34b3f4d7b4f87b88f76f480b312cf84b1398f5e8..0000000000000000000000000000000000000000
--- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersInterface.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Drupal\views_autocomplete_filters\Plugin\views\filter;
-
-/**
- * Define extra methods for Autocomplete filters.
- */
-interface ViewsAutocompleteFiltersInterface {
-
-  /**
-   * Returns of the handler has 'autocomplete_field' selector.
-   *
-   * @return boolean
-   */
-  public function hasAutocompleteFieldSelector();
-
-}
diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiFulltext.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiFulltext.php
index c9dfd86fd1264c2806b77ad204d75a5d0789a4c2..079c368ea14f8738a721beae11e93d5bc823a6c4 100644
--- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiFulltext.php
+++ b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiFulltext.php
@@ -9,21 +9,11 @@
  * search filtering.
  *
  * @ingroup views_filter_handlers
- *
- * @ViewsFilter("views_autocomplete_filters_search_api_fulltext")
  */
-class ViewsAutocompleteFiltersSearchApiFulltext extends SearchApiFulltext implements ViewsAutocompleteFiltersInterface {
+class ViewsAutocompleteFiltersSearchApiFulltext extends SearchApiFulltext {
 
   // Exposed filter options.
   var $alwaysMultiple = TRUE;
 
   use ViewsAutocompleteFiltersTrait;
-
-  /**
-   * {@inheritdoc}
-   */
-  public function hasAutocompleteFieldSelector() {
-    return FALSE;
-  }
-
 }
diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiText.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiText.php
index ac9484ecdc4b3107c2c4944c848538fea04a828d..b521e6719510e0bd18563cd8ac1cd116021035e1 100644
--- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiText.php
+++ b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersSearchApiText.php
@@ -8,10 +8,8 @@
  * Autocomplete for Search API fulltext fields to handle fulltext filtering.
  *
  * @ingroup views_filter_handlers
- *
- * @ViewsFilter("views_autocomplete_filters_search_api_text")
  */
-class ViewsAutocompleteFiltersSearchApiText extends SearchApiText implements ViewsAutocompleteFiltersInterface {
+class ViewsAutocompleteFiltersSearchApiText extends SearchApiText {
 
   // Exposed filter options.
   var $alwaysMultiple = TRUE;
diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersString.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersString.php
index 96e3ba290f2dfa74e81c8a0bc9a391355529d1a4..52cc2eb8412d215b4b18dfd18cf10eb07e7ac1ff 100644
--- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersString.php
+++ b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersString.php
@@ -9,10 +9,8 @@
  * including equality, like, not like, etc.
  *
  * @ingroup views_filter_handlers
- *
- * @ViewsFilter("views_autocomplete_filters_string")
  */
-class ViewsAutocompleteFiltersString extends StringFilter implements ViewsAutocompleteFiltersInterface {
+class ViewsAutocompleteFiltersString extends StringFilter {
 
   // Exposed filter options.
   var $alwaysMultiple = TRUE;
diff --git a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php
index d423cf6cb171f0b1c4a83e8b9709053c3e2330fb..918640c85777043340a96f635b22ea4e300d6870 100644
--- a/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php
+++ b/web/modules/views_autocomplete_filters/src/Plugin/views/filter/ViewsAutocompleteFiltersTrait.php
@@ -9,11 +9,19 @@
  */
 trait ViewsAutocompleteFiltersTrait {
 
+  /**
+   * Add autocomplete options
+   *
+   * @return array
+   *   Returns the options of plugin.
+   */
   public function defineOptions() {
     $options = parent::defineOptions();
 
     $options['expose']['contains']['required'] = ['default' => FALSE, 'bool' => TRUE];
-    $options['expose']['contains'] += [
+
+    // All possible options.
+    $autocomplete_options = [
       'autocomplete_filter' => ['default' => 0],
       'autocomplete_min_chars' => ['default' => 0],
       'autocomplete_items' => ['default' => 10],
@@ -22,10 +30,12 @@ public function defineOptions() {
       'autocomplete_raw_dropdown' => ['default' => TRUE],
       'autocomplete_dependent' => ['default' => FALSE],
     ];
-
-    if (!$this->hasAutocompleteFieldSelector()) {
-      unset($options['expose']['contains']['autocomplete_field']);
-    }
+    // Get the existing options from plugin schema.
+    /** @var \Drupal\Core\Config\TypedConfigManagerInterface $typed_config_manager */
+    $typed_config_manager = \Drupal::service('config.typed');
+    $plugin_schema_exposed_options = $typed_config_manager->getDefinition('views.filter.' . $this->getPluginId())['mapping']['expose']['mapping'];
+    // Add only options defined in the plugin schema.
+    $options['expose']['contains'] += array_intersect_key($autocomplete_options, $plugin_schema_exposed_options);
 
     return $options;
   }
@@ -40,71 +50,88 @@ public function buildOptionsForm(&$form, FormStateInterface $form_state) {
       return;
     }
 
-    $field_options = $this->getFieldOptions();
-    if (empty($this->options['expose']['autocomplete_field']) && !empty($field_options[$this->options['id']])) {
-      $this->options['expose']['autocomplete_field'] = $this->options['id'];
-    }
-
     // Build form elements for the right side of the exposed filter form.
     $states = [
       'visible' => ['
           :input[name="options[expose][autocomplete_filter]"]' => ['checked' => TRUE],
       ],
     ];
-    $form['expose'] += [
-      'autocomplete_filter' => [
-        '#type' => 'checkbox',
-        '#title' => $this->t('Use Autocomplete'),
-        '#default_value' => $this->options['expose']['autocomplete_filter'],
-        '#description' => $this->t('Use Autocomplete for this filter.'),
-      ],
-      'autocomplete_items' => [
+
+    $form['expose']['autocomplete_filter'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Use Autocomplete'),
+      '#default_value' => $this->options['expose']['autocomplete_filter'],
+      '#description' => $this->t('Use Autocomplete for this filter.'),
+    ];
+
+    // Add autocomplete options form elements, only if they are defined.
+    // The elements are visible only if the autocomplete filter is checked.
+    if (array_key_exists('autocomplete_items', $this->options['expose'])) {
+      $form['expose']['autocomplete_items'] = [
         '#type' => 'number',
         '#title' => $this->t('Maximum number of items in Autocomplete'),
         '#default_value' => $this->options['expose']['autocomplete_items'],
         '#description' => $this->t('Enter 0 for no limit.'),
         '#min' => 0,
         '#states' => $states,
-      ],
-      'autocomplete_min_chars' => [
+      ];
+    }
+
+    if (array_key_exists('autocomplete_min_chars', $this->options['expose'])) {
+      $form['expose']['autocomplete_min_chars'] = [
         '#type' => 'number',
         '#title' => $this->t('Minimum number of characters to start filter'),
         '#default_value' => $this->options['expose']['autocomplete_min_chars'],
         '#min' => 0,
         '#states' => $states,
-      ],
-      'autocomplete_dependent' => [
+      ];
+    }
+
+    if (array_key_exists('autocomplete_dependent', $this->options['expose'])) {
+      $form['expose']['autocomplete_dependent'] = [
         '#type' => 'checkbox',
         '#title' => $this->t('Suggestions depend on other filter fields'),
         '#default_value' => $this->options['expose']['autocomplete_dependent'],
         '#description' => $this->t('Autocomplete suggestions will be filtered by other filter fields'),
         '#states' => $states,
-      ],
-      'autocomplete_field' => [
+      ];
+    }
+
+    if (array_key_exists('autocomplete_field', $this->options['expose'])) {
+      $field_options = $this->getFieldOptions();
+      // Get the autocomplete field with same nane if exists.
+      if (empty($this->options['expose']['autocomplete_field']) && !empty($field_options[$this->options['id']])) {
+        $this->options['expose']['autocomplete_field'] = $this->options['id'];
+      }
+
+      $form['expose']['autocomplete_field'] = [
         '#type' => 'select',
         '#title' => $this->t('Field with autocomplete results'),
         '#default_value' => $this->options['expose']['autocomplete_field'],
         '#options' => $field_options,
         '#description' => $this->t('The selected field will be used for drop-down results of the autocompletion. In most cases it should be the same field you use for the filter, and <em>must</em> be included in the field list for the view/display in order to appear here.'),
         '#states' => $states,
-      ],
-      'autocomplete_raw_dropdown' => [
+      ];
+    }
+
+    if (array_key_exists('autocomplete_raw_dropdown', $this->options['expose'])) {
+      $form['expose']['autocomplete_raw_dropdown'] = [
         '#type' => 'checkbox',
         '#title' => $this->t('Unformatted dropdown'),
         '#default_value' => $this->options['expose']['autocomplete_raw_dropdown'],
         '#description' => $this->t('Use unformatted data from database for dropdown list instead of field formatter result. Value will be printed as plain text.'),
         '#states' => $states,
-      ],
-      'autocomplete_raw_suggestion' => [
+      ];
+    }
+
+    if (array_key_exists('autocomplete_raw_suggestion', $this->options['expose'])) {
+      $form['expose']['autocomplete_raw_suggestion'] = [
         '#type' => 'checkbox',
         '#title' => $this->t('Unformatted suggestion'),
         '#default_value' => $this->options['expose']['autocomplete_raw_suggestion'],
         '#description' => $this->t('The same as above, but for suggestion (text appearing inside textfield when item is selected).'),
         '#states' => $states,
-      ],
-    ];
-    if (!$this->hasAutocompleteFieldSelector()) {
-      unset($form['expose']['autocomplete_field']);
+      ];
     }
   }
 
@@ -174,11 +201,4 @@ public function valueForm(&$form, FormStateInterface $form_state) {
     }
   }
 
-  /**
-   * Autocomplete filters should have 'autocomplete_field' selector by default.
-   */
-  public function hasAutocompleteFieldSelector() {
-    return TRUE;
-  }
-
 }
diff --git a/web/modules/views_autocomplete_filters/src/ViewsAutocompleteFiltersInstallHelper.php b/web/modules/views_autocomplete_filters/src/ViewsAutocompleteFiltersInstallHelper.php
new file mode 100644
index 0000000000000000000000000000000000000000..51eaacf05aad00a96ffd8eb52e1d9676abbab7bc
--- /dev/null
+++ b/web/modules/views_autocomplete_filters/src/ViewsAutocompleteFiltersInstallHelper.php
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\views_autocomplete_filters;
+
+use Drupal\Core\Config\CachedStorage;
+use Drupal\Core\Config\ConfigFactoryInterface;
+
+/**
+ * Class ViewsAutocompleteFiltersInstallHelper.
+ */
+class ViewsAutocompleteFiltersInstallHelper {
+
+  /**
+   * Drupal\Core\Config\ConfigFactoryInterface definition.
+   *
+   * @var \Drupal\Core\Config\ConfigFactoryInterface
+   */
+  protected $configFactory;
+
+  /**
+   * Drupal\Core\Config\CachedStorage definition.
+   *
+   * @var \Drupal\Core\Config\CachedStorage
+   */
+  protected CachedStorage $configStorage;
+
+  /**
+   * Constructs a new ViewUnpublishedInstallHelper object.
+   *
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The config factory service.
+   * @param \Drupal\Core\Config\CachedStorage $config_storage
+   *   The config storage service.
+   */
+  public function __construct(ConfigFactoryInterface $config_factory, CachedStorage $config_storage) {
+    $this->configFactory = $config_factory;
+    $this->configStorage = $config_storage;
+  }
+
+  /**
+   * Remove the errant views_autocomplete_filters dependency from Views.
+   */
+  public function removeDependency() {
+
+    $view_names = $this->configStorage->listAll('views.view');
+    foreach ($view_names as $name) {
+      $dependencies = $this->configFactory->get($name)->get('dependencies.module');
+      if (!empty($dependencies) && array_key_exists('views_autocomplete_filters', array_flip($dependencies))) {
+        $dependencies = array_diff($dependencies, ['views_autocomplete_filters']);
+        $this->configFactory
+          ->getEditable($name)
+          ->set('dependencies.module', $dependencies)
+          ->save(TRUE);
+      }
+    }
+  }
+
+}
diff --git a/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml b/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml
index fae94b2489a195101bded244695f9f089fd6e9ef..069f014599387a2809eff40806ce762fdea95f4a 100644
--- a/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml
+++ b/web/modules/views_autocomplete_filters/views_autocomplete_filters.info.yml
@@ -2,14 +2,14 @@ name: Views Autocomplete Filters
 type: module
 description: 'Use Autocomplete for string field filters.'
 package: Views
-core_version_requirement: ^8 || ^9 || ^10
+core_version_requirement: ^9 || ^10
 dependencies:
   - drupal:views
 tags:
   - views
   - utility
 
-# Information added by Drupal.org packaging script on 2023-03-02
-version: '8.x-1.4'
+# Information added by Drupal.org packaging script on 2023-10-09
+version: '8.x-1.6'
 project: 'views_autocomplete_filters'
-datestamp: 1677771871
+datestamp: 1696855918
diff --git a/web/modules/views_autocomplete_filters/views_autocomplete_filters.install b/web/modules/views_autocomplete_filters/views_autocomplete_filters.install
new file mode 100644
index 0000000000000000000000000000000000000000..c3868691ba569917b24f3fe883e31c797713264c
--- /dev/null
+++ b/web/modules/views_autocomplete_filters/views_autocomplete_filters.install
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * @file
+ * Contains install and update functions for views_autocomplete_filters.
+ */
+
+/**
+ * Implements hook_uninstall().
+ */
+function views_autocomplete_filters_uninstall() {
+  // Remove any errant views_autocomplete_filters dependency.
+  Drupal::service('views_autocomplete_filters.install_helper')->removeDependency();
+}
+
+/**
+ * Remove any views_autocomplete_filters dependency that may have been added to views.
+ */
+function views_autocomplete_filters_update_8001() {
+  Drupal::service('views_autocomplete_filters.install_helper')->removeDependency();
+}
diff --git a/web/modules/views_autocomplete_filters/views_autocomplete_filters.services.yml b/web/modules/views_autocomplete_filters/views_autocomplete_filters.services.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0dbfe2874fbcfced2ccc12091e0ea8c8d284da5e
--- /dev/null
+++ b/web/modules/views_autocomplete_filters/views_autocomplete_filters.services.yml
@@ -0,0 +1,4 @@
+services:
+  views_autocomplete_filters.install_helper:
+    class: Drupal\views_autocomplete_filters\ViewsAutocompleteFiltersInstallHelper
+    arguments: ['@config.factory', '@config.storage']
diff --git a/web/modules/views_autocomplete_filters/views_autocomplete_filters.views.inc b/web/modules/views_autocomplete_filters/views_autocomplete_filters.views.inc
index 90534e4bc433bf499b65e5a3c381d46700df3bf5..a86b661ecc56f9313cd9583b498b437b2ad4143e 100644
--- a/web/modules/views_autocomplete_filters/views_autocomplete_filters.views.inc
+++ b/web/modules/views_autocomplete_filters/views_autocomplete_filters.views.inc
@@ -4,28 +4,29 @@
  * Integration with Views.
  */
 
+use Drupal\views_autocomplete_filters\Plugin\views\filter\ViewsAutocompleteFiltersCombine;
+use Drupal\views_autocomplete_filters\Plugin\views\filter\ViewsAutocompleteFiltersSearchApiFulltext;
+use Drupal\views_autocomplete_filters\Plugin\views\filter\ViewsAutocompleteFiltersSearchApiText;
+use Drupal\views_autocomplete_filters\Plugin\views\filter\ViewsAutocompleteFiltersString;
+
 /**
- * Implements hook_views_data_alter().
+ * Implements hook_views_plugins_filter_alter().
  */
-function views_autocomplete_filters_views_data_alter(array &$data) {
-  foreach ($data as $table_name => $table_data) {
-    foreach ($table_data as $field_name => $field_data) {
-      // Extend String handler with autocomplete capabilities.
-      if (isset($field_data['filter']['id']) && $field_data['filter']['id'] == 'string') {
-        $data[$table_name][$field_name]['filter']['id'] = 'views_autocomplete_filters_string';
-      }
-      // Extend Combine filter handler with autocomplete capabilities.
-      if (isset($field_data['filter']['id']) && $field_data['filter']['id'] == 'combine') {
-        $data[$table_name][$field_name]['filter']['id'] = 'views_autocomplete_filters_combine';
-      }
-      // Extend SearchApiText filter handler with autocomplete capabilities.
-      if (isset($field_data['filter']['id']) && $field_data['filter']['id'] == 'search_api_text') {
-        $data[$table_name][$field_name]['filter']['id'] = 'views_autocomplete_filters_search_api_text';
-      }
-      // Extend SearchApiFulltext filter handler with autocomplete capabilities.
-      if (isset($field_data['filter']['id']) && $field_data['filter']['id'] == 'search_api_fulltext') {
-        $data[$table_name][$field_name]['filter']['id'] = 'views_autocomplete_filters_search_api_fulltext';
-      }
-    }
+function views_autocomplete_filters_views_plugins_filter_alter(&$plugins) {
+  // Extend String handler with autocomplete capabilities.
+  if (isset($plugins['string'])) {
+    $plugins['string']['class'] = ViewsAutocompleteFiltersString::class;
+  }
+  // Extend Combine filter handler with autocomplete capabilities.
+  if (isset($plugins['combine'])) {
+    $plugins['combine']['class'] = ViewsAutocompleteFiltersCombine::class;
+  }
+  // Extend SearchApiText filter handler with autocomplete capabilities.
+  if (isset($plugins['search_api_text'])) {
+    $plugins['search_api_text']['class'] = ViewsAutocompleteFiltersSearchApiText::class;
+  }
+  // Extend SearchApiFulltext filter handler with autocomplete capabilities.
+  if (isset($plugins['search_api_fulltext'])) {
+    $plugins['search_api_fulltext']['class'] = ViewsAutocompleteFiltersSearchApiFulltext::class;
   }
 }
diff --git a/web/modules/webform/.gitlab-ci.yml b/web/modules/webform/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ba1df6272af7772cb8eb1e844fdb10cb42d94cfd
--- /dev/null
+++ b/web/modules/webform/.gitlab-ci.yml
@@ -0,0 +1,101 @@
+################
+# DrupalCI GitLabCI template
+#
+# Gitlab-ci.yml to replicate DrupalCI testing for Contrib
+#
+# With thanks to:
+#   * The GitLab Acceleration Initiative participants
+#   * DrupalSpoons
+################
+
+################
+# Guidelines
+#
+# This template is designed to give any Contrib maintainer everything they need to test, without requiring modification. It is also designed to keep up to date with Core Development automatically through the use of include files that can be centrally maintained.
+#
+# However, you can modify this template if you have additional needs for your project.
+################
+
+################
+# Includes
+#
+# Additional configuration can be provided through includes.
+# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include.
+#
+# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml
+# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values
+################
+
+include:
+  ################
+  # DrupalCI includes:
+  # As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
+  # View these include files at https://git.drupalcode.org/project/gitlab_templates/
+  ################
+  - project: $_GITLAB_TEMPLATES_REPO
+    ref: $_GITLAB_TEMPLATES_REF
+    file:
+      - '/includes/include.drupalci.main.yml'
+      - '/includes/include.drupalci.variables.yml'
+      - '/includes/include.drupalci.workflows.yml'
+
+################
+# Pipeline configuration variables
+#
+# These are the variables provided to the Run Pipeline form that a user may want to override.
+#
+# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/1.0.x/includes/include.drupalci.variables.yml
+################
+# variables:
+#   SKIP_ESLINT: '1'
+
+variables:
+  _TARGET_PHP: "8.1"
+  _TARGET_CORE: "10.1.3"
+  SYMFONY_DEPRECATIONS_HELPER: disabled
+
+###################################################################################
+#
+#                                        *
+#                                       /(
+#                                      ((((,
+#                                    /(((((((
+#                                   ((((((((((*
+#                                ,(((((((((((((((
+#                              ,(((((((((((((((((((
+#                            ((((((((((((((((((((((((*
+#                         *(((((((((((((((((((((((((((((
+#                       ((((((((((((((((((((((((((((((((((*
+#                    *((((((((((((((((((  .((((((((((((((((((
+#                  ((((((((((((((((((.       /(((((((((((((((((*
+#                /(((((((((((((((((            .(((((((((((((((((,
+#             ,((((((((((((((((((                 ((((((((((((((((((
+#           .((((((((((((((((((((                   .(((((((((((((((((
+#          (((((((((((((((((((((((                     ((((((((((((((((/
+#        (((((((((((((((((((((((((((/                    ,(((((((((((((((*
+#      .((((((((((((((/  /(((((((((((((.                   ,(((((((((((((((
+#     *((((((((((((((      ,(((((((((((((/                   *((((((((((((((.
+#    ((((((((((((((,          /(((((((((((((.                  ((((((((((((((,
+#   (((((((((((((/              ,(((((((((((((*                 ,(((((((((((((,
+#  *(((((((((((((                .(((((((((((((((                ,(((((((((((((
+#  ((((((((((((/                /((((((((((((((((((.              ,((((((((((((/
+# (((((((((((((              *(((((((((((((((((((((((*             *((((((((((((
+# (((((((((((((            ,(((((((((((((..(((((((((((((           *((((((((((((
+# ((((((((((((,          /((((((((((((*      /((((((((((((/         ((((((((((((
+# (((((((((((((        /((((((((((((/          (((((((((((((*       ((((((((((((
+# (((((((((((((/     /((((((((((((               ,((((((((((((,    *((((((((((((
+#  ((((((((((((((  *(((((((((((/                   *((((((((((((.  ((((((((((((/
+#  *((((((((((((((((((((((((((,                      /(((((((((((((((((((((((((
+#   (((((((((((((((((((((((((                         ((((((((((((((((((((((((,
+#   .(((((((((((((((((((((((/                         ,(((((((((((((((((((((((
+#     ((((((((((((((((((((((/                         ,(((((((((((((((((((((/
+#      *(((((((((((((((((((((                         (((((((((((((((((((((,
+#       ,(((((((((((((((((((((,                      ((((((((((((((((((((/
+#         ,(((((((((((((((((((((*                  /((((((((((((((((((((
+#            ((((((((((((((((((((((,           ,/((((((((((((((((((((,
+#              ,(((((((((((((((((((((((((((((((((((((((((((((((((((
+#                 .(((((((((((((((((((((((((((((((((((((((((((((
+#                     .((((((((((((((((((((((((((((((((((((,.
+#                          .,(((((((((((((((((((((((((.
+#
+###################################################################################
diff --git a/web/modules/webform/composer.json b/web/modules/webform/composer.json
index 08a7f6faba1f9028e6e9b37a19d666066b7ac195..60abed845f4972c22f8192d2c36e8495de694324 100644
--- a/web/modules/webform/composer.json
+++ b/web/modules/webform/composer.json
@@ -47,7 +47,7 @@
     "drupal/hal" : "1 - 2",
     "drupal/jquery_ui": "1.x-dev",
     "drupal/jquery_ui_checkboxradio": "2.x-dev",
-    "drupal/jquery_ui_datepicker": "1.x-dev",
+    "drupal/jquery_ui_datepicker": "2.x-dev",
     "drupal/mailsystem": "4.x-dev",
     "drupal/metatag": "1.x-dev",
     "drupal/paragraphs": "1.x-dev",
diff --git a/web/modules/webform/config/optional/filter.format.webform_default.yml b/web/modules/webform/config/optional/filter.format.webform_default.yml
index ed11947532d26692b47f2a087daaf504c77af5d0..4c34722549f77171082fd4b5672310757a2eddd6 100644
--- a/web/modules/webform/config/optional/filter.format.webform_default.yml
+++ b/web/modules/webform/config/optional/filter.format.webform_default.yml
@@ -1,3 +1,4 @@
+uuid: null
 langcode: en
 status: true
 dependencies:
diff --git a/web/modules/webform/config/schema/webform.plugin.handler.schema.yml b/web/modules/webform/config/schema/webform.plugin.handler.schema.yml
index 2943b98607df7660768effa25a515e50b124edcb..852cc61aa1007dcb9cd39ba5fcab7949497528c6 100644
--- a/web/modules/webform/config/schema/webform.plugin.handler.schema.yml
+++ b/web/modules/webform/config/schema/webform.plugin.handler.schema.yml
@@ -230,5 +230,5 @@ webform.handler.settings:
   label: Settings
   mapping:
     debug:
-      type: string
+      type: boolean
       label: 'Enable debugging'
diff --git a/web/modules/webform/css/webform.filter.css b/web/modules/webform/css/webform.filter.css
index 81af640092017c4727f19be3f0d11ed9d26d8375..36af1c8be8edb9b9b49361ec720444954f44c312 100644
--- a/web/modules/webform/css/webform.filter.css
+++ b/web/modules/webform/css/webform.filter.css
@@ -51,6 +51,13 @@
   display: inline-block;
 }
 
+.webform-form-filter input[type="search"]::-webkit-search-decoration,
+.webform-form-filter input[type="search"]::-webkit-search-cancel-button,
+.webform-form-filter input[type="search"]::-webkit-search-results-button,
+.webform-form-filter input[type="search"]::-webkit-search-results-decoration {
+  display: none;
+}
+
 .webform-form-filter input.webform-form-filter-reset {
   position: absolute;
   top: 0;
diff --git a/web/modules/webform/css/webform.form.css b/web/modules/webform/css/webform.form.css
index a6712df01a275a69f5e1cb749850e6f6e713587e..1ffb152ff3b2b3b442ea3194e593b7572f4d1bb5 100644
--- a/web/modules/webform/css/webform.form.css
+++ b/web/modules/webform/css/webform.form.css
@@ -136,7 +136,7 @@ html.js .js-webform-visually-hidden[style*="display: none"] {
 .webform-readonly input[type="time"],
 .webform-readonly input[type="url"],
 .webform-readonly textarea {
-  color: #717171;
+  color: #6B6B6B;
   border-color: #bbb;
   background: #ededed;
 }
diff --git a/web/modules/webform/css/webform.theme.claro.css b/web/modules/webform/css/webform.theme.claro.css
index 43b14187a0ed6e7ba98c5c240b2649bbea05a6bc..bcf1b330f580fa9c221a9a6200f4864a5a2642da 100644
--- a/web/modules/webform/css/webform.theme.claro.css
+++ b/web/modules/webform/css/webform.theme.claro.css
@@ -55,7 +55,7 @@ html.js .webform-message--close .webform-message__link:active {
  * @see webform.promotions.css
  * @see claro/css/src/components/messages.css
  */
-.webform-message .messages.messages--webform {
+div.webform-message .messages.messages--webform {
   box-sizing: border-box;
   margin-bottom: 1rem;
   padding: 1.5rem 1.5rem 2rem -webkit-calc(1.5rem - 5px);
@@ -69,7 +69,7 @@ html.js .webform-message--close .webform-message__link:active {
   box-shadow: none;
 }
 
-[dir="rtl"] .webform-message .messages.messages--webform {
+[dir="rtl"] div.webform-message .messages.messages--webform {
   padding-right: -webkit-calc(1.5rem - 5px);
   padding-right: calc(1.5rem - 5px);
   padding-left: 1.5rem;
@@ -168,6 +168,15 @@ table.webform-states-table td {
 
 table.webform-states-table td.webform-states-table--operator > .form-item > .form-element {
   width: auto;
+  min-width: inherit;
+}
+
+table.webform-states-table td.webform-states-table--selector > .form-item > .form-element--type-select {
+  width: 100%;
+}
+
+table.webform-states-table td.webform-states-table--condition > .form-item > .form-element--type-select {
+  width: 5em;
 }
 
 /*****************************************************************************   */
diff --git a/web/modules/webform/includes/webform.theme.inc b/web/modules/webform/includes/webform.theme.inc
index 3133c241fae2e56da7213b01c2abc4ea83da551a..b52f5a58196e797ae197f45cdab06bd8e17760f8 100644
--- a/web/modules/webform/includes/webform.theme.inc
+++ b/web/modules/webform/includes/webform.theme.inc
@@ -692,7 +692,9 @@ function webform_preprocess_file_link(&$variables) {
   }
 
   // Add file size variable to Claro theme.
-  if (empty($variables['file_size']) && \Drupal::service('webform.theme_manager')->isActiveTheme('claro')) {
+  if (empty($variables['file_size'])
+    && $file->getSize()
+    && \Drupal::service('webform.theme_manager')->isActiveTheme('claro')) {
     $variables['file_size'] = format_size($file->getSize(), \Drupal::languageManager()->getCurrentLanguage()->getId());
   }
 }
diff --git a/web/modules/webform/js/webform.tooltip.js b/web/modules/webform/js/webform.tooltip.js
index 189ffe6afe74bd05ba15c71eb3a4896fa93408ec..9d30c12d29907b006ac32e8663a6fa05b66e1bd3 100644
--- a/web/modules/webform/js/webform.tooltip.js
+++ b/web/modules/webform/js/webform.tooltip.js
@@ -37,12 +37,16 @@
         var $element = $(this);
         var $description;
         if ($element.is('fieldset')) {
-          $description = $element.find('> .fieldset-wrapper > .description > .webform-element-description.visually-hidden');
+          $description = $element.find('> .fieldset-wrapper > .description > .webform-element-description.visually-hidden, > .fieldset__wrapper > .fieldset__suffix > .description.visually-hidden');
         }
         else {
           $description = $element.find('> .description > .webform-element-description.visually-hidden');
         }
 
+        if (!$description.length) {
+          return;
+        }
+
         var options = $.extend({
           content: $description.html(),
           allowHTML: true
diff --git a/web/modules/webform/modules/webform_access/tests/src/Functional/WebformAccessTest.php b/web/modules/webform/modules/webform_access/tests/src/Functional/WebformAccessTest.php
index fb3127b341597d4b62c8535e3e70cb4629edc944..bcc484fe910c29471517d2ed489f319f5503bea9 100644
--- a/web/modules/webform/modules/webform_access/tests/src/Functional/WebformAccessTest.php
+++ b/web/modules/webform/modules/webform_access/tests/src/Functional/WebformAccessTest.php
@@ -92,6 +92,10 @@ public function testWebformAccess() {
       'default_value_input[webform][0][settings][default_data]' => 'test: test',
       'default_value_input[webform][0][settings][webform_access_group][]' => 'manager',
     ];
+    // @todo Remove once Drupal 10.1.x is only supported.
+    if (floatval(\Drupal::VERSION) >= 10.1) {
+      $edit['set_default_value'] = TRUE;
+    }
     $this->submitForm($edit, 'Save settings');
     $this->drupalGet('/node/add/webform');
     $this->assertTrue($assert_session->optionExists('webform[0][settings][webform_access_group][]', 'manager')->hasAttribute('selected'));
diff --git a/web/modules/webform/modules/webform_access/webform_access.info.yml b/web/modules/webform/modules/webform_access/webform_access.info.yml
index 86bad4257f9e1a962f0b407ef28906952b4deb92..373c0c852886965395197250eff66938118de20f 100644
--- a/web/modules/webform/modules/webform_access/webform_access.info.yml
+++ b/web/modules/webform/modules/webform_access/webform_access.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_node'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_attachment/src/Element/WebformAttachmentToken.php b/web/modules/webform/modules/webform_attachment/src/Element/WebformAttachmentToken.php
index b7dd1d75e57a0523a8956754c9ff9efd53bf1480..8a5acc2a2709db12677b9155af4c0c15abd92cbc 100644
--- a/web/modules/webform/modules/webform_attachment/src/Element/WebformAttachmentToken.php
+++ b/web/modules/webform/modules/webform_attachment/src/Element/WebformAttachmentToken.php
@@ -26,7 +26,8 @@ public function getInfo() {
   public static function getFileContent(array $element, WebformSubmissionInterface $webform_submission) {
     /** @var \Drupal\webform\WebformTokenManagerInterface $token_manager */
     $token_manager = \Drupal::service('webform.token_manager');
-    $content = $token_manager->replace($element['#template'], $webform_submission);
+    $template = $element['#template'] ?? '';
+    $content = $token_manager->replace($template, $webform_submission);
     return (!empty($element['#trim'])) ? trim($content) : $content;
   }
 
diff --git a/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml b/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml
index 2410d4e17b6bd085e439f5d1563435a64c5629b8..1d995fbefeb106376dc8a8167f6b19411988bea0 100644
--- a/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml
+++ b/web/modules/webform/modules/webform_attachment/tests/modules/webform_attachment_test/webform_attachment_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_attachment'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml b/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml
index c73297f60b8406684842e0155b24d8dc72834864..0a8d893df2db08bf9f9de06a68feb4d3155e936d 100644
--- a/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml
+++ b/web/modules/webform/modules/webform_attachment/webform_attachment.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml b/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml
index ad73f7aa249a466ddcbb72bd6f8241c7b97c11b9..1cc643f436e1c59d51aeac66e79aa12e3b78f8b5 100644
--- a/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml
+++ b/web/modules/webform/modules/webform_bootstrap/tests/modules/webform_bootstrap_test_module/webform_bootstrap_test_module.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_bootstrap'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml b/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml
index 0f27d4567f81eba7fb6ad6660f390698e9ca05c2..4e284fc3f3f068af02379f9494dc71f31bf8e74a 100644
--- a/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml
+++ b/web/modules/webform/modules/webform_bootstrap/tests/themes/webform_bootstrap_test_theme/webform_bootstrap_test_theme.info.yml
@@ -22,7 +22,7 @@ regions:
 libraries:
   - 'webform_bootstrap_test_theme/global-styling'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml b/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml
index 57fd85d95c8f8bb491cc114320439b03b0c84bc1..25b2467a57c92975196f463b22fa663ccbce7154 100644
--- a/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml
+++ b/web/modules/webform/modules/webform_bootstrap/webform_bootstrap.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml b/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml
index ef5334bfde9f64d871bd590da56cbb77b2c941c1..155cb2f666e67205bd53c9b6bf8996dfe65c24f3 100644
--- a/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml
+++ b/web/modules/webform/modules/webform_cards/tests/modules/webform_cards_test/webform_cards_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_cards'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php
index 0dd55d5428d977ef5c883b7fedccadba10f6edf3..b94e990fab88e1eb98eff11b979c6291eb8d9653 100644
--- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php
+++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsAutoForwardJavaScriptTest.php
@@ -64,9 +64,10 @@ public function testAutoForward() {
     $session->executeScript('jQuery("#edit-radios-multiple-1-one, #edit-radios-multiple-1-two").mouseup();');
 
     // Check that the form can be submitted.
-    $page->pressButton('edit-submit');
-    $assert_session->pageTextContains('New submission added to Test: Webform: Cards auto-forward.');
-
+    // @todo Determine why the below error is being thrown.
+    // WebDriver\Exception\CurlExec: Curl error thrown for http POST
+    // $page->pressButton('edit-submit');
+    // $assert_session->pageTextContains('New submission added to Test: Webform: Cards auto-forward.');
     /* ********************************************************************** */
 
     $this->drupalGet('/webform/test_cards_auto_forward_hide');
diff --git a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php
index 9006b668609330418b7fac552b966f0a6b0ce3e3..1068c2948648f32aa429f3e08d59ae14d65d49e5 100644
--- a/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php
+++ b/web/modules/webform/modules/webform_cards/tests/src/FunctionalJavaScript/WebformCardsValidationJavaScriptTest.php
@@ -44,7 +44,7 @@ public function testValidation() {
     $this->assertElementNotVisible('#edit-cards-prev');
     $this->assertElementNotVisible('#edit-cards-next');
     $this->assertElementVisible('#edit-submit');
-    $assert_session->responseContains('<strong>The email address <em class="placeholder">{email_multiple not valid}</em> is not valid.</strong>');
+    $assert_session->responseContains('The email address <em class="placeholder">{email_multiple not valid}</em> is not valid.');
   }
 
 }
diff --git a/web/modules/webform/modules/webform_cards/webform_cards.info.yml b/web/modules/webform/modules/webform_cards/webform_cards.info.yml
index 5ad903c31a563a3415f89d2c1e13bd136cc7ff22..707667d59a56aea8229285157f86075f7f0a80de 100644
--- a/web/modules/webform/modules/webform_cards/webform_cards.info.yml
+++ b/web/modules/webform/modules/webform_cards/webform_cards.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'webform:webform_clientside_validation'
   - 'drupal:inline_form_errors'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml b/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml
index f2e56d26af9458422f2179520da5e3d6bffc3d4b..bc105bad6ded9a1190e2d2fb05dfa978aae439f8 100644
--- a/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml
+++ b/web/modules/webform/modules/webform_clientside_validation/tests/modules/webform_clientside_validation_test/webform_clientside_validation_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_clientside_validation'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml b/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml
index c792b1b01e97f58333a0435598c69ba0ae8bfdfd..505589c5f56bc30c7be28f97d8112b9436a450f7 100644
--- a/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml
+++ b/web/modules/webform/modules/webform_clientside_validation/webform_clientside_validation.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'clientside_validation:clientside_validation'
   - 'clientside_validation:clientside_validation_jquery'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml
index 14dbe33502d506fa40bd4554817e62364cdadd5c..9fb36c38b128e0395a5276f46733334b66d432c4 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_application_evaluation/webform_demo_application_evaluation.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_node'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/install/webform.webform.demo_event_registration.yml b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/install/webform.webform.demo_event_registration.yml
index 570603183a1d55f5672bb02f0c52c0c30e0cf6e3..46743b6ee02bb81e767292b3af443676eac2f68c 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/install/webform.webform.demo_event_registration.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/config/install/webform.webform.demo_event_registration.yml
@@ -331,7 +331,7 @@ handlers:
       confirmation_url: ''
       confirmation_title: ''
       confirmation_message: ''
-      debug: ''
+      debug: false
       entity_limit_total: '[webform_submission:node:field_webform_entity_limit_total]'
   teeshirt_options_limits:
     id: options_limit
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml
index 64df24bebe96273600e64806aba7181801ec4d2f..e0e21e0d887d3fbdfb3accc9eec3ffd84c247daf 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_event_registration/webform_demo_event_registration.info.yml
@@ -13,7 +13,7 @@ dependencies:
   - 'webform:webform_scheduled_email'
   - 'webform:webform_share'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml b/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml
index 5eb2a01e78adf6a4b550e224409d1c8575d1cd7a..4b9fd7b69d70a1421b1cafd519610ddaf7e11f6e 100644
--- a/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml
+++ b/web/modules/webform/modules/webform_demo/webform_demo_region_contact/webform_demo_region_contact.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'webform:webform_node'
   - 'webform:webform_access'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_devel/webform_devel.info.yml b/web/modules/webform/modules/webform_devel/webform_devel.info.yml
index f6b6266e4ab3c7c73d4d6a8ef4fcaa0c79a1c4fc..e182ce21f41ef60f1795d7a663e73859b618f373 100644
--- a/web/modules/webform/modules/webform_devel/webform_devel.info.yml
+++ b/web/modules/webform/modules/webform_devel/webform_devel.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'devel:devel'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml b/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml
index f07b073c4fba3e6d592050fda71bd5ad93a0f76f..c517085e5dc14b2f91451095dbdb4e2a43b88383 100644
--- a/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml
+++ b/web/modules/webform/modules/webform_entity_print/tests/modules/webform_entity_print_test/webform_entity_print_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_entity_print'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml b/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml
index 4a615a62337d4cef25b5eee82df5f4a7dc05065d..f37a2c8e4278a1bf9a5bcf4bd0759a3b1c1c3f76 100644
--- a/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml
+++ b/web/modules/webform/modules/webform_entity_print/webform_entity_print.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'entity_print:entity_print'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml b/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml
index bb1fdf7225016330486a5db173d3cbad43c2157e..aeac6119c91309b6f961c04fc09fdd83607a998e 100644
--- a/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml
+++ b/web/modules/webform/modules/webform_entity_print_attachment/tests/modules/webform_entity_print_attachment_test/webform_entity_print_attachment_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_entity_print_attachment'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml b/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml
index f45182179954aa96170a1340d44d72ee2c6d7c86..b9f970a8b67a010a0a35f7cb009569db40045979 100644
--- a/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml
+++ b/web/modules/webform/modules/webform_entity_print_attachment/webform_entity_print_attachment.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform_attachment'
   - 'webform:webform_entity_print'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml b/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml
index a9ca3a3962357ed88becb3af5b0fcc2067680c61..82adaaa128a223672eeeae7feeb36b21adf52d08 100644
--- a/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml
+++ b/web/modules/webform/modules/webform_example_composite/webform_example_composite.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_custom_form/src/Form/WebformExampleCustomFormSettingsForm.php b/web/modules/webform/modules/webform_example_custom_form/src/Form/WebformExampleCustomFormSettingsForm.php
index a272363bc5e0573c815f1de0fa62edb4c9b9fe89..bce6343beb806691ef3d4d2d7a9ca654d1260f5e 100644
--- a/web/modules/webform/modules/webform_example_custom_form/src/Form/WebformExampleCustomFormSettingsForm.php
+++ b/web/modules/webform/modules/webform_example_custom_form/src/Form/WebformExampleCustomFormSettingsForm.php
@@ -229,15 +229,15 @@ public function buildForm(array $form, FormStateInterface $form_state) {
       '#images' => [
         'kitten_1' => [
           'text' => 'Cute Kitten 1',
-          'src' => 'http://placekitten.com/220/200',
+          'src' => 'https://placekitten.com/220/200',
         ],
         'kitten_2' => [
           'text' => 'Cute Kitten 2',
-          'src' => 'http://placekitten.com/180/200',
+          'src' => 'https://placekitten.com/180/200',
         ],
         'kitten_3' => [
           'text' => 'Cute Kitten 3',
-          'src' => 'http://placekitten.com/130/200',
+          'src' => 'https://placekitten.com/130/200',
         ],
       ],
       '#default_value' => $config->get('webform_image_select'),
diff --git a/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml b/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml
index 888a91e7651c7db34f9e1477d7cf01e86b98b452..61f49632711450c4c26388f28a8fdebabfb27c03 100644
--- a/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml
+++ b/web/modules/webform/modules/webform_example_custom_form/webform_example_custom_form.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_devel'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml b/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml
index b06d4ea3ba25f8b09423adae3ad6b07f2c996b80..6878473d34e979bcad76d52bd3345edf62a8cb65 100644
--- a/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml
+++ b/web/modules/webform/modules/webform_example_element/webform_example_element.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml
index 03523fda7d86254cb4362e5d5d12b2fdbb6286b5..d1d66f38674513933f82626ff313adb2de959aec 100644
--- a/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml
+++ b/web/modules/webform/modules/webform_example_element_properties/webform_example_element_properties.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_ui'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml b/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml
index 738cf92390c8517671f7150cfe435acbd749d6bb..c4365d3869c32156718809292ce8e3d07e0a926e 100644
--- a/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml
+++ b/web/modules/webform/modules/webform_example_handler/webform_example_handler.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml b/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml
index cd530eea466bf719b59f1e01d854c38f6f576317..d95f6b5551d3fa90a1329ba05904e5ba1f6eadcf 100644
--- a/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml
+++ b/web/modules/webform/modules/webform_example_remote_post/webform_example_remote_post.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'token:token'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml b/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml
index dee0f9123398daafb7bed3bb26bd40932a7d9bd3..c2755d3c098f5e0a9e3c326f50591749a2b4a1df 100644
--- a/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml
+++ b/web/modules/webform/modules/webform_example_variant/webform_example_variant.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_examples/webform_examples.info.yml b/web/modules/webform/modules/webform_examples/webform_examples.info.yml
index 109d1e2328bd84e7bff172e8bcf1d4519668c13e..81000389b8c8810029cea6c64c3e462a5fdbbe90 100644
--- a/web/modules/webform/modules/webform_examples/webform_examples.info.yml
+++ b/web/modules/webform/modules/webform_examples/webform_examples.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml b/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml
index 39ac67db58529c33066b48ec9d56a5a06b21ef7b..fe42a77b7fad781bb673ae3c0be9e4e72d51a4ff 100644
--- a/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml
+++ b/web/modules/webform/modules/webform_examples_accessibility/webform_examples_accessibility.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'drupal:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml b/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml
index 3f5ea59ad3ad3fb26007f38cb43f68c681ea0bc4..a5a26958b211f9e7705365ee1fcaf091c03505e2 100644
--- a/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml
+++ b/web/modules/webform/modules/webform_icheck/tests/modules/webform_icheck_test/webform_icheck_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_icheck'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml b/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml
index d340f9433e1e8b0bb5d9f4d003ab341d37597b80..47a3995d354ea71fa896a460a1f6ed02f29ddf2b 100644
--- a/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml
+++ b/web/modules/webform/modules/webform_icheck/webform_icheck.info.yml
@@ -8,7 +8,7 @@ lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequentl
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml
index 7e69dfc92c8a96af6c6e0652b285567c3f3271db..35d6d2ed435db633c65dade11566405ea1ddcc47 100644
--- a/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml
+++ b/web/modules/webform/modules/webform_image_select/tests/modules/webform_image_select_test/webform_image_select_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_image_select'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml b/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml
index 358f6d72108ddc9606fa8ca67ea31876f3747428..8d3406d0c224b059adb30ab31dd2479eff0e0563 100644
--- a/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml
+++ b/web/modules/webform/modules/webform_image_select/webform_image_select.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml b/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml
index 637b5f35142ee95ea262934194b964245d19784b..51d59caa001337330932efd46e99b224fee5b8b9 100644
--- a/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml
+++ b/web/modules/webform/modules/webform_jqueryui_buttons/tests/modules/webform_jqueryui_buttons_test/webform_jqueryui_buttons_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_jqueryui_buttons'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml
index 8363a573479b542fc9af7b3f49f10746d3d4cd24..1fceecbff56fc01fb37fc2c5d6f6609761dbe0bc 100644
--- a/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml
+++ b/web/modules/webform/modules/webform_jqueryui_buttons/webform_jqueryui_buttons.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'webform:webform'
   - 'jquery_ui_checkboxradio:jquery_ui_checkboxradio'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml b/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml
index 759baa190ab2e29d860807ca863e0241f5c0ab0c..7c0e4eb2dbbf1288c46e5682e9843b3c33f55bf0 100644
--- a/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml
+++ b/web/modules/webform/modules/webform_jqueryui_datepicker/tests/modules/webform_jqueryui_datepicker_test/webform_jqueryui_datepicker_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_jqueryui_datepicker'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml b/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml
index 2a9e206883fcadb392f0746d5230cdf63ff22d29..126d88ffad73daf99e1cfac059bf91142753d597 100644
--- a/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml
+++ b/web/modules/webform/modules/webform_jqueryui_datepicker/webform_jqueryui_datepicker.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'jquery_ui_datepicker:jquery_ui_datepicker'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_location_geocomplete/src/Plugin/WebformElement/WebformLocationGeocomplete.php b/web/modules/webform/modules/webform_location_geocomplete/src/Plugin/WebformElement/WebformLocationGeocomplete.php
index 748c3b934caa4d995a2d0c91f6120875177f4e13..8ca2e93313898565579c275085a1ee6df0a59a56 100644
--- a/web/modules/webform/modules/webform_location_geocomplete/src/Plugin/WebformElement/WebformLocationGeocomplete.php
+++ b/web/modules/webform/modules/webform_location_geocomplete/src/Plugin/WebformElement/WebformLocationGeocomplete.php
@@ -60,7 +60,7 @@ protected function formatHtmlItem(array $element, WebformSubmissionInterface $we
 
     $format = $this->getItemFormat($element);
     if ($format === 'map') {
-      $google_map_url = UrlGenerator::fromUri('http://maps.google.com/', ['query' => ['q' => $value['value']]]);
+      $google_map_url = UrlGenerator::fromUri('https://maps.google.com/', ['query' => ['q' => $value['value']]]);
 
       $location = $value['location'];
       $key = $element['#api_key'] ?? $this->configFactory->get('webform.settings')->get('element.default_google_maps_api_key');
diff --git a/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml b/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml
index cc21a9d906ee5cfa70230e7b1af77c523c6efcd9..e57db2277700d621f5b6aad589acd5ba4097b9c1 100644
--- a/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml
+++ b/web/modules/webform/modules/webform_location_geocomplete/tests/modules/webform_location_geocomplete_test/webform_location_geocomplete_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_location_geocomplete'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml b/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml
index db6e0bddad7635c38eba46d2a0d3e51a879ac85a..846412d8f95a60d1b435a5509a4ec4939abb59b9 100644
--- a/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml
+++ b/web/modules/webform/modules/webform_location_geocomplete/webform_location_geocomplete.info.yml
@@ -8,7 +8,7 @@ lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequentl
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml b/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml
index 21888020959af66f138468d571926784aa66432a..e1518ba219a3d34ed7697f36ac35b921cbaeb06f 100644
--- a/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml
+++ b/web/modules/webform/modules/webform_location_places/tests/modules/webform_location_places_test/webform_location_places_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_location_geocomplete'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml b/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml
index 3c5426883a9694f9cb3b973760d9d7109f7334a8..9c80505e1cb6ce332b7bbf27aa790bee16b3451c 100644
--- a/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml
+++ b/web/modules/webform/modules/webform_location_places/webform_location_places.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml
index cc6496a33aa9e012e57819f6233a0b8deeb29013..ff95dc74349fff3da82b55985cd1547583deae96 100644
--- a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml
+++ b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_multiple/webform_node_test_multiple.info.yml
@@ -13,7 +13,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_node'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml
index 431c8383c28e575425c48afa9a83f04cd86dbdb1..2839c1ffe42473bc191cb15f750a485a86ccb813 100644
--- a/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml
+++ b/web/modules/webform/modules/webform_node/tests/modules/webform_node_test_translation/webform_node_test_translation.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'webform:webform_test_translation'
   - 'drupal:content_translation'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_node/webform_node.info.yml b/web/modules/webform/modules/webform_node/webform_node.info.yml
index 79bcb3ace9b202d41c561f977dd0fefe46286b3a..5f784ca7f0a4ea82d089f99db9d0ea87155a364b 100644
--- a/web/modules/webform/modules/webform_node/webform_node.info.yml
+++ b/web/modules/webform/modules/webform_node/webform_node.info.yml
@@ -11,7 +11,7 @@ dependencies:
   - 'drupal:user'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml
index 64d313df993d3f25a0537d9b2155e4638800b17a..4a6286c6fd0f421fe916e0f611f32b43061ae765 100644
--- a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml
+++ b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_entity_test/webform_options_custom_entity_test.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'webform:webform_options_limit'
   - 'webform:webform_options_custom'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml
index b0c8f3d7898f06ee192eeb3cf44fdb5e5358c569..a7c64d155f9bb9ec130656839feb2e7ea8d1d1b8 100644
--- a/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml
+++ b/web/modules/webform/modules/webform_options_custom/tests/modules/webform_options_custom_test/webform_options_custom_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_options_custom'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml b/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml
index b48d764039515a7e08528c414b6527a1885eae24..e834312ad853171730db322e7df4200993af9e98 100644
--- a/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml
+++ b/web/modules/webform/modules/webform_options_custom/webform_options_custom.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml b/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml
index eafa1e08d2a23bc33cd7f687838f965cee1669de..432c3fbf5e4b9dcb237a9a5ac327042c41733a76 100644
--- a/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml
+++ b/web/modules/webform/modules/webform_options_limit/tests/modules/webform_options_limit_test/webform_options_limit_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_options_limit'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml b/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml
index f4d5b394da6833e5cf5783ef3727fcb96653230e..4bdb6413630d7e2a203740cf0ef5fce4229abfe9 100644
--- a/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml
+++ b/web/modules/webform/modules/webform_options_limit/webform_options_limit.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml
index c34c703ecc7de0511feb3b9d97b8364088bdce28..4ce39ad3ba031198cd7bc129675f2e2405d6cf5d 100644
--- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml
+++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test/webform_scheduled_email_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_scheduled_email'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml
index ec1bfc82a54255fa67cf45b53b7817a202f820c8..d6dd70da4277a0f26337893af2282697dfe60c8f 100644
--- a/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml
+++ b/web/modules/webform/modules/webform_scheduled_email/tests/modules/webform_scheduled_email_test_translation/webform_scheduled_email_test_translation.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_scheduled_email'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml b/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml
index 31eeb5b3e3b0b4fbe14ddbd2038aed31ddae8a6b..b419fdadec77f4c1d7ae83dc02edcffcced44691 100644
--- a/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml
+++ b/web/modules/webform/modules/webform_scheduled_email/webform_scheduled_email.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml b/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml
index a530d02c6c246e427b5e9ccfb1acbdd2a899042b..3182494bd1d80a6af9d890633ed3068949f4a95c 100644
--- a/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml
+++ b/web/modules/webform/modules/webform_schema/tests/modules/webform_schema_test/webform_schema_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_schema'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_schema/webform_schema.info.yml b/web/modules/webform/modules/webform_schema/webform_schema.info.yml
index a6fbd58ec949865e1ad6940670e4ee65f7beef2e..0ade0a29dc2eec548b805bf6865686f453f0bbf2 100644
--- a/web/modules/webform/modules/webform_schema/webform_schema.info.yml
+++ b/web/modules/webform/modules/webform_schema/webform_schema.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_share/tests/src/Functional/WebformShareTest.php b/web/modules/webform/modules/webform_share/tests/src/Functional/WebformShareTest.php
index 8387109fda2992590fd42f94a99be0de56da3740..01a1722ba874b748e50c2a90b9fbab9298db5d2c 100644
--- a/web/modules/webform/modules/webform_share/tests/src/Functional/WebformShareTest.php
+++ b/web/modules/webform/modules/webform_share/tests/src/Functional/WebformShareTest.php
@@ -136,7 +136,8 @@ public function testShare() {
       ->save();
 
     // Check no page title.
-    $assert_session->responseNotContains('<h1 class="title page-title">Contact</h1>');
+    $this->drupalGet('/webform/contact/share');
+    $assert_session->responseNotContains('<h1>Contact</h1>');
 
     // Check iframe page iFrame-resizer script.
     $this->drupalGet("/webform/contact/share/$library/$version");
diff --git a/web/modules/webform/modules/webform_share/webform_share.info.yml b/web/modules/webform/modules/webform_share/webform_share.info.yml
index 6e284e1610ab6aec66f841b61a5734e7be15c1af..6edea8fe177d22a8bb27af096aea49313aecf913 100644
--- a/web/modules/webform/modules/webform_share/webform_share.info.yml
+++ b/web/modules/webform/modules/webform_share/webform_share.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_share/webform_share.module b/web/modules/webform/modules/webform_share/webform_share.module
index c08ded1f5c4d811bc5feb5734ccc47cf94926452..581832f3f0550a28b5281eeb7fe067d122272219 100644
--- a/web/modules/webform/modules/webform_share/webform_share.module
+++ b/web/modules/webform/modules/webform_share/webform_share.module
@@ -5,6 +5,7 @@
  * Allows webforms to be shared on other websites using an iframe.
  */
 
+use Drupal\Component\Utility\NestedArray;
 use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Render\Markup;
@@ -223,6 +224,11 @@ function template_preprocess_html__webform_share(&$variables) {
     }
     $variables['attributes']['class'] = array_values($variables['attributes']['class']);
   }
+
+  // Remove the page title.
+  if (!$webform->getSetting('share_title')) {
+    NestedArray::unsetValue($variables, ['page', 'content', 'page_title']);
+  }
 }
 
 /**
diff --git a/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml b/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml
index 03d20ff2ccac633b288a2e4381dd65d87da01518..60959e2be4933522e57714c30c5c9b676a873cc1 100644
--- a/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml
+++ b/web/modules/webform/modules/webform_shortcuts/webform_shortcuts.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_ui'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_submission_export_import/src/WebformSubmissionExportImportImporter.php b/web/modules/webform/modules/webform_submission_export_import/src/WebformSubmissionExportImportImporter.php
index 61db2d5858f4c32f2bc333bb1e231f3a0271943a..18a4cd88ecb7281deea95c458aebff0568fce3a3 100644
--- a/web/modules/webform/modules/webform_submission_export_import/src/WebformSubmissionExportImportImporter.php
+++ b/web/modules/webform/modules/webform_submission_export_import/src/WebformSubmissionExportImportImporter.php
@@ -1000,8 +1000,8 @@ public function getTotal() {
     $total = -1;
     $handle = fopen($this->importUri, 'r');
     while (!feof($handle)) {
-      $line = fgets($handle);
-      if (!empty(trim($line))) {
+      $line = fgetcsv($handle);
+      if (!empty($line) && !is_null(array_pop($line))) {
         $total++;
       }
     }
diff --git a/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml b/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml
index 2e2efc254d804ed51203378fbb2d50122179e5a0..146f0e1445aa3f50c62c610c98554937538724b3 100644
--- a/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml
+++ b/web/modules/webform/modules/webform_submission_export_import/tests/modules/webform_submission_export_import_test/webform_submission_export_import_test.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'webform:webform_submission_export_import'
   - 'webform:webform_image_select'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php b/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php
index e73e69b782b1efb35066b62d0b87a057943e5b74..b0376a03231e9fd0b42f6fd6972ef65bd2ef2e6a 100644
--- a/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php
+++ b/web/modules/webform/modules/webform_submission_export_import/tests/src/Functional/WebformSubmissionImportExportFunctionalTest.php
@@ -194,7 +194,13 @@ public function testSubmissionImport() {
     $assert_session->responseContains('<strong>Row #2:</strong> [file] Invalid file URL (/webform/plain/tests/files/sample.gif). URLS must begin with http:// or https://.');
     $assert_session->responseContains('<strong>Row #2:</strong> [composites] YAML is not valid.');
     $assert_session->responseContains('<strong>Row #3:</strong> The email address <em class="placeholder">not an email address</em> is not valid.');
-    $assert_session->responseContains('<strong>Row #3:</strong> An illegal choice has been detected. Please contact the site administrator.');
+    // @todo Remove once Drupal 10.1.x is only supported.
+    if (floatval(\Drupal::VERSION) >= 10.1) {
+      $assert_session->responseContains('<strong>Row #3:</strong> The submitted value <em class="placeholder">invalid</em> in the <em class="placeholder">checkboxes</em> element is not allowed');
+    }
+    else {
+      $assert_session->responseContains('<strong>Row #3:</strong> An illegal choice has been detected. Please contact the site administrator.');
+    }
 
     // Check the submission 1 (valid) record.
     $submission_1 = $this->loadSubmissionByProperty('notes', 'valid');
@@ -274,7 +280,9 @@ public function testSubmissionImport() {
         3 => [
           0 => 'The email address <em class="placeholder">not an email address</em> is not valid.',
           1 => 'The email address <em class="placeholder">not an email address</em> is not valid.',
-          2 => 'An illegal choice has been detected. Please contact the site administrator.',
+          2 => (floatval(\Drupal::VERSION) >= 10.1)
+            ? 'The submitted value <em class="placeholder">invalid</em> in the <em class="placeholder">checkboxes</em> element is not allowed.'
+            : 'An illegal choice has been detected. Please contact the site administrator.',
         ],
       ],
     ];
diff --git a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml
index e29594a091f50ae2d3061f05046c99ccb295fb59..822ac1e39241f8ee6a69aeedf6227f1a4d830826 100644
--- a/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml
+++ b/web/modules/webform/modules/webform_submission_export_import/webform_submission_export_import.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_submission_log/src/WebformSubmissionLogManager.php b/web/modules/webform/modules/webform_submission_log/src/WebformSubmissionLogManager.php
index a6291981c443286721d470575d98f9c417176fa3..b630a89cfb5a7ff4f86bc1ff458b4265974c506e 100644
--- a/web/modules/webform/modules/webform_submission_log/src/WebformSubmissionLogManager.php
+++ b/web/modules/webform/modules/webform_submission_log/src/WebformSubmissionLogManager.php
@@ -81,7 +81,7 @@ public function getQuery(EntityInterface $webform_entity = NULL, EntityInterface
     ]);
 
     // User fields.
-    $query->leftJoin('users_field_data', 'user', 'log.uid = user.uid');
+    $query->leftJoin('users_field_data', 'u', 'log.uid = u.uid');
 
     // Submission fields.
     $query->leftJoin('webform_submission', 'submission', 'log.sid = submission.sid');
diff --git a/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml b/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml
index 8f3148e40288495381213b71b850c507da249417..7b5c4bef0ed98cc810b88ce2a01da460252ea2be 100644
--- a/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml
+++ b/web/modules/webform/modules/webform_submission_log/webform_submission_log.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_templates/webform_templates.info.yml b/web/modules/webform/modules/webform_templates/webform_templates.info.yml
index 93560bb5223561e056eaf6c9b7eef675ce5fe9ec..2bd712107bb4cfd261a622459c1916fbdb1ce9a2 100644
--- a/web/modules/webform/modules/webform_templates/webform_templates.info.yml
+++ b/web/modules/webform/modules/webform_templates/webform_templates.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml b/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml
index 0def0c386d684693194223c9bc95da0b91364a43..a104b75d6cce075f070bd633eb7d4568118ec131 100644
--- a/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml
+++ b/web/modules/webform/modules/webform_toggles/tests/modules/webform_toggles_test/webform_toggles_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform_toggles'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml b/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml
index 737a4c2ad39c250cc801263585678df7f9b83f6f..bfcc8179d99f805f2b8b3f64b616cc72bda462e9 100644
--- a/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml
+++ b/web/modules/webform/modules/webform_toggles/webform_toggles.info.yml
@@ -8,7 +8,7 @@ lifecycle_link: 'https://www.drupal.org/docs/8/modules/webform/webform-frequentl
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/modules/webform_ui/webform_ui.info.yml b/web/modules/webform/modules/webform_ui/webform_ui.info.yml
index d0edf6a5fea38b31a4eb4b5eac07d4b167db9e9d..ed24c98260b65859d65f14d2b10b90620004fcd9 100644
--- a/web/modules/webform/modules/webform_ui/webform_ui.info.yml
+++ b/web/modules/webform/modules/webform_ui/webform_ui.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/phpcs.xml.dist b/web/modules/webform/phpcs.xml.dist
index 67a853ed5cafd916b1aecf454aaf3267690d36e0..364c4cfd13a24f4bd5c7bf932a4274d99cd681c3 100644
--- a/web/modules/webform/phpcs.xml.dist
+++ b/web/modules/webform/phpcs.xml.dist
@@ -7,7 +7,7 @@
   <rule ref="DrupalPractice"/>
 
   <!-- Test all the Drupal PHP file extensions -->
-  <arg name="extensions" value="php,module,inc,install,test,profile,theme,js,css" />
+  <arg name="extensions" value="php,module,inc,install,test,profile,theme" />
 
   <!-- Issue #3185082: Drupal.Arrays.Array.LongLineDeclaration make me write less readable code -->
   <rule ref="Drupal.Arrays.Array">
diff --git a/web/modules/webform/src/Commands/WebformSubmissionCommands.php b/web/modules/webform/src/Commands/WebformSubmissionCommands.php
index 942281c309f0ac2d68c6b6374402ee68f4943b9f..b673e362efc9d6faf5e94748da7e278581d5f6fb 100644
--- a/web/modules/webform/src/Commands/WebformSubmissionCommands.php
+++ b/web/modules/webform/src/Commands/WebformSubmissionCommands.php
@@ -158,16 +158,17 @@ public function export($webform = NULL, array $options = ['exporter' => NULL, 'd
     // Get command options as export options.
     $default_options = $submission_exporter->getDefaultExportOptions();
     $export_options = Drush::redispatchOptions();
+    $export_options['access_check'] = FALSE;
     // Convert dashes to underscores.
     foreach ($export_options as $key => $value) {
       unset($export_options[$key]);
       $key = str_replace('-', '_', $key);
       if (isset($default_options[$key]) && is_array($default_options[$key])) {
         $value = explode(',', $value);
+        $value = array_combine($value, $value);
       }
       $export_options[$key] = $value;
     }
-    $export_options += $submission_exporter->getDefaultExportOptions();
     $submission_exporter->setExporter($export_options);
 
     WebformResultsExportController::batchSet($webform, $source_entity, $export_options);
diff --git a/web/modules/webform/src/Controller/WebformResultsExportController.php b/web/modules/webform/src/Controller/WebformResultsExportController.php
index 9fb7f52fb14ed405aefb1ed63551fae3547c6327..71b03669564c68f90e34b0c0b4439f22dee25764 100644
--- a/web/modules/webform/src/Controller/WebformResultsExportController.php
+++ b/web/modules/webform/src/Controller/WebformResultsExportController.php
@@ -250,7 +250,7 @@ public static function batchProcess(WebformInterface $webform, EntityInterface $
     if (empty($context['sandbox'])) {
       $context['sandbox']['progress'] = 0;
       $context['sandbox']['offset'] = 0;
-      $context['sandbox']['max'] = $submission_exporter->getQuery()->accessCheck(FALSE)->count()->execute();
+      $context['sandbox']['max'] = $submission_exporter->getTotal();
       // Store entity ids and not the actual webform or source entity in the
       // $context to prevent "The container was serialized" errors.
       // @see https://www.drupal.org/node/2822023
@@ -274,8 +274,12 @@ public static function batchProcess(WebformInterface $webform, EntityInterface $
 
     $context['message'] = t('Exported @count of @total submissions…', ['@count' => $context['sandbox']['progress'], '@total' => $context['sandbox']['max']]);
 
-    // Track finished.
-    if ($context['sandbox']['max'] > 0 && $context['sandbox']['progress'] !== $context['sandbox']['max']) {
+    // Track finished, if there are results and progress does not match the
+    // expected total, calculate finished percentage. A safety guard is added
+    // if the current run didn't find any results, then consider it finished as
+    // well. This could happen when records are added ore removed during the
+    // export.
+    if ($entity_ids && $context['sandbox']['max'] > 0 && $context['sandbox']['progress'] !== $context['sandbox']['max']) {
       $context['finished'] = $context['sandbox']['progress'] / $context['sandbox']['max'];
     }
     else {
diff --git a/web/modules/webform/src/Element/WebformEmailConfirm.php b/web/modules/webform/src/Element/WebformEmailConfirm.php
index 527f67a165359ff48fed665837a68152f229b091..f58de538a288873a2f971be7230eb96bcee5a418 100644
--- a/web/modules/webform/src/Element/WebformEmailConfirm.php
+++ b/web/modules/webform/src/Element/WebformEmailConfirm.php
@@ -89,6 +89,10 @@ public static function processWebformEmailConfirm(&$element, FormStateInterface
       }
     }
 
+    // Since the element's id is never rendered, move it to the wrapper so that
+    // inline validation works as expected.
+    $element['#wrapper_attributes']['id'] = $element['#id'];
+
     // Get mail 1 email element.
     $mail_1_properties = [
       '#title',
diff --git a/web/modules/webform/src/Element/WebformMultiple.php b/web/modules/webform/src/Element/WebformMultiple.php
index 6d3fe2e79682231606118a1ab44b7ef8b35256a3..c2cdd3ba71ce2bef003a30af9e6762ea02c4171b 100644
--- a/web/modules/webform/src/Element/WebformMultiple.php
+++ b/web/modules/webform/src/Element/WebformMultiple.php
@@ -818,6 +818,10 @@ public static function addItemsSubmit(array &$form, FormStateInterface $form_sta
     $number_of_items_storage_key = static::getStorageKey($element, 'number_of_items');
     $number_of_items = $form_state->get($number_of_items_storage_key);
     $more_items = (int) $element['add']['more_items']['#value'];
+    // Limit to prevent out-of-memory errors.
+    if ($more_items > 100) {
+      $more_items = 100;
+    }
     $form_state->set($number_of_items_storage_key, $number_of_items + $more_items);
 
     // Reset values.
diff --git a/web/modules/webform/src/Element/WebformSignature.php b/web/modules/webform/src/Element/WebformSignature.php
index dfbaad266aa3ba6139dcf073269aa5223ae83dbb..7bdfbe422b8b87344b3e46af968f8e92b17e4d05 100644
--- a/web/modules/webform/src/Element/WebformSignature.php
+++ b/web/modules/webform/src/Element/WebformSignature.php
@@ -134,7 +134,7 @@ public static function isSignatureValid($value) {
     // Make sure the signature contains no colors.
     $image = imagecreatefrompng($temp_image);
     $number_of_colors = imagecolorstotal($image);
-    imagedestroy($image);
+    unset($image);
     if ($number_of_colors > 0) {
       return FALSE;
     }
diff --git a/web/modules/webform/src/Element/WebformTermReferenceTrait.php b/web/modules/webform/src/Element/WebformTermReferenceTrait.php
index 63db535fdbf2d5366f699b5cf4c0a738b60bdc04..6f53a44ce19f7b971b64ef7a852e811bbf320981 100644
--- a/web/modules/webform/src/Element/WebformTermReferenceTrait.php
+++ b/web/modules/webform/src/Element/WebformTermReferenceTrait.php
@@ -17,15 +17,16 @@ trait WebformTermReferenceTrait {
    */
   public static function setOptions(array &$element) {
     $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
-
-    // Only initialize the term options once by checking the cache tags.
-    $cache_tags = NestedArray::getValue($element, ['#cache', 'tags']) ?? [];
-    if (in_array('taxonomy_term_list', $cache_tags)) {
+    $vocabulary_id = $element['#vocabulary'];
+    if (empty($vocabulary_id) || !\Drupal::moduleHandler()->moduleExists('taxonomy')) {
+      $element['#options'] = [];
       return;
     }
 
-    if (!\Drupal::moduleHandler()->moduleExists('taxonomy') || empty($element['#vocabulary'])) {
-      $element['#options'] = [];
+    $vocabulary_list_cache_tag = "taxonomy_term_list:{$vocabulary_id}";
+    // Only initialize the term options once by checking the cache tags.
+    $cache_tags = NestedArray::getValue($element, ['#cache', 'tags']) ?? [];
+    if (in_array($vocabulary_list_cache_tag, $cache_tags)) {
       return;
     }
 
@@ -38,11 +39,8 @@ public static function setOptions(array &$element) {
       $element['#options'] = static::getOptionsTree($element, $language) + $element['#options'];
     }
 
-    // Add the vocabulary to the cache tags.
-    // Issue #2920913: The taxonomy_term_list cache should be invalidated
-    // on a vocabulary-by-vocabulary basis.
-    // @see https://www.drupal.org/project/drupal/issues/2920913
-    $element['#cache']['tags'][] = 'taxonomy_term_list';
+    // Add vocabulary-specific cache tag for targeted cache invalidation.
+    $element['#cache']['tags'][] = $vocabulary_list_cache_tag;
   }
 
   /**
diff --git a/web/modules/webform/src/Entity/Webform.php b/web/modules/webform/src/Entity/Webform.php
index d68520c3dc0c41c9798ae1c77c679fae8c69b041..d1639497392416c30f6d0ce083fa73a73fa41f42 100644
--- a/web/modules/webform/src/Entity/Webform.php
+++ b/web/modules/webform/src/Entity/Webform.php
@@ -1557,7 +1557,7 @@ protected function initElementsTranslation($elements_translated = FALSE) {
     }
 
     // Get the current langcode.
-    $current_langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
+    $current_langcode = \Drupal::languageManager()->getConfigOverrideLanguage()->getId();
 
     // If the current langcode is the same as this webform's langcode
     // then return.
diff --git a/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigBaseForm.php b/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigBaseForm.php
index 5828e8268efd1554fbfa6b6320e387625738af6c..bbe4375c66a26529f7337bf9dfdebb51799b1000 100644
--- a/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigBaseForm.php
+++ b/web/modules/webform/src/Form/AdminConfig/WebformAdminConfigBaseForm.php
@@ -9,6 +9,7 @@
 use Drupal\webform\Plugin\WebformElement\TableSelect;
 use Drupal\webform\Plugin\WebformElementManagerInterface;
 use Drupal\webform\Plugin\WebformHandlerManager;
+use Drupal\webform\Plugin\WebformVariantManager;
 use Drupal\webform\Utility\WebformElementHelper;
 use Drupal\webform\Utility\WebformYaml;
 use Symfony\Component\DependencyInjection\ContainerInterface;
diff --git a/web/modules/webform/src/Plugin/Field/FieldFormatter/WebformEntityReferenceFormatterBase.php b/web/modules/webform/src/Plugin/Field/FieldFormatter/WebformEntityReferenceFormatterBase.php
index 75862ed3effe046e14be627e7cfdac4a6f8f57de..11683008e6406a0837c1c4d68f28c5922b523e33 100644
--- a/web/modules/webform/src/Plugin/Field/FieldFormatter/WebformEntityReferenceFormatterBase.php
+++ b/web/modules/webform/src/Plugin/Field/FieldFormatter/WebformEntityReferenceFormatterBase.php
@@ -6,6 +6,7 @@
 use Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\webform\Plugin\Field\FieldType\WebformEntityReferenceItem;
+use Drupal\webform\Utility\WebformElementHelper;
 use Drupal\webform\WebformInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -35,6 +36,20 @@ abstract class WebformEntityReferenceFormatterBase extends EntityReferenceFormat
    */
   protected $time;
 
+  /**
+   * The language manager service.
+   *
+   * @var \Drupal\Core\Language\LanguageManagerInterface
+   */
+  protected $languageManager;
+
+  /**
+   * The entity type manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
   /**
    * {@inheritdoc}
    */
@@ -51,6 +66,8 @@ public static function create(ContainerInterface $container, array $configuratio
     $instance->configFactory = $container->get('config.factory');
     $instance->renderer = $container->get('renderer');
     $instance->time = $container->get('datetime.time');
+    $instance->languageManager = $container->get('language_manager');
+    $instance->entityTypeManager = $container->get('entity_type.manager');
     return $instance;
   }
 
@@ -60,12 +77,25 @@ public static function create(ContainerInterface $container, array $configuratio
   protected function getEntitiesToView(EntityReferenceFieldItemListInterface $items, $langcode) {
     /** @var \Drupal\webform\WebformInterface[] $entities */
     $entities = parent::getEntitiesToView($items, $langcode);
-    foreach ($entities as $entity) {
+    foreach ($entities as &$entity) {
       /** @var \Drupal\webform\Plugin\Field\FieldType\WebformEntityReferenceItem $item */
       $item = $entity->_referringItem;
 
       // Only override an open webform.
       if ($entity->isOpen()) {
+        if ($entity->hasTranslations()) {
+          $entity_storage = $this->entityTypeManager->getStorage($entity->getEntityTypeId());
+          $current_language = $this->languageManager->getConfigOverrideLanguage();
+          $this->languageManager->setConfigOverrideLanguage($this->languageManager->getLanguage($langcode));
+          /** @var \Drupal\webform\WebformInterface $translated_entity */
+          $translated_entity = $entity_storage->loadUnchanged($entity->id());
+          $elements = $entity->getElementsDecoded();
+          WebformElementHelper::merge($elements, $translated_entity->getElementsDecoded());
+          $translated_entity->setElements($elements);
+          $entity = $translated_entity;
+          $this->languageManager->setConfigOverrideLanguage($current_language);
+        }
+
         if (isset($item->open)) {
           $entity->set('open', $item->open);
         }
diff --git a/web/modules/webform/src/Plugin/WebformElement/Date.php b/web/modules/webform/src/Plugin/WebformElement/Date.php
index 190bd7000e46f8fe275a265f1e8c5fca66af9e40..a8501e091fde9b532c71d67929db6a1ea541c94c 100644
--- a/web/modules/webform/src/Plugin/WebformElement/Date.php
+++ b/web/modules/webform/src/Plugin/WebformElement/Date.php
@@ -47,8 +47,10 @@ protected function defineDefaultProperties() {
    * {@inheritdoc}
    */
   public function prepare(array &$element, WebformSubmissionInterface $webform_submission = NULL) {
-    // Unset custom date format which is only used by datepicker.
-    if (isset($element['#date_date_format']) && !isset($element['#datepicker'])) {
+    // Unset custom date format which is only used by the
+    // webform_jqueryui_datepicker.module.
+    $has_datepicker = isset($element['#datepicker']) && $this->moduleHandler->moduleExists('webform_jqueryui_datepicker');
+    if (isset($element['#date_date_format']) && !$has_datepicker) {
       unset($element['#date_date_format']);
     }
 
diff --git a/web/modules/webform/src/Plugin/WebformElement/DateBase.php b/web/modules/webform/src/Plugin/WebformElement/DateBase.php
index e2e505d1e2207a7b35d9c46b20d1cf2e56f73502..1320177ea4d3b86b5717ef7d55be332eeb2a62e0 100644
--- a/web/modules/webform/src/Plugin/WebformElement/DateBase.php
+++ b/web/modules/webform/src/Plugin/WebformElement/DateBase.php
@@ -400,12 +400,12 @@ protected function parseInputFormat(array &$element, $property) {
     elseif (is_array($element[$property])) {
       foreach ($element[$property] as $key => $value) {
         $timestamp = strtotime($value);
-        $element[$property][$key] = ($timestamp) ? $this->dateFormatter->format($timestamp, 'html_' . $this->getDateType($element)) : NULL;
+        $element[$property][$key] = ($timestamp !== FALSE) ? $this->dateFormatter->format($timestamp, 'html_' . $this->getDateType($element)) : NULL;
       }
     }
     else {
       $timestamp = strtotime($element[$property]);
-      $element[$property] = ($timestamp) ? $this->dateFormatter->format($timestamp, 'html_' . $this->getDateType($element)) : NULL;
+      $element[$property] = ($timestamp !== FALSE) ? $this->dateFormatter->format($timestamp, 'html_' . $this->getDateType($element)) : NULL;
     }
   }
 
diff --git a/web/modules/webform/src/Plugin/WebformElement/DateList.php b/web/modules/webform/src/Plugin/WebformElement/DateList.php
index e18c7a7eefa1ebe295d4b7bdf1d8ca709b8a44b3..2f56e6befbe2cd23a807d99a600202b3cfdf9859 100644
--- a/web/modules/webform/src/Plugin/WebformElement/DateList.php
+++ b/web/modules/webform/src/Plugin/WebformElement/DateList.php
@@ -255,6 +255,14 @@ public static function afterBuild(array $element, FormStateInterface $form_state
         $validate_callback[0] = DateList::class;
       }
     }
+
+    // Copy the datelist element's states to child inputs.
+    if (isset($element['#states'])) {
+      foreach (Element::children($element) as $key) {
+        $element[$key]['#states'] = $element['#states'];
+      }
+    }
+
     return $element;
   }
 
diff --git a/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php b/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php
index e6a3384eaec3d32dce2ebbd18be1c2454f968d7d..e8816e638815a884a8a635a0f8a904c222b31d40 100644
--- a/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php
+++ b/web/modules/webform/src/Plugin/WebformElement/OptionsBase.php
@@ -327,21 +327,24 @@ protected function formatHtmlItem(array $element, WebformSubmissionInterface $we
     $value = $this->getValue($element, $webform_submission, $options);
 
     $format = $this->getItemFormat($element);
+    $options = OptGroup::flattenOptions($element['#options'] ?? []);
     switch ($format) {
       case 'raw':
         return $value;
 
       case 'text_description':
-        if (isset($element['#options'])) {
+        if ($options && isset($options[$value])) {
           $options_description = $this->hasProperty('options_description_display');
           $text = WebformOptionsHelper::getOptionText($value, $element['#options'], $options_description);
           $description = WebformOptionsHelper::getOptionDescription($value, $element['#options'], $options_description);
           return ['#markup' => $text . ($description ? PHP_EOL . '<div class="description">' . $description . '</div>' : '')];
         }
-        return '';
+        else {
+          return $value;
+        }
 
       case 'description':
-        if (isset($element['#options'])) {
+        if ($options && isset($options[$value])) {
           $options_description = $this->hasProperty('options_description_display');
           if ($options_description) {
             $description = WebformOptionsHelper::getOptionDescription($value, $element['#options'], $options_description);
@@ -352,12 +355,17 @@ protected function formatHtmlItem(array $element, WebformSubmissionInterface $we
 
       case 'value':
       default:
-        if (isset($element['#options'])) {
+        if ($options && isset($options[$value])) {
           $options_description = $this->hasProperty('options_description_display');
-          $value = WebformOptionsHelper::getOptionText($value, $element['#options'], $options_description);
+          $build = [
+            '#markup' => WebformOptionsHelper::getOptionText($value, $options, $options_description),
+          ];
+        }
+        else {
+          $build = [
+            '#plain_text' => $value,
+          ];
         }
-
-        $build = ['#markup' => $value];
 
         $options += ['prefixing' => TRUE];
         if ($options['prefixing']) {
diff --git a/web/modules/webform/src/Plugin/WebformElement/Telephone.php b/web/modules/webform/src/Plugin/WebformElement/Telephone.php
index 4d6fbadb4a7e31e05055d7779fdde5736021d4e7..d8eacb4b2a2fe106db9e68fa7b3fe22f10222383 100644
--- a/web/modules/webform/src/Plugin/WebformElement/Telephone.php
+++ b/web/modules/webform/src/Plugin/WebformElement/Telephone.php
@@ -159,7 +159,7 @@ public function form(array $form, FormStateInterface $form_state) {
     $form['telephone']['international'] = [
       '#type' => 'checkbox',
       '#title' => $this->t('Enhance support for international phone numbers'),
-      '#description' => $this->t('Enhance the telephone element\'s international support using the jQuery <a href=":href">International Telephone Input</a> plugin.', [':href' => 'http://intl-tel-input.com/']),
+      '#description' => $this->t('Enhance the telephone element\'s international support using the jQuery <a href=":href">International Telephone Input</a> plugin.', [':href' => 'https://intl-tel-input.com/']),
       '#return_value' => TRUE,
     ];
     $form['telephone']['international_initial_country'] = [
diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformLink.php b/web/modules/webform/src/Plugin/WebformElement/WebformLink.php
index 55157be7bdf6ad95360a97b33f6f2589191f1257..7a43f9fbe1b94eaa9d868cc3b6781f3d05676372 100644
--- a/web/modules/webform/src/Plugin/WebformElement/WebformLink.php
+++ b/web/modules/webform/src/Plugin/WebformElement/WebformLink.php
@@ -60,7 +60,7 @@ protected function formatHtmlItemValue(array $element, WebformSubmissionInterfac
     return [
       'link' => [
         '#type' => 'link',
-        '#title' => $value['title'],
+        '#title' => $value['title'] ?: $value['url'],
         '#url' => $this->pathValidator->getUrlIfValid($value['url']),
       ],
     ];
diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php b/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php
index c839ba86d7d5a1edd546e5735eb9a818ef50c367..9e06427b6bb007aca09ce32c381d61fe4f4dae80 100644
--- a/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php
+++ b/web/modules/webform/src/Plugin/WebformElement/WebformManagedFileBase.php
@@ -635,7 +635,8 @@ protected function getFileExtensions(array $element = NULL) {
    */
   protected function getDefaultFileExtensions() {
     $file_type = str_replace('webform_', '', $this->getPluginId());
-    return $this->configFactory->get('webform.settings')->get("file.default_{$file_type}_extensions");
+    $extensions = $this->configFactory->get('webform.settings')->get("file.default_{$file_type}_extensions");
+    return $extensions ?? '';
   }
 
   /**
diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformName.php b/web/modules/webform/src/Plugin/WebformElement/WebformName.php
index de9957a3ca7ee10d0741dd21b9c8045772056f09..ea30b0b09cd2e8d16df598fcb75b6e56360e75f9 100644
--- a/web/modules/webform/src/Plugin/WebformElement/WebformName.php
+++ b/web/modules/webform/src/Plugin/WebformElement/WebformName.php
@@ -24,13 +24,34 @@ class WebformName extends WebformCompositeBase {
    * {@inheritdoc}
    */
   protected function formatHtmlItemValue(array $element, WebformSubmissionInterface $webform_submission, array $options = []) {
-    return $this->formatTextItemValue($element, $webform_submission, $options);
+    return [
+      'name' => ['#plain_text' => $this->formtaFullName($element, $webform_submission, $options)],
+    ];
   }
 
   /**
    * {@inheritdoc}
    */
   protected function formatTextItemValue(array $element, WebformSubmissionInterface $webform_submission, array $options = []) {
+    return [
+      'name' => $this->formtaFullName($element, $webform_submission, $options),
+    ];
+  }
+
+  /**
+   * Format full name.
+   *
+   * @param array $element
+   *   An element.
+   * @param \Drupal\webform\WebformSubmissionInterface $webform_submission
+   *   A webform submission.
+   * @param array $options
+   *   An array of options.
+   *
+   * @return string
+   *   The full name.
+   */
+  protected function formtaFullName(array $element, WebformSubmissionInterface $webform_submission, array $options = []) {
     $value = $this->getValue($element, $webform_submission, $options);
 
     $name_parts = [];
@@ -42,9 +63,7 @@ protected function formatTextItemValue(array $element, WebformSubmissionInterfac
       }
     }
 
-    return [
-      'name' => trim(implode('', $name_parts)),
-    ];
+    return trim(implode('', $name_parts));
   }
 
 }
diff --git a/web/modules/webform/src/Plugin/WebformElement/WebformTelephone.php b/web/modules/webform/src/Plugin/WebformElement/WebformTelephone.php
index f28305d71c451e1b56a2a158493d5a57f82fb333..691aece1eb1f369043ff7f79448b8899a68ab80a 100644
--- a/web/modules/webform/src/Plugin/WebformElement/WebformTelephone.php
+++ b/web/modules/webform/src/Plugin/WebformElement/WebformTelephone.php
@@ -122,7 +122,7 @@ public function form(array $form, FormStateInterface $form_state) {
     $form['composite']['phone__international'] = [
       '#title' => $this->t('Enhance support for international phone numbers'),
       '#type' => 'checkbox',
-      '#description' => $this->t('Enhance the telephone element\'s international support using the jQuery <a href=":href">International Telephone Input</a> plugin.', [':href' => 'http://intl-tel-input.com/']),
+      '#description' => $this->t('Enhance the telephone element\'s international support using the jQuery <a href=":href">International Telephone Input</a> plugin.', [':href' => 'https://intl-tel-input.com/']),
       '#return_value' => TRUE,
     ];
     $form['composite']['phone__international_initial_country'] = [
diff --git a/web/modules/webform/src/Plugin/WebformElementBase.php b/web/modules/webform/src/Plugin/WebformElementBase.php
index 67eed4b840d4430d20727ab1d46c4d4adb464f8e..feef450120c54a30e1c8bbd6a297521fa7157118 100644
--- a/web/modules/webform/src/Plugin/WebformElementBase.php
+++ b/web/modules/webform/src/Plugin/WebformElementBase.php
@@ -1451,7 +1451,7 @@ protected function formatHtmlItems(array &$element, WebformSubmissionInterface $
         }
 
         $build = [];
-        foreach ($items as $index => &$item) {
+        foreach ($items as $index => $item) {
           $build[] = (is_array($item)) ? $item : ['#markup' => $item];
           if ($total === 2 && $index === 0) {
             $build[] = ['#markup' => ' ' . $this->t('and') . ' '];
@@ -1485,7 +1485,7 @@ protected function formatHtmlItems(array &$element, WebformSubmissionInterface $
         $total = count($items);
 
         $build = [];
-        foreach ($items as $index => &$item) {
+        foreach ($items as $index => $item) {
           $build[] = (is_array($item)) ? $item : ['#markup' => $item];
           if ($index !== ($total - 1)) {
             $build[] = ['#markup' => $delimiter];
diff --git a/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php b/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php
index 9bdcdd885bb09e2b06c9e24fafe1bf7d191dfd66..35f07ada38201381e8bfb23763b6d02e0fc0269e 100644
--- a/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php
+++ b/web/modules/webform/src/Plugin/WebformHandler/EmailWebformHandler.php
@@ -404,8 +404,8 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       '[current-user:account-name]' => 'Current user account name',
       '[webform:author:display-name]' => 'Webform author display name',
       '[webform:author:account-name]' => 'Webform author account name',
-      '[webform_submission:author:display-name]' => 'Webform submission author display name',
-      '[webform_submission:author:account-name]' => 'Webform submission author account name',
+      '[webform_submission:user:display-name]' => 'Webform submission author display name',
+      '[webform_submission:user:account-name]' => 'Webform submission author account name',
     ];
 
     // Disable client-side HTML5 validation which is having issues with hidden
@@ -1762,7 +1762,7 @@ protected function buildAttachments(array $attachments) {
    *   The element key or NULL if token can not be parsed.
    */
   protected function getElementKeyFromToken($token, $format = 'raw') {
-    if (preg_match('/^\[webform_submission:values:([^:]+):' . $format . '\]$/', $token, $match)) {
+    if ($token && preg_match('/^\[webform_submission:values:([^:]+):' . $format . '\]$/', $token, $match)) {
       return $match[1];
     }
     else {
diff --git a/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php b/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php
index 462db9cbfc643b96b3d07b55c977cb0997710d3d..342cf1f4c0393f23a660ecc0c217ef097094bedd 100644
--- a/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php
+++ b/web/modules/webform/src/Plugin/WebformHandler/RemotePostWebformHandler.php
@@ -243,7 +243,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       $t_args = [
         '@state' => $state_item['state'],
         '@title' => $state_item['label'],
-        '@url' => 'http://www.mycrm.com/form_' . $state . '_handler.php',
+        '@url' => 'https://www.mycrm.com/form_' . $state . '_handler.php',
       ];
       $form[$state] = [
         '#type' => 'details',
@@ -345,7 +345,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       '#type' => 'webform_codemirror',
       '#mode' => 'yaml',
       '#title' => $this->t('Custom options'),
-      '#description' => $this->t('Enter custom <a href=":href">request options</a> that will be used by the Guzzle HTTP client. Request options can include custom headers.', [':href' => 'http://docs.guzzlephp.org/en/stable/request-options.html']),
+      '#description' => $this->t('Enter custom <a href=":href">request options</a> that will be used by the Guzzle HTTP client. Request options can include custom headers.', [':href' => 'https://docs.guzzlephp.org/en/stable/request-options.html']),
       '#default_value' => $this->configuration['custom_options'],
     ];
     $form['additional']['message'] = [
diff --git a/web/modules/webform/src/Utility/WebformDateHelper.php b/web/modules/webform/src/Utility/WebformDateHelper.php
index 16bb765db83849e7d4fcdcdd963b7f631582e385..bee5e46015221509004b70f142ad4731a604808b 100644
--- a/web/modules/webform/src/Utility/WebformDateHelper.php
+++ b/web/modules/webform/src/Utility/WebformDateHelper.php
@@ -5,7 +5,6 @@
 use Drupal\Core\Datetime\DateHelper;
 use Drupal\Core\Datetime\DrupalDateTime;
 use Drupal\Core\Form\OptGroup;
-use Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface;
 
 /**
  * Helper class webform date helper methods.
@@ -65,9 +64,11 @@ public static function format($timestamp, $type = 'medium', $format = '', $timez
    *
    * @return string
    *   The date/time object format as 'Y-m-d\TH:i:s'.
+   *
+   * @see \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface::DATETIME_STORAGE_FORMAT
    */
   public static function formatStorage(DrupalDateTime $date) {
-    return $date->format(DateTimeItemInterface::DATETIME_STORAGE_FORMAT);
+    return $date->format('Y-m-d\TH:i:s');
   }
 
   /**
diff --git a/web/modules/webform/src/Utility/WebformDialogHelper.php b/web/modules/webform/src/Utility/WebformDialogHelper.php
index ba2b501d7513940686dc65c4751ee609bab8d01e..f02196463e87159a6f9b38a20cd88f06c6b348c8 100644
--- a/web/modules/webform/src/Utility/WebformDialogHelper.php
+++ b/web/modules/webform/src/Utility/WebformDialogHelper.php
@@ -60,6 +60,10 @@ public static function useOffCanvas() {
    *   A render array.
    */
   public static function attachLibraries(array &$build) {
+    $build += ['#attached' => []];
+    $build['#attached'] += ['library' => []];
+    $build['#attached']['library'] = (array) $build['#attached']['library'];
+
     $build['#attached']['library'][] = 'webform/webform.admin.dialog';
     if (static::useOffCanvas()) {
       $build['#attached']['library'][] = 'webform/webform.admin.off_canvas';
diff --git a/web/modules/webform/src/Utility/WebformElementHelper.php b/web/modules/webform/src/Utility/WebformElementHelper.php
index 5702a9e1ca0de2741cebd03d4fa06f0abfdff433..5eebf17852e111dc8ca07459dd7e65175be432e6 100644
--- a/web/modules/webform/src/Utility/WebformElementHelper.php
+++ b/web/modules/webform/src/Utility/WebformElementHelper.php
@@ -530,6 +530,33 @@ protected static function isIgnoredProperty($property) {
     }
   }
 
+  /**
+   * Merge element options.
+   *
+   * NOTE: This is a modified version of WebformElementHelper::merge(),
+   * designed to only run when dealing with an #options property. See issue #3320160
+   *
+   * @param array $options
+   *   An array of options.
+   * @param array $source_options
+   *   An array of options to be merged.
+   */
+  public static function mergeOptions(array &$options, array $source_options) {
+    foreach ($options as $key => &$option) {
+      if (isset($source_options[$key]) && is_scalar($option) && gettype($option) === gettype($source_options[$key])) {
+        $option = $source_options[$key];
+      }
+      elseif (is_array($option)) {
+        unset($options[$key]);
+      }
+    }
+    foreach ($source_options as $key => $option) {
+      if (is_array($option)) {
+        $options[$key] = $option;
+      }
+    }
+  }
+
   /**
    * Merge element properties.
    *
@@ -550,7 +577,12 @@ public static function merge(array &$elements, array $source_elements) {
       }
 
       if (is_array($element)) {
-        self::merge($element, $source_element);
+        if ($key === '#options') {
+          self::mergeOptions($element, $source_element);
+        }
+        else {
+          self::merge($element, $source_element);
+        }
       }
       elseif (is_scalar($element)) {
         $elements[$key] = $source_element;
@@ -587,7 +619,12 @@ public static function applyTranslation(array &$element, array $translation) {
       }
 
       if (is_array($value)) {
-        self::merge($value, $translation_value);
+        if ($key === '#options') {
+          self::mergeOptions($value, $translation_value);
+        }
+        else {
+          self::merge($value, $translation_value);
+        }
       }
       elseif (is_scalar($value)) {
         $element[$key] = $translation_value;
diff --git a/web/modules/webform/src/Utility/WebformOptionsHelper.php b/web/modules/webform/src/Utility/WebformOptionsHelper.php
index b8d943d8c62653e23fd0b0d455b47570c413bf66..1428e16ee0b0cdaa239ec30f175018b84091f8d3 100644
--- a/web/modules/webform/src/Utility/WebformOptionsHelper.php
+++ b/web/modules/webform/src/Utility/WebformOptionsHelper.php
@@ -324,8 +324,13 @@ public static function encodeConfig(array $options) {
    */
   public static function decodeConfig(array $config) {
     $options = [];
-    foreach ($config as $option) {
-      $options[$option['value']] = $option['text'];
+    foreach ($config as $index => $option) {
+      if (is_array($option)) {
+        $options[$option['value']] = $option['text'];
+      }
+      else {
+        $options[$index] = $option;
+      }
     }
     return $options;
   }
diff --git a/web/modules/webform/src/WebformHelpManager.php b/web/modules/webform/src/WebformHelpManager.php
index ecaa92255c1a7eb986234474d95a86a95fd0e263..e978a13f132f4e59069a861cd362765bd85a82ad 100644
--- a/web/modules/webform/src/WebformHelpManager.php
+++ b/web/modules/webform/src/WebformHelpManager.php
@@ -1177,7 +1177,7 @@ protected function initVideos() {
           ],
           [
             'title' => $this->t('Display forms in a modal dialog with Drupal 8 | Agaric'),
-            'url' => 'http://agaric.com/blogs/display-forms-modal-dialog-drupal-8',
+            'url' => 'https://agaric.com/blogs/display-forms-modal-dialog-drupal-8',
           ],
           [
             'title' => $this->t('jQueryUI Dialog Documentation'),
diff --git a/web/modules/webform/src/WebformLibrariesManager.php b/web/modules/webform/src/WebformLibrariesManager.php
index 7d11f9388ad0aa01ddf65c4aeb675bf70d05ef98..d5d9e70d64f0c308baf8308021997904951c7d81 100644
--- a/web/modules/webform/src/WebformLibrariesManager.php
+++ b/web/modules/webform/src/WebformLibrariesManager.php
@@ -331,7 +331,7 @@ protected function initLibraries() {
       'title' => $this->t('Code Mirror'),
       'description' => $this->t('Code Mirror is a versatile text editor implemented in JavaScript for the browser.'),
       'notes' => $this->t('Code Mirror is used to provide a text editor for YAML, HTML, CSS, and JavaScript configuration settings and messages.'),
-      'homepage_url' => Url::fromUri('http://codemirror.net/'),
+      'homepage_url' => Url::fromUri('https://codemirror.net/'),
       // Issue #3177233: CodeMirror 5.70.0 is displaying vertical scrollbar.
       'download_url' => Url::fromUri('https://github.com/components/codemirror/archive/refs/tags/5.65.12.zip'),
       'issues_url' => Url::fromUri('https://github.com/codemirror/codemirror/issues'),
@@ -388,7 +388,7 @@ protected function initLibraries() {
       'title' => $this->t('Progress Tracker'),
       'description' => $this->t("A flexible SASS component to illustrate the steps in a multi-step process e.g. a multi-step form, a timeline or a quiz."),
       'notes' => $this->t('Progress Tracker is used by multi-step wizard forms.'),
-      'homepage_url' => Url::fromUri('http://nigelotoole.github.io/progress-tracker/'),
+      'homepage_url' => Url::fromUri('https://nigelotoole.github.io/progress-tracker/'),
       'download_url' => Url::fromUri('https://github.com/NigelOToole/progress-tracker/archive/refs/tags/2.0.7.zip'),
       'version' => '2.0.7',
       'license' => 'MIT',
diff --git a/web/modules/webform/src/WebformSubmissionExporter.php b/web/modules/webform/src/WebformSubmissionExporter.php
index 16ce9859f1f694d1abddd9b582a730fc8610cbab..ca601fcbba065ae2333c68f3d2e5fd5671db9a56 100644
--- a/web/modules/webform/src/WebformSubmissionExporter.php
+++ b/web/modules/webform/src/WebformSubmissionExporter.php
@@ -295,6 +295,7 @@ public function getDefaultExportOptions() {
       'download' => TRUE,
       'files' => FALSE,
       'attachments' => FALSE,
+      'access_check' => TRUE,
     ];
 
     // Append webform exporter default options.
@@ -952,9 +953,10 @@ public function getQuery(): QueryInterface {
 
     $query = $this->getSubmissionStorage()
       ->getQuery()
-      ->accessCheck(FALSE)
       ->condition('webform_id', $webform->id());
 
+    $query->accessCheck($export_options['access_check']);
+
     // Filter by source entity or submitted to.
     if ($source_entity) {
       $query->condition('entity_type', $source_entity->getEntityTypeId());
@@ -1048,13 +1050,6 @@ public function getQuery(): QueryInterface {
       $query->sort('sid', $export_options['order'] ?? 'ASC');
     }
 
-    // Do not check access to submissions via Drush CLI.
-    // There is already submission access checking being applied.
-    // @see webform_query_webform_submission_access_alter()
-    if (PHP_SAPI === 'cli') {
-      $query->accessCheck(FALSE);
-    }
-
     return $query;
   }
 
@@ -1131,7 +1126,7 @@ protected function hasWebformExportAttachmentElements() {
    * {@inheritdoc}
    */
   public function getTotal() {
-    return $this->getQuery()->accessCheck(FALSE)->count()->execute();
+    return $this->getQuery()->count()->execute();
   }
 
   /**
diff --git a/web/modules/webform/src/WebformSubmissionForm.php b/web/modules/webform/src/WebformSubmissionForm.php
index 825c47808c6916ff2dd5054857c5f6ea49fe12d5..1bdd698b0f7727512efe77a9048a145e4d8f96d4 100644
--- a/web/modules/webform/src/WebformSubmissionForm.php
+++ b/web/modules/webform/src/WebformSubmissionForm.php
@@ -2652,13 +2652,10 @@ protected function prepopulateData(array &$data) {
       $prepopulate_data = $this->getRequest()->query->all();
     }
     else {
-      $prepopulate_data = [];
-      $elements = $this->getWebform()->getElementsPrepopulate();
-      foreach ($elements as $element_key) {
-        if ($this->getRequest()->query->has($element_key)) {
-          $prepopulate_data[$element_key] = $this->getRequest()->query->get($element_key);
-        }
-      }
+      $prepopulate_data = array_intersect_key(
+        $this->getRequest()->query->all(),
+        $this->getWebform()->getElementsPrepopulate()
+      );
     }
 
     // Validate prepopulate data.
diff --git a/web/modules/webform/src/WebformSubmissionListBuilder.php b/web/modules/webform/src/WebformSubmissionListBuilder.php
index b0b322da1e98df0b694dd6750ac76788eabec364..a7146443da835356488f29d715d477c4b237f7ea 100644
--- a/web/modules/webform/src/WebformSubmissionListBuilder.php
+++ b/web/modules/webform/src/WebformSubmissionListBuilder.php
@@ -1307,7 +1307,7 @@ protected function getEntityIds() {
     // If query is order(ed) by 'element__*' we need to build a custom table
     // sort using hook_query_TAG_alter().
     // @see webform_query_webform_submission_list_builder_alter()
-    if ($order && strpos($order['sql'], 'element__') === 0) {
+    if (!empty($order['sql']) && strpos($order['sql'], 'element__') === 0) {
       $name = $order['sql'];
       $column = $this->columns[$name];
       $query->addTag('webform_submission_list_builder')
diff --git a/web/modules/webform/src/WebformSubmissionStorage.php b/web/modules/webform/src/WebformSubmissionStorage.php
index 3ce9305c9c0ab5b930f2bcfb3b2db41392b38885..561f2534abc6e4979068b59b4884af94471b5f6a 100644
--- a/web/modules/webform/src/WebformSubmissionStorage.php
+++ b/web/modules/webform/src/WebformSubmissionStorage.php
@@ -1178,7 +1178,7 @@ public function delete(array $entities) {
         foreach ($stream_wrappers as $stream_wrapper) {
           $file_directory = $stream_wrapper . '://webform/' . $webform->id() . '/' . $entity->id();
           // Clear empty webform submission directory.
-          if (file_exists($file_directory)
+          if (is_dir($file_directory)
             && empty($this->fileSystem->scanDirectory($file_directory, '/.*/'))) {
             $this->fileSystem->deleteRecursive($file_directory);
           }
diff --git a/web/modules/webform/src/WebformTranslationLingotekManager.php b/web/modules/webform/src/WebformTranslationLingotekManager.php
index 44f1f9dcd671f57bb86850b23dd7589a4fcb7526..601647ee9478b1b94697429991e8eb3281d1b837 100644
--- a/web/modules/webform/src/WebformTranslationLingotekManager.php
+++ b/web/modules/webform/src/WebformTranslationLingotekManager.php
@@ -42,8 +42,8 @@ public function configEntityDocumentUpload(array &$source_data, ConfigEntityInte
                 $field_settings[$setting_name] = Yaml::decode($field_settings[$setting_name]);
               }
             }
+            $this->encodeTokens($field_settings);
           }
-          $this->encodeTokens($field_settings);
         }
         break;
 
diff --git a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_datelist.yml b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_datelist.yml
index a84daf1d7d9aeff0578d81b13e0f108e19bc7d0f..7aa74c106759bb7c6e26dbaec9d10ab9e1a9b0b1 100644
--- a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_datelist.yml
+++ b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_datelist.yml
@@ -83,6 +83,16 @@ elements: |
     '#default_value': '2009-08-18T01:00:00-05:00'
     '#required': 'Custom required error'
     '#required_error': 'Custom required error'
+  datelist_conditional:
+    '#type': checkbox
+    '#title': datelist_conditional
+  datelist_conditional_required:
+    '#type': datelist
+    '#title': datelist_conditional_required
+    '#states':
+      required:
+        ':input[name="datelist_conditional"]':
+          checked: true
   datelist_multiple:
     '#type': datelist
     '#title': datelist_multiple
diff --git a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_xss.yml b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_xss.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bdc5bd9ff88403754bbf6fc0f02ff8dbc783f765
--- /dev/null
+++ b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_element_xss.yml
@@ -0,0 +1,233 @@
+uuid: null
+langcode: en
+status: open
+dependencies:
+  enforced:
+    module:
+      - webform_test
+open: null
+close: null
+weight: 0
+uid: null
+template: false
+archive: false
+id: test_element_xss
+title: 'Test: Element: XSS'
+description: 'Tests element Cross Site Scripting (XSS) vulnerabilities.'
+category: 'Test: Element'
+elements: |
+  textfield:
+    '#title': textfield
+    '#type': textfield
+    '#default_value': '<img src="https://www.drupal.org/" />'
+  textarea:
+    '#title': textarea
+    '#type': textarea
+    '#default_value': '<img src="https://www.drupal.org/" />'
+  webform_select_other:
+    '#title': webform_select_other
+    '#type': webform_select_other
+    '#options':
+      one: one
+      two: two
+      three: three
+    '#default_value': '<img src="https://www.drupal.org/" />'
+  webform_checkboxes_other:
+    '#title': webform_checkboxes_other
+    '#type': webform_checkboxes_other
+    '#options':
+      one: one
+      two: two
+      three: three
+    '#default_value': '<img src="https://www.drupal.org/" />'
+  webform_radios_other:
+    '#title': webform_radios_other
+    '#type': webform_radios_other
+    '#options':
+      one: one
+      two: two
+      three: three
+    '#default_value': '<img src="https://www.drupal.org/" />'
+css: ''
+javascript: ''
+settings:
+  ajax: false
+  ajax_scroll_top: form
+  ajax_progress_type: ''
+  ajax_effect: ''
+  ajax_speed: null
+  page: true
+  page_submit_path: ''
+  page_confirm_path: ''
+  page_theme_name: ''
+  form_title: source_entity_webform
+  form_submit_once: false
+  form_exception_message: ''
+  form_open_message: ''
+  form_close_message: ''
+  form_previous_submissions: true
+  form_confidential: false
+  form_confidential_message: ''
+  form_disable_remote_addr: false
+  form_convert_anonymous: false
+  form_prepopulate: false
+  form_prepopulate_source_entity: false
+  form_prepopulate_source_entity_required: false
+  form_prepopulate_source_entity_type: ''
+  form_reset: false
+  form_disable_autocomplete: false
+  form_novalidate: true
+  form_disable_inline_errors: false
+  form_required: false
+  form_unsaved: false
+  form_disable_back: false
+  form_submit_back: false
+  form_autofocus: false
+  form_details_toggle: false
+  form_access_denied: default
+  form_access_denied_title: ''
+  form_access_denied_message: ''
+  form_access_denied_attributes: {  }
+  form_file_limit: ''
+  form_method: ''
+  form_action: ''
+  form_attributes: {  }
+  share: false
+  share_node: false
+  share_theme_name: ''
+  share_title: true
+  share_page_body_attributes: {  }
+  submission_label: ''
+  submission_log: false
+  submission_views: {  }
+  submission_views_replace: {  }
+  submission_user_columns: {  }
+  submission_user_duplicate: false
+  submission_access_denied: default
+  submission_access_denied_title: ''
+  submission_access_denied_message: ''
+  submission_access_denied_attributes: {  }
+  submission_exception_message: ''
+  submission_locked_message: ''
+  submission_excluded_elements: {  }
+  submission_exclude_empty: false
+  submission_exclude_empty_checkbox: false
+  previous_submission_message: ''
+  previous_submissions_message: ''
+  autofill: false
+  autofill_message: ''
+  autofill_excluded_elements: {  }
+  wizard_progress_bar: true
+  wizard_progress_pages: false
+  wizard_progress_percentage: false
+  wizard_progress_link: false
+  wizard_progress_states: false
+  wizard_auto_forward: true
+  wizard_auto_forward_hide_next_button: false
+  wizard_keyboard: true
+  wizard_start_label: ''
+  wizard_preview_link: false
+  wizard_confirmation: true
+  wizard_confirmation_label: ''
+  wizard_track: ''
+  wizard_prev_button_label: ''
+  wizard_next_button_label: ''
+  wizard_toggle: false
+  wizard_toggle_show_label: ''
+  wizard_toggle_hide_label: ''
+  preview: 0
+  preview_label: ''
+  preview_title: ''
+  preview_message: ''
+  preview_attributes: {  }
+  preview_excluded_elements: {  }
+  preview_exclude_empty: true
+  preview_exclude_empty_checkbox: false
+  draft: none
+  draft_multiple: false
+  draft_auto_save: false
+  draft_saved_message: ''
+  draft_loaded_message: ''
+  draft_pending_single_message: ''
+  draft_pending_multiple_message: ''
+  confirmation_type: page
+  confirmation_title: ''
+  confirmation_message: '<p>[webform_submission:values:html]</p>'
+  confirmation_url: ''
+  confirmation_attributes: {  }
+  confirmation_back: true
+  confirmation_back_label: ''
+  confirmation_back_attributes: {  }
+  confirmation_exclude_query: false
+  confirmation_exclude_token: false
+  confirmation_update: false
+  limit_total: null
+  limit_total_interval: null
+  limit_total_message: ''
+  limit_total_unique: false
+  limit_user: null
+  limit_user_interval: null
+  limit_user_message: ''
+  limit_user_unique: false
+  entity_limit_total: null
+  entity_limit_total_interval: null
+  entity_limit_user: null
+  entity_limit_user_interval: null
+  purge: none
+  purge_days: null
+  results_disabled: false
+  results_disabled_ignore: false
+  results_customize: false
+  token_view: false
+  token_update: false
+  token_delete: false
+  serial_disabled: false
+access:
+  create:
+    roles:
+      - anonymous
+      - authenticated
+    users: {  }
+    permissions: {  }
+  view_any:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  update_any:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  delete_any:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  purge_any:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  view_own:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  update_own:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  delete_own:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  administer:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  test:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+  configuration:
+    roles: {  }
+    users: {  }
+    permissions: {  }
+handlers: {  }
+variants: {  }
diff --git a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_handler_settings.yml b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_handler_settings.yml
index 2c0464daf7af0f162185691713cd37f6e0d09d12..b62d72d22e90bfe80ae996d274eff11adee78099 100644
--- a/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_handler_settings.yml
+++ b/web/modules/webform/tests/modules/webform_test/config/install/webform.webform.test_handler_settings.yml
@@ -263,7 +263,7 @@ handlers:
       confirmation_url: ''
       confirmation_title: ''
       confirmation_message: ''
-      debug: '1'
+      debug: true
   confirmation:
     id: settings
     label: 'Confirmation Settings'
@@ -281,7 +281,7 @@ handlers:
       confirmation_url: ''
       confirmation_title: '[webform_submission:values:confirmation_title]'
       confirmation_message: '[webform_submission:values:confirmation_message]'
-      debug: '1'
+      debug: true
   custom:
     id: settings
     label: 'Custom settings'
@@ -299,7 +299,7 @@ handlers:
       confirmation_url: ''
       confirmation_title: ''
       confirmation_message: ''
-      debug: '1'
+      debug: true
       draft_saved_message: '[webform_submission:values:draft_saved_message]'
       draft_loaded_message: '[webform_submission:values:draft_loaded_message]'
 variants: {  }
diff --git a/web/modules/webform/tests/modules/webform_test/webform_test.info.yml b/web/modules/webform/tests/modules/webform_test/webform_test.info.yml
index 99ba01b206f7f8c6bfd72af724baadd1a176d849..c955f63dd532c48dc611ce4f3a13e5f1828d3f07 100644
--- a/web/modules/webform/tests/modules/webform_test/webform_test.info.yml
+++ b/web/modules/webform/tests/modules/webform_test/webform_test.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml b/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml
index 1eae3bad898a94127b2a94df33c6aa55282f63a2..678459c37376ba14e62cea76e643c09b2834c208 100644
--- a/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_ajax/webform_test_ajax.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:block'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml b/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml
index 1c0e29fe6461b1fd4ffcbbb21101701022e59fa2..b3754817be29cc00f21ac45ce5a7221920fba7bd 100644
--- a/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_alter_hooks/webform_test_alter_hooks.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml b/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml
index adf2488e1383ced3a16baebf791a9b79724a7c3b..9bb232fc00b238f65042f3f18080632fc1e69779 100644
--- a/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_block_context/webform_test_block_context.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:block'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml b/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml
index d5b6eab10b07d134efa1dfb0bf0d79584e1b78c5..d9a2d9b1688361040371fbf8ee110bdafd1beb20 100644
--- a/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_block_custom/webform_test_block_custom.info.yml
@@ -8,7 +8,7 @@ dependencies:
   - 'drupal:block_content'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml b/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml
index e4f0e31cec4581b120a66e79753a688db8df7d82..6fb69f9d4c0046f3bd09e49cf46cc083117d26fa 100644
--- a/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_block_submission_limit/webform_test_block_submission_limit.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:block'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml b/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml
index 3baf24e865925d19cea686d6d965761ccf213c8a..c66df72c81e0834d6b2353ae78addc7e91233486 100644
--- a/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_config_performance/webform_test_config_performance.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml b/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml
index a9e6fd6b8122511b40a6189584eb61f49d4c18bb..90d12d8a633151aadd1d4ba47d7d22998767e545 100644
--- a/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_editorial/webform_test_editorial.info.yml
@@ -7,7 +7,7 @@ configure: webform_test_editorial.index
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml b/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml
index 273f148eb2a0ce6d0ec6832074c3078933c21a5e..ea0682f9091e5892c3a75cbdfd613e82c2da02f7 100644
--- a/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_element/webform_test_element.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml b/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml
index 320d449d194372c5fc51e1dcdc475af3dbbbc6cf..6e9e6e830558b488a509feb011caa9beed766087 100644
--- a/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_element_input_masks/webform_test_element_input_masks.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml b/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml
index ee08abe1f5a2fcf79692303ddb23e174b82c9a91..4664826bab7702ac0820abf51f897c6968143872 100644
--- a/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_entity_reference_views/webform_test_entity_reference_views.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:views'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml b/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml
index 25a5531c8c450147e13128dd3649247c825ec13f..4fb6522a480d81c82f358ea2adf5139017325fa6 100644
--- a/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_exporter/webform_test_exporter.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml b/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml
index 42d85fec5f352c8085d72abeb868e5de593b7ebe..024e2ac4eca39c46d6953daeff907b94cd1c4915 100644
--- a/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_handler/webform_test_handler.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml b/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml
index 6588ec80c8bfd6d0cd3104689b18c96e7413eddb..7cd4b9a2e0752ae9bd7e142f8ba035498c008cf9 100644
--- a/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_handler_invoke_alter/webform_test_handler_invoke_alter.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml b/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml
index cb1eb9f0c6233fa98dbc40a924d03dc1d00588a4..360c5a0cc5f9ddd090c411fbb774a6ae65d1c060 100644
--- a/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_handler_remote_post/webform_test_handler_remote_post.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml b/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml
index 1d66f6cd677cb733ac0af5d2e3af3b788508aa1e..1181d3967116eae3e335a80e02f4ff8098546207 100644
--- a/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_markup/webform_test_markup.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml b/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml
index 831b1b125542ed7cc67244a3fb0dd6a98638d0bb..24e8f7e75df9562c107f61ccb587651b001f7ece 100644
--- a/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_message_custom/webform_test_message_custom.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml b/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml
index 6ce5cbb07e92c9021e0c18dcc9c412a844492075..a2ba58c1e1e1e635fec1fe3490b0b545eed9333e 100644
--- a/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_options/webform_test_options.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml b/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml
index 48c69656c8b6ac7a18396d215ffde9b859f531cd..bf954562de0f982525e71b8d5bd91216b0a012d5 100644
--- a/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_paragraphs/webform_test_paragraphs.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'paragraphs:paragraphs'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml b/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml
index 6505223ac657f01fafa4167b79c75defb82b423a..0806046b06901f13642ac65312c580affc3d2998 100644
--- a/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_rest/webform_test_rest.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:serialization'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml b/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml
index 7848528eb8832fea1d87c94bb3827a5a98b196c3..e1fe004fab908037a007a1bbf3ea9d3961220c42 100644
--- a/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_states/webform_test_states.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml b/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml
index d4ea79a2dc3f334a5f0d9d1b8af15e93b8239594..7a319ccf4a9641094e41cb5f83d49ef4d9102387 100644
--- a/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_submissions/webform_test_submissions.info.yml
@@ -7,7 +7,7 @@ dependencies:
   - 'drupal:node'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml b/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml
index 339e55563807d9bbf7a5bb1ca9ef425911650d52..55b181e8522c129a025a9203320c897fbc95f930 100644
--- a/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_third_party_settings/webform_test_third_party_settings.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml b/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml
index a2c4d11c3487e00b667c14fbbcfbf3dcdb7760e6..f95e1d3fb8c535410fa8b6dd4d35f9049489d87e 100644
--- a/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_translation/webform_test_translation.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'webform:webform'
   - 'webform:webform_image_select'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml b/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml
index 4c3256aa3fe9bcd7dcdfec7f867a565271e869e6..a31bf215c5f1628b123dcc5c15e14d03aa413392 100644
--- a/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_translation_lingotek/webform_test_translation_lingotek.info.yml
@@ -10,7 +10,7 @@ dependencies:
   - 'lingotek:lingotek'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml b/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml
index 6a828af3ee2fcc4445df066515be602ec3d3c338..f414e35cb6e8d2bf3692510a5745d84e52364045 100644
--- a/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_validate/webform_test_validate.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml b/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml
index 77d3da5c1233e0b3053ff1033ebcdb3df29328b9..e53b97359bf4e3b3fc560de396de0640e62528f3 100644
--- a/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_variant/webform_test_variant.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml b/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml
index c1d3167e2dad8a6cef7fae23969e241e513b5cdf..a160f82345217bd8441c4a0e13b147068a5f13a9 100644
--- a/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_views/webform_test_views.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:views'
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml b/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml
index c04330d345eb7b872534ae6c98d4ae26c4947fca..10bbfe2b2119735deabda232a40b5eb8fa63e5d8 100644
--- a/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml
+++ b/web/modules/webform/tests/modules/webform_test_wizard_custom/webform_test_wizard_custom.info.yml
@@ -6,7 +6,7 @@ core_version_requirement: ^9.4 || ^10
 dependencies:
   - 'webform:webform'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementActionsTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementActionsTest.php
index 31464acdde68ac657bd60c5ebd98bdd2f4c67eca..e788f866b9f3c24350de8af1aa4a3c2db24fb25c 100644
--- a/web/modules/webform/tests/src/Functional/Element/WebformElementActionsTest.php
+++ b/web/modules/webform/tests/src/Functional/Element/WebformElementActionsTest.php
@@ -80,7 +80,13 @@ public function testActions() {
     $this->drupalGet('/webform/test_element_actions');
     $this->submitForm([], 'Save Draft');
     $sid = $this->getLastSubmissionId($webform);
-    $assert_session->responseContains('<a href="' . $base_path . 'admin/structure/webform/manage/test_element_actions/submission/' . $sid . '/delete?destination=' . $base_path . 'webform/test_element_actions" class="button button--danger custom-delete" style="font-weight: bold" data-custom-delete data-drupal-selector="edit-actions-custom-delete" id="edit-actions-custom-delete" hreflang="en">{Custom delete}</a>');
+    // @todo Remove once Drupal 10.1.x is only supported.
+    if (floatval(\Drupal::VERSION) >= 10.1) {
+      $assert_session->responseContains('<a href="' . $base_path . 'admin/structure/webform/manage/test_element_actions/submission/' . $sid . '/delete?destination=' . $base_path . 'webform/test_element_actions" class="button button--danger use-ajax custom-delete" data-dialog-type="modal" data-dialog-options="{&quot;width&quot;:880}" style="font-weight: bold" data-custom-delete data-drupal-selector="edit-actions-custom-delete" id="edit-actions-custom-delete" hreflang="en">{Custom delete}</a>');
+    }
+    else {
+      $assert_session->responseContains('<a href="' . $base_path . 'admin/structure/webform/manage/test_element_actions/submission/' . $sid . '/delete?destination=' . $base_path . 'webform/test_element_actions" class="button button--danger custom-delete" style="font-weight: bold" data-custom-delete data-drupal-selector="edit-actions-custom-delete" id="edit-actions-custom-delete" hreflang="en">{Custom delete}</a>');
+    }
     $this->assertCssSelect('[id="edit-actions-delete"]');
 
     /* ********************************************************************** */
diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementDateListTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementDateListTest.php
index c295f70be3b788c542577dcd454ec5caf1bdaa4d..7c1cca8af64f577dd742ab1468cdfd1ea58782da 100644
--- a/web/modules/webform/tests/src/Functional/Element/WebformElementDateListTest.php
+++ b/web/modules/webform/tests/src/Functional/Element/WebformElementDateListTest.php
@@ -38,6 +38,8 @@ public function testDateListElement() {
 datelist_min_max_time: '2009-01-01T09:00:00+1100'
 datelist_date_year_range_reverse: ''
 datelist_required_error: '2009-08-18T16:00:00+1000'
+datelist_conditional: 0
+datelist_conditional_required: ''
 datelist_multiple:
   - '2009-08-18T16:00:00+1000'
 datelist_custom_composite:
@@ -115,6 +117,10 @@ public function testDateListElement() {
     ];
     $this->submitForm($edit, 'Submit');
     $assert_session->responseContains('Custom required error');
+
+    // Check that the datelist element's states is copied to the child inputs.
+    $this->drupalGet('/webform/test_element_datelist');
+    $assert_session->responseContains('<select data-drupal-selector="edit-datelist-conditional-required-year" title="Year" id="edit-datelist-conditional-required-year" name="datelist_conditional_required[year]" class="form-select" data-drupal-states="{&quot;required&quot;:{&quot;.webform-submission-test-element-datelist-add-form :input[name=\u0022datelist_conditional\u0022]&quot;:{&quot;checked&quot;:true}}}">');
   }
 
 }
diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php
index ed93856941e6a2c435fdc025e1bbb3f4307e32e4..97c74e74b55cba5fc7a1019f6585236ed00e9d01 100644
--- a/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php
+++ b/web/modules/webform/tests/src/Functional/Element/WebformElementEmailConfirmTest.php
@@ -25,7 +25,7 @@ public function testEmailConfirm() {
     $this->drupalGet('/webform/test_element_email_confirm');
 
     // Check basic email confirm.
-    $assert_session->responseContains('<fieldset id="edit-email-confirm-basic--wrapper" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">');
+    $assert_session->responseContains('<fieldset id="edit-email-confirm-basic" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">');
     $assert_session->responseContains('<span class="visually-hidden fieldset-legend">email_confirm_basic</span>');
     $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-basic-mail-1 js-form-item-email-confirm-basic-mail-1">');
     $assert_session->responseContains('<label for="edit-email-confirm-basic-mail-1">email_confirm_basic</label>');
@@ -35,7 +35,7 @@ public function testEmailConfirm() {
     $assert_session->responseContains('<input data-drupal-selector="edit-email-confirm-basic-mail-2" class="webform-email-confirm form-email" type="email" id="edit-email-confirm-basic-mail-2" name="email_confirm_basic[mail_2]" value="" size="60" maxlength="254" />');
 
     // Check advanced email confirm w/ custom label.
-    $assert_session->responseContains('<fieldset id="edit-email-confirm-advanced--wrapper" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">');
+    $assert_session->responseContains('<fieldset id="edit-email-confirm-advanced" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">');
     $assert_session->responseContains('<span class="visually-hidden fieldset-legend">Email address</span>');
     $assert_session->responseContains('<div class="js-form-item form-item js-form-type-email form-item-email-confirm-advanced-mail-1 js-form-item-email-confirm-advanced-mail-1">');
     $assert_session->responseContains('<label for="edit-email-confirm-advanced-mail-1">Email address</label>');
@@ -50,7 +50,7 @@ public function testEmailConfirm() {
     $assert_session->responseContains('<div data-drupal-selector="edit-email-confirm-flexbox-flexbox" class="webform-flexbox js-webform-flexbox js-form-wrapper form-wrapper" id="edit-email-confirm-flexbox-flexbox"><div class="webform-flex webform-flex--1"><div class="webform-flex--container">');
 
     // Check inline title.
-    $assert_session->responseContains('<fieldset id="edit-email-confirm-inline--wrapper" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">');
+    $assert_session->responseContains('<fieldset id="edit-email-confirm-inline" class="webform-email-confirm--wrapper fieldgroup form-composite webform-composite-hidden-title js-webform-type-webform-email-confirm webform-type-webform-email-confirm js-form-item form-item js-form-wrapper form-wrapper">');
     $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item js-form-type-email form-item-email-confirm-inline-mail-1 js-form-item-email-confirm-inline-mail-1">');
     $assert_session->responseContains('<div class="webform-element--title-inline js-form-item form-item js-form-type-email form-item-email-confirm-inline-mail-2 js-form-item-email-confirm-inline-mail-2">');
 
diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php
index 2c8cc72ab2c664da5c680a8d80266057abf62d76..b97757c58ad87ebea872dfbbcf131c6aeaa0d0a4 100644
--- a/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php
+++ b/web/modules/webform/tests/src/Functional/Element/WebformElementFormatCustomTest.php
@@ -51,7 +51,6 @@ public function testFormatCustom() {
     $fid = (int) \Drupal::database()->query('SELECT MAX(fid) FROM {file_managed}')->fetchField();
     $file = File::load($fid);
     $file_name = $file->getFilename();
-    $file_size = $file->getSize();
     $file_url = $file->createFileUrl(FALSE);
 
     /* ********************************************************************** */
diff --git a/web/modules/webform/tests/src/Functional/Element/WebformElementXssTest.php b/web/modules/webform/tests/src/Functional/Element/WebformElementXssTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d966c529595ae682f438e47dbf016c8d6bdbd59
--- /dev/null
+++ b/web/modules/webform/tests/src/Functional/Element/WebformElementXssTest.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace Drupal\Tests\webform\Functional\Element;
+
+/**
+ * Tests for webform element XSS.
+ *
+ * @group webform
+ */
+class WebformElementXssTest extends WebformElementBrowserTestBase {
+
+  /**
+   * Webforms to load.
+   *
+   * @var array
+   */
+  protected static $testWebforms = ['test_element_xss'];
+
+  /**
+   * Test time element.
+   */
+  public function testTime() {
+    $assert_session = $this->assertSession();
+    $this->drupalGet('/webform/test_element_xss');
+    $this->submitForm([], 'Submit');
+    $assert_session->responseNotContains('<img src="https://www.drupal.org/" />');
+  }
+
+}
diff --git a/web/modules/webform/tests/src/Functional/Variant/WebformVariantTest.php b/web/modules/webform/tests/src/Functional/Variant/WebformVariantTest.php
index 9ac5261a4a0ebcd5ddbc6d059d7cb82aa7f365fd..3bb038a9e54e2340ed54d8c84c389abaf24b2ccc 100644
--- a/web/modules/webform/tests/src/Functional/Variant/WebformVariantTest.php
+++ b/web/modules/webform/tests/src/Functional/Variant/WebformVariantTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\Tests\webform\Functional\Handler;
+namespace Drupal\Tests\webform\Functional\Variant;
 
 use Drupal\Tests\webform\Functional\WebformBrowserTestBase;
 
diff --git a/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php b/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php
index 5d5e4ffeb38686511bee7846680c7c311929e82e..7910f9202cb60f89143a8f54520e228eb472f3ed 100644
--- a/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php
+++ b/web/modules/webform/tests/src/Functional/WebformSubmissionApiTest.php
@@ -140,7 +140,9 @@ public function testApi() {
     WebformElementHelper::convertRenderMarkupToStrings($errors);
     // $this->debug($errors);
     $this->assertEquals($errors, [
-      'sex' => 'An illegal choice has been detected. Please contact the site administrator.',
+      'sex' => (floatval(\Drupal::VERSION) >= 10.1)
+        ? 'The submitted value <em class="placeholder">INVALID</em> in the <em class="placeholder">Sex</em> element is not allowed.'
+        : 'An illegal choice has been detected. Please contact the site administrator.',
     ]);
 
     /* ********************************************************************** */
diff --git a/web/modules/webform/tests/src/FunctionalJavascript/WebformFilterJavaScriptTest.php b/web/modules/webform/tests/src/FunctionalJavascript/WebformFilterJavaScriptTest.php
index f243dc3979269642c43190307692ec3d05fa6114..b4cb10ae2e2bf17faf975b121bdd6cff96597bbe 100644
--- a/web/modules/webform/tests/src/FunctionalJavascript/WebformFilterJavaScriptTest.php
+++ b/web/modules/webform/tests/src/FunctionalJavascript/WebformFilterJavaScriptTest.php
@@ -13,7 +13,7 @@ class WebformFilterJavaScriptTest extends WebformWebDriverTestBase {
    * Test filter.
    */
   public function testFilter() {
-    // Set admin theme to seven.
+    // Set admin theme to claro.
     \Drupal::service('theme_installer')->install(['claro']);
     \Drupal::configFactory()->getEditable('system.theme')
       ->set('admin', 'claro')
@@ -38,6 +38,7 @@ public function testFilter() {
     $assert_session->waitForElementVisible('css', '.webform-addons-summary');
     $assert_session->waitForText(count($addons_manager->getProjects()) . ' add-ons');
     $this->assertTrue($page->findLink('Address')->isVisible());
+    sleep(1);
     $this->assertFalse($page->find('css', '.webform-addons-no-results')->isVisible());
     $this->assertFalse($page->find('css', '.webform-form-filter-reset')->isVisible());
 
diff --git a/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml b/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml
index 5eb88ef090a0736dbcb0f8657537301af744ce67..7fbcefd6b84b376a249cde22fadc678c107a07c0 100644
--- a/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml
+++ b/web/modules/webform/tests/themes/webform_test_olivero/webform_test_olivero.info.yml
@@ -5,7 +5,7 @@ name: 'Webform Olivero test'
 description: 'Support theme for webform Olivero integration testing.'
 package: 'Webform Testing'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/third_party_settings/webform.antibot.inc b/web/modules/webform/third_party_settings/webform.antibot.inc
index e44288114b6d603e7def37f91c9363c4587bc4fd..6a4279ab892ea313e00a090f77ecf952910a8be5 100644
--- a/web/modules/webform/third_party_settings/webform.antibot.inc
+++ b/web/modules/webform/third_party_settings/webform.antibot.inc
@@ -23,6 +23,19 @@
  */
 define('WEBFORM_ANTIBOT_ENABLED_WEBFORM', 3);
 
+/**
+ * Determine if antibot is enabled for webform submissions.
+ *
+ * @return bool
+ *   TRUE if antibot is enabled for webform submissions.
+ */
+function _webform_antibot_enabled() {
+  /** @var \Drupal\Core\Path\PathMatcherInterface $path_matcher */
+  $path_matcher = \Drupal::service('path.matcher');
+  $form_ids = \Drupal::config('antibot.settings')->get('form_ids') ?? [];
+  return $path_matcher->matchPath('webform_submission_asdas', implode("\n", $form_ids));
+}
+
 /**
  * Alter webform third party settings webforms to include Antibot configuration.
  *
@@ -39,6 +52,10 @@
  *   The label to displayed within the checkbox titles.
  */
 function _webform_antibot_form(array &$form, FormStateInterface $form_state, $antibot, $antibot_state, $label) {
+  if (_webform_antibot_enabled()) {
+    return;
+  }
+
   $t_args = [
     '%label' => $label,
     ':href_antibot' => Url::fromRoute('antibot.settings')->toString(),
@@ -133,6 +150,10 @@ function antibot_webform_third_party_settings_form_alter(&$form, FormStateInterf
  * Implements hook_webform_submission_form_alter().
  */
 function antibot_webform_submission_form_alter(&$form, FormStateInterface $form_state, $form_id) {
+  if (_webform_antibot_enabled()) {
+    return;
+  }
+
   // Only add an Antibot when a webform is initially load.
   // After a webform is submitted, via a multi-step webform and/or saving a draft,
   // we can skip adding an Antibot.
diff --git a/web/modules/webform/webform.info.yml b/web/modules/webform/webform.info.yml
index 48af50ec56d7d3c1667f418ae3c8de8ad6a6cf48..bb27709588e431979f60e8fbae084bc0e35cd8f8 100644
--- a/web/modules/webform/webform.info.yml
+++ b/web/modules/webform/webform.info.yml
@@ -9,7 +9,7 @@ dependencies:
   - 'drupal:filter'
   - 'drupal:user'
 
-# Information added by Drupal.org packaging script on 2023-06-12
-version: '6.2.0-beta6'
+# Information added by Drupal.org packaging script on 2023-10-05
+version: '6.2.0-beta7'
 project: 'webform'
-datestamp: 1686598823
+datestamp: 1696543702
diff --git a/web/modules/webform/webform.libraries.yml b/web/modules/webform/webform.libraries.yml
index 9194792b791c9edd954573c03fc048e7d37cce77..05c5521fbc691d2fc434c644d788d998c73109a2 100644
--- a/web/modules/webform/webform.libraries.yml
+++ b/web/modules/webform/webform.libraries.yml
@@ -1329,14 +1329,14 @@ libraries.popperjs:
 
 libraries.tippyjs:
   remote: https://github.com/atomiks/tippyjs
-  version: '6.2.6'
+  version: '6.3.7'
   license:
     name: MIT
     url: https://github.com/atomiks/tippyjs/blob/master/LICENSE
     gpl-compatible: true
   directory: tippyjs
   cdn:
-    /libraries/tippyjs/dist/: https://unpkg.com/tippy.js@6.2.6/dist/
+    /libraries/tippyjs/dist/: https://unpkg.com/tippy.js@6.3.7/dist/
   js:
     /libraries/tippyjs/dist/tippy-bundle.umd.js: { }
   dependencies:
diff --git a/web/modules/webform/webform.module b/web/modules/webform/webform.module
index 5dc74e329aa28c100169956acbc39cd2cdc643cb..6c571421262d972a012ec39c6b8742a89d686546 100644
--- a/web/modules/webform/webform.module
+++ b/web/modules/webform/webform.module
@@ -632,6 +632,7 @@ function webform_page_attachments(array &$attachments) {
 function webform_metatags_alter(array &$metatags, array &$context) {
   $route_name = \Drupal::routeMatch()->getRouteName();
   if (!empty(\Drupal::config('webform.settings')->get('settings.default_confirmation_noindex'))
+    && $route_name
     && preg_match('/^(entity\.webform\.confirmation|entity\.[a-z-_]+\.webform\.confirmation)$/', $route_name)) {
     $robots = (!empty($metatags['robots']))
       ? preg_split('/\s*,\s*/', $metatags['robots'])