~cytrogen/masto-fe

702d162998f8265cbbe731b943a4bd22e6a1c7bf — Claire 2 years ago d7fcd70 + 5393be7
Merge commit '5393be7a21331c8615ffb79c2271db92f6959458' into glitch-soc/merge-upstream

Conflicts:
- `app/controllers/auth/registrations_controller.rb`:
  Not a real conflict. Upstream removed the `set_instance_presenter` private
  method from this class, and glitch-soc has an extra private method right
  besides it for the theming system.
  Removed `set_instance_presenter` as upstream did.
- `app/controllers/auth/sessions_controller.rb`:
  Not a real conflict. Upstream removed the `set_instance_presenter` private
  method from this class, and glitch-soc has an extra private method right
  besides it for the theming system.
  Removed `set_instance_presenter` as upstream did.
M .devcontainer/docker-compose.yml => .devcontainer/docker-compose.yml +1 -1
@@ 70,7 70,7 @@ services:
        hard: -1

  libretranslate:
    image: libretranslate/libretranslate:v1.3.11
    image: libretranslate/libretranslate:v1.3.12
    restart: unless-stopped
    volumes:
      - lt-data:/home/libretranslate/.local

M .haml-lint_todo.yml => .haml-lint_todo.yml +2 -3
@@ 1,6 1,6 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2023-09-28 10:26:23 -0400 using Haml-Lint version 0.50.0.
# on 2023-09-28 10:42:25 -0400 using Haml-Lint version 0.50.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new


@@ 26,14 26,13 @@ linters:
      - 'app/views/admin/reports/show.html.haml'
      - 'app/views/disputes/strikes/show.html.haml'

  # Offense count: 18
  # Offense count: 15
  InstanceVariables:
    exclude:
      - 'app/views/admin/reports/_actions.html.haml'
      - 'app/views/auth/registrations/_status.html.haml'
      - 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
      - 'app/views/relationships/_account.html.haml'
      - 'app/views/shared/_og.html.haml'

  # Offense count: 2
  IdNames:

M .nvmrc => .nvmrc +1 -1
@@ 1,1 1,1 @@
20.7
20.8

M app/controllers/about_controller.rb => app/controllers/about_controller.rb +0 -8
@@ 5,15 5,7 @@ class AboutController < ApplicationController

  skip_before_action :require_functional!

  before_action :set_instance_presenter

  def show
    expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
  end

  private

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end
end

M app/controllers/auth/registrations_controller.rb => app/controllers/auth/registrations_controller.rb +0 -5
@@ 11,7 11,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
  before_action :set_pack
  before_action :set_sessions, only: [:edit, :update]
  before_action :set_strikes, only: [:edit, :update]
  before_action :set_instance_presenter, only: [:new, :create, :update]
  before_action :set_body_classes, only: [:new, :create, :edit, :update]
  before_action :require_not_suspended!, only: [:update]
  before_action :set_cache_headers, only: [:edit, :update]


@@ 112,10 111,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
    use_pack %w(edit update).include?(action_name) ? 'admin' : 'auth'
  end

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end

  def set_body_classes
    @body_classes = %w(edit update).include?(action_name) ? 'admin' : 'lighter'
  end

M app/controllers/auth/sessions_controller.rb => app/controllers/auth/sessions_controller.rb +0 -5
@@ 12,7 12,6 @@ class Auth::SessionsController < Devise::SessionsController

  include TwoFactorAuthenticationConcern

  before_action :set_instance_presenter, only: [:new]
  before_action :set_body_classes

  content_security_policy only: :new do |p|


@@ 104,10 103,6 @@ class Auth::SessionsController < Devise::SessionsController
    use_pack 'auth'
  end

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end

  def set_body_classes
    @body_classes = 'lighter'
  end

M app/controllers/concerns/account_controller_concern.rb => app/controllers/concerns/account_controller_concern.rb +0 -6
@@ 9,17 9,11 @@ module AccountControllerConcern
  FOLLOW_PER_PAGE = 12

  included do
    before_action :set_instance_presenter

    after_action :set_link_headers, if: -> { request.format.nil? || request.format == :html }
  end

  private

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end

  def set_link_headers
    response.headers['Link'] = LinkHeader.new(
      [

M app/controllers/home_controller.rb => app/controllers/home_controller.rb +0 -8
@@ 3,15 3,7 @@
class HomeController < ApplicationController
  include WebAppControllerConcern

  before_action :set_instance_presenter

  def index
    expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
  end

  private

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end
end

M app/controllers/privacy_controller.rb => app/controllers/privacy_controller.rb +0 -8
@@ 5,15 5,7 @@ class PrivacyController < ApplicationController

  skip_before_action :require_functional!

  before_action :set_instance_presenter

  def show
    expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
  end

  private

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end
end

M app/controllers/statuses_controller.rb => app/controllers/statuses_controller.rb +0 -5
@@ 10,7 10,6 @@ class StatusesController < ApplicationController

  before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? }
  before_action :set_status
  before_action :set_instance_presenter
  before_action :redirect_to_original, only: :show
  before_action :set_body_classes, only: :embed



@@ 68,10 67,6 @@ class StatusesController < ApplicationController
    not_found
  end

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end

  def redirect_to_original
    redirect_to(ActivityPub::TagManager.instance.url_for(@status.reblog), allow_other_host: true) if @status.reblog?
  end

M app/controllers/tags_controller.rb => app/controllers/tags_controller.rb +0 -5
@@ 14,7 14,6 @@ class TagsController < ApplicationController
  before_action :set_local
  before_action :set_tag
  before_action :set_statuses, if: -> { request.format == :rss }
  before_action :set_instance_presenter

  skip_before_action :require_functional!, unless: :limited_federation_mode?



@@ 49,10 48,6 @@ class TagsController < ApplicationController
    @statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
  end

  def set_instance_presenter
    @instance_presenter = InstancePresenter.new
  end

  def limit_param
    params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE
  end

M app/helpers/mascot_helper.rb => app/helpers/mascot_helper.rb +0 -2
@@ 5,8 5,6 @@ module MascotHelper
    full_asset_url(instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg'))
  end

  private

  def instance_presenter
    @instance_presenter ||= InstancePresenter.new
  end

M app/javascript/mastodon/locales/fi.json => app/javascript/mastodon/locales/fi.json +6 -6
@@ 201,9 201,9 @@
  "disabled_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä.",
  "dismissable_banner.community_timeline": "Nämä ovat viimeisimpiä julkaisuja käyttäjiltä, joiden tili sijaitsee palvelimella {domain}.",
  "dismissable_banner.dismiss": "Hylkää",
  "dismissable_banner.explore_links": "Näistä uutisista puhutaan juuri nyt tällä ja muilla hajautetun verkon palvelimilla.",
  "dismissable_banner.explore_statuses": "Nämä ovat tänään huomiota keräävimpiä sosiaalisen verkon julkaisuja. Uusimmat, tehostetuimmat ja suosikiksi lisätyimmät nousevat listauksessa korkeimmalle.",
  "dismissable_banner.explore_tags": "Nämä aihetunnisteet saavat juuri nyt vetovoimaa tällä ja muilla hajautetun verkon palvelimilla olevien ihmisten keskuudessa.",
  "dismissable_banner.explore_links": "Näitä uutisia jaetaan tänään sosiaalisessa verkossa eniten. Uusimmat ja eri käyttäjien eniten lähettämät uutiset nousevat listauksessa korkeimmalle.",
  "dismissable_banner.explore_statuses": "Nämä sosiaalisen verkon julkaisut keräävät tänään eniten huomiota. Uusimmat, tehostetuimmat ja suosikiksi lisätyimmät nousevat listauksessa korkeimmalle.",
  "dismissable_banner.explore_tags": "Nämä sosiaalisen verkon aihetunnisteet keräävät tänään eniten huomiota. Useimman käyttäjän käyttämät aihetunnisteet nousevat listauksessa korkeimmalle.",
  "dismissable_banner.public_timeline": "Nämä ovat viimeisimpiä julkaisuja sosiaalisen verkon käyttäjiltä, joita seurataan palvelimella {domain}.",
  "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.",
  "embed.preview": "Se tulee näyttämään tältä:",


@@ 324,7 324,7 @@
  "interaction_modal.on_another_server": "Toisella palvelimella",
  "interaction_modal.on_this_server": "Tällä palvelimella",
  "interaction_modal.sign_in": "Et ole kirjautunut tälle palvelimelle. Millä palvelimella tilisi sijaitsee?",
  "interaction_modal.sign_in_hint": "Vihje: Se on sama verkkosivusto, jolla loit tilisi. Jos et muista, etsi tervetuliaissähköpostia saapuneista viesteistäsi. Voit myös syöttää koko käyttäjätunnuksesi! (Esimerkki: @Mastodon@mastodon.social)",
  "interaction_modal.sign_in_hint": "Vihje: Se on sama verkkosivusto, jossa loit tilisi. Jos et muista, etsi tervetulosähköpostia saapuneista viesteistäsi. Voit myös syöttää koko käyttäjätunnuksesi! (Esimerkki: @Mastodon@Mastodon.social)",
  "interaction_modal.title.favourite": "Lisää käyttäjän {name} julkaisu suosikkeihin",
  "interaction_modal.title.follow": "Seuraa käyttäjää {name}",
  "interaction_modal.title.reblog": "Tehosta käyttäjän {name} julkaisua",


@@ 493,10 493,10 @@
  "onboarding.steps.setup_profile.title": "Mukauta profiiliasi",
  "onboarding.steps.share_profile.body": "Kerro kavereillesi, kuinka sinut löytää Mastodonista",
  "onboarding.steps.share_profile.title": "Jaa Mastodon-profiilisi",
  "onboarding.tips.2fa": "<strong>Tiesitkö?</strong> Voit lisäsuojata tiliäsi ottamalla kaksivaiheisen todennuksen käyttöön palvelun tiliasetuksista. Ominaisuus toimii haluamasi TOTP-todennussovelluksen avulla, eikä käyttö edellytä puhelinnumeron antamista!",
  "onboarding.tips.2fa": "<strong>Tiesitkö?</strong> Voit suojata tilisi ottamalla kaksivaiheisen todennuksen käyttöön tilisi asetuksista. Se toimii millä tahansa TOTP-sovelluksella, eikä sen käyttö edellytä puhelinnumeroa!",
  "onboarding.tips.accounts_from_other_servers": "<strong>Tiesitkö?</strong> Koska Mastodon on hajautettu, osa kohtaamistasi profiileista sijaitsee muilla kuin sinun palvelimellasi. Voit silti viestiä saumattomasti heidän kanssaan! Heidän palvelimensa mainitaan käyttäjänimen jälkiosassa!",
  "onboarding.tips.migration": "<strong>Tiesitkö?</strong> Jos koet, ettei {domain} ole jatkossa itsellesi hyvä palvelinvalinta, voit siirtyä toiselle Mastodon-palvelimelle menettämättä seuraajiasi. Voit jopa isännöidä omaa palvelintasi!",
  "onboarding.tips.verification": "<strong>Tiesitkö?</strong> Voit vahvistaa tilisi lisäämällä omalle verkkosivustollesi linkin Mastodon-profiiliisi, ja lisäämällä sitten verkkosivustosi osoitteen Mastodon-profiilisi tietoihin. Tämä ei maksa mitään, eikä sinun tarvitse lähetellä mitään asiakirjoja!",
  "onboarding.tips.verification": "<strong>Tiesitkö?</strong> Voit vahvistaa tilisi lisäämällä omalle verkkosivustollesi linkin Mastodon-profiiliisi ja lisäämällä sitten verkkosivustosi osoitteen Mastodon-profiilisi lisäkenttään. Tämä ei maksa mitään, eikä sinun tarvitse lähetellä asiakirjoja!",
  "password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
  "password_confirmation.mismatching": "Salasanan vahvistus ei täsmää",
  "picture_in_picture.restore": "Laita se takaisin",

M app/views/shared/_og.html.haml => app/views/shared/_og.html.haml +3 -3
@@ 1,12 1,12 @@
- thumbnail     = @instance_presenter.thumbnail
- description ||= @instance_presenter.description.presence || strip_tags(t('about.about_mastodon_html'))
- thumbnail     = instance_presenter.thumbnail
- description ||= instance_presenter.description.presence || strip_tags(t('about.about_mastodon_html'))

%meta{ name: 'description', content: description }/

= opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname)
= opengraph 'og:url', url_for(only_path: false)
= opengraph 'og:type', 'website'
= opengraph 'og:title', @instance_presenter.title
= opengraph 'og:title', instance_presenter.title
= opengraph 'og:description', description
= opengraph 'og:image', full_asset_url(thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png', protocol: :request))
= opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'

M config/locales/devise.fi.yml => config/locales/devise.fi.yml +7 -7
@@ 27,12 27,12 @@ fi:
        title: Vahvista sähköpostiosoite
      email_changed:
        explanation: 'Tilin sähköpostiosoitteeksi vaihdetaan:'
        extra: Jos et vaihtanut sähköpostiosoitettasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä. Jos et pääse kirjautumaan tilillesi, ota yhteyttä instanssin ylläpitäjään.
        extra: Jos et vaihtanut sähköpostiosoitettasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteyttä palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
        subject: 'Mastodon: Sähköpostiosoite vaihdettu'
        title: Uusi sähköpostiosoite
      password_change:
        explanation: Tilisi salasana on vaihdettu.
        extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä. Jos et pääse kirjautumaan tilillesi, ota yhteyttä instanssin ylläpitäjään.
        extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteyttä palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
        subject: 'Mastodon: salasana vaihdettu'
        title: Salasana vaihdettu
      reconfirmation_instructions:


@@ 47,11 47,11 @@ fi:
        subject: 'Mastodon: ohjeet salasanan vaihtoon'
        title: Salasanan vaihto
      two_factor_disabled:
        explanation: Kaksivaiheinen todennus tilillesi poistettiin käytöstä. Kirjautuminen onnistuu nyt käyttäen pelkkää sähköpostiosoitetta ja salasanaa.
        explanation: Tilisi kaksivaiheinen todennus poistettiin käytöstä. Kirjautuminen onnistuu nyt pelkällä sähköpostiosoitella ja salasanalla.
        subject: 'Mastodon: kaksivaiheinen todennus poistettu käytöstä'
        title: 2-vaiheinen todennus pois käytöstä
      two_factor_enabled:
        explanation: Kaksivaiheinen tunnistus on otettu käyttöön tilillesi. Kaksivaiheisen tunnistuksen sovelluksesta saatu koodi tarvitaan kirjautumiseen.
        explanation: Kaksivaiheinen todennus on otettu käyttöön tilillesi. Kirjautumiseen tarvitaan kaksivaiheisen todennuksen sovelluksesta saatu koodi.
        subject: 'Mastodon: kaksivaiheinen todennus otettu käyttöön'
        title: 2-vaiheinen todennus käytössä
      two_factor_recovery_codes_changed:


@@ 70,11 70,11 @@ fi:
          subject: 'Mastodon: suojausavain poistettu'
          title: Yksi suojausavaimistasi on poistettu
      webauthn_disabled:
        explanation: Suojausavaimilla todennus on poistettu käytöstä tililtäsi. Kirjautuminen on nyt mahdollista käyttämällä vain paritetun TOTP-sovelluksen luomaa tokenia.
        subject: 'Mastodon: Todennus suoja-avaimilla poistettu käytöstä'
        explanation: Suojausavaimilla todennus on poistettu käytöstä tililtäsi. Kirjautuminen on nyt mahdollista vain paritetun TOTP-sovelluksen luomaa koodia käyttämällä.
        subject: 'Mastodon: Todennus suojausavaimilla poistettu käytöstä'
        title: Suojausavaimet poistettu käytöstä
      webauthn_enabled:
        explanation: Todennus suojausavaimella on otettu käyttöön tililläsi. Suojausavaintasi voidaan nyt käyttää kirjautumiseen.
        explanation: Todennus suojausavaimella on otettu käyttöön tilillesi. Suojausavaintasi voidaan nyt käyttää kirjautumiseen.
        subject: 'Mastodon: Todennus suojausavaimella on otettu käyttöön'
        title: Suojausavaimet käytössä
    omniauth_callbacks:

M config/locales/doorkeeper.fi.yml => config/locales/doorkeeper.fi.yml +4 -4
@@ 67,13 67,13 @@ fi:
        title: Kopioi tämä valtuutuskoodi ja liitä se sovellukseen.
    authorized_applications:
      buttons:
        revoke: Peru
        revoke: Hylkää
      confirmations:
        revoke: Oletko varma?
      index:
        authorized_at: Valtuutettu %{date}
        description_html: Nämä ovat sovelluksia, jotka voivat käyttää tiliäsi käyttäen API. Jos et tunnista sitä tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden.
        last_used_at: Viimeksi käytetty %{date}
        description_html: Nämä sovellukset voivat käyttää tiliäsi ohjelmointirajapinnan kautta. Jos tässä on sovelluksia, joita et tunnista, tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden.
        last_used_at: Käytetty viimeksi %{date}
        never_used: Ei käytetty
        scopes: Oikeudet
        superapp: Sisäinen


@@ 114,7 114,7 @@ fi:
          notice: Sovellus poistettu.
    grouped_scopes:
      access:
        read: Vain luku
        read: Vain lukuoikeus
        read/write: Luku- ja kirjoitusoikeudet
        write: Vain kirjoitusoikeus
      title:

M config/locales/fi.yml => config/locales/fi.yml +46 -46
@@ 76,7 76,7 @@ fi:
      inbox_url: Saapuvan postilaatikon osoite
      invite_request_text: Syitä liittymiseen
      invited_by: Kutsuja
      ip: IP
      ip: IP-osoite
      joined: Liittynyt
      location:
        all: Kaikki


@@ 736,10 736,10 @@ fi:
        rules_hint: On olemassa erityinen alue sääntöjä, joita käyttäjien odotetaan noudattavan.
        title: Tietoja
      appearance:
        preamble: Muokkaa Mastodonin web-käyttöliittymää.
        preamble: Mukauta Mastodonin verkkokäyttöliittymää.
        title: Ulkoasu
      branding:
        preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voivat näkyä monissa eri ympäristöissä, kuten Mastodonin web-käyttöliittymässä, natiivisovelluksissa, linkkien esikatseluissa muilla sivustoilla, viestintäsovelluksissa ja niin edelleen. Siksi nämä tiedot kannattaa pitää selkeinä, lyhyinä ja ytimekkäinä.
        preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voivat näkyä monissa eri ympäristöissä, kuten Mastodonin verkkokäyttöliittymässä, natiivisovelluksissa, linkkien esikatseluissa muilla sivustoilla, viestintäsovelluksissa ja niin edelleen. Siksi nämä tiedot kannattaa pitää selkeinä, lyhyinä ja ytimekkäinä.
        title: Brändäys
      captcha_enabled:
        desc_html: Tämä perustuu ulkoisiin skripteihin hCaptchasta, mikä voi olla turvallisuus- ja yksityisyysongelma. Lisäksi <strong>tämä voi tehdä rekisteröinnin ihmisille huomattavasti (erityisesti vammaisten) helpommaksi</strong>. Harkitse vaihtoehtoisia toimenpiteitä, kuten hyväksymisperusteista tai kutsupohjaista rekisteröintiä.


@@ 853,7 853,7 @@ fi:
        version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan
      rules_check:
        action: Hallitse palvelimen sääntöjä
        message_html: Et ole määrittänyt mitään palvelimen sääntöä.
        message_html: Et ole määrittänyt lainkaan palvelimen sääntöjä.
      sidekiq_process_check:
        message_html: Ei ole Sidekiq-prosessia käynnissä jonossa %{value}. Tarkista Sidekiq-asetukset
      software_version_critical_check:


@@ 864,7 864,7 @@ fi:
        message_html: Mastodonin virhekorjauspäivitys on saatavilla.
      upload_check_privacy_error:
        action: Katso täältä lisätietoja
        message_html: "<strong>Verkkopalvelimesi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa.</strong>"
        message_html: "<strong>Verkkopalvelimesi on määritetty väärin. Käyttäjiesi yksityisyys on vaarassa.</strong>"
      upload_check_privacy_error_object_storage:
        action: Katso täältä lisätietoja
        message_html: "<strong>Objektivarastosi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa.</strong>"


@@ 1004,7 1004,7 @@ fi:
    created_msg: Uusi alias luotiin onnistuneesti. Voit nyt aloittaa siirron vanhasta tilistä.
    deleted_msg: Alias poistettiin onnistuneesti. Siirtyminen tuolta tililtä tähän ei ole enää mahdollista.
    empty: Sinulla ei ole aliaksia.
    hint_html: Jos haluat siirtyä toisesta tilistä tähän tiliin, voit luoda aliasin, joka on pakollinen, ennen kuin voit siirtää seuraajia vanhasta tilistä tähän tiliin. Tämä toiminto on itsessään <strong>vaaraton ja palautuva</strong>. <strong>Tilin siirtyminen aloitetaan vanhalta tililtä</strong>.
    hint_html: Jos haluat muuttaa toiselta tililtä tälle tilille, voit luoda tässä aliaksen, mitä vaaditaan ennen kuin voit edetä siirtämään seuraajat vanhalta tililtä tälle tilille. Tänä toiminto on itsessään <strong>vaaraton ja kumottavissa</strong>. <strong>Tilin muuttaminen aloitetaan vanhalta tililtä</strong>.
    remove: Poista aliaksen linkitys
  appearance:
    advanced_web_interface: Edistynyt selainkäyttöliittymä


@@ 1042,7 1042,7 @@ fi:
    confirmations:
      wrong_email_hint: Jos sähköpostiosoite ei ole oikein, voit muuttaa sen tilin asetuksista.
    delete_account: Poista tili
    delete_account_html: Jos haluat poistaa tilisi, <a href="%{path}">paina tästä</a>. Poisto on vahvistettava.
    delete_account_html: Jos haluat poistaa tilisi, voit <a href="%{path}">edetä tästä</a>. Sinua pyydetään vahvistamaan poisto.
    description:
      prefix_invited_by_user: "@%{name} kutsuu sinut liittymään tälle Mastodonin palvelimelle!"
      prefix_sign_up: Liity Mastodoniin tänään!


@@ 1051,13 1051,13 @@ fi:
    dont_have_your_security_key: Eikö sinulla ole suojausavainta?
    forgot_password: Unohditko salasanasi?
    invalid_reset_password_token: Salasanan palautustunnus on virheellinen tai vanhentunut. Pyydä uusi.
    link_to_otp: Syötä puhelimesi kaksivaiheinen koodi tai palautuskoodi
    link_to_otp: Syötä puhelimesi kaksivaiheisen todennuksen koodi tai palautuskoodi
    link_to_webauth: Käytä suojausavaintasi
    log_in_with: Kirjaudu käyttäen
    login: Kirjaudu sisään
    logout: Kirjaudu ulos
    migrate_account: Muuta toiseen tiliin
    migrate_account_html: Jos haluat ohjata tämän tilin toiseen tiliin, voit <a href="%{path}">asettaa toisen tilin tästä</a>.
    migrate_account_html: Jos haluat ohjata tämän tilin toiseen, voit <a href="%{path}">asettaa toisen tilin tästä</a>.
    or_log_in_with: Tai käytä kirjautumiseen
    privacy_policy_agreement_html: Olen lukenut ja hyväksynyt <a href="%{privacy_policy_path}" target="_blank">tietosuojakäytännön</a>
    progress:


@@ 1138,7 1138,7 @@ fi:
    proceed: Poista tili
    success_msg: Tilin poisto onnistui
    warning:
      before: 'Ennen kuin jatkat, lue nämä huomautukset huolellisesti:'
      before: 'Ennen kuin etenet, lue nämä huomautukset huolellisesti:'
      caches: Muiden palvelimien välimuistiin tallentamaa sisältöä voi vielä löytyä
      data_removal: Julkaisusi ja muut tietosi poistetaan pysyvästi
      email_change_html: Voit <a href="%{path}">muuttaa sähköpostiosoitettasi</a> poistamatta tiliäsi


@@ 1198,7 1198,7 @@ fi:
      content: Valitettavasti jokin meni pieleen meidän päässämme.
      title: Sivu ei ole oikein
    '503': Sivua ei voitu näyttää palvelimen väliaikaisen vian vuoksi.
    noscript_html: Käyttääksesi Mastodon-verkkopalvelua, ota JavaScript käyttöön. Vaihtoehtoisesti voit kokeilla myös jotakin juuri käyttämällesi alustalle kehitettyä Mastodon-<a href="%{apps_path}">sovellusta</a>.
    noscript_html: Käyttääksesi Mastodonin verkkosovellusta, ota JavaScript käyttöön. Vaihtoehtoisesti voit kokeilla käyttämällesi alustalle kehitettyjä Mastodonin <a href="%{apps_path}">natiivisovelluksia</a>.
  existing_username_validator:
    not_found: paikallista käyttäjää ei löydy kyseisellä käyttäjänimellä
    not_found_multiple: "%{usernames} ei löytynyt"


@@ 1236,7 1236,7 @@ fi:
      statuses_hint_html: Tämä suodatin koskee yksittäisten julkaisujen valintaa riippumatta siitä, vastaavatko ne alla olevia avainsanoja. <a href="%{path}">Tarkista tai poista julkaisut suodattimesta</a>.
      title: Muokkaa suodatinta
    errors:
      deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai selainkäyttöliittymää.
      deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai verkkokäyttöliittymää.
      invalid_context: Ei sisältöä tai se on virheellinen
    index:
      contexts: Suodattimet %{contexts}


@@ 1262,7 1262,7 @@ fi:
      batch:
        remove: Poista suodattimista
      index:
        hint: Tämä suodatin koskee yksittäisten julkaisujen valintaa muista kriteereistä riippumatta. Voit lisätä lisää julkaisuja tähän suodattimeen web-käyttöliittymästä.
        hint: Tämä suodatin koskee yksittäisten julkaisujen valintaa muista kriteereistä riippumatta. Voit lisätä lisää julkaisuja tähän suodattimeen verkkokäyttöliittymästä.
        title: Suodatetut julkaisut
  generic:
    all: Kaikki


@@ 1279,7 1279,7 @@ fi:
    delete: Poista
    deselect: Poista kaikki valinnat
    none: Ei mitään
    order_by: Järjestä
    order_by: Järjestys
    save_changes: Tallenna muutokset
    select_all_matching_items:
      one: Valitse %{count} kohde, joka vastaa hakuasi.


@@ 1373,7 1373,7 @@ fi:
      limit: Sinulla on enimmäismäärä listoja
  login_activities:
    authentication_methods:
      otp: kaksivaiheinen todennussovellus
      otp: kaksivaiheisen todennuksen sovellus
      password: salasana
      sign_in_token: sähköpostin turvakoodi
      webauthn: suojausavaimet


@@ 1415,7 1415,7 @@ fi:
      on_cooldown: Sinä olet jäähyllä
    followers_count: Seuraajat muuton aikana
    incoming_migrations: Siirtyminen toiselta tililtä
    incoming_migrations_html: Siirtääksesi toisesta tilistä tähän tiliin, sinun täytyy ensin <a href="%{path}">luoda tilin alias</a>.
    incoming_migrations_html: Siirtyäksesi toisesta tilistä tähän, sinun täytyy ensin <a href="%{path}">luoda tilin alias</a>.
    moved_msg: Tilisi ohjaa nyt kohteeseen %{acct} ja seuraajiasi siirretään.
    not_redirecting: Tilisi ei ohjaa tällä hetkellä mihinkään muuhun tiliin.
    on_cooldown: Olet siirtänyt tilisi äskettäin. Tämä toiminto tulee saataville uudelleen %{count} päivän kuluttua.


@@ 1426,13 1426,13 @@ fi:
    set_redirect: Aseta uudelleenohjaus
    warning:
      backreference_required: Uusi tili on ensin määritettävä viittaamaan tähän tiliin
      before: 'Ennen jatkamista, lue nämä huomautukset huolellisesti:'
      cooldown: Muuton jälkeen on odotusaika, jonka aikana et pysty enää liikkumaan
      disabled_account: Nykyinen tilisi ei ole täysin käytettävissä jälkikäteen. Sinulla on kuitenkin pääsy tietojen vientiin ja uudelleenaktivointiin.
      before: 'Ennen kuin etenet, lue nämä huomautukset huolellisesti:'
      cooldown: Muuton jälkeen on odotusaika, jonka aikana et pysty enää muuttamaan
      disabled_account: Nykyinen tilisi ei ole täysin käytettävissä tämän jälkeen. Sinulla on kuitenkin pääsy tietojen vientiin ja uudelleenaktivointiin.
      followers: Tämä toiminto siirtää kaikki seuraajat nykyisestä tilistä uudelle tilille
      only_redirect_html: Vaihtoehtoisesti voit <a href="%{path}">asettaa vain uudelleenohjauksen profiiliisi</a>.
      only_redirect_html: Vaihtoehtoisesti voit <a href="%{path}">asettaa vain ohjauksen profiiliisi</a>.
      other_data: Muita tietoja ei siirretä automaattisesti
      redirect: Nykyinen tilisi profiili päivitetään, ohjataan uudelleen ja jätetään pois hausta
      redirect: Nykyisen tilisi profiili päivitetään ohjaushuomautuksella ja suljetaan pois hauista
  moderation:
    title: Valvonta
  move_handler:


@@ 1492,7 1492,7 @@ fi:
          trillion: B
  otp_authentication:
    code_hint: Anna todennussovelluksen luoma koodi vahvistaaksesi
    description_html: Jos otat käyttöön <strong>kaksivaiheisen todentamisen</strong>, käyttämällä todennussovellusta, kirjautumiseen vaaditaan puhelin, jolla voidaan luoda kirjautumistunnuksia.
    description_html: Jos otat <strong>kaksivaiheisen todennuksen</strong> käyttöön käyttämällä todennussovellusta, kirjautumiseen vaaditaan puhelin, jolla voidaan luoda kirjautumistunnuksia.
    enable: Ota käyttöön
    instructions_html: "<strong>Lue tämä QR-koodi puhelimen Google Authenticator- tai vastaavalla TOTP-sovelluksella</strong>. Sen jälkeen sovellus luo tunnuksia, joita tarvitset kun kirjaudut sisään."
    manual_instructions: 'Jos et voi lukea QR-koodia ja haluat syöttää sen käsin, tässä on salainen koodi tekstinä:'


@@ 1547,10 1547,10 @@ fi:
    following: Seuratut
    invited: Kutsutut
    last_active: Viimeksi aktiivinen
    most_recent: Viimeisin
    moved: Muuttanut
    most_recent: Viimeisimmät
    moved: Muuttaneet
    mutual: Molemmat
    primary: Ensisijainen
    primary: Ensisijaiset
    relationship: Suhde
    remove_selected_domains: Poista kaikki seuraajat valituista verkkotunnuksista
    remove_selected_followers: Poista valitut seuraajat


@@ 1595,7 1595,7 @@ fi:
      weibo: Weibo
    current_session: Nykyinen istunto
    description: "%{browser} alustalla %{platform}"
    explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneet Mastodon-tilillesi.
    explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneena Mastodon-tilillesi.
    ip: IP-osoite
    platforms:
      adobe_air: Adobe AIR


@@ 1636,7 1636,7 @@ fi:
    relationships: Seuratut ja seuraajat
    statuses_cleanup: Autom. julkaisujen poisto
    strikes: Valvontavaroitukset
    two_factor_authentication: Kaksivaiheinen todentaminen
    two_factor_authentication: Kaksivaiheinen todennus
    webauthn_authentication: Suojausavaimet
  statuses:
    attached:


@@ 1681,7 1681,7 @@ fi:
    title: "%{name}: ”%{quote}”"
    visibilities:
      direct: Suoraan
      private: Vain seuraajille
      private: Vain seuraajat
      private_long: Näytä vain seuraajille
      public: Julkinen
      public_long: Kaikki voivat nähdä


@@ 1694,7 1694,7 @@ fi:
    explanation: Koska julkaisujen poistaminen on raskas toimi, se tapahtuu hitaasti ajan mittaan, kun palvelin ei ole muutoin ruuhkainen. Siksi viestejäsi voi poistua vasta tovi sen jälkeen, kun ne ovat saavuttaneet ikärajan.
    ignore_favs: Ohita suosikit
    ignore_reblogs: Ohita tehostukset
    interaction_exceptions: Poikkeukset, jotka perustuvat vuorovaikutukseen
    interaction_exceptions: Vuorovaikutuksiin perustuvat poikkeukset
    interaction_exceptions_explanation: Huomaa, ettei julkaisujen poistumisesta ole varmuutta, jos ne alittavat suosikki- tai tehostusrajan sen jälkeen kun ne on kerran ylitetty.
    keep_direct: Säilytä yksityisviestit
    keep_direct_hint: Ei poista yksityisviestejäsi


@@ 1703,7 1703,7 @@ fi:
    keep_pinned: Säilytä kiinnitetyt julkaisut
    keep_pinned_hint: Ei poista kiinnitettyjä julkaisujasi
    keep_polls: Säilytä äänestykset
    keep_polls_hint: Ei poista yhtäkään äänestystä
    keep_polls_hint: Ei poista äänestyksiäsi
    keep_self_bookmark: Säilytä kirjanmerkkeihin lisäämäsi julkaisut
    keep_self_bookmark_hint: Ei poista julkaisujasi, jos olet lisännyt ne kirjanmerkkeihin
    keep_self_fav: Säilytä suosikkeihin lisäämäsi julkaisut


@@ 1745,16 1745,16 @@ fi:
      too_many_requests: Käännöspalvelulle on hiljattain esitetty liian monta pyyntöä.
  two_factor_authentication:
    add: Lisää
    disable: Poista käytöstä
    disable: Poista 2FA käytöstä
    disabled_success: Kaksivaiheinen todennus on poistettu käytöstä
    edit: Muokkaa
    enabled: Kaksivaiheinen todentaminen käytössä
    enabled_success: Kaksivaiheisen todentamisen käyttöönotto onnistui
    enabled: Kaksivaiheinen todennus käytössä
    enabled_success: Kaksivaiheisen todennuksen käyttöönotto onnistui
    generate_recovery_codes: Luo palautuskoodit
    lost_recovery_codes: Palautuskoodien avulla voit käyttää tiliä, jos menetät puhelimesi. Jos olet hukannut palautuskoodit, voit luoda uudet tästä. Vanhat palautuskoodit poistetaan käytöstä.
    methods: Kaksivaiheisen tunnistautumisen menetelmät
    lost_recovery_codes: Palautuskoodien avulla voit käyttää tiliä, jos menetät puhelimesi. Jos olet hukannut palautuskoodisi, voit luoda uudet tästä. Vanhat palautuskoodit poistetaan käytöstä.
    methods: Kaksivaiheisen todennuksen menetelmät
    otp: Todennussovellus
    recovery_codes: Varapalautuskoodit
    recovery_codes: Ota palautuskoodit talteen
    recovery_codes_regenerated: Uusien palautuskoodien luonti onnistui
    recovery_instructions_html: Jos menetät puhelimesi, voit kirjautua tilillesi jollakin alla olevista palautuskoodeista. <strong>Pidä palautuskoodit hyvässä tallessa</strong>. Voit esimerkiksi tulostaa ne ja säilyttää muiden tärkeiden papereiden joukossa.
    webauthn: Suojausavaimet


@@ 1776,7 1776,7 @@ fi:
      change_password: vaihda salasanasi
      details: 'Tässä on tiedot kirjautumisesta:'
      explanation: Olemme havainneet kirjautumisen tilillesi uudesta IP-osoitteesta.
      further_actions_html: Jos tämä et ollut sinä, suosittelemme että %{action} välittömästi ja ota kaksivaiheinen todennus käyttöön säilyttääksesi tilisi turvallisena.
      further_actions_html: Jos tämä et ollut sinä, suosittelemme, että %{action} heti ja otat käyttöön kaksivaiheisen todennuksen pitääksesi tilisi turvassa.
      subject: Tiliäsi on käytetty uudesta IP-osoitteesta
      title: Uusi kirjautuminen
    warning:


@@ 1828,26 1828,26 @@ fi:
    seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.
    signed_in_as: 'Kirjautunut tilillä:'
  verification:
    extra_instructions_html: <strong>Vinkki:</strong> Tämä linkitys verkkosivustollasi voidaan toteuttaa myös näkymättömänä. Tärkeä osuus on <code>rel="me"</code> -määre, jolla ehkäistään valeprofiilikäyttötarkoituksia sivustoilla, joiden sisältö perustuu käyttäjiensä julkaisuihin. Voit siis käyttää linkkiviittauselementtiä <code>link</code> HTML-lähdekoodin otsakeosassa (head) sen sijaan, että käyttäisit näkyvää hyperlinkkielementtiä <code>a</code>. HTML-lähdekoodin tulee tuolta osin kuitenkin olla JavaScriptistä riippumatonta.
    extra_instructions_html: <strong>Vinkki:</strong> Verkkosivustollasi oleva linkki voi olla myös näkymätön. Olennainen osuus on <code>rel="me"</code>, joka estää toiseksi henkilöksi tekeytymisen verkkosivustoilla, joilla on käyttäjien luomaa sisältöä. Voit käyttää jopa <code>link</code>-elementtiä sivun <code>head</code>-osassa elementin <code>a</code> sijaan, mutta HTML:n pitää olla käytettävissä ilman JavaScript-koodin suorittamista.
    here_is_how: Näin voit tehdä sen
    hint_html: "<strong>Mastodonissa henkilöllisyyden vahventaminen on jokaisen käyttäjän ulottuvilla.</strong> Tämä perustuu avoimiin standardeihin, maksuttomasti nyt ja aina. Kaikki mitä tarvitset on henkilökohtainen verkkosivusto, jonka avulla sinut voidaan tunnistaa. Kun Mastodon-profiilistasi on linkki kyseiselle verkkosivustollesi, ja sieltä löytyy vastaviittaus tai -linkitys profiiliisi, näkyy profiilissasi vahvistustunniste."
    instructions_html: Kopioi ja liitä alla oleva koodi verkkosivusi HTML-lähdekoodiin. Lisää sitten verkkosivustosi osoite johonkin ylimääräisistä kentistä profiiliasetuksissa, "Muokkaa profiilia" -välilehdestä, ja tallenna muutokset.
    hint_html: "<strong>Henkilöllisyyden vahvistaminen on Mastodonissa jokaisen käyttäjän ulottuvilla.</strong> Se perustuu avoimiin standardeihin ja on maksutonta nyt ja aina. Tarvitset vain henkilökohtaisen verkkosivuston, jonka perusteella sinut voidaan tunnistaa. Kun teet linkin tuolle verkkosivulle profiilistasi, tarkistamme, että verkkosivustolla on linkki takaisin profiiliisi, ja näytämme profiilissasi visuaalisen ilmaisimen."
    instructions_html: Kopioi ja liitä alla oleva koodi verkkosivustosi HTML-lähdekoodiin. Lisää sitten verkkosivustosi osoite johonkin profiilisi lisäkentistä ”Muokkaa profiilia” -välilehdellä ja tallenna muutokset.
    verification: Vahvistus
    verified_links: Vahvistetut linkkisi
  webauthn_credentials:
    add: Lisää uusi suojausavain
    create:
      error: Suojausavaimen lisäämisessä tapahtui ongelma. Yritä uudelleen.
      success: Sinun suojausavaimen lisääminen onnistui.
      error: Suojausavaimen lisäämisessä oli ongelma. Yritä uudelleen.
      success: Suojausavaimesi lisääminen onnistui.
    delete: Poista
    delete_confirmation: Haluatko varmasti poistaa tämän suojausavaimen?
    description_html: Jos otat <strong>suojausavaimen todennuksen</strong> käyttöön, kirjautuminen edellyttää jonkin suojausavaimen käyttämistä.
    destroy:
      error: Suojausavaimen poistamisessa tapahtui ongelma. Yritä uudelleen.
      success: Sinun suojausavaimen poistaminen onnistui.
      error: Suojausavaimen poistamisessa oli ongelma. Yritä uudelleen.
      success: Suojausavaimesi poistaminen onnistui.
    invalid_credential: Virheellinen suojausavain
    nickname_hint: Anna nimimerkki uudelle suojausavaimelle
    nickname_hint: Anna uuden suojausaivaimesi lempinimi
    not_enabled: Et ole vielä ottanut käyttöön WebAuthn-ohjelmaa
    not_supported: Tämä selain ei tue suojausavaimia
    otp_required: Jos haluat käyttää suojausavaimia, ota ensin käyttöön kaksivaiheinen todennus.
    otp_required: Jos haluat käyttää suojausavaimia, ota ensin kaksivaiheinen todennus käyttöön.
    registered_on: Rekisteröity %{date}

M config/locales/simple_form.fi.yml => config/locales/simple_form.fi.yml +31 -31
@@ 11,9 11,9 @@ fi:
        show_collections: Käyttäjät voivat selata seurattujasi ja seuraajiasi. Käyttäjät, joita seuraat, näkevät joka tapauksessa, että seuraat heitä.
        unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntää. Poista valinta, jos haluat tarkistaa ja hyväksyä tai hylätä vastaanottamasi seuraamispyynnöt.
      account_alias:
        acct: Määrittele käyttäjän käyttäjänimi@verkkotunnus, josta haluat siirtyä
        acct: Määrittele sen tilin käyttäjänimi@verkkotunnus, josta haluat siirtyä
      account_migration:
        acct: Määrittele käyttäjän käyttäjänimi@verkkotunnus, johon haluat siirtyä
        acct: Määrittele sen tilin käyttäjänimi@verkkotunnus, johon haluat siirtyä
      account_warning_preset:
        text: Voit käyttää julkaisun syntaksia, kuten URL-osoitteita, aihetunnisteita ja mainintoja
        title: Valinnainen. Ei näy vastaanottajalle


@@ 41,7 41,7 @@ fi:
        autofollow: Henkilöt, jotka rekisteröityvät kutsun kautta, seuraavat sinua automaattisesti
        avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
        bot: Tämä tili suorittaa enimmäkseen automaattisia toimintoja eikä sitä ehkä valvota
        context: Yksi tai useampi asiayhteys, jossa suodattimen pitäisi olla käytössä
        context: Ainakin yksi konteksti, jossa suodattimen pitäisi olla voimassa
        current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana
        current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus
        digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana


@@ 54,15 54,15 @@ fi:
        phrase: Täsmää riippumatta tekstin aakkoslajista tai julkaisun sisältövaroituksesta
        scopes: Mihin sovellusliittymiin sovellus pääsee käsiksi. Jos valitset ylätason laajuuden, sinun ei tarvitse valita yksittäisiä.
        setting_aggregate_reblogs: Älä näytä uusia tehostuksia julkaisuille, joita on äskettäin tehostettu (koskee vain juuri vastaanotettuja tehostuksia)
        setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät aktiivisesti Mastodonia
        setting_default_sensitive: Arkaluontoinen media on oletuksena piilotettu ja se voidaan näyttää yhdellä napsautuksella
        setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät Mastodonia aktiivisesti
        setting_default_sensitive: Arkaluonteinen media on oletuksena piilotettu, ja se voidaan näyttää yhdellä napsautuksella
        setting_display_media_default: Piilota arkaluonteiseksi merkitty media
        setting_display_media_hide_all: Piilota media aina
        setting_display_media_show_all: Näytä media aina
        setting_use_blurhash: Liukuvärit perustuvat piilotettujen kuvien väreihin, mutta sumentavat yksityiskohdat
        setting_use_pending_items: Piilota aikajanan päivitykset napsautuksen taakse syötteen automaattisen vierityksen sijaan
        username: Voit käyttää kirjaimia, numeroita ja alaviivoja
        whole_word: Kun avainsana tai lause on vain aakkosnumeerinen, se otetaan käyttöön, jos se vastaa koko sanaa
        whole_word: Kun avainsana tai -fraasi on kokonaan aakkosnumeerinen, se on voimassa vain, jos se vastaa koko sanaa
      domain_allow:
        domain: Tämä verkkotunnus voi noutaa tietoja tältä palvelimelta ja sieltä saapuvat tiedot käsitellään ja tallennetaan
      email_domain_block:


@@ 71,7 71,7 @@ fi:
      featured_tag:
        name: 'Tässä muutamia hiljattain käyttämiäsi aihetunnisteita:'
      filters:
        action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta
        action: Valitse, mikä toiminto suoritetaan, kun julkaisu vastaa suodatinta
        actions:
          hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa
          warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen nimi


@@ 126,7 126,7 @@ fi:
      tag:
        name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi
      user:
        chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla
        chosen_languages: Kun valittu, vain valituilla kielillä kirjoitetut julkaisut näkyvät julkisilla aikajanoilla
        role: Rooli määrää, mitkä käyttöoikeudet käyttäjällä on
      user_role:
        color: Väri, jota käytetään roolin koko käyttöliittymässä, RGB heksamuodossa


@@ 148,21 148,21 @@ fi:
        show_collections: Näytä seuratut ja seuraajat profiilissa
        unlocked: Hyväksy uudet seuraajat automaattisesti
      account_alias:
        acct: Vanhan tilin käsittely
        acct: Vanhan tilin käyttäjätunnus
      account_migration:
        acct: Uuden tilin käsittely
        acct: Uuden tilin käyttäjätunnus
      account_warning_preset:
        text: Esiasetettu teksti
        title: Otsikko
        title: Nimi
      admin_account_action:
        include_statuses: Sisällytä raportoidut viestit sähköpostiin
        send_email_notification: Ilmoita käyttäjälle sähköpostitse
        text: Mukautettu varoitus
        type: Toimenpide
        type: Toimi
        types:
          disable: Poista kirjautuminen käytöstä
          none: Älä tee mitään
          sensitive: Arkaluontoinen
          sensitive: Arkaluonteinen
          silence: Hiljennä
          suspend: Poista käytöstä ja tuhoa käyttäjätunnuksen tiedot peruuttamattomasti
        warning_preset_id: Käytä varoitusmallia


@@ 181,7 181,7 @@ fi:
        chosen_languages: Suodata kieliä
        confirm_new_password: Vahvista uusi salasana
        confirm_password: Vahvista salasana
        context: Suodata konteksteista
        context: Suodattimen kontekstit
        current_password: Nykyinen salasana
        data: Tiedot
        display_name: Näyttönimi


@@ 198,15 198,15 @@ fi:
        note: Elämäkerta
        otp_attempt: Kaksivaiheisen tunnistuksen koodi
        password: Salasana
        phrase: Avainsana tai lause
        setting_advanced_layout: Ota käyttöön edistynyt selainkäyttöliittymä
        setting_aggregate_reblogs: Ryhmitä tehostukset aikajanalla
        setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia
        phrase: Avainsana tai -fraasi
        setting_advanced_layout: Ota edistynyt selainkäyttöliittymä käyttöön
        setting_aggregate_reblogs: Ryhmitä tehostukset aikajanoilla
        setting_always_send_emails: Lähetä sähköposti-ilmoitukset aina
        setting_auto_play_gif: Toista GIF-animaatiot automaattisesti
        setting_boost_modal: Kysy vahvistusta ennen tehostusta
        setting_default_language: Viestien kieli
        setting_default_privacy: Viestin näkyvyys
        setting_default_sensitive: Merkitse media aina arkaluontoiseksi
        setting_default_language: Julkaisun kieli
        setting_default_privacy: Julkaisun näkyvyys
        setting_default_sensitive: Merkitse media aina arkaluonteiseksi
        setting_delete_modal: Kysy vahvistusta ennen julkaisun poistamista
        setting_disable_swiping: Poista pyyhkäisyt käytöstä
        setting_display_media: Median näyttäminen


@@ 224,7 224,7 @@ fi:
        setting_use_pending_items: Hidas tila
        severity: Vakavuus
        sign_in_token_attempt: Turvakoodi
        title: Otsikko
        title: Nimi
        type: Tuontilaji
        username: Käyttäjänimi
        username_or_email: Käyttäjänimi tai sähköposti


@@ 236,7 236,7 @@ fi:
      filters:
        actions:
          hide: Piilota kokonaan
          warn: Piilota varoituksella
          warn: Piilota ja näytä varoitus
      form_admin_settings:
        activity_api_enabled: Julkaise yhteenlasketut tilastot käyttäjätoiminnasta rajapinnassa
        backups_retention_period: Käyttäjän arkiston säilytysaika


@@ 268,14 268,14 @@ fi:
      interactions:
        must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua
        must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa
        must_be_following_dm: Estä suorat viestit käyttäjiltä, joita et seuraa
        must_be_following_dm: Estä yksityisviestit käyttäjiltä, joita et seuraa
      invite:
        comment: Kommentoi
      invite_request:
        text: Miksi haluat liittyä?
      ip_block:
        comment: Kommentti
        ip: IP
        ip: IP-osoite
        severities:
          no_access: Estä pääsy
          sign_up_block: Estä kirjautumiset


@@ 284,11 284,11 @@ fi:
      notification_emails:
        appeal: Joku valittaa valvojan päätöksestä
        digest: Lähetä koosteviestejä sähköpostitse
        favourite: Lähetä sähköposti, kun joku tykkää tilastasi
        follow: Lähetä sähköposti, kun joku seuraa sinua
        follow_request: Lähetä sähköposti, kun joku pyytää seurata sinua
        mention: Lähetä sähköposti, kun sinut mainitaan
        pending_account: Uusi tili tarvitsee tarkastusta
        favourite: Joku lisäsi julkaisusi suosikkeihinsa
        follow: Joku seurasi sinua
        follow_request: Joku pyysi saada seurata sinua
        mention: Joku mainitsi sinut
        pending_account: Uusi tili tarvitsee tarkistusta
        reblog: Joku tehosti julkaisuasi
        report: Uusi raportti on lähetetty
        software_updates:


@@ 297,7 297,7 @@ fi:
          label: Uusi Mastodon-versio on saatavilla
          none: Älä koskaan ilmoita päivityksistä (ei suositeltu)
          patch: Ilmoita virhekorjauspäivityksistä
        trending_tag: Uusi trendi vaatii tarkastelua
        trending_tag: Uusi trendi vaatii tarkistusta
      rule:
        text: Sääntö
      settings:

M package.json => package.json +1 -1
@@ 175,7 175,7 @@
    "@types/react-dom": "^18.2.4",
    "@types/react-helmet": "^6.1.6",
    "@types/react-immutable-proptypes": "^2.1.0",
    "@types/react-motion": "^0.0.34",
    "@types/react-motion": "^0.0.35",
    "@types/react-overlays": "^3.1.0",
    "@types/react-router-dom": "^5.3.3",
    "@types/react-select": "^5.0.1",

M yarn.lock => yarn.lock +121 -109
@@ 1096,13 1096,20 @@
  dependencies:
    regenerator-runtime "^0.12.0"

"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
  version "7.22.15"
  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8"
  integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==
  dependencies:
    regenerator-runtime "^0.14.0"

"@babel/runtime@^7.9.2":
  version "7.23.1"
  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d"
  integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==
  dependencies:
    regenerator-runtime "^0.14.0"

"@babel/template@^7.22.15", "@babel/template@^7.22.5":
  version "7.22.15"
  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"


@@ 1298,7 1305,12 @@
  dependencies:
    eslint-visitor-keys "^3.3.0"

"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
"@eslint-community/regexpp@^4.5.1":
  version "4.9.0"
  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.0.tgz#7ccb5f58703fa61ffdcbf39e2c604a109e781162"
  integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==

"@eslint-community/regexpp@^4.6.1":
  version "4.8.1"
  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c"
  integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==


@@ 2305,9 2317,9 @@
  integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==

"@types/node@*":
  version "20.6.5"
  resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258"
  integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==
  version "20.7.1"
  resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514"
  integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==

"@types/node@14 || 16 || 17":
  version "17.0.45"


@@ 2374,31 2386,31 @@
  integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==

"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.4":
  version "18.2.7"
  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63"
  integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==
  version "18.2.8"
  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.8.tgz#338f1b0a646c9f10e0a97208c1d26b9f473dffd6"
  integrity sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==
  dependencies:
    "@types/react" "*"

"@types/react-helmet@^6.1.6":
  version "6.1.6"
  resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.6.tgz#7d1afd8cbf099616894e8240e9ef70e3c6d7506d"
  integrity sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==
  version "6.1.7"
  resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.7.tgz#4cecc03165084727408d29d92d8fdd4a7e267403"
  integrity sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig==
  dependencies:
    "@types/react" "*"

"@types/react-immutable-proptypes@^2.1.0":
  version "2.1.0"
  resolved "https://registry.yarnpkg.com/@types/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#c045fb48ba28c34c9d759abc3a51a04b5321b77a"
  integrity sha512-NRH4W4mgymzyM2gnAG+i2VoOdWIBOQlJlSyAgnFiBTdJ0l8IVeyCtdWP8g6Lra59sUBj2XUO/+DkfmrRAxj6UA==
  version "2.1.1"
  resolved "https://registry.yarnpkg.com/@types/react-immutable-proptypes/-/react-immutable-proptypes-2.1.1.tgz#9327e09b07ea61c95a8c99869a5e9f0fc1690cc4"
  integrity sha512-PiVos0qCotGqI+J0kOeFhbeg7zK8StPMTSDGaTtgYkX6UPjuVVS7lJMedyt4kAMFbM/2QE0bbP5jh22WqtspQg==
  dependencies:
    "@types/prop-types" "*"
    immutable "^3.8.2"

"@types/react-motion@^0.0.34":
  version "0.0.34"
  resolved "https://registry.yarnpkg.com/@types/react-motion/-/react-motion-0.0.34.tgz#789ff2063e2f7fbb6085d291135c442e8b35291a"
  integrity sha512-/rFI22Vg4Xzb47hXtS06WkzUGRu+Vb3yDleuxiqzGj0JbXYXQUCgwSa2ZU12K7ubKi4C8xsdIN3xt4Z4fjSdPw==
"@types/react-motion@^0.0.35":
  version "0.0.35"
  resolved "https://registry.yarnpkg.com/@types/react-motion/-/react-motion-0.0.35.tgz#63002d85791dc9c7c212044c7b89dfff99cd0b51"
  integrity sha512-7e0rlyG4wgvL1F5G8FMpgEYgPF54i7tmOy3b9KSp6kPjU2hEAV6BiRrl3qMPGrJXZ9soH/OlUYx1Ae5C9AJLGA==
  dependencies:
    "@types/react" "*"



@@ 2434,23 2446,23 @@
    react-select "*"

"@types/react-sparklines@^1.7.2":
  version "1.7.2"
  resolved "https://registry.yarnpkg.com/@types/react-sparklines/-/react-sparklines-1.7.2.tgz#c14e80623abd3669a10f18d13f6fb9fbdc322f70"
  integrity sha512-N1GwO7Ri5C5fE8+CxhiDntuSw1qYdGytBuedKrCxWpaojXm4WnfygbdBdc5sXGX7feMxDXBy9MNhxoUTwrMl4A==
  version "1.7.3"
  resolved "https://registry.yarnpkg.com/@types/react-sparklines/-/react-sparklines-1.7.3.tgz#cdcbeea734bae191011d8f42ef20d794e55b9064"
  integrity sha512-fU88CytKUp/aT8CsaWCNOgcvto5OoINj717z9l0a6OiLiz4EhojRW3c6dSwawM9VjKOIJZMXobSRbbJt7MCtsw==
  dependencies:
    "@types/react" "*"

"@types/react-swipeable-views@^0.13.1":
  version "0.13.2"
  resolved "https://registry.yarnpkg.com/@types/react-swipeable-views/-/react-swipeable-views-0.13.2.tgz#c37cc8978ae60ab0dff209ef3eb1f77185aef330"
  integrity sha512-FiszBm9M0JicAgzO/IwDqpfHQRUEjPZA88UexYsVD6qHJBf5LrbGjR5Mw4+yZbf8ZxJneNqOsZbe4WGjOYG7iQ==
  version "0.13.3"
  resolved "https://registry.yarnpkg.com/@types/react-swipeable-views/-/react-swipeable-views-0.13.3.tgz#a4c545b7b722c2622806e5853a96ec5826b0bafb"
  integrity sha512-gVAQb5AxZTSLVTrJ/Fxwsk0axdBqGzXC8NxAD8MNwEf+qZynsb+15KL9TpNCaGGk4SCE2iyU/JNi6nGNB61AyA==
  dependencies:
    "@types/react" "*"

"@types/react-test-renderer@^18.0.0":
  version "18.0.2"
  resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.2.tgz#44243977eec18ab8cda88d8977437f47a0d3fdbe"
  integrity sha512-tJzMn+9GHDrdrLe0O4rwJELDfTrmdJbCn/UdYyzjlnPiXYXDl5FBNzdw4PVk2R3hJvSHKFjZcRgvZc12lV0p5Q==
  version "18.0.3"
  resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz#67922bf5e5f0096581b1efd67dcdeabdd400cfea"
  integrity sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA==
  dependencies:
    "@types/react" "*"



@@ 2476,18 2488,18 @@
    "@types/react" "*"

"@types/react@*", "@types/react@16 || 17 || 18", "@types/react@>=16.9.11", "@types/react@^18.0.26", "@types/react@^18.2.7":
  version "18.2.22"
  resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.22.tgz#abe778a1c95a07fa70df40a52d7300a40b949ccb"
  integrity sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==
  version "18.2.23"
  resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.23.tgz#60ad6cf4895e93bed858db0e03bcc4ff97d0410e"
  integrity sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA==
  dependencies:
    "@types/prop-types" "*"
    "@types/scheduler" "*"
    csstype "^3.0.2"

"@types/redux-immutable@^4.0.3":
  version "4.0.3"
  resolved "https://registry.yarnpkg.com/@types/redux-immutable/-/redux-immutable-4.0.3.tgz#db92a281aa9a55a7b63bc1f20a233790305a1f06"
  integrity sha512-wXUApt9ib9MGUqoHUMbQmQhqCkvykMHBW3z/P7DISMigFGpGRQ0kkbv7we0XNiv5sYEtEiZzNCEDm+W6ei04DA==
  version "4.0.4"
  resolved "https://registry.yarnpkg.com/@types/redux-immutable/-/redux-immutable-4.0.4.tgz#091641dea366ceed4f8b228a08a0de5f380b9bfd"
  integrity sha512-qPFra/qd6HX7+bxayxwM9bsGdMoF7QhTGW/ZJFiaoBZVDZEnQEQCrDhsbSW8Xpuihe6xJ0TRHG3/WTvQpHLGaQ==
  dependencies:
    immutable "^4.0.0-rc.1"
    redux "^4.0.0"


@@ 2505,14 2517,14 @@
    "@types/node" "*"

"@types/scheduler@*":
  version "0.16.3"
  resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
  integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
  version "0.16.4"
  resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf"
  integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==

"@types/semver@^7.5.0":
  version "7.5.2"
  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564"
  integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==
  version "7.5.3"
  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04"
  integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==

"@types/send@*":
  version "0.17.1"


@@ 2532,9 2544,9 @@
    "@types/node" "*"

"@types/source-list-map@*":
  version "0.1.2"
  resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
  integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
  version "0.1.3"
  resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.3.tgz#077e15c87fe06520e30396a533bd9848e735ce9b"
  integrity sha512-I9R/7fUjzUOyDy6AFkehCK711wWoAXEaBi80AfjZt1lIkbe6AcXKd3ckQc3liMvQExWvfOeh/8CtKzrfUFN5gA==

"@types/stack-utils@^2.0.0":
  version "2.0.1"


@@ 2542,9 2554,9 @@
  integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==

"@types/tapable@^1":
  version "1.0.8"
  resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
  integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==
  version "1.0.9"
  resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.9.tgz#1481a4236267dd2d0ca2a637adb90f0ccb3d69c4"
  integrity sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==

"@types/tough-cookie@*":
  version "4.0.2"


@@ 2557,9 2569,9 @@
  integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==

"@types/uglify-js@*":
  version "3.17.1"
  resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5"
  integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==
  version "3.17.2"
  resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.2.tgz#a2ba86fd524f6281a7655463338c546f845b29c3"
  integrity sha512-9SjrHO54LINgC/6Ehr81NjAxAYvwEZqjUHLjJYvC4Nmr9jbLQCIZbWSvl4vXQkkmR1UAuaKDycau3O1kWGFyXQ==
  dependencies:
    source-map "^0.6.1"



@@ 2579,18 2591,18 @@
  integrity sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==

"@types/webpack-sources@*":
  version "3.2.0"
  resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b"
  integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==
  version "3.2.1"
  resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.1.tgz#98670b35fa799c44ac235910f3fda9bfdcdbc2c6"
  integrity sha512-iLC3Fsx62ejm3ST3PQ8vBMC54Rb3EoCprZjeJGI5q+9QjfDLGt9jeg/k245qz1G9AQnORGk0vqPicJFPT1QODQ==
  dependencies:
    "@types/node" "*"
    "@types/source-list-map" "*"
    source-map "^0.7.3"

"@types/webpack@^4.41.33":
  version "4.41.33"
  resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc"
  integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==
  version "4.41.34"
  resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.34.tgz#8cf616be84b39c8fb26f9459d4470a5514df2477"
  integrity sha512-CN2aOGrR3zbMc2v+cKqzaClYP1ldkpPOgtdNvgX+RmlWCSWxHxpzz6WSCVQZRkF8D60ROlkRzAoEpgjWQ+bd2g==
  dependencies:
    "@types/node" "*"
    "@types/tapable" "^1"


@@ 2605,22 2617,22 @@
  integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==

"@types/yargs@^17.0.24", "@types/yargs@^17.0.8":
  version "17.0.25"
  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc"
  integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==
  version "17.0.26"
  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.26.tgz#388e5002a8b284ad7b4599ba89920a6d74d8d79a"
  integrity sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==
  dependencies:
    "@types/yargs-parser" "*"

"@typescript-eslint/eslint-plugin@^6.0.0":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz#f18cc75c9cceac8080a9dc2e7d166008c5207b9f"
  integrity sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz#d98046e9f7102d49a93d944d413c6055c47fafd7"
  integrity sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==
  dependencies:
    "@eslint-community/regexpp" "^4.5.1"
    "@typescript-eslint/scope-manager" "6.7.2"
    "@typescript-eslint/type-utils" "6.7.2"
    "@typescript-eslint/utils" "6.7.2"
    "@typescript-eslint/visitor-keys" "6.7.2"
    "@typescript-eslint/scope-manager" "6.7.3"
    "@typescript-eslint/type-utils" "6.7.3"
    "@typescript-eslint/utils" "6.7.3"
    "@typescript-eslint/visitor-keys" "6.7.3"
    debug "^4.3.4"
    graphemer "^1.4.0"
    ignore "^5.2.4"


@@ 2629,31 2641,31 @@
    ts-api-utils "^1.0.1"

"@typescript-eslint/parser@^6.0.0":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.2.tgz#e0ae93771441b9518e67d0660c79e3a105497af4"
  integrity sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==
  dependencies:
    "@typescript-eslint/scope-manager" "6.7.2"
    "@typescript-eslint/types" "6.7.2"
    "@typescript-eslint/typescript-estree" "6.7.2"
    "@typescript-eslint/visitor-keys" "6.7.2"
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.3.tgz#aaf40092a32877439e5957e18f2d6a91c82cc2fd"
  integrity sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==
  dependencies:
    "@typescript-eslint/scope-manager" "6.7.3"
    "@typescript-eslint/types" "6.7.3"
    "@typescript-eslint/typescript-estree" "6.7.3"
    "@typescript-eslint/visitor-keys" "6.7.3"
    debug "^4.3.4"

"@typescript-eslint/scope-manager@6.7.2":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz#cf59a2095d2f894770c94be489648ad1c78dc689"
  integrity sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==
"@typescript-eslint/scope-manager@6.7.3":
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz#07e5709c9bdae3eaf216947433ef97b3b8b7d755"
  integrity sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==
  dependencies:
    "@typescript-eslint/types" "6.7.2"
    "@typescript-eslint/visitor-keys" "6.7.2"
    "@typescript-eslint/types" "6.7.3"
    "@typescript-eslint/visitor-keys" "6.7.3"

"@typescript-eslint/type-utils@6.7.2":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz#ed921c9db87d72fa2939fee242d700561454f367"
  integrity sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==
"@typescript-eslint/type-utils@6.7.3":
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz#c2c165c135dda68a5e70074ade183f5ad68f3400"
  integrity sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==
  dependencies:
    "@typescript-eslint/typescript-estree" "6.7.2"
    "@typescript-eslint/utils" "6.7.2"
    "@typescript-eslint/typescript-estree" "6.7.3"
    "@typescript-eslint/utils" "6.7.3"
    debug "^4.3.4"
    ts-api-utils "^1.0.1"



@@ 2662,10 2674,10 @@
  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f"
  integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==

"@typescript-eslint/types@6.7.2":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.2.tgz#75a615a6dbeca09cafd102fe7f465da1d8a3c066"
  integrity sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==
"@typescript-eslint/types@6.7.3":
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.3.tgz#0402b5628a63f24f2dc9d4a678e9a92cc50ea3e9"
  integrity sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==

"@typescript-eslint/typescript-estree@5.62.0":
  version "5.62.0"


@@ 2680,30 2692,30 @@
    semver "^7.3.7"
    tsutils "^3.21.0"

"@typescript-eslint/typescript-estree@6.7.2":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz#ce5883c23b581a5caf878af641e49dd0349238c7"
  integrity sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==
"@typescript-eslint/typescript-estree@6.7.3":
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz#ec5bb7ab4d3566818abaf0e4a8fa1958561b7279"
  integrity sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==
  dependencies:
    "@typescript-eslint/types" "6.7.2"
    "@typescript-eslint/visitor-keys" "6.7.2"
    "@typescript-eslint/types" "6.7.3"
    "@typescript-eslint/visitor-keys" "6.7.3"
    debug "^4.3.4"
    globby "^11.1.0"
    is-glob "^4.0.3"
    semver "^7.5.4"
    ts-api-utils "^1.0.1"

"@typescript-eslint/utils@6.7.2":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.2.tgz#b9ef0da6f04932167a9222cb4ac59cb187165ebf"
  integrity sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==
"@typescript-eslint/utils@6.7.3":
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.3.tgz#96c655816c373135b07282d67407cb577f62e143"
  integrity sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==
  dependencies:
    "@eslint-community/eslint-utils" "^4.4.0"
    "@types/json-schema" "^7.0.12"
    "@types/semver" "^7.5.0"
    "@typescript-eslint/scope-manager" "6.7.2"
    "@typescript-eslint/types" "6.7.2"
    "@typescript-eslint/typescript-estree" "6.7.2"
    "@typescript-eslint/scope-manager" "6.7.3"
    "@typescript-eslint/types" "6.7.3"
    "@typescript-eslint/typescript-estree" "6.7.3"
    semver "^7.5.4"

"@typescript-eslint/visitor-keys@5.62.0":


@@ 2714,12 2726,12 @@
    "@typescript-eslint/types" "5.62.0"
    eslint-visitor-keys "^3.3.0"

"@typescript-eslint/visitor-keys@6.7.2":
  version "6.7.2"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz#4cb2bd786f1f459731b0ad1584c9f73e1c7a4d5c"
  integrity sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==
"@typescript-eslint/visitor-keys@6.7.3":
  version "6.7.3"
  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz#83809631ca12909bd2083558d2f93f5747deebb2"
  integrity sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==
  dependencies:
    "@typescript-eslint/types" "6.7.2"
    "@typescript-eslint/types" "6.7.3"
    eslint-visitor-keys "^3.4.1"

"@webassemblyjs/ast@1.9.0":


@@ 9738,9 9750,9 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
  integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==

postcss@^8.2.15, postcss@^8.4.24, postcss@^8.4.25:
  version "8.4.30"
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7"
  integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==
  version "8.4.31"
  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
  integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
  dependencies:
    nanoid "^3.3.6"
    picocolors "^1.0.0"