about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.github/stylelint-matcher.json21
-rw-r--r--.github/workflows/build-image.yml43
-rw-r--r--.github/workflows/check-i18n.yml2
-rw-r--r--.github/workflows/linter.yml12
-rw-r--r--Gemfile4
-rw-r--r--Gemfile.lock32
-rw-r--r--app/helpers/branding_helper.rb2
-rw-r--r--app/javascript/icons/favicon-16x16.pngbin650 -> 639 bytes
-rw-r--r--app/javascript/icons/favicon-32x32.pngbin1248 -> 1250 bytes
-rw-r--r--app/javascript/icons/favicon-48x48.pngbin1798 -> 1899 bytes
-rw-r--r--app/javascript/images/logo-symbol-icon.svg2
-rw-r--r--app/javascript/images/logo.svg2
-rw-r--r--app/javascript/images/mailer/logo.pngbin1745 -> 1673 bytes
-rw-r--r--app/javascript/images/mailer/wordmark.pngbin8942 -> 8991 bytes
-rw-r--r--app/javascript/mastodon/locales/af.json2
-rw-r--r--app/javascript/mastodon/locales/ar.json10
-rw-r--r--app/javascript/mastodon/locales/de.json8
-rw-r--r--app/javascript/mastodon/locales/eo.json40
-rw-r--r--app/javascript/mastodon/locales/es-MX.json2
-rw-r--r--app/javascript/mastodon/locales/ga.json66
-rw-r--r--app/javascript/mastodon/locales/gd.json2
-rw-r--r--app/javascript/mastodon/locales/he.json156
-rw-r--r--app/javascript/mastodon/locales/id.json2
-rw-r--r--app/javascript/mastodon/locales/io.json2
-rw-r--r--app/javascript/mastodon/locales/ku.json2
-rw-r--r--app/javascript/mastodon/locales/lv.json40
-rw-r--r--app/javascript/mastodon/locales/oc.json18
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json4
-rw-r--r--app/javascript/mastodon/locales/sk.json18
-rw-r--r--app/javascript/mastodon/locales/sq.json74
-rw-r--r--app/javascript/styles/contrast/variables.scss8
-rw-r--r--app/javascript/styles/mastodon-light/variables.scss5
-rw-r--r--app/javascript/styles/mastodon/admin.scss6
-rw-r--r--app/javascript/styles/mastodon/components.scss32
-rw-r--r--app/javascript/styles/mastodon/containers.scss2
-rw-r--r--app/javascript/styles/mastodon/dashboard.scss4
-rw-r--r--app/javascript/styles/mastodon/forms.scss13
-rw-r--r--app/javascript/styles/mastodon/statuses.scss4
-rw-r--r--app/javascript/styles/mastodon/variables.scss2
-rw-r--r--app/views/accounts/show.rss.ruby1
-rw-r--r--app/views/tags/show.rss.ruby1
-rw-r--r--config/locales/activerecord.af.yml8
-rw-r--r--config/locales/activerecord.ast.yml10
-rw-r--r--config/locales/activerecord.ca.yml8
-rw-r--r--config/locales/activerecord.cs.yml8
-rw-r--r--config/locales/activerecord.da.yml8
-rw-r--r--config/locales/activerecord.de.yml8
-rw-r--r--config/locales/activerecord.en-GB.yml1
-rw-r--r--config/locales/activerecord.es-AR.yml8
-rw-r--r--config/locales/activerecord.es.yml8
-rw-r--r--config/locales/activerecord.fr.yml8
-rw-r--r--config/locales/activerecord.gl.yml8
-rw-r--r--config/locales/activerecord.hu.yml8
-rw-r--r--config/locales/activerecord.io.yml8
-rw-r--r--config/locales/activerecord.it.yml8
-rw-r--r--config/locales/activerecord.ja.yml8
-rw-r--r--config/locales/activerecord.ku.yml8
-rw-r--r--config/locales/activerecord.lv.yml8
-rw-r--r--config/locales/activerecord.pl.yml8
-rw-r--r--config/locales/activerecord.pt-PT.yml8
-rw-r--r--config/locales/activerecord.ru.yml8
-rw-r--r--config/locales/activerecord.sl.yml8
-rw-r--r--config/locales/activerecord.sq.yml8
-rw-r--r--config/locales/activerecord.tr.yml8
-rw-r--r--config/locales/activerecord.uk.yml8
-rw-r--r--config/locales/activerecord.vi.yml8
-rw-r--r--config/locales/activerecord.zh-CN.yml4
-rw-r--r--config/locales/activerecord.zh-TW.yml8
-rw-r--r--config/locales/af.yml18
-rw-r--r--config/locales/ar.yml2
-rw-r--r--config/locales/ast.yml4
-rw-r--r--config/locales/bg.yml3
-rw-r--r--config/locales/bn.yml1
-rw-r--r--config/locales/ca.yml23
-rw-r--r--config/locales/ckb.yml2
-rw-r--r--config/locales/co.yml2
-rw-r--r--config/locales/cs.yml27
-rw-r--r--config/locales/cy.yml2
-rw-r--r--config/locales/da.yml23
-rw-r--r--config/locales/de.yml24
-rw-r--r--config/locales/doorkeeper.af.yml163
-rw-r--r--config/locales/doorkeeper.pt-BR.yml17
-rw-r--r--config/locales/el.yml9
-rw-r--r--config/locales/eo.yml18
-rw-r--r--config/locales/es-AR.yml23
-rw-r--r--config/locales/es-MX.yml4
-rw-r--r--config/locales/es.yml23
-rw-r--r--config/locales/et.yml2
-rw-r--r--config/locales/eu.yml2
-rw-r--r--config/locales/fa.yml2
-rw-r--r--config/locales/fi.yml2
-rw-r--r--config/locales/fr.yml28
-rw-r--r--config/locales/gd.yml3
-rw-r--r--config/locales/gl.yml29
-rw-r--r--config/locales/he.yml12
-rw-r--r--config/locales/hr.yml2
-rw-r--r--config/locales/hu.yml23
-rw-r--r--config/locales/hy.yml2
-rw-r--r--config/locales/id.yml18
-rw-r--r--config/locales/io.yml23
-rw-r--r--config/locales/is.yml11
-rw-r--r--config/locales/it.yml23
-rw-r--r--config/locales/ja.yml15
-rw-r--r--config/locales/ka.yml1
-rw-r--r--config/locales/kab.yml1
-rw-r--r--config/locales/kk.yml2
-rw-r--r--config/locales/ko.yml11
-rw-r--r--config/locales/ku.yml23
-rw-r--r--config/locales/lt.yml1
-rw-r--r--config/locales/lv.yml30
-rw-r--r--config/locales/ml.yml1
-rw-r--r--config/locales/ms.yml1
-rw-r--r--config/locales/nl.yml3
-rw-r--r--config/locales/nn.yml2
-rw-r--r--config/locales/no.yml2
-rw-r--r--config/locales/oc.yml2
-rw-r--r--config/locales/pl.yml24
-rw-r--r--config/locales/pt-BR.yml11
-rw-r--r--config/locales/pt-PT.yml23
-rw-r--r--config/locales/ro.yml2
-rw-r--r--config/locales/ru.yml40
-rw-r--r--config/locales/sc.yml2
-rw-r--r--config/locales/simple_form.af.yml10
-rw-r--r--config/locales/simple_form.ca.yml6
-rw-r--r--config/locales/simple_form.cs.yml6
-rw-r--r--config/locales/simple_form.da.yml6
-rw-r--r--config/locales/simple_form.de.yml6
-rw-r--r--config/locales/simple_form.en-GB.yml1
-rw-r--r--config/locales/simple_form.es-AR.yml6
-rw-r--r--config/locales/simple_form.es-MX.yml2
-rw-r--r--config/locales/simple_form.es.yml6
-rw-r--r--config/locales/simple_form.fr.yml6
-rw-r--r--config/locales/simple_form.gl.yml6
-rw-r--r--config/locales/simple_form.he.yml2
-rw-r--r--config/locales/simple_form.hu.yml6
-rw-r--r--config/locales/simple_form.io.yml6
-rw-r--r--config/locales/simple_form.it.yml6
-rw-r--r--config/locales/simple_form.ja.yml3
-rw-r--r--config/locales/simple_form.ku.yml6
-rw-r--r--config/locales/simple_form.lv.yml6
-rw-r--r--config/locales/simple_form.pl.yml6
-rw-r--r--config/locales/simple_form.pt-PT.yml6
-rw-r--r--config/locales/simple_form.ru.yml6
-rw-r--r--config/locales/simple_form.sk.yml3
-rw-r--r--config/locales/simple_form.sl.yml6
-rw-r--r--config/locales/simple_form.sq.yml6
-rw-r--r--config/locales/simple_form.tr.yml6
-rw-r--r--config/locales/simple_form.uk.yml6
-rw-r--r--config/locales/simple_form.vi.yml6
-rw-r--r--config/locales/simple_form.zh-TW.yml6
-rw-r--r--config/locales/sk.yml3
-rw-r--r--config/locales/sl.yml20
-rw-r--r--config/locales/sq.yml111
-rw-r--r--config/locales/sr-Latn.yml1
-rw-r--r--config/locales/sr.yml1
-rw-r--r--config/locales/sv.yml2
-rw-r--r--config/locales/ta.yml1
-rw-r--r--config/locales/th.yml2
-rw-r--r--config/locales/tr.yml21
-rw-r--r--config/locales/uk.yml25
-rw-r--r--config/locales/vi.yml23
-rw-r--r--config/locales/zh-CN.yml12
-rw-r--r--config/locales/zh-HK.yml2
-rw-r--r--config/locales/zh-TW.yml22
-rw-r--r--docker-compose.yml18
-rw-r--r--lib/assets/wordmark.dark.pngbin8942 -> 8991 bytes
-rw-r--r--lib/assets/wordmark.light.pngbin8576 -> 8625 bytes
-rw-r--r--lib/tasks/branding.rake21
-rw-r--r--package.json26
-rw-r--r--public/badge.pngbin4248 -> 4058 bytes
-rw-r--r--public/favicon.icobin15086 -> 15086 bytes
-rw-r--r--yarn.lock908
172 files changed, 1982 insertions, 1008 deletions
diff --git a/.github/stylelint-matcher.json b/.github/stylelint-matcher.json
new file mode 100644
index 000000000..cdfd4086b
--- /dev/null
+++ b/.github/stylelint-matcher.json
@@ -0,0 +1,21 @@
+{
+  "problemMatcher": [
+    {
+      "owner": "stylelint",
+      "pattern": [
+        {
+          "regexp": "^([^\\s].*)$",
+          "file": 1
+        },
+        {
+          "regexp": "^\\s+((\\d+):(\\d+))?\\s+(✖|×)\\s+(.*)\\s{2,}(.*)$",
+          "line": 2,
+          "column": 3,
+          "message": 5,
+          "code": 6,
+          "loop": true
+        }
+      ]
+    }
+  ]
+}
diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml
deleted file mode 100644
index 880fdfac9..000000000
--- a/.github/workflows/build-image.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Build container image
-on:
-  workflow_dispatch:
-  push:
-    branches:
-      - 'main'
-    tags:
-      - '*'
-  pull_request:
-    paths:
-      - .github/workflows/build-image.yml
-      - Dockerfile
-jobs:
-  build-image:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - uses: docker/setup-qemu-action@v1
-      - uses: docker/setup-buildx-action@v1
-      - uses: docker/login-action@v1
-        with:
-          registry: ghcr.io
-          username: ${{ github.repository_owner }}
-          password: ${{ secrets.GITHUB_TOKEN }}
-        if: github.event_name != 'pull_request'
-      - uses: docker/metadata-action@v3
-        id: meta
-        with:
-          images: ghcr.io/${{ github.repository_owner }}/mastodon
-          flavor: |
-            latest=true
-          tags: |
-            type=edge,branch=main
-            type=match,pattern=v(.*),group=0
-            type=ref,event=pr
-      - uses: docker/build-push-action@v2
-        with:
-          context: .
-          platforms: linux/amd64,linux/arm64
-          push: ${{ github.event_name != 'pull_request' }}
-          tags: ${{ steps.meta.outputs.tags }}
-          cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/mastodon:latest
-          cache-to: type=inline
diff --git a/.github/workflows/check-i18n.yml b/.github/workflows/check-i18n.yml
index be38a096d..1c60515f8 100644
--- a/.github/workflows/check-i18n.yml
+++ b/.github/workflows/check-i18n.yml
@@ -14,7 +14,7 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
       - name: Install system dependencies
         run: |
           sudo apt-get update
diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml
index fd535ea9a..f77a9720e 100644
--- a/.github/workflows/linter.yml
+++ b/.github/workflows/linter.yml
@@ -50,8 +50,19 @@ jobs:
           # Full git history is needed to get a proper list of changed files within `super-linter`
           fetch-depth: 0
 
+      - name: Set-up Node.js
+        uses: actions/setup-node@v3
+        with:
+          node-version: 16.x
+          cache: yarn
       - name: Intall dependencies
         run: yarn install --frozen-lockfile
+      - name: Set-up RuboCop Problem Mathcher
+        uses: r7kamura/rubocop-problem-matchers-action@v1
+      - name: Set-up Stylelint Problem Matcher
+        uses: xt0rted/stylelint-problem-matcher@v1
+      # https://github.com/xt0rted/stylelint-problem-matcher/issues/360
+      - run: echo "::add-matcher::.github/stylelint-matcher.json" 
 
       ################################
       # Run Linter against code base #
@@ -61,6 +72,7 @@ jobs:
         env:
           CSS_FILE_NAME: stylelint.config.js
           DEFAULT_BRANCH: main
+          NO_COLOR: 1 # https://github.com/xt0rted/stylelint-problem-matcher/issues/360
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
           JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.js
           LINTER_RULES_PATH: .
diff --git a/Gemfile b/Gemfile
index 9e9a6b0d6..dc25538c0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1'
 
 gem 'active_model_serializers', '~> 0.10'
 gem 'addressable', '~> 2.8'
-gem 'bootsnap', '~> 1.11.1', require: false
+gem 'bootsnap', '~> 1.12.0', require: false
 gem 'browser'
 gem 'charlock_holmes', '~> 0.7.7'
 gem 'chewy', '~> 7.2'
@@ -135,7 +135,7 @@ group :development do
   gem 'letter_opener_web', '~> 2.0'
   gem 'memory_profiler'
   gem 'rubocop', '~> 1.30', require: false
-  gem 'rubocop-rails', '~> 2.14', require: false
+  gem 'rubocop-rails', '~> 2.15', require: false
   gem 'brakeman', '~> 5.2', require: false
   gem 'bundler-audit', '~> 0.9', require: false
 
diff --git a/Gemfile.lock b/Gemfile.lock
index 5cc236461..8c02b4244 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -114,7 +114,7 @@ GEM
       debug_inspector (>= 0.0.1)
     blurhash (0.1.6)
       ffi (~> 1.14)
-    bootsnap (1.11.1)
+    bootsnap (1.12.0)
       msgpack (~> 1.2)
     brakeman (5.2.3)
     browser (4.2.0)
@@ -122,7 +122,7 @@ GEM
       concurrent-ruby (~> 1.0, >= 1.0.5)
       redis (>= 1.0, <= 5.0)
     builder (3.2.4)
-    bullet (7.0.1)
+    bullet (7.0.2)
       activesupport (>= 3.0.0)
       uniform_notifier (~> 1.11)
     bundler-audit (0.9.1)
@@ -308,7 +308,7 @@ GEM
       rainbow (>= 2.0.0)
     i18n (1.10.0)
       concurrent-ruby (~> 1.0)
-    i18n-tasks (1.0.10)
+    i18n-tasks (1.0.11)
       activesupport (>= 4.0.2)
       ast (>= 2.1.0)
       better_html (~> 1.0)
@@ -397,11 +397,11 @@ GEM
     mime-types-data (3.2022.0105)
     mini_mime (1.1.2)
     mini_portile2 (2.8.0)
-    minitest (5.15.0)
-    msgpack (1.5.1)
+    minitest (5.16.0)
+    msgpack (1.5.2)
     multi_json (1.15.0)
     multipart-post (2.1.1)
-    net-ldap (0.17.0)
+    net-ldap (0.17.1)
     net-scp (3.0.0)
       net-ssh (>= 2.6.5, < 7.0.0)
     net-ssh (6.1.0)
@@ -414,7 +414,7 @@ GEM
       concurrent-ruby (~> 1.0, >= 1.0.2)
       sidekiq (>= 3.5)
       statsd-ruby (~> 1.4, >= 1.4.0)
-    oj (3.13.13)
+    oj (3.13.14)
     omniauth (1.9.1)
       hashie (>= 3.4.6)
       rack (>= 1.6.2, < 3)
@@ -513,7 +513,7 @@ GEM
     rails-dom-testing (2.0.3)
       activesupport (>= 4.2.0)
       nokogiri (>= 1.6)
-    rails-html-sanitizer (1.4.2)
+    rails-html-sanitizer (1.4.3)
       loofah (~> 2.3)
     rails-i18n (6.0.0)
       i18n (>= 0.7, < 2)
@@ -571,7 +571,7 @@ GEM
     rspec-support (3.11.0)
     rspec_junit_formatter (0.5.1)
       rspec-core (>= 2, < 4, != 2.12.0)
-    rubocop (1.30.0)
+    rubocop (1.30.1)
       parallel (~> 1.10)
       parser (>= 3.1.0.0)
       rainbow (>= 2.2.2, < 4.0)
@@ -582,7 +582,7 @@ GEM
       unicode-display_width (>= 1.4.0, < 3.0)
     rubocop-ast (1.18.0)
       parser (>= 3.1.1.0)
-    rubocop-rails (2.14.2)
+    rubocop-rails (2.15.0)
       activesupport (>= 4.2.0)
       rack (>= 1.1)
       rubocop (>= 1.7.0, < 2.0)
@@ -609,12 +609,12 @@ GEM
       redis (>= 4.2.0)
     sidekiq-bulk (0.2.0)
       sidekiq
-    sidekiq-scheduler (4.0.0)
+    sidekiq-scheduler (4.0.1)
       redis (>= 4.2.0)
       rufus-scheduler (~> 3.2)
       sidekiq (>= 4)
       tilt (>= 1.4.0)
-    sidekiq-unique-jobs (7.1.23)
+    sidekiq-unique-jobs (7.1.25)
       brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
       concurrent-ruby (~> 1.0, >= 1.0.5)
       sidekiq (>= 5.0, < 8.0)
@@ -681,7 +681,7 @@ GEM
       unf_ext
     unf_ext (0.0.8)
     unicode-display_width (2.1.0)
-    uniform_notifier (1.14.2)
+    uniform_notifier (1.16.0)
     validate_email (0.1.6)
       activemodel (>= 3.0)
       mail (>= 2.2.5)
@@ -722,7 +722,7 @@ GEM
     xorcist (1.1.2)
     xpath (3.2.0)
       nokogiri (~> 1.8)
-    zeitwerk (2.5.4)
+    zeitwerk (2.6.0)
 
 PLATFORMS
   ruby
@@ -736,7 +736,7 @@ DEPENDENCIES
   better_errors (~> 2.9)
   binding_of_caller (~> 1.0)
   blurhash (~> 0.1)
-  bootsnap (~> 1.11.1)
+  bootsnap (~> 1.12.0)
   brakeman (~> 5.2)
   browser
   bullet (~> 7.0)
@@ -826,7 +826,7 @@ DEPENDENCIES
   rspec-sidekiq (~> 3.1)
   rspec_junit_formatter (~> 0.5)
   rubocop (~> 1.30)
-  rubocop-rails (~> 2.14)
+  rubocop-rails (~> 2.15)
   ruby-progressbar (~> 1.11)
   sanitize (~> 6.0)
   scenic (~> 1.6)
diff --git a/app/helpers/branding_helper.rb b/app/helpers/branding_helper.rb
index c91661e56..ad7702aea 100644
--- a/app/helpers/branding_helper.rb
+++ b/app/helpers/branding_helper.rb
@@ -15,7 +15,7 @@ module BrandingHelper
   end
 
   def _logo_as_symbol_icon
-    content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 75', class: 'logo logo--icon')
+    content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 79', class: 'logo logo--icon')
   end
 
   def render_logo
diff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png
index e7037f4cf..33ef3bb8c 100644
--- a/app/javascript/icons/favicon-16x16.png
+++ b/app/javascript/icons/favicon-16x16.png
Binary files differdiff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png
index a91b02463..7b9a37403 100644
--- a/app/javascript/icons/favicon-32x32.png
+++ b/app/javascript/icons/favicon-32x32.png
Binary files differdiff --git a/app/javascript/icons/favicon-48x48.png b/app/javascript/icons/favicon-48x48.png
index d3721fbdd..5b35eb233 100644
--- a/app/javascript/icons/favicon-48x48.png
+++ b/app/javascript/icons/favicon-48x48.png
Binary files differdiff --git a/app/javascript/images/logo-symbol-icon.svg b/app/javascript/images/logo-symbol-icon.svg
index 12f4e078e..56cf03921 100644
--- a/app/javascript/images/logo-symbol-icon.svg
+++ b/app/javascript/images/logo-symbol-icon.svg
@@ -1,2 +1,2 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="79" height="75" viewBox="0 0 79 75"><symbol id="logo-symbol-icon"><path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/></symbol><use xlink:href="#logo-symbol-icon" style="color:#fff" /></svg>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="79" height="79" viewBox="0 0 79 75"><symbol id="logo-symbol-icon"><path d="M74.7135 16.6043C73.6199 8.54587 66.5351 2.19527 58.1366 0.964691C56.7196 0.756754 51.351 0 38.9148 0H38.822C26.3824 0 23.7135 0.756754 22.2966 0.964691C14.1319 2.16118 6.67571 7.86752 4.86669 16.0214C3.99657 20.0369 3.90371 24.4888 4.06535 28.5726C4.29578 34.4289 4.34049 40.275 4.877 46.1075C5.24791 49.9817 5.89495 53.8251 6.81328 57.6088C8.53288 64.5968 15.4938 70.4122 22.3138 72.7848C29.6155 75.259 37.468 75.6697 44.9919 73.971C45.8196 73.7801 46.6381 73.5586 47.4475 73.3063C49.2737 72.7302 51.4164 72.086 52.9915 70.9542C53.0131 70.9384 53.0308 70.9178 53.0433 70.8942C53.0558 70.8706 53.0628 70.8445 53.0637 70.8179V65.1661C53.0634 65.1412 53.0574 65.1167 53.0462 65.0944C53.035 65.0721 53.0189 65.0525 52.9992 65.0371C52.9794 65.0218 52.9564 65.011 52.9318 65.0056C52.9073 65.0002 52.8819 65.0003 52.8574 65.0059C48.0369 66.1472 43.0971 66.7193 38.141 66.7103C29.6118 66.7103 27.3178 62.6981 26.6609 61.0278C26.1329 59.5842 25.7976 58.0784 25.6636 56.5486C25.6622 56.5229 25.667 56.4973 25.6775 56.4738C25.688 56.4502 25.7039 56.4295 25.724 56.4132C25.7441 56.397 25.7678 56.3856 25.7931 56.3801C25.8185 56.3746 25.8448 56.3751 25.8699 56.3816C30.6101 57.5151 35.4693 58.0873 40.3455 58.086C41.5183 58.086 42.6876 58.086 43.8604 58.0553C48.7647 57.919 53.9339 57.6701 58.7591 56.7361C58.8794 56.7123 58.9998 56.6918 59.103 56.6611C66.7139 55.2124 73.9569 50.665 74.6929 39.1501C74.7204 38.6967 74.7892 34.4016 74.7892 33.9312C74.7926 32.3325 75.3085 22.5901 74.7135 16.6043ZM62.9996 45.3371H54.9966V25.9069C54.9966 21.8163 53.277 19.7302 49.7793 19.7302C45.9343 19.7302 44.0083 22.1981 44.0083 27.0727V37.7082H36.0534V27.0727C36.0534 22.1981 34.124 19.7302 30.279 19.7302C26.8019 19.7302 25.0651 21.8163 25.0617 25.9069V45.3371H17.0656V25.3172C17.0656 21.2266 18.1191 17.9769 20.2262 15.568C22.3998 13.1648 25.2509 11.9308 28.7898 11.9308C32.8859 11.9308 35.9812 13.492 38.0447 16.6111L40.036 19.9245L42.0308 16.6111C44.0943 13.492 47.1896 11.9308 51.2788 11.9308C54.8143 11.9308 57.6654 13.1648 59.8459 15.568C61.9529 17.9746 63.0065 21.2243 63.0065 25.3172L62.9996 45.3371Z" fill="currentColor"/></symbol><use xlink:href="#logo-symbol-icon" style="color:#fff" /></svg>
 
diff --git a/app/javascript/images/logo.svg b/app/javascript/images/logo.svg
index 6ffc988e5..11d0c30c5 100644
--- a/app/javascript/images/logo.svg
+++ b/app/javascript/images/logo.svg
@@ -1,4 +1,4 @@
-<svg width="61" height="65" viewBox="0 0 61 65" fill="none" xmlns="http://www.w3.org/2000/svg">
+<svg width="65" height="65" viewBox="0 0 61 65" fill="none" xmlns="http://www.w3.org/2000/svg">
 <path d="M60.7539 14.3904C59.8143 7.40642 53.7273 1.90257 46.5117 0.836066C45.2943 0.655854 40.6819 0 29.9973 0H29.9175C19.2299 0 16.937 0.655854 15.7196 0.836066C8.70488 1.87302 2.29885 6.81852 0.744617 13.8852C-0.00294988 17.3654 -0.0827298 21.2237 0.0561464 24.7629C0.254119 29.8384 0.292531 34.905 0.753482 39.9598C1.07215 43.3175 1.62806 46.6484 2.41704 49.9276C3.89445 55.9839 9.87499 61.0239 15.7344 63.0801C22.0077 65.2244 28.7542 65.5804 35.2184 64.1082C35.9295 63.9428 36.6318 63.7508 37.3252 63.5321C38.8971 63.0329 40.738 62.4745 42.0913 61.4937C42.1099 61.4799 42.1251 61.4621 42.1358 61.4417C42.1466 61.4212 42.1526 61.3986 42.1534 61.3755V56.4773C42.153 56.4557 42.1479 56.4345 42.1383 56.4151C42.1287 56.3958 42.1149 56.3788 42.0979 56.3655C42.0809 56.3522 42.0611 56.3429 42.04 56.3382C42.019 56.3335 41.9971 56.3336 41.9761 56.3384C37.8345 57.3276 33.5905 57.8234 29.3324 57.8156C22.0045 57.8156 20.0336 54.3384 19.4693 52.8908C19.0156 51.6397 18.7275 50.3346 18.6124 49.0088C18.6112 48.9866 18.6153 48.9643 18.6243 48.9439C18.6333 48.9236 18.647 48.9056 18.6643 48.8915C18.6816 48.8774 18.7019 48.8675 18.7237 48.8628C18.7455 48.858 18.7681 48.8585 18.7897 48.8641C22.8622 49.8465 27.037 50.3423 31.2265 50.3412C32.234 50.3412 33.2387 50.3412 34.2463 50.3146C38.4598 50.1964 42.9009 49.9808 47.0465 49.1713C47.1499 49.1506 47.2534 49.1329 47.342 49.1063C53.881 47.8507 60.1038 43.9097 60.7362 33.9301C60.7598 33.5372 60.8189 29.8148 60.8189 29.4071C60.8218 28.0215 61.2651 19.5781 60.7539 14.3904Z" fill="url(#paint0_linear_89_8)"/>
 <path d="M50.3943 22.237V39.5876H43.5185V22.7481C43.5185 19.2029 42.0411 17.3949 39.036 17.3949C35.7325 17.3949 34.0778 19.5338 34.0778 23.7585V32.9759H27.2434V23.7585C27.2434 19.5338 25.5857 17.3949 22.2822 17.3949C19.2949 17.3949 17.8027 19.2029 17.8027 22.7481V39.5876H10.9298V22.237C10.9298 18.6918 11.835 15.8754 13.6453 13.7877C15.5128 11.7049 17.9623 10.6355 21.0028 10.6355C24.522 10.6355 27.1813 11.9885 28.9542 14.6917L30.665 17.5633L32.3788 14.6917C34.1517 11.9885 36.811 10.6355 40.3243 10.6355C43.3619 10.6355 45.8114 11.7049 47.6847 13.7877C49.4931 15.8734 50.3963 18.6899 50.3943 22.237Z" fill="white"/>
 <defs>
diff --git a/app/javascript/images/mailer/logo.png b/app/javascript/images/mailer/logo.png
index 54c8afd6a..77d0ef849 100644
--- a/app/javascript/images/mailer/logo.png
+++ b/app/javascript/images/mailer/logo.png
Binary files differdiff --git a/app/javascript/images/mailer/wordmark.png b/app/javascript/images/mailer/wordmark.png
index f3d714d3a..defe50178 100644
--- a/app/javascript/images/mailer/wordmark.png
+++ b/app/javascript/images/mailer/wordmark.png
Binary files differdiff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index 8d261dbbc..52cb08217 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Verwyder hierdie keuse",
   "compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses",
   "compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Publisheer",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Stoor veranderinge",
   "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index f655b694c..406868d65 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -17,7 +17,7 @@
   "account.follow": "متابعة",
   "account.followers": "مُتابِعون",
   "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.",
-  "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two{مُتابعانِ اِثنان} few{{counter} مُتابِعين} many{{counter}  مُتابِعًا} other {{counter}  مُتابع}}",
+  "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two {مُتابعانِ اِثنان} few {{counter} مُتابِعين} many {{counter} مُتابِعًا} other {{counter} مُتابع}}",
   "account.following": "الإشتراكات",
   "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}",
   "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.",
@@ -95,7 +95,7 @@
   "compose.language.change": "تغيير اللغة",
   "compose.language.search": "البحث عن لغة…",
   "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "إنّ المنشورات على ماستدون ليست مشفرة من النهاية إلى النهاية. لا تشارك أي معلومات حساسة عبر ماستدون.",
   "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.",
   "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).",
   "compose_form.lock_disclaimer.lock": "مُقفَل",
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "إزالة هذا الخيار",
   "compose_form.poll.switch_to_multiple": "تغيِير الاستطلاع للسماح باِخيارات مُتعدِّدة",
   "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "انشر",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "احفظ التعديلات",
   "compose_form.sensitive.hide": "{count, plural, one {الإشارة إلى الوَسط كمُحتوى حسّاس} two{الإشارة إلى الوسطان كمُحتويان حسّاسان} other {الإشارة إلى الوسائط كمُحتويات حسّاسة}}",
@@ -512,8 +512,8 @@
   "trends.trending_now": "المتداولة الآن",
   "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
   "units.short.billion": "{count} مليار",
-  "units.short.million": "{count}  مليون",
-  "units.short.thousand": "{count}  ألف",
+  "units.short.million": "{count} مليون",
+  "units.short.thousand": "{count} ألف",
   "upload_area.title": "اسحب ثم أفلت للرفع",
   "upload_button.label": "إضافة وسائط",
   "upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 8a77b212c..aaf552a1e 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -70,7 +70,7 @@
   "column.blocks": "Blockierte Profile",
   "column.bookmarks": "Lesezeichen",
   "column.community": "Lokale Zeitleiste",
-  "column.direct": "Mensaxes directas",
+  "column.direct": "Direktnachrichten",
   "column.directory": "Profile durchsuchen",
   "column.domain_blocks": "Blockierte Domains",
   "column.favourites": "Favoriten",
@@ -95,7 +95,7 @@
   "compose.language.change": "Sprache ändern",
   "compose.language.search": "Sprachen durchsuchen...",
   "compose_form.direct_message_warning_learn_more": "Mehr erfahren",
-  "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Infomartionen über Mastodon.",
+  "compose_form.encryption_warning": "Beiträge von Mastodon sind nicht Ende-zu-Ende verschlüsselt. Teile keine senible Informationen über Mastodon.",
   "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.",
   "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.",
   "compose_form.lock_disclaimer.lock": "gesperrt",
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Wahl entfernen",
   "compose_form.poll.switch_to_multiple": "Umfrage ändern, um mehrere Optionen zu erlauben",
   "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Veröffentlichen",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Änderungen speichern",
   "compose_form.sensitive.hide": "Medien als NSFW markieren",
@@ -351,7 +351,7 @@
   "notifications.filter.mentions": "Erwähnungen",
   "notifications.filter.polls": "Ergebnisse der Umfrage",
   "notifications.filter.statuses": "Updates von Personen, denen du folgst",
-  "notifications.grant_permission": "Zugriff gewährt.",
+  "notifications.grant_permission": "Berechtigung erteilen.",
   "notifications.group": "{count} Benachrichtigungen",
   "notifications.mark_as_read": "Alle Benachrichtigungen als gelesen markieren",
   "notifications.permission_denied": "Desktop-Benachrichtigungen können nicht aktiviert werden, da die Berechtigung verweigert wurde.",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 9abba0bfa..236d25496 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -6,7 +6,7 @@
   "account.block": "Bloki @{name}",
   "account.block_domain": "Bloki domajnon {domain}",
   "account.blocked": "Blokita",
-  "account.browse_more_on_origin_server": "Rigardi pli al la originala profilo",
+  "account.browse_more_on_origin_server": "Vidi pli ĉe la originala profilo",
   "account.cancel_follow_request": "Nuligi peton de sekvado",
   "account.direct": "Rekte mesaĝi @{name}",
   "account.disable_notifications": "Ĉesu sciigi min kiam @{name} mesaĝi",
@@ -22,7 +22,7 @@
   "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}",
   "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.",
   "account.follows_you": "Sekvas vin",
-  "account.hide_reblogs": "Kaŝi diskonigojn de @{name}",
+  "account.hide_reblogs": "Kaŝi plusendojn de @{name}",
   "account.joined": "Kuniĝis {date}",
   "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}",
   "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.",
@@ -30,14 +30,14 @@
   "account.mention": "Mencii @{name}",
   "account.moved_to": "{name} moviĝis al:",
   "account.mute": "Silentigi @{name}",
-  "account.mute_notifications": "Silentigi sciigojn de @{name}",
+  "account.mute_notifications": "Silentigi la sciigojn de @{name}",
   "account.muted": "Silentigita",
   "account.posts": "Mesaĝoj",
-  "account.posts_with_replies": "Kun respondoj",
+  "account.posts_with_replies": "Mesaĝoj kaj respondoj",
   "account.report": "Signali @{name}",
   "account.requested": "Atendo de aprobo. Alklaku por nuligi peton de sekvado",
-  "account.share": "Diskonigi la profilon de @{name}",
-  "account.show_reblogs": "Montri diskonigojn de @{name}",
+  "account.share": "Kundividi la profilon de @{name}",
+  "account.show_reblogs": "Montri la plusendojn de @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Mesaĝo} other {{counter} Mesaĝoj}}",
   "account.unblock": "Malbloki @{name}",
   "account.unblock_domain": "Malbloki {domain}",
@@ -74,7 +74,7 @@
   "column.directory": "Trarigardi profilojn",
   "column.domain_blocks": "Blokitaj domajnoj",
   "column.favourites": "Stelumoj",
-  "column.follow_requests": "Petoj de sekvado",
+  "column.follow_requests": "Demandoj de sekvado",
   "column.home": "Hejmo",
   "column.lists": "Listoj",
   "column.mutes": "Silentigitaj uzantoj",
@@ -99,7 +99,7 @@
   "compose_form.hashtag_warning": "Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.",
   "compose_form.lock_disclaimer": "Via konta ne estas {locked}. Iu ajn povas sekvi vin por vidi viajn mesaĝojn, kiuj estas nur por sekvantoj.",
   "compose_form.lock_disclaimer.lock": "ŝlosita",
-  "compose_form.placeholder": "Pri kio vi pensas?",
+  "compose_form.placeholder": "Kion vi pensas?",
   "compose_form.poll.add_option": "Aldoni elekteblon",
   "compose_form.poll.duration": "Balotenketa daŭro",
   "compose_form.poll.option_placeholder": "Elekteblo {number}",
@@ -198,10 +198,10 @@
   "explore.trending_tags": "Kradvortoj",
   "follow_recommendations.done": "Farita",
   "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
-  "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
+  "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos kronologie en via abonfluo. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!",
   "follow_request.authorize": "Rajtigi",
   "follow_request.reject": "Rifuzi",
-  "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la dungitaro de {domain} opiniis, ke vi eble volus revizii petojn de sekvadon el ĉi tiuj kontoj permane.",
+  "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensis ke vi eble volas kontroli la demandojn de sekvado de ĉi tiuj kontoj permane.",
   "generic.saved": "Konservita",
   "getting_started.developers": "Programistoj",
   "getting_started.directory": "Profilujo",
@@ -221,7 +221,7 @@
   "hashtag.column_settings.tag_mode.none": "Neniu",
   "hashtag.column_settings.tag_toggle": "Aldoni pliajn etikedojn por ĉi tiu kolumno",
   "home.column_settings.basic": "Bazaj agordoj",
-  "home.column_settings.show_reblogs": "Montri diskonigojn",
+  "home.column_settings.show_reblogs": "Montri plusendojn",
   "home.column_settings.show_replies": "Montri respondojn",
   "home.hide_announcements": "Kaŝi anoncojn",
   "home.show_announcements": "Montri anoncojn",
@@ -230,7 +230,7 @@
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
   "keyboard_shortcuts.back": "reveni",
   "keyboard_shortcuts.blocked": "malfermi la liston de blokitaj uzantoj",
-  "keyboard_shortcuts.boost": "diskonigi",
+  "keyboard_shortcuts.boost": "Plusendi",
   "keyboard_shortcuts.column": "fokusi mesaĝon en unu el la kolumnoj",
   "keyboard_shortcuts.compose": "enfokusigi la tekstujon",
   "keyboard_shortcuts.description": "Priskribo",
@@ -259,7 +259,7 @@
   "keyboard_shortcuts.start": "malfermi la kolumnon «por komenci»",
   "keyboard_shortcuts.toggle_hidden": "montri/kaŝi tekston malantaŭ enhava averto",
   "keyboard_shortcuts.toggle_sensitivity": "montri/kaŝi aŭdovidaĵojn",
-  "keyboard_shortcuts.toot": "komenci tute novan mesaĝon",
+  "keyboard_shortcuts.toot": "Krei novan mesaĝon",
   "keyboard_shortcuts.unfocus": "malenfokusigi la tekstujon aŭ la serĉilon",
   "keyboard_shortcuts.up": "iri supren en la listo",
   "lightbox.close": "Fermi",
@@ -321,7 +321,7 @@
   "notification.mention": "{name} menciis vin",
   "notification.own_poll": "Via balotenketo finiĝitis",
   "notification.poll": "Partoprenita balotenketo finiĝis",
-  "notification.reblog": "{name} diskonigis vian mesaĝon",
+  "notification.reblog": "{name} plusendis vian mesaĝon",
   "notification.status": "{name} ĵus afiŝita",
   "notification.update": "{name} redaktis afiŝon",
   "notifications.clear": "Forviŝi sciigojn",
@@ -337,7 +337,7 @@
   "notifications.column_settings.mention": "Mencioj:",
   "notifications.column_settings.poll": "Balotenketaj rezultoj:",
   "notifications.column_settings.push": "Puŝsciigoj",
-  "notifications.column_settings.reblog": "Diskonigoj:",
+  "notifications.column_settings.reblog": "Plusendoj:",
   "notifications.column_settings.show": "Montri en kolumno",
   "notifications.column_settings.sound": "Eligi sonon",
   "notifications.column_settings.status": "Novaj mesaĝoj:",
@@ -345,7 +345,7 @@
   "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn",
   "notifications.column_settings.update": "Redaktoj:",
   "notifications.filter.all": "Ĉiuj",
-  "notifications.filter.boosts": "Diskonigoj",
+  "notifications.filter.boosts": "Plusendoj",
   "notifications.filter.favourites": "Stelumoj",
   "notifications.filter.follows": "Sekvoj",
   "notifications.filter.mentions": "Mencioj",
@@ -449,8 +449,8 @@
   "status.admin_status": "Malfermi ĉi tiun mesaĝon en la kontrola interfaco",
   "status.block": "Bloki @{name}",
   "status.bookmark": "Aldoni al la legosignoj",
-  "status.cancel_reblog_private": "Ne plu diskonigi",
-  "status.cannot_reblog": "Ĉi tiu mesaĝo ne diskonigeblas",
+  "status.cancel_reblog_private": "Malfari la plusendon",
+  "status.cannot_reblog": "Ĉi tiu mesaĝo ne povas esti plusendita",
   "status.copy": "Kopii la ligilon al la mesaĝo",
   "status.delete": "Forigi",
   "status.detailed_status": "Detala konversacia vido",
@@ -475,8 +475,8 @@
   "status.read_more": "Legi pli",
   "status.reblog": "Plusendi",
   "status.reblog_private": "Plusendi kiel la originala videbleco",
-  "status.reblogged_by": "{name} diskonigis",
-  "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.",
+  "status.reblogged_by": "{name} plusendis",
+  "status.reblogs.empty": "Neniu ankoraŭ plusendis la mesaĝon. Kiam iu faros tion, ili aperos ĉi tie.",
   "status.redraft": "Forigi kaj reskribi",
   "status.remove_bookmark": "Forigi legosignon",
   "status.reply": "Respondi",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 4e8a3c4c6..570a03186 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Eliminar esta opción",
   "compose_form.poll.switch_to_multiple": "Modificar encuesta para permitir múltiples opciones",
   "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Publicar",
   "compose_form.publish_loud": "¡{publish}!",
   "compose_form.save_changes": "Guardar cambios",
   "compose_form.sensitive.hide": "Marcar multimedia como sensible",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index bb9c4ac1f..2d2551845 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -60,7 +60,7 @@
   "announcement.announcement": "Fógra",
   "attachments_list.unprocessed": "(unprocessed)",
   "autosuggest_hashtag.per_week": "{count} per week",
-  "boost_modal.combo": "You can press {combo} to skip this next time",
+  "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile",
   "bundle_column_error.body": "Something went wrong while loading this component.",
   "bundle_column_error.retry": "Bain triail as arís",
   "bundle_column_error.title": "Network error",
@@ -73,7 +73,7 @@
   "column.direct": "Direct messages",
   "column.directory": "Brabhsáil próifílí",
   "column.domain_blocks": "Blocked domains",
-  "column.favourites": "Favourites",
+  "column.favourites": "Roghanna",
   "column.follow_requests": "Follow requests",
   "column.home": "Baile",
   "column.lists": "Liostaí",
@@ -120,7 +120,7 @@
   "confirmations.block.confirm": "Block",
   "confirmations.block.message": "Are you sure you want to block {name}?",
   "confirmations.delete.confirm": "Delete",
-  "confirmations.delete.message": "Are you sure you want to delete this status?",
+  "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?",
   "confirmations.delete_list.confirm": "Delete",
   "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
   "confirmations.discard_edit_media.confirm": "Faigh réidh de",
@@ -133,7 +133,7 @@
   "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
   "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?",
   "confirmations.redraft.confirm": "Delete & redraft",
-  "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+  "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an phostáil sin a scriosadh agus athdhréachtú? Beidh roghanna agus treisithe caillte, agus beidh freagraí ar an bpostáil bhunúsach ina ndílleachtaí.",
   "confirmations.reply.confirm": "Reply",
   "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.unfollow.confirm": "Ná lean",
@@ -164,7 +164,7 @@
   "emoji_button.symbols": "Symbols",
   "emoji_button.travel": "Taisteal ⁊ Áiteanna",
   "empty_column.account_suspended": "Account suspended",
-  "empty_column.account_timeline": "No posts found",
+  "empty_column.account_timeline": "Níl postálacha ar bith anseo!",
   "empty_column.account_unavailable": "Níl an phróifíl ar fáil",
   "empty_column.blocks": "You haven't blocked any users yet.",
   "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.",
@@ -172,8 +172,8 @@
   "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
   "empty_column.domain_blocks": "There are no blocked domains yet.",
   "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
-  "empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.",
-  "empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.",
+  "empty_column.favourited_statuses": "Níor roghnaigh tú postáil ar bith fós. Nuair a roghnaigh tú ceann, beidh sí le feiceáil anseo.",
+  "empty_column.favourites": "Níor roghnaigh éinne an phostáil seo fós. Nuair a roghnaigh duine éigin, beidh siad le feiceáil anseo.",
   "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
   "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
   "empty_column.hashtag": "There is nothing in this hashtag yet.",
@@ -221,7 +221,7 @@
   "hashtag.column_settings.tag_mode.none": "None of these",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
   "home.column_settings.basic": "Basic",
-  "home.column_settings.show_reblogs": "Show boosts",
+  "home.column_settings.show_reblogs": "Taispeáin treisithe",
   "home.column_settings.show_replies": "Show replies",
   "home.hide_announcements": "Hide announcements",
   "home.show_announcements": "Show announcements",
@@ -230,15 +230,15 @@
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
   "keyboard_shortcuts.back": "to navigate back",
   "keyboard_shortcuts.blocked": "to open blocked users list",
-  "keyboard_shortcuts.boost": "to boost",
+  "keyboard_shortcuts.boost": "Treisigh postáil",
   "keyboard_shortcuts.column": "to focus a status in one of the columns",
   "keyboard_shortcuts.compose": "to focus the compose textarea",
   "keyboard_shortcuts.description": "Description",
   "keyboard_shortcuts.direct": "to open direct messages column",
   "keyboard_shortcuts.down": "to move down in the list",
-  "keyboard_shortcuts.enter": "to open status",
-  "keyboard_shortcuts.favourite": "to favourite",
-  "keyboard_shortcuts.favourites": "to open favourites list",
+  "keyboard_shortcuts.enter": "Oscail postáil",
+  "keyboard_shortcuts.favourite": "Roghnaigh postáil",
+  "keyboard_shortcuts.favourites": "Oscail liosta roghanna",
   "keyboard_shortcuts.federated": "to open federated timeline",
   "keyboard_shortcuts.heading": "Keyboard Shortcuts",
   "keyboard_shortcuts.home": "to open home timeline",
@@ -252,14 +252,14 @@
   "keyboard_shortcuts.open_media": "to open media",
   "keyboard_shortcuts.pinned": "to open pinned posts list",
   "keyboard_shortcuts.profile": "Oscail próifíl an t-údar",
-  "keyboard_shortcuts.reply": "to reply",
+  "keyboard_shortcuts.reply": "Freagair ar phostáil",
   "keyboard_shortcuts.requests": "to open follow requests list",
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.spoilers": "to show/hide CW field",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
   "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
-  "keyboard_shortcuts.toot": "to start a brand new post",
+  "keyboard_shortcuts.toot": "Cuir tús le postáil nua",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
   "lightbox.close": "Close",
@@ -294,13 +294,13 @@
   "navigation_bar.blocks": "Blocked users",
   "navigation_bar.bookmarks": "Bookmarks",
   "navigation_bar.community_timeline": "Local timeline",
-  "navigation_bar.compose": "Compose new post",
+  "navigation_bar.compose": "Cum postáil nua",
   "navigation_bar.direct": "Direct messages",
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Cuir an phróifíl in eagar",
   "navigation_bar.explore": "Explore",
-  "navigation_bar.favourites": "Favourites",
+  "navigation_bar.favourites": "Roghanna",
   "navigation_bar.filters": "Focail bhalbhaithe",
   "navigation_bar.follow_requests": "Follow requests",
   "navigation_bar.follows_and_followers": "Ag leanúint agus do do leanúint",
@@ -315,20 +315,20 @@
   "navigation_bar.public_timeline": "Federated timeline",
   "navigation_bar.security": "Security",
   "notification.admin.sign_up": "{name} signed up",
-  "notification.favourite": "{name} favourited your status",
+  "notification.favourite": "Roghnaigh {name} do phostáil",
   "notification.follow": "Lean {name} thú",
   "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint",
   "notification.mention": "{name} mentioned you",
   "notification.own_poll": "Your poll has ended",
   "notification.poll": "A poll you have voted in has ended",
-  "notification.reblog": "{name} boosted your status",
-  "notification.status": "{name} just posted",
+  "notification.reblog": "Threisigh {name} do phostáil",
+  "notification.status": "Phostáil {name} díreach",
   "notification.update": "Chuir {name} postáil in eagar",
   "notifications.clear": "Clear notifications",
   "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
   "notifications.column_settings.admin.sign_up": "New sign-ups:",
   "notifications.column_settings.alert": "Desktop notifications",
-  "notifications.column_settings.favourite": "Favourites:",
+  "notifications.column_settings.favourite": "Roghanna:",
   "notifications.column_settings.filter_bar.advanced": "Display all categories",
   "notifications.column_settings.filter_bar.category": "Quick filter bar",
   "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
@@ -337,16 +337,16 @@
   "notifications.column_settings.mention": "Mentions:",
   "notifications.column_settings.poll": "Poll results:",
   "notifications.column_settings.push": "Push notifications",
-  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.reblog": "Treisithe:",
   "notifications.column_settings.show": "Show in column",
   "notifications.column_settings.sound": "Play sound",
-  "notifications.column_settings.status": "New posts:",
+  "notifications.column_settings.status": "Postálacha nua:",
   "notifications.column_settings.unread_notifications.category": "Unread notifications",
   "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
   "notifications.column_settings.update": "Eagair:",
   "notifications.filter.all": "All",
-  "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
+  "notifications.filter.boosts": "Treisithe",
+  "notifications.filter.favourites": "Roghanna",
   "notifications.filter.follows": "Follows",
   "notifications.filter.mentions": "Mentions",
   "notifications.filter.polls": "Poll results",
@@ -402,7 +402,7 @@
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
   "report.category.title_account": "próifíl",
-  "report.category.title_status": "post",
+  "report.category.title_status": "postáil",
   "report.close": "Déanta",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Forward to {target}",
@@ -435,7 +435,7 @@
   "search_popout.search_format": "Advanced search format",
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
   "search_popout.tips.hashtag": "haischlib",
-  "search_popout.tips.status": "status",
+  "search_popout.tips.status": "postáil",
   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
   "search_popout.tips.user": "user",
   "search_results.accounts": "Daoine",
@@ -449,8 +449,8 @@
   "status.admin_status": "Open this status in the moderation interface",
   "status.block": "Block @{name}",
   "status.bookmark": "Bookmark",
-  "status.cancel_reblog_private": "Unboost",
-  "status.cannot_reblog": "This post cannot be boosted",
+  "status.cancel_reblog_private": "Díthreisigh",
+  "status.cannot_reblog": "Ní féidir an phostáil seo a threisiú",
   "status.copy": "Copy link to status",
   "status.delete": "Scrios",
   "status.detailed_status": "Detailed conversation view",
@@ -459,7 +459,7 @@
   "status.edited": "Curtha in eagar in {date}",
   "status.edited_x_times": "Curtha in eagar {count, plural, one {{count} uair amháin} two {{count} uair} few {{count} uair} many {{count} uair} other {{count} uair}}",
   "status.embed": "Embed",
-  "status.favourite": "Favourite",
+  "status.favourite": "Rogha",
   "status.filtered": "Filtered",
   "status.history.created": "{name} created {date}",
   "status.history.edited": "Curtha in eagar ag {name} in {date}",
@@ -473,10 +473,10 @@
   "status.pin": "Pionnáil ar do phróifíl",
   "status.pinned": "Pinned post",
   "status.read_more": "Read more",
-  "status.reblog": "Boost",
-  "status.reblog_private": "Boost with original visibility",
-  "status.reblogged_by": "{name} boosted",
-  "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.",
+  "status.reblog": "Treisigh",
+  "status.reblog_private": "Treisigh le léargas bunúsach",
+  "status.reblogged_by": "Treisithe ag {name}",
+  "status.reblogs.empty": "Níor threisigh éinne an phostáil seo fós. Nuair a threisigh duine éigin, beidh siad le feiceáil anseo.",
   "status.redraft": "Delete & re-draft",
   "status.remove_bookmark": "Remove bookmark",
   "status.reply": "Reply",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 1910e1037..bdfc02af7 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Thoir an roghainn seo air falbh",
   "compose_form.poll.switch_to_multiple": "Atharraich an cunntas-bheachd ach an gabh iomadh roghainn a thaghadh",
   "compose_form.poll.switch_to_single": "Atharraich an cunntas-bheachd gus nach gabh ach aon roghainn a thaghadh",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Foillsich",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Sàbhail na h-atharraichean",
   "compose_form.sensitive.hide": "{count, plural, one {Cuir comharra gu bheil am meadhan frionasach} two {Cuir comharra gu bheil na meadhanan frionasach} few {Cuir comharra gu bheil na meadhanan frionasach} other {Cuir comharra gu bheil na meadhanan frionasach}}",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index bc2485c6f..ecbc373c6 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -4,7 +4,7 @@
   "account.badges.bot": "בוט",
   "account.badges.group": "קבוצה",
   "account.block": "חסמי את @{name}",
-  "account.block_domain": "חסמו את שם המתחם (דומיין) {domain}",
+  "account.block_domain": "חסמו את קהילת {domain}",
   "account.blocked": "חסום",
   "account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי",
   "account.cancel_follow_request": "בטל בקשת מעקב",
@@ -32,20 +32,20 @@
   "account.mute": "להשתיק את @{name}",
   "account.mute_notifications": "להסתיר התראות מ @{name}",
   "account.muted": "מושתק",
-  "account.posts": "חצרוצים",
-  "account.posts_with_replies": "חצרוצים ותגובות",
+  "account.posts": "פוסטים",
+  "account.posts_with_replies": "פוסטים ותגובות",
   "account.report": "דווח על @{name}",
   "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב",
   "account.share": "שתף את הפרופיל של @{name}",
   "account.show_reblogs": "הצג הדהודים מאת @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "הסר את החסימה של @{name}",
-  "account.unblock_domain": "הסראת שם המתחם {domain}",
+  "account.unblock_domain": "הסירי את החסימה של קהילת {domain}",
   "account.unblock_short": "הסר חסימה",
   "account.unendorse": "אל תקדם בפרופיל",
   "account.unfollow": "הפסקת מעקב",
   "account.unmute": "הפסקת השתקת @{name}",
-  "account.unmute_notifications": "להפסיק השתקת הודעות מ @{name}",
+  "account.unmute_notifications": "להפסיק השתקת התראות מ @{name}",
   "account.unmute_short": "ביטול השתקה",
   "account_note.placeholder": "יש ללחוץ כדי להוסיף הערות",
   "admin.dashboard.daily_retention": "קצב שימור משתמשים (פר יום) אחרי ההרשמה",
@@ -54,49 +54,49 @@
   "admin.dashboard.retention.cohort": "חודש רישום",
   "admin.dashboard.retention.cohort_size": "משתמשים חדשים",
   "alert.rate_limited.message": "נא לנסות אחרי {retry_time, time, medium}.",
-  "alert.rate_limited.title": "מגבלות מיכסה",
+  "alert.rate_limited.title": "חלה הגבלת קצב",
   "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.",
   "alert.unexpected.title": "אופס!",
-  "announcement.announcement": "הודעה",
+  "announcement.announcement": "הכרזה",
   "attachments_list.unprocessed": "(לא מעובד)",
   "autosuggest_hashtag.per_week": "{count} לשבוע",
   "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
-  "bundle_column_error.body": "משהו השתבש בעת הצגת הרכיב הזה.",
+  "bundle_column_error.body": "משהו השתבש בעת טעינת הרכיב הזה.",
   "bundle_column_error.retry": "לנסות שוב",
   "bundle_column_error.title": "שגיאת רשת",
   "bundle_modal_error.close": "לסגור",
   "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.",
   "bundle_modal_error.retry": "לנסות שוב",
-  "column.blocks": "חסימות",
+  "column.blocks": "משתמשים חסומים",
   "column.bookmarks": "סימניות",
-  "column.community": "ציר זמן מקומי",
+  "column.community": "פיד שרת מקומי",
   "column.direct": "הודעות ישירות",
-  "column.directory": "גלוש פרופילים",
-  "column.domain_blocks": "Hidden domains",
+  "column.directory": "עיין בפרופילים",
+  "column.domain_blocks": "קהילות (שמות מתחם) מוסתרות",
   "column.favourites": "חיבובים",
   "column.follow_requests": "בקשות מעקב",
-  "column.home": "בבית",
+  "column.home": "פיד הבית",
   "column.lists": "רשימות",
   "column.mutes": "השתקות",
   "column.notifications": "התראות",
-  "column.pins": "Pinned toot",
-  "column.public": "בפרהסיה",
-  "column_back_button.label": "חזרה",
-  "column_header.hide_settings": "הסתרת העדפות",
-  "column_header.moveLeft_settings": "הזחת טור לשמאל",
-  "column_header.moveRight_settings": "הזחת טור לימין",
-  "column_header.pin": "קיבוע",
+  "column.pins": "פווסטים נעוצים",
+  "column.public": "פיד כללי (כל השרתים)",
+  "column_back_button.label": "בחזרה",
+  "column_header.hide_settings": "הסתרת הגדרות",
+  "column_header.moveLeft_settings": "הזזת טור לשמאל",
+  "column_header.moveRight_settings": "הזזת טור לימין",
+  "column_header.pin": "הצמדה",
   "column_header.show_settings": "הצגת העדפות",
-  "column_header.unpin": "שחרור קיבוע",
+  "column_header.unpin": "שחרור הצמדה",
   "column_subheading.settings": "אפשרויות",
   "community.column_settings.local_only": "מקומי בלבד",
-  "community.column_settings.media_only": "Media only",
-  "community.column_settings.remote_only": "מרחוק בלבד",
-  "compose.language.change": "Change language",
-  "compose.language.search": "Search languages...",
+  "community.column_settings.media_only": "מדיה בלבד",
+  "community.column_settings.remote_only": "מרוחק בלבד",
+  "compose.language.change": "שינוי שפת הפוסט",
+  "compose.language.search": "חיפוש שפות...",
   "compose_form.direct_message_warning_learn_more": "מידע נוסף",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
-  "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+  "compose_form.encryption_warning": "פוסטים במסטודון לא מוצפנים מקצה לקצה. אל תשתפו מידע רגיש במסטודון.",
+  "compose_form.hashtag_warning": "פוסט זה לא יירשם תחת תגי הקבצה (האשטאגים) היות והנראות שלו היא 'לא רשום'. רק פוסטים ציבוריים יכולים להימצא באמצעות תגי הקבצה.",
   "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
   "compose_form.lock_disclaimer.lock": "נעול",
   "compose_form.placeholder": "מה עובר לך בראש?",
@@ -106,36 +106,36 @@
   "compose_form.poll.remove_option": "הסר בחירה זו",
   "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר",
   "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "פרסום",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "שמירת שינויים",
   "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}",
   "compose_form.sensitive.marked": "{count, plural, one {מידע מסומן כרגיש} other {מידע מסומן כרגיש}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {מידע לא מסומן כרגיש} other {מידע לא מסומן כרגיש}}",
-  "compose_form.spoiler.marked": "Text is hidden behind warning",
-  "compose_form.spoiler.unmarked": "Text is not hidden",
-  "compose_form.spoiler_placeholder": "אזהרת תוכן",
+  "compose_form.spoiler.marked": "הסר אזהרת תוכן",
+  "compose_form.spoiler.unmarked": "הוסף אזהרת תוכן",
+  "compose_form.spoiler_placeholder": "כתוב את האזהרה שלך כאן",
   "confirmation_modal.cancel": "ביטול",
   "confirmations.block.block_and_report": "לחסום ולדווח",
   "confirmations.block.confirm": "לחסום",
-  "confirmations.block.message": "לחסום את {name}?",
+  "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?",
   "confirmations.delete.confirm": "למחוק",
-  "confirmations.delete.message": "למחוק את ההודעה?",
+  "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?",
   "confirmations.delete_list.confirm": "למחוק",
   "confirmations.delete_list.message": "האם אתם בטוחים שאתם רוצים למחוק את הרשימה לצמיתות?",
   "confirmations.discard_edit_media.confirm": "השלך",
   "confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?",
-  "confirmations.domain_block.confirm": "הסתר קהילה שלמה",
-  "confirmations.domain_block.message": "באמת באמת לחסום את כל קהילת {domain}? ברב המקרים השתקות נבחרות של מספר משתמשים מסויימים צריכה להספיק.",
+  "confirmations.domain_block.confirm": "חסמו לגמרי את שם המתחם (דומיין)",
+  "confirmations.domain_block.message": "בטוחה שברצונך באמת לחסום את קהילת {domain}? ברב המקרים השתקה וחסימה של מספר משתמשים עשוייה להספיק. לא תראי תוכל מכלל שם המתחם בפידים הציבוריים או בהתראות שלך. העוקבים שלך מהקהילה הזאת יוסרו",
   "confirmations.logout.confirm": "להתנתק",
   "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?",
   "confirmations.mute.confirm": "להשתיק",
-  "confirmations.mute.explanation": "זה יסתיר חצרוצים שלהם וחצרוצים המזכירים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.",
+  "confirmations.mute.explanation": "זה יסתיר פוסטים שלהם ופוסטים שמאזכרים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.",
   "confirmations.mute.message": "להשתיק את {name}?",
   "confirmations.redraft.confirm": "מחק וערוך מחדש",
-  "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
+  "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות לפוסט המקורי ישארו יתומות.",
   "confirmations.reply.confirm": "הגב",
-  "confirmations.reply.message": "הגבה עכשיו ידרוס את ההודעה שאתם כותבים כעת. האם אתם בטוחים שברצונכם להמשיך?",
+  "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?",
   "confirmations.unfollow.confirm": "להפסיק מעקב",
   "confirmations.unfollow.message": "להפסיק מעקב אחרי {name}?",
   "conversation.delete": "מחיקת שיחה",
@@ -149,7 +149,7 @@
   "embed.instructions": "ניתן להטמיע את ההודעה באתרך ע\"י העתקת הקוד שלהלן.",
   "embed.preview": "דוגמא כיצד זה יראה:",
   "emoji_button.activity": "פעילות",
-  "emoji_button.clear": "Clear",
+  "emoji_button.clear": "ניקוי",
   "emoji_button.custom": "מיוחדים",
   "emoji_button.flags": "דגלים",
   "emoji_button.food": "אוכל ושתיה",
@@ -164,22 +164,22 @@
   "emoji_button.symbols": "סמלים",
   "emoji_button.travel": "טיולים ואתרים",
   "empty_column.account_suspended": "חשבון מושהה",
-  "empty_column.account_timeline": "No toots here!",
+  "empty_column.account_timeline": "אין עדיין אף פוסט!",
   "empty_column.account_unavailable": "פרופיל לא זמין",
   "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.",
   "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
-  "empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
+  "empty_column.community": "פיד השרת המקומי ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
   "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.",
-  "empty_column.domain_blocks": "There are no hidden domains yet.",
+  "empty_column.domain_blocks": "אין עדיין קהילות מוסתרות.",
   "empty_column.explore_statuses": "אין נושאים חמים כרגע. אולי אחר כך!",
-  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
-  "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+  "empty_column.favourited_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.",
+  "empty_column.favourites": "עוד לא חיבבו את הפוסט הזה. כאשר זה יקרה, החיבובים יופיעו כאן.",
   "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.",
   "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.",
   "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.",
   "empty_column.home": "אף אחד לא במעקב עדיין. אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר חצוצרנים אחרים. {suggestions}",
   "empty_column.home.suggestions": "ראה/י כמה הצעות",
-  "empty_column.list": "אין עדיין מאום ברשימה.",
+  "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו פוסטים חדשים, הם יופיעו פה.",
   "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.",
   "empty_column.mutes": "עוד לא השתקת שום משתמש.",
   "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.",
@@ -194,22 +194,22 @@
   "explore.suggested_follows": "עבורך",
   "explore.title": "סיור",
   "explore.trending_links": "חדשות",
-  "explore.trending_statuses": "חצרוצים",
+  "explore.trending_statuses": "פוסטים",
   "explore.trending_tags": "האשטאגים",
   "follow_recommendations.done": "בוצע",
   "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.",
   "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!",
-  "follow_request.authorize": "קבלה",
+  "follow_request.authorize": "הרשאה",
   "follow_request.reject": "דחיה",
   "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.",
   "generic.saved": "נשמר",
   "getting_started.developers": "מפתחות",
-  "getting_started.directory": "ספריית פרופילים",
+  "getting_started.directory": "מדריך פרופילים",
   "getting_started.documentation": "תיעוד",
   "getting_started.heading": "בואו נתחיל",
   "getting_started.invite": "להזמין אנשים",
   "getting_started.open_source_notice": "מסטודון היא תוכנה חופשית (בקוד פתוח). ניתן לתרום או לדווח על בעיות בגיטהאב: {github}.",
-  "getting_started.security": "Security",
+  "getting_started.security": "הגדרות חשבון",
   "getting_started.terms": "תנאי שימוש",
   "hashtag.column_header.tag_mode.all": "ו- {additional}",
   "hashtag.column_header.tag_mode.any": "או {additional}",
@@ -218,8 +218,8 @@
   "hashtag.column_settings.select.placeholder": "הזן תגי הקבצה…",
   "hashtag.column_settings.tag_mode.all": "כל אלה",
   "hashtag.column_settings.tag_mode.any": "כל אלה",
-  "hashtag.column_settings.tag_mode.none": "אפאחד מאלה",
-  "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "hashtag.column_settings.tag_mode.none": "אף אחד מאלה",
+  "hashtag.column_settings.tag_toggle": "כלול תגיות נוספות בטור זה",
   "home.column_settings.basic": "למתחילים",
   "home.column_settings.show_reblogs": "הצגת הדהודים",
   "home.column_settings.show_replies": "הצגת תגובות",
@@ -259,7 +259,7 @@
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן",
   "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה",
-  "keyboard_shortcuts.toot": "להתחיל חיצרוץ חדש",
+  "keyboard_shortcuts.toot": "להתחיל פוסט חדש",
   "keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש",
   "keyboard_shortcuts.up": "לנוע במעלה הרשימה",
   "lightbox.close": "סגירה",
@@ -267,8 +267,8 @@
   "lightbox.expand": "הרחבת קופסת צפייה בתמונה",
   "lightbox.next": "הלאה",
   "lightbox.previous": "הקודם",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
+  "limited_account_hint.action": "הצג חשבון בכל זאת",
+  "limited_account_hint.title": "פרופיל זה הוסתר ע\"י מנהלי השרת שלך.",
   "lists.account.add": "הוסף לרשימה",
   "lists.account.remove": "הסר מרשימה",
   "lists.delete": "מחיקת רשימה",
@@ -288,32 +288,32 @@
   "missing_indicator.label": "לא נמצא",
   "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב",
   "mute_modal.duration": "משך הזמן",
-  "mute_modal.hide_notifications": "להסתיר הודעות מחשבון זה?",
+  "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?",
   "mute_modal.indefinite": "ללא תאריך סיום",
   "navigation_bar.apps": "יישומונים לנייד",
-  "navigation_bar.blocks": "חסימות",
+  "navigation_bar.blocks": "משתמשים חסומים",
   "navigation_bar.bookmarks": "סימניות",
-  "navigation_bar.community_timeline": "ציר זמן מקומי",
-  "navigation_bar.compose": "Compose new toot",
+  "navigation_bar.community_timeline": "פיד שרת מקומי",
+  "navigation_bar.compose": "צור פוסט חדש",
   "navigation_bar.direct": "הודעות ישירות",
   "navigation_bar.discover": "גלה",
-  "navigation_bar.domain_blocks": "Hidden domains",
+  "navigation_bar.domain_blocks": "קהילות (שמות מתחם) חסומות",
   "navigation_bar.edit_profile": "עריכת פרופיל",
-  "navigation_bar.explore": "חקור",
+  "navigation_bar.explore": "סיור",
   "navigation_bar.favourites": "חיבובים",
   "navigation_bar.filters": "מילים מושתקות",
   "navigation_bar.follow_requests": "בקשות מעקב",
   "navigation_bar.follows_and_followers": "נעקבים ועוקבים",
-  "navigation_bar.info": "מידע נוסף",
+  "navigation_bar.info": "אודות שרת זה",
   "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת",
   "navigation_bar.lists": "רשימות",
-  "navigation_bar.logout": "יציאה",
+  "navigation_bar.logout": "התנתקות",
   "navigation_bar.mutes": "השתקות",
   "navigation_bar.personal": "אישי",
-  "navigation_bar.pins": "חיצרוצים מקובעים",
+  "navigation_bar.pins": "פוסטים נעוצים",
   "navigation_bar.preferences": "העדפות",
   "navigation_bar.public_timeline": "ציר זמן בין-קהילתי",
-  "navigation_bar.security": "בטיחות",
+  "navigation_bar.security": "אבטחה",
   "notification.admin.sign_up": "{name} נרשמו",
   "notification.favourite": "חצרוצך חובב על ידי {name}",
   "notification.follow": "{name} במעקב אחרייך",
@@ -365,20 +365,20 @@
   "poll.refresh": "רענון",
   "poll.total_people": "{count, plural, one {# איש/אישה} other {# אנשים}}",
   "poll.total_votes": "{count, plural, one {# קול} other {# קולות}}",
-  "poll.vote": "קול",
+  "poll.vote": "הצבעה",
   "poll.voted": "הצבעת לתשובה זו",
   "poll.votes": "{votes, plural, one {# קול} other {# קולות}}",
   "poll_button.add_poll": "הוספת סקר",
   "poll_button.remove_poll": "הסרת סקר",
   "privacy.change": "שינוי פרטיות ההודעה",
-  "privacy.direct.long": "הצג רק למי שהודעה זו פונה אליו",
-  "privacy.direct.short": "אנשים מוזכרים בלבד",
+  "privacy.direct.long": "רק למשתמשים מאוזכרים (mentioned)",
+  "privacy.direct.short": "למאוזכרים בלבד",
   "privacy.private.long": "הצג לעוקבים בלבד",
-  "privacy.private.short": "עוקבים בלבד",
+  "privacy.private.short": "לעוקבים בלבד",
   "privacy.public.long": "גלוי לכל",
   "privacy.public.short": "פומבי",
   "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי",
-  "privacy.unlisted.short": "לא לפיד הכללי",
+  "privacy.unlisted.short": "לא רשום (לא לפיד הכללי)",
   "refresh": "רענון",
   "regeneration_indicator.label": "טוען…",
   "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!",
@@ -395,7 +395,7 @@
   "relative_time.today": "היום",
   "reply_indicator.cancel": "ביטול",
   "report.block": "לחסום",
-  "report.block_explanation": "לא ניתן יהיה לראות את חצרוציהם. הם לא יוכלו לראות את חצרוציך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.",
+  "report.block_explanation": "לא ניתן יהיה לראות את הפוסטים שלהן. הן לא יוכלו לראות את הפוסטים שלך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.",
   "report.categories.other": "אחר",
   "report.categories.spam": "ספאם",
   "report.categories.violation": "התוכן מפר אחד או יותר מחוקי השרת",
@@ -451,7 +451,7 @@
   "status.bookmark": "סימניה",
   "status.cancel_reblog_private": "הסרת הדהוד",
   "status.cannot_reblog": "לא ניתן להדהד הודעה זו",
-  "status.copy": "Copy link to status",
+  "status.copy": "העתק/י קישור לפוסט זה",
   "status.delete": "מחיקה",
   "status.detailed_status": "תצוגת שיחה מפורטת",
   "status.direct": "הודעה ישירה ל@{name}",
@@ -469,8 +469,8 @@
   "status.more": "עוד",
   "status.mute": "להשתיק את @{name}",
   "status.mute_conversation": "השתקת שיחה",
-  "status.open": "הרחבת הודעה",
-  "status.pin": "לקבע באודות",
+  "status.open": "הרחבת פוסט זה",
+  "status.pin": "הצמדה לפרופיל שלי",
   "status.pinned": "Pinned toot",
   "status.read_more": "לקרוא עוד",
   "status.reblog": "הדהוד",
@@ -480,7 +480,7 @@
   "status.redraft": "מחיקה ועריכה מחדש",
   "status.remove_bookmark": "הסרת סימניה",
   "status.reply": "תגובה",
-  "status.replyAll": "תגובה לכולם",
+  "status.replyAll": "תגובה לפתיל",
   "status.report": "דיווח על @{name}",
   "status.sensitive_warning": "תוכן רגיש",
   "status.share": "שיתוף",
@@ -488,15 +488,15 @@
   "status.show_less_all": "להציג פחות מהכל",
   "status.show_more": "הראה יותר",
   "status.show_more_all": "להציג יותר מהכל",
-  "status.show_thread": "להציג סיב",
+  "status.show_thread": "הצג כחלק מפתיל",
   "status.uncached_media_warning": "לא זמין",
   "status.unmute_conversation": "הסרת השתקת שיחה",
   "status.unpin": "לשחרר מקיבוע באודות",
   "suggestions.dismiss": "להתעלם מהצעה",
   "suggestions.header": "ייתכן שזה יעניין אותך…",
-  "tabs_bar.federated_timeline": "ציר זמן בין-קהילתי",
-  "tabs_bar.home": "בבית",
-  "tabs_bar.local_timeline": "ציר זמן מקומי",
+  "tabs_bar.federated_timeline": "פיד כללי (בין-קהילתי)",
+  "tabs_bar.home": "פיד הבית",
+  "tabs_bar.local_timeline": "פיד שרת מקומי",
   "tabs_bar.notifications": "התראות",
   "tabs_bar.search": "חיפוש",
   "time_remaining.days": "נותרו {number, plural, one {# יום} other {# ימים}}",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 9b8b6f5fe..10f80ee61 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -95,7 +95,7 @@
   "compose.language.change": "Ganti bahasa",
   "compose.language.search": "Telusuri bahasa...",
   "compose_form.direct_message_warning_learn_more": "Pelajari selengkapnya",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "Kiriman di Mastodon tidak dienkripsi end-to-end. Jangan bagikan informasi sensitif melalui Mastodon.",
   "compose_form.hashtag_warning": "Toot ini tidak akan ada dalam daftar tagar manapun karena telah diatur sebagai tidak terdaftar. Hanya postingan publik yang bisa dicari dengan tagar.",
   "compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.",
   "compose_form.lock_disclaimer.lock": "terkunci",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 4c609edb7..3eea9dcca 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -442,7 +442,7 @@
   "search_results.all": "Omna",
   "search_results.hashtags": "Hashtagi",
   "search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti",
-  "search_results.statuses": "Toots",
+  "search_results.statuses": "Posti",
   "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
   "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}",
   "status.admin_account": "Apertez jerintervizajo por @{name}",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 12c15e389..a38f18fa3 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Vê hilbijarê rake",
   "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar",
   "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Biweşîne",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Guhertinan tomar bike",
   "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 1a981ea0e..b889948cf 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -26,7 +26,7 @@
   "account.joined": "Pievienojās {date}",
   "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}",
   "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.",
-  "account.media": "Mediji",
+  "account.media": "Multivide",
   "account.mention": "Piemin @{name}",
   "account.moved_to": "{name} ir pārcelts uz:",
   "account.mute": "Apklusināt @{name}",
@@ -90,7 +90,7 @@
   "column_header.unpin": "Atspraust",
   "column_subheading.settings": "Iestatījumi",
   "community.column_settings.local_only": "Tikai vietējie",
-  "community.column_settings.media_only": "Tikai mediji",
+  "community.column_settings.media_only": "Tikai multivide",
   "community.column_settings.remote_only": "Tikai attālinātie",
   "compose.language.change": "Mainīt valodu",
   "compose.language.search": "Meklēt valodas...",
@@ -109,9 +109,9 @@
   "compose_form.publish": "Publicēt",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Saglabāt izmaiņas",
-  "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt mediju kā sensitīvu} other {Atzīmēt medijus kā sensitīvus}}",
-  "compose_form.sensitive.marked": "{count, plural, one {Medijs ir atzīmēts kā sensitīvs} other {Mediji ir atzīmēti kā sensitīvi}}",
-  "compose_form.sensitive.unmarked": "{count, plural, one {Medijs nav atzīmēts kā sensitīvs} other {Mediji nav atzīmēti kā sensitīvi}}",
+  "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt multividi kā sensitīvu} other {Atzīmēt multivides kā sensitīvas}}",
+  "compose_form.sensitive.marked": "{count, plural, one {Multivide ir atzīmēta kā sensitīva} other {Multivides ir atzīmētas kā sensitīvas}}",
+  "compose_form.sensitive.unmarked": "{count, plural, one {Multivide nav atzīmēts kā sensitīva} other {Multivides nav atzīmētas kā sensitīvas}}",
   "compose_form.spoiler.marked": "Noņemt satura brīdinājumu",
   "compose_form.spoiler.unmarked": "Pievienot satura brīdinājumu",
   "compose_form.spoiler_placeholder": "Ieraksti savu brīdinājumu šeit",
@@ -124,7 +124,7 @@
   "confirmations.delete_list.confirm": "Dzēst",
   "confirmations.delete_list.message": "Vai tiešam vēlies neatgriezeniski dzēst šo sarakstu?",
   "confirmations.discard_edit_media.confirm": "Izmest",
-  "confirmations.discard_edit_media.message": "Vai tev ir nesaglabātas izmaiņas mediju aprakstā vai priekšskatījumā, vai tomēr atmest tās?",
+  "confirmations.discard_edit_media.message": "Vai tev ir nesaglabātas izmaiņas multivides aprakstā vai priekšskatījumā, vai tomēr atmest tās?",
   "confirmations.domain_block.confirm": "Bloķēt visu domēnu",
   "confirmations.domain_block.message": "Vai tu tiešām, tiešam vēlies bloķēt visu domēnu {domain}? Lielākajā daļā gadījumu pietiek ja nobloķē vai apklusini kādu. Tu neredzēsi saturu vai paziņojumus no šī domēna nevienā laika līnijā. Tavi sekotāji no šī domēna tiks noņemti.",
   "confirmations.logout.confirm": "Iziet",
@@ -171,7 +171,7 @@
   "empty_column.community": "Vietējā ziņu lenta ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!",
   "empty_column.direct": "Patrez tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.",
   "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.",
-  "empty_column.explore_statuses": "Pašlaik nekas nav tendēts. Pārbaudiet vēlāk!",
+  "empty_column.explore_statuses": "Pašlaik nekā aktuāla nav. Pārbaudi vēlāk!",
   "empty_column.favourited_statuses": "Patreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.",
   "empty_column.favourites": "Neviens šo ziņojumu vel nav izcēlis. Kad būs, tie parādīsies šeit.",
   "empty_column.follow_recommendations": "Šķiet, ka tev nevarēja ģenerēt ieteikumus. Vari mēģināt izmantot meklēšanu, lai meklētu cilvēkus, kurus tu varētu pazīt, vai izpētīt populārākās atsauces.",
@@ -188,7 +188,7 @@
   "error.unexpected_crash.explanation_addons": "Šo lapu nevarēja parādīt pareizi. Šo kļūdu, iespējams, izraisīja pārlūkprogrammas papildinājums vai automātiskās tulkošanas rīki.",
   "error.unexpected_crash.next_steps": "Mēģini atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai vietējo lietotni.",
   "error.unexpected_crash.next_steps_addons": "Mēģini tos atspējot un atsvaidzināt lapu. Ja tas nepalīdz, iespējams, varēsi lietot Mastodon, izmantojot citu pārlūkprogrammu vai vietējo lietotni.",
-  "errors.unexpected_crash.copy_stacktrace": "Iekopēt starpliktuvē",
+  "errors.unexpected_crash.copy_stacktrace": "Kopēt stacktrace uz starpliktuvi",
   "errors.unexpected_crash.report_issue": "Ziņot par problēmu",
   "explore.search_results": "Meklēšanas rezultāti",
   "explore.suggested_follows": "Tev",
@@ -207,7 +207,7 @@
   "getting_started.directory": "Profila direktorija",
   "getting_started.documentation": "Dokumentācija",
   "getting_started.heading": "Darba sākšana",
-  "getting_started.invite": "Uzaiciniet cilvēkus",
+  "getting_started.invite": "Uzaicini cilvēkus",
   "getting_started.open_source_notice": "Mastodon ir atvērtā koda programmatūra. Tu vari dot savu ieguldījumu vai arī ziņot par problēmām {github}.",
   "getting_started.security": "Konta iestatījumi",
   "getting_started.terms": "Pakalpojuma noteikumi",
@@ -230,7 +230,7 @@
   "intervals.full.minutes": "{number, plural, one {# minūte} other {# minūtes}}",
   "keyboard_shortcuts.back": "Pāriet atpakaļ",
   "keyboard_shortcuts.blocked": "Atvērt bloķēto lietotāju sarakstu",
-  "keyboard_shortcuts.boost": "Palielināt ziņu",
+  "keyboard_shortcuts.boost": "Atbalstīt ziņu",
   "keyboard_shortcuts.column": "Fokusēt kolonnu",
   "keyboard_shortcuts.compose": "Fokusēt veidojamā teksta lauku",
   "keyboard_shortcuts.description": "Apraksts",
@@ -245,11 +245,11 @@
   "keyboard_shortcuts.hotkey": "Ātrais taustiņš",
   "keyboard_shortcuts.legend": "Parādīt šo leģendu",
   "keyboard_shortcuts.local": "Atvērt vietējo ziņu lenti",
-  "keyboard_shortcuts.mention": "Minējuma autors",
+  "keyboard_shortcuts.mention": "Pieminēt autoru",
   "keyboard_shortcuts.muted": "Atvērt apklusināto lietotāju sarakstu",
-  "keyboard_shortcuts.my_profile": "Atvērt manu profilu",
+  "keyboard_shortcuts.my_profile": "Atvērt savu profilu",
   "keyboard_shortcuts.notifications": "Atvērt paziņojumu kolonnu",
-  "keyboard_shortcuts.open_media": "Atvērt mediju",
+  "keyboard_shortcuts.open_media": "Atvērt multividi",
   "keyboard_shortcuts.pinned": "Atvērt piesprausto ziņu sarakstu",
   "keyboard_shortcuts.profile": "Atvērt autora profilu",
   "keyboard_shortcuts.reply": "Atbildēt",
@@ -258,15 +258,15 @@
   "keyboard_shortcuts.spoilers": "Rādīt/slēpt CW lauku",
   "keyboard_shortcuts.start": "Atvērt kolonnu “Darba sākšana”",
   "keyboard_shortcuts.toggle_hidden": "Rādīt/slēpt tekstu aiz CW",
-  "keyboard_shortcuts.toggle_sensitivity": "Rādīt/slēpt mediju",
-  "keyboard_shortcuts.toot": "Sākt jaunu ziņu",
+  "keyboard_shortcuts.toggle_sensitivity": "Rādīt/slēpt multividi",
+  "keyboard_shortcuts.toot": "Sāc jaunu ziņu",
   "keyboard_shortcuts.unfocus": "Atfokusēt teksta veidošanu/meklēšanu",
   "keyboard_shortcuts.up": "Pārvietot sarakstā uz augšu",
   "lightbox.close": "Aizvērt",
-  "lightbox.compress": "Saspiest attēla ietvaru",
-  "lightbox.expand": "Paplašināt attēla ietvaru",
+  "lightbox.compress": "Saspiest attēla skata lodziņu",
+  "lightbox.expand": "Izvērst attēla skata lodziņu",
   "lightbox.next": "Tālāk",
-  "lightbox.previous": "Iepriekš",
+  "lightbox.previous": "Iepriekšējais",
   "limited_account_hint.action": "Tik un tā rādīt profilu",
   "limited_account_hint.title": "Tava servera moderatori ir paslēpuši šo profilu.",
   "lists.account.add": "Pievienot sarakstam",
@@ -276,10 +276,10 @@
   "lists.edit.submit": "Mainīt virsrakstu",
   "lists.new.create": "Pievienot sarakstu",
   "lists.new.title_placeholder": "Jaunais saraksta nosaukums",
-  "lists.replies_policy.followed": "Jebkuram lietotājam, kuram seko",
+  "lists.replies_policy.followed": "Jebkurš sekots lietotājs",
   "lists.replies_policy.list": "Saraksta dalībnieki",
   "lists.replies_policy.none": "Nevienam",
-  "lists.replies_policy.title": "Rādīt atbildes:",
+  "lists.replies_policy.title": "Rādīt atbildes uz:",
   "lists.search": "Meklēt starp cilvēkiem, kuriem tu seko",
   "lists.subheading": "Tavi saraksti",
   "load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 62c64acec..3a57a5c3f 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Levar aquesta opcion",
   "compose_form.poll.switch_to_multiple": "Cambiar lo sondatge per permetre de causidas multiplas",
   "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Publicar",
   "compose_form.publish_loud": "{publish} !",
   "compose_form.save_changes": "Salvar los cambiaments",
   "compose_form.sensitive.hide": "Marcar coma sensible",
@@ -396,7 +396,7 @@
   "reply_indicator.cancel": "Anullar",
   "report.block": "Blocar",
   "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Other",
+  "report.categories.other": "Autre",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Content violates one or more server rules",
   "report.category.subtitle": "Choose the best match",
@@ -427,9 +427,9 @@
   "report.target": "Senhalar {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
+  "report.thanks.title": "Volètz pas veire aquò ?",
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
+  "report.unfollow": "Quitar de sègre {name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
   "search.placeholder": "Recercar",
   "search_popout.search_format": "Format recèrca avançada",
@@ -439,7 +439,7 @@
   "search_popout.tips.text": "Lo tèxte brut tòrna escais, noms d’utilizaire e etiquetas correspondents",
   "search_popout.tips.user": "utilizaire",
   "search_results.accounts": "Gents",
-  "search_results.all": "All",
+  "search_results.all": "Tot",
   "search_results.hashtags": "Etiquetas",
   "search_results.nothing_found": "Could not find anything for these search terms",
   "search_results.statuses": "Tuts",
@@ -457,12 +457,12 @@
   "status.direct": "Messatge per @{name}",
   "status.edit": "Modificar",
   "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
+  "status.edited_x_times": "Modificat {count, plural, un {{count} còp} other {{count} còps}}",
   "status.embed": "Embarcar",
   "status.favourite": "Apondre als favorits",
   "status.filtered": "Filtrat",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
+  "status.history.created": "{name} o creèt lo {date}",
+  "status.history.edited": "{name} o modifiquèt lo {date}",
   "status.load_more": "Cargar mai",
   "status.media_hidden": "Mèdia rescondut",
   "status.mention": "Mencionar",
@@ -520,7 +520,7 @@
   "upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.",
   "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas",
   "upload_form.description": "Descripcion pels mal vesents",
-  "upload_form.description_missing": "No description added",
+  "upload_form.description_missing": "Cap de descripcion pas aponduda",
   "upload_form.edit": "Modificar",
   "upload_form.thumbnail": "Cambiar la vinheta",
   "upload_form.undo": "Suprimir",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 71a57bcb4..bdf973e04 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -95,7 +95,7 @@
   "compose.language.change": "Alterar idioma",
   "compose.language.search": "Pesquisar idiomas...",
   "compose_form.direct_message_warning_learn_more": "Saiba mais",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "Postagens no Mastodon não são criptografadas de ponta-a-ponta. Não compartilhe nenhuma informação sensível no Mastodon.",
   "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.",
   "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.",
   "compose_form.lock_disclaimer.lock": "trancado",
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Remover opção",
   "compose_form.poll.switch_to_multiple": "Permitir múltiplas escolhas",
   "compose_form.poll.switch_to_single": "Opção única",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Publicar",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Salvar alterações",
   "compose_form.sensitive.hide": "{count, plural, one {Marcar mídia como sensível} other {Marcar mídias como sensível}}",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index bec2fae64..861722c2f 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -32,7 +32,7 @@
   "account.mute": "Nevšímaj si @{name}",
   "account.mute_notifications": "Stĺm oboznámenia od @{name}",
   "account.muted": "Nevšímaný/á",
-  "account.posts": "Príspevky",
+  "account.posts": "Príspevky/ov",
   "account.posts_with_replies": "Príspevky, aj s odpoveďami",
   "account.report": "Nahlás @{name}",
   "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti",
@@ -93,7 +93,7 @@
   "community.column_settings.media_only": "Iba médiá",
   "community.column_settings.remote_only": "Iba odľahlé",
   "compose.language.change": "Zmeň jazyk",
-  "compose.language.search": "Search languages...",
+  "compose.language.search": "Hľadaj medzi jazykmi...",
   "compose_form.direct_message_warning_learn_more": "Zisti viac",
   "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
   "compose_form.hashtag_warning": "Tento toot nebude zobrazený pod žiadným haštagom lebo nieje listovaný. Iba verejné tooty môžu byť nájdené podľa haštagu.",
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Odstráň túto voľbu",
   "compose_form.poll.switch_to_multiple": "Zmeň anketu pre povolenie viacerých možností",
   "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Zverejni",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Ulož zmeny",
   "compose_form.sensitive.hide": "Označ médiá ako chúlostivé",
@@ -149,7 +149,7 @@
   "embed.instructions": "Umiestni kód uvedený nižšie pre pridanie tohto statusu na tvoju web stránku.",
   "embed.preview": "Tu je ako to bude vyzerať:",
   "emoji_button.activity": "Aktivita",
-  "emoji_button.clear": "Clear",
+  "emoji_button.clear": "Vyčisti",
   "emoji_button.custom": "Vlastné",
   "emoji_button.flags": "Vlajky",
   "emoji_button.food": "Jedlá a nápoje",
@@ -169,7 +169,7 @@
   "empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
   "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.",
   "empty_column.community": "Lokálna časová os je prázdna. Napíšte niečo, aby sa to tu začalo hýbať!",
-  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.direct": "Ešte nemáš žiadne priame správy. Keď nejakú pošleš, alebo dostaneš, ukáže sa tu.",
   "empty_column.domain_blocks": "Žiadne domény ešte niesú skryté.",
   "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
   "empty_column.favourited_statuses": "Nemáš obľúbené ešte žiadne príspevky. Keď si nejaký obľúbiš, bude zobrazený práve tu.",
@@ -267,7 +267,7 @@
   "lightbox.expand": "Rozšíriť náhľad obrázku",
   "lightbox.next": "Ďalšie",
   "lightbox.previous": "Predchádzajúci",
-  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.action": "Ukáž profil aj tak",
   "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Pridaj do zoznamu",
   "lists.account.remove": "Odober zo zoznamu",
@@ -372,10 +372,10 @@
   "poll_button.remove_poll": "Odstráň anketu",
   "privacy.change": "Uprav súkromie príspevku",
   "privacy.direct.long": "Pošli iba spomenutým užívateľom",
-  "privacy.direct.short": "Direct",
+  "privacy.direct.short": "Iba spomenutým ľudom",
   "privacy.private.long": "Pošli iba následovateľom",
-  "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
+  "privacy.private.short": "Iba pre sledujúcich",
+  "privacy.public.long": "Viditeľné pre všetkých",
   "privacy.public.short": "Verejné",
   "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
   "privacy.unlisted.short": "Verejne, ale nezobraziť v osi",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 5aa5d5ef3..ba354e98b 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -92,10 +92,10 @@
   "community.column_settings.local_only": "Vetëm vendore",
   "community.column_settings.media_only": "Vetëm Media",
   "community.column_settings.remote_only": "Vetëm të largëta",
-  "compose.language.change": "Change language",
-  "compose.language.search": "Search languages...",
+  "compose.language.change": "Ndryshoni gjuhën",
+  "compose.language.search": "Kërkoni te gjuhët…",
   "compose_form.direct_message_warning_learn_more": "Mësoni më tepër",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "Postimet në Mastodon nuk fshehtëzohen skaj-më-skaj. Mos ndani me të tjerë gjëra me spec në Mastodon.",
   "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.",
   "compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.",
   "compose_form.lock_disclaimer.lock": "e kyçur",
@@ -106,7 +106,7 @@
   "compose_form.poll.remove_option": "Hiqe këtë zgjedhje",
   "compose_form.poll.switch_to_multiple": "Ndrysho votimin për të lejuar shumë zgjedhje",
   "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Botoje",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Ruaji ndryshimet",
   "compose_form.sensitive.hide": "{count, plural, one {Vëri shenjë medias si rezervat} other {Vëru shenjë mediave si rezervat}}",
@@ -149,7 +149,7 @@
   "embed.instructions": "Trupëzojeni këtë gjendje në sajtin tuaj duke kopjuar kodin më poshtë.",
   "embed.preview": "Ja si do të duket:",
   "emoji_button.activity": "Veprimtari",
-  "emoji_button.clear": "Clear",
+  "emoji_button.clear": "Spastroje",
   "emoji_button.custom": "Vetjak",
   "emoji_button.flags": "Flamuj",
   "emoji_button.food": "Ushqim & Pije",
@@ -228,47 +228,47 @@
   "intervals.full.days": "{number, plural, one {# ditë} other {# ditë}}",
   "intervals.full.hours": "{number, plural, one {# orë} other {# orë}}",
   "intervals.full.minutes": "{number, plural, one {# minutë} other {# minuta}}",
-  "keyboard_shortcuts.back": "për shkuarje mbrapsht",
-  "keyboard_shortcuts.blocked": "për hapje liste përdoruesish të bllokuar",
-  "keyboard_shortcuts.boost": "për përforcim",
-  "keyboard_shortcuts.column": "për kalim fokusi mbi një gjendje te një nga shtyllat",
-  "keyboard_shortcuts.compose": "për kalim fokusi te fusha e hartimit të mesazheve",
+  "keyboard_shortcuts.back": "Për shkuarje mbrapsht",
+  "keyboard_shortcuts.blocked": "Për hapje liste përdoruesish të bllokuar",
+  "keyboard_shortcuts.boost": "Përforcim postimi",
+  "keyboard_shortcuts.column": "Fokusi mbi një shtyllë",
+  "keyboard_shortcuts.compose": "Fokusi te fusha e hartimit të mesazheve",
   "keyboard_shortcuts.description": "Përshkrim",
   "keyboard_shortcuts.direct": "për hapje shtylle mesazhesh të drejtpërdrejtë",
-  "keyboard_shortcuts.down": "për zbritje poshtë nëpër listë",
-  "keyboard_shortcuts.enter": "për hapje gjendjeje",
-  "keyboard_shortcuts.favourite": "për t’i vënë shenjë si të parapëlqyer",
-  "keyboard_shortcuts.favourites": "për hapje liste të parapëlqyerish",
-  "keyboard_shortcuts.federated": "për hapje rrjedhe kohore të të federuarve",
+  "keyboard_shortcuts.down": "Për zbritje poshtë nëpër listë",
+  "keyboard_shortcuts.enter": "Për hapje postimi",
+  "keyboard_shortcuts.favourite": "Për t’i vënë shenjë si të parapëlqyer një postimi",
+  "keyboard_shortcuts.favourites": "Për hapje liste të parapëlqyerish",
+  "keyboard_shortcuts.federated": "Për hapje rrjedhe kohore të të federuarve",
   "keyboard_shortcuts.heading": "Shkurtore tastiere",
-  "keyboard_shortcuts.home": "për hapje rrjedhe kohore vetjake",
+  "keyboard_shortcuts.home": "Për hapje rrjedhe kohore vetjake",
   "keyboard_shortcuts.hotkey": "Tast përkatës",
-  "keyboard_shortcuts.legend": "për shfaqje të kësaj legjende",
-  "keyboard_shortcuts.local": "për hapje rrjedhe kohore vendore",
-  "keyboard_shortcuts.mention": "për përmendje të autorit",
-  "keyboard_shortcuts.muted": "për hapje liste përdoruesish të heshtuar",
-  "keyboard_shortcuts.my_profile": "për hapjen e profilit tuaj",
-  "keyboard_shortcuts.notifications": "për hapje shtylle njoftimesh",
-  "keyboard_shortcuts.open_media": "për hapje mediash",
-  "keyboard_shortcuts.pinned": "për hapje liste mesazhesh të fiksuar",
-  "keyboard_shortcuts.profile": "për hapje të profilit të autorit",
-  "keyboard_shortcuts.reply": "për t’u përgjigjur",
-  "keyboard_shortcuts.requests": "për hapje liste kërkesash për ndjekje",
-  "keyboard_shortcuts.search": "për kalim fokusi te kërkimi",
-  "keyboard_shortcuts.spoilers": "për shfaqje/fshehje fushe CW",
-  "keyboard_shortcuts.start": "për hapjen e shtyllës “fillojani”",
-  "keyboard_shortcuts.toggle_hidden": "për shfaqje/fshehje teksti pas CW",
-  "keyboard_shortcuts.toggle_sensitivity": "për shfaqje/fshehje mediash",
-  "keyboard_shortcuts.toot": "për të filluar një mesazh fringo të ri",
-  "keyboard_shortcuts.unfocus": "për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve",
-  "keyboard_shortcuts.up": "për ngjitje sipër nëpër listë",
+  "keyboard_shortcuts.legend": "Për shfaqje të kësaj legjende",
+  "keyboard_shortcuts.local": "Për hapje rrjedhe kohore vendore",
+  "keyboard_shortcuts.mention": "Për përmendje të autorit",
+  "keyboard_shortcuts.muted": "Për hapje liste përdoruesish të heshtuar",
+  "keyboard_shortcuts.my_profile": "Për hapjen e profilit tuaj",
+  "keyboard_shortcuts.notifications": "Për hapje shtylle njoftimesh",
+  "keyboard_shortcuts.open_media": "Për hapje mediash",
+  "keyboard_shortcuts.pinned": "Për hapje liste mesazhesh të fiksuar",
+  "keyboard_shortcuts.profile": "Për hapje të profilit të autorit",
+  "keyboard_shortcuts.reply": "Për t’iu përgjigjur një postimi",
+  "keyboard_shortcuts.requests": "Për hapje liste kërkesash për ndjekje",
+  "keyboard_shortcuts.search": "Për kalim fokusi te kërkimi",
+  "keyboard_shortcuts.spoilers": "Për shfaqje/fshehje fushe CW",
+  "keyboard_shortcuts.start": "Për hapjen e shtyllës “fillojani”",
+  "keyboard_shortcuts.toggle_hidden": "Për shfaqje/fshehje teksti pas CW",
+  "keyboard_shortcuts.toggle_sensitivity": "Për shfaqje/fshehje mediash",
+  "keyboard_shortcuts.toot": "Për të filluar një mesazh të ri",
+  "keyboard_shortcuts.unfocus": "Për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve",
+  "keyboard_shortcuts.up": "Për ngjitje sipër nëpër listë",
   "lightbox.close": "Mbylle",
   "lightbox.compress": "Ngjeshe kuadratin e parjes së figurave",
   "lightbox.expand": "Zgjeroje kuadratin e parjes së figurave",
   "lightbox.next": "Pasuesja",
   "lightbox.previous": "E mëparshmja",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
+  "limited_account_hint.action": "Shfaqe profilin sido qoftë",
+  "limited_account_hint.title": "Ky profil është fshehur nga moderatorët e shërbyesit tuaj.",
   "lists.account.add": "Shto në listë",
   "lists.account.remove": "Hiqe nga lista",
   "lists.delete": "Fshije listën",
diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss
index cfe3b21db..9edfd6d8d 100644
--- a/app/javascript/styles/contrast/variables.scss
+++ b/app/javascript/styles/contrast/variables.scss
@@ -4,19 +4,17 @@ $black: #000000;
 $classic-base-color: #282c37;
 $classic-primary-color: #9baec8;
 $classic-secondary-color: #d9e1e8;
-$classic-highlight-color: #2b90d9;
+$classic-highlight-color: #6364ff;
 
 $ui-base-color: $classic-base-color !default;
 $ui-primary-color: $classic-primary-color !default;
 $ui-secondary-color: $classic-secondary-color !default;
-
-// Differences
-$ui-highlight-color: #2b5fd9;
+$ui-highlight-color: $classic-highlight-color !default;
 
 $darker-text-color: lighten($ui-primary-color, 20%) !default;
 $dark-text-color: lighten($ui-primary-color, 12%) !default;
 $secondary-text-color: lighten($ui-secondary-color, 6%) !default;
-$highlight-text-color: $classic-highlight-color !default;
+$highlight-text-color: lighten($ui-highlight-color, 8%) !default;
 $action-button-color: #8d9ac2;
 
 $inverted-text-color: $black !default;
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
index f6bc3ac96..cae065878 100644
--- a/app/javascript/styles/mastodon-light/variables.scss
+++ b/app/javascript/styles/mastodon-light/variables.scss
@@ -5,7 +5,7 @@ $white: #ffffff;
 $classic-base-color: #282c37;
 $classic-primary-color: #9baec8;
 $classic-secondary-color: #d9e1e8;
-$classic-highlight-color: #2b90d9;
+$classic-highlight-color: #6364ff;
 
 // Differences
 $success-green: lighten(#3c754d, 8%);
@@ -17,10 +17,11 @@ $ui-base-color: $classic-secondary-color !default;
 $ui-base-lighter-color: #b0c0cf;
 $ui-primary-color: #9bcbed;
 $ui-secondary-color: $classic-base-color !default;
-$ui-highlight-color: #2b90d9;
+$ui-highlight-color: $classic-highlight-color !default;
 
 $primary-text-color: $black !default;
 $darker-text-color: $classic-base-color !default;
+$highlight-text-color: darken($ui-highlight-color, 8%) !default;
 $dark-text-color: #444b5d;
 $action-button-color: #606984;
 
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index 1dfb3d7ee..f4f5bf752 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -133,12 +133,12 @@ $content-width: 840px;
 
       .simple-navigation-active-leaf a {
         color: $primary-text-color;
-        background-color: $ui-highlight-color;
+        background-color: darken($ui-highlight-color, 2%);
         border-bottom: 0;
         border-radius: 0;
 
         &:hover {
-          background-color: lighten($ui-highlight-color, 5%);
+          background-color: $ui-highlight-color;
         }
       }
     }
@@ -901,7 +901,7 @@ a.name-tag,
     border: 0;
 
     a {
-      color: lighten($ui-highlight-color, 8%);
+      color: $highlight-text-color;
     }
 
     dl:first-child .verified {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index e8e72cd78..7ae20fbd9 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -42,7 +42,7 @@
 }
 
 .button {
-  background-color: $ui-highlight-color;
+  background-color: darken($ui-highlight-color, 2%);
   border: 10px none;
   border-radius: 4px;
   box-sizing: border-box;
@@ -60,20 +60,16 @@
   text-align: center;
   text-decoration: none;
   text-overflow: ellipsis;
-  transition: all 100ms ease-in;
   white-space: nowrap;
   width: auto;
 
   &:active,
   &:focus,
   &:hover {
-    background-color: lighten($ui-highlight-color, 10%);
-    transition: all 200ms ease-out;
+    background-color: $ui-highlight-color;
   }
 
   &--destructive {
-    transition: none;
-
     &:active,
     &:focus,
     &:hover {
@@ -829,7 +825,7 @@
   }
 
   a.unhandled-link {
-    color: lighten($ui-highlight-color, 8%);
+    color: $highlight-text-color;
   }
 
   .status__content__spoiler-link {
@@ -899,7 +895,7 @@
     }
 
     &.unhandled-link {
-      color: lighten($ui-highlight-color, 8%);
+      color: $highlight-text-color;
     }
   }
 }
@@ -912,7 +908,7 @@
   display: block;
   font-size: 15px;
   line-height: 20px;
-  color: lighten($ui-highlight-color, 8%);
+  color: $highlight-text-color;
   border: 0;
   background: transparent;
   padding: 0;
@@ -2437,7 +2433,7 @@ a.account__display-name {
   height: 3.9375rem;
   bottom: 1.3125rem;
   right: 1.3125rem;
-  background: darken($ui-highlight-color, 3%);
+  background: darken($ui-highlight-color, 2%);
   color: $white;
   border-radius: 50%;
   font-size: 21px;
@@ -2448,7 +2444,7 @@ a.account__display-name {
   &:hover,
   &:focus,
   &:active {
-    background: lighten($ui-highlight-color, 7%);
+    background: $ui-highlight-color;
   }
 }
 
@@ -2881,11 +2877,11 @@ a.account__display-name {
 }
 
 .react-toggle--checked .react-toggle-track {
-  background-color: $ui-highlight-color;
+  background-color: darken($ui-highlight-color, 2%);
 }
 
 .react-toggle--checked:is(:hover, :focus-within):not(.react-toggle--disabled) .react-toggle-track {
-  background-color: lighten($ui-highlight-color, 10%);
+  background-color: $ui-highlight-color;
 }
 
 .react-toggle-track-check {
@@ -2974,7 +2970,7 @@ a.account__display-name {
     }
 
     &.active {
-      color: $ui-highlight-color;
+      color: $highlight-text-color;
     }
   }
 }
@@ -3407,14 +3403,14 @@ a.status-card.compact:hover {
   }
 
   a {
-    color: lighten($ui-highlight-color, 8%);
+    color: $highlight-text-color;
     text-decoration: none;
 
     &:hover,
     &:focus,
     &:active {
       text-decoration: underline;
-      color: lighten($ui-highlight-color, 12%);
+      color: lighten($highlight-text-color, 4%);
     }
   }
 }
@@ -6427,8 +6423,8 @@ a.status-card.compact:hover {
     vertical-align: middle;
 
     &.checked {
-      border-color: lighten($ui-highlight-color, 8%);
-      background: lighten($ui-highlight-color, 8%);
+      border-color: lighten($ui-highlight-color, 4%);
+      background: lighten($ui-highlight-color, 4%);
     }
   }
 }
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 23dbece6b..5703a64e3 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -791,7 +791,7 @@
       border-top: 0;
 
       a {
-        color: lighten($ui-highlight-color, 8%);
+        color: $highlight-text-color;
       }
 
       dl:first-child .verified {
diff --git a/app/javascript/styles/mastodon/dashboard.scss b/app/javascript/styles/mastodon/dashboard.scss
index 7d0e51fde..c21fc9eba 100644
--- a/app/javascript/styles/mastodon/dashboard.scss
+++ b/app/javascript/styles/mastodon/dashboard.scss
@@ -82,7 +82,7 @@
     display: flex;
     align-items: baseline;
     border-radius: 4px;
-    background: $ui-highlight-color;
+    background: darken($ui-highlight-color, 2%);
     color: $primary-text-color;
     transition: all 100ms ease-in;
     font-size: 14px;
@@ -95,7 +95,7 @@
     &:active,
     &:focus,
     &:hover {
-      background-color: lighten($ui-highlight-color, 10%);
+      background-color: $ui-highlight-color;
       transition: all 200ms ease-out;
     }
 
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 94f553b76..d57eabc09 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -463,14 +463,14 @@ code {
     width: 100%;
     border: 0;
     border-radius: 4px;
-    background: $ui-highlight-color;
+    background: darken($ui-highlight-color, 2%);
     color: $primary-text-color;
     font-size: 18px;
     line-height: inherit;
     height: auto;
     padding: 10px;
-    text-transform: uppercase;
     text-decoration: none;
+    text-transform: uppercase;
     text-align: center;
     box-sizing: border-box;
     cursor: pointer;
@@ -483,13 +483,10 @@ code {
       margin-right: 0;
     }
 
-    &:hover {
-      background-color: lighten($ui-highlight-color, 5%);
-    }
-
     &:active,
-    &:focus {
-      background-color: darken($ui-highlight-color, 5%);
+    &:focus,
+    &:hover {
+      background-color: $ui-highlight-color;
     }
 
     &:disabled:hover {
diff --git a/app/javascript/styles/mastodon/statuses.scss b/app/javascript/styles/mastodon/statuses.scss
index a926aff96..a3237a630 100644
--- a/app/javascript/styles/mastodon/statuses.scss
+++ b/app/javascript/styles/mastodon/statuses.scss
@@ -80,7 +80,7 @@
 .button.logo-button {
   flex: 0 auto;
   font-size: 14px;
-  background: $ui-highlight-color;
+  background: darken($ui-highlight-color, 2%);
   color: $primary-text-color;
   text-transform: none;
   line-height: 1.2;
@@ -104,7 +104,7 @@
   &:active,
   &:focus,
   &:hover {
-    background: lighten($ui-highlight-color, 10%);
+    background: $ui-highlight-color;
   }
 
   &:disabled,
diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss
index 544f33ebf..be2c900ea 100644
--- a/app/javascript/styles/mastodon/variables.scss
+++ b/app/javascript/styles/mastodon/variables.scss
@@ -34,7 +34,7 @@ $primary-text-color: $white !default;
 $darker-text-color: $ui-primary-color !default;
 $dark-text-color: $ui-base-lighter-color !default;
 $secondary-text-color: $ui-secondary-color !default;
-$highlight-text-color: $ui-highlight-color !default;
+$highlight-text-color: lighten($ui-highlight-color, 8%) !default;
 $action-button-color: $ui-base-lighter-color !default;
 $passive-text-color: $gold-star !default;
 $active-passive-text-color: $success-green !default;
diff --git a/app/views/accounts/show.rss.ruby b/app/views/accounts/show.rss.ruby
index 5e1c3a518..fd45a8b2b 100644
--- a/app/views/accounts/show.rss.ruby
+++ b/app/views/accounts/show.rss.ruby
@@ -9,7 +9,6 @@ RSS::Builder.build do |doc|
 
   @statuses.each do |status|
     doc.item do |item|
-      item.title(l(status.created_at))
       item.link(ActivityPub::TagManager.instance.url_for(status))
       item.pub_date(status.created_at)
       item.description(rss_status_content_format(status))
diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby
index 12f560904..9ce71be74 100644
--- a/app/views/tags/show.rss.ruby
+++ b/app/views/tags/show.rss.ruby
@@ -7,7 +7,6 @@ RSS::Builder.build do |doc|
 
   @statuses.each do |status|
     doc.item do |item|
-      item.title(l(status.created_at))
       item.link(ActivityPub::TagManager.instance.url_for(status))
       item.pub_date(status.created_at)
       item.description(rss_status_content_format(status))
diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml
index 8882df613..c41e2341d 100644
--- a/config/locales/activerecord.af.yml
+++ b/config/locales/activerecord.af.yml
@@ -21,6 +21,14 @@ af:
             username:
               invalid: moet slegs letters, nommers en onderstrepe bevat
               reserved: is gereserveer
+        admin/webhook:
+          attributes:
+            url:
+              invalid: is nie 'n geldige URL nie
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: is nie 'n geldige URL nie
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.ast.yml b/config/locales/activerecord.ast.yml
index 4f7c734d9..d35b95dfc 100644
--- a/config/locales/activerecord.ast.yml
+++ b/config/locales/activerecord.ast.yml
@@ -9,3 +9,13 @@ ast:
         username: Nome d'usuariu
       user/invite_request:
         text: Motivu
+    errors:
+      models:
+        admin/webhook:
+          attributes:
+            url:
+              invalid: nun ye una URL válida
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: nun ye una URL válida
diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml
index 03b594c0a..056137276 100644
--- a/config/locales/activerecord.ca.yml
+++ b/config/locales/activerecord.ca.yml
@@ -21,6 +21,14 @@ ca:
             username:
               invalid: només pot contenir lletres, números i guions baixos
               reserved: està reservat
+        admin/webhook:
+          attributes:
+            url:
+              invalid: no és una URL vàlida
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: no és una URL vàlida
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.cs.yml b/config/locales/activerecord.cs.yml
index bd0b28efb..d306fe627 100644
--- a/config/locales/activerecord.cs.yml
+++ b/config/locales/activerecord.cs.yml
@@ -21,6 +21,14 @@ cs:
             username:
               invalid: musí obsahovat pouze písmena, číslice a podtržítka
               reserved: je vyhrazeno
+        admin/webhook:
+          attributes:
+            url:
+              invalid: není platná URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: není platná URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml
index 081f4af76..3566abf43 100644
--- a/config/locales/activerecord.da.yml
+++ b/config/locales/activerecord.da.yml
@@ -21,6 +21,14 @@ da:
             username:
               invalid: må kun indeholde cifre, bogstaver og understreger
               reserved: er reserveret
+        admin/webhook:
+          attributes:
+            url:
+              invalid: "'er ikke en gyldig URL"
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: "'er ikke en gyldig URL"
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml
index 31c410fa3..a24862a70 100644
--- a/config/locales/activerecord.de.yml
+++ b/config/locales/activerecord.de.yml
@@ -21,6 +21,14 @@ de:
             username:
               invalid: nur Buchstaben, Ziffern und Unterstriche
               reserved: ist reserviert
+        admin/webhook:
+          attributes:
+            url:
+              invalid: ist keine gültige URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: ist keine gültige URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml
new file mode 100644
index 000000000..ef03d1810
--- /dev/null
+++ b/config/locales/activerecord.en-GB.yml
@@ -0,0 +1 @@
+en-GB:
diff --git a/config/locales/activerecord.es-AR.yml b/config/locales/activerecord.es-AR.yml
index 9d6a479a7..8a9b75a8c 100644
--- a/config/locales/activerecord.es-AR.yml
+++ b/config/locales/activerecord.es-AR.yml
@@ -21,6 +21,14 @@ es-AR:
             username:
               invalid: sólo letras, números y subguiones ("_")
               reserved: está reservado
+        admin/webhook:
+          attributes:
+            url:
+              invalid: no es una dirección web válida
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: no es una dirección web válida
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml
index 0c4d6e5cf..805e6b920 100644
--- a/config/locales/activerecord.es.yml
+++ b/config/locales/activerecord.es.yml
@@ -21,6 +21,14 @@ es:
             username:
               invalid: solo puede contener letras, números y guiones bajos
               reserved: está reservado
+        admin/webhook:
+          attributes:
+            url:
+              invalid: no es una URL válida
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: no es una URL válida
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml
index 34cf0b837..4ab8f6a91 100644
--- a/config/locales/activerecord.fr.yml
+++ b/config/locales/activerecord.fr.yml
@@ -21,6 +21,14 @@ fr:
             username:
               invalid: seulement des lettres, des nombres et des tirets bas
               reserved: est réservé
+        admin/webhook:
+          attributes:
+            url:
+              invalid: n’est pas une URL valide
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: n’est pas une URL valide
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml
index cbdd801e5..4b039f5af 100644
--- a/config/locales/activerecord.gl.yml
+++ b/config/locales/activerecord.gl.yml
@@ -21,6 +21,14 @@ gl:
             username:
               invalid: só letras, números e trazo baixo
               reserved: está reservado
+        admin/webhook:
+          attributes:
+            url:
+              invalid: non é un URL válido
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: non é un URL válido
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml
index ac8cfd773..442bf3858 100644
--- a/config/locales/activerecord.hu.yml
+++ b/config/locales/activerecord.hu.yml
@@ -21,6 +21,14 @@ hu:
             username:
               invalid: csak betűket, számokat vagy alávonást tartalmazhat
               reserved: fenntartott
+        admin/webhook:
+          attributes:
+            url:
+              invalid: nem érvényes URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: nem érvényes URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml
index 38304ef93..9779cbdd1 100644
--- a/config/locales/activerecord.io.yml
+++ b/config/locales/activerecord.io.yml
@@ -21,6 +21,14 @@ io:
             username:
               invalid: mustas konsistar nur literi, nombri e sublinei
               reserved: rezervitas
+        admin/webhook:
+          attributes:
+            url:
+              invalid: ne esas valida URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: ne esas valida URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.it.yml b/config/locales/activerecord.it.yml
index c6587f1fd..307bd801e 100644
--- a/config/locales/activerecord.it.yml
+++ b/config/locales/activerecord.it.yml
@@ -21,6 +21,14 @@ it:
             username:
               invalid: solo lettere, numeri e trattini bassi
               reserved: è riservato
+        admin/webhook:
+          attributes:
+            url:
+              invalid: non è un URL valido
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: non è un URL valido
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml
index ab13dce6c..52b1b37fd 100644
--- a/config/locales/activerecord.ja.yml
+++ b/config/locales/activerecord.ja.yml
@@ -21,6 +21,14 @@ ja:
             username:
               invalid: アルファベット・数字・アンダーバーの組み合わせで入力してください
               reserved: は予約されています
+        admin/webhook:
+          attributes:
+            url:
+              invalid: は無効なURLです
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: は無効なURLです
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml
index 340b7a777..b440181d8 100644
--- a/config/locales/activerecord.ku.yml
+++ b/config/locales/activerecord.ku.yml
@@ -21,6 +21,14 @@ ku:
             username:
               invalid: pêdivî ye ku tenê tîp, hejmar û xêzikên jêrîn hebin
               reserved: hatiye bikaranîn
+        admin/webhook:
+          attributes:
+            url:
+              invalid: ev girêdaneke nederbasdar e
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: ev girêdaneke nederbasdar e
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml
index ad9fa6604..89a1fb094 100644
--- a/config/locales/activerecord.lv.yml
+++ b/config/locales/activerecord.lv.yml
@@ -21,6 +21,14 @@ lv:
             username:
               invalid: drīkst saturēt tikai burtus, ciparus un pasvītras
               reserved: ir rezervēts
+        admin/webhook:
+          attributes:
+            url:
+              invalid: nav derīgs URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: nav derīgs URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml
index c7b1e7fab..e9af76244 100644
--- a/config/locales/activerecord.pl.yml
+++ b/config/locales/activerecord.pl.yml
@@ -21,6 +21,14 @@ pl:
             username:
               invalid: może składać się tylko z liter, cyfr i podkreślników
               reserved: jest zarezerwowana
+        admin/webhook:
+          attributes:
+            url:
+              invalid: nie jest poprawnym adresem URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: nie jest poprawnym adresem URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.pt-PT.yml b/config/locales/activerecord.pt-PT.yml
index 17c199ea8..5b89ee5a2 100644
--- a/config/locales/activerecord.pt-PT.yml
+++ b/config/locales/activerecord.pt-PT.yml
@@ -21,6 +21,14 @@ pt-PT:
             username:
               invalid: apenas letras, números e underscores
               reserved: está reservado
+        admin/webhook:
+          attributes:
+            url:
+              invalid: não é um URL válido
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: não é um URL válido
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.ru.yml b/config/locales/activerecord.ru.yml
index 2f9210519..758fe7dd4 100644
--- a/config/locales/activerecord.ru.yml
+++ b/config/locales/activerecord.ru.yml
@@ -21,6 +21,14 @@ ru:
             username:
               invalid: только буквы, цифры и символ подчёркивания
               reserved: зарезервировано
+        admin/webhook:
+          attributes:
+            url:
+              invalid: не является допустимым URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: не является допустимым URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.sl.yml b/config/locales/activerecord.sl.yml
index d7fbb446d..7927cb4fc 100644
--- a/config/locales/activerecord.sl.yml
+++ b/config/locales/activerecord.sl.yml
@@ -21,6 +21,14 @@ sl:
             username:
               invalid: samo črke, številke in podčrtaji
               reserved: je rezerviran
+        admin/webhook:
+          attributes:
+            url:
+              invalid: ni veljaven URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: ni veljaven URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.sq.yml b/config/locales/activerecord.sq.yml
index 920b73e7a..57de9d3cb 100644
--- a/config/locales/activerecord.sq.yml
+++ b/config/locales/activerecord.sq.yml
@@ -21,6 +21,14 @@ sq:
             username:
               invalid: duhet të përmbajë vetëm shkronja, numra dhe nënvija
               reserved: është i rezervuar
+        admin/webhook:
+          attributes:
+            url:
+              invalid: s’është URL e vlefshme
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: s’është URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.tr.yml b/config/locales/activerecord.tr.yml
index 890f065b1..ac40e0615 100644
--- a/config/locales/activerecord.tr.yml
+++ b/config/locales/activerecord.tr.yml
@@ -21,6 +21,14 @@ tr:
             username:
               invalid: sadece harfler, sayılar ve alt çizgiler
               reserved: kullanılamaz
+        admin/webhook:
+          attributes:
+            url:
+              invalid: geçerli bir URL değil
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: geçerli bir URL değil
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.uk.yml b/config/locales/activerecord.uk.yml
index 38d4771b3..06967ddc7 100644
--- a/config/locales/activerecord.uk.yml
+++ b/config/locales/activerecord.uk.yml
@@ -21,6 +21,14 @@ uk:
             username:
               invalid: тільки літери, цифри та підкреслення
               reserved: зарезервовано
+        admin/webhook:
+          attributes:
+            url:
+              invalid: не є дійсною URL-адресою
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: не є дійсною URL-адресою
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.vi.yml b/config/locales/activerecord.vi.yml
index c0e989563..6c7c41903 100644
--- a/config/locales/activerecord.vi.yml
+++ b/config/locales/activerecord.vi.yml
@@ -21,6 +21,14 @@ vi:
             username:
               invalid: chỉ chấp nhận ký tự, số và dấu gạch dưới
               reserved: bị cấm sử dụng
+        admin/webhook:
+          attributes:
+            url:
+              invalid: không phải là một URL hợp lệ
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: không phải là một URL hợp lệ
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml
index 946e81893..855e79de6 100644
--- a/config/locales/activerecord.zh-CN.yml
+++ b/config/locales/activerecord.zh-CN.yml
@@ -21,6 +21,10 @@ zh-CN:
             username:
               invalid: 只能使用字母、数字和下划线
               reserved: 是保留关键字
+        admin/webhook:
+          attributes:
+            url:
+              invalid: 不是有效的 URL。
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml
index c6856c386..bea950ed6 100644
--- a/config/locales/activerecord.zh-TW.yml
+++ b/config/locales/activerecord.zh-TW.yml
@@ -21,6 +21,14 @@ zh-TW:
             username:
               invalid: 只能有字母、數字及底線
               reserved: 是保留關鍵字
+        admin/webhook:
+          attributes:
+            url:
+              invalid: 不是有效的 URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: 不是有效的 URL
         status:
           attributes:
             reblog:
diff --git a/config/locales/af.yml b/config/locales/af.yml
index bc54cfdfd..d69e6b92d 100644
--- a/config/locales/af.yml
+++ b/config/locales/af.yml
@@ -8,10 +8,28 @@ af:
     federation_hint_html: Met 'n rekening op %{instance} sal jy in staat wees om mense op enige Mastodon en federasie bediener te volg.
     get_apps: Probeer 'n mobiele toepassing
     hosted_on: Mastodon gehuisves op %{domain}
+    tagline: Gedesentraliseerde sosiale netwerk
   admin:
+    domain_blocks:
+      existing_domain_block: Jy het alreeds strenger perke ingelê op %{name}.
     trends:
       only_allowed: Slegs toegelate
       trending: Gewild
+    webhooks:
+      add_new: Voeg end-punt by
+      delete: Wis uit
+      disable: Deaktiveer
+      disabled: Gedeaktiveer
+      edit: Redigeer end-punt
+      empty: Jy het tans geen opgestelde web-hoek end-punte nie.
+      enable: Aktiveer
+      enabled: Aktief
+      new: Nuwe web-hoek
+      rotate_secret: Roteer geheim
+      secret: Onderteken geheim
+      status: Status
+      title: Web-hoeke
+      webhook: Web-hoek
   disputes:
     strikes:
       approve_appeal: Aanvaar appêl
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 9d78451bb..01f55f344 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -42,7 +42,6 @@ ar:
       two: منشورات
       zero: منشورات
     status_count_before: نشروا
-    tagline: اتبع أصدقائك وصديقاتك واكتشف آخرين وأخريات
     terms: شروط الخدمة
     unavailable_content: محتوى غير متوفر
     unavailable_content_description:
@@ -842,7 +841,6 @@ ar:
   applications:
     created: تم إنشاء التطبيق بنجاح
     destroyed: تم حذف التطبيق بنجاح
-    invalid_url: إن الرابط المقدم غير صالح
     regenerate_token: إعادة توليد رمز النفاذ
     token_regenerated: تم إعادة إنشاء الرمز الوصول بنجاح
     warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين!
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index a9bcbbdf7..1fb1cee90 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -24,7 +24,6 @@ ast:
       one: artículu
       other: artículos
     status_count_before: Que crearon
-    tagline: Sigui a persones y conoz a más xente
     terms: Términos del serviciu
     unavailable_content_description:
       domain: Sirvidor
@@ -144,6 +143,8 @@ ast:
       site_title: Nome del sirvidor
       title: Axustes del sitiu
     title: Alministración
+    webhooks:
+      events: Eventos
   admin_mailer:
     new_pending_account:
       body: Los detalles de la cuenta nueva tán embaxo. Pues aprobar o refugar esta aplicación.
@@ -164,7 +165,6 @@ ast:
     sensitive_content: Conteníu sensible
     toot_layout: Distribución de los barritos
   applications:
-    invalid_url: La URL apurrida nun ye válida
     warning: Ten munchu curiáu con estos datos, ¡enxamás nun los compartas con naide!
   auth:
     change_password: Contraseña
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index c9e264787..04296b342 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -29,7 +29,6 @@ bg:
       one: състояние
       other: състояния
     status_count_before: Написали
-    tagline: Следвайте приятели и открийте нови
     terms: Условия за ползване
     unavailable_content: Модерирани сървъри
     unavailable_content_description:
@@ -178,8 +177,6 @@ bg:
   application_mailer:
     settings: 'Промяна на предпочитанията за e-mail: %{link}'
     view: 'Преглед:'
-  applications:
-    invalid_url: Предоставеният URL е невалиден
   auth:
     didnt_get_confirmation: Не получих инструкции за потвърждение
     forgot_password: Забравих си паролата
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index 20a99fd2f..ae1ced450 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -31,7 +31,6 @@ bn:
       one: অবস্থা
       other: স্থিতিগুলি
     status_count_before: কে লিখেছে
-    tagline: পরিচিতজনদের সাথে যুক্ত হন এবং নতুনদের সাথে পরিচিত হন
     terms: ব্যবহারের শর্তাবলী
     unavailable_content: অনুপলব্ধ সামগ্রী
     unavailable_content_description:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index f0efd3f50..8c8fa1ffb 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -38,7 +38,7 @@ ca:
       one: publicació
       other: publicacions
     status_count_before: Qui ha publicat
-    tagline: Segueix els teus amics i descobreix-ne de nous
+    tagline: Xarxa social descentralitzada
     terms: Condicions de servei
     unavailable_content: Servidors moderats
     unavailable_content_description:
@@ -852,6 +852,26 @@ ca:
       edit_preset: Edita l'avís predeterminat
       empty: Encara no has definit cap preavís.
       title: Gestiona les configuracions predefinides dels avisos
+    webhooks:
+      add_new: Afegir extrem
+      delete: Elimina
+      description_html: Un <strong>webhook</strong> habilita Mastodon per a empènyer <strong>notificacions en temps real</strong> sobre els esdeveniments escollits de la teva pròpia aplicació, per tant la teva aplicació pot <strong>activar reaccions automaticament</strong>.
+      disable: Desactiva
+      disabled: Desactivat
+      edit: Editar extrem
+      empty: Encara no tens cap extrem de webhook configurat.
+      enable: Activa
+      enabled: Actiu
+      enabled_events:
+        one: 1 esdeveniment activat
+        other: "%{count} esdeveniments activats"
+      events: Esdeveniments
+      new: Nou webhook
+      rotate_secret: Rota el secret
+      secret: Signant el secret
+      status: Estat
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ ca:
   applications:
     created: L'aplicació s'ha creat correctament
     destroyed: L'aplicació s'ha suprimit correctament
-    invalid_url: L'URL proporcionat no és correcte
     regenerate_token: Torna a generar l'identificador d'accés
     token_regenerated: L'identificador d'accés s'ha generat correctament
     warning: Aneu amb compte amb aquestes dades. No les compartiu mai amb ningú!
diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml
index 6429696ed..35e826c9c 100644
--- a/config/locales/ckb.yml
+++ b/config/locales/ckb.yml
@@ -37,7 +37,6 @@ ckb:
       one: دۆخ
       other: پۆست
     status_count_before: لە لایەن یەکەوە
-    tagline: دوای هاوڕێکان بکەوە و ئەوانەی نوێ بدۆزیەوە
     terms: مەرجەکانی خزمەتگوزاری
     unavailable_content: ڕاژەی چاودێریکراو
     unavailable_content_description:
@@ -721,7 +720,6 @@ ckb:
   applications:
     created: بەرنامە بە سەرکەوتوویی دروست کرا
     destroyed: بەرنامە بە سەرکەوتوویی سڕدراوەتەوە
-    invalid_url: بەستەری دابینکراو نادروستە
     regenerate_token: دووبارە دروستکردنەوەی نیشانەی چوونە ژوورەوە
     token_regenerated: کۆدی دەستپێگەیشتن بە سەرکەوتوویی دروستکرا
     warning: زۆر ئاگاداربە لەم داتایە. هەرگیز لەگەڵ کەس دا هاوبەشی مەکە!
diff --git a/config/locales/co.yml b/config/locales/co.yml
index ca4c7ed3d..183439447 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -35,7 +35,6 @@ co:
       one: statutu
       other: statuti
     status_count_before: Chì anu pubblicatu
-    tagline: Siguità amichi è scopre ancu di più altri
     terms: Cundizione di u serviziu
     unavailable_content: Cuntinutu micca dispunibule
     unavailable_content_description:
@@ -705,7 +704,6 @@ co:
   applications:
     created: Applicazione creata
     destroyed: Applicazione sguassata
-    invalid_url: L’URL ch’è stata pruvista ùn hè valida
     regenerate_token: Creà un’altra fiscia d’accessu
     token_regenerated: A fiscia d’accessu hè stata rigenerata
     warning: Abbadate à quessi dati. Ùn i date à nisunu!
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 0140d4127..1868b9dd7 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -40,7 +40,7 @@ cs:
       one: příspěvek
       other: příspěvků
     status_count_before: Kteří napsali
-    tagline: Sledujte své přátele a objevujte nové
+    tagline: Decentralizovaná sociální síť
     terms: Podmínky používání
     unavailable_content: Moderované servery
     unavailable_content_description:
@@ -886,6 +886,28 @@ cs:
       edit_preset: Upravit předlohu pro varování
       empty: Zatím jste nedefinovali žádné předlohy varování.
       title: Spravovat předlohy pro varování
+    webhooks:
+      add_new: Přidat koncový bod
+      delete: Smazat
+      description_html: "<strong>Webhook</strong> umožňuje Mastodonu o vybraných událostech <strong>notifikovat v reálném čase</strong> vaši vlastní aplikaci, aby mohla <strong>automaticky spouštět reakce</strong>."
+      disable: Vypnout
+      disabled: Vypnuto
+      edit: Upravit koncový bod
+      empty: Nemáte ještě nastavené žádné koncové body webhooků.
+      enable: Zapnout
+      enabled: Aktivní
+      enabled_events:
+        few: "%{count} zapnuté události"
+        many: "%{count} zapnutých událostí"
+        one: 1 zapnutá událost
+        other: "%{count} zapnutých událostí"
+      events: Události
+      new: Nový webhook
+      rotate_secret: Obnovit klíč
+      secret: Podpisový klíč
+      status: Stav
+      title: Webhooky
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -950,7 +972,6 @@ cs:
   applications:
     created: Aplikace úspěšně vytvořena
     destroyed: Aplikace úspěšně smazána
-    invalid_url: Zadaná URL adresa je neplatná
     regenerate_token: Znovu vygenerovat přístupový token
     token_regenerated: Přístupový token byl úspěšně vygenerován
     warning: Zacházejte s těmito daty opatrně. Nikdy je s nikým nesdílejte!
@@ -1334,7 +1355,7 @@ cs:
     description_html: Zapnete-li <strong>dvoufázové ověřování</strong> pomocí ověřovací aplikace, k přihlášení budete u sebe muset mít svůj mobil, který pro Vás bude generovat kódy k opsání.
     enable: Zapnout
     instructions_html: "<strong>Naskenujte tento QR kód do Google Authenticator nebo podobné TOTP aplikace na svém telefonu</strong>. Následně bude tato aplikace generovat kódy, které budete zadávat při přihlašování."
-    manual_instructions: 'Nemůžete-li načíst QR kód a potřebujete ho zadat ručně, zde je tajemství v textové podobě:'
+    manual_instructions: 'Nemůžete-li načíst QR kód a potřebujete ho zadat ručně, zde je klíč v textové podobě:'
     setup: Nastavit
     wrong_code: Zadaný kód je neplatný! Je čas na serveru i zařízení generujícím kód správný?
   pagination:
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 351067346..913753325 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -42,7 +42,6 @@ cy:
       two: statwsau
       zero: statwsau
     status_count_before: Ysgrifennwyd gan
-    tagline: Dilyn ffrindiau a darganfod rhai newydd
     terms: Telerau gwasanaeth
     unavailable_content: Cynnwys nad yw ar gael
     unavailable_content_description:
@@ -587,7 +586,6 @@ cy:
   applications:
     created: Cais wedi ei greu'n llwyddiannus
     destroyed: Cais wedi ei ddileu'n llwyddiannus
-    invalid_url: Mae'r URL a ddarparwyd yn annilys
     regenerate_token: Adfywio tocyn mynediad
     token_regenerated: Adfywiwyd y tocyn mynediad yn llwyddiannus
     warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth!
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 0195aa5a3..337005369 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -38,7 +38,7 @@ da:
       one: indlæg
       other: indlæg
     status_count_before: Som har postet
-    tagline: Følg venner og opdag nye
+    tagline: Decentraliseret socialt netværk
     terms: Tjenestevilkår
     unavailable_content: Modererede servere
     unavailable_content_description:
@@ -852,6 +852,26 @@ da:
       edit_preset: Redigér advarselsforvalg
       empty: Ingen advarselsforvalg defineret endnu.
       title: Håndtérr advarselsforvalg
+    webhooks:
+      add_new: Tilføj endepunkt
+      delete: Slet
+      description_html: En <strong>webhook</strong> lader Mastodon pushe <strong>notifikationer i realtid</strong> om valgte begivenheder til ens egen applikation, så denne <strong>automatisk kan udløse reaktioner</strong>.
+      disable: Deaktivér
+      disabled: Deaktiveret
+      edit: Redigér endepunkt
+      empty: Der er endnu ikke opsat nogen webhook-endepunkter.
+      enable: Aktivér
+      enabled: Aktiv
+      enabled_events:
+        one: 1 aktiv begivenhed
+        other: "%{count} aktive begivenheder"
+      events: Begivenheder
+      new: Ny webhook
+      rotate_secret: Rotér hemmelighed
+      secret: Signeringshemmelighed
+      status: Status
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ da:
   applications:
     created: Applikation oprettet
     destroyed: Applikation slettet
-    invalid_url: Den angivne URL er ugyldig
     regenerate_token: Regenerér adgangstoken
     token_regenerated: Adgangstoken regenereret
     warning: Vær meget påpasselig med disse data. Del dem aldrig med nogen!
diff --git a/config/locales/de.yml b/config/locales/de.yml
index a52841a39..d15011a5e 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -38,7 +38,7 @@ de:
       one: Beitrag
       other: Beiträge
     status_count_before: mit
-    tagline: Finde deine Freunde und entdecke neue
+    tagline: Dezentrales soziales Netzwerk
     terms: Nutzungsbedingungen
     unavailable_content: Nicht verfügbarer Inhalt
     unavailable_content_description:
@@ -428,6 +428,7 @@ de:
       destroyed_msg: Die Domain-Blockade wurde rückgängig gemacht
       domain: Domain
       edit: Domainblockade bearbeiten
+      existing_domain_block: Du hast %{name} bereits stärker eingeschränkt.
       existing_domain_block_html: Es gibt schon eine Blockade für %{name}, diese muss erst <a href="%{unblock_url}">aufgehoben</a> werden.
       new:
         create: Blockade einrichten
@@ -851,6 +852,26 @@ de:
       edit_preset: Warnungsvorlage bearbeiten
       empty: Du hast noch keine Warnungsvorlagen hinzugefügt.
       title: Warnungsvorlagen verwalten
+    webhooks:
+      add_new: Endpunkt hinzufügen
+      delete: Löschen
+      description_html: Ein <strong>Webhook</strong> ermöglicht Mastodon <strong>Echtzeitbenachrichtigungen</strong> über ausgewählte Ereignisse an deine eigene Anwendung zu senden damit deine Anwendung <strong>automatisch Reaktionen auslösen kann</strong>.
+      disable: Deaktivieren
+      disabled: Deaktiviert
+      edit: Endpunkt bearbeiten
+      empty: Du hast noch keine Webhook Endpunkte konfiguriert.
+      enable: Aktivieren
+      enabled: Aktiv
+      enabled_events:
+        one: 1 aktiviertes Ereignis
+        other: "%{count} aktivierte Ereignisse"
+      events: Ereignisse
+      new: Neuer Webhook
+      rotate_secret: Geheimen Schlüssel rotieren
+      secret: Signaturgeheimnis
+      status: Status
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -915,7 +936,6 @@ de:
   applications:
     created: Anwendung erfolgreich erstellt
     destroyed: Anwendung erfolgreich gelöscht
-    invalid_url: Die angegebene URL ist ungültig
     regenerate_token: Zugangs-Token neu erstellen
     token_regenerated: Zugangs-Token neu erstellt
     warning: Sei mit diesen Daten sehr vorsichtig. Teile sie mit niemandem!
diff --git a/config/locales/doorkeeper.af.yml b/config/locales/doorkeeper.af.yml
index 252f9fd5a..ec1eda8bd 100644
--- a/config/locales/doorkeeper.af.yml
+++ b/config/locales/doorkeeper.af.yml
@@ -1 +1,164 @@
+---
 af:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: Toepassing naam
+        redirect_uri: Herlei URI
+        scopes: Bestekke
+        website: Toepassing webtuiste
+    errors:
+      models:
+        doorkeeper/application:
+          attributes:
+            redirect_uri:
+              fragment_present: kan nie 'n vragment bevat nie.
+              invalid_uri: moet 'n geldige URI wees.
+              relative_uri: moet 'n absolute URI wees.
+              secured_uri: moet 'n HTTPS/SSL URI wees.
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: Magtig
+        cancel: Kanselleer
+        destroy: Vernietig
+        edit: Redigeer
+        submit: Dien in
+      confirmations:
+        destroy: Is jy seker?
+      edit:
+        title: Redigeer toepassing
+      form:
+        error: Oeps! Hersien jou vorm vir moontlike foute
+      help:
+        native_redirect_uri: Gebruik %{native_redirect_uri} vir plaaslike toetse
+        redirect_uri: Gebruik een lyn per URI
+        scopes: Verdeel omvang-grense met spasies. Los dit leeg om verstek omvange te gebruik.
+      index:
+        application: Toepassing
+        callback_url: Terugroep URL
+        delete: Wis uit
+        empty: Jy het geen toepassings nie.
+        name: Naam
+        new: Nuwe toepassing
+        scopes: Omvange
+        show: Vertoon
+        title: Jou toepassings
+      new:
+        title: Nuwe toepassing
+      show:
+        actions: Aksies
+        application_id: Kliënt sleutel
+        callback_urls: Terugroep URL'e
+        scopes: Omvange
+        secret: Kliënt geheim
+        title: 'Toepassing: %{name}'
+    authorizations:
+      buttons:
+        authorize: Magtig
+        deny: Weier
+      error:
+        title: "'n Fout het plaasgevind"
+      new:
+        prompt_html: "%{client_name} wil toegang hê tot jou rekening. Dit is a derde party toepassing. <strong>Indien jy dit nie vertrou nie, moet dit nie bemagtig word nie.</strong>"
+        review_permissions: Hersien toestemming
+        title: Benodig magtiging
+      show:
+        title: Kopieër hierdie magtigings kode en plaas dit in die toepassing.
+    authorized_applications:
+      buttons:
+        revoke: Herroep
+      confirmations:
+        revoke: Is jy seker?
+      index:
+        authorized_at: Bemagtig op %{date}
+        description_html: Hierdie is toepassings wat deur middel van die API toegang tot jou rekening kan verkry. As daar enige toepassings is wat jy nie herken nie, of 'n toepassing is wat wangedra, kan die bemagtiging herroep word.
+        last_used_at: Laas gebruik op %{date}
+        never_used: Noot gebruik nie
+        scopes: Magtiging
+        superapp: Intern
+        title: Jou gemagtigde toepassings
+    errors:
+      messages:
+        access_denied: Die hulpbron eienaar of magtigingsbediener het die aansoek afgekeur.
+        credential_flow_not_configured: Hulpbron Eienaar Wagwoord Geloofsbrewe vloei het gefaal omdat Doorkeeper.configure.resource_owner_from_credentials nie opgestel is nie.
+    flash:
+      applications:
+        create:
+          notice: Toepassing geskep.
+        destroy:
+          notice: Toepassing uitgewis.
+        update:
+          notice: Toepassing opdateer.
+      authorized_applications:
+        destroy:
+          notice: Toepassing herroep.
+    grouped_scopes:
+      access:
+        read: Slegs-lees toegang
+        read/write: Lees en skryf toegang
+        write: Slegs-skryf toegang
+      title:
+        accounts: Rekeninge
+        admin/accounts: Administrasie van rekeninge
+        admin/all: Alle administratiewe funksies
+        admin/reports: Administrasie van rapporteringe
+        all: Alles
+        blocks: Blokkeringe
+        bookmarks: Boekmerke
+        conversations: Gesprekke
+        crypto: End-tot-end enkripsie
+        favourites: Gunstelinge
+        filters: Filters
+        follow: Verhoudinge
+        lists: Lyste
+        media: Media aanhegsels
+        mutes: Dempinge
+        notifications: Kennisgewings
+        push: Stoot kennisgewings
+        reports: Rapporteringe
+        search: Soek
+        statuses: Plasings
+    layouts:
+      admin:
+        nav:
+          applications: Toepassings
+          oauth2_provider: OAuth2 Verskaffer
+      application:
+        title: Benodig OAuth bemagtiging
+    scopes:
+      admin:read: lees alle data op die bediener
+      admin:read:accounts: lees sensitiewe inligting vanaf alle rekeninge
+      admin:read:reports: lees sensitiewe inligting van alle verslae end aangeklaagde rekeninge
+      admin:write: verander alle data op die bediener
+      admin:write:accounts: voer modereer aksies uit op rekeninge
+      admin:write:reports: voer modereer aksies uit op verslae
+      crypto: gebruik end-tot-end enkripsie
+      follow: verander rekening verhoudinge
+      push: ontvang jou stootkennisgewings
+      read: lees die data van al jou rekeninge
+      read:accounts: sien rekening inligting
+      read:blocks: sien blokeringe
+      read:bookmarks: sien jou boekmerke
+      read:favourites: sien jou gunstelinge
+      read:filters: sien jou filters
+      read:lists: sien jou lyste
+      read:mutes: sien jou stilmake
+      read:notifications: sien jou kennisgewinge
+      read:reports: sien jou rapporteringe
+      read:search: soek namens jou
+      read:statuses: sien alle plasings
+      write: verander alle data van jou rekening
+      write:accounts: verander jou profiel
+      write:blocks: blokeer rekeninge en domeine
+      write:bookmarks: boekmerk plasings
+      write:conversations: demp en wis gesprekke uit
+      write:favourites: merk gunsteling plasings
+      write:filters: skep filters
+      write:follows: volg mense
+      write:lists: skep lyste
+      write:media: laai meda lêers op
+      write:mutes: demp mense en gesprekke
+      write:notifications: maak jou kennisgewings skoon
+      write:reports: rapporteer ander mense
+      write:statuses: publiseer plasings
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index 684b993ab..0a0b6b1be 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -60,7 +60,8 @@ pt-BR:
       error:
         title: Ocorreu um erro
       new:
-        review_permissions: Analisar permissões
+        prompt_html: O %{client_name} gostaria de ter permissão para acessar sua conta. É uma aplicação de terceiros. <strong>Se você não confia, então você não deve autorizá-lo.</strong>
+        review_permissions: Revisar permissões
         title: Autorização necessária
       show:
         title: Copie este código de autorização e cole no aplicativo.
@@ -71,6 +72,8 @@ pt-BR:
         revoke: Você tem certeza?
       index:
         authorized_at: Autorizado em %{date}
+        description_html: Estas são as aplicações que podem acessar sua conta usando a API. Se houver aplicativos que você não reconhece ou com mau funcionamento, você pode revogar seu acesso.
+        last_used_at: Última vez usado em %{date}
         never_used: Nunca usado
         scopes: Permissões
         superapp: Interno
@@ -110,16 +113,23 @@ pt-BR:
         destroy:
           notice: Aplicativo revogado.
     grouped_scopes:
+      access:
+        read: Acesso somente para leitura
+        read/write: Acesso de leitura e escrita
+        write: Acesso somente para escrita
       title:
         accounts: Contas
+        admin/accounts: Administração de contas
+        admin/all: Todas as funções administrativas
+        admin/reports: Administração de relatórios
         all: Tudo
-        blocks: Blocos
+        blocks: Bloqueios
         bookmarks: Salvos
         conversations: Conversas
         crypto: Criptografia de ponta a ponta
         favourites: Favoritos
         filters: Filtros
-        follow: Relações
+        follow: Relacionamentos
         lists: Listas
         media: Mídias anexadas
         notifications: Notificações
@@ -161,6 +171,7 @@ pt-BR:
       write:accounts: alterar seu perfil
       write:blocks: bloquear contas e domínios
       write:bookmarks: salvar toots
+      write:conversations: silenciar e excluir conversas
       write:favourites: favoritar toots
       write:filters: criar filtros
       write:follows: seguir pessoas
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 1320dcbb4..96ec15247 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -36,7 +36,7 @@ el:
       one: δημοσίευση
       other: δημοσιεύσεις
     status_count_before: Που έγραψαν
-    tagline: Ακολούθησε τους γνωστούς σου και ανακάλυψε νέους ανθρώπους
+    tagline: Αποκεντρωμένο κοινωνικό δίκτυο
     terms: Όροι χρήσης
     unavailable_content: Μη διαθέσιμο
     unavailable_content_description:
@@ -618,6 +618,12 @@ el:
       edit_preset: Ενημέρωση προκαθορισμένης προειδοποίησης
       empty: Δεν έχετε ακόμη ορίσει κάποια προεπιλογή προειδοποίησης.
       title: Διαχείριση προκαθορισμένων προειδοποιήσεων
+    webhooks:
+      delete: Διαγραφή
+      disable: Απενεργοποίηση
+      disabled: Απενεργοποιημένα
+      enable: Ενεργοποίηση
+      status: Κατάσταση
   admin_mailer:
     new_appeal:
       actions:
@@ -658,7 +664,6 @@ el:
   applications:
     created: Η εφαρμογή δημιουργήθηκε επιτυχώς
     destroyed: Η εφαρμογή διαγράφηκε επιτυχώς
-    invalid_url: Το URL δεν είναι έγκυρο
     regenerate_token: Αναδημιουργία του διακριτικού πρόσβασης (access token)
     token_regenerated: Το διακριτικό πρόσβασης (access token) αναδημιουργήθηκε επιτυχώς
     warning: Μεγάλη προσοχή με αυτά τα στοιχεία. Μην τα μοιραστείς ποτέ με κανέναν!
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index babbce7da..d287fb590 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -36,9 +36,8 @@ eo:
       one: mesaĝo
       other: mesaĝoj
     status_count_before: Kie skribiĝis
-    tagline: Sekvi amikojn kaj trovi iujn novajn
     terms: Uzkondiĉoj
-    unavailable_content: Kontrolitaj serviloj
+    unavailable_content: Moderigitaj serviloj
     unavailable_content_description:
       domain: Servilo
       reason: 'Kialo:'
@@ -86,8 +85,8 @@ eo:
       title: Plenumi kontrolan agon al %{acct}
     account_moderation_notes:
       create: Lasi noton
-      created_msg: Kontrola noto sukcese kreita!
-      destroyed_msg: Kontrola noto sukcese detruita!
+      created_msg: Noto de mederigado sukcese kreita!
+      destroyed_msg: Noto de moderigado sukcese detruita!
     accounts:
       add_email_domain_block: Bloki retadresan domajnon
       approve: Aprobi
@@ -140,8 +139,8 @@ eo:
         all: Ĉio
         pending: Pritraktata
         suspended: Haltigita
-        title: Kontrolado
-      moderation_notes: Kontrolaj notoj
+        title: Moderigado
+      moderation_notes: Notoj de moderigado
       most_recent_activity: Lasta ago
       most_recent_ip: Lasta IP
       no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita
@@ -167,7 +166,7 @@ eo:
       role: Permesoj
       roles:
         admin: Administranto
-        moderator: Kontrolanto
+        moderator: Moderigisto
         staff: Teamo
         user: Uzanto
       search: Serĉi
@@ -416,7 +415,7 @@ eo:
       moderation:
         all: Ĉiuj
         limited: Limigita
-        title: Kontrolo
+        title: Moderigado
       private_comment: Privata komento
       public_comment: Publika komento
       purge: Purigu
@@ -697,7 +696,6 @@ eo:
   applications:
     created: Aplikaĵo sukcese kreita
     destroyed: Aplikaĵo sukcese forigita
-    invalid_url: La URL donita ne estas valida
     regenerate_token: Rekrei aliran ĵetonon
     token_regenerated: Alira ĵetono sukcese rekreita
     warning: Estu tre atenta kun ĉi tiu datumo. Neniam diskonigu ĝin al iu ajn!
@@ -950,7 +948,7 @@ eo:
       only_redirect_html: Alie, vi povas <a href="%{path}">nur aldoni alidirekton en via profilo</a>.
       other_data: Neniu alia datumo estos movita aŭtomate
   moderation:
-    title: Kontrolado
+    title: Moderigado
   notification_mailer:
     digest:
       action: Vidi ĉiujn sciigojn
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index aeba0b97d..79ae68bf4 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -38,7 +38,7 @@ es-AR:
       one: mensaje
       other: mensajes
     status_count_before: Que enviaron
-    tagline: Seguí a tus amigos y descubrí nueva gente
+    tagline: Red social descentralizada
     terms: Términos del servicio
     unavailable_content: Servidores moderados
     unavailable_content_description:
@@ -852,6 +852,26 @@ es-AR:
       edit_preset: Editar preajuste de advertencia
       empty: Aún no ha definido ningún preajuste de advertencia.
       title: Administrar preajustes de advertencia
+    webhooks:
+      add_new: Agregar punto final
+      delete: Eliminar
+      description_html: Un <strong>webhook</strong> habilita a Mastodon a enviar <strong>notificaciones en tiempo real</strong> sobre los eventos elegidos a tu propia aplicación, así la misma puede <strong>activar automáticamente las reacciones</strong>.
+      disable: Deshabilitar
+      disabled: Deshabilitada
+      edit: Editar punto final
+      empty: Todavía no tenés configurado ningún punto final de webhook.
+      enable: Habilitar
+      enabled: Activar
+      enabled_events:
+        one: 1 evento habilitado
+        other: "%{count} eventos habilitados"
+      events: Eventos
+      new: Nuevo webhook
+      rotate_secret: Rotar secreto
+      secret: Firma secreta
+      status: Estado
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ es-AR:
   applications:
     created: Aplicación creada exitosamente
     destroyed: Aplicación eliminada exitosamente
-    invalid_url: La dirección web ofrecida no es válida
     regenerate_token: Regenerar clave de acceso
     token_regenerated: Clave de acceso regenerada exitosamente
     warning: Ojo con estos datos. ¡Nunca los compartas con nadie!
diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml
index 5f9a9f5e7..f57fb9601 100644
--- a/config/locales/es-MX.yml
+++ b/config/locales/es-MX.yml
@@ -38,7 +38,7 @@ es-MX:
       one: estado
       other: estados
     status_count_before: Qué han escrito
-    tagline: Seguir a amigos existentes y descubre nuevos
+    tagline: Red social descentralizada
     terms: Condiciones de servicio
     unavailable_content: Contenido no disponible
     unavailable_content_description:
@@ -428,6 +428,7 @@ es-MX:
       destroyed_msg: El bloque de dominio se deshizo
       domain: Dominio
       edit: Editar nuevo dominio bloqueado
+      existing_domain_block: Ya ha impuesto límites más estrictos a %{name}.
       existing_domain_block_html: Ya ha impuesto límites más estrictos a %{name}, necesita <a href="%{unblock_url}">desbloquearlo primero</a>.
       new:
         create: Crear bloque
@@ -915,7 +916,6 @@ es-MX:
   applications:
     created: Aplicación creada exitosamente
     destroyed: Apicación eliminada exitosamente
-    invalid_url: La URL proporcionada es incorrecta
     regenerate_token: Regenerar token de acceso
     token_regenerated: Token de acceso regenerado exitosamente
     warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie!
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 900193134..96d985f53 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -38,7 +38,7 @@ es:
       one: estado
       other: estados
     status_count_before: Qué han escrito
-    tagline: Seguir a amigos existentes y descubre nuevos
+    tagline: Red social descentralizada
     terms: Condiciones de servicio
     unavailable_content: Contenido no disponible
     unavailable_content_description:
@@ -852,6 +852,26 @@ es:
       edit_preset: Editar aviso predeterminado
       empty: Aún no has definido ningún preajuste de advertencia.
       title: Editar configuración predeterminada de avisos
+    webhooks:
+      add_new: Añadir endpoint
+      delete: Eliminar
+      description_html: Un <strong>webhook</strong> permite a Mastodon enviar <strong>notificaciones en tiempo real</strong> sobre los eventos elegidos a tu propia aplicación, para que tu aplicación pueda <strong>lanzar reacciones automáticamente</strong>.
+      disable: Deshabilitar
+      disabled: Deshabilitado
+      edit: Editar endpoint
+      empty: Aún no tienes ningún endpoint de webhook configurado.
+      enable: Habilitar
+      enabled: Activo
+      enabled_events:
+        one: 1 evento habilitado
+        other: "%{count} eventos habilitados"
+      events: Eventos
+      new: Nuevo webhook
+      rotate_secret: Rotar secreto
+      secret: Firmando secreto
+      status: Estado
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ es:
   applications:
     created: Aplicación creada exitosamente
     destroyed: Apicación eliminada exitosamente
-    invalid_url: La URL proporcionada es incorrecta
     regenerate_token: Regenerar token de acceso
     token_regenerated: Token de acceso regenerado exitosamente
     warning: Ten mucho cuidado con estos datos. ¡No los compartas con nadie!
diff --git a/config/locales/et.yml b/config/locales/et.yml
index 3c48bad5b..a551ab424 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -35,7 +35,6 @@ et:
       one: postitust
       other: staatuseid
     status_count_before: Kes on avaldanud
-    tagline: Jälgi sõpru ja leia uusi
     terms: Kasutustingimused
     unavailable_content: Sisu pole saadaval
     unavailable_content_description:
@@ -540,7 +539,6 @@ et:
   applications:
     created: Rakenduse loomine õnnestus
     destroyed: Rakenduse kustutamine õnnestus
-    invalid_url: Antud URL on vale
     regenerate_token: Loo uus access token
     token_regenerated: Access tokeni loomine õnnestus
     warning: Olge nende andmetega ettevaatlikud. Ärge jagage neid kellegagi!
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 096dd276b..a71cd186d 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -36,7 +36,6 @@ eu:
       one: bidalketa
       other: bidalketa
     status_count_before: Hauek
-    tagline: Jarraitu lagunak eta egin berriak
     terms: Erabilera baldintzak
     unavailable_content: Eduki eskuraezina
     unavailable_content_description:
@@ -855,7 +854,6 @@ eu:
   applications:
     created: Aplikazioa ongi sortu da
     destroyed: Aplikazioa ongi ezabatu da
-    invalid_url: Emandako URL-a baliogabea da
     regenerate_token: Birsortu sarbide token-a
     token_regenerated: Sarbide token-a ongi birsortu da
     warning: Kontuz datu hauekin, ez partekatu inoiz inorekin!
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 1c7b9f9cc..93b766859 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -38,7 +38,6 @@ fa:
       one: چیز نوشته‌اند
       other: چیز نوشته‌اند
     status_count_before: که در کنار هم
-    tagline: با دوستان خود در ارتباط باشید و دوستان تازه پیدا کنید
     terms: شرایط خدمت
     unavailable_content: محتوای ناموجود
     unavailable_content_description:
@@ -813,7 +812,6 @@ fa:
   applications:
     created: برنامه با موفقیت ساخته شد
     destroyed: برنامه با موفقیت پاک شد
-    invalid_url: نشانی واردشده معتبر نیست
     regenerate_token: دوباره‌سازی کد دسترسی
     token_regenerated: کد دسترسی با موفقیت ساخته شد
     warning: خیلی مواظب این اطلاعات باشید و آن را به هیچ کس ندهید!
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 55e2332cf..ff369f2fe 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -38,7 +38,6 @@ fi:
       one: julkaisun
       other: julkaisua
     status_count_before: Julkaistu
-    tagline: Seuraa ja löydä uusia kavereita
     terms: Käyttöehdot
     unavailable_content: Moderoidut palvelimet
     unavailable_content_description:
@@ -860,7 +859,6 @@ fi:
   applications:
     created: Sovelluksen luonti onnistui
     destroyed: Sovelluksen poisto onnistui
-    invalid_url: Annettu URL on virheellinen
     regenerate_token: Luo pääsytunnus uudelleen
     token_regenerated: Pääsytunnuksen uudelleenluonti onnistui
     warning: Säilytä tietoa hyvin. Älä milloinkaan jaa sitä muille!
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 109fd6849..5f74972f9 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -37,8 +37,8 @@ fr:
     status_count_after:
       one: message
       other: messages
-    status_count_before: Qui a publié
-    tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles
+    status_count_before: Ayant publié
+    tagline: Réseau social décentralisé
     terms: Conditions d’utilisation
     unavailable_content: Serveurs modérés
     unavailable_content_description:
@@ -428,6 +428,7 @@ fr:
       destroyed_msg: Le blocage de domaine a été désactivé
       domain: Domaine
       edit: Modifier le blocage de domaine
+      existing_domain_block: Vous avez déjà imposé des limites plus strictes à %{name}.
       existing_domain_block_html: Vous avez déjà imposé des limites plus strictes à %{name}, vous devez d’abord le/la <a href="%{unblock_url}">débloquer</a>.
       new:
         create: Créer le blocage
@@ -851,6 +852,25 @@ fr:
       edit_preset: Éditer les avertissements prédéfinis
       empty: Vous n'avez pas encore créé de paramètres prédéfinis pour les avertissements.
       title: Gérer les avertissements prédéfinis
+    webhooks:
+      add_new: Ajouter un point de terminaison
+      delete: Supprimer
+      description_html: Un <strong>point d'ancrage web</strong> permet à Mastodon d'envoyer des <strong>notifications en temps réel</strong> concernant des événements sélectionnés vers votre propre application, afin que celle-ci puisse <strong>déclencher automatiquement des réactions</strong>.
+      disable: Désactiver
+      disabled: Désactivé
+      edit: Modifier le point de terminaison
+      empty: Pour l'instant, vous n'avez configuré aucun lien d'ancrage web pour point de terminaison.
+      enable: Activer
+      enabled: Actif
+      enabled_events:
+        one: 1 événement activé
+        other: "%{count} événements activés"
+      events: Événements
+      new: Nouveau point d’ancrage web
+      rotate_secret: Effectuer une rotation du secret
+      status: État
+      title: Points d’ancrage web
+      webhook: Point d’ancrage web
   admin_mailer:
     new_appeal:
       actions:
@@ -915,7 +935,6 @@ fr:
   applications:
     created: Application créée avec succès
     destroyed: Application supprimée avec succès
-    invalid_url: L’URL fournie est invalide
     regenerate_token: Régénérer le jeton d’accès
     token_regenerated: Jeton d’accès régénéré avec succès
     warning: Soyez prudent·e avec ces données. Ne les partagez pas !
@@ -1519,6 +1538,9 @@ fr:
     pinned: Message épinglé
     reblogged: a partagé
     sensitive_content: Contenu sensible
+  strikes:
+    errors:
+      too_late: Il est trop tard pour faire appel à cette sanction
   tags:
     does_not_match_previous_name: ne correspond pas au nom précédent
   terms:
diff --git a/config/locales/gd.yml b/config/locales/gd.yml
index 931cea4fb..387ba6c2a 100644
--- a/config/locales/gd.yml
+++ b/config/locales/gd.yml
@@ -40,7 +40,6 @@ gd:
       other: post
       two: phost
     status_count_before: A dh’fhoillsich
-    tagline: Lean air caraidean ’s rùraich feadhainn ùra
     terms: Teirmichean na seirbheise
     unavailable_content: Frithealaichean fo mhaorsainneachd
     unavailable_content_description:
@@ -446,6 +445,7 @@ gd:
       destroyed_msg: Chan eil an àrainn ’ga bacadh tuilleadh
       domain: Àrainn
       edit: Deasaich bacadh na h-àrainne
+      existing_domain_block: Chuir thu cuingeachaidhean nas teinne air %{name} mu thràth.
       existing_domain_block_html: Chuir thu cuingeachadh nas teinne air %{name} mu thràth, feumaidh tu a <a href="%{unblock_url}">dì-bhacadh</a> an toiseach.
       new:
         create: Cruthaich bacadh
@@ -949,7 +949,6 @@ gd:
   applications:
     created: Chaidh an t-iarrtas a chruthachadh
     destroyed: Chaidh an t-iarrtas a sguabadh às
-    invalid_url: Tha an t-URL a thugadh seachad mì-dhligheach
     regenerate_token: Ath-ghin an tòcan inntrigidh
     token_regenerated: Chaidh an tòcan inntrigidh ath-ghintinn
     warning: Bi glè chùramach leis an dàta seo. Na co-roinn le duine sam bith e!
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 48435b45b..5b303b08f 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -11,8 +11,8 @@ gl:
     apps: Aplicacións móbiles
     apps_platforms: Emprega Mastodon dende iOS, Android e outras plataformas
     browse_directory: Mira o directorio e filtra por intereses
-    browse_local_posts: Navega polas publicacións públicas deste servidor en tempo real
-    browse_public_posts: Navega polas publicacións públicas de Mastodon en tempo real
+    browse_local_posts: Unha ollada aos últimos comentarios públicos neste servidor
+    browse_public_posts: Cronoloxía en directo cos comentarios públicos en Mastodon
     contact: Contacto
     contact_missing: Non establecido
     contact_unavailable: Non dispoñíbel
@@ -31,14 +31,14 @@ gl:
     privacy_policy: Política de privacidade
     rules: Regras do servidor
     rules_html: 'Aquí tes un resumo das regras que debes seguir se queres ter unha conta neste servidor de Mastodon:'
-    see_whats_happening: Ver o que está a acontecer
+    see_whats_happening: Mira o que acontece
     server_stats: 'Estatísticas do servidor:'
     source_code: Código fonte
     status_count_after:
       one: publicación
       other: publicacións
     status_count_before: Que publicaron
-    tagline: Segue ás túas amizades e coñece novas
+    tagline: Rede social descentralizada
     terms: Termos do servizo
     unavailable_content: Contido non dispoñíbel
     unavailable_content_description:
@@ -852,6 +852,26 @@ gl:
       edit_preset: Editar aviso preestablecido
       empty: Non definiches os avisos prestablecidos.
       title: Xestionar avisos preestablecidos
+    webhooks:
+      add_new: Engadir punto de extremo
+      delete: Eliminar
+      description_html: Un <strong>webhook</strong> permítelle a Mastodon enviar <strong>notificacións en tempo real</strong> á túa aplicación acerca dos eventos elexidos e así, a aplicación <strong>activará automáticamente</strong> a súa programación.
+      disable: Desactivar
+      disabled: Desactivado
+      edit: Editar extremo
+      empty: Non tes configurado ningún punto extremo para o webhook.
+      enable: Activar
+      enabled: Activo
+      enabled_events:
+        one: 1 evento activado
+        other: "%{count} eventos activados"
+      events: Eventos
+      new: Novo webhook
+      rotate_secret: Rotar segredo
+      secret: Segredo de acceso
+      status: Estado
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ gl:
   applications:
     created: Creouse con éxito este aplicativo
     destroyed: Eliminouse con éxito o aplicativo
-    invalid_url: A URL proporcionada non é válida
     regenerate_token: Votar a xenerar o testemuño de acceso
     token_regenerated: Rexenerouse con éxito o testemuño de acceso
     warning: Ten moito tino con estos datos. Non os compartas nunca con ninguén!
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 2d0cf8ae9..040034125 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -1,7 +1,7 @@
 ---
 he:
   about:
-    about_hashtag_html: אלו סטטוסים פומביים המתוייגים בתור<strong>#%{hashtag}</strong>. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום בפדרציה.
+    about_hashtag_html: אלו הודעות פומביות המתוייגות בתור<strong>#%{hashtag}</strong>. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום שהוא בפדרציה.
     about_mastodon_html: מסטודון היא רשת חברתית <em>חופשית, מבוססת תוכנה חופשית ("קוד פתוח")</em>. כאלטרנטיבה <em>בלתי ריכוזית</em> לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד &mdash; לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ב<em>רשת החברתית</em> באופן חלק.
     about_this: אודות שרת זה
     active_count_after: פעיל
@@ -40,7 +40,6 @@ he:
       other: חצרוצים
       two: חצרוצים
     status_count_before: שכתבו
-    tagline: מעקב אחרי חברים וגילוי חדשים
     terms: תנאי שימוש
     unavailable_content: שרתים מוגבלים
     unavailable_content_description:
@@ -885,6 +884,14 @@ he:
       edit_preset: ערוך/י טקסט מוכן מראש לאזהרה
       empty: לא הגדרת עדיין שום טקסט מוכן מראש לאזהרה.
       title: ניהול טקסטים מוכנים מראש לאזהרות
+    webhooks:
+      delete: מחיקה
+      disable: כיבוי
+      disabled: כבוי
+      enable: אפשר
+      enabled: פעילים
+      events: אירועים
+      status: סטטוס
   admin_mailer:
     new_appeal:
       actions:
@@ -949,7 +956,6 @@ he:
   applications:
     created: ישום נוצר בהצלחה
     destroyed: ישום נמחק בהצלחה
-    invalid_url: כתובת הקישורית אינה חוקית
     regenerate_token: יצירת אסימון גישה מחדש
     token_regenerated: אסימון גישה יוצר מחדש בהצלחה
     warning: זהירות רבה נדרשת עם מידע זה. אין לחלוק אותו אף פעם עם אף אחד!
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index dd3b99dcc..fd90a5ac4 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -79,8 +79,6 @@ hr:
   application_mailer:
     settings: 'Promijeni postavke e-pošte: %{link}'
     view: 'Vidi:'
-  applications:
-    invalid_url: Unesena poveznica nije valjana
   auth:
     didnt_get_confirmation: Niste primili upute za potvrđivanje?
     forgot_password: Zaboravljena lozinka?
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index faee9de06..5ee01ea2c 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -38,7 +38,7 @@ hu:
       one: bejegyzést írt
       other: bejegyzést írt
     status_count_before: Eddig
-    tagline: Kövess barátokat és találj újakat
+    tagline: Decentralizált szociális hálózat
     terms: Felhasználási feltételek
     unavailable_content: Kimoderált szerverek
     unavailable_content_description:
@@ -854,6 +854,26 @@ hu:
       edit_preset: Figyelmeztetés szerkesztése
       empty: Nem definiáltál még egyetlen figyelmeztetést sem.
       title: Figyelmeztetések
+    webhooks:
+      add_new: Végpont hozzáadása
+      delete: Törlés
+      description_html: Egy <strong>webhook</strong> lehetővé teszi a Mastodon számára, hogy <strong>valósidejű értesítéseket</strong> küldjön le a kiválasztott eseményekről a te alkalmazásodnak, így az alkalmazásod <strong>automatikusan reagálhat</strong> ezekre.
+      disable: Letiltás
+      disabled: Letiltva
+      edit: Végpont szerkesztése
+      empty: Még nincs beállított webhook végpontod.
+      enable: Engedélyezés
+      enabled: Aktív
+      enabled_events:
+        one: 1 engedélyezett esemény
+        other: "%{count} engedélyezett esemény"
+      events: Események
+      new: Új webhook
+      rotate_secret: Titok forgatása
+      secret: Titok aláírása
+      status: Állapot
+      title: Webhookok
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -918,7 +938,6 @@ hu:
   applications:
     created: Alkalmazás sikeresen létrehozva
     destroyed: Alkalmazás sikeresen eltávolítva
-    invalid_url: A megadott URL nem megfelelő
     regenerate_token: Hozzáférési kulcs újragenerálása
     token_regenerated: Hozzáférési kulcs sikeresen újragenerálva
     warning: Ez érzékeny adat. Soha ne oszd meg másokkal!
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index f24b3197e..831ca6621 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -33,7 +33,6 @@ hy:
       one: գրառում
       other: ստատուս
     status_count_before: Որոնք արել են՝
-    tagline: Հետեւիր ընկերներիդ եւ գտիր նորերին
     terms: Ծառայութեան պայմանները
     unavailable_content: Մոդերացուող սպասարկիչներ
     unavailable_content_description:
@@ -551,7 +550,6 @@ hy:
     view_profile: Նայել անձնական էջը
     view_status: Նայել գրառումը
   applications:
-    invalid_url: Տրամադրուած URL անվաւեր է
     regenerate_token: Ստեղծել նոր հասանելիութեան կտրոն
     your_token: Քո մուտքի բանալին
   auth:
diff --git a/config/locales/id.yml b/config/locales/id.yml
index c278f749f..368b21add 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -35,7 +35,7 @@ id:
     status_count_after:
       other: status
     status_count_before: Yang telah menulis
-    tagline: Ikuti teman dan temukan yang baru
+    tagline: Jejaring sosial terdesentralisasi
     terms: Kebijakan layanan
     unavailable_content: Konten tak tersedia
     unavailable_content_description:
@@ -833,6 +833,21 @@ id:
       edit_preset: Sunting preset peringatan
       empty: Anda belum mendefinisikan peringatan apapun.
       title: Kelola preset peringatan
+    webhooks:
+      add_new: Tambah titik akhir
+      delete: Hapus
+      disable: Matikan
+      disabled: Nonaktif
+      edit: Edit titik akhir
+      enable: Aktifkan
+      enabled: Aktif
+      enabled_events:
+        other: "%{count} acara aktif"
+      events: Acara
+      new: Webhook baru
+      status: Status
+      title: Webhook
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -897,7 +912,6 @@ id:
   applications:
     created: Aplikasi berhasil dibuat
     destroyed: Aplikasi berhasil dihapus
-    invalid_url: URL tidak sesuai
     regenerate_token: Buat ulang token akses
     token_regenerated: Token akses berhasil dibuat ulang
     warning: Hati-hati dengan data ini. Jangan bagikan kepada siapapun!
diff --git a/config/locales/io.yml b/config/locales/io.yml
index 3649ec946..7cf253089 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -38,7 +38,7 @@ io:
       one: posto
       other: posti
     status_count_before: Qua publikigis
-    tagline: Sequez amiki e deskovrez nova personi
+    tagline: Necentralizita sociala reto
     terms: Serveskondicioni
     unavailable_content: Jerata servili
     unavailable_content_description:
@@ -852,6 +852,26 @@ io:
       edit_preset: Modifikez avertfixito
       empty: Vu ne fixis irga avertfixito til nun.
       title: Jerez avertfixiti
+    webhooks:
+      add_new: Insertez finpunto
+      delete: Efacez
+      description_html: "<strong>Rethoko</strong> povigas Mastodon sendar <strong>samtempoavizi</strong> pri selektita eventi a vua sua apliko, por ke vua apliko povas <strong>automate kauzigar reakti</strong>."
+      disable: Desaktivigez
+      disabled: Desaktivigita
+      edit: Modifikez finpunto
+      empty: Vu ne havas irga ajustita finpunti ankore.
+      enable: Aktivigez
+      enabled: Aktiva
+      enabled_events:
+        one: 1 aktivigita evento
+        other: "%{count} aktivigita eventi"
+      events: Eventi
+      new: Nova rethoko
+      rotate_secret: Rotacigez sekreto
+      secret: Signosekreto
+      status: Stando
+      title: Rethoki
+      webhook: Rethok
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ io:
   applications:
     created: Apliko sucesoze kreesas
     destroyed: Apliko sucesoze efacesas
-    invalid_url: La URL donita ne esas valida
     regenerate_token: Rifacez acesficho
     token_regenerated: Acesficho sucesoze riganesas
     warning: Sorgemez per ca informi. Ne partigez kun irgu!
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 4e3f9353e..f9d408822 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -38,7 +38,7 @@ is:
       one: færsla
       other: færslur
     status_count_before: Sem stóðu fyrir
-    tagline: Fylgstu með vinum og uppgötvaðu nýja
+    tagline: Dreift samfélagsnet
     terms: Þjónustuskilmálar
     unavailable_content: Ekki tiltækt efni
     unavailable_content_description:
@@ -852,6 +852,14 @@ is:
       edit_preset: Breyta forstilltri aðvörun
       empty: Þú hefur ekki enn skilgreint neinar aðvaranaforstillingar.
       title: Sýsla með forstilltar aðvaranir
+    webhooks:
+      delete: Eyða
+      disable: Gera óvirkt
+      disabled: Óvirkt
+      enable: Virkja
+      enabled: Virkt
+      events: Atburðir
+      status: Staða
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +924,6 @@ is:
   applications:
     created: Það tókst að búa til forrit
     destroyed: Það tókst að eyða forriti
-    invalid_url: Slóðin sem þú gafst upp er ógild
     regenerate_token: Endurgera aðgangsteikn
     token_regenerated: Það tókst að endurgera aðgangsteiknið
     warning: Farðu mjög varlega með þessi gögn. Þú skalt aldrei deila þeim með neinum!
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 708436ee1..f97779d26 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -38,7 +38,7 @@ it:
       one: stato
       other: stati
     status_count_before: Che hanno pubblicato
-    tagline: Segui amici e trovane di nuovi
+    tagline: Social network decentralizzato
     terms: Termini di Servizio
     unavailable_content: Server moderati
     unavailable_content_description:
@@ -852,6 +852,26 @@ it:
       edit_preset: Modifica avviso predefinito
       empty: Non hai ancora definito alcun avviso preimpostato.
       title: Gestisci avvisi predefiniti
+    webhooks:
+      add_new: Aggiungi endpoint
+      delete: Elimina
+      description_html: Un <strong>webhook</strong> consente a Mastodon di inviare <strong>notifiche in tempo reale</strong> su determinati eventi alla tua applicazione, così la tua applicazione può <strong>attivare automaticamente delle reazioni</strong>.
+      disable: Disabilita
+      disabled: Disabilitato
+      edit: Modifica endpoint
+      empty: Non hai ancora configurato alcun endpoint per webhook.
+      enable: Abilita
+      enabled: Attivo
+      enabled_events:
+        one: 1 evento abilitato
+        other: "%{count} eventi abilitati"
+      events: Eventi
+      new: Nuovo webhook
+      rotate_secret: Ruota segreto
+      secret: Segreto per firma
+      status: Stato
+      title: Webhook
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -918,7 +938,6 @@ it:
   applications:
     created: Applicazione creata con successo
     destroyed: Applicazione eliminata con successo
-    invalid_url: L'URL fornito non è valido
     regenerate_token: Rigenera il token di accesso
     token_regenerated: Token di accesso rigenerato
     warning: Fa' molta attenzione con questi dati. Non fornirli mai a nessun altro!
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index defd5ab7c..b7139523b 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -35,7 +35,7 @@ ja:
     status_count_after:
       other: 投稿
     status_count_before: 投稿数
-    tagline: Follow friends and discover new ones
+    tagline: 分散型ソーシャルネットワーク
     terms: 利用規約
     unavailable_content: 制限中のサーバー
     unavailable_content_description:
@@ -825,6 +825,18 @@ ja:
       edit_preset: プリセット警告文を編集
       empty: まだプリセット警告文が作成されていません。
       title: プリセット警告文を管理
+    webhooks:
+      add_new: エンドポイントを追加
+      delete: 削除
+      disable: 無効化
+      disabled: 無効
+      edit: エンドポイントを編集
+      enable: 有効化
+      enabled: アクティブ
+      events: イベント
+      new: 新しいwebhook
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -885,7 +897,6 @@ ja:
   applications:
     created: アプリが作成されました
     destroyed: アプリが削除されました
-    invalid_url: URLが無効です
     regenerate_token: アクセストークンの再生成
     token_regenerated: アクセストークンが再生成されました
     warning: このデータは気をつけて取り扱ってください。他の人と共有しないでください!
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 7e6d591ec..bd02b0f8d 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -305,7 +305,6 @@ ka:
   applications:
     created: აპლიკაცია წარმატებით შეიქმნა
     destroyed: აპლიკაცია წარმატებით გაუქმდა
-    invalid_url: მოწოდებული ურლ არასწორია
     regenerate_token: წვდომის ტოკენის რეგენერაცია
     token_regenerated: წვდომის ტოკენის რეგენერაცია მოხერხდა
     warning: იყავით ძალიან ფრთხილად ამ მონაცემთან. არასდროს გააზიაროთ ეს!
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index 66d029d7a..0db4e1c9d 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -29,7 +29,6 @@ kab:
       one: n tsuffeɣt
       other: n tsuffiɣin
     status_count_before: I d-yessuffɣen
-    tagline: Ḍfeṛ imddukkal-ik tissineḍ-d wiyaḍ
     terms: Tiwetlin n useqdec
     unavailable_content: Ulac agbur
     unavailable_content_description:
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index a01a2424a..406f7e3c8 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -32,7 +32,6 @@ kk:
       one: жазба
       other: жазба
     status_count_before: Барлығы
-    tagline: Достарыңызды оқыңыз және жаңа авторларды табыңыз
     terms: Қолдану шарттары
     unavailable_content: Қолжетімсіз контент
     unavailable_content_description:
@@ -477,7 +476,6 @@ kk:
   applications:
     created: Application succеssfully created
     destroyed: Application succеssfully deleted
-    invalid_url: The providеd URL is invalid
     regenerate_token: Regenerate accеss token
     token_regenerated: Access token succеssfully regenerated
     warning: Be very carеful with this data. Never share it with anyone!
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 630beabfb..65bc57e3a 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -37,7 +37,7 @@ ko:
     status_count_after:
       other: 개
     status_count_before: 게시물 수
-    tagline: 친구들을 팔로우 하고 새로운 사람들도 만나기
+    tagline: 분산화된 소셜 네트워크
     terms: 이용약관
     unavailable_content: 이용 불가능한 컨텐츠
     unavailable_content_description:
@@ -837,6 +837,14 @@ ko:
       edit_preset: 경고 틀 수정
       empty: 아직 어떤 경고 틀도 정의되지 않았습니다.
       title: 경고 틀 관리
+    webhooks:
+      add_new: 엔드포인트 추가
+      delete: 삭제
+      disable: 비활성화
+      disabled: 비활성화됨
+      edit: 엔드포인트 수정
+      enable: 활성화
+      enabled: 활성화됨
   admin_mailer:
     new_appeal:
       actions:
@@ -901,7 +909,6 @@ ko:
   applications:
     created: 애플리케이션이 성공적으로 생성되었습니다
     destroyed: 애플리케이션이 성공적으로 삭제되었습니다
-    invalid_url: 올바르지 않은 URL입니다
     regenerate_token: 토큰 재생성
     token_regenerated: 액세스 토큰이 성공적으로 재생성되었습니다
     warning: 이 데이터를 조심히 다뤄 주세요. 다른 사람들과 절대로 공유하지 마세요!
diff --git a/config/locales/ku.yml b/config/locales/ku.yml
index 78d99c2e5..a157dbb4e 100644
--- a/config/locales/ku.yml
+++ b/config/locales/ku.yml
@@ -38,7 +38,7 @@ ku:
       one: şandî
       other: şandî
     status_count_before: Hatin weşan
-    tagline: Hevalên xwe bişopîne û yên nû bibîne
+    tagline: Tora civakî ya nenavendî
     terms: Peyama mercan
     unavailable_content: Rajekarên li hev kirî
     unavailable_content_description:
@@ -854,6 +854,26 @@ ku:
       edit_preset: Hişyariyên pêşsazkirî serrast bike
       empty: Te hin tu hişyariyên pêşsazkirî destnîşan nekirine.
       title: Hişyariyên pêşsazkirî bi rêve bibe
+    webhooks:
+      add_new: Xala dawîbûnê tevlî bike
+      delete: Jê bibe
+      description_html: "<strong>çengeleke tevnê</strong> dihêle ku Mastodon <strong>agahdariyên dema-rastîn</strong> ên derbarê çalakiyên hilbijartî de bisepîne ser sepana te, bi vî awayî sepana te dikare <strong>reaksiyonan bi awayekî bixweber nîşan bide</strong>."
+      disable: Neçalak bike
+      disabled: Neçalakkirî
+      edit: Xala dawîbûnê serrast bike
+      empty: Hîn çengela tevnê ya xala dawîbûnê ya te ku hatiye pevesazkirin tune ne.
+      enable: Çalak bike
+      enabled: Çalak
+      enabled_events:
+        one: 1 bûyer çalakkirî
+        other: "%{count} bûyer çalakkirî"
+      events: Bûyer
+      new: Çengela tevnê ya nû
+      rotate_secret: Veşartî bizivirîne
+      secret: Îmzekirina veşartî
+      status: Rewş
+      title: Çengelên tevnê
+      webhook: Çengela tevnê
   admin_mailer:
     new_appeal:
       actions:
@@ -918,7 +938,6 @@ ku:
   applications:
     created: Sepan bi awayekî serkeftî hat çêkirin
     destroyed: Sepan bi awayekî serkeftî hat jêbirin
-    invalid_url: URL ya hatiye dayîn ne derbasdar e
     regenerate_token: Nîşandera gihandinê bi nûve çêbike
     token_regenerated: Nîşandera gihandinê bi serkeftî nû ve hat çêkirin
     warning: Bi van daneyan re pir baldar be. Tu caran bi kesî re parve neke!
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 864d2f43f..5846f7d5d 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -353,7 +353,6 @@ lt:
   applications:
     created: Aplikacija sėkmingai sukurta
     destroyed: Aplikacija sėkmingai ištrinta
-    invalid_url: Gauta URL nuoroda netinkama
     regenerate_token: Regeneruoti prieigos žetoną
     token_regenerated: Prieigos žetonas sėkmingai sugeneruotas
     warning: Būkite atsargūs su šia informacija. Niekada jos nesidalinkite!
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index f9d404303..2ceec30b2 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -39,13 +39,13 @@ lv:
       other: ziņas
       zero: nav
     status_count_before: Kurš publicējis
-    tagline: Seko draugiem un atrodi jaunus
+    tagline: Decentralizēts sociālais tīkls
     terms: Pakalpojuma noteikumi
     unavailable_content: Moderētie serveri
     unavailable_content_description:
       domain: Serveris
       reason: Iemesls
-      rejecting_media: 'Multivides faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:'
+      rejecting_media: 's faili no šiem serveriem netiks apstrādāti vai saglabāti, un netiks parādīti sīktēli, kuriem nepieciešama manuāla noklikšķināšana uz sākotnējā faila:'
       rejecting_media_title: Filtrēts saturs
       silenced: 'Ziņas no šiem serveriem tiks paslēptas publiskās ziņu lentās un sarunās, un no lietotāju mijiedarbības netiks ģenerēti paziņojumi, ja vien tu tiem nesekosi:'
       silenced_title: Ierobežoti serveri
@@ -72,7 +72,7 @@ lv:
     joined: Pievienojās %{date}
     last_active: pēdējā aktivitāte
     link_verified_on: Šīs saites piederība tika pārbaudīta %{date}
-    media: Mediji
+    media: Multivide
     moved_html: "%{name} ir pārcēlies uz %{new_profile_link}:"
     network_hidden: Šāda informācija nav pieejama
     nothing_here: Te nekā nav!
@@ -770,7 +770,7 @@ lv:
         report: Ziņojums
       deleted: Dzēstie
       media:
-        title: Mediji
+        title: Multivide
       no_status_selected: Neviena ziņa netika mainīta, jo neviena netika atlasīta
       title: Konta ziņas
       with_media: Ar medijiem
@@ -869,6 +869,27 @@ lv:
       edit_preset: Labot iepriekš iestatītus brīdinājumus
       empty: Tu vēl neesi definējis iepriekš iestatītos brīdinājumus.
       title: Pārvaldīt brīdinājuma iestatījumus
+    webhooks:
+      add_new: Pievienot galapunktu
+      delete: Dzēst
+      description_html: Izmantojot <strong>tīmekļa aizķeri</strong>, Mastodon var nosūtīt jūsu lietojumprogrammai <strong>reāllaika paziņojumus</strong> par izvēlētajiem notikumiem, lai tava lietojumprogramma varētu <strong>automātiski izraisīt reakcijas</strong>.
+      disable: Atspējot
+      disabled: Atspējots
+      edit: Rediģēt galapunktu
+      empty: Tev vēl nav konfigurēts neviens tīmekļa aizķeres galapunkts.
+      enable: Iespējot
+      enabled: Aktīvie
+      enabled_events:
+        one: 1 iespējots notikums
+        other: "%{count} iespējoti notikumi"
+        zero: "%{count} iespējotu notikumu"
+      events: Notikumi
+      new: Jauna tīmekļa aizķere
+      rotate_secret: Pagriezt noslēpumu
+      secret: Paraksta noslēpums
+      status: Statuss
+      title: Tīmekļa āķi
+      webhook: Tīmekļa āķis
   admin_mailer:
     new_appeal:
       actions:
@@ -933,7 +954,6 @@ lv:
   applications:
     created: Lietojumprogramma ir veiksmīgi izveidota
     destroyed: Lietojumprogramma ir veiksmīgi dzēsta
-    invalid_url: Norādītais URL nav derīgs
     regenerate_token: Atjaunot piekļuves marķieri
     token_regenerated: Piekļuves marķieris veiksmīgi atjaunots
     warning: Esi ļoti uzmanīgs ar šiem datiem. Nekad nedalies ne ar vienu ar tiem!
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index daee6098c..f035633ca 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -15,7 +15,6 @@ ml:
     see_whats_happening: എന്തൊക്കെ സംഭവിക്കുന്നു എന്ന് കാണുക
     source_code: സോഴ്സ് കോഡ്
     status_count_before: ആരാൽ എഴുതപ്പെട്ടു
-    tagline: സുഹൃത്തുക്കളെ പിന്തുടരുകയും പുതിയവരെ കണ്ടെത്തുകയും ചെയ്യുക
     terms: സേവന വ്യവസ്ഥകൾ
     unavailable_content: ലഭ്യമല്ലാത്ത ഉള്ളടക്കം
     unavailable_content_description:
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index 4e101a890..d400d3256 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -34,7 +34,6 @@ ms:
     status_count_after:
       other: hantaran
     status_count_before: Siapa terbitkan
-    tagline: Ikuti rakan lama dan terokai rakan baharu
     terms: Terma perkhidmatan
     unavailable_content: Pelayan disederhanakan
     unavailable_content_description:
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 764ae42d6..db49efbb9 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -36,7 +36,7 @@ nl:
       one: toot
       other: berichten
     status_count_before: Zij schreven
-    tagline: Vrienden volgen en nieuwe ontdekken
+    tagline: Gedecentraliseerd sociaal netwerk
     terms: Gebruiksvoorwaarden
     unavailable_content: Gemodereerde servers
     unavailable_content_description:
@@ -680,7 +680,6 @@ nl:
   applications:
     created: Aanmaken toepassing geslaagd
     destroyed: Verwijderen toepassing geslaagd
-    invalid_url: De opgegeven URL is ongeldig
     regenerate_token: Toegangscode opnieuw aanmaken
     token_regenerated: Opnieuw aanmaken toegangscode geslaagd
     warning: Wees voorzichtig met deze gegevens. Deel het nooit met iemand anders!
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index ea5020bbf..5218270da 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -30,7 +30,6 @@ nn:
     server_stats: 'Tenarstatistikk:'
     source_code: Kjeldekode
     status_count_before: Som skreiv
-    tagline: Fylg vener og oppdag nye
     terms: Brukarvilkår
     unavailable_content: Utilgjengeleg innhald
     unavailable_content_description:
@@ -634,7 +633,6 @@ nn:
   applications:
     created: Søknad laga
     destroyed: Søknad sletta
-    invalid_url: Denne lenkja er ugyldig
     regenerate_token: Lag tilgangsnykel på nytt
     token_regenerated: Tilgangsnykel laga på nytt
     warning: Ver varsam med dette datumet. Aldri del det med nokon!
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 4abc8f086..30b7a56fb 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -33,7 +33,6 @@
       one: innlegg
       other: statuser
     status_count_before: Som skrev
-    tagline: Følg venner og oppdag nye
     terms: Bruksvilkår
     unavailable_content: Utilgjengelig innhold
     unavailable_content_description:
@@ -629,7 +628,6 @@
   applications:
     created: Søknaden ble vellykket oppretttet
     destroyed: Søknaden ble vellykket slettet
-    invalid_url: Den oppgitte URLen er ugyldig
     regenerate_token: Regenerer tilgangsnøkkel
     token_regenerated: Tilgangsnøkkel vellykket regenerert
     warning: Vær veldig forsiktig med denne data. Aldri del den med noen!
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 678d5d0dc..57cecbdc4 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -31,7 +31,6 @@ oc:
       one: estatut
       other: estatuts
     status_count_before: qu’an escrich
-    tagline: Seguètz d’amics e trobatz-ne de nòus
     terms: Condicions d’utilizacion
     unavailable_content: Contengut pas disponible
     unavailable_content_description:
@@ -573,7 +572,6 @@ oc:
   applications:
     created: Aplicacion ben creada
     destroyed: Aplication corrcètament suprimida
-    invalid_url: L’URL donada es invalida
     regenerate_token: Tornar generar lo geton d’accès
     token_regenerated: Geton d’accès ben regenerat
     warning: Mèfi ! Agachatz de partejar aquela donada amb degun !
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 2709572de..7557ab83f 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -40,7 +40,6 @@ pl:
       one: wpisu
       other: wpisów
     status_count_before: Są autorami
-    tagline: Śledź znajomych i poznawaj nowych
     terms: Zasady użytkowania
     unavailable_content: Niedostępne treści
     unavailable_content_description:
@@ -871,6 +870,28 @@ pl:
       edit_preset: Edytuj szablon ostrzeżenia
       empty: Nie zdefiniowano jeszcze żadnych szablonów ostrzegawczych.
       title: Zarządzaj szablonami ostrzeżeń
+    webhooks:
+      add_new: Dodaj punkt końcowy
+      delete: Usuń
+      description_html: "<strong>webhook</strong> umożliwia Mastodon dostarczanie <strong>powiadomień w czasie rzeczywistym</strong> o wybranych wydarzeniach do twojej aplikacji, aby mogła <strong>automatycznie wyzwalać reakcje</strong>."
+      disable: Wyłącz
+      disabled: Wyłączone
+      edit: Edytuj punkt końcowy
+      empty: Nie masz jeszcze skonfigurowanych żadnych webhooków do punktów końcowych.
+      enable: Włącz
+      enabled: Aktywne
+      enabled_events:
+        few: "%{count} włączone zdarzenia"
+        many: "%{count} włączonych zdarzeń"
+        one: 1 włączone zdarzenie
+        other: "%{count} włączonych zdarzeń"
+      events: Zdarzenia
+      new: Nowy webhook
+      rotate_secret: Odśwież klucz szyfrowania
+      secret: Podpisywanie klucza szyfrowania
+      status: Stan
+      title: Webhooki
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -935,7 +956,6 @@ pl:
   applications:
     created: Pomyślnie utworzono aplikację
     destroyed: Pomyślnie usunięto aplikację
-    invalid_url: Wprowadzony adres URL jest nieprawidłowy
     regenerate_token: Wygeneruj nowy token dostępu
     token_regenerated: Pomyślnie wygenerowano nowy token dostępu
     warning: Przechowuj te dane ostrożnie. Nie udostępniaj ich nikomu!
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index b24811049..7661df9a0 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -38,7 +38,6 @@ pt-BR:
       one: toot
       other: toots
     status_count_before: Autores de
-    tagline: Siga seus amigos e faça novas amizades
     terms: Termos de serviço
     unavailable_content: Conteúdo indisponível
     unavailable_content_description:
@@ -428,6 +427,7 @@ pt-BR:
       destroyed_msg: Domínio desbloqueado
       domain: Domínio
       edit: Editar bloqueio de domínio
+      existing_domain_block: Você já impôs limites mais rigorosos em %{name}.
       existing_domain_block_html: Você já impôs limites mais estritos em %{name}, você precisa <a href="%{unblock_url}">desbloqueá-lo</a> primeiro.
       new:
         create: Criar bloqueio
@@ -615,6 +615,7 @@ pt-BR:
       forwarded: Encaminhados
       forwarded_to: Encaminhado para %{domain}
       mark_as_resolved: Marcar como resolvido
+      mark_as_sensitive: Marcar como sensível
       mark_as_unresolved: Marcar como não resolvido
       no_one_assigned: Ninguém
       notes:
@@ -800,6 +801,7 @@ pt-BR:
         usable: Pode ser usado
         usage_comparison: Usado %{today} vezes hoje, em comparação com %{yesterday} de ontem
       title: Em alta
+      trending: Em alta
     warning_presets:
       add_new: Adicionar novo
       delete: Excluir
@@ -807,6 +809,12 @@ pt-BR:
       empty: Você ainda não definiu nenhuma predefinição de alerta.
       title: Gerenciar os avisos pré-definidos
   admin_mailer:
+    new_appeal:
+      actions:
+        delete_statuses: para excluir suas publicações
+        none: um aviso
+        sensitive: para marcar sua conta como sensível
+        silence: para limitar sua conta
     new_pending_account:
       body: Os detalhes da nova conta estão abaixo. Você pode aprovar ou vetar.
       subject: Nova conta para revisão em %{instance} (%{username})
@@ -851,7 +859,6 @@ pt-BR:
   applications:
     created: Aplicativo criado com sucesso
     destroyed: Aplicativo excluído com sucesso
-    invalid_url: O link fornecido é inválido
     regenerate_token: Gerar código de acesso
     token_regenerated: Código de acesso gerado com sucesso
     warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém!
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index 377360a9d..9607762bb 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -38,7 +38,7 @@ pt-PT:
       one: publicação
       other: publicações
     status_count_before: Que fizeram
-    tagline: Siga os seus amigos e descubra novas amizades
+    tagline: Rede social descentralizada
     terms: Termos de serviço
     unavailable_content: Conteúdo indisponível
     unavailable_content_description:
@@ -852,6 +852,26 @@ pt-PT:
       edit_preset: Editar o aviso predefinido
       empty: Ainda não definiu nenhum aviso predefinido.
       title: Gerir os avisos predefinidos
+    webhooks:
+      add_new: Adicionar endpoint
+      delete: Eliminar
+      description_html: Um <strong>webhook</strong> possibilita que o Mastodon envie <strong>notificações em tempo real</strong> de eventos seleccionados, para um seu aplicativo, para que este possa <strong>acionar ações automaticamente</strong>.
+      disable: Desativar
+      disabled: Desativado
+      edit: Editar endpoint
+      empty: Não tem ainda qualquer endpoint de webhook configurado.
+      enable: Ativar
+      enabled: Activo
+      enabled_events:
+        one: 1 evento ativado
+        other: "%{count} eventos ativados"
+      events: Eventos
+      new: Novo webhook
+      rotate_secret: Alternar segredo
+      secret: Segredo de assinatura
+      status: Estado
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -916,7 +936,6 @@ pt-PT:
   applications:
     created: Aplicação criada com sucesso
     destroyed: Aplicação eliminada com sucesso
-    invalid_url: O URL é inválido
     regenerate_token: Regenerar token de acesso
     token_regenerated: Token de acesso regenerado com sucesso
     warning: Cuidado com estes dados. Não partilhar com ninguém!
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index d13aa5464..3203e9178 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -36,7 +36,6 @@ ro:
       one: stare
       other: de stări
     status_count_before: Care au postat
-    tagline: Urmăriți prietenii și descoperiți alții noi
     terms: Termeni de serviciu
     unavailable_content: Conținut indisponibil
     unavailable_content_description:
@@ -295,7 +294,6 @@ ro:
   applications:
     created: Aplicație creată cu succes
     destroyed: Aplicație ștearsă cu succes
-    invalid_url: URL-ul furnizat nu este valid
     regenerate_token: Regenerează token-ul de acces
     token_regenerated: Token de acces regenerat cu succes
     warning: Fiți foarte atent cu aceste date. Nu le împărtășiți niciodată cu cineva!
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 39a3b3eb7..47f944129 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -40,7 +40,7 @@ ru:
       one: пост
       other: поста
     status_count_before: И опубликовано
-    tagline: Подписывайтесь на друзей и заводите новые знакомства
+    tagline: Децентрализованная социальная сеть
     terms: Условия использования
     unavailable_content: Недоступный контент
     unavailable_content_description:
@@ -403,6 +403,16 @@ ru:
       media_storage: Медиа файлы
       new_users: новые пользователи
       opened_reports: жалоб открыто
+      pending_reports_html:
+        few: "<strong>%{count}</strong> ожидающих отчета"
+        many: "<strong>%{count}</strong> ожидающих отчетов"
+        one: "<strong>%{count}</strong> ожидающий отчет"
+        other: "<strong>%{count}</strong> ожидающих отчетов"
+      pending_users_html:
+        few: "<strong>%{count}</strong> ожидающих пользователя"
+        many: "<strong>%{count}</strong> ожидающих пользователей"
+        one: "<strong>%{count}</strong> ожидающий пользователь"
+        other: "<strong>%{count}</strong> ожидающих пользователей"
       resolved_reports: жалоб решено
       software: Программное обеспечение
       sources: Источники регистрации
@@ -500,6 +510,7 @@ ru:
           suspend: Приостановить
         policy: Политика
         reason: Публичная причина
+        title: Политика контента
       dashboard:
         instance_accounts_dimension: Популярные аккаунты
         instance_accounts_measure: сохраненные учетные записи
@@ -803,6 +814,8 @@ ru:
       statuses:
         allow: Разрешить пост
         allow_account: Разрешить автора
+        disallow: Запретить пост
+        disallow_account: Запретить автора
         title: Популярные посты
       tags:
         current_score: Текущий счет %{score}
@@ -818,6 +831,7 @@ ru:
         peaked_on_and_decaying: Последний пик — %{date}, сейчас идёт на спад
         title: Актуальные хэштеги
         trendable: Может появляться в списке «актуального»
+        trending_rank: 'Популярное #%{rank}'
         usable: Может использоваться
         usage_comparison: Использовано %{today} сегодня, для сравнения вчера %{yesterday}
         used_by_over_week:
@@ -833,12 +847,35 @@ ru:
       edit_preset: Удалить шаблон предупреждения
       empty: Вы еще не определили пресеты предупреждений.
       title: Управление шаблонами предупреждений
+    webhooks:
+      add_new: Добавить конечную точку
+      delete: Удалить
+      description_html: "<strong>Вебхуки</strong> позволяют Mastodon отправлять вашим приложениям <strong>уведомления в реальном времени</strong> о выбранных происходящих событиях, а они могут <strong>обрабатывать их в автоматическом режиме</strong>."
+      disable: Отключить
+      disabled: Отключено
+      edit: Редактировать вебхук
+      empty: У вас пока нет настроенных конечных точек вебхуков.
+      enable: Включить
+      enabled: Активен
+      enabled_events:
+        few: "%{count} события включено"
+        many: "%{count} событий включено"
+        one: "%{count} событие включено"
+        other: "%{count} событий включено"
+      events: События
+      new: Новый вебхук
+      rotate_secret: Сгенерировать новый
+      secret: Ключ подписи
+      status: Состояние
+      title: Вебхуки
+      webhook: Вебхук
   admin_mailer:
     new_appeal:
       actions:
         none: предупреждение
         silence: ограничить учётную запись
         suspend: приостановить действие учётной записи
+      body: "%{target} обжалуют решение модератора %{action_taken_by} от %{date}, которое %{type}. Они написали:"
       subject: "%{username} обжалует решение модерации на %{instance}"
     new_pending_account:
       body: Ниже указана информация учётной записи. Вы можете одобрить или отклонить заявку.
@@ -885,7 +922,6 @@ ru:
   applications:
     created: Приложение успешно создано
     destroyed: Приложение успешно удалено
-    invalid_url: Введенный URL неверен
     regenerate_token: Повторно сгенерировать токен доступа
     token_regenerated: Токен доступа успешно сгенерирован
     warning: Будьте очень внимательны с этими данными. Не делитесь ими ни с кем!
diff --git a/config/locales/sc.yml b/config/locales/sc.yml
index 99cd3f0b5..490654143 100644
--- a/config/locales/sc.yml
+++ b/config/locales/sc.yml
@@ -35,7 +35,6 @@ sc:
       one: istadu
       other: istados
     status_count_before: Atributzione de
-    tagline: Sighi is amistades tuas e iscoberi·nde àteras
     terms: Cunditziones de su servìtziu
     unavailable_content: Serbidores moderados
     unavailable_content_description:
@@ -659,7 +658,6 @@ sc:
   applications:
     created: Aplicatzione creada
     destroyed: Aplicatzione cantzellada
-    invalid_url: S'URL frunidu no est curretu
     regenerate_token: Torra a generare s'identificadore de atzessu
     token_regenerated: Identificadore de atzessu generadu
     warning: Dae cara a custos datos. Non ddos cumpartzas mai cun nemos!
diff --git a/config/locales/simple_form.af.yml b/config/locales/simple_form.af.yml
index 252f9fd5a..a52c53eba 100644
--- a/config/locales/simple_form.af.yml
+++ b/config/locales/simple_form.af.yml
@@ -1 +1,11 @@
+---
 af:
+  simple_form:
+    hints:
+      webhook:
+        events: Kies gebeurtenisse om te stuur
+        url: Waarheen gebeurtenisse gestuur sal word
+    labels:
+      webhook:
+        events: Geaktiveerde gebeurtenisse
+        url: End-punt URL
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 2e0632648..ccbb90282 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -91,6 +91,9 @@ ca:
         name: Només pots canviar la caixa de les lletres, per exemple, per fer-la més llegible
       user:
         chosen_languages: Quan estigui marcat, només es mostraran les publicacions en les llengües seleccionades en les línies de temps públiques
+      webhook:
+        events: Selecciona esdeveniments a enviar
+        url: On els esdeveniments seran enviats
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ ca:
         name: Etiqueta
         trendable: Permet que aquesta etiqueta aparegui en les tendències
         usable: Permetre a les publicacions emprar aquesta etiqueta
+      webhook:
+        events: Esdeveniments activats
+        url: URL del extrem
     'no': 'No'
     recommended: Recomanat
     required:
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index 32711aa0d..789b328b5 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -91,6 +91,9 @@ cs:
         name: Můžete měnit pouze velikost písmen, například kvůli lepší čitelnosti
       user:
         chosen_languages: Po zaškrtnutí budou ve veřejných časových osách zobrazeny pouze příspěvky ve zvolených jazycích
+      webhook:
+        events: Zvolte odesílané události
+        url: Kam budou události odesílány
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ cs:
         name: Hashtag
         trendable: Povolit zobrazení tohoto hashtagu mezi populárními
         usable: Povolit používat tento hashtag v příspěvcích
+      webhook:
+        events: Zapnuté události
+        url: URL koncového bodu
     'no': Ne
     recommended: Doporučeno
     required:
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 88b17a6c5..84450c768 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -91,6 +91,9 @@ da:
         name: Kun bogstavtyper (store/små) kan ændres, eksempelvis for at gøre det mere læsbart
       user:
         chosen_languages: Når markeret, vil kun indlæg på de valgte sprog fremgå på offentlige tidslinjer
+      webhook:
+        events: Vælg begivenheder at sende
+        url: Hvor begivenheder sendes til
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ da:
         name: Hashtag
         trendable: Tillad visning af dette hashtag under trends
         usable: Tillad indlæg at benytte dette hashtag
+      webhook:
+        events: Aktive begivenheder
+        url: Endepunkts-URL
     'no': Nej
     recommended: Anbefalet
     required:
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index e9ae17206..46472cdcf 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -91,6 +91,9 @@ de:
         name: Du kannst zum Beispiel nur die Groß- und Kleinschreibung der Buchstaben ändern, um es lesbarer zu machen
       user:
         chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt
+      webhook:
+        events: Zu sendende Ereignisse auswählen
+        url: Wo Ereignisse hingesendet werden
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ de:
         name: Hashtag
         trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen
         usable: Beiträge erlauben, diesen Hashtag zu verwenden
+      webhook:
+        events: Aktivierte Ereignisse
+        url: Endpunkt-URL
     'no': Nein
     recommended: Empfohlen
     required:
diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml
new file mode 100644
index 000000000..ef03d1810
--- /dev/null
+++ b/config/locales/simple_form.en-GB.yml
@@ -0,0 +1 @@
+en-GB:
diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml
index d4a9ad264..8f30266e3 100644
--- a/config/locales/simple_form.es-AR.yml
+++ b/config/locales/simple_form.es-AR.yml
@@ -91,6 +91,9 @@ es-AR:
         name: Sólo podés cambiar la capitalización de las letras, por ejemplo, para que sea más legible
       user:
         chosen_languages: Cuando estén marcados, sólo se mostrarán los mensajes en los idiomas seleccionados en las líneas temporales públicas
+      webhook:
+        events: Seleccionar eventos para enviar
+        url: Adónde serán enviados los eventos
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ es-AR:
         name: Etiqueta
         trendable: Permitir que esta etiqueta aparezca bajo tendencias
         usable: Permitir a los mensajes usar esta etiqueta
+      webhook:
+        events: Eventos habilitados
+        url: Dirección web del punto final
     'no': 'No'
     recommended: Opción recomendada
     required:
diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml
index d02e97a3a..66efd68ab 100644
--- a/config/locales/simple_form.es-MX.yml
+++ b/config/locales/simple_form.es-MX.yml
@@ -49,6 +49,7 @@ es-MX:
         phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot
         scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales.
         setting_aggregate_reblogs: No mostrar nuevos retoots para los toots que han sido recientemente retooteados (sólo afecta a los retoots recibidos recientemente)
+        setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente
         setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un click
         setting_display_media_default: Ocultar contenido multimedia marcado como sensible
         setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia
@@ -151,6 +152,7 @@ es-MX:
         phrase: Palabra clave o frase
         setting_advanced_layout: Habilitar interfaz web avanzada
         setting_aggregate_reblogs: Agrupar retoots en las líneas de tiempo
+        setting_always_send_emails: Enviar siempre notificaciones por correo
         setting_auto_play_gif: Reproducir automáticamente los GIFs animados
         setting_boost_modal: Mostrar ventana de confirmación antes de un Retoot
         setting_crop_images: Recortar a 16x9 las imágenes de los toots no expandidos
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 53c6d9c45..53863ba31 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -91,6 +91,9 @@ es:
         name: Sólo se puede cambiar el cajón de las letras, por ejemplo, para que sea más legible
       user:
         chosen_languages: Cuando se marca, solo se mostrarán las publicaciones en los idiomas seleccionados en las líneas de tiempo públicas
+      webhook:
+        events: Seleccionar eventos para enviar
+        url: Donde los eventos serán enviados
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ es:
         name: Etiqueta
         trendable: Permitir que esta etiqueta aparezca bajo tendencias
         usable: Permitir a las publicaciones usar esta etiqueta
+      webhook:
+        events: Eventos habilitados
+        url: URL de Endpoint
     'no': 'No'
     recommended: Recomendado
     required:
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index 9a777c45c..c4fd49040 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -91,6 +91,9 @@ fr:
         name: Vous ne pouvez modifier que la casse des lettres, par exemple, pour le rendre plus lisible
       user:
         chosen_languages: Lorsque coché, seuls les messages dans les langues sélectionnées seront affichés sur les fils publics
+      webhook:
+        events: Sélectionnez les événements à envoyer
+        url: Là où les événements seront envoyés
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ fr:
         name: Hashtag
         trendable: Autoriser ce hashtag à apparaitre dans les tendances
         usable: Autoriser les messages à utiliser ce hashtag
+      webhook:
+        events: Événements activés
+        url: URL du point de terminaison
     'no': Non
     recommended: Recommandé
     required:
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 83447f7ec..28d098630 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -91,6 +91,9 @@ gl:
         name: Só podes cambiar maiús/minúsculas, por exemplo, mellorar a lexibilidade
       user:
         chosen_languages: Se ten marca, só as publicacións nos idiomas seleccionados serán mostrados en cronoloxías públicas
+      webhook:
+        events: Elexir eventos a enviar
+        url: Cando serán enviados os eventos
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ gl:
         name: Cancelo
         trendable: Permitir que este cancelo apareza en tendencias
         usable: Permitir que as publicacións utilicen este cancelo
+      webhook:
+        events: Eventos activados
+        url: URL do extremo
     'no': Non
     recommended: Recomendado
     required:
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index 6faf1842a..c7fe6026c 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -91,6 +91,8 @@ he:
         name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות
       user:
         chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים
+      webhook:
+        events: בחר אירועים לשליחה
     labels:
       account:
         fields:
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index fb147a22c..3aba33995 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -91,6 +91,9 @@ hu:
         name: Csak a kis/nagybetűséget változtathatod meg, pl. hogy olvashatóbb legyen
       user:
         chosen_languages: Ha aktív, csak a kiválasztott nyelvű bejegyzések jelennek majd meg a nyilvános idővonalon
+      webhook:
+        events: Válaszd ki a küldendő eseményeket
+        url: Ahová az eseményket küldjük
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ hu:
         name: Hashtag
         trendable: A hashtag megjelenhet a felkapottak között
         usable: Bejegyzések használhatják ezt a hashtaget
+      webhook:
+        events: Engedélyezett események
+        url: Végponti URL
     'no': Nem
     recommended: Ajánlott
     required:
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index 0e2d5e3a9..5f72276b7 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -91,6 +91,9 @@ io:
         name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla
       user:
         chosen_languages: Kande marketigesis, nur posti en selektesis lingui montresos en publika tempolinei
+      webhook:
+        events: Selektigez eventi por sendar
+        url: Ibe eventi sendesos
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ io:
         name: Hashtago
         trendable: Permisez ca hashtago aparar che tendenci
         usable: Permisez posti uzar ca hashtago
+      webhook:
+        events: Aktivigita eventi
+        url: URL di finpunto
     'no': Ne
     recommended: Rekomendito
     required:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 7eb014193..4d86f24df 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -91,6 +91,9 @@ it:
         name: Puoi cambiare solo il minuscolo/maiuscolo delle lettere, ad esempio, per renderlo più leggibile
       user:
         chosen_languages: Quando una o più lingue sono contrassegnate, nelle timeline pubbliche vengono mostrati solo i toot nelle lingue selezionate
+      webhook:
+        events: Seleziona eventi da inviare
+        url: Dove gli eventi saranno inviati
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ it:
         name: Hashtag
         trendable: Permetti a questo hashtag di apparire nelle tendenze
         usable: Permetti ai post di usare questo hashtag
+      webhook:
+        events: Eventi abilitati
+        url: URL endpoint
     'no': 'No'
     recommended: Consigliato
     required:
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 5f61ee19c..cde47dbd0 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -219,6 +219,9 @@ ja:
         name: ハッシュタグ
         trendable: トレンドへの表示を許可する
         usable: 投稿への使用を許可する
+      webhook:
+        events: 有効なイベント
+        url: エンドポイントURL
     'no': いいえ
     recommended: おすすめ
     required:
diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml
index e9e6603cd..9cfe371b5 100644
--- a/config/locales/simple_form.ku.yml
+++ b/config/locales/simple_form.ku.yml
@@ -93,6 +93,9 @@ ku:
         name: Tîpan, mînak ji bo ku bêhtir paknivîs bibe, tenê rewşa tîpên girdek/hûrdek dikarî biguherînî
       user:
         chosen_languages: Dema were nîşankirin, tenê parvekirinên bi zimanên hilbijartî dê di rêzikên giştî de werin nîşandan
+      webhook:
+        events: Bûyeran hilbijêre bo şandinê
+        url: Cihê ku bûyer wê werin şandin
     labels:
       account:
         fields:
@@ -221,6 +224,9 @@ ku:
         name: Hashtag
         trendable: Bihêle ku ev hashtag werê xuyakirin di bin rojevê de
         usable: Bihêle ku şandî ev hashtag bi kar bînin
+      webhook:
+        events: Bûyerên çalakkirî
+        url: Girêdana xala dawîbûnê
     'no': Na
     recommended: Pêşniyarkirî
     required:
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
index e512551ba..97fa2bff4 100644
--- a/config/locales/simple_form.lv.yml
+++ b/config/locales/simple_form.lv.yml
@@ -91,6 +91,9 @@ lv:
         name: Tu vari mainīt tikai burtu lielumu, piemēram, lai tie būtu vieglāk lasāmi
       user:
         chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās
+      webhook:
+        events: Atlasi nosūtāmos notikums
+        url: Kur notikumi tiks nosūtīti
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ lv:
         name: Tēmturis
         trendable: Atļaut šim tēmturim parādīties zem tendencēm
         usable: Atļaut lietot ziņās šo tēmturi
+      webhook:
+        events: Iespējotie notikumi
+        url: Galapunkta URL
     'no': Nē
     recommended: Ieteicams
     required:
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 0793f55bc..b0373fbc6 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -91,6 +91,9 @@ pl:
         name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne
       user:
         chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu
+      webhook:
+        events: Wybierz zdarzenia do wysłania
+        url: Dokąd będą wysłane zdarzenia
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ pl:
         name: Hashtag
         trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie”
         usable: Pozwól na umieszczanie tego hashtagu we wpisach
+      webhook:
+        events: Włączone zdarzenia
+        url: Endpoint URL
     'no': Nie
     recommended: Polecane
     required:
diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml
index 42116174f..16972ca6a 100644
--- a/config/locales/simple_form.pt-PT.yml
+++ b/config/locales/simple_form.pt-PT.yml
@@ -91,6 +91,9 @@ pt-PT:
         name: Só pode alterar a capitalização das letras, por exemplo, para torná-las mais legíveis
       user:
         chosen_languages: Quando seleccionado, só publicações nas línguas escolhidas serão mostradas nas cronologias públicas
+      webhook:
+        events: Selecione os eventos a enviar
+        url: Para onde os eventos serão enviados
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ pt-PT:
         name: Hashtag
         trendable: Permitir que esta hashtag apareça em destaque
         usable: Permitir que toots utilizem esta hashtag
+      webhook:
+        events: Eventos ativados
+        url: URL do Endpoint
     'no': Não
     recommended: Recomendado
     required:
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 839be0a69..571411c09 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -91,6 +91,9 @@ ru:
         name: Вы можете изменить только регистр букв чтобы, например, сделать тег более читаемым
       user:
         chosen_languages: Если выбрано, то в публичных лентах будут показаны только посты на выбранных языках.
+      webhook:
+        events: Выберите события для отправки
+        url: Куда события будут отправляться
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ ru:
         name: Хэштег
         trendable: Разрешить показ хэштега в трендах
         usable: Разрешить использовать этот хэштег в постах
+      webhook:
+        events: Включенные события
+        url: Endpoint URL
     'no': Нет
     recommended: Рекомендуем
     required:
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 5ae4b2e04..bd482f778 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -111,7 +111,7 @@ sk:
         max_uses: Najviac možno použiť
         new_password: Nové heslo
         note: O tebe
-        otp_attempt: Dvoj-faktorový overovací (2FA) kód
+        otp_attempt: Dvoj-faktorový overovací kód
         password: Heslo
         phrase: Kľúčové slovo, alebo fráza
         setting_advanced_layout: Zapni pokročilé užívateľské rozhranie
@@ -139,6 +139,7 @@ sk:
         setting_use_blurhash: Ukáž farebné prechody pre skryté médiá
         setting_use_pending_items: Pomalý režim
         severity: Závažnosť
+        sign_in_token_attempt: Bezpečnostný kód
         type: Typ importu
         username: Prezývka
         username_or_email: Prezývka, alebo email
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index f1870ab9a..04df4eb49 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -91,6 +91,9 @@ sl:
         name: Spremenite lahko le npr. velikost črk (velike/male), da je bolj berljivo
       user:
         chosen_languages: Ko je označeno, bodo v javnih časovnicah prikazane samo objave v izbranih jezikih
+      webhook:
+        events: Izberite dogodke za pošiljanje
+        url: Kam bodo poslani dogodki
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ sl:
         name: Ključnik
         trendable: Dovoli, da se ta ključnik pojavi med trendi
         usable: Dovoli, da objave uporabljajo ta ključnik
+      webhook:
+        events: Omogočeni dogodki
+        url: URL končne točke
     'no': Ne
     recommended: Priporočeno
     required:
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index 1136169b7..0e2fb4ab8 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -91,6 +91,9 @@ sq:
         name: Mund të ndryshoni shkronjat vetëm nga të mëdha në të vogla ose anasjelltas, për shembull, për t’i bërë më të lexueshme
       user:
         chosen_languages: Në iu vëntë shenjë, te rrjedha kohore publike do të shfaqen vetëm mesazhe në gjuhët e përzgjedhura
+      webhook:
+        events: Përzgjidhni akte për dërgim
+        url: Ku do të dërgohen aktet
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ sq:
         name: Hashtag
         trendable: Lejoje këtë hashtag të shfaqet në prirje
         usable: Lejoji mesazhet të përdorin këtë hashtag
+      webhook:
+        events: Akte të aktivizuar
+        url: URL pikëmbarimi
     'no': Jo
     recommended: E rekomanduar
     required:
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 21e3aab78..994213065 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -91,6 +91,9 @@ tr:
         name: Harflerin, örneğin daha okunabilir yapmak için, sadece büyük/küçük harf durumlarını değiştirebilirsiniz
       user:
         chosen_languages: İşaretlendiğinde, yalnızca seçilen dillerdeki tootlar genel zaman çizelgelerinde görüntülenir
+      webhook:
+        events: Gönderilecek etkinlikleri seçin
+        url: Olayların gönderileceği yer
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ tr:
         name: Etiket
         trendable: Bu etiketin gündem altında görünmesine izin ver
         usable: Tootların bu etiketi kullanmasına izin ver
+      webhook:
+        events: Etkin olaylar
+        url: Uç nokta URL’si
     'no': Hayır
     recommended: Önerilen
     required:
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 4d023b77d..9b8ecb573 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -91,6 +91,9 @@ uk:
         name: Тут ви можете лише змінювати регістр літер, щоб підвищити читабельність
       user:
         chosen_languages: У глобальних стрічках будуть відображатися дмухи тільки обраними мовами
+      webhook:
+        events: Оберіть події для надсилання
+        url: Куди надсилатимуться події
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ uk:
         name: Хештеґ
         trendable: Дозволити появу цього хештеґа у списку популярних хештеґів
         usable: Дозволити дмухам використовувати цей хештеґ
+      webhook:
+        events: Увімкнені події
+        url: URL кінцевої точки
     'no': Ні
     recommended: Рекомендовано
     required:
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index 59c7a634b..729be6634 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -91,6 +91,9 @@ vi:
         name: Bạn có thể thay đổi cách viết hoa các chữ cái để giúp nó dễ đọc hơn
       user:
         chosen_languages: Chỉ hiển thị những tút viết bằng các ngôn ngữ được chọn sau
+      webhook:
+        events: Chọn sự kiện để gửi
+        url: Nơi những sự kiện được gửi đến
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ vi:
         name: Hashtag
         trendable: Cho phép xuất hiện trong xu hướng
         usable: Cho phép dùng trong tút
+      webhook:
+        events: Những sự kiện đã bật
+        url: URL endpoint
     'no': Tắt
     recommended: Đề xuất
     required:
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 86103ec96..4cc6af416 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -91,6 +91,9 @@ zh-TW:
         name: 您只能變更大小寫,例如,以使其更易讀。
       user:
         chosen_languages: 當核取時,只有選取語言的嘟文會在公開時間軸中顯示
+      webhook:
+        events: 請選擇要傳送的事件
+        url: 事件會被傳送至何處
     labels:
       account:
         fields:
@@ -219,6 +222,9 @@ zh-TW:
         name: 主題標籤
         trendable: 允許此主題標籤在趨勢下顯示
         usable: 允許嘟文使用此主題標籤
+      webhook:
+        events: 已啟用的事件
+        url: 端點 URL
     'no': 否
     recommended: 建議
     required:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index d59e81cc8..1f64c78c7 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -38,7 +38,7 @@ sk:
       one: príspevok
       other: príspevky
     status_count_before: Ktorí napísali
-    tagline: Nasleduj kamarátov, a objavuj nových
+    tagline: Decentralizovaná sociálna sieť
     terms: Podmienky užitia
     unavailable_content: Nedostupný obsah
     unavailable_content_description:
@@ -634,7 +634,6 @@ sk:
   applications:
     created: Aplikácia bola vytvorená úspešne
     destroyed: Aplikáciu sa podarilo odstrániť
-    invalid_url: Zadaná URL adresa je nesprávna
     regenerate_token: Znovu vygeneruj prístupový token
     token_regenerated: Prístupový token bol úspešne vygenerovaný znova
     warning: Na tieto údaje dávaj ohromný pozor. Nikdy ich s nikým nezďieľaj!
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 8f54e9f74..ff3492d60 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -40,7 +40,7 @@ sl:
       other: objav
       two: stanja
     status_count_before: Ki so avtorji
-    tagline: Sledite prijateljem in odkrijte nove
+    tagline: Decentralizirano družbeno omrežje
     terms: Pogoji storitve
     unavailable_content: Moderirani strežniki
     unavailable_content_description:
@@ -886,6 +886,23 @@ sl:
       edit_preset: Uredi prednastavitev opozoril
       empty: Zaenkrat še niste določili nobenih opozorilnih prednastavitev.
       title: Upravljaj prednastavitev opozoril
+    webhooks:
+      add_new: Dodaj končno točko
+      delete: Izbriši
+      description_html: "<strong>Spletna zanka</strong> omogoča, da Mastodon potiska <strong>obvestila v resničnem času</strong> o izbranih dogodkih vašemu programu, tako da ta lahko <strong>samodejno proži odzive</strong>."
+      disable: Onemogoči
+      disabled: Onemogočeno
+      edit: Uredi končno točko
+      empty: Zaenkrat še nimate prilagojenih končnih točk spletnih zank.
+      enable: Omogoči
+      enabled: Dejaven
+      events: Dogodki
+      new: Nova spletna zanka
+      rotate_secret: Zasukaj skrivnost
+      secret: Skrivnost podpisovanja
+      status: Stanje
+      title: Spletne zanke
+      webhook: Spletna zanka
   admin_mailer:
     new_appeal:
       actions:
@@ -950,7 +967,6 @@ sl:
   applications:
     created: Aplikacija je bila uspešno ustvarjena
     destroyed: Aplikacija je bila uspešno izbrisana
-    invalid_url: Navedeni URL je neveljaven
     regenerate_token: Obnovite dostopni žeton
     token_regenerated: Dostopni žeton je bil uspešno regeneriran
     warning: Bodite zelo previdni s temi podatki. Nikoli jih ne delite z nikomer!
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index 8974b9c84..0e4d9871e 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -38,7 +38,7 @@ sq:
       one: mesazh
       other: mesazhe
     status_count_before: Që kanë krijuar
-    tagline: Ndiqni shokë dhe zbuloni të rinj
+    tagline: Rrjet shoqëror i decentralizuar
     terms: Kushte shërbimi
     unavailable_content: Shërbyes të moderuar
     unavailable_content_description:
@@ -200,7 +200,7 @@ sq:
         only_password: Vetëm fjalëkalim
         password_and_2fa: Fjalëkalim dhe 2FA
       sensitive: Rezervat
-      sensitized: iu vu shenjë si rezervat
+      sensitized: Iu vu shenjë si rezervat
       shared_inbox_url: URL kutie të përbashkët mesazhesh
       show:
         created_reports: Ka bërë raportime
@@ -428,6 +428,7 @@ sq:
       destroyed_msg: Bllokimi i përkatësisë u hoq
       domain: Përkatësi
       edit: Përpunoni bllokim përkatësie
+      existing_domain_block: Keni vendosur tashmë kufizime më të rrepta mbi %{name}.
       existing_domain_block_html: Keni vendosur tashmë kufizime më të rrepta mbi %{name}, lypset ta <a href="%{unblock_url}">zhbllokoni</a> së pari.
       new:
         create: Krijoni bllokim
@@ -516,6 +517,7 @@ sq:
       delivery:
         all: Krejt
         clear: Spastro gabime dërgimi
+        failing: Dështim
         restart: Rinis dërgimin
         stop: Ndale dërgimin
         unavailable: Jo i passhëm
@@ -839,12 +841,32 @@ sq:
           one: Përdorur nga një person gjatë javës së kaluar
           other: Përdorur nga %{count} vetë gjatë javës së kaluar
       title: Në modë
+      trending: Në modë
     warning_presets:
       add_new: Shtoni të ri
       delete: Fshije
       edit_preset: Përpunoni sinjalizim të paracaktuar
       empty: S’keni përcaktuar ende sinjalizime të gatshme.
       title: Administroni sinjalizime të paracaktuara
+    webhooks:
+      add_new: Shtoni pikëmbarim
+      delete: Fshije
+      description_html: Një <strong>webhook</strong> i bën të mundur Mastodon-it t’i dërgojë aplikacioni tuaj <strong>njoftime aty për aty</strong> rreth aktesh që keni zgjedhur, që kështu aplikacioni juaj të mund <strong>të prodhojë automatikisht reagime</strong>.
+      disable: Çaktivizoje
+      disabled: Të çaktivizuar
+      edit: Përpunoni pikëmbarim
+      empty: S’keni ende ndonjë pikëmbarim webhook të formësuar.
+      enable: Aktivizoje
+      enabled: Aktiv
+      enabled_events:
+        one: 1 akt i aktivizuar
+        other: "%{count}s akte të aktivizuar"
+      events: Akte
+      new: "<em>Webhook</em> i ri"
+      rotate_secret: Ciklo të fshehtën
+      secret: E fshehtë nënshkrimesh
+      status: Gjendje
+      title: Webhook-ë
   admin_mailer:
     new_appeal:
       actions:
@@ -906,7 +928,6 @@ sq:
   applications:
     created: Aplikimi u krijua me sukses
     destroyed: Aplikimi u fshi me sukses
-    invalid_url: URL-ja e dhënë është e pavlefshme
     regenerate_token: Riprodho token hyrjesh
     token_regenerated: Token-i i hyrjeve u riprodhua me sukses
     warning: Bëni shumë kujdes me ato të dhëna. Mos ia jepni kurrë njeriu!
@@ -1510,9 +1531,93 @@ sq:
     pinned: Mesazh i fiksuar
     reblogged: të përforcuara
     sensitive_content: Lëndë rezervat
+  strikes:
+    errors:
+      too_late: Është shumë vonë për apelim të këtij paralajmërimi
   tags:
     does_not_match_previous_name: s’përputhet me emrin e mëparshëm
   terms:
+    body_html: |
+      <h2>Rregulla Privatësie</h2>
+      <h3 id="collect">Ç’informacion mbledhim?</h3>
+
+      <ul>
+        <li><em>Hollësi elementare llogarish</em>: Nëse regjistroheni në këtë shërbyes, mund t’ju kërkohet të jepni një emër përdoruesi, një adresë email dhe një fjalëkalim. Mund të jepni edhe hollësi shtesë profili, bie fjala, një emër për në ekran dhe jetëshkrim, si dhe të ngarkoni një foto profili dhe një figurë kryesh. Emri i përdoruesit, emri në ekran, jetëshkrimi, fotoja e profilit dhe figura e kryes janë përherë të dukshme publikisht.</li>
+        <li><em>Postime, ndjekje dhe të tjera hollësi publike</em>: Lista e personave që ndiqni tregohet publikisht, po kjo vlen edhe për ndjekësit tuaj. Kur parashtroni një mesazh, depozitohen gjithashtu data dhe koha, si dhe aplikacioni prej nga parashtruar mesazhin. Mesazhet mund të përmbajnë bashkëngjitje media, bie fjala, foto dhe video. Postimet publike dhe jo të tilla janë të passhme publikisht. Kur te profili juaj përfshini një postim, edhe ky është informacion i passhëm publikisht. Postimet tuaja u dërgohen ndjekësve tuaj, në disa raste kjo do të thotë se dërgohen te shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Kur fshini postime, kjo ka gjasa t’u dërgohet ndjekësve tuaj. Veprimi i riblogimit, ose vënia shenjë si i parapëlqyer një postimi tjetër është përherë gjë publike.</li>
+        <li><em>Postime të drejtpërdrejta dhe vetëm për ndjekës</em>: Krejt postimet depozitohen dhe përpunohen te shërbyesi. Postimet vetëm për ndjekës u dërgohen ndjekësve tuaj dhe përdoruesve që përmenden në ta, kurse postimet e drejtpërdrejta u dërgohen vetëm përdoruesve të përmendur në to. Në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe kopje të tyre depozitohen atje. Përpiqemi në mirëbesim të kufizojmë hyrjen në këto postime të vetëm personave të autorizuar, por shërbyes të tjerë mund të mos bëjnë kështu. Ndaj është e rëndësishme të shqyrtohen shërbyesit të cilëve u përkasin ndjekësit tuaj. Që nga rregullimet mund të aktivizoni/çaktivizoni një mundësi për miratim dhe hedhje poshtë dorazi të ndjekësve të rinj. <em>Ju lutemi, kini parasysh se operatorët e shërbyesve dhe cilido shërbyes marrës mund t’i shohë këto mesazhe</em>, si dhe se marrësit mund të bëjnë foto ekrani, kopjojnë, ose rindajnë me të tjerët ato mesazhe. <em>Mos ndani me të tjerë gjëra me spec përmes Mastodon-it.</em></li>
+        <li><em>IP-ra dhe të tjera tejtëdhëna</em>: Kur bëni hyrjen në llogari, regjistrojmë adresën IP prej nga hyni, si dhe emrin e aplikacionit që përdorni për shfletim. Krejt sesionet me hyrje mund t’i shqyrtoni dhe shfuqizoni që nga rregullimet. Adresa e fundit IP e përdorur depozitohet për deri 12 muaj. Mund të mbajmë gjithashtu regjistra shërbyesi që përfshijnë adresën IP të çdo kërkese ndaj shërbyesit tonë.</li>
+      </ul>
+
+      <hr class="spacer" />
+
+      <h3 id="use">Për se e përdorim informacionin tuaj?</h3>
+
+      <p>Çfarëdo hollësi që mbledhim prej jush mund të përdoret në rrugët vijuese:</p>
+
+      <ul>
+        <li>Për të dhënë funksionet bazë të Mastodon-it. Me lëndën e personave të tjerë mund të ndërveproni, si dhe të postoni lëndën tuaj, vetëm kur jeni i futur në llogarinë tuaj. Për shembull, mund të ndiqni persona të tjerë për të parë postimet e tyre në rrjedhën tuaj kohore të personalizuar.</li>
+        <li>Për të ndihmuar në moderimin e bashkësisë, për shembull, krahasimi i adresës tuaj IP me të tjera të ditura, për të pikasur shmangie dëbimesh, apo cenime të tjera.</li>
+        <li>Adresa email që jepni mund të përdoret për t’ju dërguar informacion, njoftime mbi persona të tjerë që ndërveprojnë me lëndën tuaj, ose që ju dërgojnë mesazhe, si dhe për t’iu përgjigjur kërkesave dhe/ose çështjeve apo pyetjeve të tjera.</li>
+      </ul>
+
+      <hr class="spacer" />
+
+      <h3 id="protect">Si e mbrojmë informacionin tuaj?</h3>
+
+      <p>Sendërtojmë një larmi masash sigurie për të ruajtur parrezikshmërinë e informacionit tuaj personal, kur jepni, parashtroni ose përdorni informacionin tuaj personal. Mes të tjerash, sesioni i shfletuesit tuaj, si dhe trafiku mes aplikacioneve tuaja dhe API-t sigurohen me SSL dhe fjalëkalimi juaj fshehtëzohet me një algoritëm të fuqishëm njëkahësh. Për të siguruar më tej hyrjen në llogarinë tuaj, mund të aktivizoni mirëfilltësim dufaktorësh.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="data-retention">Cili është rregulli ynë për mbajtje të dhënash?</h3>
+
+      <p>Do të përpiqemi në mirëbesim:</p>
+
+      <ul>
+        <li>Të mbajmë regjistra shërbyesi që përmbajnë adresën IP të krejt kërkesave të bëra këtij shërbyesi, ashtu siç mbahen këta regjistra, për jo më shumë se 90 ditë.</li>
+        <li>Të mbajmë për jo më shumë se 12 muaj adresat IP përshoqëruar përdoruesve të regjistruar.</li>
+      </ul>
+
+      <p>Mund të kërkoni dhe shkarkoni një arkiv të lëndës tuaj, përfshi postimet tuaja, bashkëngjitje media, foto profili dhe figure kryesh.</p>
+
+      <p>Mund të fshini kurdo në mënyrë të pakthyeshme llogarinë tuaj.</p>
+
+      <hr class="spacer"/>
+
+      <h3 id="cookies">A përdorim <em>cookies</em>?</h3>
+
+      <p>Po. Cookie-t janë kartela të vockla që një sajt ose furnizuesi i shërbimit përkatës shpërngul në diskun e kompjuterit tuaj përmes shfletuesit tuaj (nëse e lejoni). Këto <em>cookies</em> i bëjnë të mundur sajtit të njohë shfletuesin tuaj dhe, nëse keni regjistruar një llogari, t’ia përshoqërojë atë llogarisë që keni regjistruar.</p>
+
+      <p>Cookie-t i përdorim për të kuptuar dhe ruajtur parapëlqimet tuaja për vizita të ardhshme.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="disclose">A u japim palëve të jashtme ndonjë informacion?</h3>
+
+      <p>Nuk u shesim, shkëmbejmë, apo shpërngulim informacion tuajin personalisht të identifikueshëm palëve të jashtme. Këtu nuk përfshin palë të treta të besuara që na ndihmojnë në funksionimin e sajtit tonë, në mbajtjen në këmbë të biznesit tonë, ose për t’ju shërbyer juve, për sa kohë që këto palë pajtohen me mbajtjen rezervat të këtij informacioni. Mundet edhe të japim informacion tuajin, kur besojmë se dhënia është e duhur për të qenë në pajtim me ligjet, për të zbatuar rregullat tonë mbi sajtin, ose për të mbrojtur të drejtat, pronën apo sigurinë tonë apo të të tjerëve.</p>
+
+      <p>Lënda juaj publike mund të shkarkohet nga shërbyes të tjerë në rrjet. Postim tuaja publike, si dhe ato vetëm për ndjekësit, u dërgohen shërbyesve ku gjenden ndjekësit tuaj, ndërsa mesazhet e drejtpërdrejtë u dërgohen shërbyesve të marrësve, në rastin kur këta ndjekës apo marrës gjenden në një tjetër shërbyes nga ky.</p>
+
+      <p>Kur autorizoni një aplikacion të përdorë llogarinë tuaj, në varësi të fushëveprimit të lejeve që miratoni, ky mund të hyjë në hollësitë e profilit tuaj publik, listën e atyre që ndiqni, ndjekësit tuaj, listat tuaja, krejt postimet tuaja dhe të parapëlqyerit tuaj. Aplikaconet s’mund të njohin kurrë adresën tuaj email dhe fjalëkalimin tuaj.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="children">Përdorim sajti nga fëmijë</h3>
+
+      <p>Nëse ky shërbyes gjendet në BE ose ZEE: Sajti, produktet dhe shërbimet tona u adresohen të tëra personave që janë të paktën 16 vjeç. Nëse jeni nën moshën 16 vjeç, sipas domosdoshmërive të GDPR-së (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">Rregullorja e Përgjithshme e Mbrojtjes së të Dhënave</a>) mos e përdorni këtë sajt.</p>
+
+      <p>Nëse ky shërbyes gjendet në ShBA: Sajti, produktet dhe shërbimet tona u adresohen të tëra personave që janë të paktën 13 vjeç. Nëse jeni nën moshën 13 vjeç, sipas domosdoshmërive të COPPA-s (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Ligji i Mbrojtjes së Privatësisë Internetore të Fëmijëve</a>) mos e përdorni këtë sajt.</p>
+
+      <p>kërkesat ligjore mund të jenë të tjera, nëse ky shërbyes gjendet nën një juridiksion tjetër.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="changes">Ndryshime te Rregullat tona të Privatësisë</h3>
+
+      <p>Nëse vendosim të ndryshojmë rregullat tona të privatësisë, ato ndryshime do t’i postojmë te kjo faqe.</p>
+
+      <p>Ky dokument licencohet sipas CC-BY-SA. Qe përditësuar së fundi më 26 maj 2022.</p>
+
+      <p>Përshtatur fillimisht prej <a href="https://github.com/discourse/discourse">rregulave të privatësisë së Discourse-it</a>.</p>
     title: Kushte Shërbimi dhe Rregulla Privatësie te %{instance}
   themes:
     contrast: Mastodon (Me shumë kontrast)
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 321fc6398..cfea20c55 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -220,7 +220,6 @@ sr-Latn:
   applications:
     created: Aplikacija uspešno napravljena
     destroyed: Aplikacija uspešno obrisana
-    invalid_url: Data adresa nije ispravna
     regenerate_token: Rekreiraj pristupni token
     token_regenerated: Pristupni token uspešno rekreiran
     warning: Oprezno sa ovim podacima. Nikad je ne delite ni sa kim!
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 94d8c43cf..445f8f326 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -368,7 +368,6 @@ sr:
   applications:
     created: Апликација успешно направљена
     destroyed: Апликација успешно обрисана
-    invalid_url: Дата адреса није исправна
     regenerate_token: Рекреирај приступни токен
     token_regenerated: Приступни токен успешно рекреиран
     warning: Опрезно са овим подацима. Никад је не делите ни са ким!
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 715358d5e..a84ae6cfe 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -36,7 +36,6 @@ sv:
       one: status
       other: statusar
     status_count_before: Som skapat
-    tagline: Följ vänner och upptäck nya
     terms: Användarvillkor
     unavailable_content: Otillgängligt innehåll
     unavailable_content_description:
@@ -668,7 +667,6 @@ sv:
   applications:
     created: Ansökan är framgångsrikt skapad
     destroyed: Ansökan är framgångsrikt borttagen
-    invalid_url: Den angivna webbadressen är ogiltig
     regenerate_token: Regenerera access token
     token_regenerated: Access token lyckades regenereras
     warning: Var mycket försiktig med denna data. Dela aldrig den med någon!
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index e3b61a487..3016250cc 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -28,7 +28,6 @@ ta:
       one: பதிவு
       other: பதிவுகள்
     status_count_before: எழுதிய
-    tagline: நண்பர்களைப் பின்தொடரவும் மற்றும் புதியவர்களைக் கண்டுபிடிக்கவும்
     terms: சேவை விதிமுறைகள்
     unavailable_content: விசயங்கள் இல்லை
     unavailable_content_description:
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 9fd23f5b3..c5f70753d 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -34,7 +34,6 @@ th:
     status_count_after:
       other: โพสต์
     status_count_before: ผู้เผยแพร่
-    tagline: ติดตามเพื่อน ๆ และค้นพบเพื่อนใหม่ ๆ
     terms: เงื่อนไขการให้บริการ
     unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม
     unavailable_content_description:
@@ -842,7 +841,6 @@ th:
   applications:
     created: สร้างแอปพลิเคชันสำเร็จ
     destroyed: ลบแอปพลิเคชันสำเร็จ
-    invalid_url: URL ที่ระบุไม่ถูกต้อง
     regenerate_token: สร้างโทเคนการเข้าถึงใหม่
     token_regenerated: สร้างโทเคนการเข้าถึงใหม่สำเร็จ
     warning: ระวังเป็นอย่างสูงกับข้อมูลนี้ อย่าแบ่งปันข้อมูลกับใครก็ตาม!
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 23fe6508b..9159acba3 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -38,7 +38,7 @@ tr:
       one: durum yazıldı
       other: durum yazıldı
     status_count_before: Şu ana kadar
-    tagline: Arkadaşlarını takip et ve yenilerini keşfet
+    tagline: Merkezi olmayan sosyal ağ
     terms: Kullanım şartları
     unavailable_content: Denetlenen sunucular
     unavailable_content_description:
@@ -428,6 +428,7 @@ tr:
       destroyed_msg: Domain bloğu silindi
       domain: Alan adı
       edit: Etki alanı bloğunu düzenle
+      existing_domain_block: Zaten %{name} için daha katı sınırlamalar dayatmıştınız.
       existing_domain_block_html: '%{name}''e zaten daha katı sınırlar uyguladınız, önce <a href="%{unblock_url}">engellemesini kaldırmanız</a> gerekiyor.'
       new:
         create: Yeni blok oluştur
@@ -851,6 +852,23 @@ tr:
       edit_preset: Uyarı ön-ayarını düzenle
       empty: Henüz önceden ayarlanmış bir uyarı tanımlanmadı.
       title: Uyarı ön-ayarlarını yönet
+    webhooks:
+      add_new: Uç nokta ekle
+      delete: Sil
+      description_html: Bir <strong>web kancası</strong> Mastodon'un, uygulamanızda seçili olaylar hakkında <strong>gerçek zamanlı bildirimler</strong> göndermesini sağlar, böylece uygulamanız <strong>otomatik olarak tepkileri tetikleyebilir</strong>.
+      disable: Devre dışı bırak
+      disabled: Devre dışı
+      edit: Uç nokta düzenle
+      empty: Henüz yapılandırılmış bir web kancanız yok.
+      enable: Etkinleştir
+      enabled: Etkin
+      events: Olaylar
+      new: Yeni web kancası
+      rotate_secret: Gizi döndür
+      secret: Gizi imzalama
+      status: Durum
+      title: Web kancaları
+      webhook: Web kancası
   admin_mailer:
     new_appeal:
       actions:
@@ -915,7 +933,6 @@ tr:
   applications:
     created: Uygulama başarıyla oluşturuldu
     destroyed: Uygulama başarıyla silindi
-    invalid_url: Verilen URL geçerli değil
     regenerate_token: Erişim belirtecini yeniden oluştur
     token_regenerated: Erişim belirteci başarıyla oluşturuldu
     warning: Bu verilere çok dikkat edin. Asla kimseyle paylaşmayın!
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index aa210c980..53a4b3567 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -38,7 +38,7 @@ uk:
       one: статус
       other: статуси
     status_count_before: Опубліковано
-    tagline: Слідкуйте за друзями та знаходьте нових
+    tagline: Децентралізована соціальна мережа
     terms: Правила використання
     unavailable_content: Недоступний вміст
     unavailable_content_description:
@@ -864,6 +864,28 @@ uk:
       edit_preset: Редагувати шаблон попередження
       empty: Ви ще не визначили жодних попереджень.
       title: Управління шаблонами попереджень
+    webhooks:
+      add_new: Додати кінцеву точку
+      delete: Видалити
+      description_html: "<strong>Вебхук</strong> дає змогу Mastodon надсилати повідомлення про обрані події до вашого застосунку <strong>в реальному часі</strong>, щоб застосунок міг <strong>автоматично реагувати на реакції</strong>."
+      disable: Вимкнути
+      disabled: Вимкнено
+      edit: Редагувати кінцеву точку
+      empty: Ще не налаштовано жодних кінцевих точок вебхука.
+      enable: Увімкнути
+      enabled: Активні
+      enabled_events:
+        few: "%{count} увімкнені події"
+        many: "%{count} увімкнених подій"
+        one: 1 увімкнена подія
+        other: "%{count} увімкнені події"
+      events: Події
+      new: Новий вебхук
+      rotate_secret: Обернути секрет
+      secret: Секрет підписування
+      status: Стан
+      title: Вебхуки
+      webhook: Вебхук
   admin_mailer:
     new_appeal:
       actions:
@@ -923,7 +945,6 @@ uk:
   applications:
     created: Застосунок успішно створений
     destroyed: Застосунок успішно видалений
-    invalid_url: Введена URL неправильна
     regenerate_token: Перегенерувати токен доступу
     token_regenerated: Токен доступу успішне перегенеровано
     warning: Будьте дуже обережні з цими даними. Ніколи не діліться ними ні з ким!
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 7f0022191..72d06ab55 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -35,7 +35,7 @@ vi:
     status_count_after:
       other: tút
     status_count_before: Nơi lưu giữ
-    tagline: Theo dõi bạn bè và khám phá thế giới
+    tagline: Mạng xã hội liên hợp
     terms: Điều khoản dịch vụ
     unavailable_content: Giới hạn chung
     unavailable_content_description:
@@ -417,6 +417,7 @@ vi:
       destroyed_msg: Đã thôi chặn máy chủ
       domain: Máy chủ
       edit: Chỉnh sửa máy chủ bị chặn
+      existing_domain_block: Bạn đã hạn chế %{name} trước đó.
       existing_domain_block_html: Bạn đã áp đặt các giới hạn chặt chẽ hơn cho %{name}, trước tiên bạn cần <a href="%{unblock_url}">bỏ chặn nó</a>.
       new:
         create: Tạo chặn
@@ -832,6 +833,25 @@ vi:
       edit_preset: Sửa mẫu có sẵn
       empty: Bạn chưa thêm mẫu nhắc nhở nào cả.
       title: Quản lý mẫu nhắc nhở
+    webhooks:
+      add_new: Thêm endpoint
+      delete: Xóa bỏ
+      description_html: "<strong>Webhook</strong> cho phép Mastodon gửi nhận <strong>thông báo đẩy thời gian thật</strong> về những sự kiện cho ứng dụng thứ ba của bạn, cho ứng dụng của bạn có thể <strong>tự động kích hoạt reaction</strong>."
+      disable: Tắt
+      disabled: Đã tắt
+      edit: Sửa endpoint
+      empty: Bạn chưa thiết lập webhook endpoint nào.
+      enable: Bật
+      enabled: Hoạt động
+      enabled_events:
+        other: "%{count} sự kiện đã bật"
+      events: Sự kiện
+      new: Webhook mới
+      rotate_secret: Xoay bí mật
+      secret: Token đăng nhập
+      status: Trạng thái
+      title: Webhook
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -896,7 +916,6 @@ vi:
   applications:
     created: Đơn đăng ký được tạo thành công
     destroyed: Đã xóa đơn đăng ký
-    invalid_url: Cung cấp URL không hợp lệ
     regenerate_token: Tạo lại mã truy cập
     token_regenerated: Mã truy cập được tạo lại thành công
     warning: Hãy rất cẩn thận với dữ liệu này. Không bao giờ chia sẻ nó với bất cứ ai!
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 783733a0a..475d03a2a 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -19,7 +19,7 @@ zh-CN:
     continue_to_web: 继续前往网页应用
     discover_users: 发现用户
     documentation: 文档
-    federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容Mastodon的服务器上的人。
+    federation_hint_html: 在 %{instance} 上拥有账号后,你可以关注任何兼容 Mastodon 服务器上的人。
     get_apps: 尝试移动应用
     hosted_on: 运行在 %{domain} 上的 Mastodon 站点
     instance_actor_flash: '这个账号是个虚拟账号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。
@@ -37,7 +37,7 @@ zh-CN:
     status_count_after:
       other: 条嘟文
     status_count_before: 他们共嘟出了
-    tagline: 关注并发现新朋友
+    tagline: 分布式社交网络
     terms: 使用条款
     unavailable_content: 被限制的服务器
     unavailable_content_description:
@@ -419,6 +419,7 @@ zh-CN:
       destroyed_msg: 域名屏蔽已撤销
       domain: 域名
       edit: 编辑域名屏蔽
+      existing_domain_block: 您已经对 %{name} 设置了更严格的限制。
       existing_domain_block_html: 你已经对 %{name} 施加了更严格的限制,你需要先 <a href="%{unblock_url}">解封</a>。
       new:
         create: 添加屏蔽
@@ -434,7 +435,7 @@ zh-CN:
       private_comment: 私密评论
       private_comment_hint: 给这一域名限制添加备注,供监察员内部使用
       public_comment: 公开评论
-      public_comment_hint: 给这一域名限制添加公开的评论,如果你推广你的域名限制列表的话,这些评论就会显示出来。
+      public_comment_hint: 给这一域名限制添加公开的评论,在公告域名限制列表开启时这些评论将会公开可见。
       reject_media: 拒绝接收媒体文件
       reject_media_hint: 删除本站已缓存的媒体文件,并且不再接收来自该域名的任何媒体文件。此选项不影响封禁
       reject_reports: 拒绝接收举报
@@ -834,6 +835,10 @@ zh-CN:
       edit_preset: 编辑预置警告
       empty: 你尚未定义任何警告预设。
       title: 管理预设警告
+    webhooks:
+      delete: 删除
+      disable: 禁用
+      enable: 启用
   admin_mailer:
     new_appeal:
       actions:
@@ -898,7 +903,6 @@ zh-CN:
   applications:
     created: 应用创建成功
     destroyed: 应用删除成功
-    invalid_url: URL 无效
     regenerate_token: 重置访问令牌
     token_regenerated: 访问令牌重置成功
     warning: 一定小心,千万不要把它分享给任何人!
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index bbf5b4dad..5b6e0b83a 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -34,7 +34,6 @@ zh-HK:
     status_count_after:
       other: 篇文章
     status_count_before: 共發佈了
-    tagline: 關注朋友並探索新朋友
     terms: 使用條款
     unavailable_content: 受限制的伺服器
     unavailable_content_description:
@@ -679,7 +678,6 @@ zh-HK:
   applications:
     created: 已建立應用程式
     destroyed: 已刪除應用程式
-    invalid_url: 所提供的網址不正確
     regenerate_token: 重設 token
     token_regenerated: 已重設 token
     warning: 警告,不要把它分享給任何人!
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 032a5c951..7d2bb80cb 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -35,7 +35,7 @@ zh-TW:
     status_count_after:
       other: 條嘟文
     status_count_before: 他們共嘟出了
-    tagline: 關注朋友並探索新朋友
+    tagline: 去中心化社群網路
     terms: 使用條款
     unavailable_content: 無法取得的內容
     unavailable_content_description:
@@ -835,6 +835,25 @@ zh-TW:
       edit_preset: 編輯預設警告
       empty: 您未曾定義任何預設警告
       title: 管理預設警告
+    webhooks:
+      add_new: 新增端點
+      delete: 刪除
+      description_html: "<strong>Webhook</strong> 讓 Mastodon 可以將關於選定的事件的<strong>即時通知</strong>推送到您自己的應用程式,如此您的應用程式就可以<strong>自動觸發反應</strong>。"
+      disable: 停用
+      disabled: 已停用
+      edit: 編輯端點
+      empty: 您沒有任何設定好的 webhook 端點。
+      enable: 啟用
+      enabled: 生效
+      enabled_events:
+        other: "%{count} 個已啟用的端點"
+      events: 事件
+      new: 新增 Webhook
+      rotate_secret: 更換密鑰
+      secret: 簽署密鑰
+      status: 狀態
+      title: Webhooks
+      webhook: Webhook
   admin_mailer:
     new_appeal:
       actions:
@@ -899,7 +918,6 @@ zh-TW:
   applications:
     created: 已建立應用
     destroyed: 已刪除應用
-    invalid_url: 網址不正確
     regenerate_token: 重設 token
     token_regenerated: 已重設 token
     warning: 警告,不要把它分享給任何人!
diff --git a/docker-compose.yml b/docker-compose.yml
index 5c2c0c5df..d86cb55d2 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -25,13 +25,20 @@ services:
 
   # es:
   #   restart: always
-  #   image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
+  #   image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4
   #   environment:
-  #     - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+  #     - "ES_JAVA_OPTS=-Xms512m -Xmx512m -Des.enforce.bootstrap.checks=true"
+  #     - "xpack.license.self_generated.type=basic"
+  #     - "xpack.security.enabled=false"
+  #     - "xpack.watcher.enabled=false"
+  #     - "xpack.graph.enabled=false"
+  #     - "xpack.ml.enabled=false"
+  #     - "bootstrap.memory_lock=true"
   #     - "cluster.name=es-mastodon"
   #     - "discovery.type=single-node"
-  #     - "bootstrap.memory_lock=true"
+  #     - "thread_pool.write.queue_size=1000"
   #   networks:
+  #      - external_network
   #      - internal_network
   #   healthcheck:
   #      test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
@@ -41,6 +48,11 @@ services:
   #     memlock:
   #       soft: -1
   #       hard: -1
+  #     nofile:
+  #       soft: 65536
+  #       hard: 65536
+  #   ports:
+  #     - '127.0.0.1:9200:9200'
 
   web:
     build: .
diff --git a/lib/assets/wordmark.dark.png b/lib/assets/wordmark.dark.png
index f3d714d3a..defe50178 100644
--- a/lib/assets/wordmark.dark.png
+++ b/lib/assets/wordmark.dark.png
Binary files differdiff --git a/lib/assets/wordmark.light.png b/lib/assets/wordmark.light.png
index 50bbb6bd3..d4485c0fb 100644
--- a/lib/assets/wordmark.light.png
+++ b/lib/assets/wordmark.light.png
Binary files differdiff --git a/lib/tasks/branding.rake b/lib/tasks/branding.rake
index d513465ed..2eec7c9e1 100644
--- a/lib/tasks/branding.rake
+++ b/lib/tasks/branding.rake
@@ -9,28 +9,28 @@ namespace :branding do
 
   desc 'Generate PNG icons and logos for e-mail templates'
   task generate_mailer_assets: :environment do
-    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :w -h :h :input -o :output')
+    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-h :size --keep-aspect-ratio :input -o :output')
     output_dest  = Rails.root.join('app', 'javascript', 'images', 'mailer')
 
     # Displayed size is 64px, at 3x it's 192px
     Dir[Rails.root.join('app', 'javascript', 'images', 'icons', '*.svg')].each do |path|
-      rsvg_convert.run(input: path, w: 192, h: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png"))
+      rsvg_convert.run(input: path, size: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png"))
     end
 
     # Displayed size is 34px, at 3x it's 102px
-    rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.png'))
+    rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), size: 102, output: output_dest.join('wordmark.png'))
 
     # Displayed size is 24px, at 3x it's 72px
-    rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg'), w: (72 * (79.0 / 75)).ceil, h: 72, output: output_dest.join('logo.png'))
+    rsvg_convert.run(input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg'), size: 72, output: output_dest.join('logo.png'))
   end
 
   desc 'Generate light/dark logotypes for GitHub'
   task generate_github_assets: :environment do
-    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :w -h :h :input -o :output')
+    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -h :size --keep-aspect-ratio :input -o :output')
     output_dest  = Rails.root.join('lib', 'assets')
 
-    rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.dark.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.dark.png'))
-    rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.light.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), w: (102 * (261.0 / 66)).ceil, h: 102, output: output_dest.join('wordmark.light.png'))
+    rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.dark.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), size: 102, output: output_dest.join('wordmark.dark.png'))
+    rsvg_convert.run(stylesheet: Rails.root.join('lib', 'assets', 'wordmark.light.css'), input: Rails.root.join('app', 'javascript', 'images', 'logo-symbol-wordmark.svg'), size: 102, output: output_dest.join('wordmark.light.png'))
   end
 
   desc 'Generate favicons and app icons from SVG source files'
@@ -39,7 +39,7 @@ namespace :branding do
     app_icon_source = Rails.root.join('app', 'javascript', 'images', 'app-icon.svg')
     output_dest     = Rails.root.join('app', 'javascript', 'icons')
 
-    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :size -h :size :input -o :output')
+    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '-w :size -h :size --keep-aspect-ratio :input -o :output')
     convert = Terrapin::CommandLine.new('convert', ':input :output')
 
     favicon_sizes      = [16, 32, 48]
@@ -67,12 +67,11 @@ namespace :branding do
 
   desc 'Generate badge icon from SVG source files'
   task generate_app_badge: :environment do
-    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :w -h :h :input -o :output')
+    rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :size -h :size --keep-aspect-ratio :input -o :output')
     badge_source = Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg')
-    source_ratio = 79.0 / 75
     output_dest  = Rails.root.join('public')
     stylesheet   = Rails.root.join('lib', 'assets', 'wordmark.light.css')
 
-    rsvg_convert.run(stylesheet: stylesheet, input: badge_source, w: (192 * source_ratio).ceil, h: 192, output: output_dest.join('badge.png'))
+    rsvg_convert.run(stylesheet: stylesheet, input: badge_source, size: 192, output: output_dest.join('badge.png'))
   end
 end
diff --git a/package.json b/package.json
index 458c3ef6c..ffd8b86d8 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "@mastodon/mastodon",
   "license": "AGPL-3.0-or-later",
   "engines": {
-    "node": ">=12"
+    "node": ">=14"
   },
   "scripts": {
     "postversion": "git push --tags",
@@ -24,10 +24,10 @@
   },
   "private": true,
   "dependencies": {
-    "@babel/core": "^7.18.2",
+    "@babel/core": "^7.18.5",
     "@babel/plugin-proposal-decorators": "^7.18.2",
     "@babel/plugin-transform-react-inline-elements": "^7.16.7",
-    "@babel/plugin-transform-runtime": "^7.18.2",
+    "@babel/plugin-transform-runtime": "^7.18.5",
     "@babel/preset-env": "^7.18.2",
     "@babel/preset-react": "^7.17.12",
     "@babel/runtime": "^7.18.3",
@@ -67,7 +67,7 @@
     "http-link-header": "^1.0.4",
     "immutable": "^4.1.0",
     "imports-loader": "^1.2.0",
-    "intersection-observer": "^0.12.0",
+    "intersection-observer": "^0.12.2",
     "intl": "^1.2.5",
     "intl-messageformat": "^2.2.0",
     "intl-relativeformat": "^6.4.3",
@@ -117,9 +117,9 @@
     "regenerator-runtime": "^0.13.9",
     "rellax": "^1.12.1",
     "requestidlecallback": "^0.3.0",
-    "reselect": "^4.1.5",
+    "reselect": "^4.1.6",
     "rimraf": "^3.0.2",
-    "sass": "^1.52.1",
+    "sass": "^1.52.3",
     "sass-loader": "^10.2.0",
     "stacktrace-js": "^2.0.2",
     "stringz": "^2.1.0",
@@ -135,27 +135,27 @@
     "webpack-bundle-analyzer": "^4.5.0",
     "webpack-cli": "^3.3.12",
     "webpack-merge": "^5.8.0",
-    "wicg-inert": "^3.1.1",
-    "ws": "^8.7.0"
+    "wicg-inert": "^3.1.2",
+    "ws": "^8.8.0"
   },
   "devDependencies": {
     "@babel/eslint-parser": "^7.18.2",
     "@testing-library/jest-dom": "^5.16.4",
     "@testing-library/react": "^12.1.5",
-    "babel-jest": "^28.1.0",
+    "babel-jest": "^28.1.1",
     "eslint": "^7.32.0",
     "eslint-plugin-import": "~2.26.0",
     "eslint-plugin-jsx-a11y": "~6.5.1",
     "eslint-plugin-promise": "~6.0.0",
     "eslint-plugin-react": "~7.30.0",
-    "jest": "^28.1.0",
-    "jest-environment-jsdom": "^28.1.0",
+    "jest": "^28.1.1",
+    "jest-environment-jsdom": "^28.1.1",
     "postcss-scss": "^4.0.4",
-    "prettier": "^2.6.2",
+    "prettier": "^2.7.1",
     "raf": "^3.4.1",
     "react-intl-translations-manager": "^5.0.3",
     "react-test-renderer": "^16.14.0",
-    "stylelint": "^14.8.5",
+    "stylelint": "^14.9.1",
     "stylelint-config-standard-scss": "^4.0.0",
     "webpack-dev-server": "^3.11.3",
     "yargs": "^17.5.1"
diff --git a/public/badge.png b/public/badge.png
index 0449e9292..bd618c729 100644
--- a/public/badge.png
+++ b/public/badge.png
Binary files differdiff --git a/public/favicon.ico b/public/favicon.ico
index ccccbfc1c..b09a98bb9 100644
--- a/public/favicon.ico
+++ b/public/favicon.ico
Binary files differdiff --git a/yarn.lock b/yarn.lock
index 05922b482..5425d4fbd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -28,10 +28,10 @@
   resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab"
   integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==
 
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.2", "@babel/core@^7.7.2":
-  version "7.18.2"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876"
-  integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==
+"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.7.2":
+  version "7.18.5"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000"
+  integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==
   dependencies:
     "@ampproject/remapping" "^2.1.0"
     "@babel/code-frame" "^7.16.7"
@@ -39,10 +39,10 @@
     "@babel/helper-compilation-targets" "^7.18.2"
     "@babel/helper-module-transforms" "^7.18.0"
     "@babel/helpers" "^7.18.2"
-    "@babel/parser" "^7.18.0"
+    "@babel/parser" "^7.18.5"
     "@babel/template" "^7.16.7"
-    "@babel/traverse" "^7.18.2"
-    "@babel/types" "^7.18.2"
+    "@babel/traverse" "^7.18.5"
+    "@babel/types" "^7.18.4"
     convert-source-map "^1.7.0"
     debug "^4.1.0"
     gensync "^1.0.0-beta.2"
@@ -347,10 +347,10 @@
     chalk "^2.0.0"
     js-tokens "^4.0.0"
 
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0":
-  version "7.18.0"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.0.tgz#10a8d4e656bc01128d299a787aa006ce1a91e112"
-  integrity sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5":
+  version "7.18.5"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c"
+  integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==
 
 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12":
   version "7.17.12"
@@ -897,10 +897,10 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.17.12"
 
-"@babel/plugin-transform-runtime@^7.18.2":
-  version "7.18.2"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d"
-  integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==
+"@babel/plugin-transform-runtime@^7.18.5":
+  version "7.18.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743"
+  integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==
   dependencies:
     "@babel/helper-module-imports" "^7.16.7"
     "@babel/helper-plugin-utils" "^7.17.12"
@@ -1095,10 +1095,10 @@
     "@babel/parser" "^7.16.7"
     "@babel/types" "^7.16.7"
 
-"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.2":
-  version "7.18.2"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8"
-  integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==
+"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.2":
+  version "7.18.5"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd"
+  integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==
   dependencies:
     "@babel/code-frame" "^7.16.7"
     "@babel/generator" "^7.18.2"
@@ -1106,15 +1106,15 @@
     "@babel/helper-function-name" "^7.17.9"
     "@babel/helper-hoist-variables" "^7.16.7"
     "@babel/helper-split-export-declaration" "^7.16.7"
-    "@babel/parser" "^7.18.0"
-    "@babel/types" "^7.18.2"
+    "@babel/parser" "^7.18.5"
+    "@babel/types" "^7.18.4"
     debug "^4.1.0"
     globals "^11.1.0"
 
-"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
-  version "7.18.2"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.2.tgz#191abfed79ebe6f4242f643a9a5cbaa36b10b091"
-  integrity sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==
+"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+  version "7.18.4"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354"
+  integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
   dependencies:
     "@babel/helper-validator-identifier" "^7.16.7"
     to-fast-properties "^2.0.0"
@@ -1124,6 +1124,11 @@
   resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
   integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
 
+"@csstools/selector-specificity@^2.0.1":
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87"
+  integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==
+
 "@emotion/babel-plugin@^11.7.1":
   version "11.9.2"
   resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz#723b6d394c89fb2ef782229d92ba95a740576e95"
@@ -1279,28 +1284,28 @@
   resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
   integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
 
-"@jest/console@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.0.tgz#db78222c3d3b0c1db82f1b9de51094c2aaff2176"
-  integrity sha512-tscn3dlJFGay47kb4qVruQg/XWlmvU0xp3EJOjzzY+sBaI+YgwKcvAmTcyYU7xEiLLIY5HCdWRooAL8dqkFlDA==
+"@jest/console@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.1.tgz#305f8ca50b6e70413839f54c0e002b60a0f2fd7d"
+  integrity sha512-0RiUocPVFEm3WRMOStIHbRWllG6iW6E3/gUPnf4lkrVFyXIIDeCe+vlKeYyFOMhB2EPE6FLFCNADSOOQMaqvyA==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
     chalk "^4.0.0"
-    jest-message-util "^28.1.0"
-    jest-util "^28.1.0"
+    jest-message-util "^28.1.1"
+    jest-util "^28.1.1"
     slash "^3.0.0"
 
-"@jest/core@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.0.tgz#784a1e6ce5358b46fcbdcfbbd93b1b713ed4ea80"
-  integrity sha512-/2PTt0ywhjZ4NwNO4bUqD9IVJfmFVhVKGlhvSpmEfUCuxYf/3NHcKmRFI+I71lYzbTT3wMuYpETDCTHo81gC/g==
+"@jest/core@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.1.tgz#086830bec6267accf9af5ca76f794858e9f9f092"
+  integrity sha512-3pYsBoZZ42tXMdlcFeCc/0j9kOlK7MYuXs2B1QbvDgMoW1K9NJ4G/VYvIbMb26iqlkTfPHo7SC2JgjDOk/mxXw==
   dependencies:
-    "@jest/console" "^28.1.0"
-    "@jest/reporters" "^28.1.0"
-    "@jest/test-result" "^28.1.0"
-    "@jest/transform" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/console" "^28.1.1"
+    "@jest/reporters" "^28.1.1"
+    "@jest/test-result" "^28.1.1"
+    "@jest/transform" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
     ansi-escapes "^4.2.1"
     chalk "^4.0.0"
@@ -1308,80 +1313,80 @@
     exit "^0.1.2"
     graceful-fs "^4.2.9"
     jest-changed-files "^28.0.2"
-    jest-config "^28.1.0"
-    jest-haste-map "^28.1.0"
-    jest-message-util "^28.1.0"
+    jest-config "^28.1.1"
+    jest-haste-map "^28.1.1"
+    jest-message-util "^28.1.1"
     jest-regex-util "^28.0.2"
-    jest-resolve "^28.1.0"
-    jest-resolve-dependencies "^28.1.0"
-    jest-runner "^28.1.0"
-    jest-runtime "^28.1.0"
-    jest-snapshot "^28.1.0"
-    jest-util "^28.1.0"
-    jest-validate "^28.1.0"
-    jest-watcher "^28.1.0"
+    jest-resolve "^28.1.1"
+    jest-resolve-dependencies "^28.1.1"
+    jest-runner "^28.1.1"
+    jest-runtime "^28.1.1"
+    jest-snapshot "^28.1.1"
+    jest-util "^28.1.1"
+    jest-validate "^28.1.1"
+    jest-watcher "^28.1.1"
     micromatch "^4.0.4"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
     rimraf "^3.0.0"
     slash "^3.0.0"
     strip-ansi "^6.0.0"
 
-"@jest/environment@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.0.tgz#dedf7d59ec341b9292fcf459fd0ed819eb2e228a"
-  integrity sha512-S44WGSxkRngzHslhV6RoAExekfF7Qhwa6R5+IYFa81mpcj0YgdBnRSmvHe3SNwOt64yXaE5GG8Y2xM28ii5ssA==
+"@jest/environment@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.1.tgz#c4cbf85283278d768f816ebd1a258ea6f9e39d4f"
+  integrity sha512-9auVQ2GzQ7nrU+lAr8KyY838YahElTX9HVjbQPPS2XjlxQ+na18G113OoBhyBGBtD6ZnO/SrUy5WR8EzOj1/Uw==
   dependencies:
-    "@jest/fake-timers" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/fake-timers" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
-    jest-mock "^28.1.0"
+    jest-mock "^28.1.1"
 
-"@jest/expect-utils@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.0.tgz#a5cde811195515a9809b96748ae8bcc331a3538a"
-  integrity sha512-5BrG48dpC0sB80wpeIX5FU6kolDJI4K0n5BM9a5V38MGx0pyRvUBSS0u2aNTdDzmOrCjhOg8pGs6a20ivYkdmw==
+"@jest/expect-utils@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.1.tgz#d84c346025b9f6f3886d02c48a6177e2b0360587"
+  integrity sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==
   dependencies:
     jest-get-type "^28.0.2"
 
-"@jest/expect@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.0.tgz#2e5a31db692597070932366a1602b5157f0f217c"
-  integrity sha512-be9ETznPLaHOmeJqzYNIXv1ADEzENuQonIoobzThOYPuK/6GhrWNIJDVTgBLCrz3Am73PyEU2urQClZp0hLTtA==
+"@jest/expect@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.1.tgz#ea4fcc8504b45835029221c0dc357c622a761326"
+  integrity sha512-/+tQprrFoT6lfkMj4mW/mUIfAmmk/+iQPmg7mLDIFOf2lyf7EBHaS+x3RbeR0VZVMe55IvX7QRoT/2aK3AuUXg==
   dependencies:
-    expect "^28.1.0"
-    jest-snapshot "^28.1.0"
+    expect "^28.1.1"
+    jest-snapshot "^28.1.1"
 
-"@jest/fake-timers@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.0.tgz#ea77878aabd5c5d50e1fc53e76d3226101e33064"
-  integrity sha512-Xqsf/6VLeAAq78+GNPzI7FZQRf5cCHj1qgQxCjws9n8rKw8r1UYoeaALwBvyuzOkpU3c1I6emeMySPa96rxtIg==
+"@jest/fake-timers@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.1.tgz#47ce33296ab9d680c76076d51ddbe65ceb3337f1"
+  integrity sha512-BY/3+TyLs5+q87rGWrGUY5f8e8uC3LsVHS9Diz8+FV3ARXL4sNnkLlIB8dvDvRrp+LUCGM+DLqlsYubizGUjIA==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@sinonjs/fake-timers" "^9.1.1"
     "@types/node" "*"
-    jest-message-util "^28.1.0"
-    jest-mock "^28.1.0"
-    jest-util "^28.1.0"
+    jest-message-util "^28.1.1"
+    jest-mock "^28.1.1"
+    jest-util "^28.1.1"
 
-"@jest/globals@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.0.tgz#a4427d2eb11763002ff58e24de56b84ba79eb793"
-  integrity sha512-3m7sTg52OTQR6dPhsEQSxAvU+LOBbMivZBwOvKEZ+Rb+GyxVnXi9HKgOTYkx/S99T8yvh17U4tNNJPIEQmtwYw==
+"@jest/globals@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.1.tgz#c0a7977f85e26279cc090d9adcdf82b8a34c4061"
+  integrity sha512-dEgl/6v7ToB4vXItdvcltJBgny0xBE6xy6IYQrPJAJggdEinGxCDMivNv7sFzPcTITGquXD6UJwYxfJ/5ZwDSg==
   dependencies:
-    "@jest/environment" "^28.1.0"
-    "@jest/expect" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/environment" "^28.1.1"
+    "@jest/expect" "^28.1.1"
+    "@jest/types" "^28.1.1"
 
-"@jest/reporters@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.0.tgz#5183a28b9b593b6000fa9b89b031c7216b58a9a0"
-  integrity sha512-qxbFfqap/5QlSpIizH9c/bFCDKsQlM4uAKSOvZrP+nIdrjqre3FmKzpTtYyhsaVcOSNK7TTt2kjm+4BJIjysFA==
+"@jest/reporters@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.1.tgz#9389f4bb3cce4d9b586f6195f83c79cd2a1c8662"
+  integrity sha512-597Zj4D4d88sZrzM4atEGLuO7SdA/YrOv9SRXHXRNC+/FwPCWxZhBAEzhXoiJzfRwn8zes/EjS8Lo6DouGN5Gg==
   dependencies:
     "@bcoe/v8-coverage" "^0.2.3"
-    "@jest/console" "^28.1.0"
-    "@jest/test-result" "^28.1.0"
-    "@jest/transform" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/console" "^28.1.1"
+    "@jest/test-result" "^28.1.1"
+    "@jest/transform" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@jridgewell/trace-mapping" "^0.3.7"
     "@types/node" "*"
     chalk "^4.0.0"
@@ -1394,8 +1399,9 @@
     istanbul-lib-report "^3.0.0"
     istanbul-lib-source-maps "^4.0.0"
     istanbul-reports "^3.1.3"
-    jest-util "^28.1.0"
-    jest-worker "^28.1.0"
+    jest-message-util "^28.1.1"
+    jest-util "^28.1.1"
+    jest-worker "^28.1.1"
     slash "^3.0.0"
     string-length "^4.0.1"
     strip-ansi "^6.0.0"
@@ -1418,42 +1424,42 @@
     callsites "^3.0.0"
     graceful-fs "^4.2.9"
 
-"@jest/test-result@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.0.tgz#fd149dee123510dd2fcadbbf5f0020f98ad7f12c"
-  integrity sha512-sBBFIyoPzrZho3N+80P35A5oAkSKlGfsEFfXFWuPGBsW40UAjCkGakZhn4UQK4iQlW2vgCDMRDOob9FGKV8YoQ==
+"@jest/test-result@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.1.tgz#c6f18d1bbb01aa88925dd687872a75f8414b317a"
+  integrity sha512-hPmkugBktqL6rRzwWAtp1JtYT4VHwv8OQ+9lE5Gymj6dHzubI/oJHMUpPOt8NrdVWSrz9S7bHjJUmv2ggFoUNQ==
   dependencies:
-    "@jest/console" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/console" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/istanbul-lib-coverage" "^2.0.0"
     collect-v8-coverage "^1.0.0"
 
-"@jest/test-sequencer@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.0.tgz#ce7294bbe986415b9a30e218c7e705e6ebf2cdf2"
-  integrity sha512-tZCEiVWlWNTs/2iK9yi6o3AlMfbbYgV4uuZInSVdzZ7ftpHZhCMuhvk2HLYhCZzLgPFQ9MnM1YaxMnh3TILFiQ==
+"@jest/test-sequencer@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.1.tgz#f594ee2331df75000afe0d1ae3237630ecec732e"
+  integrity sha512-nuL+dNSVMcWB7OOtgb0EGH5AjO4UBCt68SLP08rwmC+iRhyuJWS9MtZ/MpipxFwKAlHFftbMsydXqWre8B0+XA==
   dependencies:
-    "@jest/test-result" "^28.1.0"
+    "@jest/test-result" "^28.1.1"
     graceful-fs "^4.2.9"
-    jest-haste-map "^28.1.0"
+    jest-haste-map "^28.1.1"
     slash "^3.0.0"
 
-"@jest/transform@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.0.tgz#224a3c9ba4cc98e2ff996c0a89a2d59db15c74ce"
-  integrity sha512-omy2xe5WxlAfqmsTjTPxw+iXRTRnf+NtX0ToG+4S0tABeb4KsKmPUHq5UBuwunHg3tJRwgEQhEp0M/8oiatLEA==
+"@jest/transform@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.1.tgz#83541f2a3f612077c8501f49cc4e205d4e4a6b27"
+  integrity sha512-PkfaTUuvjUarl1EDr5ZQcCA++oXkFCP9QFUkG0yVKVmNObjhrqDy0kbMpMebfHWm3CCDHjYNem9eUSH8suVNHQ==
   dependencies:
     "@babel/core" "^7.11.6"
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@jridgewell/trace-mapping" "^0.3.7"
     babel-plugin-istanbul "^6.1.1"
     chalk "^4.0.0"
     convert-source-map "^1.4.0"
     fast-json-stable-stringify "^2.0.0"
     graceful-fs "^4.2.9"
-    jest-haste-map "^28.1.0"
+    jest-haste-map "^28.1.1"
     jest-regex-util "^28.0.2"
-    jest-util "^28.1.0"
+    jest-util "^28.1.1"
     micromatch "^4.0.4"
     pirates "^4.0.4"
     slash "^3.0.0"
@@ -1480,10 +1486,10 @@
     "@types/yargs" "^16.0.0"
     chalk "^4.0.0"
 
-"@jest/types@^28.1.0":
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.0.tgz#508327a89976cbf9bd3e1cc74641a29fd7dfd519"
-  integrity sha512-xmEggMPr317MIOjjDoZ4ejCSr9Lpbt/u34+dvc99t7DS8YirW5rwZEhzKPC2BMUFkUhI48qs6qLUSGw5FuL0GA==
+"@jest/types@^28.1.0", "@jest/types@^28.1.1":
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b"
+  integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==
   dependencies:
     "@jest/schemas" "^28.0.2"
     "@types/istanbul-lib-coverage" "^2.0.0"
@@ -2511,15 +2517,15 @@ axobject-query@^2.2.0:
   resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
   integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
 
-babel-jest@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.0.tgz#95a67f8e2e7c0042e7b3ad3951b8af41a533b5ea"
-  integrity sha512-zNKk0yhDZ6QUwfxh9k07GII6siNGMJWVUU49gmFj5gfdqDKLqa2RArXOF2CODp4Dr7dLxN2cvAV+667dGJ4b4w==
+babel-jest@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586"
+  integrity sha512-MEt0263viUdAkTq5D7upHPNxvt4n9uLUGa6pPz3WviNBMtOmStb1lIXS3QobnoqM+qnH+vr4EKlvhe8QcmxIYw==
   dependencies:
-    "@jest/transform" "^28.1.0"
+    "@jest/transform" "^28.1.1"
     "@types/babel__core" "^7.1.14"
     babel-plugin-istanbul "^6.1.1"
-    babel-preset-jest "^28.0.2"
+    babel-preset-jest "^28.1.1"
     chalk "^4.0.0"
     graceful-fs "^4.2.9"
     slash "^3.0.0"
@@ -2552,10 +2558,10 @@ babel-plugin-istanbul@^6.1.1:
     istanbul-lib-instrument "^5.0.4"
     test-exclude "^6.0.0"
 
-babel-plugin-jest-hoist@^28.0.2:
-  version "28.0.2"
-  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz#9307d03a633be6fc4b1a6bc5c3a87e22bd01dd3b"
-  integrity sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ==
+babel-plugin-jest-hoist@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11"
+  integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw==
   dependencies:
     "@babel/template" "^7.3.3"
     "@babel/types" "^7.3.3"
@@ -2661,12 +2667,12 @@ babel-preset-current-node-syntax@^1.0.0:
     "@babel/plugin-syntax-optional-chaining" "^7.8.3"
     "@babel/plugin-syntax-top-level-await" "^7.8.3"
 
-babel-preset-jest@^28.0.2:
-  version "28.0.2"
-  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89"
-  integrity sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ==
+babel-preset-jest@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4"
+  integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g==
   dependencies:
-    babel-plugin-jest-hoist "^28.0.2"
+    babel-plugin-jest-hoist "^28.1.1"
     babel-preset-current-node-syntax "^1.0.0"
 
 balanced-match@^1.0.0:
@@ -2820,7 +2826,7 @@ braces@^2.3.1, braces@^2.3.2:
     split-string "^3.0.2"
     to-regex "^3.0.1"
 
-braces@^3.0.1, braces@^3.0.2, braces@~3.0.2:
+braces@^3.0.2, braces@~3.0.2:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
   integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -3678,10 +3684,10 @@ css-font-weight-keywords@^1.0.0:
   resolved "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz#9bc04671ac85bc724b574ef5d3ac96b0d604fd97"
   integrity sha1-m8BGcayFvHJLV07106yWsNYE/Zc=
 
-css-functions-list@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.0.1.tgz#1460df7fb584d1692c30b105151dbb988c8094f9"
-  integrity sha512-PriDuifDt4u4rkDgnqRCLnjfMatufLmWNfQnGCq34xZwpY3oabwhB9SqRBmuvWUgndbemCFlKqg+nO7C2q0SBw==
+css-functions-list@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.1.0.tgz#cf5b09f835ad91a00e5959bcfc627cd498e1321b"
+  integrity sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==
 
 css-global-keywords@^1.0.1:
   version "1.0.1"
@@ -4092,10 +4098,10 @@ diff-sequences@^25.2.6:
   resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
   integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
 
-diff-sequences@^28.0.2:
-  version "28.0.2"
-  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.2.tgz#40f8d4ffa081acbd8902ba35c798458d0ff1af41"
-  integrity sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==
+diff-sequences@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6"
+  integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==
 
 diffie-hellman@^5.0.0:
   version "5.0.3"
@@ -4795,16 +4801,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
   dependencies:
     homedir-polyfill "^1.0.1"
 
-expect@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.0.tgz#10e8da64c0850eb8c39a480199f14537f46e8360"
-  integrity sha512-qFXKl8Pmxk8TBGfaFKRtcQjfXEnKAs+dmlxdwvukJZorwrAabT7M3h8oLOG01I2utEhkmUTi17CHaPBovZsKdw==
+expect@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.1.tgz#ca6fff65f6517cf7220c2e805a49c19aea30b420"
+  integrity sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==
   dependencies:
-    "@jest/expect-utils" "^28.1.0"
+    "@jest/expect-utils" "^28.1.1"
     jest-get-type "^28.0.2"
-    jest-matcher-utils "^28.1.0"
-    jest-message-util "^28.1.0"
-    jest-util "^28.1.0"
+    jest-matcher-utils "^28.1.1"
+    jest-message-util "^28.1.1"
+    jest-util "^28.1.1"
 
 express@^4.17.1, express@^4.18.1:
   version "4.18.1"
@@ -5905,10 +5911,10 @@ interpret@^1.4.0:
   resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
   integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
 
-intersection-observer@^0.12.0:
-  version "0.12.0"
-  resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.0.tgz#6c84628f67ce8698e5f9ccf857d97718745837aa"
-  integrity sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ==
+intersection-observer@^0.12.0, intersection-observer@^0.12.2:
+  version "0.12.2"
+  resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375"
+  integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==
 
 intl-format-cache@^2.0.5:
   version "2.2.9"
@@ -6410,74 +6416,74 @@ jest-changed-files@^28.0.2:
     execa "^5.0.0"
     throat "^6.0.1"
 
-jest-circus@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.0.tgz#e229f590911bd54d60efaf076f7acd9360296dae"
-  integrity sha512-rNYfqfLC0L0zQKRKsg4n4J+W1A2fbyGH7Ss/kDIocp9KXD9iaL111glsLu7+Z7FHuZxwzInMDXq+N1ZIBkI/TQ==
+jest-circus@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.1.tgz#3d27da6a974d85a466dc0cdc6ddeb58daaa57bb4"
+  integrity sha512-75+BBVTsL4+p2w198DQpCeyh1RdaS2lhEG87HkaFX/UG0gJExVq2skG2pT7XZEGBubNj2CytcWSPan4QEPNosw==
   dependencies:
-    "@jest/environment" "^28.1.0"
-    "@jest/expect" "^28.1.0"
-    "@jest/test-result" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/environment" "^28.1.1"
+    "@jest/expect" "^28.1.1"
+    "@jest/test-result" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
     chalk "^4.0.0"
     co "^4.6.0"
     dedent "^0.7.0"
     is-generator-fn "^2.0.0"
-    jest-each "^28.1.0"
-    jest-matcher-utils "^28.1.0"
-    jest-message-util "^28.1.0"
-    jest-runtime "^28.1.0"
-    jest-snapshot "^28.1.0"
-    jest-util "^28.1.0"
-    pretty-format "^28.1.0"
+    jest-each "^28.1.1"
+    jest-matcher-utils "^28.1.1"
+    jest-message-util "^28.1.1"
+    jest-runtime "^28.1.1"
+    jest-snapshot "^28.1.1"
+    jest-util "^28.1.1"
+    pretty-format "^28.1.1"
     slash "^3.0.0"
     stack-utils "^2.0.3"
     throat "^6.0.1"
 
-jest-cli@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.0.tgz#cd1d8adb9630102d5ba04a22895f63decdd7ac1f"
-  integrity sha512-fDJRt6WPRriHrBsvvgb93OxgajHHsJbk4jZxiPqmZbMDRcHskfJBBfTyjFko0jjfprP544hOktdSi9HVgl4VUQ==
+jest-cli@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.1.tgz#23ddfde8940e1818585ae4a568877b33b0e51cfe"
+  integrity sha512-+sUfVbJqb1OjBZ0OdBbI6OWfYM1i7bSfzYy6gze1F1w3OKWq8ZTEKkZ8a7ZQPq6G/G1qMh/uKqpdWhgl11NFQQ==
   dependencies:
-    "@jest/core" "^28.1.0"
-    "@jest/test-result" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/core" "^28.1.1"
+    "@jest/test-result" "^28.1.1"
+    "@jest/types" "^28.1.1"
     chalk "^4.0.0"
     exit "^0.1.2"
     graceful-fs "^4.2.9"
     import-local "^3.0.2"
-    jest-config "^28.1.0"
-    jest-util "^28.1.0"
-    jest-validate "^28.1.0"
+    jest-config "^28.1.1"
+    jest-util "^28.1.1"
+    jest-validate "^28.1.1"
     prompts "^2.0.1"
     yargs "^17.3.1"
 
-jest-config@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.0.tgz#fca22ca0760e746fe1ce1f9406f6b307ab818501"
-  integrity sha512-aOV80E9LeWrmflp7hfZNn/zGA4QKv/xsn2w8QCBP0t0+YqObuCWTSgNbHJ0j9YsTuCO08ZR/wsvlxqqHX20iUA==
+jest-config@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.1.tgz#e90b97b984f14a6c24a221859e81b258990fce2f"
+  integrity sha512-tASynMhS+jVV85zKvjfbJ8nUyJS/jUSYZ5KQxLUN2ZCvcQc/OmhQl2j6VEL3ezQkNofxn5pQ3SPYWPHb0unTZA==
   dependencies:
     "@babel/core" "^7.11.6"
-    "@jest/test-sequencer" "^28.1.0"
-    "@jest/types" "^28.1.0"
-    babel-jest "^28.1.0"
+    "@jest/test-sequencer" "^28.1.1"
+    "@jest/types" "^28.1.1"
+    babel-jest "^28.1.1"
     chalk "^4.0.0"
     ci-info "^3.2.0"
     deepmerge "^4.2.2"
     glob "^7.1.3"
     graceful-fs "^4.2.9"
-    jest-circus "^28.1.0"
-    jest-environment-node "^28.1.0"
+    jest-circus "^28.1.1"
+    jest-environment-node "^28.1.1"
     jest-get-type "^28.0.2"
     jest-regex-util "^28.0.2"
-    jest-resolve "^28.1.0"
-    jest-runner "^28.1.0"
-    jest-util "^28.1.0"
-    jest-validate "^28.1.0"
+    jest-resolve "^28.1.1"
+    jest-runner "^28.1.1"
+    jest-util "^28.1.1"
+    jest-validate "^28.1.1"
     micromatch "^4.0.4"
     parse-json "^5.2.0"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
     slash "^3.0.0"
     strip-json-comments "^3.1.1"
 
@@ -6491,59 +6497,59 @@ jest-diff@^25.2.1:
     jest-get-type "^25.2.6"
     pretty-format "^25.5.0"
 
-jest-diff@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.0.tgz#77686fef899ec1873dbfbf9330e37dd429703269"
-  integrity sha512-8eFd3U3OkIKRtlasXfiAQfbovgFgRDb0Ngcs2E+FMeBZ4rUezqIaGjuyggJBp+llosQXNEWofk/Sz4Hr5gMUhA==
+jest-diff@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.1.tgz#1a3eedfd81ae79810931c63a1d0f201b9120106c"
+  integrity sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==
   dependencies:
     chalk "^4.0.0"
-    diff-sequences "^28.0.2"
+    diff-sequences "^28.1.1"
     jest-get-type "^28.0.2"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
 
-jest-docblock@^28.0.2:
-  version "28.0.2"
-  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.2.tgz#3cab8abea53275c9d670cdca814fc89fba1298c2"
-  integrity sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg==
+jest-docblock@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8"
+  integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==
   dependencies:
     detect-newline "^3.0.0"
 
-jest-each@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.0.tgz#54ae66d6a0a5b1913e9a87588d26c2687c39458b"
-  integrity sha512-a/XX02xF5NTspceMpHujmOexvJ4GftpYXqr6HhhmKmExtMXsyIN/fvanQlt/BcgFoRKN4OCXxLQKth9/n6OPFg==
+jest-each@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.1.tgz#ba5238dacf4f31d9fe23ddc2c44c01e7c23885c4"
+  integrity sha512-A042rqh17ZvEhRceDMi784ppoXR7MWGDEKTXEZXb4svt0eShMZvijGxzKsx+yIjeE8QYmHPrnHiTSQVhN4nqaw==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     chalk "^4.0.0"
     jest-get-type "^28.0.2"
-    jest-util "^28.1.0"
-    pretty-format "^28.1.0"
+    jest-util "^28.1.1"
+    pretty-format "^28.1.1"
 
-jest-environment-jsdom@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.0.tgz#1042cffd0343615c5fac2d2c8da20d1d43b73ef8"
-  integrity sha512-8n6P4xiDjNVqTWv6W6vJPuQdLx+ZiA3dbYg7YJ+DPzR+9B61K6pMVJrSs2IxfGRG4J7pyAUA5shQ9G0KEun78w==
+jest-environment-jsdom@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.1.tgz#8bd721915b32f9b196723292c4461a0ad548b55b"
+  integrity sha512-41ZvgSoPNcKG5q3LuuOcAczdBxRq9DbZkPe24okN6ZCmiZdAfFtPg3z+lOtsT1fM6OAERApKT+3m0MRDQH2zIA==
   dependencies:
-    "@jest/environment" "^28.1.0"
-    "@jest/fake-timers" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/environment" "^28.1.1"
+    "@jest/fake-timers" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/jsdom" "^16.2.4"
     "@types/node" "*"
-    jest-mock "^28.1.0"
-    jest-util "^28.1.0"
+    jest-mock "^28.1.1"
+    jest-util "^28.1.1"
     jsdom "^19.0.0"
 
-jest-environment-node@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.0.tgz#6ed2150aa31babba0c488c5b4f4d813a585c68e6"
-  integrity sha512-gBLZNiyrPw9CSMlTXF1yJhaBgWDPVvH0Pq6bOEwGMXaYNzhzhw2kA/OijNF8egbCgDS0/veRv97249x2CX+udQ==
+jest-environment-node@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.1.tgz#1c86c59003a7d319fa06ea3b1bbda6c193715c67"
+  integrity sha512-2aV/eeY/WNgUUJrrkDJ3cFEigjC5fqT1+fCclrY6paqJ5zVPoM//sHmfgUUp7WLYxIdbPwMiVIzejpN56MxnNA==
   dependencies:
-    "@jest/environment" "^28.1.0"
-    "@jest/fake-timers" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/environment" "^28.1.1"
+    "@jest/fake-timers" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
-    jest-mock "^28.1.0"
-    jest-util "^28.1.0"
+    jest-mock "^28.1.1"
+    jest-util "^28.1.1"
 
 jest-get-type@^25.2.6:
   version "25.2.6"
@@ -6555,64 +6561,64 @@ jest-get-type@^28.0.2:
   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203"
   integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==
 
-jest-haste-map@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.0.tgz#6c1ee2daf1c20a3e03dbd8e5b35c4d73d2349cf0"
-  integrity sha512-xyZ9sXV8PtKi6NCrJlmq53PyNVHzxmcfXNVvIRHpHmh1j/HChC4pwKgyjj7Z9us19JMw8PpQTJsFWOsIfT93Dw==
+jest-haste-map@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3"
+  integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@types/graceful-fs" "^4.1.3"
     "@types/node" "*"
     anymatch "^3.0.3"
     fb-watchman "^2.0.0"
     graceful-fs "^4.2.9"
     jest-regex-util "^28.0.2"
-    jest-util "^28.1.0"
-    jest-worker "^28.1.0"
+    jest-util "^28.1.1"
+    jest-worker "^28.1.1"
     micromatch "^4.0.4"
-    walker "^1.0.7"
+    walker "^1.0.8"
   optionalDependencies:
     fsevents "^2.3.2"
 
-jest-leak-detector@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.0.tgz#b65167776a8787443214d6f3f54935a4c73c8a45"
-  integrity sha512-uIJDQbxwEL2AMMs2xjhZl2hw8s77c3wrPaQ9v6tXJLGaaQ+4QrNJH5vuw7hA7w/uGT/iJ42a83opAqxGHeyRIA==
+jest-leak-detector@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.1.tgz#537f37afd610a4b3f4cab15e06baf60484548efb"
+  integrity sha512-4jvs8V8kLbAaotE+wFR7vfUGf603cwYtFf1/PYEsyX2BAjSzj8hQSVTP6OWzseTl0xL6dyHuKs2JAks7Pfubmw==
   dependencies:
     jest-get-type "^28.0.2"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
 
-jest-matcher-utils@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.0.tgz#2ae398806668eeabd293c61712227cb94b250ccf"
-  integrity sha512-onnax0n2uTLRQFKAjC7TuaxibrPSvZgKTcSCnNUz/tOjJ9UhxNm7ZmPpoQavmTDUjXvUQ8KesWk2/VdrxIFzTQ==
+jest-matcher-utils@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304"
+  integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==
   dependencies:
     chalk "^4.0.0"
-    jest-diff "^28.1.0"
+    jest-diff "^28.1.1"
     jest-get-type "^28.0.2"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
 
-jest-message-util@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.0.tgz#7e8f0b9049e948e7b94c2a52731166774ba7d0af"
-  integrity sha512-RpA8mpaJ/B2HphDMiDlrAZdDytkmwFqgjDZovM21F35lHGeUeCvYmm6W+sbQ0ydaLpg5bFAUuWG1cjqOl8vqrw==
+jest-message-util@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.1.tgz#60aa0b475cfc08c8a9363ed2fb9108514dd9ab89"
+  integrity sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==
   dependencies:
     "@babel/code-frame" "^7.12.13"
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@types/stack-utils" "^2.0.0"
     chalk "^4.0.0"
     graceful-fs "^4.2.9"
     micromatch "^4.0.4"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
     slash "^3.0.0"
     stack-utils "^2.0.3"
 
-jest-mock@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.0.tgz#ccc7cc12a9b330b3182db0c651edc90d163ff73e"
-  integrity sha512-H7BrhggNn77WhdL7O1apG0Q/iwl0Bdd5E1ydhCJzL3oBLh/UYxAwR3EJLsBZ9XA3ZU4PA3UNw4tQjduBTCTmLw==
+jest-mock@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.1.tgz#37903d269427fa1ef5b2447be874e1c62a39a371"
+  integrity sha512-bDCb0FjfsmKweAvE09dZT59IMkzgN0fYBH6t5S45NoJfd2DHkS3ySG2K+hucortryhO3fVuXdlxWcbtIuV/Skw==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
 
 jest-pnp-resolver@^1.2.2:
@@ -6625,149 +6631,149 @@ jest-regex-util@^28.0.2:
   resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead"
   integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
 
-jest-resolve-dependencies@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.0.tgz#167becb8bee6e20b5ef4a3a728ec67aef6b0b79b"
-  integrity sha512-Ue1VYoSZquPwEvng7Uefw8RmZR+me/1kr30H2jMINjGeHgeO/JgrR6wxj2ofkJ7KSAA11W3cOrhNCbj5Dqqd9g==
+jest-resolve-dependencies@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.1.tgz#3dffaaa56f4b41bc6b61053899d1756401763a27"
+  integrity sha512-p8Y150xYJth4EXhOuB8FzmS9r8IGLEioiaetgdNGb9VHka4fl0zqWlVe4v7mSkYOuEUg2uB61iE+zySDgrOmgQ==
   dependencies:
     jest-regex-util "^28.0.2"
-    jest-snapshot "^28.1.0"
+    jest-snapshot "^28.1.1"
 
-jest-resolve@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.0.tgz#b1f32748a6cee7d1779c7ef639c0a87078de3d35"
-  integrity sha512-vvfN7+tPNnnhDvISuzD1P+CRVP8cK0FHXRwPAcdDaQv4zgvwvag2n55/h5VjYcM5UJG7L4TwE5tZlzcI0X2Lhw==
+jest-resolve@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.1.tgz#bc2eaf384abdcc1aaf3ba7c50d1adf01e59095e5"
+  integrity sha512-/d1UbyUkf9nvsgdBildLe6LAD4DalgkgZcKd0nZ8XUGPyA/7fsnaQIlKVnDiuUXv/IeZhPEDrRJubVSulxrShA==
   dependencies:
     chalk "^4.0.0"
     graceful-fs "^4.2.9"
-    jest-haste-map "^28.1.0"
+    jest-haste-map "^28.1.1"
     jest-pnp-resolver "^1.2.2"
-    jest-util "^28.1.0"
-    jest-validate "^28.1.0"
+    jest-util "^28.1.1"
+    jest-validate "^28.1.1"
     resolve "^1.20.0"
     resolve.exports "^1.1.0"
     slash "^3.0.0"
 
-jest-runner@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.0.tgz#aefe2a1e618a69baa0b24a50edc54fdd7e728eaa"
-  integrity sha512-FBpmuh1HB2dsLklAlRdOxNTTHKFR6G1Qmd80pVDvwbZXTriqjWqjei5DKFC1UlM732KjYcE6yuCdiF0WUCOS2w==
+jest-runner@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.1.tgz#9ecdb3f27a00059986797aa6b012ba8306aa436c"
+  integrity sha512-W5oFUiDBgTsCloTAj6q95wEvYDB0pxIhY6bc5F26OucnwBN+K58xGTGbliSMI4ChQal5eANDF+xvELaYkJxTmA==
   dependencies:
-    "@jest/console" "^28.1.0"
-    "@jest/environment" "^28.1.0"
-    "@jest/test-result" "^28.1.0"
-    "@jest/transform" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/console" "^28.1.1"
+    "@jest/environment" "^28.1.1"
+    "@jest/test-result" "^28.1.1"
+    "@jest/transform" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
     chalk "^4.0.0"
     emittery "^0.10.2"
     graceful-fs "^4.2.9"
-    jest-docblock "^28.0.2"
-    jest-environment-node "^28.1.0"
-    jest-haste-map "^28.1.0"
-    jest-leak-detector "^28.1.0"
-    jest-message-util "^28.1.0"
-    jest-resolve "^28.1.0"
-    jest-runtime "^28.1.0"
-    jest-util "^28.1.0"
-    jest-watcher "^28.1.0"
-    jest-worker "^28.1.0"
+    jest-docblock "^28.1.1"
+    jest-environment-node "^28.1.1"
+    jest-haste-map "^28.1.1"
+    jest-leak-detector "^28.1.1"
+    jest-message-util "^28.1.1"
+    jest-resolve "^28.1.1"
+    jest-runtime "^28.1.1"
+    jest-util "^28.1.1"
+    jest-watcher "^28.1.1"
+    jest-worker "^28.1.1"
     source-map-support "0.5.13"
     throat "^6.0.1"
 
-jest-runtime@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.0.tgz#4847dcb2a4eb4b0f9eaf41306897e51fb1665631"
-  integrity sha512-wNYDiwhdH/TV3agaIyVF0lsJ33MhyujOe+lNTUiolqKt8pchy1Hq4+tDMGbtD5P/oNLA3zYrpx73T9dMTOCAcg==
+jest-runtime@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.1.tgz#569e1dc3c36c6c4c0b29516c1c49b6ad580abdaf"
+  integrity sha512-J89qEJWW0leOsqyi0D9zHpFEYHwwafFdS9xgvhFHtIdRghbadodI0eA+DrthK/1PebBv3Px8mFSMGKrtaVnleg==
   dependencies:
-    "@jest/environment" "^28.1.0"
-    "@jest/fake-timers" "^28.1.0"
-    "@jest/globals" "^28.1.0"
+    "@jest/environment" "^28.1.1"
+    "@jest/fake-timers" "^28.1.1"
+    "@jest/globals" "^28.1.1"
     "@jest/source-map" "^28.0.2"
-    "@jest/test-result" "^28.1.0"
-    "@jest/transform" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/test-result" "^28.1.1"
+    "@jest/transform" "^28.1.1"
+    "@jest/types" "^28.1.1"
     chalk "^4.0.0"
     cjs-module-lexer "^1.0.0"
     collect-v8-coverage "^1.0.0"
     execa "^5.0.0"
     glob "^7.1.3"
     graceful-fs "^4.2.9"
-    jest-haste-map "^28.1.0"
-    jest-message-util "^28.1.0"
-    jest-mock "^28.1.0"
+    jest-haste-map "^28.1.1"
+    jest-message-util "^28.1.1"
+    jest-mock "^28.1.1"
     jest-regex-util "^28.0.2"
-    jest-resolve "^28.1.0"
-    jest-snapshot "^28.1.0"
-    jest-util "^28.1.0"
+    jest-resolve "^28.1.1"
+    jest-snapshot "^28.1.1"
+    jest-util "^28.1.1"
     slash "^3.0.0"
     strip-bom "^4.0.0"
 
-jest-snapshot@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.0.tgz#4b74fa8816707dd10fe9d551c2c258e5a67b53b6"
-  integrity sha512-ex49M2ZrZsUyQLpLGxQtDbahvgBjlLPgklkqGM0hq/F7W/f8DyqZxVHjdy19QKBm4O93eDp+H5S23EiTbbUmHw==
+jest-snapshot@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.1.tgz#ab825c16c8d8b5e883bd57eee6ca8748c42ab848"
+  integrity sha512-1KjqHJ98adRcbIdMizjF5DipwZFbvxym/kFO4g4fVZCZRxH/dqV8TiBFCa6rqic3p0karsy8RWS1y4E07b7P0A==
   dependencies:
     "@babel/core" "^7.11.6"
     "@babel/generator" "^7.7.2"
     "@babel/plugin-syntax-typescript" "^7.7.2"
     "@babel/traverse" "^7.7.2"
     "@babel/types" "^7.3.3"
-    "@jest/expect-utils" "^28.1.0"
-    "@jest/transform" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/expect-utils" "^28.1.1"
+    "@jest/transform" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/babel__traverse" "^7.0.6"
     "@types/prettier" "^2.1.5"
     babel-preset-current-node-syntax "^1.0.0"
     chalk "^4.0.0"
-    expect "^28.1.0"
+    expect "^28.1.1"
     graceful-fs "^4.2.9"
-    jest-diff "^28.1.0"
+    jest-diff "^28.1.1"
     jest-get-type "^28.0.2"
-    jest-haste-map "^28.1.0"
-    jest-matcher-utils "^28.1.0"
-    jest-message-util "^28.1.0"
-    jest-util "^28.1.0"
+    jest-haste-map "^28.1.1"
+    jest-matcher-utils "^28.1.1"
+    jest-message-util "^28.1.1"
+    jest-util "^28.1.1"
     natural-compare "^1.4.0"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
     semver "^7.3.5"
 
-jest-util@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.0.tgz#d54eb83ad77e1dd441408738c5a5043642823be5"
-  integrity sha512-qYdCKD77k4Hwkose2YBEqQk7PzUf/NSE+rutzceduFveQREeH6b+89Dc9+wjX9dAwHcgdx4yedGA3FQlU/qCTA==
+jest-util@^28.1.0, jest-util@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05"
+  integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
     chalk "^4.0.0"
     ci-info "^3.2.0"
     graceful-fs "^4.2.9"
     picomatch "^2.2.3"
 
-jest-validate@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.0.tgz#8a6821f48432aba9f830c26e28226ad77b9a0e18"
-  integrity sha512-Lly7CJYih3vQBfjLeANGgBSBJ7pEa18cxpQfQEq2go2xyEzehnHfQTjoUia8xUv4x4J80XKFIDwJJThXtRFQXQ==
+jest-validate@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.1.tgz#59b7b339b3c85b5144bd0c06ad3600f503a4acc8"
+  integrity sha512-Kpf6gcClqFCIZ4ti5++XemYJWUPCFUW+N2gknn+KgnDf549iLul3cBuKVe1YcWRlaF8tZV8eJCap0eECOEE3Ug==
   dependencies:
-    "@jest/types" "^28.1.0"
+    "@jest/types" "^28.1.1"
     camelcase "^6.2.0"
     chalk "^4.0.0"
     jest-get-type "^28.0.2"
     leven "^3.1.0"
-    pretty-format "^28.1.0"
+    pretty-format "^28.1.1"
 
-jest-watcher@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.0.tgz#aaa7b4164a4e77eeb5f7d7b25ede5e7b4e9c9aaf"
-  integrity sha512-tNHMtfLE8Njcr2IRS+5rXYA4BhU90gAOwI9frTGOqd+jX0P/Au/JfRSNqsf5nUTcWdbVYuLxS1KjnzILSoR5hA==
+jest-watcher@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.1.tgz#533597fb3bfefd52b5cd115cd916cffd237fb60c"
+  integrity sha512-RQIpeZ8EIJMxbQrXpJQYIIlubBnB9imEHsxxE41f54ZwcqWLysL/A0ZcdMirf+XsMn3xfphVQVV4EW0/p7i7Ug==
   dependencies:
-    "@jest/test-result" "^28.1.0"
-    "@jest/types" "^28.1.0"
+    "@jest/test-result" "^28.1.1"
+    "@jest/types" "^28.1.1"
     "@types/node" "*"
     ansi-escapes "^4.2.1"
     chalk "^4.0.0"
     emittery "^0.10.2"
-    jest-util "^28.1.0"
+    jest-util "^28.1.1"
     string-length "^4.0.1"
 
 jest-worker@^26.5.0:
@@ -6779,23 +6785,24 @@ jest-worker@^26.5.0:
     merge-stream "^2.0.0"
     supports-color "^7.0.0"
 
-jest-worker@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.0.tgz#ced54757a035e87591e1208253a6e3aac1a855e5"
-  integrity sha512-ZHwM6mNwaWBR52Snff8ZvsCTqQsvhCxP/bT1I6T6DAnb6ygkshsyLQIMxFwHpYxht0HOoqt23JlC01viI7T03A==
+jest-worker@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28"
+  integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==
   dependencies:
     "@types/node" "*"
     merge-stream "^2.0.0"
     supports-color "^8.0.0"
 
-jest@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.0.tgz#f420e41c8f2395b9a30445a97189ebb57593d831"
-  integrity sha512-TZR+tHxopPhzw3c3560IJXZWLNHgpcz1Zh0w5A65vynLGNcg/5pZ+VildAd7+XGOu6jd58XMY/HNn0IkZIXVXg==
+jest@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.1.tgz#3c39a3a09791e16e9ef283597d24ab19a0df701e"
+  integrity sha512-qw9YHBnjt6TCbIDMPMpJZqf9E12rh6869iZaN08/vpOGgHJSAaLLUn6H8W3IAEuy34Ls3rct064mZLETkxJ2XA==
   dependencies:
-    "@jest/core" "^28.1.0"
+    "@jest/core" "^28.1.1"
+    "@jest/types" "^28.1.1"
     import-local "^3.0.2"
-    jest-cli "^28.1.0"
+    jest-cli "^28.1.1"
 
 js-base64@^2.1.9:
   version "2.6.4"
@@ -7075,11 +7082,6 @@ lockfile@^1.0:
   dependencies:
     signal-exit "^3.0.2"
 
-lodash.clonedeep@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-  integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
-
 lodash.debounce@^4.0.8:
   version "4.0.8"
   resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
@@ -7186,12 +7188,12 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
   dependencies:
     semver "^6.0.0"
 
-makeerror@1.0.x:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
-  integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+makeerror@1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
+  integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
   dependencies:
-    tmpl "1.0.x"
+    tmpl "1.0.5"
 
 map-cache@^0.2.2:
   version "0.2.2"
@@ -7332,15 +7334,7 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
     snapdragon "^0.8.1"
     to-regex "^3.0.2"
 
-micromatch@^4.0.4:
-  version "4.0.4"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
-  integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
-  dependencies:
-    braces "^3.0.1"
-    picomatch "^2.2.3"
-
-micromatch@^4.0.5:
+micromatch@^4.0.4, micromatch@^4.0.5:
   version "4.0.5"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
   integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -7586,11 +7580,6 @@ nan@^2.12.1:
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
   integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
 
-nanoid@^3.1.23:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
-  integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
-
 nanoid@^3.3.4:
   version "3.3.4"
   resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
@@ -8703,7 +8692,7 @@ postcss-selector-parser@^3.0.0:
     indexes-of "^1.0.1"
     uniq "^1.0.1"
 
-postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6:
+postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6:
   version "6.0.10"
   resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
   integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
@@ -8711,25 +8700,6 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6:
     cssesc "^3.0.0"
     util-deprecate "^1.0.2"
 
-postcss-selector-parser@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
-  integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
-  dependencies:
-    cssesc "^3.0.0"
-    indexes-of "^1.0.1"
-    uniq "^1.0.1"
-
-postcss-selector-parser@^6.0.4:
-  version "6.0.4"
-  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
-  integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
-  dependencies:
-    cssesc "^3.0.0"
-    indexes-of "^1.0.1"
-    uniq "^1.0.1"
-    util-deprecate "^1.0.2"
-
 postcss-svgo@^4.0.3:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e"
@@ -8753,12 +8723,7 @@ postcss-value-parser@^3.0.0:
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
   integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
 
-postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
-  integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
-
-postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
   integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
@@ -8782,16 +8747,7 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.27, postcss@^7.0.32:
     source-map "^0.6.1"
     supports-color "^6.1.0"
 
-postcss@^8.2.15:
-  version "8.3.0"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.0.tgz#b1a713f6172ca427e3f05ef1303de8b65683325f"
-  integrity sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==
-  dependencies:
-    colorette "^1.2.2"
-    nanoid "^3.1.23"
-    source-map-js "^0.6.2"
-
-postcss@^8.4.14:
+postcss@^8.2.15, postcss@^8.4.14:
   version "8.4.14"
   resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
   integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
@@ -8832,10 +8788,10 @@ prelude-ls@~1.1.2:
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
   integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
 
-prettier@^2.6.2:
-  version "2.6.2"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032"
-  integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==
+prettier@^2.7.1:
+  version "2.7.1"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
+  integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
 
 pretty-format@^25.2.1, pretty-format@^25.5.0:
   version "25.5.0"
@@ -8857,10 +8813,10 @@ pretty-format@^27.0.2:
     ansi-styles "^5.0.0"
     react-is "^17.0.1"
 
-pretty-format@^28.1.0:
-  version "28.1.0"
-  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.0.tgz#8f5836c6a0dfdb834730577ec18029052191af55"
-  integrity sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q==
+pretty-format@^28.1.1:
+  version "28.1.1"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb"
+  integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==
   dependencies:
     "@jest/schemas" "^28.0.2"
     ansi-regex "^5.0.1"
@@ -9631,10 +9587,10 @@ requires-port@^1.0.0:
   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
   integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
 
-reselect@^4.1.5:
-  version "4.1.5"
-  resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6"
-  integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==
+reselect@^4.1.6:
+  version "4.1.6"
+  resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656"
+  integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==
 
 resolve-cwd@^2.0.0:
   version "2.0.0"
@@ -9804,10 +9760,10 @@ sass-loader@^10.2.0:
     schema-utils "^3.0.0"
     semver "^7.3.2"
 
-sass@^1.52.1:
-  version "1.52.1"
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.1.tgz#554693da808543031f9423911d62c60a1acf7889"
-  integrity sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==
+sass@^1.52.3:
+  version "1.52.3"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.52.3.tgz#b7cc7ffea2341ccc9a0c4fd372bf1b3f9be1b6cb"
+  integrity sha512-LNNPJ9lafx+j1ArtA7GyEJm9eawXN8KlA1+5dF6IZyoONg1Tyo/g+muOsENWJH/2Q1FHbbV4UwliU0cXMa/VIA==
   dependencies:
     chokidar ">=3.0.0 <4.0.0"
     immutable "^4.0.0"
@@ -9895,14 +9851,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
 
-semver@^7.2.1, semver@^7.3.2, semver@^7.3.5:
-  version "7.3.5"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
-  integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
-  dependencies:
-    lru-cache "^6.0.0"
-
-semver@^7.3.4:
+semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
   version "7.3.7"
   resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
   integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -10152,17 +10101,7 @@ source-list-map@^2.0.0:
   resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
   integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
 
-"source-map-js@>=0.6.2 <2.0.0":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf"
-  integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==
-
-source-map-js@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
-  integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
-
-source-map-js@^1.0.2:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
   integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
@@ -10276,11 +10215,6 @@ spdy@^4.0.2:
     select-hose "^2.0.0"
     spdy-transport "^3.0.0"
 
-specificity@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019"
-  integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==
-
 split-string@^3.0.1, split-string@^3.0.2:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
@@ -10498,14 +10432,7 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
   dependencies:
     ansi-regex "^4.1.0"
 
-strip-ansi@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
-  integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
-  dependencies:
-    ansi-regex "^5.0.0"
-
-strip-ansi@^6.0.1:
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -10603,15 +10530,16 @@ stylelint-scss@^4.0.0:
     postcss-selector-parser "^6.0.6"
     postcss-value-parser "^4.1.0"
 
-stylelint@^14.8.5:
-  version "14.8.5"
-  resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.8.5.tgz#0fcbf5b6821283b5a249dde36d70f1158da0a2a3"
-  integrity sha512-e3t4H/hlWlspkcNUrkhf44RU3OpPTA7uBOoREGBzSwdEF+2g/+gbZq7WEpMP7BpopcSe/uLaTvDuL+URL7cdnQ==
+stylelint@^14.9.1:
+  version "14.9.1"
+  resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.9.1.tgz#6494ed38f148b1e75b402d678a3b6a8aae86dfda"
+  integrity sha512-RdAkJdPiLqHawCSnu21nE27MjNXaVd4WcOHA4vK5GtIGjScfhNnaOuWR2wWdfKFAvcWQPOYe311iveiVKSmwsA==
   dependencies:
+    "@csstools/selector-specificity" "^2.0.1"
     balanced-match "^2.0.0"
     colord "^2.9.2"
     cosmiconfig "^7.0.1"
-    css-functions-list "^3.0.1"
+    css-functions-list "^3.1.0"
     debug "^4.3.4"
     execall "^2.0.0"
     fast-glob "^3.2.11"
@@ -10639,7 +10567,6 @@ stylelint@^14.8.5:
     postcss-selector-parser "^6.0.10"
     postcss-value-parser "^4.2.0"
     resolve-from "^5.0.0"
-    specificity "^0.4.1"
     string-width "^4.2.3"
     strip-ansi "^6.0.1"
     style-search "^0.1.0"
@@ -10699,15 +10626,7 @@ supports-color@^8.0.0:
   dependencies:
     has-flag "^4.0.0"
 
-supports-hyperlinks@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47"
-  integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==
-  dependencies:
-    has-flag "^4.0.0"
-    supports-color "^7.0.0"
-
-supports-hyperlinks@^2.2.0:
+supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb"
   integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==
@@ -10749,19 +10668,7 @@ symbol-tree@^3.2.4:
   resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
   integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
 
-table@^6.0.9:
-  version "6.7.1"
-  resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
-  integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
-  dependencies:
-    ajv "^8.0.1"
-    lodash.clonedeep "^4.5.0"
-    lodash.truncate "^4.4.2"
-    slice-ansi "^4.0.0"
-    string-width "^4.2.0"
-    strip-ansi "^6.0.0"
-
-table@^6.8.0:
+table@^6.0.9, table@^6.8.0:
   version "6.8.0"
   resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
   integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==
@@ -10938,7 +10845,7 @@ tiny-warning@^1.0.0:
   resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
   integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
 
-tmpl@1.0.x:
+tmpl@1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
   integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
@@ -11342,12 +11249,7 @@ uuid@^8.3.1:
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
   integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
 
-v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
-  integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
-
-v8-compile-cache@^2.3.0:
+v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1, v8-compile-cache@^2.3.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
   integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
@@ -11408,12 +11310,12 @@ w3c-xmlserializer@^3.0.0:
   dependencies:
     xml-name-validator "^4.0.0"
 
-walker@^1.0.7:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
-  integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+walker@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
+  integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
   dependencies:
-    makeerror "1.0.x"
+    makeerror "1.0.12"
 
 warning@^3.0.0:
   version "3.0.0"
@@ -11703,10 +11605,10 @@ which@^2.0.1:
   dependencies:
     isexe "^2.0.0"
 
-wicg-inert@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.1.tgz#b033fd4fbfb9e3fd709e5d84becbdf2e06e5c229"
-  integrity sha512-PhBaNh8ur9Xm4Ggy4umelwNIP6pPP1bv3EaWaKqfb/QNme2rdLjm7wIInvV4WhxVHhzA4Spgw9qNSqWtB/ca2A==
+wicg-inert@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.2.tgz#df10cf756b773a96fce107c3ddcd43be5d1e3944"
+  integrity sha512-Ba9tGNYxXwaqKEi9sJJvPMKuo063umUPsHN0JJsjrs2j8KDSzkWLMZGZ+MH1Jf1Fq4OWZ5HsESJID6nRza2ang==
 
 wide-align@^1.1.5:
   version "1.1.5"
@@ -11775,10 +11677,10 @@ ws@^7.3.1:
   resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
   integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
 
-ws@^8.2.3, ws@^8.7.0:
-  version "8.7.0"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957"
-  integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==
+ws@^8.2.3, ws@^8.8.0:
+  version "8.8.0"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769"
+  integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==
 
 xml-name-validator@^4.0.0:
   version "4.0.0"