diff --git a/web/package.json b/web/package.json
index 915658da..3e374f82 100644
--- a/web/package.json
+++ b/web/package.json
@@ -142,7 +142,7 @@
     "eslint-plugin-react": "7.27.1",
     "eslint-plugin-react-hooks": "4.3.0",
     "husky": "7.0.2",
-    "jest": "27.4.2",
+    "jest": "27.4.3",
     "jest-transform-stub": "2.0.0",
     "jest-watch-typeahead": "1.0.0",
     "prettier": "2.5.0",
diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml
index 318ade53..54ed12a5 100644
--- a/web/pnpm-lock.yaml
+++ b/web/pnpm-lock.yaml
@@ -33,7 +33,7 @@ specifiers:
   eslint-plugin-react: 7.27.1
   eslint-plugin-react-hooks: 4.3.0
   husky: 7.0.2
-  jest: 27.4.2
+  jest: 27.4.3
   jest-transform-stub: 2.0.0
   jest-watch-typeahead: 1.0.0
   prettier: 2.5.0
@@ -98,9 +98,9 @@ devDependencies:
   eslint-plugin-react: 7.27.1
   eslint-plugin-react-hooks: 4.3.0
   husky: 7.0.2
-  jest: 27.4.2
+  jest: 27.4.3
   jest-transform-stub: 2.0.0
-  jest-watch-typeahead: 1.0.0_jest@27.4.2
+  jest-watch-typeahead: 1.0.0_jest@27.4.3
   prettier: 2.5.0
   react-test-renderer: 17.0.2_react@17.0.2
   typescript: 4.5.2
@@ -817,18 +817,6 @@ packages:
     engines: {node: '>=8'}
     dev: true
 
-  /@jest/console/27.4.1:
-    resolution: {integrity: sha512-sZqhfQnSpjSST2Nxu7XLzAVtXzPnNHD+irkb1gOK6AXoQwx9l9qZB9+iPUuBHlB4enr5ljvfWuXzwMgM4aKjOw==}
-    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
-    dependencies:
-      '@jest/types': 27.4.1
-      '@types/node': 16.11.11
-      chalk: 4.1.2
-      jest-message-util: 27.4.1
-      jest-util: 27.4.1
-      slash: 3.0.0
-    dev: true
-
   /@jest/console/27.4.2:
     resolution: {integrity: sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -841,8 +829,8 @@ packages:
       slash: 3.0.0
     dev: true
 
-  /@jest/core/27.4.2:
-    resolution: {integrity: sha512-0mPM61tDbu8yc9CMKH9bvV+g+17VUpdWQtU1x6P1gk4AKj8iywWi8zBmEIl7pTGjUtYA92CNc/LlBfKCioBOow==}
+  /@jest/core/27.4.3:
+    resolution: {integrity: sha512-V9ms3zSxUHxh1E/ZLAiXF7SLejsdFnjWTFizWotMOWvjho0lW5kSjZymhQSodNW0T0ZMQRiha7f8+NcFVm3hJQ==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     peerDependencies:
       node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
@@ -862,13 +850,13 @@ packages:
       exit: 0.1.2
       graceful-fs: 4.2.8
       jest-changed-files: 27.4.2
-      jest-config: 27.4.2
+      jest-config: 27.4.3
       jest-haste-map: 27.4.2
       jest-message-util: 27.4.2
       jest-regex-util: 27.4.0
       jest-resolve: 27.4.2
       jest-resolve-dependencies: 27.4.2
-      jest-runner: 27.4.2
+      jest-runner: 27.4.3
       jest-runtime: 27.4.2
       jest-snapshot: 27.4.2
       jest-util: 27.4.2
@@ -964,16 +952,6 @@ packages:
       source-map: 0.6.1
     dev: true
 
-  /@jest/test-result/27.4.1:
-    resolution: {integrity: sha512-vSua8v5V5j4D/YVGRGHXiR4HzT4GrtZSoL0F9TKHDk7PHD/OGliupaL15M+OC661P4OTQcqyQhWaqYIUkBeN8Q==}
-    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
-    dependencies:
-      '@jest/console': 27.4.1
-      '@jest/types': 27.4.1
-      '@types/istanbul-lib-coverage': 2.0.3
-      collect-v8-coverage: 1.0.1
-    dev: true
-
   /@jest/test-result/27.4.2:
     resolution: {integrity: sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -1053,17 +1031,6 @@ packages:
       chalk: 4.1.2
     dev: true
 
-  /@jest/types/27.4.1:
-    resolution: {integrity: sha512-Uvy+gMBzj6Yak95w1g83AEwhoqzs2letmwKNvb1QgLsqkCxy9NIpNUjrgmra87FVMDsFFgCxcZ6ZaHkQFXJ7Zg==}
-    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
-    dependencies:
-      '@types/istanbul-lib-coverage': 2.0.3
-      '@types/istanbul-reports': 3.0.1
-      '@types/node': 16.11.11
-      '@types/yargs': 16.0.4
-      chalk: 4.1.2
-    dev: true
-
   /@jest/types/27.4.2:
     resolution: {integrity: sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -1472,14 +1439,6 @@ packages:
       pretty-format: 27.4.2
     dev: true
 
-  /@types/jsdom/16.2.13:
-    resolution: {integrity: sha512-8JQCjdeAidptSsOcRWk2iTm9wCcwn9l+kRG6k5bzUacrnm1ezV4forq0kWjUih/tumAeoG+OspOvQEbbRucBTw==}
-    dependencies:
-      '@types/node': 16.11.11
-      '@types/parse5': 6.0.2
-      '@types/tough-cookie': 4.0.1
-    dev: true
-
   /@types/json-schema/7.0.9:
     resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==}
     dev: true
@@ -1504,10 +1463,6 @@ packages:
     resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
     dev: true
 
-  /@types/parse5/6.0.2:
-    resolution: {integrity: sha512-+hQX+WyJAOne7Fh3zF5CxPemILIbuhNcqHHodzK9caYOLnC8pD5efmPleRnw0z++LfKUC/sVNMwk0Gap+B0baA==}
-    dev: true
-
   /@types/prettier/2.4.1:
     resolution: {integrity: sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==}
     dev: true
@@ -1553,10 +1508,6 @@ packages:
       '@types/jest': 27.0.2
     dev: true
 
-  /@types/tough-cookie/4.0.1:
-    resolution: {integrity: sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg==}
-    dev: true
-
   /@types/yargs-parser/20.2.1:
     resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==}
     dev: true
@@ -4146,8 +4097,8 @@ packages:
       - supports-color
     dev: true
 
-  /jest-cli/27.4.2:
-    resolution: {integrity: sha512-Ex2WhCj4s0XFntTKTnyLgV/CZKgQaZBYrKz02XOZ4nUjFD+26Fji/M1SgHm+2IWEIsQqoipNRx9RJH56p8d7MQ==}
+  /jest-cli/27.4.3:
+    resolution: {integrity: sha512-zZSJBXNC/i8UnJPwcKWsqnhGgIF3uoTYP7th32Zej7KNQJdxzOMj+wCfy2Ox3kU7nXErJ36DtYyXDhfiqaiDRw==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     hasBin: true
     peerDependencies:
@@ -4156,14 +4107,14 @@ packages:
       node-notifier:
         optional: true
     dependencies:
-      '@jest/core': 27.4.2
+      '@jest/core': 27.4.3
       '@jest/test-result': 27.4.2
       '@jest/types': 27.4.2
       chalk: 4.1.2
       exit: 0.1.2
       graceful-fs: 4.2.8
       import-local: 3.0.3
-      jest-config: 27.4.2
+      jest-config: 27.4.3
       jest-util: 27.4.2
       jest-validate: 27.4.2
       prompts: 2.4.2
@@ -4176,8 +4127,8 @@ packages:
       - utf-8-validate
     dev: true
 
-  /jest-config/27.4.2:
-    resolution: {integrity: sha512-2vKqelsfHPnIzrPTpE9hImqxZLp5l9Vszpci19RdVB2i5OwoM+OkPExZMQb8aGrpEGXoKtlzvdqCL1GObiz8JQ==}
+  /jest-config/27.4.3:
+    resolution: {integrity: sha512-DQ10HTSqYtC2pO7s9j2jw+li4xUnm2wLYWH2o7K1ftB8NyvToHsXoLlXxtsGh3AW9gUQR6KY/4B7G+T/NswJBw==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     peerDependencies:
       ts-node: '>=9.0.0'
@@ -4195,13 +4146,13 @@ packages:
       glob: 7.2.0
       graceful-fs: 4.2.8
       jest-circus: 27.4.2
-      jest-environment-jsdom: 27.4.2
+      jest-environment-jsdom: 27.4.3
       jest-environment-node: 27.4.2
       jest-get-type: 27.4.0
       jest-jasmine2: 27.4.2
       jest-regex-util: 27.4.0
       jest-resolve: 27.4.2
-      jest-runner: 27.4.2
+      jest-runner: 27.4.3
       jest-util: 27.4.2
       jest-validate: 27.4.2
       micromatch: 4.0.4
@@ -4242,14 +4193,13 @@ packages:
       pretty-format: 27.4.2
     dev: true
 
-  /jest-environment-jsdom/27.4.2:
-    resolution: {integrity: sha512-L0dV4oq4+Ll7hZ8QCGvSELn8uOr938/QKOg6o70kMHiZOpWOjAqSf7fMVAtGhG/BVSvk1GTzhGJNOWsxtH5KbQ==}
+  /jest-environment-jsdom/27.4.3:
+    resolution: {integrity: sha512-x1AUVz3G14LpEJs7KIFUaTINT2n0unOUmvdAby3s/sldUpJJetOJifHo1O/EUQC5fNBowggwJbVulko18y6OWw==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     dependencies:
       '@jest/environment': 27.4.2
       '@jest/fake-timers': 27.4.2
       '@jest/types': 27.4.2
-      '@types/jsdom': 16.2.13
       '@types/node': 16.11.11
       jest-mock: 27.4.2
       jest-util: 27.4.2
@@ -4363,21 +4313,6 @@ packages:
       pretty-format: 27.4.2
     dev: true
 
-  /jest-message-util/27.4.1:
-    resolution: {integrity: sha512-oC3sEs5dDHk5ibCrjIkDoe2S+U2bGogI3b8D9bGyKxJu/HSyibG/pWBI27gG3cwXgRyiGXZHuSiVCq7f+PoYcw==}
-    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
-    dependencies:
-      '@babel/code-frame': 7.16.0
-      '@jest/types': 27.4.1
-      '@types/stack-utils': 2.0.1
-      chalk: 4.1.2
-      graceful-fs: 4.2.8
-      micromatch: 4.0.4
-      pretty-format: 27.4.1
-      slash: 3.0.0
-      stack-utils: 2.0.5
-    dev: true
-
   /jest-message-util/27.4.2:
     resolution: {integrity: sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -4455,8 +4390,8 @@ packages:
       slash: 3.0.0
     dev: true
 
-  /jest-runner/27.4.2:
-    resolution: {integrity: sha512-YsgbYKk8V7J5BQPINXhdzNLoqIwUWrJkV9h6/ccsn6fbmC3n3ax1K5cDWzAU9qXyaQhetwFqPpHmAHIACscRKQ==}
+  /jest-runner/27.4.3:
+    resolution: {integrity: sha512-JgR6Om/j22Fd6ZUUIGTWNcCtuZVYbNrecb4k89W4UyFJoRtHpo2zMKWkmFFFJoqwWGrfrcPLnVBIgkJiTV3cyA==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     dependencies:
       '@jest/console': 27.4.2
@@ -4470,7 +4405,7 @@ packages:
       exit: 0.1.2
       graceful-fs: 4.2.8
       jest-docblock: 27.4.0
-      jest-environment-jsdom: 27.4.2
+      jest-environment-jsdom: 27.4.3
       jest-environment-node: 27.4.2
       jest-haste-map: 27.4.2
       jest-leak-detector: 27.4.2
@@ -4586,18 +4521,6 @@ packages:
       micromatch: 4.0.4
     dev: true
 
-  /jest-util/27.4.1:
-    resolution: {integrity: sha512-Ls+zHJ//wK1/9GIlSmFyP+IipdUa6hB8YVbJMRxq5Ik/1iwqgq5iBaO6SMWizB2eb1+x+JQHCGdjtZdT2Bn9tg==}
-    engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
-    dependencies:
-      '@jest/types': 27.4.1
-      '@types/node': 16.11.11
-      chalk: 4.1.2
-      ci-info: 3.2.0
-      graceful-fs: 4.2.8
-      picomatch: 2.3.0
-    dev: true
-
   /jest-util/27.4.2:
     resolution: {integrity: sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -4622,7 +4545,7 @@ packages:
       pretty-format: 27.4.2
     dev: true
 
-  /jest-watch-typeahead/1.0.0_jest@27.4.2:
+  /jest-watch-typeahead/1.0.0_jest@27.4.3:
     resolution: {integrity: sha512-jxoszalAb394WElmiJTFBMzie/RDCF+W7Q29n5LzOPtcoQoHWfdUtHFkbhgf5NwWe8uMOxvKb/g7ea7CshfkTw==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     peerDependencies:
@@ -4630,7 +4553,7 @@ packages:
     dependencies:
       ansi-escapes: 4.3.2
       chalk: 4.1.2
-      jest: 27.4.2
+      jest: 27.4.3
       jest-regex-util: 27.0.6
       jest-watcher: 27.3.1
       slash: 4.0.0
@@ -4642,12 +4565,12 @@ packages:
     resolution: {integrity: sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     dependencies:
-      '@jest/test-result': 27.4.1
-      '@jest/types': 27.4.1
+      '@jest/test-result': 27.4.2
+      '@jest/types': 27.4.2
       '@types/node': 16.11.11
       ansi-escapes: 4.3.2
       chalk: 4.1.2
-      jest-util: 27.4.1
+      jest-util: 27.4.2
       string-length: 4.0.2
     dev: true
 
@@ -4682,8 +4605,8 @@ packages:
       supports-color: 8.1.1
     dev: true
 
-  /jest/27.4.2:
-    resolution: {integrity: sha512-TAReynFYCfHNcrL+8Z74WPGafLFLF++bGkrpcsk6cO5G9S2VuJGhu2c44YFForMgF0GlYmtbpmeznkvZpNgTxg==}
+  /jest/27.4.3:
+    resolution: {integrity: sha512-jwsfVABBzuN3Atm+6h6vIEpTs9+VApODLt4dk2qv1WMOpb1weI1IIZfuwpMiWZ62qvWj78MvdvMHIYdUfqrFaA==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     hasBin: true
     peerDependencies:
@@ -4692,9 +4615,9 @@ packages:
       node-notifier:
         optional: true
     dependencies:
-      '@jest/core': 27.4.2
+      '@jest/core': 27.4.3
       import-local: 3.0.3
-      jest-cli: 27.4.2
+      jest-cli: 27.4.3
     transitivePeerDependencies:
       - bufferutil
       - canvas
@@ -5555,7 +5478,7 @@ packages:
     resolution: {integrity: sha512-JJw4GzG0vP5dHA+D84zryrX3S34B6rZaJj6zsrN/sdNpcUNf1X6aH/7sPSqwtAGNXCxDqMa1wAKX4EH1Tv62aw==}
     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
     dependencies:
-      '@jest/types': 27.4.1
+      '@jest/types': 27.4.2
       ansi-regex: 5.0.1
       ansi-styles: 5.2.0
       react-is: 17.0.2