about summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/adguardhome/bins.nix16
-rw-r--r--pkgs/servers/adguardhome/default.nix2
-rw-r--r--pkgs/servers/amqp/rabbitmq-server/default.nix6
-rw-r--r--pkgs/servers/asterisk/default.nix42
-rw-r--r--pkgs/servers/asterisk/versions.json20
-rw-r--r--pkgs/servers/atlassian/bamboo.nix4
-rw-r--r--pkgs/servers/atlassian/confluence.nix6
-rw-r--r--pkgs/servers/atlassian/jira.nix6
-rw-r--r--pkgs/servers/caddy/default.nix8
-rw-r--r--pkgs/servers/calibre-web/default.nix4
-rw-r--r--pkgs/servers/computing/slurm/default.nix4
-rw-r--r--pkgs/servers/confluent-platform/default.nix4
-rw-r--r--pkgs/servers/consul/default.nix6
-rw-r--r--pkgs/servers/dendrite/default.nix6
-rw-r--r--pkgs/servers/dex/default.nix4
-rw-r--r--pkgs/servers/dgraph/default.nix27
-rw-r--r--pkgs/servers/dns/doh-proxy/default.nix40
-rw-r--r--pkgs/servers/dns/pdns-recursor/default.nix4
-rw-r--r--pkgs/servers/dns/pdns/default.nix5
-rw-r--r--pkgs/servers/documize-community/default.nix1
-rw-r--r--pkgs/servers/echoip/default.nix2
-rw-r--r--pkgs/servers/firebird/default.nix5
-rw-r--r--pkgs/servers/foundationdb/vsmake.nix4
-rw-r--r--pkgs/servers/ftp/kamid/default.nix38
-rw-r--r--pkgs/servers/gemini/gmid/default.nix8
-rw-r--r--pkgs/servers/gerbera/default.nix4
-rw-r--r--pkgs/servers/gortr/default.nix3
-rw-r--r--pkgs/servers/grocy/default.nix4
-rw-r--r--pkgs/servers/haste-server/default.nix62
-rw-r--r--pkgs/servers/haste-server/node-composition.nix17
-rw-r--r--pkgs/servers/haste-server/node-deps.nix1551
-rw-r--r--pkgs/servers/haste-server/node-env.nix588
-rwxr-xr-xpkgs/servers/haste-server/update.sh28
-rw-r--r--pkgs/servers/hasura/cli.nix2
-rw-r--r--pkgs/servers/hbase/default.nix69
-rw-r--r--pkgs/servers/home-assistant/cli.nix20
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix4186
-rw-r--r--pkgs/servers/home-assistant/default.nix13
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py59
-rw-r--r--pkgs/servers/home-assistant/tests.nix18
-rw-r--r--pkgs/servers/hqplayerd/default.nix32
-rw-r--r--pkgs/servers/http/envoy/default.nix13
-rw-r--r--pkgs/servers/http/gitlab-pages/default.nix6
-rw-r--r--pkgs/servers/http/micro-httpd/default.nix1
-rw-r--r--pkgs/servers/http/nginx/generic.nix7
-rw-r--r--pkgs/servers/http/nginx/stable.nix9
-rw-r--r--pkgs/servers/http/pomerium/default.nix6
-rw-r--r--pkgs/servers/http/trafficserver/default.nix3
-rw-r--r--pkgs/servers/http/webfs/default.nix1
-rw-r--r--pkgs/servers/hydron/default.nix12
-rw-r--r--pkgs/servers/icingaweb2/default.nix4
-rw-r--r--pkgs/servers/imgproxy/default.nix2
-rw-r--r--pkgs/servers/irker/default.nix1
-rw-r--r--pkgs/servers/jellyfin/default.nix1
-rw-r--r--pkgs/servers/jellyfin/node-composition.nix2
-rw-r--r--pkgs/servers/jellyfin/node-deps.nix3137
-rwxr-xr-xpkgs/servers/jellyfin/web-update.sh2
-rw-r--r--pkgs/servers/jellyfin/web.nix1
-rw-r--r--pkgs/servers/kapowbang/default.nix1
-rw-r--r--pkgs/servers/keycloak/default.nix100
-rw-r--r--pkgs/servers/klipper/default.nix8
-rw-r--r--pkgs/servers/mail/archiveopteryx/default.nix10
-rw-r--r--pkgs/servers/mail/clamsmtp/default.nix1
-rw-r--r--pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix4
-rw-r--r--pkgs/servers/mail/mailman/default.nix8
-rw-r--r--pkgs/servers/mail/postfix/default.nix11
-rw-r--r--pkgs/servers/mail/rspamd/default.nix8
-rw-r--r--pkgs/servers/mail/system-sendmail/default.nix1
-rw-r--r--pkgs/servers/mastodon/default.nix2
-rw-r--r--pkgs/servers/mastodon/gemset.nix93
-rw-r--r--pkgs/servers/mastodon/source.nix4
-rw-r--r--pkgs/servers/mastodon/update.nix4
-rwxr-xr-xpkgs/servers/mastodon/update.sh44
-rw-r--r--pkgs/servers/mastodon/version.nix2
-rw-r--r--pkgs/servers/matrix-corporal/default.nix1
-rw-r--r--pkgs/servers/matrix-synapse/default.nix4
-rw-r--r--pkgs/servers/matrix-synapse/matrix-appservice-slack/default.nix4
-rwxr-xr-xpkgs/servers/matrix-synapse/matrix-appservice-slack/generate-dependencies.sh6
-rw-r--r--pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix22
-rw-r--r--pkgs/servers/matrix-synapse/plugins/shared-secret-auth.nix4
-rw-r--r--pkgs/servers/matrix-synapse/tools/synadm.nix4
-rw-r--r--pkgs/servers/matterbridge/default.nix4
-rw-r--r--pkgs/servers/mautrix-signal/default.nix4
-rw-r--r--pkgs/servers/mautrix-whatsapp/default.nix6
-rw-r--r--pkgs/servers/memcached/default.nix4
-rw-r--r--pkgs/servers/misc/oven-media-engine/default.nix6
-rw-r--r--pkgs/servers/monitoring/alerta/client.nix4
-rw-r--r--pkgs/servers/monitoring/alerta/default.nix13
-rw-r--r--pkgs/servers/monitoring/cadvisor/default.nix6
-rw-r--r--pkgs/servers/monitoring/grafana-agent/default.nix12
-rw-r--r--pkgs/servers/monitoring/grafana-agent/skip_test_requiring_network.patch15
-rw-r--r--pkgs/servers/monitoring/grafana/default.nix15
-rwxr-xr-xpkgs/servers/monitoring/grafana/update.sh39
-rw-r--r--pkgs/servers/monitoring/heapster/default.nix28
-rw-r--r--pkgs/servers/monitoring/loki/default.nix4
-rw-r--r--pkgs/servers/monitoring/mackerel-agent/default.nix4
-rw-r--r--pkgs/servers/monitoring/mimir/default.nix35
-rw-r--r--pkgs/servers/monitoring/munin/default.nix5
-rw-r--r--pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix4
-rw-r--r--pkgs/servers/monitoring/prometheus/bird-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/mesos-exporter.nix23
-rw-r--r--pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix4
-rw-r--r--pkgs/servers/monitoring/prometheus/process-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/promscale/default.nix4
-rw-r--r--pkgs/servers/monitoring/telegraf/default.nix6
-rw-r--r--pkgs/servers/monitoring/thanos/default.nix4
-rw-r--r--pkgs/servers/monitoring/zipkin/default.nix1
-rw-r--r--pkgs/servers/nextcloud/default.nix8
-rw-r--r--pkgs/servers/nitter/default.nix6
-rwxr-xr-xpkgs/servers/nitter/update.sh40
-rw-r--r--pkgs/servers/nosql/arangodb/default.nix10
-rw-r--r--pkgs/servers/nosql/cassandra/2.1.json4
-rw-r--r--pkgs/servers/nosql/cassandra/2.1.nix19
-rw-r--r--pkgs/servers/nosql/cassandra/2.2.json4
-rw-r--r--pkgs/servers/nosql/cassandra/2.2.nix19
-rw-r--r--pkgs/servers/nosql/cassandra/3.0.json4
-rw-r--r--pkgs/servers/nosql/cassandra/3.0.nix12
-rw-r--r--pkgs/servers/nosql/cassandra/3.11.json4
-rw-r--r--pkgs/servers/nosql/cassandra/3.11.nix12
-rw-r--r--pkgs/servers/nosql/cassandra/generic.nix5
-rw-r--r--pkgs/servers/nosql/cassandra/update-script.nix55
-rw-r--r--pkgs/servers/nosql/mongodb/4.4.nix14
-rw-r--r--pkgs/servers/nosql/mongodb/5.0.nix25
-rw-r--r--pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch23
-rw-r--r--pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch33
-rw-r--r--pkgs/servers/nosql/mongodb/mongodb.nix18
-rw-r--r--pkgs/servers/nosql/mongodb/v4_2.nix4
-rw-r--r--pkgs/servers/ombi/default.nix5
-rw-r--r--pkgs/servers/openafs/1.8/module.nix35
-rw-r--r--pkgs/servers/openafs/1.9/module.nix2
-rw-r--r--pkgs/servers/owncast/default.nix2
-rw-r--r--pkgs/servers/plex/raw.nix6
-rw-r--r--pkgs/servers/plik/default.nix2
-rw-r--r--pkgs/servers/postfixadmin/default.nix4
-rw-r--r--pkgs/servers/ps3netsrv/default.nix1
-rw-r--r--pkgs/servers/psitransfer/default.nix5
-rw-r--r--pkgs/servers/psitransfer/node-packages.nix345
-rw-r--r--pkgs/servers/pulseaudio/add-option-for-installation-sysconfdir.patch36
-rw-r--r--pkgs/servers/pulseaudio/correct-ldflags.patch13
-rw-r--r--pkgs/servers/pulseaudio/default.nix95
-rw-r--r--pkgs/servers/pulseaudio/pali.nix219
-rw-r--r--pkgs/servers/radicale/3.x.nix5
-rw-r--r--pkgs/servers/roon-bridge/default.nix2
-rw-r--r--pkgs/servers/roon-server/default.nix4
-rw-r--r--pkgs/servers/roundcube/plugins/carddav/default.nix6
-rw-r--r--pkgs/servers/roundcube/plugins/persistent_login/default.nix4
-rw-r--r--pkgs/servers/routinator/default.nix6
-rw-r--r--pkgs/servers/rt/default.nix2
-rw-r--r--pkgs/servers/search/elasticsearch/6.x.nix5
-rw-r--r--pkgs/servers/search/elasticsearch/7.x.nix10
-rw-r--r--pkgs/servers/search/groonga/default.nix4
-rw-r--r--pkgs/servers/sickbeard/sickgear.nix4
-rw-r--r--pkgs/servers/soft-serve/default.nix6
-rw-r--r--pkgs/servers/sql/dolt/default.nix10
-rw-r--r--pkgs/servers/sql/mysql/8.0.x.nix2
-rw-r--r--pkgs/servers/sql/patroni/default.nix2
-rw-r--r--pkgs/servers/sql/pgbouncer/default.nix4
-rw-r--r--pkgs/servers/sql/postgresql/ext/jsonb_deep_sum.nix31
-rw-r--r--pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix16
-rw-r--r--pkgs/servers/sql/postgresql/ext/plpgsql_check.nix4
-rw-r--r--pkgs/servers/sql/postgresql/ext/timescaledb.nix7
-rw-r--r--pkgs/servers/sql/postgresql/packages.nix2
-rw-r--r--pkgs/servers/stayrtr/default.nix4
-rw-r--r--pkgs/servers/tailscale/default.nix8
-rw-r--r--pkgs/servers/traefik/default.nix6
-rw-r--r--pkgs/servers/trezord/default.nix1
-rw-r--r--pkgs/servers/udpt/default.nix1
-rw-r--r--pkgs/servers/ursadb/default.nix8
-rw-r--r--pkgs/servers/uxplay/default.nix60
-rw-r--r--pkgs/servers/web-apps/discourse/admin_create.patch2
-rw-r--r--pkgs/servers/web-apps/discourse/assets_rake_command.patch13
-rw-r--r--pkgs/servers/web-apps/discourse/auto_generated_path.patch4
-rw-r--r--pkgs/servers/web-apps/discourse/default.nix44
-rw-r--r--pkgs/servers/web-apps/discourse/nixos_defaults.patch4
-rw-r--r--pkgs/servers/web-apps/discourse/plugin_gem_api_version.patch2
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock14
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix16
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock10
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix12
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile2
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock2
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile2
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock2
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix4
-rw-r--r--pkgs/servers/web-apps/discourse/rubyEnv/Gemfile19
-rw-r--r--pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock213
-rw-r--r--pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix269
-rw-r--r--pkgs/servers/web-apps/discourse/unicorn_logging_and_timeout.patch2
-rwxr-xr-xpkgs/servers/web-apps/discourse/update.py50
-rw-r--r--pkgs/servers/web-apps/invoiceplane/default.nix33
-rw-r--r--pkgs/servers/web-apps/jitsi-meet/default.nix4
-rwxr-xr-xpkgs/servers/web-apps/lemmy/update.sh2
-rw-r--r--pkgs/servers/web-apps/moodle/default.nix4
-rw-r--r--pkgs/servers/web-apps/netbox/default.nix33
-rw-r--r--pkgs/servers/web-apps/netbox/graphql-3_2_0.patch21
-rw-r--r--pkgs/servers/web-apps/nifi/default.nix45
-rw-r--r--pkgs/servers/web-apps/virtlyst/default.nix7
-rw-r--r--pkgs/servers/web-apps/wiki-js/default.nix9
-rwxr-xr-xpkgs/servers/web-apps/wiki-js/update.sh13
-rw-r--r--pkgs/servers/web-apps/wordpress/default.nix4
-rw-r--r--pkgs/servers/x11/xorg/default.nix22
-rwxr-xr-xpkgs/servers/x11/xorg/generate-expr-from-tarballs.pl6
-rw-r--r--pkgs/servers/x11/xorg/overrides.nix37
-rw-r--r--pkgs/servers/x11/xorg/tarballs.list6
-rw-r--r--pkgs/servers/x11/xorg/xwayland.nix4
-rw-r--r--pkgs/servers/xmpp/prosody/default.nix12
226 files changed, 9026 insertions, 4061 deletions
diff --git a/pkgs/servers/adguardhome/bins.nix b/pkgs/servers/adguardhome/bins.nix
index 1c2f0621b5d04..96b2e9491febc 100644
--- a/pkgs/servers/adguardhome/bins.nix
+++ b/pkgs/servers/adguardhome/bins.nix
@@ -1,19 +1,19 @@
 { fetchurl, fetchzip }:
 {
 "x86_64-darwin" = fetchzip {
-  sha256 = "sha256-bTbjkBHOjcI78+jyJJ1JGe/WrmTxXi5RRB1yQO2zuYw=";
-  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.5/AdGuardHome_darwin_amd64.zip";
+  sha256 = "sha256-vUOdHDyvVg+8GhctW925WfjONi7TnPRfVfXmehOweB4=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.6/AdGuardHome_darwin_amd64.zip";
 };
 "i686-linux" = fetchurl {
-  sha256 = "sha256-wdzj7P+Hhm65i5hY4l2Ty486W473coZyZnCbzx9Poro=";
-  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.5/AdGuardHome_linux_386.tar.gz";
+  sha256 = "sha256-A6IsDRbRHyU0+IUKkrudKvlKiJkVNNs12MrKQ6RlpMQ=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.6/AdGuardHome_linux_386.tar.gz";
 };
 "x86_64-linux" = fetchurl {
-  sha256 = "sha256-sZQe8rNYD0gBSpNeXS+4hbqoT5nUFbkQSI3c6VuQOC8=";
-  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.5/AdGuardHome_linux_amd64.tar.gz";
+  sha256 = "sha256-nPcqAk0m1e9izkylBuNcatHESgvSewR+MKmVdz+HBec=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.6/AdGuardHome_linux_amd64.tar.gz";
 };
 "aarch64-linux" = fetchurl {
-  sha256 = "sha256-9JsGzFf03en2ClrodglREsYqrwr6j/vypsfEVaMzCTI=";
-  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.5/AdGuardHome_linux_arm64.tar.gz";
+  sha256 = "sha256-ITkZdVU03FG9AUAMgD6nlCyioPJX357wB9m1jYdPlS4=";
+  url = "https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.6/AdGuardHome_linux_arm64.tar.gz";
 };
 }
diff --git a/pkgs/servers/adguardhome/default.nix b/pkgs/servers/adguardhome/default.nix
index 03d2b2ec96660..8b0c743856de3 100644
--- a/pkgs/servers/adguardhome/default.nix
+++ b/pkgs/servers/adguardhome/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "adguardhome";
-  version = "0.107.5";
+  version = "0.107.6";
 
   src = (import ./bins.nix { inherit fetchurl fetchzip; }).${stdenv.hostPlatform.system};
 
diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix
index 37e6f1fd24305..c59d53897fcb4 100644
--- a/pkgs/servers/amqp/rabbitmq-server/default.nix
+++ b/pkgs/servers/amqp/rabbitmq-server/default.nix
@@ -3,7 +3,7 @@
 , fetchurl
 , erlang
 , elixir
-, python2
+, python3
 , libxml2
 , libxslt
 , xmlto
@@ -35,8 +35,8 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-c6GpB6CSCHiU9hTC9FkxyTc1UpNWxx5iP3y2dbTUfS0=";
   };
 
-  nativeBuildInputs = [ unzip xmlto docbook_xml_dtd_45 docbook_xsl zip rsync ];
-  buildInputs = [ erlang elixir python2 libxml2 libxslt glibcLocales ]
+  nativeBuildInputs = [ unzip xmlto docbook_xml_dtd_45 docbook_xsl zip rsync python3 ];
+  buildInputs = [ erlang elixir libxml2 libxslt glibcLocales ]
     ++ lib.optionals stdenv.isDarwin [ AppKit Carbon Cocoa ];
 
   outputs = [ "out" "man" "doc" ];
diff --git a/pkgs/servers/asterisk/default.nix b/pkgs/servers/asterisk/default.nix
index dddc7f42d884f..eb8560a98b354 100644
--- a/pkgs/servers/asterisk/default.nix
+++ b/pkgs/servers/asterisk/default.nix
@@ -1,8 +1,10 @@
-{ stdenv, lib, fetchurl, fetchsvn,
+{ stdenv, lib, fetchurl, fetchsvn, fetchFromGitHub,
   jansson, libedit, libxml2, libxslt, ncurses, openssl, sqlite,
   util-linux, dmidecode, libuuid, newt,
-  lua, speex,
-  srtp, wget, curl, iksemel, pkg-config
+  lua, speex, libopus, opusfile, libogg,
+  srtp, wget, curl, iksemel, pkg-config,
+  autoconf, libtool, automake,
+  withOpus ? true,
 }:
 
 let
@@ -13,8 +15,9 @@ let
     buildInputs = [ jansson libedit libxml2 libxslt ncurses openssl sqlite
                     dmidecode libuuid newt
                     lua speex
-                    srtp wget curl iksemel ];
-    nativeBuildInputs = [ util-linux pkg-config ];
+                    srtp wget curl iksemel ]
+                  ++ lib.optionals withOpus [ libopus opusfile libogg ];
+    nativeBuildInputs = [ util-linux pkg-config autoconf libtool automake ];
 
     patches = [
       # We want the Makefile to install the default /var skeleton
@@ -22,7 +25,7 @@ let
       # This patch changes the runtime behavior to look for state
       # directories in /var rather than ${out}/var.
       ./runtime-vardirs.patch
-    ];
+    ] ++ lib.optional withOpus "${asterisk-opus}/asterisk.patch";
 
     postPatch = ''
       echo "PJPROJECT_CONFIG_OPTS += --prefix=$out" >> third-party/pjproject/Makefile.rules
@@ -49,6 +52,12 @@ let
       ${lib.optionalString (externals ? "addons/mp3") "bash contrib/scripts/get_mp3_source.sh || true"}
 
       chmod -w externals_cache
+      ${lib.optionalString withOpus ''
+        cp ${asterisk-opus}/include/asterisk/* ./include/asterisk
+        cp ${asterisk-opus}/codecs/* ./codecs
+        cp ${asterisk-opus}/formats/* ./formats
+      ''}
+      ./bootstrap.sh
     '';
 
     configureFlags = [
@@ -63,6 +72,10 @@ let
       ${lib.optionalString (externals ? "addons/mp3") ''
         substituteInPlace menuselect.makeopts --replace 'format_mp3 ' ""
       ''}
+      ${lib.optionalString withOpus ''
+        substituteInPlace menuselect.makeopts --replace 'codec_opus_open_source ' ""
+        substituteInPlace menuselect.makeopts --replace 'format_ogg_opus_open_source ' ""
+      ''}
     '';
 
     postInstall = ''
@@ -90,6 +103,14 @@ let
     sha256 = "1s9idx2miwk178sa731ig9r4fzx4gy1q8xazfqyd7q4lfd70s1cy";
   };
 
+  asterisk-opus = fetchFromGitHub {
+    owner = "traud";
+    repo = "asterisk-opus";
+    # No releases, points to master as of 2022-04-06
+    rev = "a959f072d3f364be983dd27e6e250b038aaef747";
+    sha256 = "sha256-CASlTvTahOg9D5jccF/IN10LP/U8rRy9BFCSaHGQfCw=";
+  };
+
   # auto-generated by update.py
   versions = lib.mapAttrs (_: {version, sha256}: common {
     inherit version sha256;
@@ -100,17 +121,16 @@ let
   }) (lib.importJSON ./versions.json);
 
 in {
-  # Supported releases (as of 2020-10-26).
+  # Supported releases (as of 2022-04-05).
   # Source: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions
   # Exact version can be found at https://www.asterisk.org/downloads/asterisk/all-asterisk-versions/
   #
   # Series  Type       Rel. Date   Sec. Fixes  EOL
-  # 13.x    LTS        2014-10-24  2020-10-24  2021-10-24
   # 16.x    LTS        2018-10-09  2022-10-09  2023-10-09
-  # 17.x    Standard   2019-10-28  2020-10-28  2021-10-28
   # 18.x    LTS        2020-10-20  2024-10-20  2025-10-20
+  # 19.x    Standard   2021-11-02  2022-11-02  2023-11-02
   asterisk-lts = versions.asterisk_18;
-  asterisk-stable = versions.asterisk_18;
-  asterisk = versions.asterisk_18;
+  asterisk-stable = versions.asterisk_19;
+  asterisk = versions.asterisk_19;
 
 } // versions
diff --git a/pkgs/servers/asterisk/versions.json b/pkgs/servers/asterisk/versions.json
index 93d2539993de0..f11f5547c3ef8 100644
--- a/pkgs/servers/asterisk/versions.json
+++ b/pkgs/servers/asterisk/versions.json
@@ -1,18 +1,14 @@
 {
-  "asterisk_13": {
-    "sha256": "478040705f5819259bb1d22cb4e27970092a5bfdb691d27d321c26235eea4bb3",
-    "version": "13.38.3"
-  },
   "asterisk_16": {
-    "sha256": "c34fc38287cea533c0d0a34959112119e47d12d8ea6ac11bdddf9265afda6d11",
-    "version": "16.19.1"
-  },
-  "asterisk_17": {
-    "sha256": "cc0d6b9ef1512d4e279b80ca8bf78032d69fe6e92492c95c22c44023d6c111fa",
-    "version": "17.9.4"
+    "sha256": "379c5529b9957c28734192999543486a0b0b24f6671b2e02e77cc809774e7ba9",
+    "version": "16.25.1"
   },
   "asterisk_18": {
-    "sha256": "e7d78716a0deeadf24b7d537cd24c11c2d9a096265eefc9470565c4da0fc54c7",
-    "version": "18.5.1"
+    "sha256": "9db0e94e005a91a5433fc11173247065a5c40c9a7ca946577908f65d130b888e",
+    "version": "18.11.1"
+  },
+  "asterisk_19": {
+    "sha256": "3e1fa31ef1de7813365dd8b98ef93744ff87902255472814d0232b955c794706",
+    "version": "19.3.1"
   }
 }
diff --git a/pkgs/servers/atlassian/bamboo.nix b/pkgs/servers/atlassian/bamboo.nix
index a60d41d41c1f1..33c8aceeb2655 100644
--- a/pkgs/servers/atlassian/bamboo.nix
+++ b/pkgs/servers/atlassian/bamboo.nix
@@ -5,11 +5,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "atlassian-bamboo";
-  version = "8.1.3";
+  version = "8.1.4";
 
   src = fetchurl {
     url = "https://product-downloads.atlassian.com/software/bamboo/downloads/atlassian-bamboo-${version}.tar.gz";
-    sha256 = "sha256-M406audmwCS4SRPj8oYxZ+tBpt9bGoOsA3+9WwdZ1fw=";
+    sha256 = "sha256-v30Q3yGKkpHQFitOcH764SE6KuCdUJWn50buY7pb/Ng=";
   };
 
   buildPhase = ''
diff --git a/pkgs/servers/atlassian/confluence.nix b/pkgs/servers/atlassian/confluence.nix
index f580abc187819..6dfe291746b09 100644
--- a/pkgs/servers/atlassian/confluence.nix
+++ b/pkgs/servers/atlassian/confluence.nix
@@ -8,11 +8,11 @@ assert withMysql -> (mysql_jdbc != null);
 
 stdenvNoCC.mkDerivation rec {
   pname = "atlassian-confluence";
-  version = "7.14.1";
+  version = "7.17.1";
 
   src = fetchurl {
     url = "https://product-downloads.atlassian.com/software/confluence/downloads/${pname}-${version}.tar.gz";
-    sha256 = "1lcwdjby18xr54i408kncfhlizf18xcrnhfgsvhx5m02arid7mk7";
+    sha256 = "sha256-TFtWuJR/t3MMbs8Gd818ByOnMtiT4QxbcpgBxYXzFYY=";
   };
 
   buildPhase = ''
@@ -44,6 +44,6 @@ stdenvNoCC.mkDerivation rec {
     description = "Team collaboration software written in Java and mainly used in corporate environments";
     homepage = "https://www.atlassian.com/software/confluence";
     license = licenses.unfree;
-    maintainers = with maintainers; [ fpletz globin willibutz ciil ];
+    maintainers = with maintainers; [ fpletz globin willibutz ciil techknowlogick ];
   };
 }
diff --git a/pkgs/servers/atlassian/jira.nix b/pkgs/servers/atlassian/jira.nix
index 7880c529c7337..e9d38a41c0297 100644
--- a/pkgs/servers/atlassian/jira.nix
+++ b/pkgs/servers/atlassian/jira.nix
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation rec {
   pname = "atlassian-jira";
-  version = "8.22.0";
+  version = "8.22.2";
 
   src = fetchurl {
     url = "https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-${version}.tar.gz";
-    sha256 = "sha256-swEq8g/A1Ok1P7JtceUDId7kG0GRtBPGblY09xt81Ys=";
+    sha256 = "sha256-j9JUIK4GOdY9rMLPZcWbjWUh/s2ZkoVEQBNAIqHhdYI=";
   };
 
   buildPhase = ''
@@ -41,6 +41,6 @@ stdenv.mkDerivation rec {
     description = "Proprietary issue tracking product, also providing project management functions";
     homepage = "https://www.atlassian.com/software/jira";
     license = licenses.unfree;
-    maintainers = with maintainers; [ fpletz globin ciil megheaiulian ];
+    maintainers = with maintainers; [ fpletz globin ciil megheaiulian techknowlogick ];
   };
 }
diff --git a/pkgs/servers/caddy/default.nix b/pkgs/servers/caddy/default.nix
index 46ce2a94a6b39..711c65f66176c 100644
--- a/pkgs/servers/caddy/default.nix
+++ b/pkgs/servers/caddy/default.nix
@@ -1,6 +1,6 @@
 { lib, buildGoModule, fetchFromGitHub, nixosTests }:
 let
-  version = "2.4.6";
+  version = "2.5.0";
   dist = fetchFromGitHub {
     owner = "caddyserver";
     repo = "dist";
@@ -18,10 +18,10 @@ buildGoModule {
     owner = "caddyserver";
     repo = "caddy";
     rev = "v${version}";
-    sha256 = "sha256-xNCxzoNpXkj8WF9+kYJfO18ux8/OhxygkGjA49+Q4vY=";
+    sha256 = "sha256-V9iIz/93n6EBJZ9v3MDKD6FivtplRFN9a/e0o7YX0/w=";
   };
 
-  vendorSha256 = "sha256-NomgHqIiugSISbEtvIbJDn5GRn6Dn72adLPkAvLbUQU=";
+  vendorSha256 = "sha256-xu3klc9yb4Ws8fvXRV286IDhi/zQVN1PKCiFKb8VJBo=";
 
   postInstall = ''
     install -Dm644 ${dist}/init/caddy.service ${dist}/init/caddy-api.service -t $out/lib/systemd/system
@@ -36,6 +36,6 @@ buildGoModule {
     homepage = "https://caddyserver.com";
     description = "Fast, cross-platform HTTP/2 web server with automatic HTTPS";
     license = licenses.asl20;
-    maintainers = with maintainers; [ Br1ght0ne ];
+    maintainers = with maintainers; [ Br1ght0ne techknowlogick ];
   };
 }
diff --git a/pkgs/servers/calibre-web/default.nix b/pkgs/servers/calibre-web/default.nix
index 308654039983f..e170d761115b5 100644
--- a/pkgs/servers/calibre-web/default.nix
+++ b/pkgs/servers/calibre-web/default.nix
@@ -53,8 +53,10 @@ python3.pkgs.buildPythonApplication rec {
 
     substituteInPlace setup.cfg \
       --replace "cps = calibreweb:main" "calibre-web = calibreweb:main" \
+      --replace "Flask>=1.0.2,<2.1.0" "Flask>=1.0.2" \
+      --replace "Flask-Login>=0.3.2,<0.5.1" "Flask-Login>=0.3.2" \
       --replace "flask-wtf>=0.14.2,<0.16.0" "flask-wtf>=0.14.2" \
-      --replace "lxml>=3.8.0,<4.7.0" "lxml>=3.8.0" \
+      --replace "lxml>=3.8.0,<4.8.0" "lxml>=3.8.0" \
       --replace "PyPDF3>=1.0.0,<1.0.4" "PyPDF3>=1.0.0" \
       --replace "requests>=2.11.1,<2.25.0" "requests" \
       --replace "unidecode>=0.04.19,<1.3.0" "unidecode>=0.04.19"
diff --git a/pkgs/servers/computing/slurm/default.nix b/pkgs/servers/computing/slurm/default.nix
index 1179e86351a45..de0ac56478a60 100644
--- a/pkgs/servers/computing/slurm/default.nix
+++ b/pkgs/servers/computing/slurm/default.nix
@@ -9,7 +9,7 @@
 
 stdenv.mkDerivation rec {
   pname = "slurm";
-  version = "21.08.6.1";
+  version = "21.08.7.1";
 
   # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
   # because the latter does not keep older releases.
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     repo = "slurm";
     # The release tags use - instead of .
     rev = "${pname}-${builtins.replaceStrings ["."] ["-"] version}";
-    sha256 = "1pdj2nxxky2g9j0y5h6f7fvpypbh0a4g76z90115yr770yf4g2hz";
+    sha256 = "1rhhfiwpfrg3mpdpvmdl3qz20ydi5m88dfv9hhwqm95sldqb6qw1";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/servers/confluent-platform/default.nix b/pkgs/servers/confluent-platform/default.nix
index fe60516b3e589..438b877bb271e 100644
--- a/pkgs/servers/confluent-platform/default.nix
+++ b/pkgs/servers/confluent-platform/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   pname = "confluent-platform";
-  version = "7.0.1";
+  version = "7.1.0";
 
   src = fetchurl {
     url = "https://packages.confluent.io/archive/${lib.versions.majorMinor version}/confluent-${version}.tar.gz";
-    sha256 = "Q0/A/3M2tn530/+o1RpcgNsPKFQq6YJQnhgysRlpVfU=";
+    sha256 = "sha256-uoJQQZxUGniMLJk/BwwiNnpgYFcqJ+27GFQLEpsFxCw=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/consul/default.nix b/pkgs/servers/consul/default.nix
index 240769bfe093c..2c9382ddb9f7a 100644
--- a/pkgs/servers/consul/default.nix
+++ b/pkgs/servers/consul/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "consul";
-  version = "1.11.4";
+  version = "1.12.0";
   rev = "v${version}";
 
   # Note: Currently only release tags are supported, because they have the Consul UI
@@ -17,7 +17,7 @@ buildGoModule rec {
     owner = "hashicorp";
     repo = pname;
     inherit rev;
-    sha256 = "sha256-dQwJ3HzzYxolGrjgHXBElDZO65uXJKEv8UH5sYZ4swc=";
+    sha256 = "sha256-O47s9eNZsqg0zpgoK2S4JvuOEqqVWvx8YmbQTvCw0Co=";
   };
 
   passthru.tests.consul = nixosTests.consul;
@@ -26,7 +26,7 @@ buildGoModule rec {
   # has a split module structure in one repo
   subPackages = ["." "connect/certgen"];
 
-  vendorSha256 = "sha256-VB7agtH6V7mJU689bFXuhi82qqzGxY16vFOPFBd/DQc=";
+  vendorSha256 = "sha256-NRFGt8YA179C/OvyMGXYaZMUH685pJfdGB0AhMrCixs=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/dendrite/default.nix b/pkgs/servers/dendrite/default.nix
index c17c301421fda..82c6d4ba3e6e2 100644
--- a/pkgs/servers/dendrite/default.nix
+++ b/pkgs/servers/dendrite/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "matrix-dendrite";
-  version = "0.7.0";
+  version = "0.8.1";
 
   src = fetchFromGitHub {
     owner = "matrix-org";
     repo = "dendrite";
     rev = "v${version}";
-    sha256 = "sha256-R0xGsngNk8osBh3vRUeYxmEgbbNa+wKOihRjOU40D48=";
+    sha256 = "sha256-cEqedl6iVt/HZEh1zeEcqby8gfJEcqIDEQnPewyErMI=";
   };
 
-  vendorSha256 = "sha256-0Y/RVRWZ0osU/kEcf+Y8TH8K2rmxFmQSqMMNHoRIugo=";
+  vendorSha256 = "sha256-nQx+PyjRvECeIerZ9jq7YMTSS8LfohY7NgK8DklREQQ=";
 
   passthru.tests = {
     inherit (nixosTests) dendrite;
diff --git a/pkgs/servers/dex/default.nix b/pkgs/servers/dex/default.nix
index c93f7316301b0..92cf4cd66588c 100644
--- a/pkgs/servers/dex/default.nix
+++ b/pkgs/servers/dex/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "dex";
-  version = "2.31.0";
+  version = "2.31.1";
 
   src = fetchFromGitHub {
     owner = "dexidp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-tr7rs2ymHpMEtNwvLhgEzp94wO/k/oY814NS0N4ONsg=";
+    sha256 = "sha256-4BmZpN3k1qDYLdkXm4AX73bX5hBiyLv0nVKYVwD/HCM=";
   };
 
   vendorSha256 = "sha256-l+/qjYokg5zHAFkKxtkdX49HqVW6kfz7OHqs6SRKDYg=";
diff --git a/pkgs/servers/dgraph/default.nix b/pkgs/servers/dgraph/default.nix
index 3aa7b074848ea..723316e50b010 100644
--- a/pkgs/servers/dgraph/default.nix
+++ b/pkgs/servers/dgraph/default.nix
@@ -1,30 +1,37 @@
-{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles, jemalloc, nodejs }:
 
 buildGoModule rec {
   pname = "dgraph";
-  version = "20.07.3";
+  version = "21.12.0";
 
   src = fetchFromGitHub {
     owner = "dgraph-io";
     repo = "dgraph";
     rev = "v${version}";
-    sha256 = "sha256-yuKXcxewt64T0ToDPid37WUEhwLu+yt4tjhDQobj/Ls=";
+    sha256 = "sha256-OYDWr+wJEIP7raIHsXSjvuFr2ENJOllufO5ff6lxoR4=";
   };
 
-  vendorSha256 = "sha256-2Ub0qdEaVSHHE5K0bNSXJFukGeSSXNpIBoUldF8jGpI=";
+  vendorSha256 = "sha256-YtU3Yeq/lNeq7cOB+KvHbvlH9g40WuJk1ovHxCQMG60=";
 
   doCheck = false;
 
+  ldflags = [
+    "-X github.com/dgraph-io/dgraph/x.dgraphVersion=${version}-oss"
+  ];
+
+  tags = [
+    "oss"
+  ];
+
   nativeBuildInputs = [ installShellFiles ];
 
-  # see licensing
-  buildPhase = ''
-    make oss BUILD_VERSION=${version}
-  '';
+  # todo those dependencies are required in the makefile, but verify how they are used
+  # actually
+  buildInputs = [ jemalloc nodejs ];
 
-  installPhase = ''
-    install dgraph/dgraph -Dt $out/bin
+  subPackages = [ "dgraph" ];
 
+  postInstall = ''
     for shell in bash zsh; do
       $out/bin/dgraph completion $shell > dgraph.$shell
       installShellCompletion dgraph.$shell
diff --git a/pkgs/servers/dns/doh-proxy/default.nix b/pkgs/servers/dns/doh-proxy/default.nix
deleted file mode 100644
index 8128ec6f04d47..0000000000000
--- a/pkgs/servers/dns/doh-proxy/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib, python3Packages }:
-
-with python3Packages;
-buildPythonApplication rec {
-  pname = "doh-proxy";
-  version = "0.0.9";
-
-  src = python3Packages.fetchPypi {
-    inherit pname version;
-    sha256 = "1fxzxipzdvk75yrcr78mpdz8lwpisba67lk4jcwxdnkv6997dwfp";
-  };
-
-  nativeBuildInputs = [ pytest-runner flake8];
-
-  propagatedBuildInputs = [
-    aioh2
-    dnspython
-    aiohttp-remotes
-  ];
-
-  checkInputs = [
-    asynctest
-    unittest-data-provider
-    pytest
-    pytest-cov
-    pytest-aiohttp
-  ];
-
-  # attempts to resolve address
-  checkPhase = ''
-    pytest -k 'not servers'
-  '';
-
-  meta = with lib; {
-    homepage = "https://facebookexperimental.github.io/doh-proxy/";
-    description = "A proof of concept DNS-Over-HTTPS proxy";
-    license = licenses.bsd3;
-    maintainers = [ maintainers.qyliss ];
-  };
-}
diff --git a/pkgs/servers/dns/pdns-recursor/default.nix b/pkgs/servers/dns/pdns-recursor/default.nix
index 7b3b81ace2779..d244b2920ba89 100644
--- a/pkgs/servers/dns/pdns-recursor/default.nix
+++ b/pkgs/servers/dns/pdns-recursor/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pdns-recursor";
-  version = "4.6.1";
+  version = "4.6.2";
 
   src = fetchurl {
     url = "https://downloads.powerdns.com/releases/pdns-recursor-${version}.tar.bz2";
-    sha256 = "1sqwasqxz4svn5rckrwr05gzk7qzdhzzzjr1l2l7xa44if8011bv";
+    sha256 = "sha256-2mSYUHOf3XuvLfZFrMl3UszTkJc7VrjiUXHqew0lrSA=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/servers/dns/pdns/default.nix b/pkgs/servers/dns/pdns/default.nix
index ff057b48bd54e..0cec5f6e7446f 100644
--- a/pkgs/servers/dns/pdns/default.nix
+++ b/pkgs/servers/dns/pdns/default.nix
@@ -20,6 +20,11 @@ stdenv.mkDerivation rec {
     libyamlcpp libsodium curl unixODBC openssl systemd lmdb tinycdb
   ];
 
+  # Configure phase requires 64-bit time_t even on 32-bit platforms.
+  NIX_CFLAGS_COMPILE = lib.optionals stdenv.hostPlatform.is32bit [
+    "-D_TIME_BITS=64" "-D_FILE_OFFSET_BITS=64"
+  ];
+
   configureFlags = [
     "--disable-silent-rules"
     "--enable-dns-over-tls"
diff --git a/pkgs/servers/documize-community/default.nix b/pkgs/servers/documize-community/default.nix
index 036ea5fbee7df..66ba25f8bf4ba 100644
--- a/pkgs/servers/documize-community/default.nix
+++ b/pkgs/servers/documize-community/default.nix
@@ -34,6 +34,7 @@ buildGoModule rec {
     description = "Open source Confluence alternative for internal & external docs built with Golang + EmberJS";
     license = licenses.agpl3;
     maintainers = with maintainers; [ ma27 elseym ];
+    mainProgram = "documize";
     homepage = "https://www.documize.com/";
   };
 }
diff --git a/pkgs/servers/echoip/default.nix b/pkgs/servers/echoip/default.nix
index 745cf96df46ad..840d7a2d4e6af 100644
--- a/pkgs/servers/echoip/default.nix
+++ b/pkgs/servers/echoip/default.nix
@@ -13,8 +13,6 @@ buildGoModule {
 
   vendorSha256 = "0vvs717pl5gzggxpbn2vkyxmpiw5zjdfnpbh8i81xidbqvlnm22h";
 
-  doCheck = false;
-
   outputs = [ "out" "index" ];
 
   postInstall = ''
diff --git a/pkgs/servers/firebird/default.nix b/pkgs/servers/firebird/default.nix
index 5348862ed6d5f..6f5d22462fb6b 100644
--- a/pkgs/servers/firebird/default.nix
+++ b/pkgs/servers/firebird/default.nix
@@ -5,6 +5,7 @@ let base = {
 
   meta = with lib; {
     description = "SQL relational database management system";
+    downloadPage = "https://github.com/FirebirdSQL/firebird/";
     homepage = "https://firebirdsql.org/";
     changelog = "https://github.com/FirebirdSQL/firebird/blob/master/CHANGELOG.md";
     license = [ "IDPL" "Interbase-1.0" ];
@@ -54,13 +55,13 @@ let base = {
   });
 
   firebird_3 = stdenv.mkDerivation (base // rec {
-    version = "3.0.8";
+    version = "3.0.9";
 
     src = fetchFromGitHub {
       owner = "FirebirdSQL";
       repo = "firebird";
       rev = "v${version}";
-      sha256 = "sha256-l1V3CGxTybPY8pl6WhsExqdWJLiYsOv5BCrU/iD+I7k=";
+      sha256 = "0axgw4zzb7f7yszr8s7svnspv3mgyvpbkb0b3w6c70fnj10hw21c";
     };
 
     buildInputs = base.buildInputs ++ [ zlib libtommath ];
diff --git a/pkgs/servers/foundationdb/vsmake.nix b/pkgs/servers/foundationdb/vsmake.nix
index 52807fc062012..776e724c9c66a 100644
--- a/pkgs/servers/foundationdb/vsmake.nix
+++ b/pkgs/servers/foundationdb/vsmake.nix
@@ -84,7 +84,7 @@ let
         makeFlags = [ "all" "fdb_java" "fdb_python" ]
           # Don't compile FDBLibTLS if we don't need it in 6.0 or later;
           # it gets statically linked in
-          ++ lib.optional (!lib.versionAtLeast version "6.0") [ "fdb_c" ]
+          ++ lib.optional (lib.versionOlder version "6.0") [ "fdb_c" ]
           # Needed environment overrides
           ++ [ "KVRELEASE=1"
                "NOSTRIP=1"
@@ -100,7 +100,7 @@ let
         installPhase = ''
           mkdir -vp $out/{bin,libexec/plugins} $lib/{lib,share/java} $dev/include/foundationdb
 
-        '' + lib.optionalString (!lib.versionAtLeast version "6.0") ''
+        '' + lib.optionalString (lib.versionOlder version "6.0") ''
           # we only copy the TLS library on < 6.0, since it's compiled-in otherwise
           cp -v ./lib/libFDBLibTLS.so $out/libexec/plugins/FDBLibTLS.so
         '' + ''
diff --git a/pkgs/servers/ftp/kamid/default.nix b/pkgs/servers/ftp/kamid/default.nix
new file mode 100644
index 0000000000000..160ad87144b45
--- /dev/null
+++ b/pkgs/servers/ftp/kamid/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, lib
+, pkg-config
+, libevent
+, libressl
+, libbsd
+, fetchurl
+, readline
+}:
+
+stdenv.mkDerivation rec {
+  pname = "kamid";
+  version = "0.1";
+
+  src = fetchurl {
+    url = "https://github.com/omar-polo/kamid/releases/download/${version}/${pname}-${version}.tar.gz";
+    sha256 = "16gi82dgaxwy8fgg05hbam796pk51i6xlyrx8qhghi7ikxr5jd19";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    libevent
+    libressl
+    readline
+    libbsd
+  ];
+
+  meta = with lib; {
+    description = "A FREE, easy-to-use and portable implementation of a 9p file server daemon for UNIX-like systems";
+    homepage = "https://kamid.omarpolo.com";
+    license = licenses.isc;
+    maintainers = with maintainers; [ heph2 ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/gemini/gmid/default.nix b/pkgs/servers/gemini/gmid/default.nix
index b6ccbd1de7049..3f4a440746ce4 100644
--- a/pkgs/servers/gemini/gmid/default.nix
+++ b/pkgs/servers/gemini/gmid/default.nix
@@ -1,17 +1,17 @@
-{ lib, stdenv, fetchFromGitHub, bison, which, libressl, libevent }:
+{ lib, stdenv, fetchFromGitHub, bison, libressl, libevent }:
 
 stdenv.mkDerivation rec {
   pname = "gmid";
-  version = "1.8.1";
+  version = "1.8.3";
 
   src = fetchFromGitHub {
     owner = "omar-polo";
     repo = pname;
     rev = version;
-    hash = "sha256-XNif164C5b5sVsZW7sy0id4qM/mJzg3RhoHbwJuJqDk=";
+    hash = "sha256-vghoPsyGspPn22Kl61qiaALS2R243JSuS80uKFBHc9k=";
   };
 
-  nativeBuildInputs = [ bison which ];
+  nativeBuildInputs = [ bison ];
 
   buildInputs = [ libressl libevent ];
 
diff --git a/pkgs/servers/gerbera/default.nix b/pkgs/servers/gerbera/default.nix
index afad6e90dc203..55a5024297ec2 100644
--- a/pkgs/servers/gerbera/default.nix
+++ b/pkgs/servers/gerbera/default.nix
@@ -65,13 +65,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "gerbera";
-  version = "1.9.2";
+  version = "1.10.0";
 
   src = fetchFromGitHub {
     repo = "gerbera";
     owner = "gerbera";
     rev = "v${version}";
-    sha256 = "sha256-uLHiGuBXYafpY1/Q4qWFt1CTHKW7vqq0o/zqIEbEZqs=";
+    sha256 = "sha256-z/w0/iuZ0GIYmDWUmqK+1l3GNNFWhkZCWqXhvjgLjgY=";
   };
 
   postPatch = lib.optionalString enableMysql ''
diff --git a/pkgs/servers/gortr/default.nix b/pkgs/servers/gortr/default.nix
index 721570c5c0ae4..44057033bd593 100644
--- a/pkgs/servers/gortr/default.nix
+++ b/pkgs/servers/gortr/default.nix
@@ -10,9 +10,8 @@ buildGoModule rec {
     rev = "v${version}";
     sha256 = "10dq42d3hb6a3ln3x1rag1lqzhwqb66xn4q8k4igjkn5my81nr6q";
   };
-  vendorSha256 = "1nwrzbpqycr4ixk8a90pgaxcwakv5nlfnql6hmcc518qrva198wp";
 
-  doCheck = false;
+  vendorSha256 = "1nwrzbpqycr4ixk8a90pgaxcwakv5nlfnql6hmcc518qrva198wp";
 
   meta = with lib; {
     description = "The RPKI-to-Router server used at Cloudflare";
diff --git a/pkgs/servers/grocy/default.nix b/pkgs/servers/grocy/default.nix
index bcdd3c97c2a06..059f325adaa20 100644
--- a/pkgs/servers/grocy/default.nix
+++ b/pkgs/servers/grocy/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "grocy";
-  version = "3.2.0";
+  version = "3.3.0";
 
   src = fetchurl {
     url = "https://github.com/grocy/grocy/releases/download/v${version}/grocy_${version}.zip";
-    sha256 = "sha256-UPawutm5MllPYdru+Rpk8UYfHDNcrNYaq4qMbZksouI=";
+    sha256 = "sha256-y0l0V+cTIfZYtyV8l6kdFW9UzJWb7eQMEocaPo7TLbg=";
   };
 
   nativeBuildInputs = [ unzip ];
diff --git a/pkgs/servers/haste-server/default.nix b/pkgs/servers/haste-server/default.nix
new file mode 100644
index 0000000000000..80f06bf4fa43f
--- /dev/null
+++ b/pkgs/servers/haste-server/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, nixosTests
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, nodejs
+, pkgs
+}:
+
+stdenv.mkDerivation rec {
+  pname = "haste-server";
+  version = "72863858338a57d54eb9dee55530e90ebbc22453";
+
+  src = fetchFromGitHub {
+    owner = "toptal";
+    repo = "haste-server";
+    rev = version;
+    hash = "sha256-MoEqpfihI3ZqSTHOxFbGziDv8khgq2Nd44YuKYDGflc=";
+  };
+
+  nativeBuildInputs = [
+    nodejs
+    makeWrapper
+  ];
+
+  installPhase =
+    let
+      nodeDependencies = ((import ./node-composition.nix {
+        inherit pkgs nodejs;
+        inherit (stdenv.hostPlatform) system;
+      }).nodeDependencies.override (old: {
+        # access to path '/nix/store/...-source' is forbidden in restricted mode
+        src = src;
+        dontNpmInstall = true;
+      }));
+    in
+    ''
+      runHook postInstall
+
+      mkdir -p $out/share
+      cp -ra . $out/share/haste-server
+      ln -s ${nodeDependencies}/lib/node_modules $out/share/haste-server/node_modules
+      makeWrapper ${nodejs}/bin/node $out/bin/haste-server \
+        --add-flags $out/share/haste-server/server.js
+
+      runHook postBuild
+    '';
+
+  passthru = {
+    tests = {
+      inherit (nixosTests) haste-server;
+    };
+    updateScript = ./update.sh;
+  };
+
+  meta = with lib; {
+    description = "open source pastebin written in node.js";
+    homepage = "https://www.toptal.com/developers/hastebin/about.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ mkg20001 ];
+  };
+}
diff --git a/pkgs/servers/haste-server/node-composition.nix b/pkgs/servers/haste-server/node-composition.nix
new file mode 100644
index 0000000000000..7b8937a3647cc
--- /dev/null
+++ b/pkgs/servers/haste-server/node-composition.nix
@@ -0,0 +1,17 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-14_x"}:
+
+let
+  nodeEnv = import ./node-env.nix {
+    inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
+    inherit pkgs nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+in
+import ./node-deps.nix {
+  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
+  inherit nodeEnv;
+}
diff --git a/pkgs/servers/haste-server/node-deps.nix b/pkgs/servers/haste-server/node-deps.nix
new file mode 100644
index 0000000000000..fbb33a90c73fc
--- /dev/null
+++ b/pkgs/servers/haste-server/node-deps.nix
@@ -0,0 +1,1551 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "@ungap/promise-all-settled-1.1.2" = {
+      name = "_at_ungap_slash_promise-all-settled";
+      packageName = "@ungap/promise-all-settled";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz";
+        sha512 = "sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==";
+      };
+    };
+    "ansi-colors-4.1.1" = {
+      name = "ansi-colors";
+      packageName = "ansi-colors";
+      version = "4.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz";
+        sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==";
+      };
+    };
+    "ansi-regex-3.0.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz";
+        sha512 = "+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==";
+      };
+    };
+    "ansi-regex-5.0.1" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz";
+        sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==";
+      };
+    };
+    "ansi-styles-4.3.0" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "4.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz";
+        sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==";
+      };
+    };
+    "anymatch-3.1.2" = {
+      name = "anymatch";
+      packageName = "anymatch";
+      version = "3.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz";
+        sha512 = "P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==";
+      };
+    };
+    "argparse-2.0.1" = {
+      name = "argparse";
+      packageName = "argparse";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz";
+        sha512 = "8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==";
+      };
+    };
+    "async-1.0.0" = {
+      name = "async";
+      packageName = "async";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-1.0.0.tgz";
+        sha1 = "f8fc04ca3a13784ade9e1641af98578cfbd647a9";
+      };
+    };
+    "async-cache-1.1.0" = {
+      name = "async-cache";
+      packageName = "async-cache";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async-cache/-/async-cache-1.1.0.tgz";
+        sha1 = "4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a";
+      };
+    };
+    "balanced-match-1.0.2" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";
+        sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==";
+      };
+    };
+    "base64-js-1.5.1" = {
+      name = "base64-js";
+      packageName = "base64-js";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz";
+        sha512 = "AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==";
+      };
+    };
+    "binary-extensions-2.2.0" = {
+      name = "binary-extensions";
+      packageName = "binary-extensions";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz";
+        sha512 = "jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==";
+      };
+    };
+    "bl-4.1.0" = {
+      name = "bl";
+      packageName = "bl";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz";
+        sha512 = "1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==";
+      };
+    };
+    "brace-expansion-1.1.11" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
+        sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
+      };
+    };
+    "braces-3.0.2" = {
+      name = "braces";
+      packageName = "braces";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz";
+        sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==";
+      };
+    };
+    "browser-stdout-1.3.1" = {
+      name = "browser-stdout";
+      packageName = "browser-stdout";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz";
+        sha512 = "qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==";
+      };
+    };
+    "buffer-5.7.1" = {
+      name = "buffer";
+      packageName = "buffer";
+      version = "5.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz";
+        sha512 = "EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==";
+      };
+    };
+    "buffer-writer-2.0.0" = {
+      name = "buffer-writer";
+      packageName = "buffer-writer";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz";
+        sha512 = "a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==";
+      };
+    };
+    "busboy-0.2.4" = {
+      name = "busboy";
+      packageName = "busboy";
+      version = "0.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/busboy/-/busboy-0.2.4.tgz";
+        sha1 = "1977e96e1ee884649651ebdf548ca900758ba7f3";
+      };
+    };
+    "camelcase-6.3.0" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "6.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz";
+        sha512 = "Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==";
+      };
+    };
+    "chalk-4.1.2" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "4.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz";
+        sha512 = "oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==";
+      };
+    };
+    "chokidar-3.5.1" = {
+      name = "chokidar";
+      packageName = "chokidar";
+      version = "3.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz";
+        sha512 = "9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==";
+      };
+    };
+    "cliui-7.0.4" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "7.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz";
+        sha512 = "OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==";
+      };
+    };
+    "color-convert-2.0.1" = {
+      name = "color-convert";
+      packageName = "color-convert";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz";
+        sha512 = "RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==";
+      };
+    };
+    "color-name-1.1.4" = {
+      name = "color-name";
+      packageName = "color-name";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz";
+        sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
+      };
+    };
+    "colors-1.0.3" = {
+      name = "colors";
+      packageName = "colors";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz";
+        sha1 = "0433f44d809680fdeb60ed260f1b0c262e82a40b";
+      };
+    };
+    "commander-2.11.0" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz";
+        sha512 = "b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "connect-3.7.0" = {
+      name = "connect";
+      packageName = "connect";
+      version = "3.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz";
+        sha512 = "ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==";
+      };
+    };
+    "connect-ratelimit-0.0.7" = {
+      name = "connect-ratelimit";
+      packageName = "connect-ratelimit";
+      version = "0.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect-ratelimit/-/connect-ratelimit-0.0.7.tgz";
+        sha1 = "e6e09c950649e849499cab1870a415a07f731568";
+      };
+    };
+    "connect-route-0.1.5" = {
+      name = "connect-route";
+      packageName = "connect-route";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect-route/-/connect-route-0.1.5.tgz";
+        sha1 = "e3c218319d2e88a8a9ae0b0e0fe09a729c39744a";
+      };
+    };
+    "core-util-is-1.0.3" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz";
+        sha512 = "ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==";
+      };
+    };
+    "cycle-1.0.3" = {
+      name = "cycle";
+      packageName = "cycle";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz";
+        sha1 = "21e80b2be8580f98b468f379430662b046c34ad2";
+      };
+    };
+    "debug-2.6.9" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.6.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz";
+        sha512 = "bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==";
+      };
+    };
+    "debug-4.3.1" = {
+      name = "debug";
+      packageName = "debug";
+      version = "4.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz";
+        sha512 = "doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==";
+      };
+    };
+    "decamelize-4.0.0" = {
+      name = "decamelize";
+      packageName = "decamelize";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz";
+        sha512 = "9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==";
+      };
+    };
+    "dicer-0.2.3" = {
+      name = "dicer";
+      packageName = "dicer";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dicer/-/dicer-0.2.3.tgz";
+        sha1 = "f00281189a55c2351ef80490a4fe9fb2c59c4939";
+      };
+    };
+    "diff-5.0.0" = {
+      name = "diff";
+      packageName = "diff";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz";
+        sha512 = "/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==";
+      };
+    };
+    "ee-first-1.1.1" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    };
+    "emoji-regex-8.0.0" = {
+      name = "emoji-regex";
+      packageName = "emoji-regex";
+      version = "8.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";
+        sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
+      };
+    };
+    "encodeurl-1.0.2" = {
+      name = "encodeurl";
+      packageName = "encodeurl";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz";
+        sha1 = "ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59";
+      };
+    };
+    "escalade-3.1.1" = {
+      name = "escalade";
+      packageName = "escalade";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz";
+        sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==";
+      };
+    };
+    "escape-html-1.0.3" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    };
+    "escape-string-regexp-4.0.0" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz";
+        sha512 = "TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==";
+      };
+    };
+    "eyes-0.1.8" = {
+      name = "eyes";
+      packageName = "eyes";
+      version = "0.1.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz";
+        sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0";
+      };
+    };
+    "fd-0.0.3" = {
+      name = "fd";
+      packageName = "fd";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fd/-/fd-0.0.3.tgz";
+        sha512 = "iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA==";
+      };
+    };
+    "fill-range-7.0.1" = {
+      name = "fill-range";
+      packageName = "fill-range";
+      version = "7.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz";
+        sha512 = "qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==";
+      };
+    };
+    "finalhandler-1.1.2" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz";
+        sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==";
+      };
+    };
+    "find-up-5.0.0" = {
+      name = "find-up";
+      packageName = "find-up";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz";
+        sha512 = "78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==";
+      };
+    };
+    "flat-5.0.2" = {
+      name = "flat";
+      packageName = "flat";
+      version = "5.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz";
+        sha512 = "b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==";
+      };
+    };
+    "fs.realpath-1.0.0" = {
+      name = "fs.realpath";
+      packageName = "fs.realpath";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    };
+    "fsevents-2.3.2" = {
+      name = "fsevents";
+      packageName = "fsevents";
+      version = "2.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz";
+        sha512 = "xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==";
+      };
+    };
+    "get-caller-file-2.0.5" = {
+      name = "get-caller-file";
+      packageName = "get-caller-file";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz";
+        sha512 = "DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==";
+      };
+    };
+    "glob-7.1.6" = {
+      name = "glob";
+      packageName = "glob";
+      version = "7.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz";
+        sha512 = "LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==";
+      };
+    };
+    "glob-parent-5.1.2" = {
+      name = "glob-parent";
+      packageName = "glob-parent";
+      version = "5.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz";
+        sha512 = "AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==";
+      };
+    };
+    "graceful-fs-4.2.10" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.2.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz";
+        sha512 = "9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==";
+      };
+    };
+    "growl-1.10.5" = {
+      name = "growl";
+      packageName = "growl";
+      version = "1.10.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz";
+        sha512 = "qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==";
+      };
+    };
+    "has-flag-4.0.0" = {
+      name = "has-flag";
+      packageName = "has-flag";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz";
+        sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
+      };
+    };
+    "he-1.2.0" = {
+      name = "he";
+      packageName = "he";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/he/-/he-1.2.0.tgz";
+        sha512 = "F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==";
+      };
+    };
+    "ieee754-1.2.1" = {
+      name = "ieee754";
+      packageName = "ieee754";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz";
+        sha512 = "dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==";
+      };
+    };
+    "inflight-1.0.6" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
+        sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
+      };
+    };
+    "inherits-2.0.4" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz";
+        sha512 = "k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==";
+      };
+    };
+    "is-binary-path-2.1.0" = {
+      name = "is-binary-path";
+      packageName = "is-binary-path";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz";
+        sha512 = "ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==";
+      };
+    };
+    "is-extglob-2.1.1" = {
+      name = "is-extglob";
+      packageName = "is-extglob";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz";
+        sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2";
+      };
+    };
+    "is-fullwidth-code-point-2.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz";
+        sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
+      };
+    };
+    "is-fullwidth-code-point-3.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+        sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==";
+      };
+    };
+    "is-glob-4.0.3" = {
+      name = "is-glob";
+      packageName = "is-glob";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz";
+        sha512 = "xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==";
+      };
+    };
+    "is-number-7.0.0" = {
+      name = "is-number";
+      packageName = "is-number";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz";
+        sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==";
+      };
+    };
+    "is-plain-obj-2.1.0" = {
+      name = "is-plain-obj";
+      packageName = "is-plain-obj";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz";
+        sha512 = "YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==";
+      };
+    };
+    "isarray-0.0.1" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
+        sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+      };
+    };
+    "isexe-2.0.0" = {
+      name = "isexe";
+      packageName = "isexe";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz";
+        sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "js-yaml-4.0.0" = {
+      name = "js-yaml";
+      packageName = "js-yaml";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz";
+        sha512 = "pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==";
+      };
+    };
+    "locate-path-6.0.0" = {
+      name = "locate-path";
+      packageName = "locate-path";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz";
+        sha512 = "iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==";
+      };
+    };
+    "log-symbols-4.0.0" = {
+      name = "log-symbols";
+      packageName = "log-symbols";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz";
+        sha512 = "FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==";
+      };
+    };
+    "lru-cache-4.1.5" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "4.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz";
+        sha512 = "sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==";
+      };
+    };
+    "mime-2.6.0" = {
+      name = "mime";
+      packageName = "mime";
+      version = "2.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz";
+        sha512 = "USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==";
+      };
+    };
+    "minimatch-3.0.4" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      version = "3.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
+        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+      };
+    };
+    "mocha-8.4.0" = {
+      name = "mocha";
+      packageName = "mocha";
+      version = "8.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz";
+        sha512 = "hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==";
+      };
+    };
+    "ms-2.0.0" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz";
+        sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
+      };
+    };
+    "ms-2.1.2" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+      };
+    };
+    "ms-2.1.3" = {
+      name = "ms";
+      packageName = "ms";
+      version = "2.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
+      };
+    };
+    "nanoid-3.1.20" = {
+      name = "nanoid";
+      packageName = "nanoid";
+      version = "3.1.20";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz";
+        sha512 = "a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==";
+      };
+    };
+    "negotiator-0.6.3" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz";
+        sha512 = "+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==";
+      };
+    };
+    "normalize-path-3.0.0" = {
+      name = "normalize-path";
+      packageName = "normalize-path";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz";
+        sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==";
+      };
+    };
+    "on-finished-2.3.0" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "p-limit-3.1.0" = {
+      name = "p-limit";
+      packageName = "p-limit";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz";
+        sha512 = "TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==";
+      };
+    };
+    "p-locate-5.0.0" = {
+      name = "p-locate";
+      packageName = "p-locate";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz";
+        sha512 = "LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==";
+      };
+    };
+    "packet-reader-1.0.0" = {
+      name = "packet-reader";
+      packageName = "packet-reader";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz";
+        sha512 = "HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==";
+      };
+    };
+    "parseurl-1.3.3" = {
+      name = "parseurl";
+      packageName = "parseurl";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz";
+        sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
+      };
+    };
+    "path-exists-4.0.0" = {
+      name = "path-exists";
+      packageName = "path-exists";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";
+        sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==";
+      };
+    };
+    "path-is-absolute-1.0.1" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    };
+    "pg-8.7.3" = {
+      name = "pg";
+      packageName = "pg";
+      version = "8.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg/-/pg-8.7.3.tgz";
+        sha512 = "HPmH4GH4H3AOprDJOazoIcpI49XFsHCe8xlrjHkWiapdbHK+HLtbm/GQzXYAZwmPju/kzKhjaSfMACG+8cgJcw==";
+      };
+    };
+    "pg-connection-string-2.5.0" = {
+      name = "pg-connection-string";
+      packageName = "pg-connection-string";
+      version = "2.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz";
+        sha512 = "r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==";
+      };
+    };
+    "pg-int8-1.0.1" = {
+      name = "pg-int8";
+      packageName = "pg-int8";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz";
+        sha512 = "WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==";
+      };
+    };
+    "pg-pool-3.5.1" = {
+      name = "pg-pool";
+      packageName = "pg-pool";
+      version = "3.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.1.tgz";
+        sha512 = "6iCR0wVrro6OOHFsyavV+i6KYL4lVNyYAB9RD18w66xSzN+d8b66HiwuP30Gp1SH5O9T82fckkzsRjlrhD0ioQ==";
+      };
+    };
+    "pg-protocol-1.5.0" = {
+      name = "pg-protocol";
+      packageName = "pg-protocol";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz";
+        sha512 = "muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==";
+      };
+    };
+    "pg-types-2.2.0" = {
+      name = "pg-types";
+      packageName = "pg-types";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz";
+        sha512 = "qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==";
+      };
+    };
+    "pgpass-1.0.5" = {
+      name = "pgpass";
+      packageName = "pgpass";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz";
+        sha512 = "FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==";
+      };
+    };
+    "picomatch-2.3.1" = {
+      name = "picomatch";
+      packageName = "picomatch";
+      version = "2.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";
+        sha512 = "JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==";
+      };
+    };
+    "postgres-array-2.0.0" = {
+      name = "postgres-array";
+      packageName = "postgres-array";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz";
+        sha512 = "VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==";
+      };
+    };
+    "postgres-bytea-1.0.0" = {
+      name = "postgres-bytea";
+      packageName = "postgres-bytea";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz";
+        sha1 = "027b533c0aa890e26d172d47cf9ccecc521acd35";
+      };
+    };
+    "postgres-date-1.0.7" = {
+      name = "postgres-date";
+      packageName = "postgres-date";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz";
+        sha512 = "suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==";
+      };
+    };
+    "postgres-interval-1.2.0" = {
+      name = "postgres-interval";
+      packageName = "postgres-interval";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz";
+        sha512 = "9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==";
+      };
+    };
+    "pseudomap-1.0.2" = {
+      name = "pseudomap";
+      packageName = "pseudomap";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
+        sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+      };
+    };
+    "randombytes-2.1.0" = {
+      name = "randombytes";
+      packageName = "randombytes";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz";
+        sha512 = "vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==";
+      };
+    };
+    "readable-stream-1.1.14" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "1.1.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
+        sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
+      };
+    };
+    "readable-stream-3.6.0" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "3.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz";
+        sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
+      };
+    };
+    "readdirp-3.5.0" = {
+      name = "readdirp";
+      packageName = "readdirp";
+      version = "3.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz";
+        sha512 = "cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==";
+      };
+    };
+    "redis-0.8.1" = {
+      name = "redis";
+      packageName = "redis";
+      version = "0.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis/-/redis-0.8.1.tgz";
+        sha1 = "159f2130599a2f719e44b03f0b4b7612f992fcb2";
+      };
+    };
+    "redis-url-0.1.0" = {
+      name = "redis-url";
+      packageName = "redis-url";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis-url/-/redis-url-0.1.0.tgz";
+        sha1 = "4da5e5b181b6c0cad6e1a55c7f50a8e6ee7779bb";
+      };
+    };
+    "require-directory-2.1.1" = {
+      name = "require-directory";
+      packageName = "require-directory";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz";
+        sha1 = "8c64ad5fd30dab1c976e2344ffe7f792a6a6df42";
+      };
+    };
+    "safe-buffer-5.2.1" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
+        sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
+      };
+    };
+    "serialize-javascript-5.0.1" = {
+      name = "serialize-javascript";
+      packageName = "serialize-javascript";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz";
+        sha512 = "SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==";
+      };
+    };
+    "source-map-0.6.1" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz";
+        sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
+      };
+    };
+    "split2-4.1.0" = {
+      name = "split2";
+      packageName = "split2";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz";
+        sha512 = "VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==";
+      };
+    };
+    "st-2.0.0" = {
+      name = "st";
+      packageName = "st";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/st/-/st-2.0.0.tgz";
+        sha512 = "drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw==";
+      };
+    };
+    "stack-trace-0.0.10" = {
+      name = "stack-trace";
+      packageName = "stack-trace";
+      version = "0.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz";
+        sha1 = "547c70b347e8d32b4e108ea1a2a159e5fdde19c0";
+      };
+    };
+    "statuses-1.5.0" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz";
+        sha1 = "161c7dac177659fd9811f43771fa99381478628c";
+      };
+    };
+    "streamsearch-0.1.2" = {
+      name = "streamsearch";
+      packageName = "streamsearch";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz";
+        sha1 = "808b9d0e56fc273d809ba57338e929919a1a9f1a";
+      };
+    };
+    "string-width-2.1.1" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz";
+        sha512 = "nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==";
+      };
+    };
+    "string-width-4.2.3" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "4.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz";
+        sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==";
+      };
+    };
+    "string_decoder-0.10.31" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "0.10.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
+        sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+      };
+    };
+    "string_decoder-1.3.0" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz";
+        sha512 = "hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==";
+      };
+    };
+    "strip-ansi-4.0.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz";
+        sha1 = "a8479022eb1ac368a871389b635262c505ee368f";
+      };
+    };
+    "strip-ansi-6.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "6.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz";
+        sha512 = "Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==";
+      };
+    };
+    "strip-json-comments-3.1.1" = {
+      name = "strip-json-comments";
+      packageName = "strip-json-comments";
+      version = "3.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz";
+        sha512 = "6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==";
+      };
+    };
+    "supports-color-7.2.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "7.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz";
+        sha512 = "qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==";
+      };
+    };
+    "supports-color-8.1.1" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "8.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz";
+        sha512 = "MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==";
+      };
+    };
+    "to-regex-range-5.0.1" = {
+      name = "to-regex-range";
+      packageName = "to-regex-range";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz";
+        sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
+      };
+    };
+    "uglify-js-3.1.6" = {
+      name = "uglify-js";
+      packageName = "uglify-js";
+      version = "3.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.6.tgz";
+        sha512 = "/rseyxEKEVMBo8279lqpoJgD6C/i/CIi+9TJDvWmb+Xo6mqMKwjA8Io3IMHlcXQzj99feR6zrN8m3wqqvm/nYA==";
+      };
+    };
+    "unpipe-1.0.0" = {
+      name = "unpipe";
+      packageName = "unpipe";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    };
+    "util-deprecate-1.0.2" = {
+      name = "util-deprecate";
+      packageName = "util-deprecate";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    };
+    "utils-merge-1.0.1" = {
+      name = "utils-merge";
+      packageName = "utils-merge";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz";
+        sha1 = "9f95710f50a267947b2ccc124741c1028427e713";
+      };
+    };
+    "which-2.0.2" = {
+      name = "which";
+      packageName = "which";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/which/-/which-2.0.2.tgz";
+        sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==";
+      };
+    };
+    "wide-align-1.1.3" = {
+      name = "wide-align";
+      packageName = "wide-align";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz";
+        sha512 = "QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==";
+      };
+    };
+    "winston-2.4.5" = {
+      name = "winston";
+      packageName = "winston";
+      version = "2.4.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz";
+        sha512 = "TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==";
+      };
+    };
+    "workerpool-6.1.0" = {
+      name = "workerpool";
+      packageName = "workerpool";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz";
+        sha512 = "toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==";
+      };
+    };
+    "wrap-ansi-7.0.0" = {
+      name = "wrap-ansi";
+      packageName = "wrap-ansi";
+      version = "7.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz";
+        sha512 = "YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "xtend-4.0.2" = {
+      name = "xtend";
+      packageName = "xtend";
+      version = "4.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz";
+        sha512 = "LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==";
+      };
+    };
+    "y18n-5.0.8" = {
+      name = "y18n";
+      packageName = "y18n";
+      version = "5.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz";
+        sha512 = "0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==";
+      };
+    };
+    "yallist-2.1.2" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz";
+        sha1 = "1c11f9218f076089a47dd512f93c6699a6a81d52";
+      };
+    };
+    "yargs-16.2.0" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "16.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz";
+        sha512 = "D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==";
+      };
+    };
+    "yargs-parser-20.2.4" = {
+      name = "yargs-parser";
+      packageName = "yargs-parser";
+      version = "20.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz";
+        sha512 = "WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==";
+      };
+    };
+    "yargs-unparser-2.0.0" = {
+      name = "yargs-unparser";
+      packageName = "yargs-unparser";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz";
+        sha512 = "7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==";
+      };
+    };
+    "yocto-queue-0.1.0" = {
+      name = "yocto-queue";
+      packageName = "yocto-queue";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz";
+        sha512 = "rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==";
+      };
+    };
+  };
+  args = {
+    name = "haste";
+    packageName = "haste";
+    version = "0.1.0";
+    src = ../../../../../../../../../nix/store/jmii2np1kr78g0pnyf2y8wvj09nc1pr0-source;
+    dependencies = [
+      sources."@ungap/promise-all-settled-1.1.2"
+      sources."ansi-colors-4.1.1"
+      sources."ansi-regex-3.0.1"
+      sources."ansi-styles-4.3.0"
+      sources."anymatch-3.1.2"
+      sources."argparse-2.0.1"
+      sources."async-1.0.0"
+      sources."async-cache-1.1.0"
+      sources."balanced-match-1.0.2"
+      sources."base64-js-1.5.1"
+      sources."binary-extensions-2.2.0"
+      (sources."bl-4.1.0" // {
+        dependencies = [
+          sources."readable-stream-3.6.0"
+          sources."string_decoder-1.3.0"
+        ];
+      })
+      sources."brace-expansion-1.1.11"
+      sources."braces-3.0.2"
+      sources."browser-stdout-1.3.1"
+      sources."buffer-5.7.1"
+      sources."buffer-writer-2.0.0"
+      sources."busboy-0.2.4"
+      sources."camelcase-6.3.0"
+      (sources."chalk-4.1.2" // {
+        dependencies = [
+          sources."supports-color-7.2.0"
+        ];
+      })
+      sources."chokidar-3.5.1"
+      (sources."cliui-7.0.4" // {
+        dependencies = [
+          sources."ansi-regex-5.0.1"
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.3"
+          sources."strip-ansi-6.0.1"
+        ];
+      })
+      sources."color-convert-2.0.1"
+      sources."color-name-1.1.4"
+      sources."colors-1.0.3"
+      sources."commander-2.11.0"
+      sources."concat-map-0.0.1"
+      sources."connect-3.7.0"
+      sources."connect-ratelimit-0.0.7"
+      sources."connect-route-0.1.5"
+      sources."core-util-is-1.0.3"
+      sources."cycle-1.0.3"
+      sources."debug-2.6.9"
+      sources."decamelize-4.0.0"
+      sources."dicer-0.2.3"
+      sources."diff-5.0.0"
+      sources."ee-first-1.1.1"
+      sources."emoji-regex-8.0.0"
+      sources."encodeurl-1.0.2"
+      sources."escalade-3.1.1"
+      sources."escape-html-1.0.3"
+      sources."escape-string-regexp-4.0.0"
+      sources."eyes-0.1.8"
+      sources."fd-0.0.3"
+      sources."fill-range-7.0.1"
+      sources."finalhandler-1.1.2"
+      sources."find-up-5.0.0"
+      sources."flat-5.0.2"
+      sources."fs.realpath-1.0.0"
+      sources."fsevents-2.3.2"
+      sources."get-caller-file-2.0.5"
+      sources."glob-7.1.6"
+      sources."glob-parent-5.1.2"
+      sources."graceful-fs-4.2.10"
+      sources."growl-1.10.5"
+      sources."has-flag-4.0.0"
+      sources."he-1.2.0"
+      sources."ieee754-1.2.1"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."is-binary-path-2.1.0"
+      sources."is-extglob-2.1.1"
+      sources."is-fullwidth-code-point-2.0.0"
+      sources."is-glob-4.0.3"
+      sources."is-number-7.0.0"
+      sources."is-plain-obj-2.1.0"
+      sources."isarray-0.0.1"
+      sources."isexe-2.0.0"
+      sources."isstream-0.1.2"
+      sources."js-yaml-4.0.0"
+      sources."locate-path-6.0.0"
+      sources."log-symbols-4.0.0"
+      sources."lru-cache-4.1.5"
+      sources."mime-2.6.0"
+      sources."minimatch-3.0.4"
+      (sources."mocha-8.4.0" // {
+        dependencies = [
+          (sources."debug-4.3.1" // {
+            dependencies = [
+              sources."ms-2.1.2"
+            ];
+          })
+          sources."ms-2.1.3"
+        ];
+      })
+      sources."ms-2.0.0"
+      sources."nanoid-3.1.20"
+      sources."negotiator-0.6.3"
+      sources."normalize-path-3.0.0"
+      sources."on-finished-2.3.0"
+      sources."once-1.4.0"
+      sources."p-limit-3.1.0"
+      sources."p-locate-5.0.0"
+      sources."packet-reader-1.0.0"
+      sources."parseurl-1.3.3"
+      sources."path-exists-4.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."pg-8.7.3"
+      sources."pg-connection-string-2.5.0"
+      sources."pg-int8-1.0.1"
+      sources."pg-pool-3.5.1"
+      sources."pg-protocol-1.5.0"
+      sources."pg-types-2.2.0"
+      sources."pgpass-1.0.5"
+      sources."picomatch-2.3.1"
+      sources."postgres-array-2.0.0"
+      sources."postgres-bytea-1.0.0"
+      sources."postgres-date-1.0.7"
+      sources."postgres-interval-1.2.0"
+      sources."pseudomap-1.0.2"
+      sources."randombytes-2.1.0"
+      sources."readable-stream-1.1.14"
+      sources."readdirp-3.5.0"
+      sources."redis-0.8.1"
+      sources."redis-url-0.1.0"
+      sources."require-directory-2.1.1"
+      sources."safe-buffer-5.2.1"
+      sources."serialize-javascript-5.0.1"
+      sources."source-map-0.6.1"
+      sources."split2-4.1.0"
+      sources."st-2.0.0"
+      sources."stack-trace-0.0.10"
+      sources."statuses-1.5.0"
+      sources."streamsearch-0.1.2"
+      sources."string-width-2.1.1"
+      sources."string_decoder-0.10.31"
+      sources."strip-ansi-4.0.0"
+      sources."strip-json-comments-3.1.1"
+      sources."supports-color-8.1.1"
+      sources."to-regex-range-5.0.1"
+      sources."uglify-js-3.1.6"
+      sources."unpipe-1.0.0"
+      sources."util-deprecate-1.0.2"
+      sources."utils-merge-1.0.1"
+      sources."which-2.0.2"
+      sources."wide-align-1.1.3"
+      sources."winston-2.4.5"
+      sources."workerpool-6.1.0"
+      (sources."wrap-ansi-7.0.0" // {
+        dependencies = [
+          sources."ansi-regex-5.0.1"
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.3"
+          sources."strip-ansi-6.0.1"
+        ];
+      })
+      sources."wrappy-1.0.2"
+      sources."xtend-4.0.2"
+      sources."y18n-5.0.8"
+      sources."yallist-2.1.2"
+      (sources."yargs-16.2.0" // {
+        dependencies = [
+          sources."ansi-regex-5.0.1"
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.3"
+          sources."strip-ansi-6.0.1"
+        ];
+      })
+      sources."yargs-parser-20.2.4"
+      sources."yargs-unparser-2.0.0"
+      sources."yocto-queue-0.1.0"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Private Pastebin Server";
+    };
+    production = false;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+in
+{
+  args = args;
+  sources = sources;
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+  nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args {
+    src = stdenv.mkDerivation {
+      name = args.name + "-package-json";
+      src = nix-gitignore.gitignoreSourcePure [
+        "*"
+        "!package.json"
+        "!package-lock.json"
+      ] args.src;
+      dontBuild = true;
+      installPhase = "mkdir -p $out; cp -r ./* $out;";
+    };
+  });
+}
diff --git a/pkgs/servers/haste-server/node-env.nix b/pkgs/servers/haste-server/node-env.nix
new file mode 100644
index 0000000000000..5f055785791ba
--- /dev/null
+++ b/pkgs/servers/haste-server/node-env.nix
@@ -0,0 +1,588 @@
+# This file originates from node2nix
+
+{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}:
+
+let
+  # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
+  utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux;
+
+  python = if nodejs ? python then nodejs.python else python2;
+
+  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
+  tarWrapper = runCommand "tarWrapper" {} ''
+    mkdir -p $out/bin
+
+    cat > $out/bin/tar <<EOF
+    #! ${stdenv.shell} -e
+    $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
+    EOF
+
+    chmod +x $out/bin/tar
+  '';
+
+  # Function that generates a TGZ file from a NPM project
+  buildNodeSourceDist =
+    { name, version, src, ... }:
+
+    stdenv.mkDerivation {
+      name = "node-tarball-${name}-${version}";
+      inherit src;
+      buildInputs = [ nodejs ];
+      buildPhase = ''
+        export HOME=$TMPDIR
+        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
+      '';
+      installPhase = ''
+        mkdir -p $out/tarballs
+        mv $tgzFile $out/tarballs
+        mkdir -p $out/nix-support
+        echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
+      '';
+    };
+
+  # Common shell logic
+  installPackage = writeShellScript "install-package" ''
+    installPackage() {
+      local packageName=$1 src=$2
+
+      local strippedName
+
+      local DIR=$PWD
+      cd $TMPDIR
+
+      unpackFile $src
+
+      # Make the base dir in which the target dependency resides first
+      mkdir -p "$(dirname "$DIR/$packageName")"
+
+      if [ -f "$src" ]
+      then
+          # Figure out what directory has been unpacked
+          packageDir="$(find . -maxdepth 1 -type d | tail -1)"
+
+          # Restore write permissions to make building work
+          find "$packageDir" -type d -exec chmod u+x {} \;
+          chmod -R u+w "$packageDir"
+
+          # Move the extracted tarball into the output folder
+          mv "$packageDir" "$DIR/$packageName"
+      elif [ -d "$src" ]
+      then
+          # Get a stripped name (without hash) of the source directory.
+          # On old nixpkgs it's already set internally.
+          if [ -z "$strippedName" ]
+          then
+              strippedName="$(stripHash $src)"
+          fi
+
+          # Restore write permissions to make building work
+          chmod -R u+w "$strippedName"
+
+          # Move the extracted directory into the output folder
+          mv "$strippedName" "$DIR/$packageName"
+      fi
+
+      # Change to the package directory to install dependencies
+      cd "$DIR/$packageName"
+    }
+  '';
+
+  # Bundle the dependencies of the package
+  #
+  # Only include dependencies if they don't exist. They may also be bundled in the package.
+  includeDependencies = {dependencies}:
+    lib.optionalString (dependencies != []) (
+      ''
+        mkdir -p node_modules
+        cd node_modules
+      ''
+      + (lib.concatMapStrings (dependency:
+        ''
+          if [ ! -e "${dependency.name}" ]; then
+              ${composePackage dependency}
+          fi
+        ''
+      ) dependencies)
+      + ''
+        cd ..
+      ''
+    );
+
+  # Recursively composes the dependencies of a package
+  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
+    builtins.addErrorContext "while evaluating node package '${packageName}'" ''
+      installPackage "${packageName}" "${src}"
+      ${includeDependencies { inherit dependencies; }}
+      cd ..
+      ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+    '';
+
+  pinpointDependencies = {dependencies, production}:
+    let
+      pinpointDependenciesFromPackageJSON = writeTextFile {
+        name = "pinpointDependencies.js";
+        text = ''
+          var fs = require('fs');
+          var path = require('path');
+
+          function resolveDependencyVersion(location, name) {
+              if(location == process.env['NIX_STORE']) {
+                  return null;
+              } else {
+                  var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
+
+                  if(fs.existsSync(dependencyPackageJSON)) {
+                      var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
+
+                      if(dependencyPackageObj.name == name) {
+                          return dependencyPackageObj.version;
+                      }
+                  } else {
+                      return resolveDependencyVersion(path.resolve(location, ".."), name);
+                  }
+              }
+          }
+
+          function replaceDependencies(dependencies) {
+              if(typeof dependencies == "object" && dependencies !== null) {
+                  for(var dependency in dependencies) {
+                      var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
+
+                      if(resolvedVersion === null) {
+                          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
+                      } else {
+                          dependencies[dependency] = resolvedVersion;
+                      }
+                  }
+              }
+          }
+
+          /* Read the package.json configuration */
+          var packageObj = JSON.parse(fs.readFileSync('./package.json'));
+
+          /* Pinpoint all dependencies */
+          replaceDependencies(packageObj.dependencies);
+          if(process.argv[2] == "development") {
+              replaceDependencies(packageObj.devDependencies);
+          }
+          replaceDependencies(packageObj.optionalDependencies);
+
+          /* Write the fixed package.json file */
+          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
+        '';
+      };
+    in
+    ''
+      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
+
+      ${lib.optionalString (dependencies != [])
+        ''
+          if [ -d node_modules ]
+          then
+              cd node_modules
+              ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
+              cd ..
+          fi
+        ''}
+    '';
+
+  # Recursively traverses all dependencies of a package and pinpoints all
+  # dependencies in the package.json file to the versions that are actually
+  # being used.
+
+  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
+    ''
+      if [ -d "${packageName}" ]
+      then
+          cd "${packageName}"
+          ${pinpointDependencies { inherit dependencies production; }}
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+      fi
+    '';
+
+  # Extract the Node.js source code which is used to compile packages with
+  # native bindings
+  nodeSources = runCommand "node-sources" {} ''
+    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
+    mv node-* $out
+  '';
+
+  # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
+  addIntegrityFieldsScript = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      function augmentDependencies(baseDir, dependencies) {
+          for(var dependencyName in dependencies) {
+              var dependency = dependencies[dependencyName];
+
+              // Open package.json and augment metadata fields
+              var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
+              var packageJSONPath = path.join(packageJSONDir, "package.json");
+
+              if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
+                  console.log("Adding metadata fields to: "+packageJSONPath);
+                  var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
+
+                  if(dependency.integrity) {
+                      packageObj["_integrity"] = dependency.integrity;
+                  } else {
+                      packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
+                  }
+
+                  if(dependency.resolved) {
+                      packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
+                  } else {
+                      packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
+                  }
+
+                  if(dependency.from !== undefined) { // Adopt from property if one has been provided
+                      packageObj["_from"] = dependency.from;
+                  }
+
+                  fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
+              }
+
+              // Augment transitive dependencies
+              if(dependency.dependencies !== undefined) {
+                  augmentDependencies(packageJSONDir, dependency.dependencies);
+              }
+          }
+      }
+
+      if(fs.existsSync("./package-lock.json")) {
+          var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
+
+          if(![1, 2].includes(packageLock.lockfileVersion)) {
+             process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n");
+             process.exit(1);
+          }
+
+          if(packageLock.dependencies !== undefined) {
+              augmentDependencies(".", packageLock.dependencies);
+          }
+      }
+    '';
+  };
+
+  # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
+  reconstructPackageLock = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      var packageObj = JSON.parse(fs.readFileSync("package.json"));
+
+      var lockObj = {
+          name: packageObj.name,
+          version: packageObj.version,
+          lockfileVersion: 1,
+          requires: true,
+          dependencies: {}
+      };
+
+      function augmentPackageJSON(filePath, dependencies) {
+          var packageJSON = path.join(filePath, "package.json");
+          if(fs.existsSync(packageJSON)) {
+              var packageObj = JSON.parse(fs.readFileSync(packageJSON));
+              dependencies[packageObj.name] = {
+                  version: packageObj.version,
+                  integrity: "sha1-000000000000000000000000000=",
+                  dependencies: {}
+              };
+              processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
+          }
+      }
+
+      function processDependencies(dir, dependencies) {
+          if(fs.existsSync(dir)) {
+              var files = fs.readdirSync(dir);
+
+              files.forEach(function(entry) {
+                  var filePath = path.join(dir, entry);
+                  var stats = fs.statSync(filePath);
+
+                  if(stats.isDirectory()) {
+                      if(entry.substr(0, 1) == "@") {
+                          // When we encounter a namespace folder, augment all packages belonging to the scope
+                          var pkgFiles = fs.readdirSync(filePath);
+
+                          pkgFiles.forEach(function(entry) {
+                              if(stats.isDirectory()) {
+                                  var pkgFilePath = path.join(filePath, entry);
+                                  augmentPackageJSON(pkgFilePath, dependencies);
+                              }
+                          });
+                      } else {
+                          augmentPackageJSON(filePath, dependencies);
+                      }
+                  }
+              });
+          }
+      }
+
+      processDependencies("node_modules", lockObj.dependencies);
+
+      fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
+    '';
+  };
+
+  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
+    let
+      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
+    in
+    ''
+        # Pinpoint the versions of all dependencies to the ones that are actually being used
+        echo "pinpointing versions of dependencies..."
+        source $pinpointDependenciesScriptPath
+
+        # Patch the shebangs of the bundled modules to prevent them from
+        # calling executables outside the Nix store as much as possible
+        patchShebangs .
+
+        # Deploy the Node.js package by running npm install. Since the
+        # dependencies have been provided already by ourselves, it should not
+        # attempt to install them again, which is good, because we want to make
+        # it Nix's responsibility. If it needs to install any dependencies
+        # anyway (e.g. because the dependency parameters are
+        # incomplete/incorrect), it fails.
+        #
+        # The other responsibilities of NPM are kept -- version checks, build
+        # steps, postprocessing etc.
+
+        export HOME=$TMPDIR
+        cd "${packageName}"
+        runHook preRebuild
+
+        ${lib.optionalString bypassCache ''
+          ${lib.optionalString reconstructLock ''
+            if [ -f package-lock.json ]
+            then
+                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
+                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
+                rm package-lock.json
+            else
+                echo "No package-lock.json file found, reconstructing..."
+            fi
+
+            node ${reconstructPackageLock}
+          ''}
+
+          node ${addIntegrityFieldsScript}
+        ''}
+
+        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
+
+        if [ "''${dontNpmInstall-}" != "1" ]
+        then
+            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+            rm -f npm-shrinkwrap.json
+
+            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
+        fi
+    '';
+
+  # Builds and composes an NPM package including all its dependencies
+  buildNodePackage =
+    { name
+    , packageName
+    , version
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , preRebuild ? ""
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , meta ? {}
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
+    in
+    stdenv.mkDerivation ({
+      name = "${name}-${version}";
+      buildInputs = [ tarWrapper python nodejs ]
+        ++ lib.optional (stdenv.isLinux) utillinux
+        ++ lib.optional (stdenv.isDarwin) libtool
+        ++ buildInputs;
+
+      inherit nodejs;
+
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
+
+      compositionScript = composePackage args;
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
+
+      installPhase = ''
+        source ${installPackage}
+
+        # Create and enter a root node_modules/ folder
+        mkdir -p $out/lib/node_modules
+        cd $out/lib/node_modules
+
+        # Compose the package and all its dependencies
+        source $compositionScriptPath
+
+        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+        # Create symlink to the deployed executable folder, if applicable
+        if [ -d "$out/lib/node_modules/.bin" ]
+        then
+            ln -s $out/lib/node_modules/.bin $out/bin
+        fi
+
+        # Create symlinks to the deployed manual page folders, if applicable
+        if [ -d "$out/lib/node_modules/${packageName}/man" ]
+        then
+            mkdir -p $out/share
+            for dir in "$out/lib/node_modules/${packageName}/man/"*
+            do
+                mkdir -p $out/share/man/$(basename "$dir")
+                for page in "$dir"/*
+                do
+                    ln -s $page $out/share/man/$(basename "$dir")
+                done
+            done
+        fi
+
+        # Run post install hook, if provided
+        runHook postInstall
+      '';
+
+      meta = {
+        # default to Node.js' platforms
+        platforms = nodejs.meta.platforms;
+      } // meta;
+    } // extraArgs);
+
+  # Builds a node environment (a node_modules folder and a set of binaries)
+  buildNodeDependencies =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
+    in
+      stdenv.mkDerivation ({
+        name = "node-dependencies-${name}-${version}";
+
+        buildInputs = [ tarWrapper python nodejs ]
+          ++ lib.optional (stdenv.isLinux) utillinux
+          ++ lib.optional (stdenv.isDarwin) libtool
+          ++ buildInputs;
+
+        inherit dontStrip; # Stripping may fail a build for some package deployments
+        inherit dontNpmInstall unpackPhase buildPhase;
+
+        includeScript = includeDependencies { inherit dependencies; };
+        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
+
+        installPhase = ''
+          source ${installPackage}
+
+          mkdir -p $out/${packageName}
+          cd $out/${packageName}
+
+          source $includeScriptPath
+
+          # Create fake package.json to make the npm commands work properly
+          cp ${src}/package.json .
+          chmod 644 package.json
+          ${lib.optionalString bypassCache ''
+            if [ -f ${src}/package-lock.json ]
+            then
+                cp ${src}/package-lock.json .
+            fi
+          ''}
+
+          # Go to the parent folder to make sure that all packages are pinpointed
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+          # Expose the executables that were installed
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          mv ${packageName} lib
+          ln -s $out/lib/node_modules/.bin $out/bin
+        '';
+      } // extraArgs);
+
+  # Builds a development shell
+  buildNodeShell =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      nodeDependencies = buildNodeDependencies args;
+    in
+    stdenv.mkDerivation {
+      name = "node-shell-${name}-${version}";
+
+      buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
+      buildCommand = ''
+        mkdir -p $out/bin
+        cat > $out/bin/shell <<EOF
+        #! ${stdenv.shell} -e
+        $shellHook
+        exec ${stdenv.shell}
+        EOF
+        chmod +x $out/bin/shell
+      '';
+
+      # Provide the dependencies in a development shell through the NODE_PATH environment variable
+      inherit nodeDependencies;
+      shellHook = lib.optionalString (dependencies != []) ''
+        export NODE_PATH=${nodeDependencies}/lib/node_modules
+        export PATH="${nodeDependencies}/bin:$PATH"
+      '';
+    };
+in
+{
+  buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
+  buildNodePackage = lib.makeOverridable buildNodePackage;
+  buildNodeDependencies = lib.makeOverridable buildNodeDependencies;
+  buildNodeShell = lib.makeOverridable buildNodeShell;
+}
diff --git a/pkgs/servers/haste-server/update.sh b/pkgs/servers/haste-server/update.sh
new file mode 100755
index 0000000000000..1c5cf6f64f640
--- /dev/null
+++ b/pkgs/servers/haste-server/update.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts nodePackages.node2nix gnused nix coreutils jq
+
+set -euo pipefail
+
+latestVersion="$(curl -s "https://api.github.com/repos/toptal/haste-server/commits?per_page=1" | jq -r ".[0].sha")"
+currentVersion=$(nix-instantiate --eval -E "with import ./. {}; haste-server.version or (lib.getVersion haste-server)" | tr -d '"')
+
+if [[ "$currentVersion" == "$latestVersion" ]]; then
+  echo "haste-server is up-to-date: $currentVersion"
+  exit 0
+fi
+
+update-source-version haste-server 0 sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+update-source-version haste-server "$latestVersion"
+
+# use patched source
+store_src="$(nix-build . -A haste-server.src --no-out-link)"
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+
+node2nix \
+  --nodejs-14 \
+  --development \
+  --node-env ./node-env.nix \
+  --output ./node-deps.nix \
+  --input "$store_src/package.json" \
+  --composition ./node-composition.nix
diff --git a/pkgs/servers/hasura/cli.nix b/pkgs/servers/hasura/cli.nix
index a19a2773ce96d..48bcfe39eabd0 100644
--- a/pkgs/servers/hasura/cli.nix
+++ b/pkgs/servers/hasura/cli.nix
@@ -9,7 +9,7 @@ buildGoModule rec {
 
   subPackages = [ "cmd/hasura" ];
 
-  vendorSha256 = "0c0zn3a3bq3g13zj1b7hz1gfd9mcc5wlch80vjgp31vgm23vvd8d";
+  vendorSha256 = "0rjh4rs92jj56il3hg8msjz0w0iv25lydnh9v1kxmvdzy1x75b2b";
 
   doCheck = false;
 
diff --git a/pkgs/servers/hbase/default.nix b/pkgs/servers/hbase/default.nix
index 32d2c09de97fb..46521da885390 100644
--- a/pkgs/servers/hbase/default.nix
+++ b/pkgs/servers/hbase/default.nix
@@ -1,22 +1,55 @@
-{ lib, stdenv, fetchurl, makeWrapper }:
-stdenv.mkDerivation rec {
-  pname = "hbase";
-  version = "0.98.24";
+{ lib
+, stdenv
+, fetchurl
+, makeWrapper
+, jdk8_headless
+, jdk11_headless
+, nixosTests
+}:
 
-  src = fetchurl {
-    url = "mirror://apache/hbase/${version}/hbase-${version}-hadoop2-bin.tar.gz";
-    sha256 = "0kz72wqsii09v9hxkw10mzyvjhji5sx3l6aijjalgbybavpcxglb";
-  };
+let common = { version, hash, jdk ? jdk11_headless, tests }:
+  stdenv.mkDerivation rec {
+    pname = "hbase";
+    inherit version;
+
+    src = fetchurl {
+      url = "mirror://apache/hbase/${version}/hbase-${version}-bin.tar.gz";
+      inherit hash;
+    };
+
+    nativeBuildInputs = [ makeWrapper ];
+    installPhase = ''
+      mkdir -p $out
+      cp -R * $out
+      wrapProgram $out/bin/hbase --set-default JAVA_HOME ${jdk.home}
+    '';
+
+    passthru = { inherit tests; };
 
-  nativeBuildInputs = [ makeWrapper ];
-  installPhase = ''
-    mkdir -p $out
-    cp -R * $out
-  '';
-  meta = with lib; {
-    description = "A distributed, scalable, big data store";
-    homepage = "https://hbase.apache.org";
-    license = licenses.asl20;
-    platforms = lib.platforms.linux;
+    meta = with lib; {
+      description = "A distributed, scalable, big data store";
+      homepage = "https://hbase.apache.org";
+      license = licenses.asl20;
+      maintainers = with lib.maintainers; [ illustris ];
+      platforms = lib.platforms.linux;
+    };
+  };
+in
+{
+  hbase_1_7 = common {
+    version = "1.7.1";
+    hash = "sha256-DrH2G79QLT8L0YTTmAGC9pUWU8semSaTOsrsQRCI2rY=";
+    jdk = jdk8_headless;
+    tests.standalone = nixosTests.hbase1;
+  };
+  hbase_2_4 = common {
+    version = "2.4.11";
+    hash = "sha256-m0vjUtPaj8czHHh+rQNJJgrFAM744cHd06KE0ut7QeU=";
+    tests.standalone = nixosTests.hbase2;
+  };
+  hbase_3_0 = common {
+    version = "3.0.0-alpha-2";
+    hash = "sha256-QPvgO1BeFWvMT5PdUm/SL92ZgvSvYIuJbzolbBTenz4=";
+    tests.standalone = nixosTests.hbase3;
   };
 }
diff --git a/pkgs/servers/home-assistant/cli.nix b/pkgs/servers/home-assistant/cli.nix
index baa418776c5b8..18bc9c76da00a 100644
--- a/pkgs/servers/home-assistant/cli.nix
+++ b/pkgs/servers/home-assistant/cli.nix
@@ -2,7 +2,21 @@
 , python3
 }:
 
-python3.pkgs.buildPythonApplication rec {
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      click = super.click.overrideAttrs (oldAttrs: rec {
+        version = "8.0.4";
+        src = oldAttrs.src.override {
+          inherit version;
+          sha256 = "sha256-hFjXsSh8X7EoyQ4jOBz5nc3nS+r2x/9jhM6E1v4JCts=";
+        };
+      });
+    };
+  };
+in
+
+python.pkgs.buildPythonApplication rec {
   pname = "homeassistant-cli";
   version = "0.9.4";
 
@@ -16,7 +30,7 @@ python3.pkgs.buildPythonApplication rec {
     sed -i "s/'\(.*\)\(==\|>=\).*'/'\1'/g" setup.py
   '';
 
-  propagatedBuildInputs = with python3.pkgs; [
+  propagatedBuildInputs = with python.pkgs; [
     aiohttp
     click
     click-log
@@ -38,7 +52,7 @@ python3.pkgs.buildPythonApplication rec {
   #  $out/bin/hass-cli completion zsh > "$out/share/zsh/site-functions/_hass-cli"
   #'';
 
-  checkInputs = with python3.pkgs; [
+  checkInputs = with python.pkgs; [
     pytestCheckHook
     requests-mock
   ];
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 822bfcbe59367..963f81c1daf7f 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,1039 +2,3137 @@
 # Do not edit!
 
 {
-  version = "2022.3.8";
+  version = "2022.4.7";
   components = {
-    "abode" = ps: with ps; [ abodepy ];
-    "accuweather" = ps: with ps; [ accuweather ];
-    "acer_projector" = ps: with ps; [ pyserial ];
-    "acmeda" = ps: with ps; [ aiopulse ];
-    "actiontec" = ps: with ps; [ ];
-    "adax" = ps: with ps; [ adax-local adax ];
-    "adguard" = ps: with ps; [ adguardhome ];
-    "ads" = ps: with ps; [ pyads ];
-    "advantage_air" = ps: with ps; [ advantage-air ];
-    "aemet" = ps: with ps; [ aemet-opendata ];
-    "aftership" = ps: with ps; [ pyaftership ];
-    "agent_dvr" = ps: with ps; [ agent-py ];
-    "air_quality" = ps: with ps; [ ];
-    "airly" = ps: with ps; [ airly ];
-    "airnow" = ps: with ps; [ pyairnow ];
-    "airthings" = ps: with ps; [ airthings-cloud ];
-    "airtouch4" = ps: with ps; [ airtouch4pyapi ];
-    "airvisual" = ps: with ps; [ pyairvisual ];
-    "aladdin_connect" = ps: with ps; [ aladdin-connect ];
-    "alarm_control_panel" = ps: with ps; [ ];
-    "alarmdecoder" = ps: with ps; [ adext ];
-    "alert" = ps: with ps; [ ];
-    "alexa" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "almond" = ps: with ps; [ aiohttp-cors pyalmond ];
-    "alpha_vantage" = ps: with ps; [ alpha-vantage ];
-    "amazon_polly" = ps: with ps; [ boto3 ];
-    "ambee" = ps: with ps; [ ambee ];
-    "amberelectric" = ps: with ps; [ amberelectric ];
-    "ambiclimate" = ps: with ps; [ aiohttp-cors ambiclimate ];
-    "ambient_station" = ps: with ps; [ aioambient ];
-    "amcrest" = ps: with ps; [ amcrest ha-ffmpeg ];
-    "ampio" = ps: with ps; [ asmog ];
-    "analytics" = ps: with ps; [ aiohttp-cors sqlalchemy ];
-    "android_ip_webcam" = ps: with ps; [ pydroid-ipcam ];
-    "androidtv" = ps: with ps; [ adb-shell androidtv pure-python-adb ];
-    "anel_pwrctrl" = ps: with ps; [ ]; # missing inputs: anel_pwrctrl-homeassistant
-    "anthemav" = ps: with ps; [ ]; # missing inputs: anthemav
-    "apache_kafka" = ps: with ps; [ aiokafka ];
-    "apcupsd" = ps: with ps; [ apcaccess ];
-    "api" = ps: with ps; [ aiohttp-cors ];
-    "apple_tv" = ps: with ps; [ aiohttp-cors ifaddr pyatv zeroconf ];
-    "apprise" = ps: with ps; [ apprise ];
-    "aprs" = ps: with ps; [ aprslib geopy ];
-    "aqualogic" = ps: with ps; [ aqualogic ];
-    "aquostv" = ps: with ps; [ ]; # missing inputs: sharp_aquos_rc
-    "arcam_fmj" = ps: with ps; [ arcam-fmj ];
-    "arest" = ps: with ps; [ ];
-    "arlo" = ps: with ps; [ ha-ffmpeg pyarlo ];
-    "arris_tg2492lg" = ps: with ps; [ ]; # missing inputs: arris-tg2492lg
-    "aruba" = ps: with ps; [ pexpect ];
-    "arwn" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "aseko_pool_live" = ps: with ps; [ aioaseko ];
-    "asterisk_cdr" = ps: with ps; [ asterisk-mbox ];
-    "asterisk_mbox" = ps: with ps; [ asterisk-mbox ];
-    "asuswrt" = ps: with ps; [ aioasuswrt ];
-    "atag" = ps: with ps; [ pyatag ];
-    "aten_pe" = ps: with ps; [ atenpdu ];
-    "atome" = ps: with ps; [ pyatome ];
-    "august" = ps: with ps; [ yalexs ];
-    "aurora" = ps: with ps; [ auroranoaa ];
-    "aurora_abb_powerone" = ps: with ps; [ aurorapy ];
-    "aussie_broadband" = ps: with ps; [ pyaussiebb ];
-    "auth" = ps: with ps; [ aiohttp-cors ];
-    "automation" = ps: with ps; [ aiohttp-cors ];
-    "avea" = ps: with ps; [ avea ];
-    "avion" = ps: with ps; [ avion ];
-    "awair" = ps: with ps; [ python-awair ];
-    "aws" = ps: with ps; [ aiobotocore ];
-    "axis" = ps: with ps; [ aiohttp-cors axis paho-mqtt ];
-    "azure_devops" = ps: with ps; [ aioazuredevops ];
-    "azure_event_hub" = ps: with ps; [ azure-eventhub ];
-    "azure_service_bus" = ps: with ps; [ azure-servicebus ];
-    "baidu" = ps: with ps; [ ]; # missing inputs: baidu-aip
-    "balboa" = ps: with ps; [ pybalboa ];
-    "bayesian" = ps: with ps; [ ];
-    "bbb_gpio" = ps: with ps; [ ]; # missing inputs: Adafruit_BBIO
-    "bbox" = ps: with ps; [ ]; # missing inputs: pybbox
-    "beewi_smartclim" = ps: with ps; [ ]; # missing inputs: beewi_smartclim
-    "bh1750" = ps: with ps; [ i2csense smbus-cffi ];
-    "binary_sensor" = ps: with ps; [ ];
-    "bitcoin" = ps: with ps; [ blockchain ];
-    "bizkaibus" = ps: with ps; [ bizkaibus ];
-    "blackbird" = ps: with ps; [ pyblackbird ];
-    "blebox" = ps: with ps; [ blebox-uniapi ];
-    "blink" = ps: with ps; [ blinkpy ];
-    "blinksticklight" = ps: with ps; [ BlinkStick ];
-    "blinkt" = ps: with ps; [ ]; # missing inputs: blinkt
-    "blockchain" = ps: with ps; [ ]; # missing inputs: python-blockchain-api
-    "bloomsky" = ps: with ps; [ ];
-    "blueprint" = ps: with ps; [ ];
-    "bluesound" = ps: with ps; [ xmltodict ];
-    "bluetooth_le_tracker" = ps: with ps; [ pygatt ];
-    "bluetooth_tracker" = ps: with ps; [ bt-proximity pybluez ];
-    "bme280" = ps: with ps; [ bme280spi i2csense smbus-cffi ];
-    "bme680" = ps: with ps; [ bme680 smbus-cffi ];
-    "bmp280" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-bmp280
-    "bmw_connected_drive" = ps: with ps; [ bimmer-connected ];
-    "bond" = ps: with ps; [ bond-api ];
-    "bosch_shc" = ps: with ps; [ aiohttp-cors boschshcpy ifaddr zeroconf ];
-    "braviatv" = ps: with ps; [ bravia-tv ];
-    "broadlink" = ps: with ps; [ broadlink ];
-    "brother" = ps: with ps; [ brother ];
-    "brottsplatskartan" = ps: with ps; [ brottsplatskartan ];
-    "browser" = ps: with ps; [ ];
-    "brunt" = ps: with ps; [ ]; # missing inputs: brunt
-    "bsblan" = ps: with ps; [ bsblan ];
-    "bt_home_hub_5" = ps: with ps; [ ]; # missing inputs: bthomehub5-devicelist
-    "bt_smarthub" = ps: with ps; [ ]; # missing inputs: btsmarthub_devicelist
-    "buienradar" = ps: with ps; [ buienradar ];
-    "button" = ps: with ps; [ ];
-    "caldav" = ps: with ps; [ caldav ];
-    "calendar" = ps: with ps; [ aiohttp-cors ];
-    "camera" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "canary" = ps: with ps; [ ha-ffmpeg py-canary ];
-    "cast" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa ifaddr mutagen plexapi plexauth plexwebsocket PyChromecast zeroconf ];
-    "cert_expiry" = ps: with ps; [ ];
-    "channels" = ps: with ps; [ pychannels ];
-    "circuit" = ps: with ps; [ circuit-webhook ];
-    "cisco_ios" = ps: with ps; [ pexpect ];
-    "cisco_mobility_express" = ps: with ps; [ ciscomobilityexpress ];
-    "cisco_webex_teams" = ps: with ps; [ webexteamssdk ];
-    "citybikes" = ps: with ps; [ ];
-    "clementine" = ps: with ps; [ ]; # missing inputs: python-clementine-remote
-    "clickatell" = ps: with ps; [ ];
-    "clicksend" = ps: with ps; [ ];
-    "clicksend_tts" = ps: with ps; [ ];
-    "climacell" = ps: with ps; [ pyclimacell ];
-    "climate" = ps: with ps; [ ];
-    "cloud" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa ];
-    "cloudflare" = ps: with ps; [ pycfdns ];
-    "cmus" = ps: with ps; [ ]; # missing inputs: pycmus
-    "co2signal" = ps: with ps; [ co2signal ];
-    "coinbase" = ps: with ps; [ ]; # missing inputs: coinbase
-    "color_extractor" = ps: with ps; [ colorthief ];
-    "comed_hourly_pricing" = ps: with ps; [ ];
-    "comfoconnect" = ps: with ps; [ pycomfoconnect ];
-    "command_line" = ps: with ps; [ ];
-    "compensation" = ps: with ps; [ numpy ];
-    "concord232" = ps: with ps; [ ]; # missing inputs: concord232
-    "config" = ps: with ps; [ aiohttp-cors ];
-    "configurator" = ps: with ps; [ ];
-    "control4" = ps: with ps; [ pycontrol4 ];
-    "conversation" = ps: with ps; [ aiohttp-cors ];
-    "coolmaster" = ps: with ps; [ pycoolmasternet-async ];
-    "coronavirus" = ps: with ps; [ coronavirus ];
-    "counter" = ps: with ps; [ ];
-    "cover" = ps: with ps; [ ];
-    "cppm_tracker" = ps: with ps; [ ]; # missing inputs: clearpasspy
-    "cpuspeed" = ps: with ps; [ py-cpuinfo ];
-    "crownstone" = ps: with ps; [ aiohttp-cors crownstone-cloud crownstone-sse crownstone-uart pyserial pyudev ];
-    "cups" = ps: with ps; [ pycups ];
-    "currencylayer" = ps: with ps; [ ];
-    "daikin" = ps: with ps; [ pydaikin ];
-    "danfoss_air" = ps: with ps; [ pydanfossair ];
-    "darksky" = ps: with ps; [ python-forecastio ];
-    "datadog" = ps: with ps; [ datadog ];
-    "ddwrt" = ps: with ps; [ ];
-    "debugpy" = ps: with ps; [ debugpy ];
-    "deconz" = ps: with ps; [ pydeconz ];
-    "decora" = ps: with ps; [ bluepy ]; # missing inputs: decora
-    "decora_wifi" = ps: with ps; [ ]; # missing inputs: decora_wifi
-    "default_config" = ps: with ps; [ pynacl pyturbojpeg aiodiscover aiohttp-cors async-upnp-client hass-nabucasa home-assistant-frontend ifaddr pillow pyserial pyudev scapy sqlalchemy zeroconf ];
-    "delijn" = ps: with ps; [ pydelijn ];
-    "deluge" = ps: with ps; [ deluge-client ];
-    "demo" = ps: with ps; [ aiohttp-cors sqlalchemy ];
-    "denon" = ps: with ps; [ ];
-    "denonavr" = ps: with ps; [ denonavr ];
-    "derivative" = ps: with ps; [ ];
-    "deutsche_bahn" = ps: with ps; [ schiene ];
-    "device_automation" = ps: with ps; [ ];
-    "device_sun_light_trigger" = ps: with ps; [ aiohttp-cors pillow ];
-    "device_tracker" = ps: with ps; [ ];
-    "devolo_home_control" = ps: with ps; [ aiohttp-cors devolo-home-control-api ifaddr zeroconf ];
-    "devolo_home_network" = ps: with ps; [ devolo-plc-api ];
-    "dexcom" = ps: with ps; [ pydexcom ];
-    "dhcp" = ps: with ps; [ aiodiscover scapy ];
-    "dht" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-dht
-    "diagnostics" = ps: with ps; [ aiohttp-cors ];
-    "dialogflow" = ps: with ps; [ aiohttp-cors ];
-    "digital_ocean" = ps: with ps; [ digital-ocean ];
-    "digitalloggers" = ps: with ps; [ ]; # missing inputs: dlipower
-    "directv" = ps: with ps; [ directv ];
-    "discogs" = ps: with ps; [ discogs-client ];
-    "discord" = ps: with ps; [ nextcord ];
-    "discovery" = ps: with ps; [ aiohttp-cors ifaddr netdisco zeroconf ];
-    "dlib_face_detect" = ps: with ps; [ face_recognition ];
-    "dlib_face_identify" = ps: with ps; [ face_recognition ];
-    "dlink" = ps: with ps; [ ]; # missing inputs: pyW215
-    "dlna_dmr" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
-    "dlna_dms" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
-    "dnsip" = ps: with ps; [ aiodns ];
-    "dominos" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pizzapi
-    "doods" = ps: with ps; [ pillow pydoods ];
-    "doorbird" = ps: with ps; [ aiohttp-cors doorbirdpy ];
-    "dovado" = ps: with ps; [ ]; # missing inputs: dovado
-    "downloader" = ps: with ps; [ ];
-    "dsmr" = ps: with ps; [ dsmr-parser ];
-    "dsmr_reader" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "dte_energy_bridge" = ps: with ps; [ ];
-    "dublin_bus_transport" = ps: with ps; [ ];
-    "duckdns" = ps: with ps; [ ];
-    "dunehd" = ps: with ps; [ pdunehd ];
-    "dwd_weather_warnings" = ps: with ps; [ dwdwfsapi ];
-    "dweet" = ps: with ps; [ ]; # missing inputs: dweepy
-    "dynalite" = ps: with ps; [ dynalite-devices ];
-    "eafm" = ps: with ps; [ aioeafm ];
-    "ebox" = ps: with ps; [ ]; # missing inputs: pyebox
-    "ebusd" = ps: with ps; [ ]; # missing inputs: ebusdpy
-    "ecoal_boiler" = ps: with ps; [ ecoaliface ];
-    "ecobee" = ps: with ps; [ python-ecobee-api ];
-    "econet" = ps: with ps; [ pyeconet ];
-    "ecovacs" = ps: with ps; [ ]; # missing inputs: sucks
-    "eddystone_temperature" = ps: with ps; [ construct ]; # missing inputs: beacontools
-    "edimax" = ps: with ps; [ pyedimax ];
-    "edl21" = ps: with ps; [ pysml ];
-    "efergy" = ps: with ps; [ pyefergy ];
-    "egardia" = ps: with ps; [ pythonegardia ];
-    "eight_sleep" = ps: with ps; [ pyeight ];
-    "elgato" = ps: with ps; [ elgato ];
-    "eliqonline" = ps: with ps; [ eliqonline ];
-    "elkm1" = ps: with ps; [ aiohttp-cors elkm1-lib ifaddr ];
-    "elmax" = ps: with ps; [ elmax-api ];
-    "elv" = ps: with ps; [ pypca ];
-    "emby" = ps: with ps; [ pyemby ];
-    "emoncms" = ps: with ps; [ ];
-    "emoncms_history" = ps: with ps; [ ];
-    "emonitor" = ps: with ps; [ aioemonitor ];
-    "emulated_hue" = ps: with ps; [ aiohttp-cors ifaddr ];
-    "emulated_kasa" = ps: with ps; [ sense-energy ];
-    "emulated_roku" = ps: with ps; [ aiohttp-cors emulated-roku ifaddr ];
-    "energy" = ps: with ps; [ aiohttp-cors sqlalchemy ];
-    "enigma2" = ps: with ps; [ openwebifpy ];
-    "enocean" = ps: with ps; [ enocean ];
-    "enphase_envoy" = ps: with ps; [ envoy-reader ];
-    "entur_public_transport" = ps: with ps; [ enturclient ];
-    "environment_canada" = ps: with ps; [ env-canada ];
-    "envirophat" = ps: with ps; [ smbus-cffi ]; # missing inputs: envirophat
-    "envisalink" = ps: with ps; [ pyenvisalink ];
-    "ephember" = ps: with ps; [ pyephember ];
-    "epson" = ps: with ps; [ epson-projector ];
-    "epsonworkforce" = ps: with ps; [ ]; # missing inputs: epsonprinter
-    "eq3btsmart" = ps: with ps; [ construct ]; # missing inputs: python-eq3bt
-    "esphome" = ps: with ps; [ aioesphomeapi aiohttp-cors ifaddr zeroconf ];
-    "etherscan" = ps: with ps; [ ]; # missing inputs: python-etherscan-api
-    "eufy" = ps: with ps; [ ]; # missing inputs: lakeside
-    "everlights" = ps: with ps; [ pyeverlights ];
-    "evil_genius_labs" = ps: with ps; [ pyevilgenius ];
-    "evohome" = ps: with ps; [ evohome-async ];
-    "ezviz" = ps: with ps; [ ha-ffmpeg pyezviz ];
-    "faa_delays" = ps: with ps; [ faadelays ];
-    "facebook" = ps: with ps; [ ];
-    "facebox" = ps: with ps; [ ];
-    "fail2ban" = ps: with ps; [ ];
-    "familyhub" = ps: with ps; [ ]; # missing inputs: python-family-hub-local
-    "fan" = ps: with ps; [ ];
-    "fastdotcom" = ps: with ps; [ ]; # missing inputs: fastdotcom
-    "feedreader" = ps: with ps; [ feedparser ];
-    "ffmpeg" = ps: with ps; [ ha-ffmpeg ];
-    "ffmpeg_motion" = ps: with ps; [ ha-ffmpeg ];
-    "ffmpeg_noise" = ps: with ps; [ ha-ffmpeg ];
-    "fibaro" = ps: with ps; [ fiblary3-fork ];
-    "fido" = ps: with ps; [ pyfido ];
-    "file" = ps: with ps; [ ];
-    "filesize" = ps: with ps; [ ];
-    "filter" = ps: with ps; [ sqlalchemy ];
-    "fints" = ps: with ps; [ fints ];
-    "fireservicerota" = ps: with ps; [ pyfireservicerota ];
-    "firmata" = ps: with ps; [ pymata-express ];
-    "fitbit" = ps: with ps; [ aiohttp-cors fitbit ];
-    "fivem" = ps: with ps; [ ]; # missing inputs: fivem-api
-    "fixer" = ps: with ps; [ fixerio ];
-    "fjaraskupan" = ps: with ps; [ fjaraskupan ];
-    "fleetgo" = ps: with ps; [ ritassist ];
-    "flexit" = ps: with ps; [ pymodbus ];
-    "flic" = ps: with ps; [ pyflic ];
-    "flick_electric" = ps: with ps; [ pyflick ];
-    "flipr" = ps: with ps; [ flipr-api ];
-    "flo" = ps: with ps; [ aioflo ];
-    "flock" = ps: with ps; [ ];
-    "flume" = ps: with ps; [ pyflume ];
-    "flunearyou" = ps: with ps; [ pyflunearyou ];
-    "flux" = ps: with ps; [ ];
-    "flux_led" = ps: with ps; [ aiohttp-cors flux-led ifaddr ];
-    "folder" = ps: with ps; [ ];
-    "folder_watcher" = ps: with ps; [ watchdog ];
-    "foobot" = ps: with ps; [ foobot-async ];
-    "forecast_solar" = ps: with ps; [ forecast-solar ];
-    "forked_daapd" = ps: with ps; [ ]; # missing inputs: pyforked-daapd pylibrespot-java
-    "fortios" = ps: with ps; [ fortiosapi ];
-    "foscam" = ps: with ps; [ libpyfoscam ];
-    "foursquare" = ps: with ps; [ aiohttp-cors ];
-    "free_mobile" = ps: with ps; [ ]; # missing inputs: freesms
-    "freebox" = ps: with ps; [ freebox-api ];
-    "freedns" = ps: with ps; [ ];
-    "freedompro" = ps: with ps; [ pyfreedompro ];
-    "fritz" = ps: with ps; [ aiohttp-cors fritzconnection ifaddr xmltodict ];
-    "fritzbox" = ps: with ps; [ pyfritzhome ];
-    "fritzbox_callmonitor" = ps: with ps; [ fritzconnection ];
-    "fronius" = ps: with ps; [ pyfronius ];
-    "frontend" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "frontier_silicon" = ps: with ps; [ afsapi ];
-    "futurenow" = ps: with ps; [ pyfnip ];
-    "garadget" = ps: with ps; [ ];
-    "garages_amsterdam" = ps: with ps; [ garages-amsterdam ];
-    "gc100" = ps: with ps; [ ]; # missing inputs: python-gc100
-    "gdacs" = ps: with ps; [ aio-georss-gdacs ];
-    "generic" = ps: with ps; [ ];
-    "generic_hygrostat" = ps: with ps; [ ];
-    "generic_thermostat" = ps: with ps; [ sqlalchemy ];
-    "geniushub" = ps: with ps; [ geniushub-client ];
-    "geo_json_events" = ps: with ps; [ geojson-client ];
-    "geo_location" = ps: with ps; [ ];
-    "geo_rss_events" = ps: with ps; [ georss-generic-client ];
-    "geofency" = ps: with ps; [ aiohttp-cors ];
-    "geonetnz_quakes" = ps: with ps; [ aio-geojson-geonetnz-quakes ];
-    "geonetnz_volcano" = ps: with ps; [ aio-geojson-geonetnz-volcano ];
-    "gios" = ps: with ps; [ gios ];
-    "github" = ps: with ps; [ aiogithubapi ];
-    "gitlab_ci" = ps: with ps; [ python-gitlab ];
-    "gitter" = ps: with ps; [ ]; # missing inputs: gitterpy
-    "glances" = ps: with ps; [ glances-api ];
-    "goalfeed" = ps: with ps; [ ]; # missing inputs: pysher
-    "goalzero" = ps: with ps; [ goalzero ];
-    "gogogate2" = ps: with ps; [ ismartgate ];
-    "goodwe" = ps: with ps; [ goodwe ];
-    "google" = ps: with ps; [ google-api-python-client httplib2 oauth2client ];
-    "google_assistant" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "google_cloud" = ps: with ps; [ google-cloud-texttospeech ];
-    "google_domains" = ps: with ps; [ ];
-    "google_maps" = ps: with ps; [ locationsharinglib ];
-    "google_pubsub" = ps: with ps; [ google-cloud-pubsub ];
-    "google_translate" = ps: with ps; [ gtts ];
-    "google_travel_time" = ps: with ps; [ googlemaps ];
-    "google_wifi" = ps: with ps; [ ];
-    "gpsd" = ps: with ps; [ gps3 ];
-    "gpslogger" = ps: with ps; [ aiohttp-cors ];
-    "graphite" = ps: with ps; [ ];
-    "gree" = ps: with ps; [ greeclimate ];
-    "greeneye_monitor" = ps: with ps; [ ]; # missing inputs: greeneye_monitor
-    "greenwave" = ps: with ps; [ ]; # missing inputs: greenwavereality
-    "group" = ps: with ps; [ ];
-    "growatt_server" = ps: with ps; [ growattserver ];
-    "gstreamer" = ps: with ps; [ ]; # missing inputs: gstreamer-player
-    "gtfs" = ps: with ps; [ pygtfs ];
-    "guardian" = ps: with ps; [ aioguardian ];
-    "habitica" = ps: with ps; [ habitipy ];
-    "hangouts" = ps: with ps; [ hangups ];
-    "harman_kardon_avr" = ps: with ps; [ ]; # missing inputs: hkavr
-    "harmony" = ps: with ps; [ aioharmony ];
-    "hassio" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "haveibeenpwned" = ps: with ps; [ ];
-    "hddtemp" = ps: with ps; [ ];
-    "hdmi_cec" = ps: with ps; [ pycec ];
-    "heatmiser" = ps: with ps; [ ]; # missing inputs: heatmiserV3
-    "heos" = ps: with ps; [ pyheos ];
-    "here_travel_time" = ps: with ps; [ herepy ];
-    "hikvision" = ps: with ps; [ ]; # missing inputs: pyhik
-    "hikvisioncam" = ps: with ps; [ hikvision ];
-    "hisense_aehw4a1" = ps: with ps; [ pyaehw4a1 ];
-    "history" = ps: with ps; [ aiohttp-cors sqlalchemy ];
-    "history_stats" = ps: with ps; [ sqlalchemy ];
-    "hitron_coda" = ps: with ps; [ ];
-    "hive" = ps: with ps; [ pyhiveapi ];
-    "hlk_sw16" = ps: with ps; [ hlk-sw16 ];
-    "home_connect" = ps: with ps; [ aiohttp-cors homeconnect ];
-    "home_plus_control" = ps: with ps; [ aiohttp-cors homepluscontrol ];
-    "homeassistant" = ps: with ps; [ ];
-    "homekit" = ps: with ps; [ hap-python pyqrcode pyturbojpeg aiohttp-cors base36 fnvhash ha-ffmpeg ifaddr zeroconf ];
-    "homekit_controller" = ps: with ps; [ aiohomekit aiohttp-cors ifaddr zeroconf ];
-    "homematic" = ps: with ps; [ pyhomematic ];
-    "homematicip_cloud" = ps: with ps; [ homematicip ];
-    "homewizard" = ps: with ps; [ aiohwenergy ];
-    "homeworks" = ps: with ps; [ pyhomeworks ];
-    "honeywell" = ps: with ps; [ somecomfort ];
-    "horizon" = ps: with ps; [ ]; # missing inputs: horimote
-    "hp_ilo" = ps: with ps; [ python-hpilo ];
-    "html5" = ps: with ps; [ aiohttp-cors pywebpush ];
-    "http" = ps: with ps; [ aiohttp-cors ];
-    "htu21d" = ps: with ps; [ i2csense smbus-cffi ];
-    "huawei_lte" = ps: with ps; [ huawei-lte-api stringcase url-normalize ];
-    "hue" = ps: with ps; [ aiohue ];
-    "huisbaasje" = ps: with ps; [ huisbaasje-client ];
-    "humidifier" = ps: with ps; [ ];
-    "hunterdouglas_powerview" = ps: with ps; [ aiopvapi ];
-    "hvv_departures" = ps: with ps; [ pygti ];
-    "hydrawise" = ps: with ps; [ hydrawiser ];
-    "hyperion" = ps: with ps; [ hyperion-py ];
-    "ialarm" = ps: with ps; [ pyialarm ];
-    "iammeter" = ps: with ps; [ ]; # missing inputs: iammeter
-    "iaqualink" = ps: with ps; [ iaqualink ];
-    "icloud" = ps: with ps; [ pyicloud ];
-    "idteck_prox" = ps: with ps; [ ]; # missing inputs: rfk101py
-    "ifttt" = ps: with ps; [ aiohttp-cors pyfttt ];
-    "iglo" = ps: with ps; [ ]; # missing inputs: iglo
-    "ign_sismologia" = ps: with ps; [ georss-ign-sismologia-client ];
-    "ihc" = ps: with ps; [ defusedxml ]; # missing inputs: ihcsdk
-    "image" = ps: with ps; [ aiohttp-cors pillow ];
-    "image_processing" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "imap" = ps: with ps; [ aioimaplib ];
-    "imap_email_content" = ps: with ps; [ ];
-    "incomfort" = ps: with ps; [ incomfort-client ];
-    "influxdb" = ps: with ps; [ influxdb-client influxdb ];
-    "input_boolean" = ps: with ps; [ ];
-    "input_button" = ps: with ps; [ ];
-    "input_datetime" = ps: with ps; [ ];
-    "input_number" = ps: with ps; [ ];
-    "input_select" = ps: with ps; [ ];
-    "input_text" = ps: with ps; [ ];
-    "insteon" = ps: with ps; [ pyinsteon ];
-    "integration" = ps: with ps; [ ];
-    "intellifire" = ps: with ps; [ intellifire4py ];
-    "intent" = ps: with ps; [ aiohttp-cors ];
-    "intent_script" = ps: with ps; [ ];
-    "intesishome" = ps: with ps; [ pyintesishome ];
-    "ios" = ps: with ps; [ aiohttp-cors ifaddr zeroconf ];
-    "iotawatt" = ps: with ps; [ iotawattpy ];
-    "iperf3" = ps: with ps; [ ]; # missing inputs: iperf3
-    "ipma" = ps: with ps; [ pyipma ];
-    "ipp" = ps: with ps; [ pyipp ];
-    "iqvia" = ps: with ps; [ numpy pyiqvia ];
-    "irish_rail_transport" = ps: with ps; [ ]; # missing inputs: pyirishrail
-    "islamic_prayer_times" = ps: with ps; [ prayer-times-calculator ];
-    "iss" = ps: with ps; [ ]; # missing inputs: pyiss
-    "isy994" = ps: with ps; [ pyisy ];
-    "itach" = ps: with ps; [ ]; # missing inputs: pyitachip2ir
-    "itunes" = ps: with ps; [ ];
-    "izone" = ps: with ps; [ python-izone ];
-    "jellyfin" = ps: with ps; [ jellyfin-apiclient-python ];
-    "jewish_calendar" = ps: with ps; [ hdate ];
-    "joaoapps_join" = ps: with ps; [ ]; # missing inputs: python-join-api
-    "juicenet" = ps: with ps; [ python-juicenet ];
-    "kaiterra" = ps: with ps; [ ]; # missing inputs: kaiterra-async-client
-    "kankun" = ps: with ps; [ ];
-    "keba" = ps: with ps; [ ]; # missing inputs: keba-kecontact
-    "keenetic_ndms2" = ps: with ps; [ ndms2-client ];
-    "kef" = ps: with ps; [ aiokef getmac ];
-    "keyboard" = ps: with ps; [ ]; # missing inputs: pyuserinput
-    "keyboard_remote" = ps: with ps; [ aionotify evdev ];
-    "kira" = ps: with ps; [ pykira ];
-    "kiwi" = ps: with ps; [ ]; # missing inputs: kiwiki-client
-    "kmtronic" = ps: with ps; [ pykmtronic ];
-    "knx" = ps: with ps; [ xknx ];
-    "kodi" = ps: with ps; [ aiohttp-cors pykodi ];
-    "konnected" = ps: with ps; [ aiohttp-cors konnected ];
-    "kostal_plenticore" = ps: with ps; [ ]; # missing inputs: kostal_plenticore
-    "kraken" = ps: with ps; [ krakenex pykrakenapi ];
-    "kulersky" = ps: with ps; [ pykulersky ];
-    "kwb" = ps: with ps; [ ]; # missing inputs: pykwb
-    "lacrosse" = ps: with ps; [ pylacrosse ];
-    "lametric" = ps: with ps; [ lmnotify ];
-    "lannouncer" = ps: with ps; [ ];
-    "lastfm" = ps: with ps; [ pylast ];
-    "launch_library" = ps: with ps; [ pylaunches ];
-    "lcn" = ps: with ps; [ pypck ];
-    "lg_netcast" = ps: with ps; [ pylgnetcast ];
-    "lg_soundbar" = ps: with ps; [ temescal ];
-    "life360" = ps: with ps; [ life360 ];
-    "lifx" = ps: with ps; [ aiolifx aiolifx-effects ];
-    "lifx_cloud" = ps: with ps; [ ];
-    "light" = ps: with ps; [ ];
-    "lightwave" = ps: with ps; [ lightwave ];
-    "limitlessled" = ps: with ps; [ limitlessled ];
-    "linksys_smart" = ps: with ps; [ ];
-    "linode" = ps: with ps; [ linode-api ];
-    "linux_battery" = ps: with ps; [ batinfo ];
-    "lirc" = ps: with ps; [ ]; # missing inputs: python-lirc
-    "litejet" = ps: with ps; [ ]; # missing inputs: pylitejet
-    "litterrobot" = ps: with ps; [ pylitterbot ];
-    "llamalab_automate" = ps: with ps; [ ];
-    "local_file" = ps: with ps; [ ];
-    "local_ip" = ps: with ps; [ aiohttp-cors ifaddr ];
-    "locative" = ps: with ps; [ aiohttp-cors ];
-    "lock" = ps: with ps; [ ];
-    "logbook" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "logentries" = ps: with ps; [ ];
-    "logger" = ps: with ps; [ ];
-    "logi_circle" = ps: with ps; [ aiohttp-cors ha-ffmpeg ]; # missing inputs: logi_circle
-    "london_air" = ps: with ps; [ ];
-    "london_underground" = ps: with ps; [ ]; # missing inputs: london-tube-status
-    "lookin" = ps: with ps; [ aiolookin ];
-    "lovelace" = ps: with ps; [ ];
-    "luci" = ps: with ps; [ openwrt-luci-rpc ];
-    "luftdaten" = ps: with ps; [ luftdaten ];
-    "lupusec" = ps: with ps; [ lupupy ];
-    "lutron" = ps: with ps; [ pylutron ];
-    "lutron_caseta" = ps: with ps; [ pylutron-caseta ];
-    "lw12wifi" = ps: with ps; [ ]; # missing inputs: lw12
-    "lyric" = ps: with ps; [ aiohttp-cors aiolyric ];
-    "magicseaweed" = ps: with ps; [ ]; # missing inputs: magicseaweed
-    "mailbox" = ps: with ps; [ aiohttp-cors ];
-    "mailgun" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pymailgunner
-    "manual" = ps: with ps; [ ];
-    "manual_mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "map" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "marytts" = ps: with ps; [ ]; # missing inputs: speak2mary
-    "mastodon" = ps: with ps; [ mastodon-py ];
-    "matrix" = ps: with ps; [ matrix-client ];
-    "maxcube" = ps: with ps; [ maxcube-api ];
-    "mazda" = ps: with ps; [ pymazda ];
-    "mcp23017" = ps: with ps; [ ]; # missing inputs: RPi.GPIO adafruit-circuitpython-mcp230xx
-    "media_extractor" = ps: with ps; [ aiohttp-cors youtube-dl-light ];
-    "media_player" = ps: with ps; [ aiohttp-cors ];
-    "media_source" = ps: with ps; [ aiohttp-cors ];
-    "mediaroom" = ps: with ps; [ pymediaroom ];
-    "melcloud" = ps: with ps; [ pymelcloud ];
-    "melissa" = ps: with ps; [ ]; # missing inputs: py-melissa-climate
-    "meraki" = ps: with ps; [ aiohttp-cors ];
-    "message_bird" = ps: with ps; [ ]; # missing inputs: messagebird
-    "met" = ps: with ps; [ pymetno ];
-    "met_eireann" = ps: with ps; [ pymeteireann ];
-    "meteo_france" = ps: with ps; [ ]; # missing inputs: meteofrance-api
-    "meteoalarm" = ps: with ps; [ meteoalertapi ];
-    "meteoclimatic" = ps: with ps; [ pymeteoclimatic ];
-    "metoffice" = ps: with ps; [ ]; # missing inputs: datapoint
-    "mfi" = ps: with ps; [ ]; # missing inputs: mficlient
-    "mhz19" = ps: with ps; [ pmsensor ];
-    "microsoft" = ps: with ps; [ ]; # missing inputs: pycsspeechtts
-    "microsoft_face" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "microsoft_face_detect" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "microsoft_face_identify" = ps: with ps; [ pyturbojpeg aiohttp-cors ];
-    "miflora" = ps: with ps; [ bluepy ]; # missing inputs: miflora
-    "mikrotik" = ps: with ps; [ librouteros ];
-    "mill" = ps: with ps; [ mill-local millheater ];
-    "min_max" = ps: with ps; [ ];
-    "minecraft_server" = ps: with ps; [ aiodns getmac mcstatus ];
-    "minio" = ps: with ps; [ minio ];
-    "mitemp_bt" = ps: with ps; [ ]; # missing inputs: mitemp_bt
-    "mjpeg" = ps: with ps; [ ];
-    "mobile_app" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa pillow ];
-    "mochad" = ps: with ps; [ ]; # missing inputs: pymochad
-    "modbus" = ps: with ps; [ pymodbus ];
-    "modem_callerid" = ps: with ps; [ aiohttp-cors phone-modem pyserial pyudev ];
-    "modern_forms" = ps: with ps; [ aiomodernforms ];
-    "moehlenhoff_alpha2" = ps: with ps; [ ]; # missing inputs: moehlenhoff-alpha2
-    "mold_indicator" = ps: with ps; [ ];
-    "monoprice" = ps: with ps; [ ]; # missing inputs: pymonoprice
-    "moon" = ps: with ps; [ ];
-    "motion_blinds" = ps: with ps; [ aiohttp-cors ifaddr motionblinds ];
-    "motioneye" = ps: with ps; [ aiohttp-cors motioneye-client ];
-    "mpchc" = ps: with ps; [ ];
-    "mpd" = ps: with ps; [ mpd2 ];
-    "mqtt" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "mqtt_eventstream" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "mqtt_json" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "mqtt_room" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "mqtt_statestream" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "msteams" = ps: with ps; [ pymsteams ];
-    "mullvad" = ps: with ps; [ mullvad-api ];
-    "mutesync" = ps: with ps; [ mutesync ];
-    "mvglive" = ps: with ps; [ PyMVGLive ];
-    "my" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "mycroft" = ps: with ps; [ ]; # missing inputs: mycroftapi
-    "myq" = ps: with ps; [ pymyq ];
-    "mysensors" = ps: with ps; [ aiohttp-cors paho-mqtt pymysensors ];
-    "mystrom" = ps: with ps; [ aiohttp-cors python-mystrom ];
-    "mythicbeastsdns" = ps: with ps; [ mbddns ];
-    "nad" = ps: with ps; [ nad-receiver ];
-    "nam" = ps: with ps; [ nettigo-air-monitor ];
-    "namecheapdns" = ps: with ps; [ defusedxml ];
-    "nanoleaf" = ps: with ps; [ aionanoleaf ];
-    "neato" = ps: with ps; [ aiohttp-cors pybotvac ];
-    "nederlandse_spoorwegen" = ps: with ps; [ nsapi ];
-    "ness_alarm" = ps: with ps; [ nessclient ];
-    "nest" = ps: with ps; [ aiohttp-cors google-nest-sdm ha-ffmpeg python-nest ];
-    "netatmo" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pyatmo ];
-    "netdata" = ps: with ps; [ netdata ];
-    "netgear" = ps: with ps; [ pynetgear ];
-    "netgear_lte" = ps: with ps; [ eternalegypt ];
-    "netio" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pynetio
-    "network" = ps: with ps; [ aiohttp-cors ifaddr ];
-    "neurio_energy" = ps: with ps; [ ]; # missing inputs: neurio
-    "nexia" = ps: with ps; [ nexia ];
-    "nextbus" = ps: with ps; [ ]; # missing inputs: py_nextbusnext
-    "nextcloud" = ps: with ps; [ nextcloudmonitor ];
-    "nfandroidtv" = ps: with ps; [ ]; # missing inputs: notifications-android-tv
-    "nightscout" = ps: with ps; [ py-nightscout ];
-    "niko_home_control" = ps: with ps; [ niko-home-control ];
-    "nilu" = ps: with ps; [ niluclient ];
-    "nina" = ps: with ps; [ pynina ];
-    "nissan_leaf" = ps: with ps; [ pycarwings2 ];
-    "nmap_tracker" = ps: with ps; [ aiohttp-cors getmac ifaddr netmap ]; # missing inputs: mac-vendor-lookup
-    "nmbs" = ps: with ps; [ ]; # missing inputs: pyrail
-    "no_ip" = ps: with ps; [ ];
-    "noaa_tides" = ps: with ps; [ ]; # missing inputs: noaa-coops
-    "norway_air" = ps: with ps; [ pymetno ];
-    "notify" = ps: with ps; [ ];
-    "notify_events" = ps: with ps; [ ]; # missing inputs: notify-events
-    "notion" = ps: with ps; [ aionotion ];
-    "nsw_fuel_station" = ps: with ps; [ ]; # missing inputs: nsw-fuel-api-client
-    "nsw_rural_fire_service_feed" = ps: with ps; [ aio-geojson-nsw-rfs-incidents ];
-    "nuheat" = ps: with ps; [ ]; # missing inputs: nuheat
-    "nuki" = ps: with ps; [ pynuki ];
-    "numato" = ps: with ps; [ ]; # missing inputs: numato-gpio
-    "number" = ps: with ps; [ ];
-    "nut" = ps: with ps; [ pynut2 ];
-    "nws" = ps: with ps; [ pynws ];
-    "nx584" = ps: with ps; [ pynx584 ];
-    "nzbget" = ps: with ps; [ ]; # missing inputs: pynzbgetapi
-    "oasa_telematics" = ps: with ps; [ ]; # missing inputs: oasatelematics
-    "obihai" = ps: with ps; [ pyobihai ];
-    "octoprint" = ps: with ps; [ pyoctoprintapi ];
-    "oem" = ps: with ps; [ oemthermostat ];
-    "ohmconnect" = ps: with ps; [ defusedxml ];
-    "ombi" = ps: with ps; [ pyombi ];
-    "omnilogic" = ps: with ps; [ omnilogic ];
-    "onboarding" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "oncue" = ps: with ps; [ aiooncue ];
-    "ondilo_ico" = ps: with ps; [ aiohttp-cors ondilo ];
-    "onewire" = ps: with ps; [ pi1wire pyownet ];
-    "onkyo" = ps: with ps; [ onkyo-eiscp ];
-    "onvif" = ps: with ps; [ wsdiscovery ha-ffmpeg onvif-zeep-async ];
-    "open_meteo" = ps: with ps; [ open-meteo ];
-    "openalpr_cloud" = ps: with ps; [ ];
-    "openalpr_local" = ps: with ps; [ ];
-    "opencv" = ps: with ps; [ numpy ]; # missing inputs: opencv-python-headless
-    "openerz" = ps: with ps; [ openerz-api ];
-    "openevse" = ps: with ps; [ openevsewifi ];
-    "openexchangerates" = ps: with ps; [ ];
-    "opengarage" = ps: with ps; [ open-garage ];
-    "openhardwaremonitor" = ps: with ps; [ ];
-    "openhome" = ps: with ps; [ openhomedevice ];
-    "opensensemap" = ps: with ps; [ opensensemap-api ];
-    "opensky" = ps: with ps; [ ];
-    "opentherm_gw" = ps: with ps; [ pyotgw ];
-    "openuv" = ps: with ps; [ pyopenuv ];
-    "openweathermap" = ps: with ps; [ pyowm ];
-    "opnsense" = ps: with ps; [ pyopnsense ];
-    "opple" = ps: with ps; [ ]; # missing inputs: pyoppleio
-    "orangepi_gpio" = ps: with ps; [ ]; # missing inputs: OPi.GPIO
-    "oru" = ps: with ps; [ ]; # missing inputs: oru
-    "orvibo" = ps: with ps; [ orvibo ];
-    "osramlightify" = ps: with ps; [ ]; # missing inputs: lightify
-    "otp" = ps: with ps; [ pyotp ];
-    "overkiz" = ps: with ps; [ pyoverkiz ];
-    "ovo_energy" = ps: with ps; [ ovoenergy ];
-    "owntracks" = ps: with ps; [ pynacl pyturbojpeg aiohttp-cors hass-nabucasa paho-mqtt ];
-    "ozw" = ps: with ps; [ aiohttp-cors paho-mqtt python-openzwave-mqtt ];
-    "p1_monitor" = ps: with ps; [ p1monitor ];
-    "panasonic_bluray" = ps: with ps; [ panacotta ];
-    "panasonic_viera" = ps: with ps; [ ]; # missing inputs: panasonic_viera
-    "pandora" = ps: with ps; [ pexpect ];
-    "panel_custom" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "panel_iframe" = ps: with ps; [ aiohttp-cors home-assistant-frontend pillow sqlalchemy ];
-    "pcal9535a" = ps: with ps; [ ]; # missing inputs: pcal9535a
-    "pencom" = ps: with ps; [ ]; # missing inputs: pencompy
-    "persistent_notification" = ps: with ps; [ ];
-    "person" = ps: with ps; [ aiohttp-cors pillow ];
-    "philips_js" = ps: with ps; [ ha-philipsjs ];
-    "pi4ioe5v9xxxx" = ps: with ps; [ ]; # missing inputs: pi4ioe5v9xxxx
-    "pi_hole" = ps: with ps; [ hole ];
-    "picnic" = ps: with ps; [ python-picnic-api ];
-    "picotts" = ps: with ps; [ ];
-    "piglow" = ps: with ps; [ ]; # missing inputs: piglow
-    "pilight" = ps: with ps; [ ]; # missing inputs: pilight
-    "ping" = ps: with ps; [ icmplib ];
-    "pioneer" = ps: with ps; [ ];
-    "pjlink" = ps: with ps; [ ]; # missing inputs: pypjlink2
-    "plaato" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pyplaato ];
-    "plant" = ps: with ps; [ sqlalchemy ];
-    "plex" = ps: with ps; [ aiohttp-cors plexapi plexauth plexwebsocket ];
-    "plugwise" = ps: with ps; [ plugwise ];
-    "plum_lightpad" = ps: with ps; [ ]; # missing inputs: plumlightpad
-    "pocketcasts" = ps: with ps; [ ]; # missing inputs: pycketcasts
-    "point" = ps: with ps; [ aiohttp-cors pypoint ];
-    "poolsense" = ps: with ps; [ poolsense ];
-    "powerwall" = ps: with ps; [ ]; # missing inputs: tesla-powerwall
-    "profiler" = ps: with ps; [ guppy3 objgraph pyprof2calltree ];
-    "progettihwsw" = ps: with ps; [ ]; # missing inputs: progettihwsw
-    "proliphix" = ps: with ps; [ ]; # missing inputs: proliphix
-    "prometheus" = ps: with ps; [ aiohttp-cors prometheus-client ];
-    "prosegur" = ps: with ps; [ pyprosegur ];
-    "prowl" = ps: with ps; [ ];
-    "proximity" = ps: with ps; [ ];
-    "proxmoxve" = ps: with ps; [ proxmoxer ];
-    "proxy" = ps: with ps; [ pillow ];
-    "ps4" = ps: with ps; [ ]; # missing inputs: pyps4-2ndscreen
-    "pulseaudio_loopback" = ps: with ps; [ pulsectl ];
-    "pure_energie" = ps: with ps; [ gridnet ];
-    "push" = ps: with ps; [ aiohttp-cors ];
-    "pushbullet" = ps: with ps; [ pushbullet ];
-    "pushover" = ps: with ps; [ pushover-complete ];
-    "pushsafer" = ps: with ps; [ ];
-    "pvoutput" = ps: with ps; [ pvo ];
-    "pvpc_hourly_pricing" = ps: with ps; [ aiopvpc ];
-    "pyload" = ps: with ps; [ ];
-    "python_script" = ps: with ps; [ restrictedpython ];
-    "qbittorrent" = ps: with ps; [ ]; # missing inputs: python-qbittorrent
-    "qld_bushfire" = ps: with ps; [ georss-qld-bushfire-alert-client ];
-    "qnap" = ps: with ps; [ ]; # missing inputs: qnapstats
-    "qrcode" = ps: with ps; [ pillow pyzbar ];
-    "quantum_gateway" = ps: with ps; [ quantum-gateway ];
-    "qvr_pro" = ps: with ps; [ pyqvrpro ];
-    "qwikswitch" = ps: with ps; [ ]; # missing inputs: pyqwikswitch
-    "rachio" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa rachiopy ];
-    "radarr" = ps: with ps; [ ];
-    "radio_browser" = ps: with ps; [ radios ];
-    "radiotherm" = ps: with ps; [ radiotherm ];
-    "rainbird" = ps: with ps; [ ]; # missing inputs: pyrainbird
-    "raincloud" = ps: with ps; [ ]; # missing inputs: raincloudy
-    "rainforest_eagle" = ps: with ps; [ aioeagle ueagle ];
-    "rainmachine" = ps: with ps; [ regenmaschine ];
-    "random" = ps: with ps; [ ];
-    "raspihats" = ps: with ps; [ smbus-cffi ]; # missing inputs: raspihats
-    "raspyrfm" = ps: with ps; [ ]; # missing inputs: raspyrfm-client
-    "rdw" = ps: with ps; [ vehicle ];
-    "recollect_waste" = ps: with ps; [ aiorecollect ];
-    "recorder" = ps: with ps; [ sqlalchemy ];
-    "recswitch" = ps: with ps; [ ]; # missing inputs: pyrecswitch
-    "reddit" = ps: with ps; [ praw ];
-    "rejseplanen" = ps: with ps; [ ]; # missing inputs: rjpl
-    "remember_the_milk" = ps: with ps; [ httplib2 ]; # missing inputs: RtmAPI
-    "remote" = ps: with ps; [ ];
-    "remote_rpi_gpio" = ps: with ps; [ ]; # missing inputs: gpiozero
-    "renault" = ps: with ps; [ renault-api ];
-    "repetier" = ps: with ps; [ ]; # missing inputs: pyrepetierng
-    "rest" = ps: with ps; [ jsonpath xmltodict ];
-    "rest_command" = ps: with ps; [ ];
-    "rflink" = ps: with ps; [ rflink ];
-    "rfxtrx" = ps: with ps; [ pyrfxtrx ];
-    "ridwell" = ps: with ps; [ aioridwell ];
-    "ring" = ps: with ps; [ ha-ffmpeg ring-doorbell ];
-    "ripple" = ps: with ps; [ ]; # missing inputs: python-ripple-api
-    "risco" = ps: with ps; [ pyrisco ];
-    "rituals_perfume_genie" = ps: with ps; [ pyrituals ];
-    "rmvtransport" = ps: with ps; [ pyrmvtransport ];
-    "rocketchat" = ps: with ps; [ ]; # missing inputs: rocketchat-API
-    "roku" = ps: with ps; [ rokuecp ];
-    "roomba" = ps: with ps; [ roombapy ];
-    "roon" = ps: with ps; [ roonapi ];
-    "route53" = ps: with ps; [ boto3 ];
-    "rova" = ps: with ps; [ ]; # missing inputs: rova
-    "rpi_camera" = ps: with ps; [ ];
-    "rpi_gpio" = ps: with ps; [ ]; # missing inputs: RPi.GPIO
-    "rpi_gpio_pwm" = ps: with ps; [ ]; # missing inputs: pwmled
-    "rpi_pfio" = ps: with ps; [ ]; # missing inputs: pifacecommon pifacedigitalio
-    "rpi_power" = ps: with ps; [ rpi-bad-power ];
-    "rpi_rf" = ps: with ps; [ ]; # missing inputs: RPi.GPIO rpi-rf
-    "rss_feed_template" = ps: with ps; [ aiohttp-cors ];
-    "rtorrent" = ps: with ps; [ ];
-    "rtsp_to_webrtc" = ps: with ps; [ pyturbojpeg aiohttp-cors rtsp-to-webrtc ];
-    "ruckus_unleashed" = ps: with ps; [ pyruckus ];
-    "russound_rio" = ps: with ps; [ ]; # missing inputs: russound_rio
-    "russound_rnet" = ps: with ps; [ ]; # missing inputs: russound
-    "sabnzbd" = ps: with ps; [ aiohttp-cors ifaddr netdisco zeroconf ]; # missing inputs: pysabnzbd
-    "safe_mode" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa home-assistant-frontend pillow sqlalchemy ];
-    "saj" = ps: with ps; [ ]; # missing inputs: pysaj
-    "samsungtv" = ps: with ps; [ getmac samsungctl samsungtvws wakeonlan ];
-    "satel_integra" = ps: with ps; [ ]; # missing inputs: satel_integra
-    "scene" = ps: with ps; [ ];
-    "schluter" = ps: with ps; [ ]; # missing inputs: py-schluter
-    "scrape" = ps: with ps; [ beautifulsoup4 jsonpath xmltodict ];
-    "screenlogic" = ps: with ps; [ screenlogicpy ];
-    "script" = ps: with ps; [ ];
-    "scsgate" = ps: with ps; [ ]; # missing inputs: scsgate
-    "search" = ps: with ps; [ aiohttp-cors ];
-    "season" = ps: with ps; [ ephem ];
-    "select" = ps: with ps; [ ];
-    "sendgrid" = ps: with ps; [ sendgrid ];
-    "sense" = ps: with ps; [ sense-energy ];
-    "sensehat" = ps: with ps; [ ]; # missing inputs: sense-hat
-    "senseme" = ps: with ps; [ aiosenseme ];
-    "sensibo" = ps: with ps; [ ]; # missing inputs: pysensibo
-    "sensor" = ps: with ps; [ sqlalchemy ];
-    "sentry" = ps: with ps; [ sentry-sdk ];
-    "serial" = ps: with ps; [ pyserial-asyncio ];
-    "serial_pm" = ps: with ps; [ pmsensor ];
-    "sesame" = ps: with ps; [ ]; # missing inputs: pysesame2
-    "seven_segments" = ps: with ps; [ pillow ];
-    "seventeentrack" = ps: with ps; [ py17track ];
-    "sharkiq" = ps: with ps; [ sharkiqpy ];
-    "shell_command" = ps: with ps; [ ];
-    "shelly" = ps: with ps; [ aioshelly ];
-    "shiftr" = ps: with ps; [ paho-mqtt ];
-    "shodan" = ps: with ps; [ shodan ];
-    "shopping_list" = ps: with ps; [ aiohttp-cors ];
-    "sht31" = ps: with ps; [ ]; # missing inputs: Adafruit-GPIO Adafruit-SHT31
-    "sia" = ps: with ps; [ pysiaalarm ];
-    "sigfox" = ps: with ps; [ ];
-    "sighthound" = ps: with ps; [ pillow simplehound ];
-    "signal_messenger" = ps: with ps; [ pysignalclirestapi ];
-    "simplepush" = ps: with ps; [ ]; # missing inputs: simplepush
-    "simplisafe" = ps: with ps; [ simplisafe-python ];
-    "simulated" = ps: with ps; [ ];
-    "sinch" = ps: with ps; [ ]; # missing inputs: clx-sdk-xms
-    "siren" = ps: with ps; [ ];
-    "sisyphus" = ps: with ps; [ ]; # missing inputs: sisyphus-control
-    "sky_hub" = ps: with ps; [ pyskyqhub ];
-    "skybeacon" = ps: with ps; [ pygatt ];
-    "skybell" = ps: with ps; [ skybellpy ];
-    "slack" = ps: with ps; [ slackclient ];
-    "sleepiq" = ps: with ps; [ asyncsleepiq ];
-    "slide" = ps: with ps; [ ]; # missing inputs: goslide-api
-    "sma" = ps: with ps; [ pysma ];
-    "smappee" = ps: with ps; [ aiohttp-cors pysmappee ];
-    "smart_meter_texas" = ps: with ps; [ smart-meter-texas ];
-    "smarthab" = ps: with ps; [ smarthab ];
-    "smartthings" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa pysmartapp pysmartthings ];
-    "smarttub" = ps: with ps; [ python-smarttub ];
-    "smarty" = ps: with ps; [ ]; # missing inputs: pysmarty
-    "smhi" = ps: with ps; [ smhi-pkg ];
-    "sms" = ps: with ps; [ python-gammu ];
-    "smtp" = ps: with ps; [ ];
-    "snapcast" = ps: with ps; [ snapcast ];
-    "snips" = ps: with ps; [ aiohttp-cors paho-mqtt ];
-    "snmp" = ps: with ps; [ pysnmp ];
-    "sochain" = ps: with ps; [ ]; # missing inputs: python-sochain-api
-    "solaredge" = ps: with ps; [ solaredge stringcase ];
-    "solaredge_local" = ps: with ps; [ ]; # missing inputs: solaredge-local
-    "solarlog" = ps: with ps; [ sunwatcher ];
-    "solax" = ps: with ps; [ solax ];
-    "soma" = ps: with ps; [ pysoma ];
-    "somfy" = ps: with ps; [ aiohttp-cors pymfy ];
-    "somfy_mylink" = ps: with ps; [ somfy-mylink-synergy ];
-    "sonarr" = ps: with ps; [ aiopyarr ];
-    "songpal" = ps: with ps; [ python-songpal ];
-    "sonos" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr plexapi plexauth plexwebsocket soco spotipy zeroconf ];
-    "sony_projector" = ps: with ps; [ pysdcp ];
-    "soundtouch" = ps: with ps; [ aiohttp-cors ifaddr libsoundtouch zeroconf ];
-    "spaceapi" = ps: with ps; [ aiohttp-cors ];
-    "spc" = ps: with ps; [ pyspcwebgw ];
-    "speedtestdotnet" = ps: with ps; [ speedtest-cli ];
-    "spider" = ps: with ps; [ spiderpy ];
-    "splunk" = ps: with ps; [ ]; # missing inputs: hass_splunk
-    "spotify" = ps: with ps; [ aiohttp-cors spotipy ];
-    "sql" = ps: with ps; [ sqlalchemy ];
-    "squeezebox" = ps: with ps; [ pysqueezebox ];
-    "srp_energy" = ps: with ps; [ srpenergy ];
-    "ssdp" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
-    "starline" = ps: with ps; [ starline ];
-    "starlingbank" = ps: with ps; [ ]; # missing inputs: starlingbank
-    "startca" = ps: with ps; [ xmltodict ];
-    "statistics" = ps: with ps; [ sqlalchemy ];
-    "statsd" = ps: with ps; [ statsd ];
-    "steam_online" = ps: with ps; [ ]; # missing inputs: steamodd
-    "steamist" = ps: with ps; [ aiohttp-cors aiosteamist discovery30303 ifaddr ];
-    "stiebel_eltron" = ps: with ps; [ pymodbus ]; # missing inputs: pystiebeleltron
-    "stookalert" = ps: with ps; [ ]; # missing inputs: stookalert
-    "stream" = ps: with ps; [ pyturbojpeg aiohttp-cors av ];
-    "streamlabswater" = ps: with ps; [ streamlabswater ];
-    "stt" = ps: with ps; [ aiohttp-cors ];
-    "subaru" = ps: with ps; [ subarulink ];
-    "suez_water" = ps: with ps; [ ]; # missing inputs: pysuez
-    "sun" = ps: with ps; [ ];
-    "supervisord" = ps: with ps; [ ];
-    "supla" = ps: with ps; [ ]; # missing inputs: asyncpysupla
-    "surepetcare" = ps: with ps; [ surepy ];
-    "swiss_hydrological_data" = ps: with ps; [ swisshydrodata ];
-    "swiss_public_transport" = ps: with ps; [ python-opendata-transport ];
-    "swisscom" = ps: with ps; [ ];
-    "switch" = ps: with ps; [ ];
-    "switchbot" = ps: with ps; [ pyswitchbot ];
-    "switcher_kis" = ps: with ps; [ aioswitcher ];
-    "switchmate" = ps: with ps; [ ]; # missing inputs: pySwitchmate
-    "syncthing" = ps: with ps; [ aiosyncthing ];
-    "syncthru" = ps: with ps; [ pysyncthru url-normalize ];
-    "synology_chat" = ps: with ps; [ ];
-    "synology_dsm" = ps: with ps; [ py-synologydsm-api ];
-    "synology_srm" = ps: with ps; [ ]; # missing inputs: synology-srm
-    "syslog" = ps: with ps; [ ];
-    "system_bridge" = ps: with ps; [ aiohttp-cors ifaddr systembridge zeroconf ];
-    "system_health" = ps: with ps; [ aiohttp-cors ];
-    "system_log" = ps: with ps; [ ];
-    "systemmonitor" = ps: with ps; [ psutil ];
-    "tado" = ps: with ps; [ python-tado ];
-    "tag" = ps: with ps; [ ];
-    "tailscale" = ps: with ps; [ tailscale ];
-    "tank_utility" = ps: with ps; [ ]; # missing inputs: tank_utility
-    "tankerkoenig" = ps: with ps; [ pytankerkoenig ];
-    "tapsaff" = ps: with ps; [ ]; # missing inputs: tapsaff
-    "tasmota" = ps: with ps; [ aiohttp-cors hatasmota paho-mqtt ];
-    "tautulli" = ps: with ps; [ pytautulli ];
-    "tcp" = ps: with ps; [ ];
-    "ted5000" = ps: with ps; [ xmltodict ];
-    "telegram" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ];
-    "telegram_bot" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ];
-    "tellduslive" = ps: with ps; [ tellduslive ];
-    "tellstick" = ps: with ps; [ ]; # missing inputs: tellcore-net tellcore-py
-    "telnet" = ps: with ps; [ ];
-    "temper" = ps: with ps; [ ]; # missing inputs: temperusb
-    "template" = ps: with ps; [ ];
-    "tensorflow" = ps: with ps; [ numpy pillow pycocotools tensorflow ]; # missing inputs: tf-models-official
-    "tesla_wall_connector" = ps: with ps; [ tesla-wall-connector ];
-    "tfiac" = ps: with ps; [ ]; # missing inputs: pytfiac
-    "thermoworks_smoke" = ps: with ps; [ stringcase ]; # missing inputs: thermoworks_smoke
-    "thethingsnetwork" = ps: with ps; [ ];
-    "thingspeak" = ps: with ps; [ ]; # missing inputs: thingspeak
-    "thinkingcleaner" = ps: with ps; [ ]; # missing inputs: pythinkingcleaner
-    "thomson" = ps: with ps; [ ];
-    "threshold" = ps: with ps; [ ];
-    "tibber" = ps: with ps; [ pytibber sqlalchemy ];
-    "tikteck" = ps: with ps; [ ]; # missing inputs: tikteck
-    "tile" = ps: with ps; [ pytile ];
-    "time_date" = ps: with ps; [ ];
-    "timer" = ps: with ps; [ ];
-    "tmb" = ps: with ps; [ tmb ];
-    "tod" = ps: with ps; [ ];
-    "todoist" = ps: with ps; [ todoist ];
-    "tof" = ps: with ps; [ ]; # missing inputs: RPi.GPIO VL53L1X2
-    "tolo" = ps: with ps; [ tololib ];
-    "tomato" = ps: with ps; [ ];
-    "toon" = ps: with ps; [ pyturbojpeg aiohttp-cors hass-nabucasa toonapi ];
-    "torque" = ps: with ps; [ aiohttp-cors ];
-    "totalconnect" = ps: with ps; [ total-connect-client ];
-    "touchline" = ps: with ps; [ ]; # missing inputs: pytouchline
-    "tplink" = ps: with ps; [ aiohttp-cors ifaddr python-kasa ];
-    "tplink_lte" = ps: with ps; [ ]; # missing inputs: tp-connected
-    "traccar" = ps: with ps; [ aiohttp-cors pytraccar stringcase ];
-    "trace" = ps: with ps; [ ];
-    "tractive" = ps: with ps; [ aiotractive ];
-    "tradfri" = ps: with ps; [ pytradfri ];
-    "trafikverket_train" = ps: with ps; [ pytrafikverket ];
-    "trafikverket_weatherstation" = ps: with ps; [ pytrafikverket ];
-    "transmission" = ps: with ps; [ transmissionrpc ];
-    "transport_nsw" = ps: with ps; [ pytransportnsw ];
-    "travisci" = ps: with ps; [ ]; # missing inputs: TravisPy
-    "trend" = ps: with ps; [ numpy ];
-    "tts" = ps: with ps; [ aiohttp-cors mutagen ];
-    "tuya" = ps: with ps; [ ha-ffmpeg tuya-iot-py-sdk ];
-    "twentemilieu" = ps: with ps; [ twentemilieu ];
-    "twilio" = ps: with ps; [ aiohttp-cors twilio ];
-    "twilio_call" = ps: with ps; [ aiohttp-cors twilio ];
-    "twilio_sms" = ps: with ps; [ aiohttp-cors twilio ];
-    "twinkly" = ps: with ps; [ ttls ];
-    "twitch" = ps: with ps; [ twitchapi ];
-    "twitter" = ps: with ps; [ twitterapi ];
-    "ubus" = ps: with ps; [ openwrt-ubus-rpc ];
-    "ue_smart_radio" = ps: with ps; [ ];
-    "uk_transport" = ps: with ps; [ ];
-    "unifi" = ps: with ps; [ aiounifi ];
-    "unifi_direct" = ps: with ps; [ pexpect ];
-    "unifiled" = ps: with ps; [ unifiled ];
-    "unifiprotect" = ps: with ps; [ aiohttp-cors ]; # missing inputs: pyunifiprotect unifi-discovery
-    "universal" = ps: with ps; [ ];
-    "upb" = ps: with ps; [ upb-lib ];
-    "upc_connect" = ps: with ps; [ connect-box ];
-    "upcloud" = ps: with ps; [ upcloud-api ];
-    "updater" = ps: with ps; [ ];
-    "upnp" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr zeroconf ];
-    "uptime" = ps: with ps; [ ];
-    "uptimerobot" = ps: with ps; [ pyuptimerobot ];
-    "usb" = ps: with ps; [ aiohttp-cors pyserial pyudev ];
-    "uscis" = ps: with ps; [ ]; # missing inputs: uscisstatus
-    "usgs_earthquakes_feed" = ps: with ps; [ geojson-client ];
-    "utility_meter" = ps: with ps; [ croniter ];
-    "uvc" = ps: with ps; [ uvcclient ];
-    "vacuum" = ps: with ps; [ ];
-    "vallox" = ps: with ps; [ ]; # missing inputs: vallox-websocket-api
-    "vasttrafik" = ps: with ps; [ ]; # missing inputs: vtjp
-    "velbus" = ps: with ps; [ aiohttp-cors pyserial pyudev velbus-aio ];
-    "velux" = ps: with ps; [ pyvlx ];
-    "venstar" = ps: with ps; [ venstarcolortouch ];
-    "vera" = ps: with ps; [ pyvera ];
-    "verisure" = ps: with ps; [ vsure ];
-    "versasense" = ps: with ps; [ pyversasense ];
-    "version" = ps: with ps; [ pyhaversion ];
-    "vesync" = ps: with ps; [ pyvesync ];
-    "viaggiatreno" = ps: with ps; [ ];
-    "vicare" = ps: with ps; [ pyvicare ];
-    "vilfo" = ps: with ps; [ vilfo-api-client ];
-    "vivotek" = ps: with ps; [ libpyvivotek ];
-    "vizio" = ps: with ps; [ pyvizio ];
-    "vlc" = ps: with ps; [ python-vlc ];
-    "vlc_telnet" = ps: with ps; [ aiovlc ];
-    "voicerss" = ps: with ps; [ ];
-    "volkszaehler" = ps: with ps; [ volkszaehler ];
-    "volumio" = ps: with ps; [ pyvolumio ];
-    "volvooncall" = ps: with ps; [ volvooncall ];
-    "vultr" = ps: with ps; [ vultr ];
-    "w800rf32" = ps: with ps; [ ]; # missing inputs: pyW800rf32
-    "wake_on_lan" = ps: with ps; [ wakeonlan ];
-    "wallbox" = ps: with ps; [ wallbox ];
-    "waqi" = ps: with ps; [ waqiasync ];
-    "water_heater" = ps: with ps; [ ];
-    "waterfurnace" = ps: with ps; [ waterfurnace ];
-    "watson_iot" = ps: with ps; [ ]; # missing inputs: ibmiotf
-    "watson_tts" = ps: with ps; [ ibm-watson ];
-    "watttime" = ps: with ps; [ aiowatttime ];
-    "waze_travel_time" = ps: with ps; [ wazeroutecalculator ];
-    "weather" = ps: with ps; [ ];
-    "webhook" = ps: with ps; [ aiohttp-cors ];
-    "webostv" = ps: with ps; [ aiowebostv sqlalchemy ];
-    "websocket_api" = ps: with ps; [ aiohttp-cors ];
-    "wemo" = ps: with ps; [ pywemo ];
-    "whirlpool" = ps: with ps; [ whirlpool-sixth-sense ];
-    "whois" = ps: with ps; [ whois ];
-    "wiffi" = ps: with ps; [ wiffi ];
-    "wilight" = ps: with ps; [ pywilight ];
-    "wirelesstag" = ps: with ps; [ ]; # missing inputs: wirelesstagpy
-    "withings" = ps: with ps; [ aiohttp-cors ]; # missing inputs: withings-api
-    "wiz" = ps: with ps; [ aiohttp-cors ifaddr pywizlight ];
-    "wled" = ps: with ps; [ wled ];
-    "wolflink" = ps: with ps; [ ]; # missing inputs: wolf_smartset
-    "workday" = ps: with ps; [ holidays ];
-    "worldclock" = ps: with ps; [ ];
-    "worldtidesinfo" = ps: with ps; [ ];
-    "worxlandroid" = ps: with ps; [ ];
-    "wsdot" = ps: with ps; [ ];
-    "x10" = ps: with ps; [ ];
-    "xbox" = ps: with ps; [ aiohttp-cors xbox-webapi ];
-    "xbox_live" = ps: with ps; [ xboxapi ];
-    "xeoma" = ps: with ps; [ pyxeoma ];
-    "xiaomi" = ps: with ps; [ ha-ffmpeg ];
-    "xiaomi_aqara" = ps: with ps; [ pyxiaomigateway aiohttp-cors ifaddr netdisco zeroconf ];
-    "xiaomi_miio" = ps: with ps; [ construct micloud python-miio ];
-    "xiaomi_tv" = ps: with ps; [ pymitv ];
-    "xmpp" = ps: with ps; [ slixmpp ];
-    "xs1" = ps: with ps; [ ]; # missing inputs: xs1-api-client
-    "yale_smart_alarm" = ps: with ps; [ yalesmartalarmclient ];
-    "yamaha" = ps: with ps; [ rxv ];
-    "yamaha_musiccast" = ps: with ps; [ aiohttp-cors aiomusiccast async-upnp-client ifaddr zeroconf ];
-    "yandex_transport" = ps: with ps; [ aioymaps ];
-    "yandextts" = ps: with ps; [ ];
-    "yeelight" = ps: with ps; [ aiohttp-cors async-upnp-client ifaddr yeelight zeroconf ];
-    "yeelightsunflower" = ps: with ps; [ ]; # missing inputs: yeelightsunflower
-    "yi" = ps: with ps; [ aioftp ha-ffmpeg ];
-    "youless" = ps: with ps; [ youless-api ];
-    "zabbix" = ps: with ps; [ py-zabbix ];
-    "zamg" = ps: with ps; [ ];
-    "zengge" = ps: with ps; [ ]; # missing inputs: zengge
-    "zeroconf" = ps: with ps; [ aiohttp-cors ifaddr zeroconf ];
-    "zerproc" = ps: with ps; [ pyzerproc ];
-    "zestimate" = ps: with ps; [ xmltodict ];
-    "zha" = ps: with ps; [ aiohttp-cors bellows ifaddr pyserial-asyncio pyserial pyudev zeroconf zha-quirks zigpy-deconz zigpy-xbee zigpy-zigate zigpy-znp zigpy ];
-    "zhong_hong" = ps: with ps; [ ]; # missing inputs: zhong_hong_hvac
-    "ziggo_mediabox_xl" = ps: with ps; [ ]; # missing inputs: ziggo-mediabox-xl
-    "zodiac" = ps: with ps; [ ];
-    "zone" = ps: with ps; [ ];
-    "zoneminder" = ps: with ps; [ zm-py ];
-    "zwave" = ps: with ps; [ homeassistant-pyozw pydispatcher ];
-    "zwave_js" = ps: with ps; [ aiohttp-cors pyserial pyudev zwave-js-server-python ];
-    "zwave_me" = ps: with ps; [ aiohttp-cors ifaddr url-normalize zeroconf ]; # missing inputs: zwave_me_ws
+    "abode" = ps: with ps; [
+      abodepy
+    ];
+    "accuweather" = ps: with ps; [
+      accuweather
+    ];
+    "acer_projector" = ps: with ps; [
+      pyserial
+    ];
+    "acmeda" = ps: with ps; [
+      aiopulse
+    ];
+    "actiontec" = ps: with ps; [
+    ];
+    "adax" = ps: with ps; [
+      adax-local
+      adax
+    ];
+    "adguard" = ps: with ps; [
+      adguardhome
+    ];
+    "ads" = ps: with ps; [
+      pyads
+    ];
+    "advantage_air" = ps: with ps; [
+      advantage-air
+    ];
+    "aemet" = ps: with ps; [
+      aemet-opendata
+    ];
+    "aftership" = ps: with ps; [
+      pyaftership
+    ];
+    "agent_dvr" = ps: with ps; [
+      agent-py
+    ];
+    "air_quality" = ps: with ps; [
+    ];
+    "airly" = ps: with ps; [
+      airly
+    ];
+    "airnow" = ps: with ps; [
+      pyairnow
+    ];
+    "airthings" = ps: with ps; [
+      airthings-cloud
+    ];
+    "airtouch4" = ps: with ps; [
+      airtouch4pyapi
+    ];
+    "airvisual" = ps: with ps; [
+      pyairvisual
+    ];
+    "airzone" = ps: with ps; [
+      aioairzone
+    ];
+    "aladdin_connect" = ps: with ps; [
+      aladdin-connect
+    ];
+    "alarm_control_panel" = ps: with ps; [
+    ];
+    "alarmdecoder" = ps: with ps; [
+      adext
+    ];
+    "alert" = ps: with ps; [
+    ];
+    "alexa" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "almond" = ps: with ps; [
+      aiohttp-cors
+      pyalmond
+    ];
+    "alpha_vantage" = ps: with ps; [
+      alpha-vantage
+    ];
+    "amazon_polly" = ps: with ps; [
+      boto3
+    ];
+    "ambee" = ps: with ps; [
+      ambee
+    ];
+    "amberelectric" = ps: with ps; [
+      amberelectric
+    ];
+    "ambiclimate" = ps: with ps; [
+      aiohttp-cors
+      ambiclimate
+    ];
+    "ambient_station" = ps: with ps; [
+      aioambient
+    ];
+    "amcrest" = ps: with ps; [
+      amcrest
+      ha-ffmpeg
+    ];
+    "ampio" = ps: with ps; [
+      asmog
+    ];
+    "analytics" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "android_ip_webcam" = ps: with ps; [
+      pydroid-ipcam
+    ];
+    "androidtv" = ps: with ps; [
+      adb-shell
+      androidtv
+      pure-python-adb
+    ]
+    ++ adb-shell.extras-require.async
+    ++ androidtv.extras-require.async
+    ++ pure-python-adb.extras-require.async;
+    "anel_pwrctrl" = ps: with ps; [
+    ]; # missing inputs: anel_pwrctrl-homeassistant
+    "anthemav" = ps: with ps; [
+    ]; # missing inputs: anthemav
+    "apache_kafka" = ps: with ps; [
+      aiokafka
+    ];
+    "apcupsd" = ps: with ps; [
+      apcaccess
+    ];
+    "api" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "apple_tv" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      pyatv
+      zeroconf
+    ];
+    "apprise" = ps: with ps; [
+      apprise
+    ];
+    "aprs" = ps: with ps; [
+      aprslib
+      geopy
+    ];
+    "aqualogic" = ps: with ps; [
+      aqualogic
+    ];
+    "aquostv" = ps: with ps; [
+    ]; # missing inputs: sharp_aquos_rc
+    "arcam_fmj" = ps: with ps; [
+      arcam-fmj
+    ];
+    "arest" = ps: with ps; [
+    ];
+    "arlo" = ps: with ps; [
+      ha-ffmpeg
+      pyarlo
+    ];
+    "arris_tg2492lg" = ps: with ps; [
+      arris-tg2492lg
+    ];
+    "aruba" = ps: with ps; [
+      pexpect
+    ];
+    "arwn" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "aseko_pool_live" = ps: with ps; [
+      aioaseko
+    ];
+    "asterisk_cdr" = ps: with ps; [
+      asterisk-mbox
+    ];
+    "asterisk_mbox" = ps: with ps; [
+      asterisk-mbox
+    ];
+    "asuswrt" = ps: with ps; [
+      aioasuswrt
+    ];
+    "atag" = ps: with ps; [
+      pyatag
+    ];
+    "aten_pe" = ps: with ps; [
+      atenpdu
+    ];
+    "atome" = ps: with ps; [
+      pyatome
+    ];
+    "august" = ps: with ps; [
+      yalexs
+    ];
+    "aurora" = ps: with ps; [
+      auroranoaa
+    ];
+    "aurora_abb_powerone" = ps: with ps; [
+      aurorapy
+    ];
+    "aussie_broadband" = ps: with ps; [
+      pyaussiebb
+    ];
+    "auth" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "automation" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "avea" = ps: with ps; [
+      avea
+    ];
+    "avion" = ps: with ps; [
+      avion
+    ];
+    "awair" = ps: with ps; [
+      python-awair
+    ];
+    "aws" = ps: with ps; [
+      aiobotocore
+    ];
+    "axis" = ps: with ps; [
+      aiohttp-cors
+      axis
+      paho-mqtt
+    ];
+    "azure_devops" = ps: with ps; [
+      aioazuredevops
+    ];
+    "azure_event_hub" = ps: with ps; [
+      azure-eventhub
+    ];
+    "azure_service_bus" = ps: with ps; [
+      azure-servicebus
+    ];
+    "backup" = ps: with ps; [
+      aiohttp-cors
+      securetar
+    ];
+    "baidu" = ps: with ps; [
+    ]; # missing inputs: baidu-aip
+    "balboa" = ps: with ps; [
+      pybalboa
+    ];
+    "bayesian" = ps: with ps; [
+    ];
+    "bbox" = ps: with ps; [
+    ]; # missing inputs: pybbox
+    "beewi_smartclim" = ps: with ps; [
+    ]; # missing inputs: beewi_smartclim
+    "binary_sensor" = ps: with ps; [
+    ];
+    "bitcoin" = ps: with ps; [
+      blockchain
+    ];
+    "bizkaibus" = ps: with ps; [
+      bizkaibus
+    ];
+    "blackbird" = ps: with ps; [
+      pyblackbird
+    ];
+    "blebox" = ps: with ps; [
+      blebox-uniapi
+    ];
+    "blink" = ps: with ps; [
+      blinkpy
+    ];
+    "blinksticklight" = ps: with ps; [
+      BlinkStick
+    ];
+    "blockchain" = ps: with ps; [
+    ]; # missing inputs: python-blockchain-api
+    "bloomsky" = ps: with ps; [
+    ];
+    "blueprint" = ps: with ps; [
+    ];
+    "bluesound" = ps: with ps; [
+      xmltodict
+    ];
+    "bluetooth_le_tracker" = ps: with ps; [
+      pygatt
+    ]
+    ++ pygatt.extras-require.GATTTOOL;
+    "bluetooth_tracker" = ps: with ps; [
+      bt-proximity
+      pybluez
+    ];
+    "bmw_connected_drive" = ps: with ps; [
+      bimmer-connected
+    ];
+    "bond" = ps: with ps; [
+      bond-api
+    ];
+    "bosch_shc" = ps: with ps; [
+      aiohttp-cors
+      boschshcpy
+      ifaddr
+      zeroconf
+    ];
+    "braviatv" = ps: with ps; [
+      bravia-tv
+    ];
+    "broadlink" = ps: with ps; [
+      broadlink
+    ];
+    "brother" = ps: with ps; [
+      brother
+    ];
+    "brottsplatskartan" = ps: with ps; [
+      brottsplatskartan
+    ];
+    "browser" = ps: with ps; [
+    ];
+    "brunt" = ps: with ps; [
+    ]; # missing inputs: brunt
+    "bsblan" = ps: with ps; [
+      bsblan
+    ];
+    "bt_home_hub_5" = ps: with ps; [
+    ]; # missing inputs: bthomehub5-devicelist
+    "bt_smarthub" = ps: with ps; [
+    ]; # missing inputs: btsmarthub_devicelist
+    "buienradar" = ps: with ps; [
+      buienradar
+    ];
+    "button" = ps: with ps; [
+    ];
+    "caldav" = ps: with ps; [
+      caldav
+    ];
+    "calendar" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "camera" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "canary" = ps: with ps; [
+      ha-ffmpeg
+      py-canary
+    ];
+    "cast" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      ifaddr
+      mutagen
+      plexapi
+      plexauth
+      plexwebsocket
+      PyChromecast
+      zeroconf
+    ];
+    "cert_expiry" = ps: with ps; [
+    ];
+    "channels" = ps: with ps; [
+      pychannels
+    ];
+    "circuit" = ps: with ps; [
+      circuit-webhook
+    ];
+    "cisco_ios" = ps: with ps; [
+      pexpect
+    ];
+    "cisco_mobility_express" = ps: with ps; [
+      ciscomobilityexpress
+    ];
+    "cisco_webex_teams" = ps: with ps; [
+      webexteamssdk
+    ];
+    "citybikes" = ps: with ps; [
+    ];
+    "clementine" = ps: with ps; [
+    ]; # missing inputs: python-clementine-remote
+    "clickatell" = ps: with ps; [
+    ];
+    "clicksend" = ps: with ps; [
+    ];
+    "clicksend_tts" = ps: with ps; [
+    ];
+    "climacell" = ps: with ps; [
+      pyclimacell
+      pytomorrowio
+    ];
+    "climate" = ps: with ps; [
+    ];
+    "cloud" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+    ];
+    "cloudflare" = ps: with ps; [
+      pycfdns
+    ];
+    "cmus" = ps: with ps; [
+    ]; # missing inputs: pycmus
+    "co2signal" = ps: with ps; [
+      co2signal
+    ];
+    "coinbase" = ps: with ps; [
+    ]; # missing inputs: coinbase
+    "color_extractor" = ps: with ps; [
+      colorthief
+    ];
+    "comed_hourly_pricing" = ps: with ps; [
+    ];
+    "comfoconnect" = ps: with ps; [
+      pycomfoconnect
+    ];
+    "command_line" = ps: with ps; [
+    ];
+    "compensation" = ps: with ps; [
+      numpy
+    ];
+    "concord232" = ps: with ps; [
+    ]; # missing inputs: concord232
+    "config" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "configurator" = ps: with ps; [
+    ];
+    "control4" = ps: with ps; [
+      pycontrol4
+    ];
+    "conversation" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "coolmaster" = ps: with ps; [
+      pycoolmasternet-async
+    ];
+    "coronavirus" = ps: with ps; [
+      coronavirus
+    ];
+    "counter" = ps: with ps; [
+    ];
+    "cover" = ps: with ps; [
+    ];
+    "cppm_tracker" = ps: with ps; [
+    ]; # missing inputs: clearpasspy
+    "cpuspeed" = ps: with ps; [
+      py-cpuinfo
+    ];
+    "crownstone" = ps: with ps; [
+      aiohttp-cors
+      crownstone-cloud
+      crownstone-sse
+      crownstone-uart
+      pyserial
+      pyudev
+    ];
+    "cups" = ps: with ps; [
+      pycups
+    ];
+    "currencylayer" = ps: with ps; [
+    ];
+    "daikin" = ps: with ps; [
+      pydaikin
+    ];
+    "danfoss_air" = ps: with ps; [
+      pydanfossair
+    ];
+    "darksky" = ps: with ps; [
+      python-forecastio
+    ];
+    "datadog" = ps: with ps; [
+      datadog
+    ];
+    "ddwrt" = ps: with ps; [
+    ];
+    "debugpy" = ps: with ps; [
+      debugpy
+    ];
+    "deconz" = ps: with ps; [
+      pydeconz
+    ];
+    "decora" = ps: with ps; [
+      bluepy
+    ]; # missing inputs: decora
+    "decora_wifi" = ps: with ps; [
+    ]; # missing inputs: decora_wifi
+    "default_config" = ps: with ps; [
+      pynacl
+      pyturbojpeg
+      aiodiscover
+      aiohttp-cors
+      async-upnp-client
+      fnvhash
+      hass-nabucasa
+      home-assistant-frontend
+      ifaddr
+      lru-dict
+      pillow
+      pyserial
+      pyudev
+      scapy
+      sqlalchemy
+      zeroconf
+    ];
+    "delijn" = ps: with ps; [
+      pydelijn
+    ];
+    "deluge" = ps: with ps; [
+      deluge-client
+    ];
+    "demo" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "denon" = ps: with ps; [
+    ];
+    "denonavr" = ps: with ps; [
+      denonavr
+    ];
+    "derivative" = ps: with ps; [
+    ];
+    "deutsche_bahn" = ps: with ps; [
+      schiene
+    ];
+    "device_automation" = ps: with ps; [
+    ];
+    "device_sun_light_trigger" = ps: with ps; [
+      aiohttp-cors
+      pillow
+    ];
+    "device_tracker" = ps: with ps; [
+    ];
+    "devolo_home_control" = ps: with ps; [
+      aiohttp-cors
+      devolo-home-control-api
+      ifaddr
+      zeroconf
+    ];
+    "devolo_home_network" = ps: with ps; [
+      devolo-plc-api
+    ];
+    "dexcom" = ps: with ps; [
+      pydexcom
+    ];
+    "dhcp" = ps: with ps; [
+      aiodiscover
+      scapy
+    ];
+    "diagnostics" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "dialogflow" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "digital_ocean" = ps: with ps; [
+      digital-ocean
+    ];
+    "digitalloggers" = ps: with ps; [
+    ]; # missing inputs: dlipower
+    "directv" = ps: with ps; [
+      directv
+    ];
+    "discogs" = ps: with ps; [
+      discogs-client
+    ];
+    "discord" = ps: with ps; [
+      nextcord
+    ];
+    "discovery" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      netdisco
+      zeroconf
+    ];
+    "dlib_face_detect" = ps: with ps; [
+      face_recognition
+    ];
+    "dlib_face_identify" = ps: with ps; [
+      face_recognition
+    ];
+    "dlink" = ps: with ps; [
+    ]; # missing inputs: pyW215
+    "dlna_dmr" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      ifaddr
+      zeroconf
+    ];
+    "dlna_dms" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      ifaddr
+      zeroconf
+    ];
+    "dnsip" = ps: with ps; [
+      aiodns
+    ];
+    "dominos" = ps: with ps; [
+      aiohttp-cors
+    ]; # missing inputs: pizzapi
+    "doods" = ps: with ps; [
+      pillow
+      pydoods
+    ];
+    "doorbird" = ps: with ps; [
+      aiohttp-cors
+      doorbirdpy
+    ];
+    "dovado" = ps: with ps; [
+    ]; # missing inputs: dovado
+    "downloader" = ps: with ps; [
+    ];
+    "dsmr" = ps: with ps; [
+      dsmr-parser
+    ];
+    "dsmr_reader" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "dte_energy_bridge" = ps: with ps; [
+    ];
+    "dublin_bus_transport" = ps: with ps; [
+    ];
+    "duckdns" = ps: with ps; [
+    ];
+    "dunehd" = ps: with ps; [
+      pdunehd
+    ];
+    "dwd_weather_warnings" = ps: with ps; [
+      dwdwfsapi
+    ];
+    "dweet" = ps: with ps; [
+    ]; # missing inputs: dweepy
+    "dynalite" = ps: with ps; [
+      dynalite-devices
+    ];
+    "eafm" = ps: with ps; [
+      aioeafm
+    ];
+    "ebox" = ps: with ps; [
+    ]; # missing inputs: pyebox
+    "ebusd" = ps: with ps; [
+    ]; # missing inputs: ebusdpy
+    "ecoal_boiler" = ps: with ps; [
+      ecoaliface
+    ];
+    "ecobee" = ps: with ps; [
+      python-ecobee-api
+    ];
+    "econet" = ps: with ps; [
+      pyeconet
+    ];
+    "ecovacs" = ps: with ps; [
+    ]; # missing inputs: sucks
+    "eddystone_temperature" = ps: with ps; [
+      construct
+    ]; # missing inputs: beacontools
+    "edimax" = ps: with ps; [
+      pyedimax
+    ];
+    "edl21" = ps: with ps; [
+      pysml
+    ];
+    "efergy" = ps: with ps; [
+      pyefergy
+    ];
+    "egardia" = ps: with ps; [
+      pythonegardia
+    ];
+    "eight_sleep" = ps: with ps; [
+      pyeight
+    ];
+    "elgato" = ps: with ps; [
+      elgato
+    ];
+    "eliqonline" = ps: with ps; [
+      eliqonline
+    ];
+    "elkm1" = ps: with ps; [
+      aiohttp-cors
+      elkm1-lib
+      ifaddr
+    ];
+    "elmax" = ps: with ps; [
+      elmax-api
+    ];
+    "elv" = ps: with ps; [
+      pypca
+    ];
+    "emby" = ps: with ps; [
+      pyemby
+    ];
+    "emoncms" = ps: with ps; [
+    ];
+    "emoncms_history" = ps: with ps; [
+    ];
+    "emonitor" = ps: with ps; [
+      aioemonitor
+    ];
+    "emulated_hue" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+    ];
+    "emulated_kasa" = ps: with ps; [
+      sense-energy
+    ];
+    "emulated_roku" = ps: with ps; [
+      aiohttp-cors
+      emulated-roku
+      ifaddr
+    ];
+    "energy" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "enigma2" = ps: with ps; [
+      openwebifpy
+    ];
+    "enocean" = ps: with ps; [
+      enocean
+    ];
+    "enphase_envoy" = ps: with ps; [
+      envoy-reader
+    ];
+    "entur_public_transport" = ps: with ps; [
+      enturclient
+    ];
+    "environment_canada" = ps: with ps; [
+      env-canada
+    ];
+    "envisalink" = ps: with ps; [
+      pyenvisalink
+    ];
+    "ephember" = ps: with ps; [
+      pyephember
+    ];
+    "epson" = ps: with ps; [
+      epson-projector
+    ];
+    "epsonworkforce" = ps: with ps; [
+    ]; # missing inputs: epsonprinter
+    "eq3btsmart" = ps: with ps; [
+      construct
+    ]; # missing inputs: python-eq3bt
+    "esphome" = ps: with ps; [
+      aioesphomeapi
+      aiohttp-cors
+      ifaddr
+      zeroconf
+    ];
+    "etherscan" = ps: with ps; [
+    ]; # missing inputs: python-etherscan-api
+    "eufy" = ps: with ps; [
+    ]; # missing inputs: lakeside
+    "everlights" = ps: with ps; [
+      pyeverlights
+    ];
+    "evil_genius_labs" = ps: with ps; [
+      pyevilgenius
+    ];
+    "evohome" = ps: with ps; [
+      evohome-async
+    ];
+    "ezviz" = ps: with ps; [
+      ha-ffmpeg
+      pyezviz
+    ];
+    "faa_delays" = ps: with ps; [
+      faadelays
+    ];
+    "facebook" = ps: with ps; [
+    ];
+    "facebox" = ps: with ps; [
+    ];
+    "fail2ban" = ps: with ps; [
+    ];
+    "familyhub" = ps: with ps; [
+      python-family-hub-local
+    ];
+    "fan" = ps: with ps; [
+    ];
+    "fastdotcom" = ps: with ps; [
+    ]; # missing inputs: fastdotcom
+    "feedreader" = ps: with ps; [
+      feedparser
+    ];
+    "ffmpeg" = ps: with ps; [
+      ha-ffmpeg
+    ];
+    "ffmpeg_motion" = ps: with ps; [
+      ha-ffmpeg
+    ];
+    "ffmpeg_noise" = ps: with ps; [
+      ha-ffmpeg
+    ];
+    "fibaro" = ps: with ps; [
+      fiblary3-fork
+    ];
+    "fido" = ps: with ps; [
+      pyfido
+    ];
+    "file" = ps: with ps; [
+    ];
+    "filesize" = ps: with ps; [
+    ];
+    "filter" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "fints" = ps: with ps; [
+      fints
+    ];
+    "fireservicerota" = ps: with ps; [
+      pyfireservicerota
+    ];
+    "firmata" = ps: with ps; [
+      pymata-express
+    ];
+    "fitbit" = ps: with ps; [
+      aiohttp-cors
+      fitbit
+    ];
+    "fivem" = ps: with ps; [
+      fivem-api
+    ];
+    "fixer" = ps: with ps; [
+      fixerio
+    ];
+    "fjaraskupan" = ps: with ps; [
+      fjaraskupan
+    ];
+    "fleetgo" = ps: with ps; [
+      ritassist
+    ];
+    "flexit" = ps: with ps; [
+      pymodbus
+    ];
+    "flic" = ps: with ps; [
+      pyflic
+    ];
+    "flick_electric" = ps: with ps; [
+      pyflick
+    ];
+    "flipr" = ps: with ps; [
+      flipr-api
+    ];
+    "flo" = ps: with ps; [
+      aioflo
+    ];
+    "flock" = ps: with ps; [
+    ];
+    "flume" = ps: with ps; [
+      pyflume
+    ];
+    "flunearyou" = ps: with ps; [
+      pyflunearyou
+    ];
+    "flux" = ps: with ps; [
+    ];
+    "flux_led" = ps: with ps; [
+      aiohttp-cors
+      flux-led
+      ifaddr
+    ];
+    "folder" = ps: with ps; [
+    ];
+    "folder_watcher" = ps: with ps; [
+      watchdog
+    ];
+    "foobot" = ps: with ps; [
+      foobot-async
+    ];
+    "forecast_solar" = ps: with ps; [
+      forecast-solar
+    ];
+    "forked_daapd" = ps: with ps; [
+    ]; # missing inputs: pyforked-daapd pylibrespot-java
+    "fortios" = ps: with ps; [
+      fortiosapi
+    ];
+    "foscam" = ps: with ps; [
+      libpyfoscam
+    ];
+    "foursquare" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "free_mobile" = ps: with ps; [
+    ]; # missing inputs: freesms
+    "freebox" = ps: with ps; [
+      freebox-api
+    ];
+    "freedns" = ps: with ps; [
+    ];
+    "freedompro" = ps: with ps; [
+      pyfreedompro
+    ];
+    "fritz" = ps: with ps; [
+      aiohttp-cors
+      fritzconnection
+      ifaddr
+      xmltodict
+    ];
+    "fritzbox" = ps: with ps; [
+      pyfritzhome
+    ];
+    "fritzbox_callmonitor" = ps: with ps; [
+      fritzconnection
+    ];
+    "fronius" = ps: with ps; [
+      pyfronius
+    ];
+    "frontend" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "frontier_silicon" = ps: with ps; [
+      afsapi
+    ];
+    "futurenow" = ps: with ps; [
+      pyfnip
+    ];
+    "garadget" = ps: with ps; [
+    ];
+    "garages_amsterdam" = ps: with ps; [
+      garages-amsterdam
+    ];
+    "gc100" = ps: with ps; [
+    ]; # missing inputs: python-gc100
+    "gdacs" = ps: with ps; [
+      aio-georss-gdacs
+    ];
+    "generic" = ps: with ps; [
+      av
+      pillow
+    ];
+    "generic_hygrostat" = ps: with ps; [
+    ];
+    "generic_thermostat" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "geniushub" = ps: with ps; [
+      geniushub-client
+    ];
+    "geo_json_events" = ps: with ps; [
+      aio-geojson-generic-client
+    ];
+    "geo_location" = ps: with ps; [
+    ];
+    "geo_rss_events" = ps: with ps; [
+      georss-generic-client
+    ];
+    "geofency" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "geonetnz_quakes" = ps: with ps; [
+      aio-geojson-geonetnz-quakes
+    ];
+    "geonetnz_volcano" = ps: with ps; [
+      aio-geojson-geonetnz-volcano
+    ];
+    "gios" = ps: with ps; [
+      gios
+    ];
+    "github" = ps: with ps; [
+      aiogithubapi
+    ];
+    "gitlab_ci" = ps: with ps; [
+      python-gitlab
+    ];
+    "gitter" = ps: with ps; [
+    ]; # missing inputs: gitterpy
+    "glances" = ps: with ps; [
+      glances-api
+    ];
+    "goalfeed" = ps: with ps; [
+    ]; # missing inputs: pysher
+    "goalzero" = ps: with ps; [
+      goalzero
+    ];
+    "gogogate2" = ps: with ps; [
+      ismartgate
+    ];
+    "goodwe" = ps: with ps; [
+      goodwe
+    ];
+    "google" = ps: with ps; [
+      aiohttp-cors
+      google-api-python-client
+      httplib2
+      oauth2client
+    ];
+    "google_assistant" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "google_cloud" = ps: with ps; [
+      google-cloud-texttospeech
+    ];
+    "google_domains" = ps: with ps; [
+    ];
+    "google_maps" = ps: with ps; [
+      locationsharinglib
+    ];
+    "google_pubsub" = ps: with ps; [
+      google-cloud-pubsub
+    ];
+    "google_translate" = ps: with ps; [
+      gtts
+    ];
+    "google_travel_time" = ps: with ps; [
+      googlemaps
+    ];
+    "google_wifi" = ps: with ps; [
+    ];
+    "gpsd" = ps: with ps; [
+      gps3
+    ];
+    "gpslogger" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "graphite" = ps: with ps; [
+    ];
+    "gree" = ps: with ps; [
+      greeclimate
+    ];
+    "greeneye_monitor" = ps: with ps; [
+    ]; # missing inputs: greeneye_monitor
+    "greenwave" = ps: with ps; [
+    ]; # missing inputs: greenwavereality
+    "group" = ps: with ps; [
+    ];
+    "growatt_server" = ps: with ps; [
+      growattserver
+    ];
+    "gstreamer" = ps: with ps; [
+    ]; # missing inputs: gstreamer-player
+    "gtfs" = ps: with ps; [
+      pygtfs
+    ];
+    "guardian" = ps: with ps; [
+      aioguardian
+    ];
+    "habitica" = ps: with ps; [
+      habitipy
+    ];
+    "hangouts" = ps: with ps; [
+      hangups
+    ];
+    "harman_kardon_avr" = ps: with ps; [
+      hkavr
+    ];
+    "harmony" = ps: with ps; [
+      aioharmony
+    ];
+    "hassio" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "haveibeenpwned" = ps: with ps; [
+    ];
+    "hddtemp" = ps: with ps; [
+    ];
+    "hdmi_cec" = ps: with ps; [
+      pycec
+    ];
+    "heatmiser" = ps: with ps; [
+    ]; # missing inputs: heatmiserV3
+    "heos" = ps: with ps; [
+      pyheos
+    ];
+    "here_travel_time" = ps: with ps; [
+      herepy
+    ];
+    "hikvision" = ps: with ps; [
+    ]; # missing inputs: pyhik
+    "hikvisioncam" = ps: with ps; [
+      hikvision
+    ];
+    "hisense_aehw4a1" = ps: with ps; [
+      pyaehw4a1
+    ];
+    "history" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "history_stats" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "hitron_coda" = ps: with ps; [
+    ];
+    "hive" = ps: with ps; [
+      pyhiveapi
+    ];
+    "hlk_sw16" = ps: with ps; [
+      hlk-sw16
+    ];
+    "home_connect" = ps: with ps; [
+      aiohttp-cors
+      homeconnect
+    ];
+    "home_plus_control" = ps: with ps; [
+      aiohttp-cors
+      homepluscontrol
+    ];
+    "homeassistant" = ps: with ps; [
+    ];
+    "homekit" = ps: with ps; [
+      hap-python
+      pyqrcode
+      pyturbojpeg
+      aiohttp-cors
+      base36
+      fnvhash
+      ha-ffmpeg
+      ifaddr
+      zeroconf
+    ];
+    "homekit_controller" = ps: with ps; [
+      aiohomekit
+      aiohttp-cors
+      ifaddr
+      zeroconf
+    ];
+    "homematic" = ps: with ps; [
+      pyhomematic
+    ];
+    "homematicip_cloud" = ps: with ps; [
+      homematicip
+    ];
+    "homewizard" = ps: with ps; [
+      aiohwenergy
+    ];
+    "homeworks" = ps: with ps; [
+      pyhomeworks
+    ];
+    "honeywell" = ps: with ps; [
+      somecomfort
+    ];
+    "horizon" = ps: with ps; [
+    ]; # missing inputs: horimote
+    "hp_ilo" = ps: with ps; [
+      python-hpilo
+    ];
+    "html5" = ps: with ps; [
+      aiohttp-cors
+      pywebpush
+    ];
+    "http" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "huawei_lte" = ps: with ps; [
+      huawei-lte-api
+      stringcase
+      url-normalize
+    ];
+    "hue" = ps: with ps; [
+      aiohue
+    ];
+    "huisbaasje" = ps: with ps; [
+      huisbaasje-client
+    ];
+    "humidifier" = ps: with ps; [
+    ];
+    "hunterdouglas_powerview" = ps: with ps; [
+      aiopvapi
+    ];
+    "hvv_departures" = ps: with ps; [
+      pygti
+    ];
+    "hydrawise" = ps: with ps; [
+      hydrawiser
+    ];
+    "hyperion" = ps: with ps; [
+      hyperion-py
+    ];
+    "ialarm" = ps: with ps; [
+      pyialarm
+    ];
+    "iammeter" = ps: with ps; [
+    ]; # missing inputs: iammeter
+    "iaqualink" = ps: with ps; [
+      iaqualink
+    ];
+    "icloud" = ps: with ps; [
+      pyicloud
+    ];
+    "idteck_prox" = ps: with ps; [
+    ]; # missing inputs: rfk101py
+    "ifttt" = ps: with ps; [
+      aiohttp-cors
+      pyfttt
+    ];
+    "iglo" = ps: with ps; [
+    ]; # missing inputs: iglo
+    "ign_sismologia" = ps: with ps; [
+      georss-ign-sismologia-client
+    ];
+    "ihc" = ps: with ps; [
+      defusedxml
+    ]; # missing inputs: ihcsdk
+    "image" = ps: with ps; [
+      aiohttp-cors
+      pillow
+    ];
+    "image_processing" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "imap" = ps: with ps; [
+      aioimaplib
+    ];
+    "imap_email_content" = ps: with ps; [
+    ];
+    "incomfort" = ps: with ps; [
+      incomfort-client
+    ];
+    "influxdb" = ps: with ps; [
+      influxdb-client
+      influxdb
+    ];
+    "input_boolean" = ps: with ps; [
+    ];
+    "input_button" = ps: with ps; [
+    ];
+    "input_datetime" = ps: with ps; [
+    ];
+    "input_number" = ps: with ps; [
+    ];
+    "input_select" = ps: with ps; [
+    ];
+    "input_text" = ps: with ps; [
+    ];
+    "insteon" = ps: with ps; [
+      aiohttp-cors
+      pyinsteon
+      pyserial
+      pyudev
+    ];
+    "integration" = ps: with ps; [
+    ];
+    "intellifire" = ps: with ps; [
+      intellifire4py
+    ];
+    "intent" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "intent_script" = ps: with ps; [
+    ];
+    "intesishome" = ps: with ps; [
+      pyintesishome
+    ];
+    "ios" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      zeroconf
+    ];
+    "iotawatt" = ps: with ps; [
+      iotawattpy
+    ];
+    "iperf3" = ps: with ps; [
+    ]; # missing inputs: iperf3
+    "ipma" = ps: with ps; [
+      pyipma
+    ];
+    "ipp" = ps: with ps; [
+      pyipp
+    ];
+    "iqvia" = ps: with ps; [
+      numpy
+      pyiqvia
+    ];
+    "irish_rail_transport" = ps: with ps; [
+    ]; # missing inputs: pyirishrail
+    "islamic_prayer_times" = ps: with ps; [
+      prayer-times-calculator
+    ];
+    "iss" = ps: with ps; [
+    ]; # missing inputs: pyiss
+    "isy994" = ps: with ps; [
+      pyisy
+    ];
+    "itach" = ps: with ps; [
+    ]; # missing inputs: pyitachip2ir
+    "itunes" = ps: with ps; [
+    ];
+    "izone" = ps: with ps; [
+      python-izone
+    ];
+    "jellyfin" = ps: with ps; [
+      jellyfin-apiclient-python
+    ];
+    "jewish_calendar" = ps: with ps; [
+      hdate
+    ];
+    "joaoapps_join" = ps: with ps; [
+    ]; # missing inputs: python-join-api
+    "juicenet" = ps: with ps; [
+      python-juicenet
+    ];
+    "kaiterra" = ps: with ps; [
+    ]; # missing inputs: kaiterra-async-client
+    "kaleidescape" = ps: with ps; [
+    ]; # missing inputs: pykaleidescape
+    "kankun" = ps: with ps; [
+    ];
+    "keba" = ps: with ps; [
+    ]; # missing inputs: keba-kecontact
+    "keenetic_ndms2" = ps: with ps; [
+      ndms2-client
+    ];
+    "kef" = ps: with ps; [
+      aiokef
+      getmac
+    ];
+    "keyboard" = ps: with ps; [
+    ]; # missing inputs: pyuserinput
+    "keyboard_remote" = ps: with ps; [
+      aionotify
+      evdev
+    ];
+    "kira" = ps: with ps; [
+      pykira
+    ];
+    "kiwi" = ps: with ps; [
+    ]; # missing inputs: kiwiki-client
+    "kmtronic" = ps: with ps; [
+      pykmtronic
+    ];
+    "knx" = ps: with ps; [
+      xknx
+    ];
+    "kodi" = ps: with ps; [
+      aiohttp-cors
+      pykodi
+    ];
+    "konnected" = ps: with ps; [
+      aiohttp-cors
+      konnected
+    ];
+    "kostal_plenticore" = ps: with ps; [
+    ]; # missing inputs: kostal_plenticore
+    "kraken" = ps: with ps; [
+      krakenex
+      pykrakenapi
+    ];
+    "kulersky" = ps: with ps; [
+      pykulersky
+    ];
+    "kwb" = ps: with ps; [
+    ]; # missing inputs: pykwb
+    "lacrosse" = ps: with ps; [
+      pylacrosse
+    ];
+    "lametric" = ps: with ps; [
+      lmnotify
+    ];
+    "lannouncer" = ps: with ps; [
+    ];
+    "lastfm" = ps: with ps; [
+      pylast
+    ];
+    "launch_library" = ps: with ps; [
+      pylaunches
+    ];
+    "lcn" = ps: with ps; [
+      pypck
+    ];
+    "lg_netcast" = ps: with ps; [
+      pylgnetcast
+    ];
+    "lg_soundbar" = ps: with ps; [
+      temescal
+    ];
+    "life360" = ps: with ps; [
+      life360
+    ];
+    "lifx" = ps: with ps; [
+      aiolifx
+      aiolifx-effects
+    ];
+    "lifx_cloud" = ps: with ps; [
+    ];
+    "light" = ps: with ps; [
+    ];
+    "lightwave" = ps: with ps; [
+      lightwave
+    ];
+    "limitlessled" = ps: with ps; [
+      limitlessled
+    ];
+    "linksys_smart" = ps: with ps; [
+    ];
+    "linode" = ps: with ps; [
+      linode-api
+    ];
+    "linux_battery" = ps: with ps; [
+      batinfo
+    ];
+    "lirc" = ps: with ps; [
+    ]; # missing inputs: python-lirc
+    "litejet" = ps: with ps; [
+    ]; # missing inputs: pylitejet
+    "litterrobot" = ps: with ps; [
+      pylitterbot
+    ];
+    "llamalab_automate" = ps: with ps; [
+    ];
+    "local_file" = ps: with ps; [
+    ];
+    "local_ip" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+    ];
+    "locative" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "lock" = ps: with ps; [
+    ];
+    "logbook" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "logentries" = ps: with ps; [
+    ];
+    "logger" = ps: with ps; [
+    ];
+    "logi_circle" = ps: with ps; [
+      aiohttp-cors
+      ha-ffmpeg
+    ]; # missing inputs: logi_circle
+    "london_air" = ps: with ps; [
+    ];
+    "london_underground" = ps: with ps; [
+    ]; # missing inputs: london-tube-status
+    "lookin" = ps: with ps; [
+      aiolookin
+    ];
+    "lovelace" = ps: with ps; [
+    ];
+    "luci" = ps: with ps; [
+      openwrt-luci-rpc
+    ];
+    "luftdaten" = ps: with ps; [
+      luftdaten
+    ];
+    "lupusec" = ps: with ps; [
+      lupupy
+    ];
+    "lutron" = ps: with ps; [
+      pylutron
+    ];
+    "lutron_caseta" = ps: with ps; [
+      pylutron-caseta
+    ];
+    "lw12wifi" = ps: with ps; [
+    ]; # missing inputs: lw12
+    "lyric" = ps: with ps; [
+      aiohttp-cors
+      aiolyric
+    ];
+    "magicseaweed" = ps: with ps; [
+    ]; # missing inputs: magicseaweed
+    "mailbox" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "mailgun" = ps: with ps; [
+      aiohttp-cors
+    ]; # missing inputs: pymailgunner
+    "manual" = ps: with ps; [
+    ];
+    "manual_mqtt" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "map" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "marytts" = ps: with ps; [
+    ]; # missing inputs: speak2mary
+    "mastodon" = ps: with ps; [
+      mastodon-py
+    ];
+    "matrix" = ps: with ps; [
+      matrix-client
+    ];
+    "maxcube" = ps: with ps; [
+      maxcube-api
+    ];
+    "mazda" = ps: with ps; [
+      pymazda
+    ];
+    "media_extractor" = ps: with ps; [
+      aiohttp-cors
+      youtube-dl-light
+    ];
+    "media_player" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "media_source" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "mediaroom" = ps: with ps; [
+      pymediaroom
+    ];
+    "melcloud" = ps: with ps; [
+      pymelcloud
+    ];
+    "melissa" = ps: with ps; [
+    ]; # missing inputs: py-melissa-climate
+    "meraki" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "message_bird" = ps: with ps; [
+    ]; # missing inputs: messagebird
+    "met" = ps: with ps; [
+      pymetno
+    ];
+    "met_eireann" = ps: with ps; [
+      pymeteireann
+    ];
+    "meteo_france" = ps: with ps; [
+      meteofrance-api
+    ];
+    "meteoalarm" = ps: with ps; [
+      meteoalertapi
+    ];
+    "meteoclimatic" = ps: with ps; [
+      pymeteoclimatic
+    ];
+    "metoffice" = ps: with ps; [
+    ]; # missing inputs: datapoint
+    "mfi" = ps: with ps; [
+    ]; # missing inputs: mficlient
+    "microsoft" = ps: with ps; [
+    ]; # missing inputs: pycsspeechtts
+    "microsoft_face" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "microsoft_face_detect" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "microsoft_face_identify" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+    ];
+    "miflora" = ps: with ps; [
+      bluepy
+    ]; # missing inputs: miflora
+    "mikrotik" = ps: with ps; [
+      librouteros
+    ];
+    "mill" = ps: with ps; [
+      mill-local
+      millheater
+    ];
+    "min_max" = ps: with ps; [
+    ];
+    "minecraft_server" = ps: with ps; [
+      aiodns
+      getmac
+      mcstatus
+    ];
+    "minio" = ps: with ps; [
+      minio
+    ];
+    "mitemp_bt" = ps: with ps; [
+    ]; # missing inputs: mitemp_bt
+    "mjpeg" = ps: with ps; [
+    ];
+    "mobile_app" = ps: with ps; [
+      pynacl
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      pillow
+    ];
+    "mochad" = ps: with ps; [
+    ]; # missing inputs: pymochad
+    "modbus" = ps: with ps; [
+      pymodbus
+    ];
+    "modem_callerid" = ps: with ps; [
+      aiohttp-cors
+      phone-modem
+      pyserial
+      pyudev
+    ];
+    "modern_forms" = ps: with ps; [
+      aiomodernforms
+    ];
+    "moehlenhoff_alpha2" = ps: with ps; [
+    ]; # missing inputs: moehlenhoff-alpha2
+    "mold_indicator" = ps: with ps; [
+    ];
+    "monoprice" = ps: with ps; [
+    ]; # missing inputs: pymonoprice
+    "moon" = ps: with ps; [
+    ];
+    "motion_blinds" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      motionblinds
+    ];
+    "motioneye" = ps: with ps; [
+      aiohttp-cors
+      motioneye-client
+    ];
+    "mpd" = ps: with ps; [
+      mpd2
+    ];
+    "mqtt" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "mqtt_eventstream" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "mqtt_json" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "mqtt_room" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "mqtt_statestream" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "msteams" = ps: with ps; [
+      pymsteams
+    ];
+    "mullvad" = ps: with ps; [
+      mullvad-api
+    ];
+    "mutesync" = ps: with ps; [
+      mutesync
+    ];
+    "mvglive" = ps: with ps; [
+      PyMVGLive
+    ];
+    "my" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "mycroft" = ps: with ps; [
+    ]; # missing inputs: mycroftapi
+    "myq" = ps: with ps; [
+      pymyq
+    ];
+    "mysensors" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+      pymysensors
+    ];
+    "mystrom" = ps: with ps; [
+      aiohttp-cors
+      python-mystrom
+    ];
+    "mythicbeastsdns" = ps: with ps; [
+      mbddns
+    ];
+    "nad" = ps: with ps; [
+      nad-receiver
+    ];
+    "nam" = ps: with ps; [
+      nettigo-air-monitor
+    ];
+    "namecheapdns" = ps: with ps; [
+      defusedxml
+    ];
+    "nanoleaf" = ps: with ps; [
+      aionanoleaf
+    ];
+    "neato" = ps: with ps; [
+      aiohttp-cors
+      pybotvac
+    ];
+    "nederlandse_spoorwegen" = ps: with ps; [
+      nsapi
+    ];
+    "ness_alarm" = ps: with ps; [
+      nessclient
+    ];
+    "nest" = ps: with ps; [
+      aiohttp-cors
+      google-nest-sdm
+      ha-ffmpeg
+      python-nest
+    ];
+    "netatmo" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      pyatmo
+    ];
+    "netdata" = ps: with ps; [
+      netdata
+    ];
+    "netgear" = ps: with ps; [
+      pynetgear
+    ];
+    "netgear_lte" = ps: with ps; [
+      eternalegypt
+    ];
+    "netio" = ps: with ps; [
+      aiohttp-cors
+    ]; # missing inputs: pynetio
+    "network" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+    ];
+    "neurio_energy" = ps: with ps; [
+    ]; # missing inputs: neurio
+    "nexia" = ps: with ps; [
+      nexia
+    ];
+    "nextbus" = ps: with ps; [
+    ]; # missing inputs: py_nextbusnext
+    "nextcloud" = ps: with ps; [
+      nextcloudmonitor
+    ];
+    "nfandroidtv" = ps: with ps; [
+    ]; # missing inputs: notifications-android-tv
+    "nightscout" = ps: with ps; [
+      py-nightscout
+    ];
+    "niko_home_control" = ps: with ps; [
+      niko-home-control
+    ];
+    "nilu" = ps: with ps; [
+      niluclient
+    ];
+    "nina" = ps: with ps; [
+      pynina
+    ];
+    "nissan_leaf" = ps: with ps; [
+      pycarwings2
+    ];
+    "nmap_tracker" = ps: with ps; [
+      aiohttp-cors
+      getmac
+      ifaddr
+      netmap
+    ]; # missing inputs: mac-vendor-lookup
+    "nmbs" = ps: with ps; [
+    ]; # missing inputs: pyrail
+    "no_ip" = ps: with ps; [
+    ];
+    "noaa_tides" = ps: with ps; [
+    ]; # missing inputs: noaa-coops
+    "norway_air" = ps: with ps; [
+      pymetno
+    ];
+    "notify" = ps: with ps; [
+    ];
+    "notify_events" = ps: with ps; [
+    ]; # missing inputs: notify-events
+    "notion" = ps: with ps; [
+      aionotion
+    ];
+    "nsw_fuel_station" = ps: with ps; [
+    ]; # missing inputs: nsw-fuel-api-client
+    "nsw_rural_fire_service_feed" = ps: with ps; [
+      aio-geojson-nsw-rfs-incidents
+    ];
+    "nuheat" = ps: with ps; [
+    ]; # missing inputs: nuheat
+    "nuki" = ps: with ps; [
+      pynuki
+    ];
+    "numato" = ps: with ps; [
+    ]; # missing inputs: numato-gpio
+    "number" = ps: with ps; [
+    ];
+    "nut" = ps: with ps; [
+      pynut2
+    ];
+    "nws" = ps: with ps; [
+      pynws
+    ];
+    "nx584" = ps: with ps; [
+      pynx584
+    ];
+    "nzbget" = ps: with ps; [
+    ]; # missing inputs: pynzbgetapi
+    "oasa_telematics" = ps: with ps; [
+      oasatelematics
+    ];
+    "obihai" = ps: with ps; [
+      pyobihai
+    ];
+    "octoprint" = ps: with ps; [
+      pyoctoprintapi
+    ];
+    "oem" = ps: with ps; [
+      oemthermostat
+    ];
+    "ohmconnect" = ps: with ps; [
+      defusedxml
+    ];
+    "ombi" = ps: with ps; [
+      pyombi
+    ];
+    "omnilogic" = ps: with ps; [
+      omnilogic
+    ];
+    "onboarding" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "oncue" = ps: with ps; [
+      aiooncue
+    ];
+    "ondilo_ico" = ps: with ps; [
+      aiohttp-cors
+      ondilo
+    ];
+    "onewire" = ps: with ps; [
+      pi1wire
+      pyownet
+    ];
+    "onkyo" = ps: with ps; [
+      onkyo-eiscp
+    ];
+    "onvif" = ps: with ps; [
+      wsdiscovery
+      ha-ffmpeg
+      onvif-zeep-async
+    ];
+    "open_meteo" = ps: with ps; [
+      open-meteo
+    ];
+    "openalpr_cloud" = ps: with ps; [
+    ];
+    "openalpr_local" = ps: with ps; [
+    ];
+    "opencv" = ps: with ps; [
+      numpy
+    ]; # missing inputs: opencv-python-headless
+    "openerz" = ps: with ps; [
+      openerz-api
+    ];
+    "openevse" = ps: with ps; [
+      openevsewifi
+    ];
+    "openexchangerates" = ps: with ps; [
+    ];
+    "opengarage" = ps: with ps; [
+      open-garage
+    ];
+    "openhardwaremonitor" = ps: with ps; [
+    ];
+    "openhome" = ps: with ps; [
+      openhomedevice
+    ];
+    "opensensemap" = ps: with ps; [
+      opensensemap-api
+    ];
+    "opensky" = ps: with ps; [
+    ];
+    "opentherm_gw" = ps: with ps; [
+      pyotgw
+    ];
+    "openuv" = ps: with ps; [
+      pyopenuv
+    ];
+    "openweathermap" = ps: with ps; [
+      pyowm
+    ];
+    "opnsense" = ps: with ps; [
+      pyopnsense
+    ];
+    "opple" = ps: with ps; [
+      pyoppleio
+    ];
+    "oru" = ps: with ps; [
+    ]; # missing inputs: oru
+    "orvibo" = ps: with ps; [
+      orvibo
+    ];
+    "osramlightify" = ps: with ps; [
+    ]; # missing inputs: lightify
+    "otp" = ps: with ps; [
+      pyotp
+    ];
+    "overkiz" = ps: with ps; [
+      pyoverkiz
+    ];
+    "ovo_energy" = ps: with ps; [
+      ovoenergy
+    ];
+    "owntracks" = ps: with ps; [
+      pynacl
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      paho-mqtt
+    ];
+    "p1_monitor" = ps: with ps; [
+      p1monitor
+    ];
+    "panasonic_bluray" = ps: with ps; [
+      panacotta
+    ];
+    "panasonic_viera" = ps: with ps; [
+    ]; # missing inputs: panasonic_viera
+    "pandora" = ps: with ps; [
+      pexpect
+    ];
+    "panel_custom" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "panel_iframe" = ps: with ps; [
+      aiohttp-cors
+      fnvhash
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "peco" = ps: with ps; [
+      peco
+    ];
+    "pencom" = ps: with ps; [
+      pencompy
+    ];
+    "persistent_notification" = ps: with ps; [
+    ];
+    "person" = ps: with ps; [
+      aiohttp-cors
+      pillow
+    ];
+    "philips_js" = ps: with ps; [
+      ha-philipsjs
+    ];
+    "pi_hole" = ps: with ps; [
+      hole
+    ];
+    "picnic" = ps: with ps; [
+      python-picnic-api
+    ];
+    "picotts" = ps: with ps; [
+    ];
+    "pilight" = ps: with ps; [
+    ]; # missing inputs: pilight
+    "ping" = ps: with ps; [
+      icmplib
+    ];
+    "pioneer" = ps: with ps; [
+    ];
+    "pjlink" = ps: with ps; [
+    ]; # missing inputs: pypjlink2
+    "plaato" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      pyplaato
+    ];
+    "plant" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "plex" = ps: with ps; [
+      aiohttp-cors
+      plexapi
+      plexauth
+      plexwebsocket
+    ];
+    "plugwise" = ps: with ps; [
+      plugwise
+    ];
+    "plum_lightpad" = ps: with ps; [
+    ]; # missing inputs: plumlightpad
+    "pocketcasts" = ps: with ps; [
+    ]; # missing inputs: pycketcasts
+    "point" = ps: with ps; [
+      aiohttp-cors
+      pypoint
+    ];
+    "poolsense" = ps: with ps; [
+      poolsense
+    ];
+    "powerwall" = ps: with ps; [
+    ]; # missing inputs: tesla-powerwall
+    "profiler" = ps: with ps; [
+      guppy3
+      objgraph
+      pyprof2calltree
+    ];
+    "progettihwsw" = ps: with ps; [
+    ]; # missing inputs: progettihwsw
+    "proliphix" = ps: with ps; [
+    ]; # missing inputs: proliphix
+    "prometheus" = ps: with ps; [
+      aiohttp-cors
+      prometheus-client
+    ];
+    "prosegur" = ps: with ps; [
+      pyprosegur
+    ];
+    "prowl" = ps: with ps; [
+    ];
+    "proximity" = ps: with ps; [
+    ];
+    "proxmoxve" = ps: with ps; [
+      proxmoxer
+    ];
+    "proxy" = ps: with ps; [
+      pillow
+    ];
+    "ps4" = ps: with ps; [
+    ]; # missing inputs: pyps4-2ndscreen
+    "pulseaudio_loopback" = ps: with ps; [
+      pulsectl
+    ];
+    "pure_energie" = ps: with ps; [
+      gridnet
+    ];
+    "push" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "pushbullet" = ps: with ps; [
+      pushbullet
+    ];
+    "pushover" = ps: with ps; [
+      pushover-complete
+    ];
+    "pushsafer" = ps: with ps; [
+    ];
+    "pvoutput" = ps: with ps; [
+      pvo
+    ];
+    "pvpc_hourly_pricing" = ps: with ps; [
+      aiopvpc
+    ];
+    "pyload" = ps: with ps; [
+    ];
+    "python_script" = ps: with ps; [
+      restrictedpython
+    ];
+    "qbittorrent" = ps: with ps; [
+    ]; # missing inputs: python-qbittorrent
+    "qld_bushfire" = ps: with ps; [
+      georss-qld-bushfire-alert-client
+    ];
+    "qnap" = ps: with ps; [
+    ]; # missing inputs: qnapstats
+    "qrcode" = ps: with ps; [
+      pillow
+      pyzbar
+    ];
+    "quantum_gateway" = ps: with ps; [
+      quantum-gateway
+    ];
+    "qvr_pro" = ps: with ps; [
+      pyqvrpro
+    ];
+    "qwikswitch" = ps: with ps; [
+    ]; # missing inputs: pyqwikswitch
+    "rachio" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      rachiopy
+    ];
+    "radarr" = ps: with ps; [
+    ];
+    "radio_browser" = ps: with ps; [
+      radios
+    ];
+    "radiotherm" = ps: with ps; [
+      radiotherm
+    ];
+    "rainbird" = ps: with ps; [
+    ]; # missing inputs: pyrainbird
+    "raincloud" = ps: with ps; [
+    ]; # missing inputs: raincloudy
+    "rainforest_eagle" = ps: with ps; [
+      aioeagle
+      ueagle
+    ];
+    "rainmachine" = ps: with ps; [
+      regenmaschine
+    ];
+    "random" = ps: with ps; [
+    ];
+    "raspyrfm" = ps: with ps; [
+    ]; # missing inputs: raspyrfm-client
+    "rdw" = ps: with ps; [
+      vehicle
+    ];
+    "recollect_waste" = ps: with ps; [
+      aiorecollect
+    ];
+    "recorder" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "recswitch" = ps: with ps; [
+    ]; # missing inputs: pyrecswitch
+    "reddit" = ps: with ps; [
+      praw
+    ];
+    "rejseplanen" = ps: with ps; [
+      rjpl
+    ];
+    "remember_the_milk" = ps: with ps; [
+      httplib2
+    ]; # missing inputs: RtmAPI
+    "remote" = ps: with ps; [
+    ];
+    "remote_rpi_gpio" = ps: with ps; [
+    ]; # missing inputs: gpiozero pigpio
+    "renault" = ps: with ps; [
+      renault-api
+    ];
+    "repetier" = ps: with ps; [
+    ]; # missing inputs: pyrepetierng
+    "rest" = ps: with ps; [
+      jsonpath
+      xmltodict
+    ];
+    "rest_command" = ps: with ps; [
+    ];
+    "rflink" = ps: with ps; [
+      rflink
+    ];
+    "rfxtrx" = ps: with ps; [
+      pyrfxtrx
+    ];
+    "ridwell" = ps: with ps; [
+      aioridwell
+    ];
+    "ring" = ps: with ps; [
+      ha-ffmpeg
+      ring-doorbell
+    ];
+    "ripple" = ps: with ps; [
+    ]; # missing inputs: python-ripple-api
+    "risco" = ps: with ps; [
+      pyrisco
+    ];
+    "rituals_perfume_genie" = ps: with ps; [
+      pyrituals
+    ];
+    "rmvtransport" = ps: with ps; [
+      pyrmvtransport
+    ];
+    "rocketchat" = ps: with ps; [
+    ]; # missing inputs: rocketchat-API
+    "roku" = ps: with ps; [
+      rokuecp
+    ];
+    "roomba" = ps: with ps; [
+      roombapy
+    ];
+    "roon" = ps: with ps; [
+      roonapi
+    ];
+    "route53" = ps: with ps; [
+      boto3
+    ];
+    "rova" = ps: with ps; [
+      rova
+    ];
+    "rpi_camera" = ps: with ps; [
+    ];
+    "rpi_gpio" = ps: with ps; [
+    ]; # missing inputs: RPi.GPIO
+    "rpi_power" = ps: with ps; [
+      rpi-bad-power
+    ];
+    "rss_feed_template" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "rtorrent" = ps: with ps; [
+    ];
+    "rtsp_to_webrtc" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      rtsp-to-webrtc
+    ];
+    "ruckus_unleashed" = ps: with ps; [
+      pyruckus
+    ];
+    "russound_rio" = ps: with ps; [
+    ]; # missing inputs: russound_rio
+    "russound_rnet" = ps: with ps; [
+    ]; # missing inputs: russound
+    "sabnzbd" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      netdisco
+      zeroconf
+    ]; # missing inputs: pysabnzbd
+    "safe_mode" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      fnvhash
+      hass-nabucasa
+      home-assistant-frontend
+      lru-dict
+      pillow
+      sqlalchemy
+    ];
+    "saj" = ps: with ps; [
+      pysaj
+    ];
+    "samsungtv" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      getmac
+      ifaddr
+      samsungctl
+      samsungtvws
+      wakeonlan
+      zeroconf
+    ]
+    ++ samsungctl.extras-require.websocket
+    ++ samsungtvws.extras-require.async
+    ++ samsungtvws.extras-require.encrypted;
+    "satel_integra" = ps: with ps; [
+    ]; # missing inputs: satel_integra
+    "scene" = ps: with ps; [
+    ];
+    "schluter" = ps: with ps; [
+    ]; # missing inputs: py-schluter
+    "scrape" = ps: with ps; [
+      beautifulsoup4
+      jsonpath
+      xmltodict
+    ];
+    "screenlogic" = ps: with ps; [
+      screenlogicpy
+    ];
+    "script" = ps: with ps; [
+    ];
+    "scsgate" = ps: with ps; [
+    ]; # missing inputs: scsgate
+    "search" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "season" = ps: with ps; [
+      ephem
+    ];
+    "select" = ps: with ps; [
+    ];
+    "sendgrid" = ps: with ps; [
+      sendgrid
+    ];
+    "sense" = ps: with ps; [
+      sense-energy
+    ];
+    "senseme" = ps: with ps; [
+      aiosenseme
+    ];
+    "sensibo" = ps: with ps; [
+      pysensibo
+    ];
+    "sensor" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "sentry" = ps: with ps; [
+      sentry-sdk
+    ];
+    "serial" = ps: with ps; [
+      pyserial-asyncio
+    ];
+    "serial_pm" = ps: with ps; [
+      pmsensor
+    ];
+    "sesame" = ps: with ps; [
+    ]; # missing inputs: pysesame2
+    "seven_segments" = ps: with ps; [
+      pillow
+    ];
+    "seventeentrack" = ps: with ps; [
+      py17track
+    ];
+    "sharkiq" = ps: with ps; [
+    ]; # missing inputs: sharkiq
+    "shell_command" = ps: with ps; [
+    ];
+    "shelly" = ps: with ps; [
+      aioshelly
+    ];
+    "shiftr" = ps: with ps; [
+      paho-mqtt
+    ];
+    "shodan" = ps: with ps; [
+      shodan
+    ];
+    "shopping_list" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "sia" = ps: with ps; [
+      pysiaalarm
+    ];
+    "sigfox" = ps: with ps; [
+    ];
+    "sighthound" = ps: with ps; [
+      pillow
+      simplehound
+    ];
+    "signal_messenger" = ps: with ps; [
+      pysignalclirestapi
+    ];
+    "simplepush" = ps: with ps; [
+    ]; # missing inputs: simplepush
+    "simplisafe" = ps: with ps; [
+      simplisafe-python
+    ];
+    "simulated" = ps: with ps; [
+    ];
+    "sinch" = ps: with ps; [
+    ]; # missing inputs: clx-sdk-xms
+    "siren" = ps: with ps; [
+    ];
+    "sisyphus" = ps: with ps; [
+    ]; # missing inputs: sisyphus-control
+    "sky_hub" = ps: with ps; [
+      pyskyqhub
+    ];
+    "skybeacon" = ps: with ps; [
+      pygatt
+    ]
+    ++ pygatt.extras-require.GATTTOOL;
+    "skybell" = ps: with ps; [
+      skybellpy
+    ];
+    "slack" = ps: with ps; [
+      slackclient
+    ];
+    "sleepiq" = ps: with ps; [
+      asyncsleepiq
+    ];
+    "slide" = ps: with ps; [
+    ]; # missing inputs: goslide-api
+    "sma" = ps: with ps; [
+      pysma
+    ];
+    "smappee" = ps: with ps; [
+      aiohttp-cors
+      pysmappee
+    ];
+    "smart_meter_texas" = ps: with ps; [
+      smart-meter-texas
+    ];
+    "smartthings" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      pysmartapp
+      pysmartthings
+    ];
+    "smarttub" = ps: with ps; [
+      python-smarttub
+    ];
+    "smarty" = ps: with ps; [
+    ]; # missing inputs: pysmarty
+    "smhi" = ps: with ps; [
+      smhi-pkg
+    ];
+    "sms" = ps: with ps; [
+      python-gammu
+    ];
+    "smtp" = ps: with ps; [
+    ];
+    "snapcast" = ps: with ps; [
+      snapcast
+    ];
+    "snips" = ps: with ps; [
+      aiohttp-cors
+      paho-mqtt
+    ];
+    "snmp" = ps: with ps; [
+      pysnmp
+    ];
+    "solaredge" = ps: with ps; [
+      solaredge
+      stringcase
+    ];
+    "solaredge_local" = ps: with ps; [
+    ]; # missing inputs: solaredge-local
+    "solarlog" = ps: with ps; [
+      sunwatcher
+    ];
+    "solax" = ps: with ps; [
+      solax
+    ];
+    "soma" = ps: with ps; [
+      pysoma
+    ];
+    "somfy" = ps: with ps; [
+      aiohttp-cors
+      pymfy
+    ];
+    "somfy_mylink" = ps: with ps; [
+      somfy-mylink-synergy
+    ];
+    "sonarr" = ps: with ps; [
+      aiopyarr
+    ];
+    "songpal" = ps: with ps; [
+      python-songpal
+    ];
+    "sonos" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      ifaddr
+      plexapi
+      plexauth
+      plexwebsocket
+      soco
+      spotipy
+      zeroconf
+    ];
+    "sony_projector" = ps: with ps; [
+      pysdcp
+    ];
+    "soundtouch" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      libsoundtouch
+      zeroconf
+    ];
+    "spaceapi" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "spc" = ps: with ps; [
+      pyspcwebgw
+    ];
+    "speedtestdotnet" = ps: with ps; [
+      speedtest-cli
+    ];
+    "spider" = ps: with ps; [
+      spiderpy
+    ];
+    "splunk" = ps: with ps; [
+    ]; # missing inputs: hass_splunk
+    "spotify" = ps: with ps; [
+      aiohttp-cors
+      spotipy
+    ];
+    "sql" = ps: with ps; [
+      sqlalchemy
+    ];
+    "squeezebox" = ps: with ps; [
+      pysqueezebox
+    ];
+    "srp_energy" = ps: with ps; [
+      srpenergy
+    ];
+    "ssdp" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      ifaddr
+      zeroconf
+    ];
+    "starline" = ps: with ps; [
+      starline
+    ];
+    "starlingbank" = ps: with ps; [
+    ]; # missing inputs: starlingbank
+    "startca" = ps: with ps; [
+      xmltodict
+    ];
+    "statistics" = ps: with ps; [
+      fnvhash
+      lru-dict
+      sqlalchemy
+    ];
+    "statsd" = ps: with ps; [
+      statsd
+    ];
+    "steam_online" = ps: with ps; [
+    ]; # missing inputs: steamodd
+    "steamist" = ps: with ps; [
+      aiohttp-cors
+      aiosteamist
+      discovery30303
+      ifaddr
+    ];
+    "stiebel_eltron" = ps: with ps; [
+      pymodbus
+    ]; # missing inputs: pystiebeleltron
+    "stookalert" = ps: with ps; [
+      stookalert
+    ];
+    "stream" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      av
+    ];
+    "streamlabswater" = ps: with ps; [
+      streamlabswater
+    ];
+    "stt" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "subaru" = ps: with ps; [
+      subarulink
+    ];
+    "suez_water" = ps: with ps; [
+    ]; # missing inputs: pysuez
+    "sun" = ps: with ps; [
+    ];
+    "supervisord" = ps: with ps; [
+    ];
+    "supla" = ps: with ps; [
+    ]; # missing inputs: asyncpysupla
+    "surepetcare" = ps: with ps; [
+      surepy
+    ];
+    "swiss_hydrological_data" = ps: with ps; [
+      swisshydrodata
+    ];
+    "swiss_public_transport" = ps: with ps; [
+      python-opendata-transport
+    ];
+    "swisscom" = ps: with ps; [
+    ];
+    "switch" = ps: with ps; [
+    ];
+    "switch_as_x" = ps: with ps; [
+    ];
+    "switchbot" = ps: with ps; [
+      pyswitchbot
+    ];
+    "switcher_kis" = ps: with ps; [
+      aioswitcher
+    ];
+    "switchmate" = ps: with ps; [
+    ]; # missing inputs: pySwitchmate
+    "syncthing" = ps: with ps; [
+      aiosyncthing
+    ];
+    "syncthru" = ps: with ps; [
+      pysyncthru
+      url-normalize
+    ];
+    "synology_chat" = ps: with ps; [
+    ];
+    "synology_dsm" = ps: with ps; [
+      py-synologydsm-api
+    ];
+    "synology_srm" = ps: with ps; [
+    ]; # missing inputs: synology-srm
+    "syslog" = ps: with ps; [
+    ];
+    "system_bridge" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      systembridge
+      zeroconf
+    ];
+    "system_health" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "system_log" = ps: with ps; [
+    ];
+    "systemmonitor" = ps: with ps; [
+      psutil
+    ];
+    "tado" = ps: with ps; [
+      python-tado
+    ];
+    "tag" = ps: with ps; [
+    ];
+    "tailscale" = ps: with ps; [
+      tailscale
+    ];
+    "tank_utility" = ps: with ps; [
+    ]; # missing inputs: tank_utility
+    "tankerkoenig" = ps: with ps; [
+      pytankerkoenig
+    ];
+    "tapsaff" = ps: with ps; [
+    ]; # missing inputs: tapsaff
+    "tasmota" = ps: with ps; [
+      aiohttp-cors
+      hatasmota
+      paho-mqtt
+    ];
+    "tautulli" = ps: with ps; [
+      pytautulli
+    ];
+    "tcp" = ps: with ps; [
+    ];
+    "ted5000" = ps: with ps; [
+      xmltodict
+    ];
+    "telegram" = ps: with ps; [
+      pysocks
+      aiohttp-cors
+      python-telegram-bot
+    ];
+    "telegram_bot" = ps: with ps; [
+      pysocks
+      aiohttp-cors
+      python-telegram-bot
+    ];
+    "tellduslive" = ps: with ps; [
+      tellduslive
+    ];
+    "tellstick" = ps: with ps; [
+    ]; # missing inputs: tellcore-net tellcore-py
+    "telnet" = ps: with ps; [
+    ];
+    "temper" = ps: with ps; [
+    ]; # missing inputs: temperusb
+    "template" = ps: with ps; [
+    ];
+    "tensorflow" = ps: with ps; [
+      numpy
+      pillow
+      pycocotools
+      tensorflow
+    ]; # missing inputs: tf-models-official
+    "tesla_wall_connector" = ps: with ps; [
+      tesla-wall-connector
+    ];
+    "tfiac" = ps: with ps; [
+    ]; # missing inputs: pytfiac
+    "thermoworks_smoke" = ps: with ps; [
+      stringcase
+    ]; # missing inputs: thermoworks_smoke
+    "thethingsnetwork" = ps: with ps; [
+    ];
+    "thingspeak" = ps: with ps; [
+    ]; # missing inputs: thingspeak
+    "thinkingcleaner" = ps: with ps; [
+    ]; # missing inputs: pythinkingcleaner
+    "thomson" = ps: with ps; [
+    ];
+    "threshold" = ps: with ps; [
+    ];
+    "tibber" = ps: with ps; [
+      fnvhash
+      lru-dict
+      pytibber
+      sqlalchemy
+    ];
+    "tikteck" = ps: with ps; [
+    ]; # missing inputs: tikteck
+    "tile" = ps: with ps; [
+      pytile
+    ];
+    "time_date" = ps: with ps; [
+    ];
+    "timer" = ps: with ps; [
+    ];
+    "tmb" = ps: with ps; [
+      tmb
+    ];
+    "tod" = ps: with ps; [
+    ];
+    "todoist" = ps: with ps; [
+      todoist
+    ];
+    "tolo" = ps: with ps; [
+      tololib
+    ];
+    "tomato" = ps: with ps; [
+    ];
+    "tomorrowio" = ps: with ps; [
+      pytomorrowio
+    ];
+    "toon" = ps: with ps; [
+      pyturbojpeg
+      aiohttp-cors
+      hass-nabucasa
+      toonapi
+    ];
+    "torque" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "totalconnect" = ps: with ps; [
+      total-connect-client
+    ];
+    "touchline" = ps: with ps; [
+    ]; # missing inputs: pytouchline
+    "tplink" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      python-kasa
+    ];
+    "tplink_lte" = ps: with ps; [
+    ]; # missing inputs: tp-connected
+    "traccar" = ps: with ps; [
+      aiohttp-cors
+      pytraccar
+      stringcase
+    ];
+    "trace" = ps: with ps; [
+    ];
+    "tractive" = ps: with ps; [
+      aiotractive
+    ];
+    "tradfri" = ps: with ps; [
+      pytradfri
+    ]
+    ++ pytradfri.extras-require.async;
+    "trafikverket_train" = ps: with ps; [
+      pytrafikverket
+    ];
+    "trafikverket_weatherstation" = ps: with ps; [
+      pytrafikverket
+    ];
+    "transmission" = ps: with ps; [
+      transmissionrpc
+    ];
+    "transport_nsw" = ps: with ps; [
+      pytransportnsw
+    ];
+    "travisci" = ps: with ps; [
+    ]; # missing inputs: TravisPy
+    "trend" = ps: with ps; [
+      numpy
+    ];
+    "tts" = ps: with ps; [
+      aiohttp-cors
+      mutagen
+    ];
+    "tuya" = ps: with ps; [
+      ha-ffmpeg
+      tuya-iot-py-sdk
+    ];
+    "twentemilieu" = ps: with ps; [
+      twentemilieu
+    ];
+    "twilio" = ps: with ps; [
+      aiohttp-cors
+      twilio
+    ];
+    "twilio_call" = ps: with ps; [
+      aiohttp-cors
+      twilio
+    ];
+    "twilio_sms" = ps: with ps; [
+      aiohttp-cors
+      twilio
+    ];
+    "twinkly" = ps: with ps; [
+      ttls
+    ];
+    "twitch" = ps: with ps; [
+      twitchapi
+    ];
+    "twitter" = ps: with ps; [
+      twitterapi
+    ];
+    "ubus" = ps: with ps; [
+      openwrt-ubus-rpc
+    ];
+    "ue_smart_radio" = ps: with ps; [
+    ];
+    "uk_transport" = ps: with ps; [
+    ];
+    "unifi" = ps: with ps; [
+      aiounifi
+    ];
+    "unifi_direct" = ps: with ps; [
+      pexpect
+    ];
+    "unifiled" = ps: with ps; [
+      unifiled
+    ];
+    "unifiprotect" = ps: with ps; [
+      aiohttp-cors
+    ]; # missing inputs: pyunifiprotect unifi-discovery
+    "universal" = ps: with ps; [
+    ];
+    "upb" = ps: with ps; [
+      upb-lib
+    ];
+    "upc_connect" = ps: with ps; [
+      connect-box
+    ];
+    "upcloud" = ps: with ps; [
+      upcloud-api
+    ];
+    "update" = ps: with ps; [
+    ];
+    "updater" = ps: with ps; [
+    ];
+    "upnp" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      ifaddr
+      zeroconf
+    ];
+    "uptime" = ps: with ps; [
+    ];
+    "uptimerobot" = ps: with ps; [
+      pyuptimerobot
+    ];
+    "usb" = ps: with ps; [
+      aiohttp-cors
+      pyserial
+      pyudev
+    ];
+    "uscis" = ps: with ps; [
+    ]; # missing inputs: uscisstatus
+    "usgs_earthquakes_feed" = ps: with ps; [
+      geojson-client
+    ];
+    "utility_meter" = ps: with ps; [
+      croniter
+    ];
+    "uvc" = ps: with ps; [
+      uvcclient
+    ];
+    "vacuum" = ps: with ps; [
+    ];
+    "vallox" = ps: with ps; [
+    ]; # missing inputs: vallox-websocket-api
+    "vasttrafik" = ps: with ps; [
+    ]; # missing inputs: vtjp
+    "velbus" = ps: with ps; [
+      aiohttp-cors
+      pyserial
+      pyudev
+      velbus-aio
+    ];
+    "velux" = ps: with ps; [
+      pyvlx
+    ];
+    "venstar" = ps: with ps; [
+      venstarcolortouch
+    ];
+    "vera" = ps: with ps; [
+      pyvera
+    ];
+    "verisure" = ps: with ps; [
+      vsure
+    ];
+    "versasense" = ps: with ps; [
+      pyversasense
+    ];
+    "version" = ps: with ps; [
+      pyhaversion
+    ];
+    "vesync" = ps: with ps; [
+      pyvesync
+    ];
+    "viaggiatreno" = ps: with ps; [
+    ];
+    "vicare" = ps: with ps; [
+      pyvicare
+    ];
+    "vilfo" = ps: with ps; [
+      vilfo-api-client
+    ];
+    "vivotek" = ps: with ps; [
+      libpyvivotek
+    ];
+    "vizio" = ps: with ps; [
+      pyvizio
+    ];
+    "vlc" = ps: with ps; [
+      python-vlc
+    ];
+    "vlc_telnet" = ps: with ps; [
+      aiovlc
+    ];
+    "voicerss" = ps: with ps; [
+    ];
+    "volkszaehler" = ps: with ps; [
+      volkszaehler
+    ];
+    "volumio" = ps: with ps; [
+      pyvolumio
+    ];
+    "volvooncall" = ps: with ps; [
+      volvooncall
+    ];
+    "vulcan" = ps: with ps; [
+      vulcan-api
+    ];
+    "vultr" = ps: with ps; [
+      vultr
+    ];
+    "w800rf32" = ps: with ps; [
+    ]; # missing inputs: pyW800rf32
+    "wake_on_lan" = ps: with ps; [
+      wakeonlan
+    ];
+    "wallbox" = ps: with ps; [
+      wallbox
+    ];
+    "waqi" = ps: with ps; [
+      waqiasync
+    ];
+    "water_heater" = ps: with ps; [
+    ];
+    "waterfurnace" = ps: with ps; [
+      waterfurnace
+    ];
+    "watson_iot" = ps: with ps; [
+    ]; # missing inputs: ibmiotf
+    "watson_tts" = ps: with ps; [
+      ibm-watson
+    ];
+    "watttime" = ps: with ps; [
+      aiowatttime
+    ];
+    "waze_travel_time" = ps: with ps; [
+      wazeroutecalculator
+    ];
+    "weather" = ps: with ps; [
+    ];
+    "webhook" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "webostv" = ps: with ps; [
+      aiowebostv
+    ];
+    "websocket_api" = ps: with ps; [
+      aiohttp-cors
+    ];
+    "wemo" = ps: with ps; [
+      pywemo
+    ];
+    "whirlpool" = ps: with ps; [
+      whirlpool-sixth-sense
+    ];
+    "whois" = ps: with ps; [
+      whois
+    ];
+    "wiffi" = ps: with ps; [
+      wiffi
+    ];
+    "wilight" = ps: with ps; [
+      pywilight
+    ];
+    "wirelesstag" = ps: with ps; [
+    ]; # missing inputs: wirelesstagpy
+    "withings" = ps: with ps; [
+      aiohttp-cors
+    ]; # missing inputs: withings-api
+    "wiz" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      pywizlight
+    ];
+    "wled" = ps: with ps; [
+      wled
+    ];
+    "wolflink" = ps: with ps; [
+    ]; # missing inputs: wolf_smartset
+    "workday" = ps: with ps; [
+      holidays
+    ];
+    "worldclock" = ps: with ps; [
+    ];
+    "worldtidesinfo" = ps: with ps; [
+    ];
+    "worxlandroid" = ps: with ps; [
+    ];
+    "wsdot" = ps: with ps; [
+    ];
+    "x10" = ps: with ps; [
+    ];
+    "xbox" = ps: with ps; [
+      aiohttp-cors
+      xbox-webapi
+    ];
+    "xbox_live" = ps: with ps; [
+      xboxapi
+    ];
+    "xeoma" = ps: with ps; [
+      pyxeoma
+    ];
+    "xiaomi" = ps: with ps; [
+      ha-ffmpeg
+    ];
+    "xiaomi_aqara" = ps: with ps; [
+      pyxiaomigateway
+      aiohttp-cors
+      ifaddr
+      netdisco
+      zeroconf
+    ];
+    "xiaomi_miio" = ps: with ps; [
+      construct
+      micloud
+      python-miio
+    ];
+    "xiaomi_tv" = ps: with ps; [
+      pymitv
+    ];
+    "xmpp" = ps: with ps; [
+      slixmpp
+    ];
+    "xs1" = ps: with ps; [
+    ]; # missing inputs: xs1-api-client
+    "yale_smart_alarm" = ps: with ps; [
+      yalesmartalarmclient
+    ];
+    "yamaha" = ps: with ps; [
+      rxv
+    ];
+    "yamaha_musiccast" = ps: with ps; [
+      aiohttp-cors
+      aiomusiccast
+      async-upnp-client
+      ifaddr
+      zeroconf
+    ];
+    "yandex_transport" = ps: with ps; [
+      aioymaps
+    ];
+    "yandextts" = ps: with ps; [
+    ];
+    "yeelight" = ps: with ps; [
+      aiohttp-cors
+      async-upnp-client
+      ifaddr
+      yeelight
+      zeroconf
+    ];
+    "yeelightsunflower" = ps: with ps; [
+    ]; # missing inputs: yeelightsunflower
+    "yi" = ps: with ps; [
+      aioftp
+      ha-ffmpeg
+    ];
+    "youless" = ps: with ps; [
+      youless-api
+    ];
+    "zabbix" = ps: with ps; [
+      py-zabbix
+    ];
+    "zamg" = ps: with ps; [
+    ];
+    "zengge" = ps: with ps; [
+      bluepy
+    ]; # missing inputs: zengge
+    "zeroconf" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      zeroconf
+    ];
+    "zerproc" = ps: with ps; [
+      pyzerproc
+    ];
+    "zestimate" = ps: with ps; [
+      xmltodict
+    ];
+    "zha" = ps: with ps; [
+      aiohttp-cors
+      bellows
+      ifaddr
+      pyserial-asyncio
+      pyserial
+      pyudev
+      zeroconf
+      zha-quirks
+      zigpy-deconz
+      zigpy-xbee
+      zigpy-zigate
+      zigpy-znp
+      zigpy
+    ];
+    "zhong_hong" = ps: with ps; [
+    ]; # missing inputs: zhong_hong_hvac
+    "ziggo_mediabox_xl" = ps: with ps; [
+    ]; # missing inputs: ziggo-mediabox-xl
+    "zodiac" = ps: with ps; [
+    ];
+    "zone" = ps: with ps; [
+    ];
+    "zoneminder" = ps: with ps; [
+      zm-py
+    ];
+    "zwave_js" = ps: with ps; [
+      aiohttp-cors
+      pyserial
+      pyudev
+      zwave-js-server-python
+    ];
+    "zwave_me" = ps: with ps; [
+      aiohttp-cors
+      ifaddr
+      url-normalize
+      zeroconf
+      zwave-me-ws
+    ];
   };
   # components listed in tests/components for which all dependencies are packaged
   supportedComponentsWithTests = [
@@ -1052,6 +3150,7 @@
     "airthings"
     "airtouch4"
     "airvisual"
+    "airzone"
     "alarm_control_panel"
     "alarmdecoder"
     "alert"
@@ -1084,6 +3183,7 @@
     "axis"
     "azure_devops"
     "azure_event_hub"
+    "backup"
     "balboa"
     "bayesian"
     "binary_sensor"
@@ -1132,6 +3232,7 @@
     "debugpy"
     "deconz"
     "default_config"
+    "deluge"
     "demo"
     "denonavr"
     "derivative"
@@ -1145,6 +3246,7 @@
     "diagnostics"
     "dialogflow"
     "directv"
+    "discord"
     "discovery"
     "dlna_dmr"
     "dlna_dms"
@@ -1182,12 +3284,14 @@
     "fan"
     "feedreader"
     "ffmpeg"
+    "fibaro"
     "fido"
     "file"
     "filesize"
     "filter"
     "fireservicerota"
     "firmata"
+    "fivem"
     "fjaraskupan"
     "flic"
     "flick_electric"
@@ -1338,8 +3442,8 @@
     "meraki"
     "met"
     "met_eireann"
+    "meteo_france"
     "meteoclimatic"
-    "mhz19"
     "microsoft_face"
     "microsoft_face_detect"
     "microsoft_face_identify"
@@ -1409,10 +3513,10 @@
     "overkiz"
     "ovo_energy"
     "owntracks"
-    "ozw"
     "p1_monitor"
     "panel_custom"
     "panel_iframe"
+    "peco"
     "persistent_notification"
     "person"
     "philips_js"
@@ -1475,10 +3579,10 @@
     "select"
     "sense"
     "senseme"
+    "sensibo"
     "sensor"
     "sentry"
     "seventeentrack"
-    "sharkiq"
     "shell_command"
     "shelly"
     "shopping_list"
@@ -1494,7 +3598,6 @@
     "sma"
     "smappee"
     "smart_meter_texas"
-    "smarthab"
     "smartthings"
     "smarttub"
     "smhi"
@@ -1524,12 +3627,14 @@
     "statistics"
     "statsd"
     "steamist"
+    "stookalert"
     "stream"
     "stt"
     "subaru"
     "sun"
     "surepetcare"
     "switch"
+    "switch_as_x"
     "switchbot"
     "switcher_kis"
     "syncthing"
@@ -1541,9 +3646,11 @@
     "tado"
     "tag"
     "tailscale"
+    "tankerkoenig"
     "tasmota"
     "tcp"
     "telegram"
+    "telegram_bot"
     "tellduslive"
     "template"
     "tesla_wall_connector"
@@ -1553,8 +3660,10 @@
     "time_date"
     "timer"
     "tod"
+    "todoist"
     "tolo"
     "tomato"
+    "tomorrowio"
     "toon"
     "totalconnect"
     "tplink"
@@ -1562,6 +3671,7 @@
     "trace"
     "tractive"
     "tradfri"
+    "trafikverket_train"
     "trafikverket_weatherstation"
     "transmission"
     "transport_nsw"
@@ -1578,6 +3688,7 @@
     "universal"
     "upb"
     "upcloud"
+    "update"
     "updater"
     "upnp"
     "uptime"
@@ -1599,6 +3710,7 @@
     "vlc_telnet"
     "voicerss"
     "volumio"
+    "vulcan"
     "vultr"
     "wake_on_lan"
     "wallbox"
@@ -1635,7 +3747,7 @@
     "zha"
     "zodiac"
     "zone"
-    "zwave"
     "zwave_js"
+    "zwave_me"
   ];
 }
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index ce72bb0f8ed9d..b29f48310d05f 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -50,6 +50,9 @@ let
       hass-nabucasa = super.hass-nabucasa.overridePythonAttrs (oldAttrs: {
         doCheck = false; # requires aiohttp>=1.0.0
       });
+      rtsp-to-webrtc = super.rtsp-to-webrtc.overridePythonAttrs (oldAttrs: {
+        doCheck = false; # requires pytest-aiohttp>=1.0.0
+      });
       snitun = super.snitun.overridePythonAttrs (oldAttrs: {
         doCheck = false; # requires aiohttp>=1.0.0
       });
@@ -165,7 +168,7 @@ let
   extraPackagesFile = writeText "home-assistant-packages" (lib.concatMapStringsSep "\n" (pkg: pkg.pname) extraBuildInputs);
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2022.3.8";
+  hassVersion = "2022.4.7";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -183,7 +186,7 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = version;
-    hash = "sha256-FGsMFt/EEokaast81iiwKHqSsB1E4Si5ejTw+MV1MnQ=";
+    hash = "sha256-1m3t+AeHyuEyu3gT8P37A+L28mBdNKGmycU6eNOyb4M=";
   };
 
   # leave this in, so users don't have to constantly update their downstream patch handling
@@ -203,8 +206,8 @@ in python.pkgs.buildPythonApplication rec {
       "bcrypt"
       "cryptography"
       "httpx"
+      "jinja2"
       "pip"
-      "PyJWT"
       "requests"
       "yarl"
     ];
@@ -280,8 +283,6 @@ in python.pkgs.buildPythonApplication rec {
   ];
 
   pytestFlagsArray = [
-    # parallelize test run
-    "--numprocesses $NIX_BUILD_CORES"
     # assign tests grouped by file to workers
     "--dist loadfile"
     # retry racy tests that end in "RuntimeError: Event loop is closed"
@@ -307,6 +308,8 @@ in python.pkgs.buildPythonApplication rec {
     "test_merge"
     # Tests are flaky
     "test_config_platform_valid"
+    # Test requires pylint>=2.13.0
+    "test_invalid_discovery_info"
   ];
 
   preCheck = ''
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 9f13a6652d7de..fb708313072ce 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,7 +4,7 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20220301.2";
+  version = "20220405.0";
   format = "wheel";
 
   src = fetchPypi {
@@ -12,7 +12,7 @@ buildPythonPackage rec {
     pname = "home_assistant_frontend";
     dist = "py3";
     python = "py3";
-    sha256 = "sha256-iIywlG9ATLV/+bHtOQFx4mRwToelpPdE3DOKSp4yxN0=";
+    sha256 = "sha256-M024uJJVhVSoGhJTc7d8NKItw0sAOGFuCsZNUe//vBg=";
   };
 
   # there is nothing to strip in this package
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index 0e3d5d5553e7b..28d8331cfe437 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -37,6 +37,7 @@ PKG_SET = "home-assistant.python.pkgs"
 # If some requirements are matched by multiple or no Python packages, the
 # following can be used to choose the correct one
 PKG_PREFERENCES = {
+    "ha-av": "av",
     "youtube_dl": "youtube-dl-light",
     "tensorflow": "tensorflow",
     "fiblary3": "fiblary3-fork", # https://github.com/home-assistant/core/issues/66466
@@ -98,13 +99,37 @@ def get_reqs(components: Dict[str, Dict[str, Any]], component: str, processed: S
     return requirements
 
 
+def repository_root() -> str:
+    return os.path.abspath(sys.argv[0] + "/../../../..")
+
+
+# For a package attribute and and an extra, check if the package exposes it via passthru.extras-require
+def has_extra(package: str, extra: str):
+    cmd = [
+        "nix-instantiate",
+        repository_root(),
+        "-A",
+        f"{package}.extras-require.{extra}",
+    ]
+    try:
+        subprocess.run(
+            cmd,
+            check=True,
+            stdout=subprocess.DEVNULL,
+            stderr=subprocess.DEVNULL,
+        )
+    except subprocess.CalledProcessError:
+        return False
+    return True
+
+
 def dump_packages() -> Dict[str, Dict[str, str]]:
     # Store a JSON dump of Nixpkgs' python3Packages
     output = subprocess.check_output(
         [
             "nix-env",
             "-f",
-            os.path.dirname(sys.argv[0]) + "/../../..",
+            repository_root(),
             "-qa",
             "-A",
             PKG_SET,
@@ -158,6 +183,7 @@ def main() -> None:
     outdated = {}
     for component in sorted(components.keys()):
         attr_paths = []
+        extra_attrs = []
         missing_reqs = []
         reqs = sorted(get_reqs(components, component, set()))
         for req in reqs:
@@ -165,9 +191,10 @@ def main() -> None:
             # Therefore, if there's a "#" in the line, only take the part after it
             req = req[req.find("#") + 1 :]
             name, required_version = req.split("==", maxsplit=1)
-            # Remove extra_require from name, e.g. samsungctl instead of
-            # samsungctl[websocket]
+            # Split package name and extra requires
+            extras = []
             if name.endswith("]"):
+                extras = name[name.find("[")+1:name.find("]")].split(",")
                 name = name[:name.find("[")]
             attr_path = name_to_attr_path(name, packages)
             if our_version := get_pkg_version(name, packages):
@@ -178,11 +205,20 @@ def main() -> None:
                     }
             if attr_path is not None:
                 # Add attribute path without "python3Packages." prefix
-                attr_paths.append(attr_path[len(PKG_SET + ".") :])
+                pname = attr_path[len(PKG_SET + "."):]
+                attr_paths.append(pname)
+                for extra in extras:
+                    # Check if package advertises extra requirements
+                    extra_attr = f"{pname}.extras-require.{extra}"
+                    if has_extra(attr_path, extra):
+                        extra_attrs.append(extra_attr)
+                    else:
+                        missing_reqs.append(extra_attr)
+
             else:
                 missing_reqs.append(name)
         else:
-            build_inputs[component] = (attr_paths, missing_reqs)
+            build_inputs[component] = (attr_paths, extra_attrs, missing_reqs)
 
     with open(os.path.dirname(sys.argv[0]) + "/component-packages.nix", "w") as f:
         f.write("# Generated by parse-requirements.py\n")
@@ -191,11 +227,14 @@ def main() -> None:
         f.write(f'  version = "{version}";\n')
         f.write("  components = {\n")
         for component, deps in build_inputs.items():
-            available, missing = deps
+            available, extras, missing = deps
             f.write(f'    "{component}" = ps: with ps; [')
             if available:
-                f.write(" " + " ".join(available))
-            f.write(" ];")
+                f.write("\n      " + "\n      ".join(available))
+            f.write("\n    ]")
+            if extras:
+                f.write("\n    ++ " + "\n    ++ ".join(extras))
+            f.write(";")
             if len(missing) > 0:
                 f.write(f" # missing inputs: {' '.join(missing)}")
             f.write("\n")
@@ -203,13 +242,13 @@ def main() -> None:
         f.write("  # components listed in tests/components for which all dependencies are packaged\n")
         f.write("  supportedComponentsWithTests = [\n")
         for component, deps in build_inputs.items():
-            available, missing = deps
+            available, extras, missing = deps
             if len(missing) == 0 and component in components_with_tests:
                 f.write(f'    "{component}"' + "\n")
         f.write("  ];\n")
         f.write("}\n")
 
-    supported_components = reduce(lambda n, c: n + (build_inputs[c][1] == []),
+    supported_components = reduce(lambda n, c: n + (build_inputs[c][2] == []),
                                   components.keys(), 0)
     total_components = len(components)
     print(f"{supported_components} / {total_components} components supported, "
diff --git a/pkgs/servers/home-assistant/tests.nix b/pkgs/servers/home-assistant/tests.nix
index ae2d91b933f96..26f67e69a546f 100644
--- a/pkgs/servers/home-assistant/tests.nix
+++ b/pkgs/servers/home-assistant/tests.nix
@@ -5,15 +5,16 @@
 let
   # some components' tests have additional dependencies
   extraCheckInputs = with home-assistant.python.pkgs; {
-    alexa = [ ha-av ];
-    camera = [ ha-av ];
+    alexa = [ av ];
+    camera = [ av ];
     cloud = [ mutagen ];
     config = [ pydispatcher ];
-    generic = [ ha-av ];
+    generic = [ av ];
     google_translate = [ mutagen ];
     lovelace = [ PyChromecast ];
-    nest = [ ha-av ];
+    nest = [ av ];
     onboarding = [ pymetno radios rpi-bad-power ];
+    tomorrowio = [ pyclimacell ];
     version = [ aioaseko ];
     voicerss = [ mutagen ];
     yandextts = [ mutagen ];
@@ -56,7 +57,11 @@ in lib.listToAttrs (map (component: lib.nameValuePair component (
     disabledTests = old.disabledTests ++ extraDisabledTests.${component} or [];
     disabledTestPaths = old.disabledTestPaths ++ extraDisabledTestPaths.${component} or [ ];
 
+    # components are more often racy than the core
+    dontUsePytestXdist = true;
+
     pytestFlagsArray = lib.remove "tests" old.pytestFlagsArray
+      ++ [ "--numprocesses=4" ]
       ++ extraPytestFlagsArray.${component} or [ ]
       ++ [ "tests/components/${component}" ];
 
@@ -67,8 +72,11 @@ in lib.listToAttrs (map (component: lib.nameValuePair component (
     meta = old.meta // {
       broken = lib.elem component [
         "airtouch4"
+        "bsblan"
         "dnsip"
-        "zwave"
+        "efergy"
+        "ssdp"
+        "subaru"
       ];
       # upstream only tests on Linux, so do we.
       platforms = lib.platforms.linux;
diff --git a/pkgs/servers/hqplayerd/default.nix b/pkgs/servers/hqplayerd/default.nix
index 7b65a789af893..e2b3abc6c0a60 100644
--- a/pkgs/servers/hqplayerd/default.nix
+++ b/pkgs/servers/hqplayerd/default.nix
@@ -21,36 +21,13 @@
 , meson
 , ninja
 }:
-let
-  # hqplayerd relies on some package versions available for the fc34 release,
-  # which has out-of-date pkgs compared to nixpkgs. The following drvs
-  # can/should be removed when the fc35 hqplayer rpm is made available.
-  gupnp_1_2 = gupnp.overrideAttrs (old: rec {
-    pname = "gupnp";
-    version = "1.2.7";
-    src = fetchurl {
-      url = "mirror://gnome/sources/gupnp/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-      sha256 = "sha256-hEEnbxr9AXbm9ZUCajpQfu0YCav6BAJrrT8hYis1I+w=";
-    };
-  });
-
-  gupnp-av_0_12 = gupnp-av.overrideAttrs (old: rec {
-    pname = "gupnp-av";
-    version = "0.12.11";
-    src = fetchurl {
-      url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-      sha256 = "sha256-aJ3PFJKriZHa6ikTZaMlSKd9GiKU2FszYitVzKnOb9w=";
-    };
-    nativeBuildInputs = lib.subtractLists [ meson ninja ] old.nativeBuildInputs;
-  });
-in
 stdenv.mkDerivation rec {
   pname = "hqplayerd";
   version = "4.30.3-87";
 
   src = fetchurl {
-    url = "https://www.signalyst.eu/bins/${pname}/fc34/${pname}-${version}sse42.fc34.x86_64.rpm";
-    hash = "sha256-RX9KI+4HGDUJ3y3An1zTMJTz28Of2Awn7COeX6EQc38=";
+    url = "https://www.signalyst.eu/bins/${pname}/fc35/${pname}-${version}.fc35.x86_64.rpm";
+    hash = "sha256-fEze4aScWDwHDTXU0GatdopQf6FWcywWCGhR/7zXK7A=";
   };
 
   unpackPhase = ''
@@ -66,8 +43,8 @@ stdenv.mkDerivation rec {
     gcc11.cc.lib
     gnome.rygel
     gssdp
-    gupnp_1_2
-    gupnp-av_0_12
+    gupnp
+    gupnp-av
     lame
     libgmpris
     llvmPackages_10.openmp
@@ -130,6 +107,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.signalyst.com/custom.html";
     description = "High-end upsampling multichannel software embedded HD-audio player";
     license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ lovesegfault ];
   };
 }
diff --git a/pkgs/servers/http/envoy/default.nix b/pkgs/servers/http/envoy/default.nix
index 0c5038898ea3f..5a85c2c1ab64b 100644
--- a/pkgs/servers/http/envoy/default.nix
+++ b/pkgs/servers/http/envoy/default.nix
@@ -74,7 +74,10 @@ buildBazelPackage rec {
   ];
 
   fetchAttrs = {
-    sha256 = "0f7mls2zrpjjvbz6pgkzrvr55bv05xn2l76j9i1r0cf367qqfkz8";
+    sha256 = {
+      x86_64-linux = "0f7mls2zrpjjvbz6pgkzrvr55bv05xn2l76j9i1r0cf367qqfkz8";
+      aarch64-linux = "1l3ls47z20xrw6x9qps5jm7vq50xb1acv9gczfdrj9hw6jybgwgg";
+    }.${stdenv.system} or (throw "unsupported system ${stdenv.system}");
     dontUseCmakeConfigure = true;
     dontUseGnConfigure = true;
     preInstall = ''
@@ -124,11 +127,13 @@ buildBazelPackage rec {
     "--noexperimental_strict_action_env"
     "--cxxopt=-Wno-maybe-uninitialized"
     "--cxxopt=-Wno-uninitialized"
+    "--cxxopt=-Wno-error=type-limits"
   ];
 
   passthru.tests = {
-    # No tests for Envoy itself (yet), but it's tested as a core component of Pomerium.
-    inherit (nixosTests) pomerium;
+    envoy = nixosTests.envoy;
+    # tested as a core component of Pomerium
+    pomerium = nixosTests.pomerium;
   };
 
   meta = with lib; {
@@ -136,6 +141,6 @@ buildBazelPackage rec {
     description = "Cloud-native edge and service proxy";
     license = licenses.asl20;
     maintainers = with maintainers; [ lukegb ];
-    platforms = [ "x86_64-linux" ];  # Other platforms will generate different fetch hashes.
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
   };
 }
diff --git a/pkgs/servers/http/gitlab-pages/default.nix b/pkgs/servers/http/gitlab-pages/default.nix
index a907de3e73fe2..9a5f03e4c0b9a 100644
--- a/pkgs/servers/http/gitlab-pages/default.nix
+++ b/pkgs/servers/http/gitlab-pages/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "gitlab-pages";
-  version = "1.51.0";
+  version = "1.54.0";
 
   src = fetchFromGitLab {
     owner = "gitlab-org";
     repo = "gitlab-pages";
     rev = "v${version}";
-    sha256 = "sha256-TOHD3SEKz5aVG4ikqls4sYMa+FnP8YaCoVAl+HRG9Sc=";
+    sha256 = "sha256-XPIUDHDoxuRiWar2P6dzPWY7YRn1jDU69TL3ZmGx1AM=";
   };
 
-  vendorSha256 = "sha256-0Vp+dVDMLl52dKLj1v+mgg+odu5DNfrANBzTztVymh8=";
+  vendorSha256 = "sha256-knW8IiuNGyirHCs8LR3VwWG4hxhWr9SmFzxjdbQ9l+k=";
   subPackages = [ "." ];
 
   meta = with lib; {
diff --git a/pkgs/servers/http/micro-httpd/default.nix b/pkgs/servers/http/micro-httpd/default.nix
index 01ff91ebda6ba..b4a555910545d 100644
--- a/pkgs/servers/http/micro-httpd/default.nix
+++ b/pkgs/servers/http/micro-httpd/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation {
     license     = licenses.bsd2;
     platforms   = platforms.unix;
     maintainers = with maintainers; [ copumpkin ];
+    mainProgram = "micro_httpd";
   };
 }
 
diff --git a/pkgs/servers/http/nginx/generic.nix b/pkgs/servers/http/nginx/generic.nix
index fa711d1dff4f0..f6b91d77511ec 100644
--- a/pkgs/servers/http/nginx/generic.nix
+++ b/pkgs/servers/http/nginx/generic.nix
@@ -18,6 +18,7 @@
 , sha256 ? null # when not specifying src
 , configureFlags ? []
 , buildInputs ? []
+, extraPatches ? []
 , fixPatch ? p: p
 , preConfigure ? ""
 , postInstall ? null
@@ -106,6 +107,9 @@ stdenv.mkDerivation {
   NIX_CFLAGS_COMPILE = toString ([
     "-I${libxml2.dev}/include/libxml2"
     "-Wno-error=implicit-fallthrough"
+  ] ++ optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "11") [
+    # fix build vts module on gcc11
+    "-Wno-error=stringop-overread"
   ] ++ optional stdenv.isDarwin "-Wno-error=deprecated-declarations");
 
   configurePlatforms = [];
@@ -134,7 +138,8 @@ stdenv.mkDerivation {
       url = "https://raw.githubusercontent.com/openwrt/packages/c057dfb09c7027287c7862afab965a4cd95293a3/net/nginx/patches/103-sys_nerr.patch";
       sha256 = "0s497x6mkz947aw29wdy073k8dyjq8j99lax1a1mzpikzr4rxlmd";
     })
-  ] ++ mapModules "patches");
+  ] ++ mapModules "patches")
+    ++ extraPatches;
 
   hardeningEnable = optional (!stdenv.isDarwin) "pie";
 
diff --git a/pkgs/servers/http/nginx/stable.nix b/pkgs/servers/http/nginx/stable.nix
index 5db7c65daa404..c219b01fbb31c 100644
--- a/pkgs/servers/http/nginx/stable.nix
+++ b/pkgs/servers/http/nginx/stable.nix
@@ -1,6 +1,13 @@
-{ callPackage, ... } @ args:
+{ callPackage, fetchpatch, ... } @ args:
 
 callPackage ./generic.nix args {
   version = "1.20.2";
   sha256 = "0hjsyjzd35qyw49w210f67g678kvzinw4kg1acb0l6c2fxspd24m";
+  extraPatches = [
+    (fetchpatch {
+      name = "CVE-2021-3618.patch";
+      url = "https://github.com/nginx/nginx/commit/173f16f736c10eae46cd15dd861b04b82d91a37a.patch";
+      sha256 = "0cnxmbkp6ip61w7y1ihhnvziiwzz3p3wi2vpi5c7yaj5m964k5db";
+    })
+  ];
 }
diff --git a/pkgs/servers/http/pomerium/default.nix b/pkgs/servers/http/pomerium/default.nix
index 8a5580d5d0dba..b6de805a619bd 100644
--- a/pkgs/servers/http/pomerium/default.nix
+++ b/pkgs/servers/http/pomerium/default.nix
@@ -12,12 +12,12 @@ let
 in
 buildGoModule rec {
   pname = "pomerium";
-  version = "0.17.0";
+  version = "0.17.1";
   src = fetchFromGitHub {
     owner = "pomerium";
     repo = "pomerium";
     rev = "v${version}";
-    hash = "sha256:1hv76i6k9f0kp527nxlxqhklsvkh2cmfnqlszmlk2hxij31qnf8q";
+    hash = "sha256:0b9mdzyfn7c6gwgslqk787yyrrcmdjf3282vx2zvhcr3psz0xqwx";
   };
 
   vendorSha256 = "sha256:1cq4m5a7z64yg3v1c68d15ilw78il6p53vaqzxgn338zjggr3kig";
@@ -86,6 +86,6 @@ buildGoModule rec {
     description = "Authenticating reverse proxy";
     license = licenses.asl20;
     maintainers = with maintainers; [ lukegb ];
-    platforms = [ "x86_64-linux" ];  # Envoy derivation is x86_64-linux only.
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
   };
 }
diff --git a/pkgs/servers/http/trafficserver/default.nix b/pkgs/servers/http/trafficserver/default.nix
index 9058a4cbda75d..06d640a5bc00f 100644
--- a/pkgs/servers/http/trafficserver/default.nix
+++ b/pkgs/servers/http/trafficserver/default.nix
@@ -13,6 +13,7 @@
 , python3
 , xz
 , zlib
+, catch2
 # recommended dependencies
 , withHwloc ? true
 , hwloc
@@ -113,6 +114,8 @@ stdenv.mkDerivation rec {
       tools/check-unused-dependencies
 
     substituteInPlace configure --replace '/usr/bin/file' '${file}/bin/file'
+
+    cp ${catch2}/include/catch2/catch.hpp tests/include/catch.hpp
   '' + lib.optionalString stdenv.isLinux ''
     substituteInPlace configure \
       --replace '/usr/include/linux' '${linuxHeaders}/include/linux'
diff --git a/pkgs/servers/http/webfs/default.nix b/pkgs/servers/http/webfs/default.nix
index 1281dee22be3e..812f5a0d00f5a 100644
--- a/pkgs/servers/http/webfs/default.nix
+++ b/pkgs/servers/http/webfs/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license     = licenses.gpl2;
     platforms   = platforms.all;
     maintainers = with maintainers; [ zimbatm ];
+    mainProgram = "webfsd";
   };
 }
diff --git a/pkgs/servers/hydron/default.nix b/pkgs/servers/hydron/default.nix
index ba163a719b10c..03236b4108242 100644
--- a/pkgs/servers/hydron/default.nix
+++ b/pkgs/servers/hydron/default.nix
@@ -2,26 +2,24 @@
 
 buildGoModule rec {
   pname = "hydron";
-  version = "3.0.4";
+  version = "3.3.5";
 
   src = fetchFromGitHub {
     owner = "bakape";
     repo = "hydron";
     rev = "v${version}";
-    sha256 = "BfMkKwz7ITEnAIMGUHlBH/Dn9yLjWKoqFWupPo1s2cs=";
+    sha256 = "0c958dsw5pq9z8n1b9q9j8y6vgiqf6mmlsf77ncb7yrlilhbrz6s";
   };
 
-  nativeBuildInputs = [ pkg-config ];
-
-  vendorSha256 = "sha256-hvmIOCqVZTfV7EnkDUWiChynGkwTpHClMbW4LpbdAgo=";
+  vendorSha256 = "0cc8ar8p7lgg6rj76vhfp6bzrxyn5yaqjwj8i1bn0zp6sj6zcfam";
   proxyVendor = true;
-
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ffmpeg ];
 
   meta = with lib; {
     homepage = "https://github.com/bakape/hydron";
     description = "High performance media tagger and organizer";
     license = licenses.lgpl3Plus;
-    maintainers = with maintainers; [ chiiruno ];
+    maintainers = with maintainers; [ Madouura ];
   };
 }
diff --git a/pkgs/servers/icingaweb2/default.nix b/pkgs/servers/icingaweb2/default.nix
index 75282ad15c4f0..651c739886822 100644
--- a/pkgs/servers/icingaweb2/default.nix
+++ b/pkgs/servers/icingaweb2/default.nix
@@ -2,13 +2,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "icingaweb2";
-  version = "2.10.0";
+  version = "2.10.1";
 
   src = fetchFromGitHub {
     owner = "Icinga";
     repo = "icingaweb2";
     rev = "v${version}";
-    sha256 = "sha256:0fhhq6mzpwj3dh6w583n4sngshf15dm8zgbli5cacy7jkzmsz0wn";
+    sha256 = "sha256-X4RaAJjhUnSALJyFYiwagN3cHyW+GyB5MPkW7l+Zv10=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/imgproxy/default.nix b/pkgs/servers/imgproxy/default.nix
index d35c53de9afe2..a46efc07fa831 100644
--- a/pkgs/servers/imgproxy/default.nix
+++ b/pkgs/servers/imgproxy/default.nix
@@ -14,8 +14,6 @@ buildGoModule rec {
 
   vendorSha256 = "sha256-Rp0vTtpdKpYg/7UjX73Qwxu6dOqDr24nqp41fKN1IYw=";
 
-  doCheck = false;
-
   nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ gobject-introspection vips ]
diff --git a/pkgs/servers/irker/default.nix b/pkgs/servers/irker/default.nix
index 0aac945ad0063..28f6b60cf76b3 100644
--- a/pkgs/servers/irker/default.nix
+++ b/pkgs/servers/irker/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation {
     homepage = "https://gitlab.com/esr/irker";
     license = licenses.bsd2;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "irkerd";
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/servers/jellyfin/default.nix b/pkgs/servers/jellyfin/default.nix
index 814d8eecdc385..55644a5a14525 100644
--- a/pkgs/servers/jellyfin/default.nix
+++ b/pkgs/servers/jellyfin/default.nix
@@ -116,5 +116,6 @@ stdenv.mkDerivation rec {
     # https://github.com/jellyfin/jellyfin/issues/610#issuecomment-537625510
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ nyanloutre minijackson purcell jojosch ];
+    platforms = dotnet-aspnetcore.meta.platforms;
   };
 }
diff --git a/pkgs/servers/jellyfin/node-composition.nix b/pkgs/servers/jellyfin/node-composition.nix
index fc96c12c5b259..b678702d12c88 100644
--- a/pkgs/servers/jellyfin/node-composition.nix
+++ b/pkgs/servers/jellyfin/node-composition.nix
@@ -2,7 +2,7 @@
 
 {pkgs ? import <nixpkgs> {
     inherit system;
-  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-14_x"}:
 
 let
   nodeEnv = import ../../development/node-packages/node-env.nix {
diff --git a/pkgs/servers/jellyfin/node-deps.nix b/pkgs/servers/jellyfin/node-deps.nix
index 2a1b07a662e24..9b2a208ce8749 100644
--- a/pkgs/servers/jellyfin/node-deps.nix
+++ b/pkgs/servers/jellyfin/node-deps.nix
@@ -4,13 +4,22 @@
 
 let
   sources = {
-    "@apideck/better-ajv-errors-0.2.5" = {
+    "@ampproject/remapping-2.1.2" = {
+      name = "_at_ampproject_slash_remapping";
+      packageName = "@ampproject/remapping";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz";
+        sha512 = "hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==";
+      };
+    };
+    "@apideck/better-ajv-errors-0.3.3" = {
       name = "_at_apideck_slash_better-ajv-errors";
       packageName = "@apideck/better-ajv-errors";
-      version = "0.2.5";
+      version = "0.3.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.2.5.tgz";
-        sha512 = "Pm1fAqCT8OEfBVLddU3fWZ/URWpGGhkvlsBIgn9Y2jJlcNumo0gNzPsQswDJTiA8HcKpCjOhWQOgkA9kXR4Ghg==";
+        url = "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.3.tgz";
+        sha512 = "9o+HO2MbJhJHjDYZaDxJmSDckvDpiuItEsrIShV0DXeCshXWRHhqYyU/PKHMkuClOmFnZhRd6wzv4vpDu/dRKg==";
       };
     };
     "@babel/code-frame-7.12.11" = {
@@ -22,436 +31,454 @@ let
         sha512 = "Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==";
       };
     };
-    "@babel/code-frame-7.14.5" = {
+    "@babel/code-frame-7.16.7" = {
       name = "_at_babel_slash_code-frame";
       packageName = "@babel/code-frame";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz";
-        sha512 = "9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==";
+        url = "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz";
+        sha512 = "iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==";
       };
     };
-    "@babel/compat-data-7.15.0" = {
+    "@babel/compat-data-7.17.7" = {
       name = "_at_babel_slash_compat-data";
       packageName = "@babel/compat-data";
-      version = "7.15.0";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz";
-        sha512 = "0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==";
+        url = "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz";
+        sha512 = "p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==";
       };
     };
-    "@babel/core-7.15.5" = {
+    "@babel/core-7.17.8" = {
       name = "_at_babel_slash_core";
       packageName = "@babel/core";
-      version = "7.15.5";
+      version = "7.17.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz";
-        sha512 = "pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==";
+        url = "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz";
+        sha512 = "OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==";
       };
     };
-    "@babel/eslint-parser-7.15.4" = {
+    "@babel/eslint-parser-7.17.0" = {
       name = "_at_babel_slash_eslint-parser";
       packageName = "@babel/eslint-parser";
-      version = "7.15.4";
+      version = "7.17.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.15.4.tgz";
-        sha512 = "hPMIAmGNbmQzXJIo2P43Zj9UhRmGev5f9nqdBFOWNGDGh6XKmjby79woBvg6y0Jur6yRfQBneDbUQ8ZVc1krFw==";
+        url = "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz";
+        sha512 = "PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==";
       };
     };
-    "@babel/eslint-plugin-7.14.5" = {
+    "@babel/eslint-plugin-7.17.7" = {
       name = "_at_babel_slash_eslint-plugin";
       packageName = "@babel/eslint-plugin";
-      version = "7.14.5";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/eslint-plugin/-/eslint-plugin-7.14.5.tgz";
-        sha512 = "nzt/YMnOOIRikvSn2hk9+W2omgJBy6U8TN0R+WTTmqapA+HnZTuviZaketdTE9W7/k/+E/DfZlt1ey1NSE39pg==";
+        url = "https://registry.npmjs.org/@babel/eslint-plugin/-/eslint-plugin-7.17.7.tgz";
+        sha512 = "JATUoJJXSgwI0T8juxWYtK1JSgoLpIGUsCHIv+NMXcUDA2vIe6nvAHR9vnuJgs/P1hOFw7vPwibixzfqBBLIVw==";
       };
     };
-    "@babel/generator-7.15.4" = {
+    "@babel/generator-7.17.7" = {
       name = "_at_babel_slash_generator";
       packageName = "@babel/generator";
-      version = "7.15.4";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz";
-        sha512 = "d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==";
+        url = "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz";
+        sha512 = "oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==";
       };
     };
-    "@babel/helper-annotate-as-pure-7.15.4" = {
+    "@babel/helper-annotate-as-pure-7.16.7" = {
       name = "_at_babel_slash_helper-annotate-as-pure";
       packageName = "@babel/helper-annotate-as-pure";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz";
-        sha512 = "QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==";
+        url = "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz";
+        sha512 = "s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==";
       };
     };
-    "@babel/helper-builder-binary-assignment-operator-visitor-7.15.4" = {
+    "@babel/helper-builder-binary-assignment-operator-visitor-7.16.7" = {
       name = "_at_babel_slash_helper-builder-binary-assignment-operator-visitor";
       packageName = "@babel/helper-builder-binary-assignment-operator-visitor";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz";
-        sha512 = "P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==";
+        url = "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz";
+        sha512 = "C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==";
       };
     };
-    "@babel/helper-compilation-targets-7.15.4" = {
+    "@babel/helper-compilation-targets-7.17.7" = {
       name = "_at_babel_slash_helper-compilation-targets";
       packageName = "@babel/helper-compilation-targets";
-      version = "7.15.4";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz";
-        sha512 = "rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==";
+        url = "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz";
+        sha512 = "UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==";
       };
     };
-    "@babel/helper-create-class-features-plugin-7.15.4" = {
+    "@babel/helper-create-class-features-plugin-7.17.6" = {
       name = "_at_babel_slash_helper-create-class-features-plugin";
       packageName = "@babel/helper-create-class-features-plugin";
-      version = "7.15.4";
+      version = "7.17.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz";
-        sha512 = "7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==";
+        url = "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz";
+        sha512 = "SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==";
       };
     };
-    "@babel/helper-create-regexp-features-plugin-7.14.5" = {
+    "@babel/helper-create-regexp-features-plugin-7.17.0" = {
       name = "_at_babel_slash_helper-create-regexp-features-plugin";
       packageName = "@babel/helper-create-regexp-features-plugin";
-      version = "7.14.5";
+      version = "7.17.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz";
-        sha512 = "TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==";
+        url = "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz";
+        sha512 = "awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==";
       };
     };
-    "@babel/helper-define-polyfill-provider-0.2.3" = {
+    "@babel/helper-define-polyfill-provider-0.3.1" = {
       name = "_at_babel_slash_helper-define-polyfill-provider";
       packageName = "@babel/helper-define-polyfill-provider";
-      version = "0.2.3";
+      version = "0.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz";
+        sha512 = "J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==";
+      };
+    };
+    "@babel/helper-environment-visitor-7.16.7" = {
+      name = "_at_babel_slash_helper-environment-visitor";
+      packageName = "@babel/helper-environment-visitor";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz";
-        sha512 = "RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==";
+        url = "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz";
+        sha512 = "SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==";
       };
     };
-    "@babel/helper-explode-assignable-expression-7.15.4" = {
+    "@babel/helper-explode-assignable-expression-7.16.7" = {
       name = "_at_babel_slash_helper-explode-assignable-expression";
       packageName = "@babel/helper-explode-assignable-expression";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz";
-        sha512 = "J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==";
+        url = "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz";
+        sha512 = "KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==";
       };
     };
-    "@babel/helper-function-name-7.15.4" = {
+    "@babel/helper-function-name-7.16.7" = {
       name = "_at_babel_slash_helper-function-name";
       packageName = "@babel/helper-function-name";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz";
-        sha512 = "Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==";
+        url = "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz";
+        sha512 = "QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==";
       };
     };
-    "@babel/helper-get-function-arity-7.15.4" = {
+    "@babel/helper-get-function-arity-7.16.7" = {
       name = "_at_babel_slash_helper-get-function-arity";
       packageName = "@babel/helper-get-function-arity";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz";
-        sha512 = "1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==";
+        url = "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz";
+        sha512 = "flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==";
       };
     };
-    "@babel/helper-hoist-variables-7.15.4" = {
+    "@babel/helper-hoist-variables-7.16.7" = {
       name = "_at_babel_slash_helper-hoist-variables";
       packageName = "@babel/helper-hoist-variables";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz";
-        sha512 = "VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==";
+        url = "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz";
+        sha512 = "m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==";
       };
     };
-    "@babel/helper-member-expression-to-functions-7.15.4" = {
+    "@babel/helper-member-expression-to-functions-7.17.7" = {
       name = "_at_babel_slash_helper-member-expression-to-functions";
       packageName = "@babel/helper-member-expression-to-functions";
-      version = "7.15.4";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz";
-        sha512 = "cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==";
+        url = "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz";
+        sha512 = "thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==";
       };
     };
-    "@babel/helper-module-imports-7.15.4" = {
+    "@babel/helper-module-imports-7.16.7" = {
       name = "_at_babel_slash_helper-module-imports";
       packageName = "@babel/helper-module-imports";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz";
-        sha512 = "jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==";
+        url = "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz";
+        sha512 = "LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==";
       };
     };
-    "@babel/helper-module-transforms-7.15.4" = {
+    "@babel/helper-module-transforms-7.17.7" = {
       name = "_at_babel_slash_helper-module-transforms";
       packageName = "@babel/helper-module-transforms";
-      version = "7.15.4";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz";
-        sha512 = "9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==";
+        url = "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz";
+        sha512 = "VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==";
       };
     };
-    "@babel/helper-optimise-call-expression-7.15.4" = {
+    "@babel/helper-optimise-call-expression-7.16.7" = {
       name = "_at_babel_slash_helper-optimise-call-expression";
       packageName = "@babel/helper-optimise-call-expression";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz";
-        sha512 = "E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==";
+        url = "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz";
+        sha512 = "EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==";
       };
     };
-    "@babel/helper-plugin-utils-7.14.5" = {
+    "@babel/helper-plugin-utils-7.16.7" = {
       name = "_at_babel_slash_helper-plugin-utils";
       packageName = "@babel/helper-plugin-utils";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz";
-        sha512 = "/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==";
+        url = "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz";
+        sha512 = "Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==";
       };
     };
-    "@babel/helper-remap-async-to-generator-7.15.4" = {
+    "@babel/helper-remap-async-to-generator-7.16.8" = {
       name = "_at_babel_slash_helper-remap-async-to-generator";
       packageName = "@babel/helper-remap-async-to-generator";
-      version = "7.15.4";
+      version = "7.16.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz";
-        sha512 = "v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==";
+        url = "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz";
+        sha512 = "fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==";
       };
     };
-    "@babel/helper-replace-supers-7.15.4" = {
+    "@babel/helper-replace-supers-7.16.7" = {
       name = "_at_babel_slash_helper-replace-supers";
       packageName = "@babel/helper-replace-supers";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz";
-        sha512 = "/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==";
+        url = "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz";
+        sha512 = "y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==";
       };
     };
-    "@babel/helper-simple-access-7.15.4" = {
+    "@babel/helper-simple-access-7.17.7" = {
       name = "_at_babel_slash_helper-simple-access";
       packageName = "@babel/helper-simple-access";
-      version = "7.15.4";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz";
-        sha512 = "UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==";
+        url = "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz";
+        sha512 = "txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==";
       };
     };
-    "@babel/helper-skip-transparent-expression-wrappers-7.15.4" = {
+    "@babel/helper-skip-transparent-expression-wrappers-7.16.0" = {
       name = "_at_babel_slash_helper-skip-transparent-expression-wrappers";
       packageName = "@babel/helper-skip-transparent-expression-wrappers";
-      version = "7.15.4";
+      version = "7.16.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz";
-        sha512 = "BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==";
+        url = "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz";
+        sha512 = "+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==";
       };
     };
-    "@babel/helper-split-export-declaration-7.15.4" = {
+    "@babel/helper-split-export-declaration-7.16.7" = {
       name = "_at_babel_slash_helper-split-export-declaration";
       packageName = "@babel/helper-split-export-declaration";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz";
-        sha512 = "HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==";
+        url = "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz";
+        sha512 = "xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==";
       };
     };
-    "@babel/helper-validator-identifier-7.14.9" = {
+    "@babel/helper-validator-identifier-7.16.7" = {
       name = "_at_babel_slash_helper-validator-identifier";
       packageName = "@babel/helper-validator-identifier";
-      version = "7.14.9";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz";
-        sha512 = "pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==";
+        url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz";
+        sha512 = "hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==";
       };
     };
-    "@babel/helper-validator-option-7.14.5" = {
+    "@babel/helper-validator-option-7.16.7" = {
       name = "_at_babel_slash_helper-validator-option";
       packageName = "@babel/helper-validator-option";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz";
-        sha512 = "OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==";
+        url = "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz";
+        sha512 = "TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==";
       };
     };
-    "@babel/helper-wrap-function-7.15.4" = {
+    "@babel/helper-wrap-function-7.16.8" = {
       name = "_at_babel_slash_helper-wrap-function";
       packageName = "@babel/helper-wrap-function";
-      version = "7.15.4";
+      version = "7.16.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz";
-        sha512 = "Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==";
+        url = "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz";
+        sha512 = "8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==";
       };
     };
-    "@babel/helpers-7.15.4" = {
+    "@babel/helpers-7.17.8" = {
       name = "_at_babel_slash_helpers";
       packageName = "@babel/helpers";
-      version = "7.15.4";
+      version = "7.17.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz";
-        sha512 = "V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==";
+        url = "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz";
+        sha512 = "QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==";
       };
     };
-    "@babel/highlight-7.14.5" = {
+    "@babel/highlight-7.16.10" = {
       name = "_at_babel_slash_highlight";
       packageName = "@babel/highlight";
-      version = "7.14.5";
+      version = "7.16.10";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz";
-        sha512 = "qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==";
+        url = "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz";
+        sha512 = "5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==";
       };
     };
-    "@babel/parser-7.15.5" = {
+    "@babel/parser-7.17.8" = {
       name = "_at_babel_slash_parser";
       packageName = "@babel/parser";
-      version = "7.15.5";
+      version = "7.17.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz";
+        sha512 = "BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==";
+      };
+    };
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7" = {
+      name = "_at_babel_slash_plugin-bugfix-safari-id-destructuring-collision-in-function-expression";
+      packageName = "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/parser/-/parser-7.15.5.tgz";
-        sha512 = "2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==";
+        url = "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz";
+        sha512 = "anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==";
       };
     };
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4" = {
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7" = {
       name = "_at_babel_slash_plugin-bugfix-v8-spread-parameters-in-optional-chaining";
       packageName = "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz";
-        sha512 = "eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==";
+        url = "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz";
+        sha512 = "di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==";
       };
     };
-    "@babel/plugin-proposal-async-generator-functions-7.15.4" = {
+    "@babel/plugin-proposal-async-generator-functions-7.16.8" = {
       name = "_at_babel_slash_plugin-proposal-async-generator-functions";
       packageName = "@babel/plugin-proposal-async-generator-functions";
-      version = "7.15.4";
+      version = "7.16.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.4.tgz";
-        sha512 = "2zt2g5vTXpMC3OmK6uyjvdXptbhBXfA77XGrd3gh93zwG8lZYBLOBImiGBEG0RANu3JqKEACCz5CGk73OJROBw==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz";
+        sha512 = "71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==";
       };
     };
-    "@babel/plugin-proposal-class-properties-7.14.5" = {
+    "@babel/plugin-proposal-class-properties-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-class-properties";
       packageName = "@babel/plugin-proposal-class-properties";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz";
-        sha512 = "q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz";
+        sha512 = "IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==";
       };
     };
-    "@babel/plugin-proposal-class-static-block-7.15.4" = {
+    "@babel/plugin-proposal-class-static-block-7.17.6" = {
       name = "_at_babel_slash_plugin-proposal-class-static-block";
       packageName = "@babel/plugin-proposal-class-static-block";
-      version = "7.15.4";
+      version = "7.17.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz";
-        sha512 = "M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz";
+        sha512 = "X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==";
       };
     };
-    "@babel/plugin-proposal-dynamic-import-7.14.5" = {
+    "@babel/plugin-proposal-dynamic-import-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-dynamic-import";
       packageName = "@babel/plugin-proposal-dynamic-import";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz";
-        sha512 = "ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz";
+        sha512 = "I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==";
       };
     };
-    "@babel/plugin-proposal-export-namespace-from-7.14.5" = {
+    "@babel/plugin-proposal-export-namespace-from-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-export-namespace-from";
       packageName = "@babel/plugin-proposal-export-namespace-from";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz";
-        sha512 = "g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz";
+        sha512 = "ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==";
       };
     };
-    "@babel/plugin-proposal-json-strings-7.14.5" = {
+    "@babel/plugin-proposal-json-strings-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-json-strings";
       packageName = "@babel/plugin-proposal-json-strings";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz";
-        sha512 = "NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz";
+        sha512 = "lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==";
       };
     };
-    "@babel/plugin-proposal-logical-assignment-operators-7.14.5" = {
+    "@babel/plugin-proposal-logical-assignment-operators-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-logical-assignment-operators";
       packageName = "@babel/plugin-proposal-logical-assignment-operators";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz";
-        sha512 = "YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz";
+        sha512 = "K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==";
       };
     };
-    "@babel/plugin-proposal-nullish-coalescing-operator-7.14.5" = {
+    "@babel/plugin-proposal-nullish-coalescing-operator-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-nullish-coalescing-operator";
       packageName = "@babel/plugin-proposal-nullish-coalescing-operator";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz";
-        sha512 = "gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz";
+        sha512 = "aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==";
       };
     };
-    "@babel/plugin-proposal-numeric-separator-7.14.5" = {
+    "@babel/plugin-proposal-numeric-separator-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-numeric-separator";
       packageName = "@babel/plugin-proposal-numeric-separator";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz";
-        sha512 = "yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz";
+        sha512 = "vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==";
       };
     };
-    "@babel/plugin-proposal-object-rest-spread-7.14.7" = {
+    "@babel/plugin-proposal-object-rest-spread-7.17.3" = {
       name = "_at_babel_slash_plugin-proposal-object-rest-spread";
       packageName = "@babel/plugin-proposal-object-rest-spread";
-      version = "7.14.7";
+      version = "7.17.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz";
-        sha512 = "082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz";
+        sha512 = "yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==";
       };
     };
-    "@babel/plugin-proposal-optional-catch-binding-7.14.5" = {
+    "@babel/plugin-proposal-optional-catch-binding-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-optional-catch-binding";
       packageName = "@babel/plugin-proposal-optional-catch-binding";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz";
-        sha512 = "3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz";
+        sha512 = "eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==";
       };
     };
-    "@babel/plugin-proposal-optional-chaining-7.14.5" = {
+    "@babel/plugin-proposal-optional-chaining-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-optional-chaining";
       packageName = "@babel/plugin-proposal-optional-chaining";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz";
-        sha512 = "ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz";
+        sha512 = "eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==";
       };
     };
-    "@babel/plugin-proposal-private-methods-7.14.5" = {
+    "@babel/plugin-proposal-private-methods-7.16.11" = {
       name = "_at_babel_slash_plugin-proposal-private-methods";
       packageName = "@babel/plugin-proposal-private-methods";
-      version = "7.14.5";
+      version = "7.16.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz";
-        sha512 = "838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz";
+        sha512 = "F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==";
       };
     };
-    "@babel/plugin-proposal-private-property-in-object-7.15.4" = {
+    "@babel/plugin-proposal-private-property-in-object-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-private-property-in-object";
       packageName = "@babel/plugin-proposal-private-property-in-object";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz";
-        sha512 = "X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz";
+        sha512 = "rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==";
       };
     };
-    "@babel/plugin-proposal-unicode-property-regex-7.14.5" = {
+    "@babel/plugin-proposal-unicode-property-regex-7.16.7" = {
       name = "_at_babel_slash_plugin-proposal-unicode-property-regex";
       packageName = "@babel/plugin-proposal-unicode-property-regex";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz";
-        sha512 = "6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==";
+        url = "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz";
+        sha512 = "QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==";
       };
     };
     "@babel/plugin-syntax-async-generators-7.8.4" = {
@@ -580,346 +607,346 @@ let
         sha512 = "hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==";
       };
     };
-    "@babel/plugin-transform-arrow-functions-7.14.5" = {
+    "@babel/plugin-transform-arrow-functions-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-arrow-functions";
       packageName = "@babel/plugin-transform-arrow-functions";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz";
-        sha512 = "KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz";
+        sha512 = "9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==";
       };
     };
-    "@babel/plugin-transform-async-to-generator-7.14.5" = {
+    "@babel/plugin-transform-async-to-generator-7.16.8" = {
       name = "_at_babel_slash_plugin-transform-async-to-generator";
       packageName = "@babel/plugin-transform-async-to-generator";
-      version = "7.14.5";
+      version = "7.16.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz";
-        sha512 = "szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz";
+        sha512 = "MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==";
       };
     };
-    "@babel/plugin-transform-block-scoped-functions-7.14.5" = {
+    "@babel/plugin-transform-block-scoped-functions-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-block-scoped-functions";
       packageName = "@babel/plugin-transform-block-scoped-functions";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz";
-        sha512 = "dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz";
+        sha512 = "JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==";
       };
     };
-    "@babel/plugin-transform-block-scoping-7.15.3" = {
+    "@babel/plugin-transform-block-scoping-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-block-scoping";
       packageName = "@babel/plugin-transform-block-scoping";
-      version = "7.15.3";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz";
-        sha512 = "nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz";
+        sha512 = "ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==";
       };
     };
-    "@babel/plugin-transform-classes-7.15.4" = {
+    "@babel/plugin-transform-classes-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-classes";
       packageName = "@babel/plugin-transform-classes";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz";
-        sha512 = "Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz";
+        sha512 = "WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==";
       };
     };
-    "@babel/plugin-transform-computed-properties-7.14.5" = {
+    "@babel/plugin-transform-computed-properties-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-computed-properties";
       packageName = "@babel/plugin-transform-computed-properties";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz";
-        sha512 = "pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz";
+        sha512 = "gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==";
       };
     };
-    "@babel/plugin-transform-destructuring-7.14.7" = {
+    "@babel/plugin-transform-destructuring-7.17.7" = {
       name = "_at_babel_slash_plugin-transform-destructuring";
       packageName = "@babel/plugin-transform-destructuring";
-      version = "7.14.7";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz";
-        sha512 = "0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz";
+        sha512 = "XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==";
       };
     };
-    "@babel/plugin-transform-dotall-regex-7.14.5" = {
+    "@babel/plugin-transform-dotall-regex-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-dotall-regex";
       packageName = "@babel/plugin-transform-dotall-regex";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz";
-        sha512 = "loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz";
+        sha512 = "Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==";
       };
     };
-    "@babel/plugin-transform-duplicate-keys-7.14.5" = {
+    "@babel/plugin-transform-duplicate-keys-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-duplicate-keys";
       packageName = "@babel/plugin-transform-duplicate-keys";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz";
-        sha512 = "iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz";
+        sha512 = "03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==";
       };
     };
-    "@babel/plugin-transform-exponentiation-operator-7.14.5" = {
+    "@babel/plugin-transform-exponentiation-operator-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-exponentiation-operator";
       packageName = "@babel/plugin-transform-exponentiation-operator";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz";
-        sha512 = "jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz";
+        sha512 = "8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==";
       };
     };
-    "@babel/plugin-transform-for-of-7.15.4" = {
+    "@babel/plugin-transform-for-of-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-for-of";
       packageName = "@babel/plugin-transform-for-of";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz";
-        sha512 = "DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz";
+        sha512 = "/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==";
       };
     };
-    "@babel/plugin-transform-function-name-7.14.5" = {
+    "@babel/plugin-transform-function-name-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-function-name";
       packageName = "@babel/plugin-transform-function-name";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz";
-        sha512 = "vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz";
+        sha512 = "SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==";
       };
     };
-    "@babel/plugin-transform-literals-7.14.5" = {
+    "@babel/plugin-transform-literals-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-literals";
       packageName = "@babel/plugin-transform-literals";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz";
-        sha512 = "ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz";
+        sha512 = "6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==";
       };
     };
-    "@babel/plugin-transform-member-expression-literals-7.14.5" = {
+    "@babel/plugin-transform-member-expression-literals-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-member-expression-literals";
       packageName = "@babel/plugin-transform-member-expression-literals";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz";
-        sha512 = "WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz";
+        sha512 = "mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==";
       };
     };
-    "@babel/plugin-transform-modules-amd-7.14.5" = {
+    "@babel/plugin-transform-modules-amd-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-modules-amd";
       packageName = "@babel/plugin-transform-modules-amd";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz";
-        sha512 = "3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz";
+        sha512 = "KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==";
       };
     };
-    "@babel/plugin-transform-modules-commonjs-7.15.4" = {
+    "@babel/plugin-transform-modules-commonjs-7.17.7" = {
       name = "_at_babel_slash_plugin-transform-modules-commonjs";
       packageName = "@babel/plugin-transform-modules-commonjs";
-      version = "7.15.4";
+      version = "7.17.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz";
-        sha512 = "qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz";
+        sha512 = "ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==";
       };
     };
-    "@babel/plugin-transform-modules-systemjs-7.15.4" = {
+    "@babel/plugin-transform-modules-systemjs-7.17.8" = {
       name = "_at_babel_slash_plugin-transform-modules-systemjs";
       packageName = "@babel/plugin-transform-modules-systemjs";
-      version = "7.15.4";
+      version = "7.17.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz";
-        sha512 = "fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz";
+        sha512 = "39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==";
       };
     };
-    "@babel/plugin-transform-modules-umd-7.14.5" = {
+    "@babel/plugin-transform-modules-umd-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-modules-umd";
       packageName = "@babel/plugin-transform-modules-umd";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz";
-        sha512 = "RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz";
+        sha512 = "EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==";
       };
     };
-    "@babel/plugin-transform-named-capturing-groups-regex-7.14.9" = {
+    "@babel/plugin-transform-named-capturing-groups-regex-7.16.8" = {
       name = "_at_babel_slash_plugin-transform-named-capturing-groups-regex";
       packageName = "@babel/plugin-transform-named-capturing-groups-regex";
-      version = "7.14.9";
+      version = "7.16.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz";
-        sha512 = "l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz";
+        sha512 = "j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==";
       };
     };
-    "@babel/plugin-transform-new-target-7.14.5" = {
+    "@babel/plugin-transform-new-target-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-new-target";
       packageName = "@babel/plugin-transform-new-target";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz";
-        sha512 = "Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz";
+        sha512 = "xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==";
       };
     };
-    "@babel/plugin-transform-object-super-7.14.5" = {
+    "@babel/plugin-transform-object-super-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-object-super";
       packageName = "@babel/plugin-transform-object-super";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz";
-        sha512 = "MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz";
+        sha512 = "14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==";
       };
     };
-    "@babel/plugin-transform-parameters-7.15.4" = {
+    "@babel/plugin-transform-parameters-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-parameters";
       packageName = "@babel/plugin-transform-parameters";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz";
-        sha512 = "9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz";
+        sha512 = "AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==";
       };
     };
-    "@babel/plugin-transform-property-literals-7.14.5" = {
+    "@babel/plugin-transform-property-literals-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-property-literals";
       packageName = "@babel/plugin-transform-property-literals";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz";
-        sha512 = "r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz";
+        sha512 = "z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==";
       };
     };
-    "@babel/plugin-transform-regenerator-7.14.5" = {
+    "@babel/plugin-transform-regenerator-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-regenerator";
       packageName = "@babel/plugin-transform-regenerator";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz";
-        sha512 = "NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz";
+        sha512 = "mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==";
       };
     };
-    "@babel/plugin-transform-reserved-words-7.14.5" = {
+    "@babel/plugin-transform-reserved-words-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-reserved-words";
       packageName = "@babel/plugin-transform-reserved-words";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz";
-        sha512 = "cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz";
+        sha512 = "KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==";
       };
     };
-    "@babel/plugin-transform-shorthand-properties-7.14.5" = {
+    "@babel/plugin-transform-shorthand-properties-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-shorthand-properties";
       packageName = "@babel/plugin-transform-shorthand-properties";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz";
-        sha512 = "xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz";
+        sha512 = "hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==";
       };
     };
-    "@babel/plugin-transform-spread-7.14.6" = {
+    "@babel/plugin-transform-spread-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-spread";
       packageName = "@babel/plugin-transform-spread";
-      version = "7.14.6";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz";
-        sha512 = "Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz";
+        sha512 = "+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==";
       };
     };
-    "@babel/plugin-transform-sticky-regex-7.14.5" = {
+    "@babel/plugin-transform-sticky-regex-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-sticky-regex";
       packageName = "@babel/plugin-transform-sticky-regex";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz";
-        sha512 = "Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz";
+        sha512 = "NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==";
       };
     };
-    "@babel/plugin-transform-template-literals-7.14.5" = {
+    "@babel/plugin-transform-template-literals-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-template-literals";
       packageName = "@babel/plugin-transform-template-literals";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz";
-        sha512 = "22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz";
+        sha512 = "VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==";
       };
     };
-    "@babel/plugin-transform-typeof-symbol-7.14.5" = {
+    "@babel/plugin-transform-typeof-symbol-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-typeof-symbol";
       packageName = "@babel/plugin-transform-typeof-symbol";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz";
-        sha512 = "lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz";
+        sha512 = "p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==";
       };
     };
-    "@babel/plugin-transform-unicode-escapes-7.14.5" = {
+    "@babel/plugin-transform-unicode-escapes-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-unicode-escapes";
       packageName = "@babel/plugin-transform-unicode-escapes";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz";
-        sha512 = "crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz";
+        sha512 = "TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==";
       };
     };
-    "@babel/plugin-transform-unicode-regex-7.14.5" = {
+    "@babel/plugin-transform-unicode-regex-7.16.7" = {
       name = "_at_babel_slash_plugin-transform-unicode-regex";
       packageName = "@babel/plugin-transform-unicode-regex";
-      version = "7.14.5";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz";
-        sha512 = "UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==";
+        url = "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz";
+        sha512 = "oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==";
       };
     };
-    "@babel/preset-env-7.15.4" = {
+    "@babel/preset-env-7.16.11" = {
       name = "_at_babel_slash_preset-env";
       packageName = "@babel/preset-env";
-      version = "7.15.4";
+      version = "7.16.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.4.tgz";
-        sha512 = "4f2nLw+q6ht8gl3sHCmNhmA5W6b1ItLzbH3UrKuJxACHr2eCpk96jwjrAfCAaXaaVwTQGnyUYHY2EWXJGt7TUQ==";
+        url = "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz";
+        sha512 = "qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==";
       };
     };
-    "@babel/preset-modules-0.1.4" = {
+    "@babel/preset-modules-0.1.5" = {
       name = "_at_babel_slash_preset-modules";
       packageName = "@babel/preset-modules";
-      version = "0.1.4";
+      version = "0.1.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz";
-        sha512 = "J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==";
+        url = "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz";
+        sha512 = "A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==";
       };
     };
-    "@babel/runtime-7.15.4" = {
+    "@babel/runtime-7.17.8" = {
       name = "_at_babel_slash_runtime";
       packageName = "@babel/runtime";
-      version = "7.15.4";
+      version = "7.17.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz";
-        sha512 = "99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==";
+        url = "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz";
+        sha512 = "dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==";
       };
     };
-    "@babel/template-7.15.4" = {
+    "@babel/template-7.16.7" = {
       name = "_at_babel_slash_template";
       packageName = "@babel/template";
-      version = "7.15.4";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz";
-        sha512 = "UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==";
+        url = "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz";
+        sha512 = "I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==";
       };
     };
-    "@babel/traverse-7.15.4" = {
+    "@babel/traverse-7.17.3" = {
       name = "_at_babel_slash_traverse";
       packageName = "@babel/traverse";
-      version = "7.15.4";
+      version = "7.17.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz";
-        sha512 = "W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==";
+        url = "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz";
+        sha512 = "5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==";
       };
     };
-    "@babel/types-7.15.4" = {
+    "@babel/types-7.17.0" = {
       name = "_at_babel_slash_types";
       packageName = "@babel/types";
-      version = "7.15.4";
+      version = "7.17.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/types/-/types-7.15.4.tgz";
-        sha512 = "0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==";
+        url = "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz";
+        sha512 = "TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==";
       };
     };
     "@csstools/convert-colors-1.4.0" = {
@@ -931,13 +958,13 @@ let
         sha512 = "5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==";
       };
     };
-    "@discoveryjs/json-ext-0.5.3" = {
+    "@discoveryjs/json-ext-0.5.7" = {
       name = "_at_discoveryjs_slash_json-ext";
       packageName = "@discoveryjs/json-ext";
-      version = "0.5.3";
+      version = "0.5.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz";
-        sha512 = "Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==";
+        url = "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz";
+        sha512 = "dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==";
       };
     };
     "@eslint/eslintrc-0.4.3" = {
@@ -949,13 +976,13 @@ let
         sha512 = "J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==";
       };
     };
-    "@gar/promisify-1.1.2" = {
+    "@gar/promisify-1.1.3" = {
       name = "_at_gar_slash_promisify";
       packageName = "@gar/promisify";
-      version = "1.1.2";
+      version = "1.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz";
-        sha512 = "82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==";
+        url = "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz";
+        sha512 = "k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==";
       };
     };
     "@humanwhocodes/config-array-0.5.0" = {
@@ -967,13 +994,40 @@ let
         sha512 = "FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==";
       };
     };
-    "@humanwhocodes/object-schema-1.2.0" = {
+    "@humanwhocodes/object-schema-1.2.1" = {
       name = "_at_humanwhocodes_slash_object-schema";
       packageName = "@humanwhocodes/object-schema";
-      version = "1.2.0";
+      version = "1.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz";
-        sha512 = "wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==";
+        url = "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz";
+        sha512 = "ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==";
+      };
+    };
+    "@jridgewell/resolve-uri-3.0.5" = {
+      name = "_at_jridgewell_slash_resolve-uri";
+      packageName = "@jridgewell/resolve-uri";
+      version = "3.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz";
+        sha512 = "VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==";
+      };
+    };
+    "@jridgewell/sourcemap-codec-1.4.11" = {
+      name = "_at_jridgewell_slash_sourcemap-codec";
+      packageName = "@jridgewell/sourcemap-codec";
+      version = "1.4.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz";
+        sha512 = "Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==";
+      };
+    };
+    "@jridgewell/trace-mapping-0.3.4" = {
+      name = "_at_jridgewell_slash_trace-mapping";
+      packageName = "@jridgewell/trace-mapping";
+      version = "0.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz";
+        sha512 = "vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==";
       };
     };
     "@mdn/browser-compat-data-3.3.14" = {
@@ -1030,13 +1084,13 @@ let
         sha512 = "oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==";
       };
     };
-    "@npmcli/fs-1.0.0" = {
+    "@npmcli/fs-1.1.1" = {
       name = "_at_npmcli_slash_fs";
       packageName = "@npmcli/fs";
-      version = "1.0.0";
+      version = "1.1.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz";
-        sha512 = "8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==";
+        url = "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz";
+        sha512 = "8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==";
       };
     };
     "@npmcli/move-file-1.1.2" = {
@@ -1048,13 +1102,13 @@ let
         sha512 = "1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==";
       };
     };
-    "@rollup/plugin-babel-5.3.0" = {
+    "@rollup/plugin-babel-5.3.1" = {
       name = "_at_rollup_slash_plugin-babel";
       packageName = "@rollup/plugin-babel";
-      version = "5.3.0";
+      version = "5.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz";
-        sha512 = "9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==";
+        url = "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz";
+        sha512 = "WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==";
       };
     };
     "@rollup/plugin-node-resolve-11.2.1" = {
@@ -1102,31 +1156,31 @@ let
         sha512 = "2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==";
       };
     };
-    "@surma/rollup-plugin-off-main-thread-1.4.2" = {
+    "@surma/rollup-plugin-off-main-thread-2.2.3" = {
       name = "_at_surma_slash_rollup-plugin-off-main-thread";
       packageName = "@surma/rollup-plugin-off-main-thread";
-      version = "1.4.2";
+      version = "2.2.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz";
-        sha512 = "yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==";
+        url = "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz";
+        sha512 = "lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==";
       };
     };
-    "@types/eslint-7.28.0" = {
+    "@types/eslint-8.4.1" = {
       name = "_at_types_slash_eslint";
       packageName = "@types/eslint";
-      version = "7.28.0";
+      version = "8.4.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz";
-        sha512 = "07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==";
+        url = "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz";
+        sha512 = "GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==";
       };
     };
-    "@types/eslint-scope-3.7.1" = {
+    "@types/eslint-scope-3.7.3" = {
       name = "_at_types_slash_eslint-scope";
       packageName = "@types/eslint-scope";
-      version = "3.7.1";
+      version = "3.7.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz";
-        sha512 = "SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==";
+        url = "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz";
+        sha512 = "PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==";
       };
     };
     "@types/estree-0.0.39" = {
@@ -1138,22 +1192,22 @@ let
         sha512 = "EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==";
       };
     };
-    "@types/estree-0.0.50" = {
+    "@types/estree-0.0.51" = {
       name = "_at_types_slash_estree";
       packageName = "@types/estree";
-      version = "0.0.50";
+      version = "0.0.51";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz";
-        sha512 = "C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==";
+        url = "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz";
+        sha512 = "CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==";
       };
     };
-    "@types/glob-7.1.4" = {
+    "@types/glob-7.2.0" = {
       name = "_at_types_slash_glob";
       packageName = "@types/glob";
-      version = "7.1.4";
+      version = "7.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz";
-        sha512 = "w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==";
+        url = "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz";
+        sha512 = "ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==";
       };
     };
     "@types/html-minifier-terser-5.1.2" = {
@@ -1165,13 +1219,13 @@ let
         sha512 = "h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==";
       };
     };
-    "@types/json-schema-7.0.9" = {
+    "@types/json-schema-7.0.11" = {
       name = "_at_types_slash_json-schema";
       packageName = "@types/json-schema";
-      version = "7.0.9";
+      version = "7.0.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz";
-        sha512 = "qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==";
+        url = "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz";
+        sha512 = "wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==";
       };
     };
     "@types/json5-0.0.29" = {
@@ -1219,13 +1273,13 @@ let
         sha512 = "jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==";
       };
     };
-    "@types/node-16.7.10" = {
+    "@types/node-17.0.23" = {
       name = "_at_types_slash_node";
       packageName = "@types/node";
-      version = "16.7.10";
+      version = "17.0.23";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz";
-        sha512 = "S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==";
+        url = "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz";
+        sha512 = "UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==";
       };
     };
     "@types/normalize-package-data-2.4.1" = {
@@ -1327,13 +1381,13 @@ let
         sha512 = "GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==";
       };
     };
-    "@types/webpack-4.41.30" = {
+    "@types/webpack-4.41.32" = {
       name = "_at_types_slash_webpack";
       packageName = "@types/webpack";
-      version = "4.41.30";
+      version = "4.41.32";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.30.tgz";
-        sha512 = "GUHyY+pfuQ6haAfzu4S14F+R5iGRwN6b2FRNJY7U0NilmFAqbsOfK6j1HwuLBAqwRIT+pVdNDJGJ6e8rpp0KHA==";
+        url = "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz";
+        sha512 = "cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==";
       };
     };
     "@types/webpack-sources-3.2.0" = {
@@ -1489,31 +1543,40 @@ let
         sha512 = "IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==";
       };
     };
-    "@webpack-cli/configtest-1.0.4" = {
+    "@webpack-cli/configtest-1.1.1" = {
       name = "_at_webpack-cli_slash_configtest";
       packageName = "@webpack-cli/configtest";
-      version = "1.0.4";
+      version = "1.1.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz";
-        sha512 = "cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==";
+        url = "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz";
+        sha512 = "1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==";
       };
     };
-    "@webpack-cli/info-1.3.0" = {
+    "@webpack-cli/info-1.4.1" = {
       name = "_at_webpack-cli_slash_info";
       packageName = "@webpack-cli/info";
-      version = "1.3.0";
+      version = "1.4.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz";
-        sha512 = "ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==";
+        url = "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz";
+        sha512 = "PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==";
       };
     };
-    "@webpack-cli/serve-1.5.2" = {
+    "@webpack-cli/serve-1.6.1" = {
       name = "_at_webpack-cli_slash_serve";
       packageName = "@webpack-cli/serve";
-      version = "1.5.2";
+      version = "1.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz";
+        sha512 = "gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==";
+      };
+    };
+    "@xmldom/xmldom-0.7.5" = {
+      name = "_at_xmldom_slash_xmldom";
+      packageName = "@xmldom/xmldom";
+      version = "0.7.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.2.tgz";
-        sha512 = "vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==";
+        url = "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz";
+        sha512 = "V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==";
       };
     };
     "@xtuc/ieee754-1.2.0" = {
@@ -1543,13 +1606,13 @@ let
         sha512 = "9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==";
       };
     };
-    "accepts-1.3.7" = {
+    "accepts-1.3.8" = {
       name = "accepts";
       packageName = "accepts";
-      version = "1.3.7";
+      version = "1.3.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
-        sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz";
+        sha512 = "PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==";
       };
     };
     "acorn-7.4.1" = {
@@ -1561,22 +1624,22 @@ let
         sha512 = "nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==";
       };
     };
-    "acorn-8.4.1" = {
+    "acorn-8.7.0" = {
       name = "acorn";
       packageName = "acorn";
-      version = "8.4.1";
+      version = "8.7.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz";
-        sha512 = "asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==";
+        url = "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz";
+        sha512 = "V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==";
       };
     };
-    "acorn-import-assertions-1.7.6" = {
+    "acorn-import-assertions-1.8.0" = {
       name = "acorn-import-assertions";
       packageName = "acorn-import-assertions";
-      version = "1.7.6";
+      version = "1.8.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz";
-        sha512 = "FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==";
+        url = "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz";
+        sha512 = "m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==";
       };
     };
     "acorn-jsx-5.3.2" = {
@@ -1606,13 +1669,13 @@ let
         sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
       };
     };
-    "ajv-8.6.2" = {
+    "ajv-8.11.0" = {
       name = "ajv";
       packageName = "ajv";
-      version = "8.6.2";
+      version = "8.11.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz";
-        sha512 = "9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==";
+        url = "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz";
+        sha512 = "wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==";
       };
     };
     "ajv-errors-1.0.1" = {
@@ -1660,13 +1723,13 @@ let
         sha512 = "JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==";
       };
     };
-    "ansi-html-0.0.7" = {
-      name = "ansi-html";
-      packageName = "ansi-html";
-      version = "0.0.7";
+    "ansi-html-community-0.0.8" = {
+      name = "ansi-html-community";
+      packageName = "ansi-html-community";
+      version = "0.0.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz";
-        sha1 = "813584021962a9e9e6fd039f940d12f56ca7859e";
+        url = "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz";
+        sha512 = "1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==";
       };
     };
     "ansi-regex-2.1.1" = {
@@ -1678,22 +1741,22 @@ let
         sha1 = "c3b33ab5ee360d86e0e628f0468ae7ef27d654df";
       };
     };
-    "ansi-regex-4.1.0" = {
+    "ansi-regex-4.1.1" = {
       name = "ansi-regex";
       packageName = "ansi-regex";
-      version = "4.1.0";
+      version = "4.1.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz";
-        sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz";
+        sha512 = "ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==";
       };
     };
-    "ansi-regex-5.0.0" = {
+    "ansi-regex-5.0.1" = {
       name = "ansi-regex";
       packageName = "ansi-regex";
-      version = "5.0.0";
+      version = "5.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz";
-        sha512 = "bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==";
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz";
+        sha512 = "quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==";
       };
     };
     "ansi-styles-2.2.1" = {
@@ -1804,13 +1867,13 @@ let
         sha512 = "hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==";
       };
     };
-    "array-includes-3.1.3" = {
+    "array-includes-3.1.4" = {
       name = "array-includes";
       packageName = "array-includes";
-      version = "3.1.3";
+      version = "3.1.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz";
-        sha512 = "gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==";
+        url = "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz";
+        sha512 = "ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==";
       };
     };
     "array-union-1.0.2" = {
@@ -1849,13 +1912,13 @@ let
         sha1 = "a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428";
       };
     };
-    "array.prototype.flat-1.2.4" = {
+    "array.prototype.flat-1.2.5" = {
       name = "array.prototype.flat";
       packageName = "array.prototype.flat";
-      version = "1.2.4";
+      version = "1.2.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz";
-        sha512 = "4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==";
+        url = "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz";
+        sha512 = "KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==";
       };
     };
     "arrify-1.0.1" = {
@@ -1903,6 +1966,15 @@ let
         sha512 = "Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==";
       };
     };
+    "async-0.9.2" = {
+      name = "async";
+      packageName = "async";
+      version = "0.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.9.2.tgz";
+        sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
+      };
+    };
     "async-2.6.3" = {
       name = "async";
       packageName = "async";
@@ -1948,22 +2020,22 @@ let
         sha512 = "Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==";
       };
     };
-    "autoprefixer-9.8.6" = {
+    "autoprefixer-9.8.8" = {
       name = "autoprefixer";
       packageName = "autoprefixer";
-      version = "9.8.6";
+      version = "9.8.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz";
-        sha512 = "XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==";
+        url = "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz";
+        sha512 = "eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==";
       };
     };
-    "babel-loader-8.2.2" = {
+    "babel-loader-8.2.4" = {
       name = "babel-loader";
       packageName = "babel-loader";
-      version = "8.2.2";
+      version = "8.2.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz";
-        sha512 = "JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==";
+        url = "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz";
+        sha512 = "8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A==";
       };
     };
     "babel-plugin-dynamic-import-node-2.3.3" = {
@@ -1984,31 +2056,31 @@ let
         sha512 = "fqdut9hGeaAgdX3sbAY25TkqA7LPmZB+Hf1XI67AppvhUw1cBST58BPwl5kPwDZYIvmqRwnsVKM0lppsQAsxhg==";
       };
     };
-    "babel-plugin-polyfill-corejs2-0.2.2" = {
+    "babel-plugin-polyfill-corejs2-0.3.1" = {
       name = "babel-plugin-polyfill-corejs2";
       packageName = "babel-plugin-polyfill-corejs2";
-      version = "0.2.2";
+      version = "0.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz";
-        sha512 = "kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==";
+        url = "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz";
+        sha512 = "v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==";
       };
     };
-    "babel-plugin-polyfill-corejs3-0.2.4" = {
+    "babel-plugin-polyfill-corejs3-0.5.2" = {
       name = "babel-plugin-polyfill-corejs3";
       packageName = "babel-plugin-polyfill-corejs3";
-      version = "0.2.4";
+      version = "0.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.4.tgz";
-        sha512 = "z3HnJE5TY/j4EFEa/qpQMSbcUJZ5JQi+3UFjXzn6pQCmIKc5Ug5j98SuYyH+m4xQnvKlMDIW4plLfgyVnd0IcQ==";
+        url = "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz";
+        sha512 = "G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==";
       };
     };
-    "babel-plugin-polyfill-regenerator-0.2.2" = {
+    "babel-plugin-polyfill-regenerator-0.3.1" = {
       name = "babel-plugin-polyfill-regenerator";
       packageName = "babel-plugin-polyfill-regenerator";
-      version = "0.2.2";
+      version = "0.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz";
-        sha512 = "Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==";
+        url = "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz";
+        sha512 = "Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==";
       };
     };
     "bail-1.0.5" = {
@@ -2092,22 +2164,22 @@ let
         sha512 = "p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==";
       };
     };
-    "blurhash-1.1.4" = {
+    "blurhash-1.1.5" = {
       name = "blurhash";
       packageName = "blurhash";
-      version = "1.1.4";
+      version = "1.1.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/blurhash/-/blurhash-1.1.4.tgz";
-        sha512 = "MXIPz6zwYUKayju+Uidf83KhH0vodZfeRl6Ich8Gu+KGl0JgKiFq9LsfqV7cVU5fKD/AotmduZqvOfrGKOfTaA==";
+        url = "https://registry.npmjs.org/blurhash/-/blurhash-1.1.5.tgz";
+        sha512 = "a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg==";
       };
     };
-    "body-parser-1.19.0" = {
+    "body-parser-1.19.2" = {
       name = "body-parser";
       packageName = "body-parser";
-      version = "1.19.0";
+      version = "1.19.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
-        sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==";
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz";
+        sha512 = "SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==";
       };
     };
     "bonjour-3.5.0" = {
@@ -2164,13 +2236,13 @@ let
         sha1 = "0bd76704258be829b2398bb50e4b62d1a166b0b9";
       };
     };
-    "browserslist-4.17.0" = {
+    "browserslist-4.20.2" = {
       name = "browserslist";
       packageName = "browserslist";
-      version = "4.17.0";
+      version = "4.20.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz";
-        sha512 = "g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==";
+        url = "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz";
+        sha512 = "CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==";
       };
     };
     "buffer-from-1.1.2" = {
@@ -2209,13 +2281,13 @@ let
         sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
       };
     };
-    "bytes-3.1.0" = {
+    "bytes-3.1.2" = {
       name = "bytes";
       packageName = "bytes";
-      version = "3.1.0";
+      version = "3.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
-        sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==";
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz";
+        sha512 = "/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==";
       };
     };
     "cacache-15.3.0" = {
@@ -2344,22 +2416,22 @@ let
         sha512 = "bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==";
       };
     };
-    "caniuse-db-1.0.30001255" = {
+    "caniuse-db-1.0.30001325" = {
       name = "caniuse-db";
       packageName = "caniuse-db";
-      version = "1.0.30001255";
+      version = "1.0.30001325";
       src = fetchurl {
-        url = "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001255.tgz";
-        sha512 = "+FV7TQX0PoThDIwNvRpoUbhmKJzAB8ZGc8xDNTRltvpbL7d7Si+HTOn1NDdZh4yw2JUqnV6LOYsAcG20lH7gGg==";
+        url = "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001325.tgz";
+        sha512 = "bqFgqeJcZCMhqBGhfnX97E3LXeg61rEMt0iyTp7DS8BKTOpw9bmesk9wgQCOEA5w0xiKOSd1SkV+N4oL07TnJw==";
       };
     };
-    "caniuse-lite-1.0.30001255" = {
+    "caniuse-lite-1.0.30001325" = {
       name = "caniuse-lite";
       packageName = "caniuse-lite";
-      version = "1.0.30001255";
+      version = "1.0.30001325";
       src = fetchurl {
-        url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001255.tgz";
-        sha512 = "F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==";
+        url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001325.tgz";
+        sha512 = "sB1bZHjseSjDtijV1Hb7PB2Zd58Kyx+n/9EotvZ4Qcz2K3d0lWB8dB4nb8wN/TsOGFq3UuAm0zQZNQ4SoR7TrQ==";
       };
     };
     "ccount-1.1.0" = {
@@ -2443,13 +2515,13 @@ let
         sha512 = "ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==";
       };
     };
-    "chokidar-3.5.2" = {
+    "chokidar-3.5.3" = {
       name = "chokidar";
       packageName = "chokidar";
-      version = "3.5.2";
+      version = "3.5.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz";
-        sha512 = "ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==";
+        url = "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz";
+        sha512 = "Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==";
       };
     };
     "chownr-2.0.0" = {
@@ -2485,17 +2557,17 @@ let
       version = "1.2.20180112";
       src = fetchurl {
         name = "classlist.js-1.2.20180112.tar.gz";
-        url = "https://codeload.github.com/eligrey/classList.js/tar.gz/1.2.20180112";
+        url = "https://codeload.github.com/eligrey/classList.js/tar.gz/refs/tags/1.2.20180112";
         sha256 = "b9a185ff3f7263f0f251af30f187ba19d2d6d141071efdfd4bd717e190599191";
       };
     };
-    "clean-css-4.2.3" = {
+    "clean-css-4.2.4" = {
       name = "clean-css";
       packageName = "clean-css";
-      version = "4.2.3";
+      version = "4.2.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz";
-        sha512 = "VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==";
+        url = "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz";
+        sha512 = "EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==";
       };
     };
     "clean-stack-2.2.0" = {
@@ -2624,22 +2696,22 @@ let
         sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==";
       };
     };
-    "color-string-1.6.0" = {
+    "color-string-1.9.0" = {
       name = "color-string";
       packageName = "color-string";
-      version = "1.6.0";
+      version = "1.9.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz";
-        sha512 = "c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==";
+        url = "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz";
+        sha512 = "9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==";
       };
     };
-    "colorette-1.3.0" = {
+    "colorette-2.0.16" = {
       name = "colorette";
       packageName = "colorette";
-      version = "1.3.0";
+      version = "2.0.16";
       src = fetchurl {
-        url = "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz";
-        sha512 = "ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==";
+        url = "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz";
+        sha512 = "hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==";
       };
     };
     "commander-2.20.3" = {
@@ -2669,13 +2741,13 @@ let
         sha512 = "QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==";
       };
     };
-    "common-tags-1.8.0" = {
+    "common-tags-1.8.2" = {
       name = "common-tags";
       packageName = "common-tags";
-      version = "1.8.0";
+      version = "1.8.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz";
-        sha512 = "6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==";
+        url = "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz";
+        sha512 = "gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==";
       };
     };
     "commondir-1.0.1" = {
@@ -2723,13 +2795,13 @@ let
         sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
       };
     };
-    "confusing-browser-globals-1.0.10" = {
+    "confusing-browser-globals-1.0.11" = {
       name = "confusing-browser-globals";
       packageName = "confusing-browser-globals";
-      version = "1.0.10";
+      version = "1.0.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz";
-        sha512 = "gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==";
+        url = "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz";
+        sha512 = "JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==";
       };
     };
     "connect-history-api-fallback-1.6.0" = {
@@ -2741,13 +2813,13 @@ let
         sha512 = "e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==";
       };
     };
-    "content-disposition-0.5.3" = {
+    "content-disposition-0.5.4" = {
       name = "content-disposition";
       packageName = "content-disposition";
-      version = "0.5.3";
+      version = "0.5.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
-        sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==";
+        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz";
+        sha512 = "FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==";
       };
     };
     "content-type-1.0.4" = {
@@ -2768,13 +2840,13 @@ let
         sha512 = "+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==";
       };
     };
-    "cookie-0.4.0" = {
+    "cookie-0.4.2" = {
       name = "cookie";
       packageName = "cookie";
-      version = "0.4.0";
+      version = "0.4.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
-        sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==";
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz";
+        sha512 = "aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==";
       };
     };
     "cookie-signature-1.0.6" = {
@@ -2804,22 +2876,22 @@ let
         sha512 = "MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==";
       };
     };
-    "core-js-3.17.2" = {
+    "core-js-3.21.1" = {
       name = "core-js";
       packageName = "core-js";
-      version = "3.17.2";
+      version = "3.21.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/core-js/-/core-js-3.17.2.tgz";
-        sha512 = "XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA==";
+        url = "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz";
+        sha512 = "FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==";
       };
     };
-    "core-js-compat-3.17.2" = {
+    "core-js-compat-3.21.1" = {
       name = "core-js-compat";
       packageName = "core-js-compat";
-      version = "3.17.2";
+      version = "3.21.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.17.2.tgz";
-        sha512 = "lHnt7A1Oqplebl5i0MrQyFv/yyEzr9p29OjlkcsFRDDgHwwQyVckfRGJ790qzXhkwM8ba4SFHHa2sO+T5f1zGg==";
+        url = "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz";
+        sha512 = "gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==";
       };
     };
     "core-util-is-1.0.3" = {
@@ -2939,13 +3011,13 @@ let
         sha512 = "Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==";
       };
     };
-    "css-select-4.1.3" = {
+    "css-select-4.3.0" = {
       name = "css-select";
       packageName = "css-select";
-      version = "4.1.3";
+      version = "4.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz";
-        sha512 = "gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==";
+        url = "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz";
+        sha512 = "wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==";
       };
     };
     "css-select-base-adapter-0.1.1" = {
@@ -2984,13 +3056,13 @@ let
         sha512 = "ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==";
       };
     };
-    "css-what-5.0.1" = {
+    "css-what-6.1.0" = {
       name = "css-what";
       packageName = "css-what";
-      version = "5.0.1";
+      version = "6.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz";
-        sha512 = "FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==";
+        url = "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz";
+        sha512 = "HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==";
       };
     };
     "cssdb-4.4.0" = {
@@ -3101,13 +3173,13 @@ let
         sha512 = "m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==";
       };
     };
-    "date-fns-2.23.0" = {
+    "date-fns-2.28.0" = {
       name = "date-fns";
       packageName = "date-fns";
-      version = "2.23.0";
+      version = "2.28.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/date-fns/-/date-fns-2.23.0.tgz";
-        sha512 = "5ycpauovVyAk0kXNZz6ZoB9AYMZB4DObse7P3BPWmyEjXNORTI8EJ6X0uaSAq4sCHzM1uajzrkr6HnsLQpxGXA==";
+        url = "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz";
+        sha512 = "8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==";
       };
     };
     "debug-2.6.9" = {
@@ -3128,13 +3200,13 @@ let
         sha512 = "CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==";
       };
     };
-    "debug-4.3.2" = {
+    "debug-4.3.4" = {
       name = "debug";
       packageName = "debug";
-      version = "4.3.2";
+      version = "4.3.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz";
-        sha512 = "mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==";
+        url = "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz";
+        sha512 = "PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==";
       };
     };
     "decamelize-1.2.0" = {
@@ -3407,13 +3479,13 @@ let
         sha512 = "J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==";
       };
     };
-    "domhandler-4.2.2" = {
+    "domhandler-4.3.1" = {
       name = "domhandler";
       packageName = "domhandler";
-      version = "4.2.2";
+      version = "4.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz";
-        sha512 = "PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==";
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz";
+        sha512 = "GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==";
       };
     };
     "domutils-1.7.0" = {
@@ -3461,22 +3533,22 @@ let
         sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
       };
     };
-    "ejs-2.7.4" = {
+    "ejs-3.1.6" = {
       name = "ejs";
       packageName = "ejs";
-      version = "2.7.4";
+      version = "3.1.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz";
-        sha512 = "7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==";
+        url = "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz";
+        sha512 = "9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==";
       };
     };
-    "electron-to-chromium-1.3.830" = {
+    "electron-to-chromium-1.4.103" = {
       name = "electron-to-chromium";
       packageName = "electron-to-chromium";
-      version = "1.3.830";
+      version = "1.4.103";
       src = fetchurl {
-        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz";
-        sha512 = "gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==";
+        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz";
+        sha512 = "c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==";
       };
     };
     "emoji-regex-7.0.3" = {
@@ -3524,13 +3596,13 @@ let
         sha512 = "+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==";
       };
     };
-    "enhanced-resolve-5.8.2" = {
+    "enhanced-resolve-5.9.2" = {
       name = "enhanced-resolve";
       packageName = "enhanced-resolve";
-      version = "5.8.2";
+      version = "5.9.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz";
-        sha512 = "F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==";
+        url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz";
+        sha512 = "GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==";
       };
     };
     "enquirer-2.3.6" = {
@@ -3569,13 +3641,13 @@ let
         sha512 = "/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==";
       };
     };
-    "epubjs-0.3.88" = {
+    "epubjs-0.3.93" = {
       name = "epubjs";
       packageName = "epubjs";
-      version = "0.3.88";
+      version = "0.3.93";
       src = fetchurl {
-        url = "https://registry.npmjs.org/epubjs/-/epubjs-0.3.88.tgz";
-        sha512 = "VRumULpUELYmYwzypyfbDwoSIqDp2LXOXCtY3o55o3YDW5Zm32UjtZuX/xaWFGqyZORNNMWWQ8VlMaY1djnDYg==";
+        url = "https://registry.npmjs.org/epubjs/-/epubjs-0.3.93.tgz";
+        sha512 = "c06pNSdBxcXv3dZSbXAVLE1/pmleRhOT6mXNZo6INKmvuKpYB65MwU/lO7830czCtjIiK9i+KR+3S+p0wtljrw==";
       };
     };
     "errno-0.1.8" = {
@@ -3596,22 +3668,22 @@ let
         sha512 = "7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==";
       };
     };
-    "es-abstract-1.18.5" = {
+    "es-abstract-1.19.2" = {
       name = "es-abstract";
       packageName = "es-abstract";
-      version = "1.18.5";
+      version = "1.19.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz";
-        sha512 = "DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==";
+        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz";
+        sha512 = "gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==";
       };
     };
-    "es-module-lexer-0.7.1" = {
+    "es-module-lexer-0.9.3" = {
       name = "es-module-lexer";
       packageName = "es-module-lexer";
-      version = "0.7.1";
+      version = "0.9.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz";
-        sha512 = "MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==";
+        url = "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz";
+        sha512 = "1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==";
       };
     };
     "es-to-primitive-1.2.1" = {
@@ -3623,13 +3695,13 @@ let
         sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
       };
     };
-    "es5-ext-0.10.53" = {
+    "es5-ext-0.10.59" = {
       name = "es5-ext";
       packageName = "es5-ext";
-      version = "0.10.53";
+      version = "0.10.59";
       src = fetchurl {
-        url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz";
-        sha512 = "Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==";
+        url = "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.59.tgz";
+        sha512 = "cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==";
       };
     };
     "es6-iterator-2.0.3" = {
@@ -3713,13 +3785,13 @@ let
         sha512 = "0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==";
       };
     };
-    "eslint-module-utils-2.6.2" = {
+    "eslint-module-utils-2.7.3" = {
       name = "eslint-module-utils";
       packageName = "eslint-module-utils";
-      version = "2.6.2";
+      version = "2.7.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz";
-        sha512 = "QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==";
+        url = "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz";
+        sha512 = "088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==";
       };
     };
     "eslint-plugin-compat-3.13.0" = {
@@ -3740,13 +3812,13 @@ let
         sha512 = "0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==";
       };
     };
-    "eslint-plugin-import-2.24.2" = {
+    "eslint-plugin-import-2.25.4" = {
       name = "eslint-plugin-import";
       packageName = "eslint-plugin-import";
-      version = "2.24.2";
+      version = "2.25.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz";
-        sha512 = "hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==";
+        url = "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz";
+        sha512 = "/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==";
       };
     };
     "eslint-plugin-promise-4.3.1" = {
@@ -3848,13 +3920,13 @@ let
         sha512 = "39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==";
       };
     };
-    "estraverse-5.2.0" = {
+    "estraverse-5.3.0" = {
       name = "estraverse";
       packageName = "estraverse";
-      version = "5.2.0";
+      version = "5.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz";
-        sha512 = "BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==";
+        url = "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz";
+        sha512 = "MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==";
       };
     };
     "estree-walker-1.0.1" = {
@@ -3974,22 +4046,22 @@ let
         sha512 = "gP6hs3vYeWIqyoVfsApGQcgCEpbcI1xe+celwI31zeDhXz2q03ycBC1+75IlQUGaYvj6rAloFIe/NIBnEElLsQ==";
       };
     };
-    "express-4.17.1" = {
+    "express-4.17.3" = {
       name = "express";
       packageName = "express";
-      version = "4.17.1";
+      version = "4.17.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
-        sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==";
+        url = "https://registry.npmjs.org/express/-/express-4.17.3.tgz";
+        sha512 = "yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==";
       };
     };
-    "ext-1.5.0" = {
+    "ext-1.6.0" = {
       name = "ext";
       packageName = "ext";
-      version = "1.5.0";
+      version = "1.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ext/-/ext-1.5.0.tgz";
-        sha512 = "+ONcYoWj/SoQwUofMr94aGu05Ou4FepKi7N7b+O8T4jVfyIsZQV1/xeS8jpaBzF0csAk0KLXoHCxU7cKYZjo1Q==";
+        url = "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz";
+        sha512 = "sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==";
       };
     };
     "extend-3.0.2" = {
@@ -4046,13 +4118,13 @@ let
         sha512 = "g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==";
       };
     };
-    "fast-glob-3.2.7" = {
+    "fast-glob-3.2.11" = {
       name = "fast-glob";
       packageName = "fast-glob";
-      version = "3.2.7";
+      version = "3.2.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz";
-        sha512 = "rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==";
+        url = "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz";
+        sha512 = "xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==";
       };
     };
     "fast-json-stable-stringify-2.1.0" = {
@@ -4091,13 +4163,13 @@ let
         sha512 = "On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==";
       };
     };
-    "fastq-1.12.0" = {
+    "fastq-1.13.0" = {
       name = "fastq";
       packageName = "fastq";
-      version = "1.12.0";
+      version = "1.13.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz";
-        sha512 = "VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==";
+        url = "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz";
+        sha512 = "YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==";
       };
     };
     "faye-websocket-0.11.4" = {
@@ -4145,6 +4217,15 @@ let
         sha512 = "0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==";
       };
     };
+    "filelist-1.0.2" = {
+      name = "filelist";
+      packageName = "filelist";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz";
+        sha512 = "z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==";
+      };
+    };
     "fill-range-4.0.0" = {
       name = "fill-range";
       packageName = "fill-range";
@@ -4244,13 +4325,13 @@ let
         sha512 = "r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==";
       };
     };
-    "flatted-3.2.2" = {
+    "flatted-3.2.5" = {
       name = "flatted";
       packageName = "flatted";
-      version = "3.2.2";
+      version = "3.2.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz";
-        sha512 = "JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==";
+        url = "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz";
+        sha512 = "WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==";
       };
     };
     "flatten-1.0.3" = {
@@ -4262,22 +4343,22 @@ let
         sha512 = "dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==";
       };
     };
-    "flv.js-1.6.1" = {
+    "flv.js-1.6.2" = {
       name = "flv.js";
       packageName = "flv.js";
-      version = "1.6.1";
+      version = "1.6.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/flv.js/-/flv.js-1.6.1.tgz";
-        sha512 = "6/ffUPbFaYf7QsdcZC43PQmEsi9Fwlp89Oq0bz8gNlj0eSMUhyHFxESxuLNSFgIEle+ChxqoF7kL2pL7xdam2A==";
+        url = "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz";
+        sha512 = "xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==";
       };
     };
-    "follow-redirects-1.14.3" = {
+    "follow-redirects-1.14.9" = {
       name = "follow-redirects";
       packageName = "follow-redirects";
-      version = "1.14.3";
+      version = "1.14.9";
       src = fetchurl {
-        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz";
-        sha512 = "3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw==";
+        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz";
+        sha512 = "MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==";
       };
     };
     "fontsource-noto-sans-3.1.5" = {
@@ -4505,6 +4586,15 @@ let
         sha512 = "ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==";
       };
     };
+    "get-symbol-description-1.0.0" = {
+      name = "get-symbol-description";
+      packageName = "get-symbol-description";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz";
+        sha512 = "2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==";
+      };
+    };
     "get-value-2.0.6" = {
       name = "get-value";
       packageName = "get-value";
@@ -4514,13 +4604,13 @@ let
         sha1 = "dc15ca1c672387ca76bd37ac0a395ba2042a2c28";
       };
     };
-    "glob-7.1.7" = {
+    "glob-7.2.0" = {
       name = "glob";
       packageName = "glob";
-      version = "7.1.7";
+      version = "7.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz";
-        sha512 = "OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==";
+        url = "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz";
+        sha512 = "lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==";
       };
     };
     "glob-parent-3.1.0" = {
@@ -4586,22 +4676,22 @@ let
         sha512 = "WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==";
       };
     };
-    "globals-13.11.0" = {
+    "globals-13.13.0" = {
       name = "globals";
       packageName = "globals";
-      version = "13.11.0";
+      version = "13.13.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz";
-        sha512 = "08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==";
+        url = "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz";
+        sha512 = "EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==";
       };
     };
-    "globby-11.0.4" = {
+    "globby-11.1.0" = {
       name = "globby";
       packageName = "globby";
-      version = "11.0.4";
+      version = "11.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz";
-        sha512 = "9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==";
+        url = "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz";
+        sha512 = "jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==";
       };
     };
     "globby-6.1.0" = {
@@ -4640,13 +4730,13 @@ let
         sha512 = "otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==";
       };
     };
-    "graceful-fs-4.2.8" = {
+    "graceful-fs-4.2.10" = {
       name = "graceful-fs";
       packageName = "graceful-fs";
-      version = "4.2.8";
+      version = "4.2.10";
       src = fetchurl {
-        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz";
-        sha512 = "qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==";
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz";
+        sha512 = "9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==";
       };
     };
     "handle-thing-2.0.1" = {
@@ -4721,13 +4811,13 @@ let
         sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==";
       };
     };
-    "has-symbols-1.0.2" = {
+    "has-symbols-1.0.3" = {
       name = "has-symbols";
       packageName = "has-symbols";
-      version = "1.0.2";
+      version = "1.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz";
-        sha512 = "chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==";
+        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz";
+        sha512 = "l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==";
       };
     };
     "has-tostringtag-1.0.0" = {
@@ -4820,13 +4910,13 @@ let
         sha512 = "mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==";
       };
     };
-    "hosted-git-info-4.0.2" = {
+    "hosted-git-info-4.1.0" = {
       name = "hosted-git-info";
       packageName = "hosted-git-info";
-      version = "4.0.2";
+      version = "4.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz";
-        sha512 = "c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==";
+        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz";
+        sha512 = "kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==";
       };
     };
     "hpack.js-2.1.6" = {
@@ -4955,22 +5045,22 @@ let
         sha1 = "8b55680bb4be283a0b5bf4ea2e38580be1d9320d";
       };
     };
-    "http-errors-1.7.2" = {
+    "http-errors-1.8.1" = {
       name = "http-errors";
       packageName = "http-errors";
-      version = "1.7.2";
+      version = "1.8.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
-        sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==";
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz";
+        sha512 = "Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==";
       };
     };
-    "http-parser-js-0.5.3" = {
+    "http-parser-js-0.5.6" = {
       name = "http-parser-js";
       packageName = "http-parser-js";
-      version = "0.5.3";
+      version = "0.5.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz";
-        sha512 = "t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==";
+        url = "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz";
+        sha512 = "vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==";
       };
     };
     "http-proxy-1.18.1" = {
@@ -5027,13 +5117,13 @@ let
         sha512 = "soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==";
       };
     };
-    "idb-6.1.3" = {
+    "idb-6.1.5" = {
       name = "idb";
       packageName = "idb";
-      version = "6.1.3";
+      version = "6.1.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/idb/-/idb-6.1.3.tgz";
-        sha512 = "oIRDpVcs5KXpI1hRnTJUwkY63RB/7iqu9nSNuzXN8TLHjs7oO20IoPFbBTsqxIL5IjzIUDi+FXlVcK4zm26J8A==";
+        url = "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz";
+        sha512 = "IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==";
       };
     };
     "ignore-4.0.6" = {
@@ -5045,13 +5135,13 @@ let
         sha512 = "cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==";
       };
     };
-    "ignore-5.1.8" = {
+    "ignore-5.2.0" = {
       name = "ignore";
       packageName = "ignore";
-      version = "5.1.8";
+      version = "5.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz";
-        sha512 = "BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==";
+        url = "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz";
+        sha512 = "CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==";
       };
     };
     "immediate-3.0.6" = {
@@ -5063,6 +5153,15 @@ let
         sha1 = "9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b";
       };
     };
+    "immutable-4.0.0" = {
+      name = "immutable";
+      packageName = "immutable";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz";
+        sha512 = "zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==";
+      };
+    };
     "import-cwd-2.1.0" = {
       name = "import-cwd";
       packageName = "import-cwd";
@@ -5126,13 +5225,13 @@ let
         sha512 = "b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==";
       };
     };
-    "import-local-3.0.2" = {
+    "import-local-3.1.0" = {
       name = "import-local";
       packageName = "import-local";
-      version = "3.0.2";
+      version = "3.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz";
-        sha512 = "vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==";
+        url = "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz";
+        sha512 = "ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==";
       };
     };
     "imurmurhash-0.1.4" = {
@@ -5450,13 +5549,13 @@ let
         sha1 = "cfff471aee4dd5c9e158598fbe12967b5cdad345";
       };
     };
-    "is-core-module-2.6.0" = {
+    "is-core-module-2.8.1" = {
       name = "is-core-module";
       packageName = "is-core-module";
-      version = "2.6.0";
+      version = "2.8.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz";
-        sha512 = "wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==";
+        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz";
+        sha512 = "SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==";
       };
     };
     "is-data-descriptor-0.1.4" = {
@@ -5576,13 +5675,13 @@ let
         sha1 = "7ba5ae24217804ac70707b96922567486cc3e84a";
       };
     };
-    "is-glob-4.0.1" = {
+    "is-glob-4.0.3" = {
       name = "is-glob";
       packageName = "is-glob";
-      version = "4.0.1";
+      version = "4.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz";
-        sha512 = "5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==";
+        url = "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz";
+        sha512 = "xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==";
       };
     };
     "is-hexadecimal-1.0.4" = {
@@ -5603,13 +5702,13 @@ let
         sha1 = "3258fb69f78c14d5b815d664336b4cffb6441591";
       };
     };
-    "is-negative-zero-2.0.1" = {
+    "is-negative-zero-2.0.2" = {
       name = "is-negative-zero";
       packageName = "is-negative-zero";
-      version = "2.0.1";
+      version = "2.0.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz";
-        sha512 = "2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==";
+        url = "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz";
+        sha512 = "dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==";
       };
     };
     "is-number-3.0.0" = {
@@ -5630,13 +5729,13 @@ let
         sha512 = "41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==";
       };
     };
-    "is-number-object-1.0.6" = {
+    "is-number-object-1.0.7" = {
       name = "is-number-object";
       packageName = "is-number-object";
-      version = "1.0.6";
+      version = "1.0.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz";
-        sha512 = "bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==";
+        url = "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz";
+        sha512 = "k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==";
       };
     };
     "is-obj-1.0.1" = {
@@ -5747,6 +5846,15 @@ let
         sha512 = "qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==";
       };
     };
+    "is-shared-array-buffer-1.0.2" = {
+      name = "is-shared-array-buffer";
+      packageName = "is-shared-array-buffer";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz";
+        sha512 = "sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==";
+      };
+    };
     "is-stream-1.1.0" = {
       name = "is-stream";
       packageName = "is-stream";
@@ -5810,6 +5918,15 @@ let
         sha512 = "knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==";
       };
     };
+    "is-weakref-1.0.2" = {
+      name = "is-weakref";
+      packageName = "is-weakref";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz";
+        sha512 = "qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==";
+      };
+    };
     "is-whitespace-character-1.0.4" = {
       name = "is-whitespace-character";
       packageName = "is-whitespace-character";
@@ -5891,13 +6008,22 @@ let
         sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df";
       };
     };
-    "jellyfin-apiclient-1.8.0" = {
+    "jake-10.8.4" = {
+      name = "jake";
+      packageName = "jake";
+      version = "10.8.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jake/-/jake-10.8.4.tgz";
+        sha512 = "MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA==";
+      };
+    };
+    "jellyfin-apiclient-1.10.0" = {
       name = "jellyfin-apiclient";
       packageName = "jellyfin-apiclient";
-      version = "1.8.0";
+      version = "1.10.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jellyfin-apiclient/-/jellyfin-apiclient-1.8.0.tgz";
-        sha512 = "fwAF1G89amm3uO2Yw0E26fW5X6JoyRUnOdBEeuSN04/NpdKKVHD4u53dgqF0jHzXNuKdn5eh0AuV37cMKzBanA==";
+        url = "https://registry.npmjs.org/jellyfin-apiclient/-/jellyfin-apiclient-1.10.0.tgz";
+        sha512 = "Y7Py/xuAznOhSuADihalrw4et3uTaDLbaClAoYzPMPQaPEjdP8dIST1kFEskOU30Iw28pi+S0byTEHDbQglIvQ==";
       };
     };
     "jest-worker-26.6.2" = {
@@ -5909,13 +6035,13 @@ let
         sha512 = "KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==";
       };
     };
-    "jest-worker-27.1.0" = {
+    "jest-worker-27.5.1" = {
       name = "jest-worker";
       packageName = "jest-worker";
-      version = "27.1.0";
+      version = "27.5.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jest-worker/-/jest-worker-27.1.0.tgz";
-        sha512 = "mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==";
+        url = "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz";
+        sha512 = "7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==";
       };
     };
     "jquery-3.6.0" = {
@@ -5990,13 +6116,13 @@ let
         sha512 = "xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==";
       };
     };
-    "json-schema-0.3.0" = {
+    "json-schema-0.4.0" = {
       name = "json-schema";
       packageName = "json-schema";
-      version = "0.3.0";
+      version = "0.4.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.3.0.tgz";
-        sha512 = "TYfxx36xfl52Rf1LU9HyWSLGPdYLL+SQ8/E/0yVyKG8wCCDaSrhPap0vEdlsZWRaS6tnKKLPGiEJGiREVC8kxQ==";
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz";
+        sha512 = "es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==";
       };
     };
     "json-schema-traverse-0.4.1" = {
@@ -6026,15 +6152,6 @@ let
         sha1 = "9db7b59496ad3f3cfef30a75142d2d930ad72651";
       };
     };
-    "json3-3.3.3" = {
-      name = "json3";
-      packageName = "json3";
-      version = "3.3.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz";
-        sha512 = "c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==";
-      };
-    };
     "json5-1.0.1" = {
       name = "json5";
       packageName = "json5";
@@ -6044,13 +6161,13 @@ let
         sha512 = "aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==";
       };
     };
-    "json5-2.2.0" = {
+    "json5-2.2.1" = {
       name = "json5";
       packageName = "json5";
-      version = "2.2.0";
+      version = "2.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz";
-        sha512 = "f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==";
+        url = "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz";
+        sha512 = "1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==";
       };
     };
     "jsonfile-6.1.0" = {
@@ -6062,13 +6179,13 @@ let
         sha512 = "5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==";
       };
     };
-    "jsonpointer-4.1.0" = {
+    "jsonpointer-5.0.0" = {
       name = "jsonpointer";
       packageName = "jsonpointer";
-      version = "4.1.0";
+      version = "5.0.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz";
-        sha512 = "CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==";
+        url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz";
+        sha512 = "PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==";
       };
     };
     "jstree-3.3.12" = {
@@ -6080,13 +6197,13 @@ let
         sha512 = "vHNLWkUr02ZYH7RcIckvhtLUtneWCVEtIKpIp2G9WtRh01ITv18EoNtNQcFG3ozM+oK6wp1Z300gSLXNQWCqGA==";
       };
     };
-    "jszip-3.7.1" = {
+    "jszip-3.9.0" = {
       name = "jszip";
       packageName = "jszip";
-      version = "3.7.1";
+      version = "3.9.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz";
-        sha512 = "ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==";
+        url = "https://registry.npmjs.org/jszip/-/jszip-3.9.0.tgz";
+        sha512 = "Vb3SMfASUN1EKrFzv5A5+lTaZnzLzT5E6A9zyT7WFqMSfhT2Z7iS5FgSOjx2Olm3MDj8OqKj6GHyP2kMt1Ir6w==";
       };
     };
     "killable-1.0.1" = {
@@ -6134,13 +6251,13 @@ let
         sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==";
       };
     };
-    "klona-2.0.4" = {
+    "klona-2.0.5" = {
       name = "klona";
       packageName = "klona";
-      version = "2.0.4";
+      version = "2.0.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz";
-        sha512 = "ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==";
+        url = "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz";
+        sha512 = "pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==";
       };
     };
     "known-css-properties-0.11.0" = {
@@ -6225,13 +6342,13 @@ let
         sha512 = "UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==";
       };
     };
-    "lines-and-columns-1.1.6" = {
+    "lines-and-columns-1.2.4" = {
       name = "lines-and-columns";
       packageName = "lines-and-columns";
-      version = "1.1.6";
+      version = "1.2.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz";
-        sha1 = "1c00c743b433cd0a4e80758f7b64a57440d9ff00";
+        url = "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz";
+        sha512 = "7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==";
       };
     };
     "load-json-file-4.0.0" = {
@@ -6261,13 +6378,13 @@ let
         sha512 = "qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==";
       };
     };
-    "loader-utils-2.0.0" = {
+    "loader-utils-2.0.2" = {
       name = "loader-utils";
       packageName = "loader-utils";
-      version = "2.0.0";
+      version = "2.0.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz";
-        sha512 = "rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==";
+        url = "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz";
+        sha512 = "TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==";
       };
     };
     "localforage-1.10.0" = {
@@ -6324,15 +6441,6 @@ let
         sha512 = "v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==";
       };
     };
-    "lodash.clonedeep-4.5.0" = {
-      name = "lodash.clonedeep";
-      packageName = "lodash.clonedeep";
-      version = "4.5.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz";
-        sha1 = "e23f3f9c4f8fbdde872529c1071857a086e5ccef";
-      };
-    };
     "lodash.debounce-4.0.8" = {
       name = "lodash.debounce";
       packageName = "lodash.debounce";
@@ -6414,13 +6522,13 @@ let
         sha512 = "8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==";
       };
     };
-    "loglevel-1.7.1" = {
+    "loglevel-1.8.0" = {
       name = "loglevel";
       packageName = "loglevel";
-      version = "1.7.1";
+      version = "1.8.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz";
-        sha512 = "Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==";
+        url = "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz";
+        sha512 = "G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==";
       };
     };
     "longest-streak-2.0.4" = {
@@ -6459,13 +6567,13 @@ let
         sha512 = "Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==";
       };
     };
-    "magic-string-0.25.7" = {
+    "magic-string-0.25.9" = {
       name = "magic-string";
       packageName = "magic-string";
-      version = "0.25.7";
+      version = "0.25.9";
       src = fetchurl {
-        url = "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz";
-        sha512 = "4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==";
+        url = "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz";
+        sha512 = "RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==";
       };
     };
     "make-dir-3.1.0" = {
@@ -6504,13 +6612,13 @@ let
         sha1 = "a65cd29087a92598b8791257a523e021222ac1f9";
       };
     };
-    "map-obj-4.2.1" = {
+    "map-obj-4.3.0" = {
       name = "map-obj";
       packageName = "map-obj";
-      version = "4.2.1";
+      version = "4.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz";
-        sha512 = "+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==";
+        url = "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz";
+        sha512 = "hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==";
       };
     };
     "map-visit-1.0.0" = {
@@ -6549,13 +6657,13 @@ let
         sha512 = "Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==";
       };
     };
-    "material-design-icons-iconfont-6.1.0" = {
+    "material-design-icons-iconfont-6.5.0" = {
       name = "material-design-icons-iconfont";
       packageName = "material-design-icons-iconfont";
-      version = "6.1.0";
+      version = "6.5.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.1.0.tgz";
-        sha512 = "wRJtOo1v1ch+gN8PRsj0IGJznk+kQ8mz13ds/nuhLI+Qyf/931ZlRpd92oq0IRPpZIb+bhX8pRjzIVdcPDKmiQ==";
+        url = "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-6.5.0.tgz";
+        sha512 = "ImxSGnW7o5InRxgpL1UUuTPkBsgjzdQ8m7YBe5SdLfyjfcbIYVSHNHzBablNEVuliRdM8efa6mqiFtt8BQyMwA==";
       };
     };
     "mathml-tag-names-2.1.3" = {
@@ -6711,13 +6819,13 @@ let
         sha512 = "MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==";
       };
     };
-    "micromatch-4.0.4" = {
+    "micromatch-4.0.5" = {
       name = "micromatch";
       packageName = "micromatch";
-      version = "4.0.4";
+      version = "4.0.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz";
-        sha512 = "pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==";
+        url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz";
+        sha512 = "DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==";
       };
     };
     "mime-1.6.0" = {
@@ -6729,31 +6837,31 @@ let
         sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
       };
     };
-    "mime-2.5.2" = {
+    "mime-2.6.0" = {
       name = "mime";
       packageName = "mime";
-      version = "2.5.2";
+      version = "2.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz";
-        sha512 = "tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==";
+        url = "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz";
+        sha512 = "USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==";
       };
     };
-    "mime-db-1.49.0" = {
+    "mime-db-1.52.0" = {
       name = "mime-db";
       packageName = "mime-db";
-      version = "1.49.0";
+      version = "1.52.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz";
-        sha512 = "CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==";
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz";
+        sha512 = "sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==";
       };
     };
-    "mime-types-2.1.32" = {
+    "mime-types-2.1.35" = {
       name = "mime-types";
       packageName = "mime-types";
-      version = "2.1.32";
+      version = "2.1.35";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz";
-        sha512 = "hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==";
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz";
+        sha512 = "ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==";
       };
     };
     "mimic-fn-2.1.0" = {
@@ -6783,22 +6891,22 @@ let
         sha512 = "UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==";
       };
     };
-    "minimatch-3.0.4" = {
+    "minimatch-3.1.2" = {
       name = "minimatch";
       packageName = "minimatch";
-      version = "3.0.4";
+      version = "3.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
-        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz";
+        sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==";
       };
     };
-    "minimist-1.2.5" = {
+    "minimist-1.2.6" = {
       name = "minimist";
       packageName = "minimist";
-      version = "1.2.5";
+      version = "1.2.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
-        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz";
+        sha512 = "Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==";
       };
     };
     "minimist-options-3.0.2" = {
@@ -6819,13 +6927,13 @@ let
         sha512 = "Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==";
       };
     };
-    "minipass-3.1.3" = {
+    "minipass-3.1.6" = {
       name = "minipass";
       packageName = "minipass";
-      version = "3.1.3";
+      version = "3.1.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz";
-        sha512 = "Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==";
+        url = "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz";
+        sha512 = "rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==";
       };
     };
     "minipass-collect-1.0.2" = {
@@ -6873,13 +6981,13 @@ let
         sha512 = "WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==";
       };
     };
-    "mkdirp-0.5.5" = {
+    "mkdirp-0.5.6" = {
       name = "mkdirp";
       packageName = "mkdirp";
-      version = "0.5.5";
+      version = "0.5.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
-        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz";
+        sha512 = "FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==";
       };
     };
     "mkdirp-1.0.4" = {
@@ -6900,22 +7008,22 @@ let
         sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
       };
     };
-    "ms-2.1.1" = {
+    "ms-2.1.2" = {
       name = "ms";
       packageName = "ms";
-      version = "2.1.1";
+      version = "2.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
-        sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
       };
     };
-    "ms-2.1.2" = {
+    "ms-2.1.3" = {
       name = "ms";
       packageName = "ms";
-      version = "2.1.2";
+      version = "2.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
-        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
       };
     };
     "multicast-dns-6.2.3" = {
@@ -6945,13 +7053,13 @@ let
         sha512 = "8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==";
       };
     };
-    "nanoid-3.1.25" = {
+    "nanoid-3.3.2" = {
       name = "nanoid";
       packageName = "nanoid";
-      version = "3.1.25";
+      version = "3.3.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz";
-        sha512 = "rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==";
+        url = "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz";
+        sha512 = "CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==";
       };
     };
     "nanomatch-1.2.13" = {
@@ -6981,13 +7089,13 @@ let
         sha1 = "4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7";
       };
     };
-    "negotiator-0.6.2" = {
+    "negotiator-0.6.3" = {
       name = "negotiator";
       packageName = "negotiator";
-      version = "0.6.2";
+      version = "0.6.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
-        sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz";
+        sha512 = "+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==";
       };
     };
     "neo-async-2.6.2" = {
@@ -6999,13 +7107,13 @@ let
         sha512 = "Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==";
       };
     };
-    "next-tick-1.0.0" = {
+    "next-tick-1.1.0" = {
       name = "next-tick";
       packageName = "next-tick";
-      version = "1.0.0";
+      version = "1.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz";
-        sha1 = "ca86d1fe8828169b0120208e3dc8424b9db8342c";
+        url = "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz";
+        sha512 = "CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==";
       };
     };
     "nice-try-1.0.5" = {
@@ -7035,13 +7143,13 @@ let
         sha512 = "PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==";
       };
     };
-    "node-releases-1.1.75" = {
+    "node-releases-2.0.2" = {
       name = "node-releases";
       packageName = "node-releases";
-      version = "1.1.75";
+      version = "2.0.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz";
-        sha512 = "Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==";
+        url = "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz";
+        sha512 = "XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==";
       };
     };
     "normalize-package-data-2.5.0" = {
@@ -7134,13 +7242,13 @@ let
         sha512 = "WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==";
       };
     };
-    "nth-check-2.0.0" = {
+    "nth-check-2.0.1" = {
       name = "nth-check";
       packageName = "nth-check";
-      version = "2.0.0";
+      version = "2.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz";
-        sha512 = "i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==";
+        url = "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz";
+        sha512 = "it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==";
       };
     };
     "num2fraction-1.2.2" = {
@@ -7170,13 +7278,13 @@ let
         sha1 = "7e7d858b781bd7c991a41ba975ed3812754e998c";
       };
     };
-    "object-inspect-1.11.0" = {
+    "object-inspect-1.12.0" = {
       name = "object-inspect";
       packageName = "object-inspect";
-      version = "1.11.0";
+      version = "1.12.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz";
-        sha512 = "jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==";
+        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz";
+        sha512 = "Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==";
       };
     };
     "object-is-1.1.5" = {
@@ -7215,13 +7323,13 @@ let
         sha512 = "ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==";
       };
     };
-    "object.getownpropertydescriptors-2.1.2" = {
+    "object.getownpropertydescriptors-2.1.3" = {
       name = "object.getownpropertydescriptors";
       packageName = "object.getownpropertydescriptors";
-      version = "2.1.2";
+      version = "2.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz";
-        sha512 = "WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==";
+        url = "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz";
+        sha512 = "VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==";
       };
     };
     "object.pick-1.3.0" = {
@@ -7233,13 +7341,13 @@ let
         sha1 = "87a10ac4c1694bd2e1cbf53591a66141fb5dd747";
       };
     };
-    "object.values-1.1.4" = {
+    "object.values-1.1.5" = {
       name = "object.values";
       packageName = "object.values";
-      version = "1.1.4";
+      version = "1.1.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz";
-        sha512 = "TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==";
+        url = "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz";
+        sha512 = "QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==";
       };
     };
     "obuf-1.1.2" = {
@@ -7656,13 +7764,31 @@ let
         sha512 = "xGDUhnCYPfHy+unMXCLCJtlpZaaZ17Ew3WIL0tnSgKFUZXHAPD49GO9xScyszSsQMoutNDgRb+rfBXIaX/lJbw==";
       };
     };
-    "picomatch-2.3.0" = {
+    "picocolors-0.2.1" = {
+      name = "picocolors";
+      packageName = "picocolors";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz";
+        sha512 = "cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==";
+      };
+    };
+    "picocolors-1.0.0" = {
+      name = "picocolors";
+      packageName = "picocolors";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz";
+        sha512 = "1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==";
+      };
+    };
+    "picomatch-2.3.1" = {
       name = "picomatch";
       packageName = "picomatch";
-      version = "2.3.0";
+      version = "2.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz";
-        sha512 = "lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==";
+        url = "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz";
+        sha512 = "JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==";
       };
     };
     "pify-2.3.0" = {
@@ -7710,15 +7836,6 @@ let
         sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
       };
     };
-    "pkg-dir-2.0.0" = {
-      name = "pkg-dir";
-      packageName = "pkg-dir";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz";
-        sha1 = "f6d5d1109e19d63edf428e0bd57e12777615334b";
-      };
-    };
     "pkg-dir-3.0.0" = {
       name = "pkg-dir";
       packageName = "pkg-dir";
@@ -7737,15 +7854,6 @@ let
         sha512 = "HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==";
       };
     };
-    "pkg-up-2.0.0" = {
-      name = "pkg-up";
-      packageName = "pkg-up";
-      version = "2.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz";
-        sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
-      };
-    };
     "plur-2.1.2" = {
       name = "plur";
       packageName = "plur";
@@ -7782,22 +7890,22 @@ let
         sha512 = "zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==";
       };
     };
-    "postcss-7.0.36" = {
+    "postcss-7.0.39" = {
       name = "postcss";
       packageName = "postcss";
-      version = "7.0.36";
+      version = "7.0.39";
       src = fetchurl {
-        url = "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz";
-        sha512 = "BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==";
+        url = "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz";
+        sha512 = "yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==";
       };
     };
-    "postcss-8.3.6" = {
+    "postcss-8.4.12" = {
       name = "postcss";
       packageName = "postcss";
-      version = "8.3.6";
+      version = "8.4.12";
       src = fetchurl {
-        url = "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz";
-        sha512 = "wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==";
+        url = "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz";
+        sha512 = "lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==";
       };
     };
     "postcss-attribute-case-insensitive-4.0.2" = {
@@ -8331,13 +8439,13 @@ let
         sha512 = "Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==";
       };
     };
-    "postcss-preset-env-6.7.0" = {
+    "postcss-preset-env-6.7.1" = {
       name = "postcss-preset-env";
       packageName = "postcss-preset-env";
-      version = "6.7.0";
+      version = "6.7.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz";
-        sha512 = "eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==";
+        url = "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.1.tgz";
+        sha512 = "rlRkgX9t0v2On33n7TK8pnkcYOATGQSv48J2RS8GsXhqtg+xk6AummHP88Y5mJo0TLJelBjePvSjScTNkj3+qw==";
       };
     };
     "postcss-pseudo-class-any-link-6.0.0" = {
@@ -8484,13 +8592,13 @@ let
         sha512 = "w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==";
       };
     };
-    "postcss-selector-parser-6.0.6" = {
+    "postcss-selector-parser-6.0.10" = {
       name = "postcss-selector-parser";
       packageName = "postcss-selector-parser";
-      version = "6.0.6";
+      version = "6.0.10";
       src = fetchurl {
-        url = "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz";
-        sha512 = "9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==";
+        url = "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz";
+        sha512 = "IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==";
       };
     };
     "postcss-sorting-4.1.0" = {
@@ -8547,13 +8655,13 @@ let
         sha512 = "pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==";
       };
     };
-    "postcss-value-parser-4.1.0" = {
+    "postcss-value-parser-4.2.0" = {
       name = "postcss-value-parser";
       packageName = "postcss-value-parser";
-      version = "4.1.0";
+      version = "4.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz";
-        sha512 = "97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==";
+        url = "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz";
+        sha512 = "1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==";
       };
     };
     "postcss-values-parser-2.0.1" = {
@@ -8673,13 +8781,13 @@ let
         sha1 = "7e32f75b41381291d04611f1bf14109ac00651d7";
       };
     };
-    "qs-6.7.0" = {
+    "qs-6.9.7" = {
       name = "qs";
       packageName = "qs";
-      version = "6.7.0";
+      version = "6.9.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
-        sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==";
+        url = "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz";
+        sha512 = "IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==";
       };
     };
     "querystring-0.2.0" = {
@@ -8745,13 +8853,13 @@ let
         sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
       };
     };
-    "raw-body-2.4.0" = {
+    "raw-body-2.4.3" = {
       name = "raw-body";
       packageName = "raw-body";
-      version = "2.4.0";
+      version = "2.4.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
-        sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==";
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz";
+        sha512 = "UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==";
       };
     };
     "read-file-stdin-0.2.1" = {
@@ -8871,13 +8979,13 @@ let
         sha512 = "zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==";
       };
     };
-    "regenerate-unicode-properties-8.2.0" = {
+    "regenerate-unicode-properties-10.0.1" = {
       name = "regenerate-unicode-properties";
       packageName = "regenerate-unicode-properties";
-      version = "8.2.0";
+      version = "10.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz";
-        sha512 = "F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==";
+        url = "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz";
+        sha512 = "vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==";
       };
     };
     "regenerator-runtime-0.13.9" = {
@@ -8907,13 +9015,13 @@ let
         sha512 = "J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==";
       };
     };
-    "regexp.prototype.flags-1.3.1" = {
+    "regexp.prototype.flags-1.4.1" = {
       name = "regexp.prototype.flags";
       packageName = "regexp.prototype.flags";
-      version = "1.3.1";
+      version = "1.4.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz";
-        sha512 = "JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==";
+        url = "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz";
+        sha512 = "pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==";
       };
     };
     "regexpp-3.2.0" = {
@@ -8925,31 +9033,31 @@ let
         sha512 = "pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==";
       };
     };
-    "regexpu-core-4.7.1" = {
+    "regexpu-core-5.0.1" = {
       name = "regexpu-core";
       packageName = "regexpu-core";
-      version = "4.7.1";
+      version = "5.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz";
-        sha512 = "ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==";
+        url = "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz";
+        sha512 = "CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==";
       };
     };
-    "regjsgen-0.5.2" = {
+    "regjsgen-0.6.0" = {
       name = "regjsgen";
       packageName = "regjsgen";
-      version = "0.5.2";
+      version = "0.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz";
-        sha512 = "OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==";
+        url = "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz";
+        sha512 = "ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==";
       };
     };
-    "regjsparser-0.6.9" = {
+    "regjsparser-0.8.4" = {
       name = "regjsparser";
       packageName = "regjsparser";
-      version = "0.6.9";
+      version = "0.8.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz";
-        sha512 = "ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==";
+        url = "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz";
+        sha512 = "J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==";
       };
     };
     "relateurl-0.2.7" = {
@@ -9105,13 +9213,13 @@ let
         sha512 = "LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==";
       };
     };
-    "resolve-1.20.0" = {
+    "resolve-1.22.0" = {
       name = "resolve";
       packageName = "resolve";
-      version = "1.20.0";
+      version = "1.22.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz";
-        sha512 = "wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==";
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz";
+        sha512 = "Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==";
       };
     };
     "resolve-cwd-2.0.0" = {
@@ -9240,13 +9348,13 @@ let
         sha512 = "JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==";
       };
     };
-    "rollup-2.56.3" = {
+    "rollup-2.70.1" = {
       name = "rollup";
       packageName = "rollup";
-      version = "2.56.3";
+      version = "2.70.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz";
-        sha512 = "Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==";
+        url = "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz";
+        sha512 = "CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==";
       };
     };
     "rollup-plugin-terser-7.0.2" = {
@@ -9276,6 +9384,15 @@ let
         sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
       };
     };
+    "safe-buffer-5.2.1" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
+        sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
+      };
+    };
     "safe-regex-1.1.0" = {
       name = "safe-regex";
       packageName = "safe-regex";
@@ -9294,22 +9411,22 @@ let
         sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
       };
     };
-    "sass-1.39.0" = {
+    "sass-1.49.11" = {
       name = "sass";
       packageName = "sass";
-      version = "1.39.0";
+      version = "1.49.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sass/-/sass-1.39.0.tgz";
-        sha512 = "F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==";
+        url = "https://registry.npmjs.org/sass/-/sass-1.49.11.tgz";
+        sha512 = "wvS/geXgHUGs6A/4ud5BFIWKO1nKd7wYIGimDk4q4GFkJicILActpv9ueMT4eRGSsp1BdKHuw1WwAHXbhsJELQ==";
       };
     };
-    "sass-loader-10.2.0" = {
+    "sass-loader-10.2.1" = {
       name = "sass-loader";
       packageName = "sass-loader";
-      version = "10.2.0";
+      version = "10.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.0.tgz";
-        sha512 = "kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw==";
+        url = "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.1.tgz";
+        sha512 = "RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA==";
       };
     };
     "sax-1.2.4" = {
@@ -9348,13 +9465,13 @@ let
         sha512 = "Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==";
       };
     };
-    "screenfull-5.1.0" = {
+    "screenfull-5.2.0" = {
       name = "screenfull";
       packageName = "screenfull";
-      version = "5.1.0";
+      version = "5.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/screenfull/-/screenfull-5.1.0.tgz";
-        sha512 = "dYaNuOdzr+kc6J6CFcBrzkLCfyGcMg+gWkJ8us93IQ7y1cevhQAugFsaCdMHb6lw8KV3xPzSxzH7zM1dQap9mA==";
+        url = "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz";
+        sha512 = "9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==";
       };
     };
     "select-hose-2.0.0" = {
@@ -9366,13 +9483,13 @@ let
         sha1 = "625d8658f865af43ec962bfc376a37359a4994ca";
       };
     };
-    "selfsigned-1.10.11" = {
+    "selfsigned-1.10.14" = {
       name = "selfsigned";
       packageName = "selfsigned";
-      version = "1.10.11";
+      version = "1.10.14";
       src = fetchurl {
-        url = "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz";
-        sha512 = "aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==";
+        url = "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz";
+        sha512 = "lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==";
       };
     };
     "semver-5.7.1" = {
@@ -9411,13 +9528,13 @@ let
         sha512 = "PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==";
       };
     };
-    "send-0.17.1" = {
+    "send-0.17.2" = {
       name = "send";
       packageName = "send";
-      version = "0.17.1";
+      version = "0.17.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
-        sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
+        url = "https://registry.npmjs.org/send/-/send-0.17.2.tgz";
+        sha512 = "UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==";
       };
     };
     "serialize-javascript-4.0.0" = {
@@ -9456,13 +9573,13 @@ let
         sha1 = "d3768d69b1e7d82e5ce050fff5b453bea12a9239";
       };
     };
-    "serve-static-1.14.1" = {
+    "serve-static-1.14.2" = {
       name = "serve-static";
       packageName = "serve-static";
-      version = "1.14.1";
+      version = "1.14.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
-        sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz";
+        sha512 = "+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==";
       };
     };
     "set-blocking-2.0.0" = {
@@ -9501,13 +9618,13 @@ let
         sha512 = "BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==";
       };
     };
-    "setprototypeof-1.1.1" = {
+    "setprototypeof-1.2.0" = {
       name = "setprototypeof";
       packageName = "setprototypeof";
-      version = "1.1.1";
+      version = "1.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
-        sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
+        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz";
+        sha512 = "E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==";
       };
     };
     "shallow-clone-3.0.1" = {
@@ -9564,13 +9681,13 @@ let
         sha512 = "q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==";
       };
     };
-    "signal-exit-3.0.3" = {
+    "signal-exit-3.0.7" = {
       name = "signal-exit";
       packageName = "signal-exit";
-      version = "3.0.3";
+      version = "3.0.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz";
-        sha512 = "VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==";
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz";
+        sha512 = "wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==";
       };
     };
     "simple-swizzle-0.2.2" = {
@@ -9645,31 +9762,31 @@ let
         sha512 = "mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==";
       };
     };
-    "sockjs-0.3.21" = {
+    "sockjs-0.3.24" = {
       name = "sockjs";
       packageName = "sockjs";
-      version = "0.3.21";
+      version = "0.3.24";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz";
-        sha512 = "DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==";
+        url = "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz";
+        sha512 = "GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==";
       };
     };
-    "sockjs-client-1.5.2" = {
+    "sockjs-client-1.6.0" = {
       name = "sockjs-client";
       packageName = "sockjs-client";
-      version = "1.5.2";
+      version = "1.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz";
-        sha512 = "ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==";
+        url = "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.0.tgz";
+        sha512 = "qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ==";
       };
     };
-    "sortablejs-1.14.0" = {
+    "sortablejs-1.15.0" = {
       name = "sortablejs";
       packageName = "sortablejs";
-      version = "1.14.0";
+      version = "1.15.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz";
-        sha512 = "pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==";
+        url = "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz";
+        sha512 = "bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==";
       };
     };
     "source-list-map-2.0.1" = {
@@ -9717,13 +9834,13 @@ let
         sha512 = "2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==";
       };
     };
-    "source-map-js-0.6.2" = {
+    "source-map-js-1.0.2" = {
       name = "source-map-js";
       packageName = "source-map-js";
-      version = "0.6.2";
+      version = "1.0.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz";
-        sha512 = "/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==";
+        url = "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz";
+        sha512 = "R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==";
       };
     };
     "source-map-loader-1.1.3" = {
@@ -9744,13 +9861,13 @@ let
         sha512 = "Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==";
       };
     };
-    "source-map-support-0.5.19" = {
+    "source-map-support-0.5.21" = {
       name = "source-map-support";
       packageName = "source-map-support";
-      version = "0.5.19";
+      version = "0.5.21";
       src = fetchurl {
-        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz";
-        sha512 = "Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==";
+        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz";
+        sha512 = "uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==";
       };
     };
     "source-map-url-0.4.1" = {
@@ -9798,13 +9915,13 @@ let
         sha512 = "cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==";
       };
     };
-    "spdx-license-ids-3.0.10" = {
+    "spdx-license-ids-3.0.11" = {
       name = "spdx-license-ids";
       packageName = "spdx-license-ids";
-      version = "3.0.10";
+      version = "3.0.11";
       src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz";
-        sha512 = "oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==";
+        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz";
+        sha512 = "Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==";
       };
     };
     "spdy-4.0.2" = {
@@ -9915,13 +10032,22 @@ let
         sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
       };
     };
-    "string-width-4.2.2" = {
+    "string-width-4.2.3" = {
       name = "string-width";
       packageName = "string-width";
-      version = "4.2.2";
+      version = "4.2.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz";
-        sha512 = "XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==";
+        url = "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz";
+        sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==";
+      };
+    };
+    "string.prototype.matchall-4.0.7" = {
+      name = "string.prototype.matchall";
+      packageName = "string.prototype.matchall";
+      version = "4.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz";
+        sha512 = "f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==";
       };
     };
     "string.prototype.trimend-1.0.4" = {
@@ -9987,13 +10113,13 @@ let
         sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
       };
     };
-    "strip-ansi-6.0.0" = {
+    "strip-ansi-6.0.1" = {
       name = "strip-ansi";
       packageName = "strip-ansi";
-      version = "6.0.0";
+      version = "6.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz";
-        sha512 = "AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==";
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz";
+        sha512 = "Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==";
       };
     };
     "strip-bom-3.0.0" = {
@@ -10149,13 +10275,13 @@ let
         sha512 = "sVTikaDvMqg2aJjh4r48jsdfmqLT+nqB1MOsaBnvM3OwLx4S+WXcsxsgk5w18h/OZoxZCxuyXMh61iBHcj9Qiw==";
       };
     };
-    "stylelint-scss-3.20.1" = {
+    "stylelint-scss-3.21.0" = {
       name = "stylelint-scss";
       packageName = "stylelint-scss";
-      version = "3.20.1";
+      version = "3.21.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.20.1.tgz";
-        sha512 = "OTd55O1TTAC5nGKkVmUDLpz53LlK39R3MImv1CfuvsK7/qugktqiZAeQLuuC4UBhzxCnsc7fp9u/gfRZwFAIkA==";
+        url = "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.21.0.tgz";
+        sha512 = "CMI2wSHL+XVlNExpauy/+DbUcB/oUZLARDtMIXkpV/5yd8nthzylYd1cdHeDMJVBXeYHldsnebUX6MoV5zPW4A==";
       };
     };
     "sugarss-2.0.0" = {
@@ -10221,6 +10347,15 @@ let
         sha512 = "MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==";
       };
     };
+    "supports-preserve-symlinks-flag-1.0.0" = {
+      name = "supports-preserve-symlinks-flag";
+      packageName = "supports-preserve-symlinks-flag";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz";
+        sha512 = "ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==";
+      };
+    };
     "svg-tags-1.0.0" = {
       name = "svg-tags";
       packageName = "svg-tags";
@@ -10257,13 +10392,13 @@ let
         sha512 = "wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==";
       };
     };
-    "table-6.7.1" = {
+    "table-6.8.0" = {
       name = "table";
       packageName = "table";
-      version = "6.7.1";
+      version = "6.8.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/table/-/table-6.7.1.tgz";
-        sha512 = "ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==";
+        url = "https://registry.npmjs.org/table/-/table-6.8.0.tgz";
+        sha512 = "s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==";
       };
     };
     "tapable-1.1.3" = {
@@ -10275,13 +10410,13 @@ let
         sha512 = "4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==";
       };
     };
-    "tapable-2.2.0" = {
+    "tapable-2.2.1" = {
       name = "tapable";
       packageName = "tapable";
-      version = "2.2.0";
+      version = "2.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz";
-        sha512 = "FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==";
+        url = "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz";
+        sha512 = "GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==";
       };
     };
     "tar-6.1.11" = {
@@ -10320,22 +10455,22 @@ let
         sha512 = "EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==";
       };
     };
-    "terser-5.7.2" = {
+    "terser-5.12.1" = {
       name = "terser";
       packageName = "terser";
-      version = "5.7.2";
+      version = "5.12.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz";
-        sha512 = "0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==";
+        url = "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz";
+        sha512 = "NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==";
       };
     };
-    "terser-webpack-plugin-5.2.3" = {
+    "terser-webpack-plugin-5.3.1" = {
       name = "terser-webpack-plugin";
       packageName = "terser-webpack-plugin";
-      version = "5.2.3";
+      version = "5.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.3.tgz";
-        sha512 = "eDbuaDlXhVaaoKuLD3DTNTozKqln6xOG6Us0SzlKG5tNlazG+/cdl8pm9qiF1Di89iWScTI0HcO+CDcf2dkXiw==";
+        url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz";
+        sha512 = "GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==";
       };
     };
     "text-table-0.2.0" = {
@@ -10410,13 +10545,13 @@ let
         sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==";
       };
     };
-    "toidentifier-1.0.0" = {
+    "toidentifier-1.0.1" = {
       name = "toidentifier";
       packageName = "toidentifier";
-      version = "1.0.0";
+      version = "1.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
-        sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
+        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz";
+        sha512 = "o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==";
       };
     };
     "tr46-1.0.1" = {
@@ -10473,13 +10608,13 @@ let
         sha512 = "rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==";
       };
     };
-    "tsconfig-paths-3.11.0" = {
+    "tsconfig-paths-3.14.1" = {
       name = "tsconfig-paths";
       packageName = "tsconfig-paths";
-      version = "3.11.0";
+      version = "3.14.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz";
-        sha512 = "7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==";
+        url = "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz";
+        sha512 = "fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==";
       };
     };
     "tslib-2.3.1" = {
@@ -10500,13 +10635,13 @@ let
         sha512 = "+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==";
       };
     };
-    "type-2.5.0" = {
+    "type-2.6.0" = {
       name = "type";
       packageName = "type";
-      version = "2.5.0";
+      version = "2.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/type/-/type-2.5.0.tgz";
-        sha512 = "180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==";
+        url = "https://registry.npmjs.org/type/-/type-2.6.0.tgz";
+        sha512 = "eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==";
       };
     };
     "type-check-0.4.0" = {
@@ -10599,40 +10734,40 @@ let
         sha512 = "Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==";
       };
     };
-    "unicode-canonical-property-names-ecmascript-1.0.4" = {
+    "unicode-canonical-property-names-ecmascript-2.0.0" = {
       name = "unicode-canonical-property-names-ecmascript";
       packageName = "unicode-canonical-property-names-ecmascript";
-      version = "1.0.4";
+      version = "2.0.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz";
-        sha512 = "jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==";
+        url = "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz";
+        sha512 = "yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==";
       };
     };
-    "unicode-match-property-ecmascript-1.0.4" = {
+    "unicode-match-property-ecmascript-2.0.0" = {
       name = "unicode-match-property-ecmascript";
       packageName = "unicode-match-property-ecmascript";
-      version = "1.0.4";
+      version = "2.0.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz";
-        sha512 = "L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==";
+        url = "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz";
+        sha512 = "5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==";
       };
     };
-    "unicode-match-property-value-ecmascript-1.2.0" = {
+    "unicode-match-property-value-ecmascript-2.0.0" = {
       name = "unicode-match-property-value-ecmascript";
       packageName = "unicode-match-property-value-ecmascript";
-      version = "1.2.0";
+      version = "2.0.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz";
-        sha512 = "wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==";
+        url = "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz";
+        sha512 = "7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==";
       };
     };
-    "unicode-property-aliases-ecmascript-1.1.0" = {
+    "unicode-property-aliases-ecmascript-2.0.0" = {
       name = "unicode-property-aliases-ecmascript";
       packageName = "unicode-property-aliases-ecmascript";
-      version = "1.1.0";
+      version = "2.0.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz";
-        sha512 = "PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==";
+        url = "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz";
+        sha512 = "5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==";
       };
     };
     "unified-7.1.0" = {
@@ -10860,22 +10995,22 @@ let
         sha1 = "3838e97cfc60521eb73c525a8e55bfdd9e2e28f1";
       };
     };
-    "url-parse-1.5.3" = {
+    "url-parse-1.5.10" = {
       name = "url-parse";
       packageName = "url-parse";
-      version = "1.5.3";
+      version = "1.5.10";
       src = fetchurl {
-        url = "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz";
-        sha512 = "IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==";
+        url = "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz";
+        sha512 = "WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==";
       };
     };
-    "url-toolkit-2.2.3" = {
+    "url-toolkit-2.2.5" = {
       name = "url-toolkit";
       packageName = "url-toolkit";
-      version = "2.2.3";
+      version = "2.2.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.3.tgz";
-        sha512 = "Da75SQoxsZ+2wXS56CZBrj2nukQ4nlGUZUP/dqUBG5E1su5GKThgT94Q00x81eVII7AyS1Pn+CtTTZ4Z0pLUtQ==";
+        url = "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.5.tgz";
+        sha512 = "mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==";
       };
     };
     "use-3.1.1" = {
@@ -10941,6 +11076,15 @@ let
         sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
       };
     };
+    "uuid-8.3.2" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "8.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz";
+        sha512 = "+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==";
+      };
+    };
     "v8-compile-cache-2.3.0" = {
       name = "v8-compile-cache";
       packageName = "v8-compile-cache";
@@ -11022,13 +11166,13 @@ let
         sha512 = "DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==";
       };
     };
-    "watchpack-2.2.0" = {
+    "watchpack-2.3.1" = {
       name = "watchpack";
       packageName = "watchpack";
-      version = "2.2.0";
+      version = "2.3.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz";
-        sha512 = "up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==";
+        url = "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz";
+        sha512 = "x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==";
       };
     };
     "wbuf-1.7.3" = {
@@ -11058,22 +11202,22 @@ let
         sha512 = "YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==";
       };
     };
-    "webpack-5.52.0" = {
+    "webpack-5.71.0" = {
       name = "webpack";
       packageName = "webpack";
-      version = "5.52.0";
+      version = "5.71.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/webpack/-/webpack-5.52.0.tgz";
-        sha512 = "yRZOat8jWGwBwHpco3uKQhVU7HYaNunZiJ4AkAVQkPCUGoZk/tiIXiwG+8HIy/F+qsiZvSOa+GLQOj3q5RKRYg==";
+        url = "https://registry.npmjs.org/webpack/-/webpack-5.71.0.tgz";
+        sha512 = "g4dFT7CFG8LY0iU5G8nBL6VlkT21Z7dcYDpJAEJV5Q1WLb9UwnFbrem1k7K52ILqEmomN7pnzWFxxE6SlDY56A==";
       };
     };
-    "webpack-cli-4.8.0" = {
+    "webpack-cli-4.9.2" = {
       name = "webpack-cli";
       packageName = "webpack-cli";
-      version = "4.8.0";
+      version = "4.9.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.8.0.tgz";
-        sha512 = "+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==";
+        url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz";
+        sha512 = "m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==";
       };
     };
     "webpack-dev-middleware-3.7.3" = {
@@ -11085,13 +11229,13 @@ let
         sha512 = "djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==";
       };
     };
-    "webpack-dev-server-3.11.2" = {
+    "webpack-dev-server-3.11.3" = {
       name = "webpack-dev-server";
       packageName = "webpack-dev-server";
-      version = "3.11.2";
+      version = "3.11.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz";
-        sha512 = "A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==";
+        url = "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz";
+        sha512 = "3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==";
       };
     };
     "webpack-log-2.0.0" = {
@@ -11130,13 +11274,13 @@ let
         sha512 = "lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==";
       };
     };
-    "webpack-sources-3.2.0" = {
+    "webpack-sources-3.2.3" = {
       name = "webpack-sources";
       packageName = "webpack-sources";
-      version = "3.2.0";
+      version = "3.2.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.0.tgz";
-        sha512 = "fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw==";
+        url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz";
+        sha512 = "/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==";
       };
     };
     "websocket-driver-0.7.4" = {
@@ -11247,40 +11391,40 @@ let
         sha512 = "Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==";
       };
     };
-    "workbox-background-sync-6.2.4" = {
+    "workbox-background-sync-6.5.2" = {
       name = "workbox-background-sync";
       packageName = "workbox-background-sync";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.2.4.tgz";
-        sha512 = "uoGgm1PZU6THRzXKlMEntrdA4Xkp6SCfxI7re4heN+yGrtAZq6zMKYhZmsdeW+YGnXS3y5xj7WV03b5TDgLh6A==";
+        url = "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.2.tgz";
+        sha512 = "EjG37LSMDJ1TFlFg56wx6YXbH4/NkG09B9OHvyxx+cGl2gP5OuOzsCY3rOPJSpbcz6jpuA40VIC3HzSD4OvE1g==";
       };
     };
-    "workbox-broadcast-update-6.2.4" = {
+    "workbox-broadcast-update-6.5.2" = {
       name = "workbox-broadcast-update";
       packageName = "workbox-broadcast-update";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.2.4.tgz";
-        sha512 = "0EpML2lbxNkiZUoap4BJDA0Hfz36MhtUd/rRhFvF6YWoRbTQ8tc6tMaRgM1EBIUmIN2OX9qQlkqe5SGGt4lfXQ==";
+        url = "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.2.tgz";
+        sha512 = "DjJYraYnprTZE/AQNoeogaxI1dPuYmbw+ZJeeP8uXBSbg9SNv5wLYofQgywXeRepv4yr/vglMo9yaHUmBMc+4Q==";
       };
     };
-    "workbox-build-6.2.4" = {
+    "workbox-build-6.5.2" = {
       name = "workbox-build";
       packageName = "workbox-build";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-build/-/workbox-build-6.2.4.tgz";
-        sha512 = "01ZbY1BHi+yYvu4yDGZBw9xm1bWyZW0QGWPxiksvSPAsNH/z/NwgtWW14YEroFyG98mmXb7pufWlwl40zE1KTw==";
+        url = "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.2.tgz";
+        sha512 = "TVi4Otf6fgwikBeMpXF9n0awHfZTMNu/nwlMIT9W+c13yvxkmDFMPb7vHYK6RUmbcxwPnz4I/R+uL76+JxG4JQ==";
       };
     };
-    "workbox-cacheable-response-6.2.4" = {
+    "workbox-cacheable-response-6.5.2" = {
       name = "workbox-cacheable-response";
       packageName = "workbox-cacheable-response";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.2.4.tgz";
-        sha512 = "KZSzAOmgWsrk15Wu+geCUSGLIyyzHaORKjH5JnR6qcVZAsm0JXUu2m2OZGqjQ+/eyQwrGdXXqAMW+4wQvTXccg==";
+        url = "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.2.tgz";
+        sha512 = "UnHGih6xqloV808T7ve1iNKZMbpML0jGLqkkmyXkJbZc5j16+HRSV61Qrh+tiq3E3yLvFMGJ3AUBODOPNLWpTg==";
       };
     };
     "workbox-core-5.1.4" = {
@@ -11292,40 +11436,40 @@ let
         sha512 = "+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==";
       };
     };
-    "workbox-core-6.2.4" = {
+    "workbox-core-6.5.2" = {
       name = "workbox-core";
       packageName = "workbox-core";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-core/-/workbox-core-6.2.4.tgz";
-        sha512 = "Nu8X4R4Is3g8uzEJ6qwbW2CGVpzntW/cSf8OfsQGIKQR0nt84FAKzP2cLDaNLp3L/iV9TuhZgCTZzkMiap5/OQ==";
+        url = "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.2.tgz";
+        sha512 = "IlxLGQf+wJHCR+NM0UWqDh4xe/Gu6sg2i4tfZk6WIij34IVk9BdOQgi6WvqSHd879jbQIUgL2fBdJUJyAP5ypQ==";
       };
     };
-    "workbox-expiration-6.2.4" = {
+    "workbox-expiration-6.5.2" = {
       name = "workbox-expiration";
       packageName = "workbox-expiration";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.2.4.tgz";
-        sha512 = "EdOBLunrE3+Ff50y7AYDbiwtiLDvB+oEIkL1Wd9G5d176YVqFfgPfMRzJQ7fN+Yy2NfmsFME0Bw+dQruYekWsQ==";
+        url = "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.2.tgz";
+        sha512 = "5Hfp0uxTZJrgTiy9W7AjIIec+9uTOtnxY/tRBm4DbqcWKaWbVTa+izrKzzOT4MXRJJIJUmvRhWw4oo8tpmMouw==";
       };
     };
-    "workbox-google-analytics-6.2.4" = {
+    "workbox-google-analytics-6.5.2" = {
       name = "workbox-google-analytics";
       packageName = "workbox-google-analytics";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.2.4.tgz";
-        sha512 = "+PWmTouoGGcDupaxM193F2NmgrF597Pyt9eHIDxfed+x+JSSeUkETlbAKwB8rnBHkAjs8JQcvStEP/IpueNKpQ==";
+        url = "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.2.tgz";
+        sha512 = "8SMar+N0xIreP5/2we3dwtN1FUmTMScoopL86aKdXBpio8vXc8Oqb5fCJG32ialjN8BAOzDqx/FnGeCtkIlyvw==";
       };
     };
-    "workbox-navigation-preload-6.2.4" = {
+    "workbox-navigation-preload-6.5.2" = {
       name = "workbox-navigation-preload";
       packageName = "workbox-navigation-preload";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.2.4.tgz";
-        sha512 = "y2dOSsaSdEimqhCmBIFR6kBp+GZbtNtWCBaMFwfKxTAul2uyllKcTKBHnZ9IzxULue6o6voV+I2U8Y8tO8n+eA==";
+        url = "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.2.tgz";
+        sha512 = "iqDNWWMswjCsZuvGFDpcX1Z8InBVAlVBELJ28xShsWWntALzbtr0PXMnm2WHkXCc56JimmGldZi1N5yDPiTPOg==";
       };
     };
     "workbox-precaching-5.1.4" = {
@@ -11337,85 +11481,85 @@ let
         sha512 = "gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==";
       };
     };
-    "workbox-precaching-6.2.4" = {
+    "workbox-precaching-6.5.2" = {
       name = "workbox-precaching";
       packageName = "workbox-precaching";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.2.4.tgz";
-        sha512 = "7POznbVc8EG/mkbXzeb94x3B1VJruPgXvXFgS0NJ3GRugkO4ULs/DpIIb+ycs7uJIKY9EzLS7VXvElr3rMSozQ==";
+        url = "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.2.tgz";
+        sha512 = "OZAlQ8AAT20KugGKKuJMHdQ8X1IyNQaLv+mPTHj+8Dmv8peBq5uWNzs4g/1OSFmXsbXZ6a1CBC6YtQWVPhJQ9w==";
       };
     };
-    "workbox-range-requests-6.2.4" = {
+    "workbox-range-requests-6.5.2" = {
       name = "workbox-range-requests";
       packageName = "workbox-range-requests";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.2.4.tgz";
-        sha512 = "q4jjTXD1QOKbrHnzV3nxdZtIpOiVoIP5QyVmjuJrybVnAZurtyKcqirTQcAcT/zlTvgwm07zcTTk9o/zIB6DmA==";
+        url = "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.2.tgz";
+        sha512 = "zi5VqF1mWqfCyJLTMXn1EuH/E6nisqWDK1VmOJ+TnjxGttaQrseOhMn+BMvULFHeF8AvrQ0ogfQ6bSv0rcfAlg==";
       };
     };
-    "workbox-recipes-6.2.4" = {
+    "workbox-recipes-6.5.2" = {
       name = "workbox-recipes";
       packageName = "workbox-recipes";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.2.4.tgz";
-        sha512 = "z7oECGrt940dw1Bv0xIDJEXY1xARiaxsIedeJOutZFkbgaC/yWG61VTr/hmkeJ8Nx6jnY6W7Rc0iOUvg4sePag==";
+        url = "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.2.tgz";
+        sha512 = "2lcUKMYDiJKvuvRotOxLjH2z9K7jhj8GNUaHxHNkJYbTCUN3LsX1cWrsgeJFDZ/LgI565t3fntpbG9J415ZBXA==";
       };
     };
-    "workbox-routing-6.2.4" = {
+    "workbox-routing-6.5.2" = {
       name = "workbox-routing";
       packageName = "workbox-routing";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.2.4.tgz";
-        sha512 = "jHnOmpeH4MOWR4eXv6l608npD2y6IFv7yFJ1bT9/RbB8wq2vXHXJQ0ExTZRTWGbVltSG22wEU+MQ8VebDDwDeg==";
+        url = "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.2.tgz";
+        sha512 = "nR1w5PjF6IVwo0SX3oE88LhmGFmTnqqU7zpGJQQPZiKJfEKgDENQIM9mh3L1ksdFd9Y3CZVkusopHfxQvit/BA==";
       };
     };
-    "workbox-strategies-6.2.4" = {
+    "workbox-strategies-6.5.2" = {
       name = "workbox-strategies";
       packageName = "workbox-strategies";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.2.4.tgz";
-        sha512 = "DKgGC3ruceDuu2o+Ae5qmJy0p0q21mFP+RrkdqKrjyf2u8cJvvtvt1eIt4nevKc5BESiKxmhC2h+TZpOSzUDvA==";
+        url = "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.2.tgz";
+        sha512 = "fgbwaUMxbG39BHjJIs2y2X21C0bmf1Oq3vMQxJ1hr6y5JMJIm8rvKCcf1EIdAr+PjKdSk4ddmgyBQ4oO8be4Uw==";
       };
     };
-    "workbox-streams-6.2.4" = {
+    "workbox-streams-6.5.2" = {
       name = "workbox-streams";
       packageName = "workbox-streams";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.2.4.tgz";
-        sha512 = "yG6zV7S2NmYT6koyb7/DoPsyUAat9kD+rOmjP2SbBCtJdLu6ZIi1lgN4/rOkxEby/+Xb4OE4RmCSIZdMyjEmhQ==";
+        url = "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.2.tgz";
+        sha512 = "ovD0P4UrgPtZ2Lfc/8E8teb1RqNOSZr+1ZPqLR6sGRZnKZviqKbQC3zVvvkhmOIwhWbpL7bQlWveLVONHjxd5w==";
       };
     };
-    "workbox-sw-6.2.4" = {
+    "workbox-sw-6.5.2" = {
       name = "workbox-sw";
       packageName = "workbox-sw";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.2.4.tgz";
-        sha512 = "OlWLHNNM+j44sN2OaVXnVcf2wwhJUzcHlXrTrbWDu1JWnrQJ/rLicdc/sbxkZoyE0EbQm7Xr1BXcOjsB7PNlXQ==";
+        url = "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.2.tgz";
+        sha512 = "2KhlYqtkoqlnPdllj2ujXUKRuEFsRDIp6rdE4l1PsxiFHRAFaRTisRQpGvRem5yxgXEr+fcEKiuZUW2r70KZaw==";
       };
     };
-    "workbox-webpack-plugin-6.2.4" = {
+    "workbox-webpack-plugin-6.5.2" = {
       name = "workbox-webpack-plugin";
       packageName = "workbox-webpack-plugin";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.2.4.tgz";
-        sha512 = "G6yeOZDYEbtqgNasqwxHFnma0Vp237kMxpsf8JV/YIhvhUuMwnh1WKv4VnFeqmYaWW/ITx0qj92IEMWB/O1mAA==";
+        url = "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.2.tgz";
+        sha512 = "StrJ7wKp5tZuGVcoKLVjFWlhDy+KT7ZWsKnNcD6F08wA9Cpt6JN+PLIrplcsTHbQpoAV8+xg6RvcG0oc9z+RpQ==";
       };
     };
-    "workbox-window-6.2.4" = {
+    "workbox-window-6.5.2" = {
       name = "workbox-window";
       packageName = "workbox-window";
-      version = "6.2.4";
+      version = "6.5.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/workbox-window/-/workbox-window-6.2.4.tgz";
-        sha512 = "9jD6THkwGEASj1YP56ZBHYJ147733FoGpJlMamYk38k/EBFE75oc6K3Vs2tGOBx5ZGq54+mHSStnlrtFG3IiOg==";
+        url = "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.2.tgz";
+        sha512 = "2kZH37r9Wx8swjEOL4B8uGM53lakMxsKkQ7mOKzGA/QAn/DQTEZGrdHWtypk2tbhKY5S0jvPS+sYDnb2Z3378A==";
       };
     };
     "worker-plugin-5.0.1" = {
@@ -11490,15 +11634,6 @@ let
         sha1 = "474b50865af3a49a9c4657f05acd145458f77d82";
       };
     };
-    "xmldom-0.3.0" = {
-      name = "xmldom";
-      packageName = "xmldom";
-      version = "0.3.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/xmldom/-/xmldom-0.3.0.tgz";
-        sha512 = "z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==";
-      };
-    };
     "xtend-4.0.2" = {
       name = "xtend";
       packageName = "xtend";
@@ -11594,61 +11729,64 @@ let
     name = "jellyfin-web";
     packageName = "jellyfin-web";
     version = "0.0.0";
-    src = ../../../../../../../nix/store/4n28kmji75gd671zm8v6xg8ywghv3s2s-source;
+    src = ../../../../../../../../../nix/store/4n28kmji75gd671zm8v6xg8ywghv3s2s-source;
     dependencies = [
-      (sources."@apideck/better-ajv-errors-0.2.5" // {
+      sources."@ampproject/remapping-2.1.2"
+      (sources."@apideck/better-ajv-errors-0.3.3" // {
         dependencies = [
           sources."leven-3.1.0"
         ];
       })
-      sources."@babel/code-frame-7.14.5"
-      sources."@babel/compat-data-7.15.0"
-      sources."@babel/core-7.15.5"
-      sources."@babel/eslint-parser-7.15.4"
-      sources."@babel/eslint-plugin-7.14.5"
-      sources."@babel/generator-7.15.4"
-      sources."@babel/helper-annotate-as-pure-7.15.4"
-      sources."@babel/helper-builder-binary-assignment-operator-visitor-7.15.4"
-      sources."@babel/helper-compilation-targets-7.15.4"
-      sources."@babel/helper-create-class-features-plugin-7.15.4"
-      sources."@babel/helper-create-regexp-features-plugin-7.14.5"
-      sources."@babel/helper-define-polyfill-provider-0.2.3"
-      sources."@babel/helper-explode-assignable-expression-7.15.4"
-      sources."@babel/helper-function-name-7.15.4"
-      sources."@babel/helper-get-function-arity-7.15.4"
-      sources."@babel/helper-hoist-variables-7.15.4"
-      sources."@babel/helper-member-expression-to-functions-7.15.4"
-      sources."@babel/helper-module-imports-7.15.4"
-      sources."@babel/helper-module-transforms-7.15.4"
-      sources."@babel/helper-optimise-call-expression-7.15.4"
-      sources."@babel/helper-plugin-utils-7.14.5"
-      sources."@babel/helper-remap-async-to-generator-7.15.4"
-      sources."@babel/helper-replace-supers-7.15.4"
-      sources."@babel/helper-simple-access-7.15.4"
-      sources."@babel/helper-skip-transparent-expression-wrappers-7.15.4"
-      sources."@babel/helper-split-export-declaration-7.15.4"
-      sources."@babel/helper-validator-identifier-7.14.9"
-      sources."@babel/helper-validator-option-7.14.5"
-      sources."@babel/helper-wrap-function-7.15.4"
-      sources."@babel/helpers-7.15.4"
-      sources."@babel/highlight-7.14.5"
-      sources."@babel/parser-7.15.5"
-      sources."@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4"
-      sources."@babel/plugin-proposal-async-generator-functions-7.15.4"
-      sources."@babel/plugin-proposal-class-properties-7.14.5"
-      sources."@babel/plugin-proposal-class-static-block-7.15.4"
-      sources."@babel/plugin-proposal-dynamic-import-7.14.5"
-      sources."@babel/plugin-proposal-export-namespace-from-7.14.5"
-      sources."@babel/plugin-proposal-json-strings-7.14.5"
-      sources."@babel/plugin-proposal-logical-assignment-operators-7.14.5"
-      sources."@babel/plugin-proposal-nullish-coalescing-operator-7.14.5"
-      sources."@babel/plugin-proposal-numeric-separator-7.14.5"
-      sources."@babel/plugin-proposal-object-rest-spread-7.14.7"
-      sources."@babel/plugin-proposal-optional-catch-binding-7.14.5"
-      sources."@babel/plugin-proposal-optional-chaining-7.14.5"
-      sources."@babel/plugin-proposal-private-methods-7.14.5"
-      sources."@babel/plugin-proposal-private-property-in-object-7.15.4"
-      sources."@babel/plugin-proposal-unicode-property-regex-7.14.5"
+      sources."@babel/code-frame-7.16.7"
+      sources."@babel/compat-data-7.17.7"
+      sources."@babel/core-7.17.8"
+      sources."@babel/eslint-parser-7.17.0"
+      sources."@babel/eslint-plugin-7.17.7"
+      sources."@babel/generator-7.17.7"
+      sources."@babel/helper-annotate-as-pure-7.16.7"
+      sources."@babel/helper-builder-binary-assignment-operator-visitor-7.16.7"
+      sources."@babel/helper-compilation-targets-7.17.7"
+      sources."@babel/helper-create-class-features-plugin-7.17.6"
+      sources."@babel/helper-create-regexp-features-plugin-7.17.0"
+      sources."@babel/helper-define-polyfill-provider-0.3.1"
+      sources."@babel/helper-environment-visitor-7.16.7"
+      sources."@babel/helper-explode-assignable-expression-7.16.7"
+      sources."@babel/helper-function-name-7.16.7"
+      sources."@babel/helper-get-function-arity-7.16.7"
+      sources."@babel/helper-hoist-variables-7.16.7"
+      sources."@babel/helper-member-expression-to-functions-7.17.7"
+      sources."@babel/helper-module-imports-7.16.7"
+      sources."@babel/helper-module-transforms-7.17.7"
+      sources."@babel/helper-optimise-call-expression-7.16.7"
+      sources."@babel/helper-plugin-utils-7.16.7"
+      sources."@babel/helper-remap-async-to-generator-7.16.8"
+      sources."@babel/helper-replace-supers-7.16.7"
+      sources."@babel/helper-simple-access-7.17.7"
+      sources."@babel/helper-skip-transparent-expression-wrappers-7.16.0"
+      sources."@babel/helper-split-export-declaration-7.16.7"
+      sources."@babel/helper-validator-identifier-7.16.7"
+      sources."@babel/helper-validator-option-7.16.7"
+      sources."@babel/helper-wrap-function-7.16.8"
+      sources."@babel/helpers-7.17.8"
+      sources."@babel/highlight-7.16.10"
+      sources."@babel/parser-7.17.8"
+      sources."@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7"
+      sources."@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7"
+      sources."@babel/plugin-proposal-async-generator-functions-7.16.8"
+      sources."@babel/plugin-proposal-class-properties-7.16.7"
+      sources."@babel/plugin-proposal-class-static-block-7.17.6"
+      sources."@babel/plugin-proposal-dynamic-import-7.16.7"
+      sources."@babel/plugin-proposal-export-namespace-from-7.16.7"
+      sources."@babel/plugin-proposal-json-strings-7.16.7"
+      sources."@babel/plugin-proposal-logical-assignment-operators-7.16.7"
+      sources."@babel/plugin-proposal-nullish-coalescing-operator-7.16.7"
+      sources."@babel/plugin-proposal-numeric-separator-7.16.7"
+      sources."@babel/plugin-proposal-object-rest-spread-7.17.3"
+      sources."@babel/plugin-proposal-optional-catch-binding-7.16.7"
+      sources."@babel/plugin-proposal-optional-chaining-7.16.7"
+      sources."@babel/plugin-proposal-private-methods-7.16.11"
+      sources."@babel/plugin-proposal-private-property-in-object-7.16.7"
+      sources."@babel/plugin-proposal-unicode-property-regex-7.16.7"
       sources."@babel/plugin-syntax-async-generators-7.8.4"
       sources."@babel/plugin-syntax-class-properties-7.12.13"
       sources."@babel/plugin-syntax-class-static-block-7.14.5"
@@ -11663,63 +11801,66 @@ let
       sources."@babel/plugin-syntax-optional-chaining-7.8.3"
       sources."@babel/plugin-syntax-private-property-in-object-7.14.5"
       sources."@babel/plugin-syntax-top-level-await-7.14.5"
-      sources."@babel/plugin-transform-arrow-functions-7.14.5"
-      sources."@babel/plugin-transform-async-to-generator-7.14.5"
-      sources."@babel/plugin-transform-block-scoped-functions-7.14.5"
-      sources."@babel/plugin-transform-block-scoping-7.15.3"
-      sources."@babel/plugin-transform-classes-7.15.4"
-      sources."@babel/plugin-transform-computed-properties-7.14.5"
-      sources."@babel/plugin-transform-destructuring-7.14.7"
-      sources."@babel/plugin-transform-dotall-regex-7.14.5"
-      sources."@babel/plugin-transform-duplicate-keys-7.14.5"
-      sources."@babel/plugin-transform-exponentiation-operator-7.14.5"
-      sources."@babel/plugin-transform-for-of-7.15.4"
-      sources."@babel/plugin-transform-function-name-7.14.5"
-      sources."@babel/plugin-transform-literals-7.14.5"
-      sources."@babel/plugin-transform-member-expression-literals-7.14.5"
-      sources."@babel/plugin-transform-modules-amd-7.14.5"
-      sources."@babel/plugin-transform-modules-commonjs-7.15.4"
-      sources."@babel/plugin-transform-modules-systemjs-7.15.4"
-      sources."@babel/plugin-transform-modules-umd-7.14.5"
-      sources."@babel/plugin-transform-named-capturing-groups-regex-7.14.9"
-      sources."@babel/plugin-transform-new-target-7.14.5"
-      sources."@babel/plugin-transform-object-super-7.14.5"
-      sources."@babel/plugin-transform-parameters-7.15.4"
-      sources."@babel/plugin-transform-property-literals-7.14.5"
-      sources."@babel/plugin-transform-regenerator-7.14.5"
-      sources."@babel/plugin-transform-reserved-words-7.14.5"
-      sources."@babel/plugin-transform-shorthand-properties-7.14.5"
-      sources."@babel/plugin-transform-spread-7.14.6"
-      sources."@babel/plugin-transform-sticky-regex-7.14.5"
-      sources."@babel/plugin-transform-template-literals-7.14.5"
-      sources."@babel/plugin-transform-typeof-symbol-7.14.5"
-      sources."@babel/plugin-transform-unicode-escapes-7.14.5"
-      sources."@babel/plugin-transform-unicode-regex-7.14.5"
-      sources."@babel/preset-env-7.15.4"
-      sources."@babel/preset-modules-0.1.4"
-      sources."@babel/runtime-7.15.4"
-      sources."@babel/template-7.15.4"
-      sources."@babel/traverse-7.15.4"
-      sources."@babel/types-7.15.4"
+      sources."@babel/plugin-transform-arrow-functions-7.16.7"
+      sources."@babel/plugin-transform-async-to-generator-7.16.8"
+      sources."@babel/plugin-transform-block-scoped-functions-7.16.7"
+      sources."@babel/plugin-transform-block-scoping-7.16.7"
+      sources."@babel/plugin-transform-classes-7.16.7"
+      sources."@babel/plugin-transform-computed-properties-7.16.7"
+      sources."@babel/plugin-transform-destructuring-7.17.7"
+      sources."@babel/plugin-transform-dotall-regex-7.16.7"
+      sources."@babel/plugin-transform-duplicate-keys-7.16.7"
+      sources."@babel/plugin-transform-exponentiation-operator-7.16.7"
+      sources."@babel/plugin-transform-for-of-7.16.7"
+      sources."@babel/plugin-transform-function-name-7.16.7"
+      sources."@babel/plugin-transform-literals-7.16.7"
+      sources."@babel/plugin-transform-member-expression-literals-7.16.7"
+      sources."@babel/plugin-transform-modules-amd-7.16.7"
+      sources."@babel/plugin-transform-modules-commonjs-7.17.7"
+      sources."@babel/plugin-transform-modules-systemjs-7.17.8"
+      sources."@babel/plugin-transform-modules-umd-7.16.7"
+      sources."@babel/plugin-transform-named-capturing-groups-regex-7.16.8"
+      sources."@babel/plugin-transform-new-target-7.16.7"
+      sources."@babel/plugin-transform-object-super-7.16.7"
+      sources."@babel/plugin-transform-parameters-7.16.7"
+      sources."@babel/plugin-transform-property-literals-7.16.7"
+      sources."@babel/plugin-transform-regenerator-7.16.7"
+      sources."@babel/plugin-transform-reserved-words-7.16.7"
+      sources."@babel/plugin-transform-shorthand-properties-7.16.7"
+      sources."@babel/plugin-transform-spread-7.16.7"
+      sources."@babel/plugin-transform-sticky-regex-7.16.7"
+      sources."@babel/plugin-transform-template-literals-7.16.7"
+      sources."@babel/plugin-transform-typeof-symbol-7.16.7"
+      sources."@babel/plugin-transform-unicode-escapes-7.16.7"
+      sources."@babel/plugin-transform-unicode-regex-7.16.7"
+      sources."@babel/preset-env-7.16.11"
+      sources."@babel/preset-modules-0.1.5"
+      sources."@babel/runtime-7.17.8"
+      sources."@babel/template-7.16.7"
+      sources."@babel/traverse-7.17.3"
+      sources."@babel/types-7.17.0"
       sources."@csstools/convert-colors-1.4.0"
-      sources."@discoveryjs/json-ext-0.5.3"
+      sources."@discoveryjs/json-ext-0.5.7"
       (sources."@eslint/eslintrc-0.4.3" // {
         dependencies = [
-          sources."globals-13.11.0"
+          sources."globals-13.13.0"
           sources."ignore-4.0.6"
           sources."import-fresh-3.3.0"
           sources."resolve-from-4.0.0"
         ];
       })
-      sources."@gar/promisify-1.1.2"
+      sources."@gar/promisify-1.1.3"
       sources."@humanwhocodes/config-array-0.5.0"
-      sources."@humanwhocodes/object-schema-1.2.0"
+      sources."@humanwhocodes/object-schema-1.2.1"
+      sources."@jridgewell/resolve-uri-3.0.5"
+      sources."@jridgewell/sourcemap-codec-1.4.11"
+      sources."@jridgewell/trace-mapping-0.3.4"
       sources."@mdn/browser-compat-data-3.3.14"
       sources."@mrmlnc/readdir-enhanced-2.2.1"
       sources."@nodelib/fs.scandir-2.1.5"
       sources."@nodelib/fs.stat-2.0.5"
       sources."@nodelib/fs.walk-1.2.8"
-      (sources."@npmcli/fs-1.0.0" // {
+      (sources."@npmcli/fs-1.1.1" // {
         dependencies = [
           sources."semver-7.3.5"
         ];
@@ -11729,7 +11870,7 @@ let
           sources."rimraf-3.0.2"
         ];
       })
-      sources."@rollup/plugin-babel-5.3.0"
+      sources."@rollup/plugin-babel-5.3.1"
       sources."@rollup/plugin-node-resolve-11.2.1"
       sources."@rollup/plugin-replace-2.4.2"
       (sources."@rollup/pluginutils-3.1.0" // {
@@ -11739,19 +11880,19 @@ let
       })
       sources."@stylelint/postcss-css-in-js-0.37.2"
       sources."@stylelint/postcss-markdown-0.36.2"
-      sources."@surma/rollup-plugin-off-main-thread-1.4.2"
-      sources."@types/eslint-7.28.0"
-      sources."@types/eslint-scope-3.7.1"
-      sources."@types/estree-0.0.50"
-      sources."@types/glob-7.1.4"
+      sources."@surma/rollup-plugin-off-main-thread-2.2.3"
+      sources."@types/eslint-8.4.1"
+      sources."@types/eslint-scope-3.7.3"
+      sources."@types/estree-0.0.51"
+      sources."@types/glob-7.2.0"
       sources."@types/html-minifier-terser-5.1.2"
-      sources."@types/json-schema-7.0.9"
+      sources."@types/json-schema-7.0.11"
       sources."@types/json5-0.0.29"
       sources."@types/localforage-0.0.34"
       sources."@types/mdast-3.0.10"
       sources."@types/minimatch-3.0.5"
       sources."@types/minimist-1.2.2"
-      sources."@types/node-16.7.10"
+      sources."@types/node-17.0.23"
       sources."@types/normalize-package-data-2.4.1"
       sources."@types/parse-json-4.0.0"
       sources."@types/q-1.5.5"
@@ -11767,7 +11908,7 @@ let
       sources."@types/unist-2.0.6"
       sources."@types/vfile-3.0.2"
       sources."@types/vfile-message-2.0.0"
-      (sources."@types/webpack-4.41.30" // {
+      (sources."@types/webpack-4.41.32" // {
         dependencies = [
           sources."source-map-0.6.1"
         ];
@@ -11793,15 +11934,16 @@ let
       sources."@webassemblyjs/wasm-opt-1.11.1"
       sources."@webassemblyjs/wasm-parser-1.11.1"
       sources."@webassemblyjs/wast-printer-1.11.1"
-      sources."@webpack-cli/configtest-1.0.4"
-      sources."@webpack-cli/info-1.3.0"
-      sources."@webpack-cli/serve-1.5.2"
+      sources."@webpack-cli/configtest-1.1.1"
+      sources."@webpack-cli/info-1.4.1"
+      sources."@webpack-cli/serve-1.6.1"
+      sources."@xmldom/xmldom-0.7.5"
       sources."@xtuc/ieee754-1.2.0"
       sources."@xtuc/long-4.2.2"
       sources."abab-2.0.5"
-      sources."accepts-1.3.7"
+      sources."accepts-1.3.8"
       sources."acorn-7.4.1"
-      sources."acorn-import-assertions-1.7.6"
+      sources."acorn-import-assertions-1.8.0"
       sources."acorn-jsx-5.3.2"
       sources."aggregate-error-3.1.0"
       sources."ajv-6.12.6"
@@ -11809,8 +11951,8 @@ let
       sources."ajv-keywords-3.5.2"
       sources."alphanum-sort-1.0.2"
       sources."ansi-colors-4.1.1"
-      sources."ansi-html-0.0.7"
-      sources."ansi-regex-5.0.0"
+      sources."ansi-html-community-0.0.8"
+      sources."ansi-regex-5.0.1"
       sources."ansi-styles-3.2.1"
       sources."anymatch-3.1.2"
       sources."argparse-1.0.10"
@@ -11819,11 +11961,11 @@ let
       sources."arr-union-3.1.0"
       sources."array-find-index-1.0.2"
       sources."array-flatten-2.1.2"
-      sources."array-includes-3.1.3"
+      sources."array-includes-3.1.4"
       sources."array-union-1.0.2"
       sources."array-uniq-1.0.3"
       sources."array-unique-0.3.2"
-      sources."array.prototype.flat-1.2.4"
+      sources."array.prototype.flat-1.2.5"
       sources."arrify-1.0.1"
       sources."assign-symbols-1.0.0"
       sources."ast-metadata-inferer-0.7.0"
@@ -11833,13 +11975,17 @@ let
       sources."async-limiter-1.0.1"
       sources."at-least-node-1.0.0"
       sources."atob-2.1.2"
-      sources."autoprefixer-9.8.6"
-      sources."babel-loader-8.2.2"
+      (sources."autoprefixer-9.8.8" // {
+        dependencies = [
+          sources."picocolors-0.2.1"
+        ];
+      })
+      sources."babel-loader-8.2.4"
       sources."babel-plugin-dynamic-import-node-2.3.3"
       sources."babel-plugin-dynamic-import-polyfill-1.0.0"
-      sources."babel-plugin-polyfill-corejs2-0.2.2"
-      sources."babel-plugin-polyfill-corejs3-0.2.4"
-      sources."babel-plugin-polyfill-regenerator-0.2.2"
+      sources."babel-plugin-polyfill-corejs2-0.3.1"
+      sources."babel-plugin-polyfill-corejs3-0.5.2"
+      sources."babel-plugin-polyfill-regenerator-0.3.1"
       sources."bail-1.0.5"
       sources."balanced-match-1.0.2"
       (sources."base-0.11.2" // {
@@ -11851,10 +11997,10 @@ let
       sources."big.js-5.2.2"
       sources."binary-extensions-2.2.0"
       sources."bindings-1.5.0"
-      sources."blurhash-1.1.4"
-      (sources."body-parser-1.19.0" // {
+      sources."blurhash-1.1.5"
+      (sources."body-parser-1.19.2" // {
         dependencies = [
-          sources."bytes-3.1.0"
+          sources."bytes-3.1.2"
           sources."debug-2.6.9"
           sources."iconv-lite-0.4.24"
           sources."ms-2.0.0"
@@ -11864,7 +12010,7 @@ let
       sources."boolbase-1.0.0"
       sources."brace-expansion-1.1.11"
       sources."braces-3.0.2"
-      sources."browserslist-4.17.0"
+      sources."browserslist-4.20.2"
       sources."buffer-from-1.1.2"
       sources."buffer-indexof-1.1.1"
       sources."builtin-modules-3.2.0"
@@ -11885,15 +12031,15 @@ let
       sources."camelcase-5.3.1"
       sources."camelcase-keys-6.2.2"
       sources."caniuse-api-3.0.0"
-      sources."caniuse-db-1.0.30001255"
-      sources."caniuse-lite-1.0.30001255"
+      sources."caniuse-db-1.0.30001325"
+      sources."caniuse-lite-1.0.30001325"
       sources."ccount-1.1.0"
       sources."chalk-2.4.2"
       sources."character-entities-1.2.4"
       sources."character-entities-html4-1.1.4"
       sources."character-entities-legacy-1.1.4"
       sources."character-reference-invalid-1.1.4"
-      sources."chokidar-3.5.2"
+      sources."chokidar-3.5.3"
       sources."chownr-2.0.0"
       sources."chrome-trace-event-1.0.3"
       (sources."class-utils-0.3.6" // {
@@ -11915,7 +12061,7 @@ let
         ];
       })
       sources."classlist.js-https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz"
-      (sources."clean-css-4.2.3" // {
+      (sources."clean-css-4.2.4" // {
         dependencies = [
           sources."source-map-0.6.1"
         ];
@@ -11924,7 +12070,7 @@ let
       sources."clean-webpack-plugin-3.0.0"
       (sources."cliui-5.0.0" // {
         dependencies = [
-          sources."ansi-regex-4.1.0"
+          sources."ansi-regex-4.1.1"
           sources."emoji-regex-7.0.3"
           sources."is-fullwidth-code-point-2.0.0"
           sources."string-width-3.1.0"
@@ -11939,10 +12085,10 @@ let
       sources."color-3.2.1"
       sources."color-convert-1.9.3"
       sources."color-name-1.1.3"
-      sources."color-string-1.6.0"
-      sources."colorette-1.3.0"
+      sources."color-string-1.9.0"
+      sources."colorette-2.0.16"
       sources."commander-4.1.1"
-      sources."common-tags-1.8.0"
+      sources."common-tags-1.8.2"
       sources."commondir-1.0.1"
       sources."component-emitter-1.3.0"
       sources."compressible-2.0.18"
@@ -11953,25 +12099,28 @@ let
         ];
       })
       sources."concat-map-0.0.1"
-      sources."confusing-browser-globals-1.0.10"
+      sources."confusing-browser-globals-1.0.11"
       sources."connect-history-api-fallback-1.6.0"
-      sources."content-disposition-0.5.3"
+      (sources."content-disposition-0.5.4" // {
+        dependencies = [
+          sources."safe-buffer-5.2.1"
+        ];
+      })
       sources."content-type-1.0.4"
       sources."convert-source-map-1.8.0"
-      sources."cookie-0.4.0"
+      sources."cookie-0.4.2"
       sources."cookie-signature-1.0.6"
       sources."copy-descriptor-0.1.1"
       (sources."copy-webpack-plugin-6.4.1" // {
         dependencies = [
           sources."array-union-2.1.0"
-          sources."globby-11.0.4"
-          sources."loader-utils-2.0.0"
+          sources."globby-11.1.0"
           sources."p-limit-3.1.0"
           sources."schema-utils-3.1.1"
         ];
       })
-      sources."core-js-3.17.2"
-      (sources."core-js-compat-3.17.2" // {
+      sources."core-js-3.21.1"
+      (sources."core-js-compat-3.21.1" // {
         dependencies = [
           sources."semver-7.0.0"
         ];
@@ -11991,8 +12140,7 @@ let
       })
       (sources."css-loader-5.2.7" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
-          sources."postcss-8.3.6"
+          sources."postcss-8.4.12"
           sources."schema-utils-3.1.1"
           sources."semver-7.3.5"
         ];
@@ -12027,8 +12175,8 @@ let
           sources."type-1.2.0"
         ];
       })
-      sources."date-fns-2.23.0"
-      sources."debug-4.3.2"
+      sources."date-fns-2.28.0"
+      sources."debug-4.3.4"
       sources."decamelize-1.2.0"
       (sources."decamelize-keys-1.1.0" // {
         dependencies = [
@@ -12081,27 +12229,27 @@ let
       sources."dot-case-3.0.4"
       sources."dot-prop-5.3.0"
       sources."ee-first-1.1.1"
-      sources."ejs-2.7.4"
-      sources."electron-to-chromium-1.3.830"
+      sources."ejs-3.1.6"
+      sources."electron-to-chromium-1.4.103"
       sources."emoji-regex-8.0.0"
       sources."emojis-list-3.0.0"
       sources."encodeurl-1.0.2"
       sources."end-of-stream-1.4.4"
-      (sources."enhanced-resolve-5.8.2" // {
+      (sources."enhanced-resolve-5.9.2" // {
         dependencies = [
-          sources."tapable-2.2.0"
+          sources."tapable-2.2.1"
         ];
       })
       sources."enquirer-2.3.6"
       sources."entities-2.2.0"
       sources."envinfo-7.8.1"
-      sources."epubjs-0.3.88"
+      sources."epubjs-0.3.93"
       sources."errno-0.1.8"
       sources."error-ex-1.3.2"
-      sources."es-abstract-1.18.5"
-      sources."es-module-lexer-0.7.1"
+      sources."es-abstract-1.19.2"
+      sources."es-module-lexer-0.9.3"
       sources."es-to-primitive-1.2.1"
-      sources."es5-ext-0.10.53"
+      sources."es5-ext-0.10.59"
       sources."es6-iterator-2.0.3"
       sources."es6-promise-4.2.8"
       sources."es6-symbol-3.1.3"
@@ -12116,7 +12264,7 @@ let
           sources."color-convert-2.0.1"
           sources."color-name-1.1.4"
           sources."escape-string-regexp-4.0.0"
-          sources."globals-13.11.0"
+          sources."globals-13.13.0"
           sources."has-flag-4.0.0"
           sources."ignore-4.0.6"
           sources."import-fresh-3.3.0"
@@ -12130,7 +12278,7 @@ let
           sources."debug-3.2.7"
         ];
       })
-      (sources."eslint-module-utils-2.6.2" // {
+      (sources."eslint-module-utils-2.7.3" // {
         dependencies = [
           sources."debug-3.2.7"
           sources."find-up-2.1.0"
@@ -12139,7 +12287,6 @@ let
           sources."p-locate-2.0.0"
           sources."p-try-1.0.0"
           sources."path-exists-3.0.0"
-          sources."pkg-dir-2.0.0"
         ];
       })
       (sources."eslint-plugin-compat-3.13.0" // {
@@ -12152,17 +12299,11 @@ let
         ];
       })
       sources."eslint-plugin-eslint-comments-3.2.0"
-      (sources."eslint-plugin-import-2.24.2" // {
+      (sources."eslint-plugin-import-2.25.4" // {
         dependencies = [
           sources."debug-2.6.9"
           sources."doctrine-2.1.0"
-          sources."find-up-2.1.0"
-          sources."locate-path-2.0.0"
           sources."ms-2.0.0"
-          sources."p-limit-1.3.0"
-          sources."p-locate-2.0.0"
-          sources."p-try-1.0.0"
-          sources."path-exists-3.0.0"
         ];
       })
       sources."eslint-plugin-promise-4.3.1"
@@ -12182,12 +12323,12 @@ let
       sources."esprima-4.0.1"
       (sources."esquery-1.4.0" // {
         dependencies = [
-          sources."estraverse-5.2.0"
+          sources."estraverse-5.3.0"
         ];
       })
       (sources."esrecurse-4.3.0" // {
         dependencies = [
-          sources."estraverse-5.2.0"
+          sources."estraverse-5.3.0"
         ];
       })
       sources."estraverse-4.3.0"
@@ -12223,19 +12364,19 @@ let
       })
       (sources."expose-loader-1.0.3" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
           sources."schema-utils-3.1.1"
         ];
       })
-      (sources."express-4.17.1" // {
+      (sources."express-4.17.3" // {
         dependencies = [
           sources."array-flatten-1.1.1"
           sources."debug-2.6.9"
           sources."ms-2.0.0"
           sources."path-to-regexp-0.1.7"
+          sources."safe-buffer-5.2.1"
         ];
       })
-      sources."ext-1.5.0"
+      sources."ext-1.6.0"
       sources."extend-3.0.2"
       (sources."extend-shallow-3.0.2" // {
         dependencies = [
@@ -12249,21 +12390,21 @@ let
         ];
       })
       sources."fast-deep-equal-3.1.3"
-      sources."fast-glob-3.2.7"
+      sources."fast-glob-3.2.11"
       sources."fast-json-stable-stringify-2.1.0"
       sources."fast-levenshtein-2.0.6"
       sources."fast-text-encoding-1.0.3"
       sources."fastest-levenshtein-1.0.12"
-      sources."fastq-1.12.0"
+      sources."fastq-1.13.0"
       sources."faye-websocket-0.11.4"
       sources."file-entry-cache-6.0.1"
       (sources."file-loader-6.2.0" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
           sources."schema-utils-3.1.1"
         ];
       })
       sources."file-uri-to-path-1.0.0"
+      sources."filelist-1.0.2"
       sources."fill-range-7.0.1"
       (sources."finalhandler-1.1.2" // {
         dependencies = [
@@ -12278,10 +12419,10 @@ let
           sources."rimraf-3.0.2"
         ];
       })
-      sources."flatted-3.2.2"
+      sources."flatted-3.2.5"
       sources."flatten-1.0.3"
-      sources."flv.js-1.6.1"
-      sources."follow-redirects-1.14.3"
+      sources."flv.js-1.6.2"
+      sources."follow-redirects-1.14.9"
       sources."fontsource-noto-sans-3.1.5"
       sources."fontsource-noto-sans-hk-3.1.5"
       sources."fontsource-noto-sans-jp-3.1.5"
@@ -12304,8 +12445,9 @@ let
       sources."get-own-enumerable-property-symbols-3.0.2"
       sources."get-stdin-8.0.0"
       sources."get-stream-6.0.1"
+      sources."get-symbol-description-1.0.0"
       sources."get-value-2.0.6"
-      sources."glob-7.1.7"
+      sources."glob-7.2.0"
       sources."glob-parent-5.1.2"
       sources."glob-to-regexp-0.3.0"
       sources."global-modules-2.0.0"
@@ -12322,7 +12464,7 @@ let
       })
       sources."globjoin-0.1.4"
       sources."gonzales-pe-4.3.0"
-      sources."graceful-fs-4.2.8"
+      sources."graceful-fs-4.2.10"
       sources."handle-thing-2.0.1"
       sources."hard-rejection-2.1.0"
       sources."has-1.0.3"
@@ -12333,7 +12475,7 @@ let
       })
       sources."has-bigints-1.0.1"
       sources."has-flag-3.0.0"
-      sources."has-symbols-1.0.2"
+      sources."has-symbols-1.0.3"
       sources."has-tostringtag-1.0.0"
       sources."has-value-1.0.0"
       (sources."has-values-1.0.0" // {
@@ -12351,14 +12493,13 @@ let
       sources."headroom.js-0.12.0"
       sources."hex-color-regex-1.1.0"
       sources."hls.js-0.14.17"
-      sources."hosted-git-info-2.8.9"
+      sources."hosted-git-info-4.1.0"
       sources."hpack.js-2.1.6"
       sources."hsl-regex-1.0.0"
       sources."hsla-regex-1.0.0"
       sources."html-entities-1.4.0"
       (sources."html-loader-1.3.2" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
           sources."schema-utils-3.1.1"
         ];
       })
@@ -12366,6 +12507,8 @@ let
       sources."html-tags-3.1.0"
       (sources."html-webpack-plugin-4.5.2" // {
         dependencies = [
+          sources."json5-1.0.1"
+          sources."loader-utils-1.4.0"
           sources."util.promisify-1.0.0"
         ];
       })
@@ -12373,24 +12516,20 @@ let
         dependencies = [
           (sources."dom-serializer-1.3.2" // {
             dependencies = [
-              sources."domhandler-4.2.2"
+              sources."domhandler-4.3.1"
             ];
           })
           sources."domelementtype-2.2.0"
           (sources."domutils-2.8.0" // {
             dependencies = [
-              sources."domhandler-4.2.2"
+              sources."domhandler-4.3.1"
             ];
           })
         ];
       })
       sources."http-deceiver-1.2.7"
-      (sources."http-errors-1.7.2" // {
-        dependencies = [
-          sources."inherits-2.0.3"
-        ];
-      })
-      sources."http-parser-js-0.5.3"
+      sources."http-errors-1.8.1"
+      sources."http-parser-js-0.5.6"
       sources."http-proxy-1.18.1"
       (sources."http-proxy-middleware-0.19.1" // {
         dependencies = [
@@ -12407,14 +12546,15 @@ let
       sources."human-signals-2.1.0"
       sources."iconv-lite-0.6.3"
       sources."icss-utils-5.1.0"
-      sources."idb-6.1.3"
-      sources."ignore-5.1.8"
+      sources."idb-6.1.5"
+      sources."ignore-5.2.0"
       sources."immediate-3.0.6"
+      sources."immutable-4.0.0"
       sources."import-cwd-2.1.0"
       sources."import-fresh-2.0.0"
       sources."import-from-2.1.0"
       sources."import-lazy-4.0.0"
-      sources."import-local-3.0.2"
+      sources."import-local-3.1.0"
       sources."imurmurhash-0.1.4"
       sources."indent-string-4.0.0"
       sources."indexes-of-1.0.1"
@@ -12443,7 +12583,7 @@ let
       sources."is-buffer-2.0.5"
       sources."is-callable-1.2.4"
       sources."is-color-stop-1.1.0"
-      sources."is-core-module-2.6.0"
+      sources."is-core-module-2.8.1"
       sources."is-data-descriptor-1.0.0"
       sources."is-date-object-1.0.5"
       sources."is-decimal-1.0.4"
@@ -12452,12 +12592,12 @@ let
       sources."is-extendable-0.1.1"
       sources."is-extglob-2.1.1"
       sources."is-fullwidth-code-point-3.0.0"
-      sources."is-glob-4.0.1"
+      sources."is-glob-4.0.3"
       sources."is-hexadecimal-1.0.4"
       sources."is-module-1.0.0"
-      sources."is-negative-zero-2.0.1"
+      sources."is-negative-zero-2.0.2"
       sources."is-number-7.0.0"
-      sources."is-number-object-1.0.6"
+      sources."is-number-object-1.0.7"
       sources."is-obj-2.0.0"
       sources."is-path-cwd-2.2.0"
       sources."is-path-in-cwd-2.1.0"
@@ -12467,12 +12607,14 @@ let
       sources."is-regex-1.1.4"
       sources."is-regexp-2.1.0"
       sources."is-resolvable-1.1.0"
+      sources."is-shared-array-buffer-1.0.2"
       sources."is-stream-2.0.1"
       sources."is-string-1.0.7"
       sources."is-supported-regexp-flag-1.0.1"
       sources."is-symbol-1.0.4"
       sources."is-typedarray-1.0.0"
       sources."is-unicode-supported-0.1.0"
+      sources."is-weakref-1.0.2"
       sources."is-whitespace-character-1.0.4"
       sources."is-windows-1.0.2"
       sources."is-word-character-1.0.4"
@@ -12480,8 +12622,19 @@ let
       sources."isarray-1.0.0"
       sources."isexe-2.0.0"
       sources."isobject-3.0.1"
-      sources."jellyfin-apiclient-1.8.0"
-      (sources."jest-worker-27.1.0" // {
+      (sources."jake-10.8.4" // {
+        dependencies = [
+          sources."ansi-styles-4.3.0"
+          sources."async-0.9.2"
+          sources."chalk-4.1.2"
+          sources."color-convert-2.0.1"
+          sources."color-name-1.1.4"
+          sources."has-flag-4.0.0"
+          sources."supports-color-7.2.0"
+        ];
+      })
+      sources."jellyfin-apiclient-1.10.0"
+      (sources."jest-worker-27.5.1" // {
         dependencies = [
           sources."has-flag-4.0.0"
           sources."supports-color-8.1.1"
@@ -12494,36 +12647,31 @@ let
       sources."jsesc-2.5.2"
       sources."json-parse-better-errors-1.0.2"
       sources."json-parse-even-better-errors-2.3.1"
-      sources."json-schema-0.3.0"
+      sources."json-schema-0.4.0"
       sources."json-schema-traverse-0.4.1"
       sources."json-stable-stringify-without-jsonify-1.0.1"
-      sources."json3-3.3.3"
-      sources."json5-2.2.0"
+      sources."json5-2.2.1"
       sources."jsonfile-6.1.0"
-      sources."jsonpointer-4.1.0"
+      sources."jsonpointer-5.0.0"
       sources."jstree-3.3.12"
-      sources."jszip-3.7.1"
+      sources."jszip-3.9.0"
       sources."killable-1.0.1"
       sources."kind-of-6.0.3"
-      sources."klona-2.0.4"
+      sources."klona-2.0.5"
       sources."known-css-properties-0.21.0"
       sources."leven-2.1.0"
       sources."levn-0.4.1"
       sources."libarchive.js-1.3.0"
       sources."libass-wasm-https://github.com/jellyfin/JavascriptSubtitlesOctopus/archive/refs/tags/4.0.0-jf-smarttv.tar.gz"
       sources."lie-3.3.0"
-      sources."lines-and-columns-1.1.6"
+      sources."lines-and-columns-1.2.4"
       (sources."load-json-file-4.0.0" // {
         dependencies = [
           sources."pify-3.0.0"
         ];
       })
       sources."loader-runner-4.2.0"
-      (sources."loader-utils-1.4.0" // {
-        dependencies = [
-          sources."json5-1.0.1"
-        ];
-      })
+      sources."loader-utils-2.0.2"
       (sources."localforage-1.10.0" // {
         dependencies = [
           sources."lie-3.1.1"
@@ -12531,7 +12679,6 @@ let
       })
       sources."locate-path-5.0.0"
       sources."lodash-4.17.21"
-      sources."lodash.clonedeep-4.5.0"
       sources."lodash.debounce-4.0.8"
       sources."lodash.memoize-4.1.2"
       sources."lodash.merge-4.6.2"
@@ -12548,20 +12695,20 @@ let
           sources."supports-color-7.2.0"
         ];
       })
-      sources."loglevel-1.7.1"
+      sources."loglevel-1.8.0"
       sources."longest-streak-2.0.4"
       sources."loud-rejection-1.6.0"
       sources."lower-case-2.0.2"
       sources."lru-cache-6.0.0"
-      sources."magic-string-0.25.7"
+      sources."magic-string-0.25.9"
       sources."make-dir-3.1.0"
       sources."map-cache-0.2.2"
-      sources."map-obj-4.2.1"
+      sources."map-obj-4.3.0"
       sources."map-visit-1.0.0"
       sources."markdown-escapes-1.0.4"
       sources."markdown-table-1.1.3"
       sources."marks-pane-1.0.9"
-      sources."material-design-icons-iconfont-6.1.0"
+      sources."material-design-icons-iconfont-6.5.0"
       sources."mathml-tag-names-2.1.3"
       sources."mdast-util-compact-1.0.4"
       sources."mdast-util-from-markdown-0.8.5"
@@ -12572,23 +12719,6 @@ let
       sources."memory-fs-0.4.1"
       (sources."meow-9.0.0" // {
         dependencies = [
-          sources."hosted-git-info-4.0.2"
-          sources."normalize-package-data-3.0.3"
-          sources."parse-json-5.2.0"
-          (sources."read-pkg-5.2.0" // {
-            dependencies = [
-              sources."hosted-git-info-2.8.9"
-              sources."normalize-package-data-2.5.0"
-              sources."semver-5.7.1"
-              sources."type-fest-0.6.0"
-            ];
-          })
-          (sources."read-pkg-up-7.0.1" // {
-            dependencies = [
-              sources."type-fest-0.8.1"
-            ];
-          })
-          sources."semver-7.3.5"
           sources."type-fest-0.18.1"
         ];
       })
@@ -12597,21 +12727,21 @@ let
       sources."merge2-1.4.1"
       sources."methods-1.1.2"
       sources."micromark-2.11.4"
-      sources."micromatch-4.0.4"
+      sources."micromatch-4.0.5"
       sources."mime-1.6.0"
-      sources."mime-db-1.49.0"
-      sources."mime-types-2.1.32"
+      sources."mime-db-1.52.0"
+      sources."mime-types-2.1.35"
       sources."mimic-fn-2.1.0"
       sources."min-indent-1.0.1"
       sources."minimalistic-assert-1.0.1"
-      sources."minimatch-3.0.4"
-      sources."minimist-1.2.5"
+      sources."minimatch-3.1.2"
+      sources."minimist-1.2.6"
       (sources."minimist-options-4.1.0" // {
         dependencies = [
           sources."is-plain-obj-1.1.0"
         ];
       })
-      sources."minipass-3.1.3"
+      sources."minipass-3.1.6"
       sources."minipass-collect-1.0.2"
       sources."minipass-flush-1.0.5"
       sources."minipass-pipeline-1.2.4"
@@ -12626,20 +12756,20 @@ let
       sources."multicast-dns-6.2.3"
       sources."multicast-dns-service-types-1.1.0"
       sources."nan-2.15.0"
-      sources."nanoid-3.1.25"
+      sources."nanoid-3.3.2"
       sources."nanomatch-1.2.13"
       sources."native-promise-only-0.8.1"
       sources."natural-compare-1.4.0"
-      sources."negotiator-0.6.2"
+      sources."negotiator-0.6.3"
       sources."neo-async-2.6.2"
-      sources."next-tick-1.0.0"
+      sources."next-tick-1.1.0"
       sources."nice-try-1.0.5"
       sources."no-case-3.0.4"
       sources."node-forge-0.10.0"
-      sources."node-releases-1.1.75"
-      (sources."normalize-package-data-2.5.0" // {
+      sources."node-releases-2.0.2"
+      (sources."normalize-package-data-3.0.3" // {
         dependencies = [
-          sources."semver-5.7.1"
+          sources."semver-7.3.5"
         ];
       })
       sources."normalize-path-3.0.0"
@@ -12664,14 +12794,14 @@ let
           sources."kind-of-3.2.2"
         ];
       })
-      sources."object-inspect-1.11.0"
+      sources."object-inspect-1.12.0"
       sources."object-is-1.1.5"
       sources."object-keys-1.1.1"
       sources."object-visit-1.0.1"
       sources."object.assign-4.1.2"
-      sources."object.getownpropertydescriptors-2.1.2"
+      sources."object.getownpropertydescriptors-2.1.3"
       sources."object.pick-1.3.0"
-      sources."object.values-1.1.4"
+      sources."object.values-1.1.5"
       sources."obuf-1.1.2"
       sources."on-finished-2.3.0"
       sources."on-headers-1.0.2"
@@ -12713,33 +12843,24 @@ let
       sources."path-type-4.0.0"
       sources."path-webpack-0.0.3"
       sources."pdfjs-dist-2.5.207"
-      sources."picomatch-2.3.0"
+      sources."picocolors-1.0.0"
+      sources."picomatch-2.3.1"
       sources."pify-4.0.1"
       sources."pinkie-2.0.4"
       sources."pinkie-promise-2.0.1"
       sources."pkg-dir-4.2.0"
-      (sources."pkg-up-2.0.0" // {
-        dependencies = [
-          sources."find-up-2.1.0"
-          sources."locate-path-2.0.0"
-          sources."p-limit-1.3.0"
-          sources."p-locate-2.0.0"
-          sources."p-try-1.0.0"
-          sources."path-exists-3.0.0"
-        ];
-      })
       sources."plur-2.1.2"
       (sources."portfinder-1.0.28" // {
         dependencies = [
           sources."debug-3.2.7"
-          sources."mkdirp-0.5.5"
+          sources."mkdirp-0.5.6"
         ];
       })
       sources."posix-character-classes-0.1.1"
-      (sources."postcss-7.0.36" // {
+      (sources."postcss-7.0.39" // {
         dependencies = [
+          sources."picocolors-0.2.1"
           sources."source-map-0.6.1"
-          sources."supports-color-6.1.0"
         ];
       })
       sources."postcss-attribute-case-insensitive-4.0.2"
@@ -12799,6 +12920,8 @@ let
       sources."postcss-load-config-2.1.2"
       (sources."postcss-loader-3.0.0" // {
         dependencies = [
+          sources."json5-1.0.1"
+          sources."loader-utils-1.4.0"
           sources."schema-utils-1.0.0"
         ];
       })
@@ -12904,7 +13027,7 @@ let
       sources."postcss-overflow-shorthand-2.0.0"
       sources."postcss-page-break-2.0.0"
       sources."postcss-place-4.0.1"
-      sources."postcss-preset-env-6.7.0"
+      sources."postcss-preset-env-6.7.1"
       (sources."postcss-pseudo-class-any-link-6.0.0" // {
         dependencies = [
           sources."cssesc-2.0.0"
@@ -12929,7 +13052,7 @@ let
       sources."postcss-scss-2.1.1"
       sources."postcss-selector-matches-4.0.0"
       sources."postcss-selector-not-4.0.1"
-      sources."postcss-selector-parser-6.0.6"
+      sources."postcss-selector-parser-6.0.10"
       sources."postcss-sorting-4.1.0"
       (sources."postcss-svgo-4.0.3" // {
         dependencies = [
@@ -12938,7 +13061,7 @@ let
       })
       sources."postcss-syntax-0.36.2"
       sources."postcss-unique-selectors-4.0.1"
-      sources."postcss-value-parser-4.1.0"
+      sources."postcss-value-parser-4.2.0"
       sources."postcss-values-parser-2.0.1"
       sources."prelude-ls-1.2.1"
       sources."pretty-bytes-5.6.0"
@@ -12951,34 +13074,32 @@ let
       sources."pump-3.0.0"
       sources."punycode-2.1.1"
       sources."q-1.5.1"
-      sources."qs-6.7.0"
+      sources."qs-6.9.7"
       sources."querystring-0.2.0"
       sources."querystringify-2.2.0"
       sources."queue-microtask-1.2.3"
       sources."quick-lru-4.0.1"
       sources."randombytes-2.1.0"
       sources."range-parser-1.2.1"
-      (sources."raw-body-2.4.0" // {
+      (sources."raw-body-2.4.3" // {
         dependencies = [
-          sources."bytes-3.1.0"
+          sources."bytes-3.1.2"
           sources."iconv-lite-0.4.24"
         ];
       })
       sources."read-file-stdin-0.2.1"
-      (sources."read-pkg-3.0.0" // {
+      (sources."read-pkg-5.2.0" // {
         dependencies = [
-          sources."path-type-3.0.0"
-          sources."pify-3.0.0"
+          sources."hosted-git-info-2.8.9"
+          sources."normalize-package-data-2.5.0"
+          sources."parse-json-5.2.0"
+          sources."semver-5.7.1"
+          sources."type-fest-0.6.0"
         ];
       })
-      (sources."read-pkg-up-3.0.0" // {
+      (sources."read-pkg-up-7.0.1" // {
         dependencies = [
-          sources."find-up-2.1.0"
-          sources."locate-path-2.0.0"
-          sources."p-limit-1.3.0"
-          sources."p-locate-2.0.0"
-          sources."p-try-1.0.0"
-          sources."path-exists-3.0.0"
+          sources."type-fest-0.8.1"
         ];
       })
       sources."readable-stream-2.3.7"
@@ -12986,15 +13107,15 @@ let
       sources."rechoir-0.7.1"
       sources."redent-3.0.0"
       sources."regenerate-1.4.2"
-      sources."regenerate-unicode-properties-8.2.0"
+      sources."regenerate-unicode-properties-10.0.1"
       sources."regenerator-runtime-0.13.9"
       sources."regenerator-transform-0.14.5"
       sources."regex-not-1.0.2"
-      sources."regexp.prototype.flags-1.3.1"
+      sources."regexp.prototype.flags-1.4.1"
       sources."regexpp-3.2.0"
-      sources."regexpu-core-4.7.1"
-      sources."regjsgen-0.5.2"
-      (sources."regjsparser-0.6.9" // {
+      sources."regexpu-core-5.0.1"
+      sources."regjsgen-0.6.0"
+      (sources."regjsparser-0.8.4" // {
         dependencies = [
           sources."jsesc-0.5.0"
         ];
@@ -13007,14 +13128,14 @@ let
       (sources."renderkid-2.0.7" // {
         dependencies = [
           sources."ansi-regex-2.1.1"
-          sources."css-select-4.1.3"
-          sources."css-what-5.0.1"
+          sources."css-select-4.3.0"
+          sources."css-what-6.1.0"
           sources."dom-serializer-1.3.2"
           sources."domelementtype-2.2.0"
-          sources."domhandler-4.2.2"
+          sources."domhandler-4.3.1"
           sources."domutils-2.8.0"
           sources."htmlparser2-6.1.0"
-          sources."nth-check-2.0.0"
+          sources."nth-check-2.0.1"
           sources."strip-ansi-3.0.1"
         ];
       })
@@ -13026,7 +13147,7 @@ let
       sources."require-main-filename-2.0.0"
       sources."requires-port-1.0.0"
       sources."resize-observer-polyfill-1.5.1"
-      sources."resolve-1.20.0"
+      sources."resolve-1.22.0"
       (sources."resolve-cwd-3.0.0" // {
         dependencies = [
           sources."resolve-from-5.0.0"
@@ -13040,44 +13161,44 @@ let
       sources."rgb-regex-1.0.1"
       sources."rgba-regex-1.0.0"
       sources."rimraf-2.7.1"
-      sources."rollup-2.56.3"
+      sources."rollup-2.70.1"
       (sources."rollup-plugin-terser-7.0.2" // {
         dependencies = [
+          sources."acorn-8.7.0"
           sources."commander-2.20.3"
           sources."has-flag-4.0.0"
           sources."jest-worker-26.6.2"
           sources."serialize-javascript-4.0.0"
           sources."source-map-0.7.3"
           sources."supports-color-7.2.0"
-          sources."terser-5.7.2"
+          sources."terser-5.12.1"
         ];
       })
       sources."run-parallel-1.2.0"
       sources."safe-buffer-5.1.2"
       sources."safe-regex-1.1.0"
       sources."safer-buffer-2.1.2"
-      sources."sass-1.39.0"
-      (sources."sass-loader-10.2.0" // {
+      sources."sass-1.49.11"
+      (sources."sass-loader-10.2.1" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
           sources."schema-utils-3.1.1"
           sources."semver-7.3.5"
         ];
       })
       sources."sax-1.2.4"
       sources."schema-utils-2.7.1"
-      sources."screenfull-5.1.0"
+      sources."screenfull-5.2.0"
       sources."select-hose-2.0.0"
-      sources."selfsigned-1.10.11"
+      sources."selfsigned-1.10.14"
       sources."semver-6.3.0"
-      (sources."send-0.17.1" // {
+      (sources."send-0.17.2" // {
         dependencies = [
           (sources."debug-2.6.9" // {
             dependencies = [
               sources."ms-2.0.0"
             ];
           })
-          sources."ms-2.1.1"
+          sources."ms-2.1.3"
         ];
       })
       sources."serialize-javascript-5.0.1"
@@ -13090,7 +13211,7 @@ let
           sources."setprototypeof-1.1.0"
         ];
       })
-      sources."serve-static-1.14.1"
+      sources."serve-static-1.14.2"
       sources."set-blocking-2.0.0"
       sources."set-immediate-shim-1.0.1"
       (sources."set-value-2.0.1" // {
@@ -13098,12 +13219,12 @@ let
           sources."extend-shallow-2.0.1"
         ];
       })
-      sources."setprototypeof-1.1.1"
+      sources."setprototypeof-1.2.0"
       sources."shallow-clone-3.0.1"
       sources."shebang-command-2.0.0"
       sources."shebang-regex-3.0.0"
       sources."side-channel-1.0.4"
-      sources."signal-exit-3.0.3"
+      sources."signal-exit-3.0.7"
       (sources."simple-swizzle-0.2.2" // {
         dependencies = [
           sources."is-arrayish-0.3.2"
@@ -13149,25 +13270,24 @@ let
           sources."kind-of-3.2.2"
         ];
       })
-      sources."sockjs-0.3.21"
-      (sources."sockjs-client-1.5.2" // {
+      sources."sockjs-0.3.24"
+      (sources."sockjs-client-1.6.0" // {
         dependencies = [
           sources."debug-3.2.7"
         ];
       })
-      sources."sortablejs-1.14.0"
+      sources."sortablejs-1.15.0"
       sources."source-list-map-2.0.1"
       sources."source-map-0.5.7"
-      sources."source-map-js-0.6.2"
+      sources."source-map-js-1.0.2"
       (sources."source-map-loader-1.1.3" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
           sources."schema-utils-3.1.1"
           sources."source-map-0.6.1"
         ];
       })
       sources."source-map-resolve-0.5.3"
-      (sources."source-map-support-0.5.19" // {
+      (sources."source-map-support-0.5.21" // {
         dependencies = [
           sources."source-map-0.6.1"
         ];
@@ -13177,7 +13297,7 @@ let
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.10"
+      sources."spdx-license-ids-3.0.11"
       sources."spdy-4.0.2"
       (sources."spdy-transport-3.0.0" // {
         dependencies = [
@@ -13210,7 +13330,8 @@ let
         ];
       })
       sources."statuses-1.5.0"
-      sources."string-width-4.2.2"
+      sources."string-width-4.2.3"
+      sources."string.prototype.matchall-4.0.7"
       sources."string.prototype.trimend-1.0.4"
       sources."string.prototype.trimstart-1.0.4"
       sources."string_decoder-1.1.1"
@@ -13221,7 +13342,7 @@ let
           sources."is-regexp-1.0.0"
         ];
       })
-      sources."strip-ansi-6.0.0"
+      sources."strip-ansi-6.0.1"
       sources."strip-bom-3.0.0"
       sources."strip-comments-2.0.1"
       sources."strip-eof-1.0.0"
@@ -13230,7 +13351,6 @@ let
       sources."strip-json-comments-3.1.1"
       (sources."style-loader-2.0.0" // {
         dependencies = [
-          sources."loader-utils-2.0.0"
           sources."schema-utils-3.1.1"
         ];
       })
@@ -13249,7 +13369,7 @@ let
           sources."color-convert-2.0.1"
           sources."color-name-1.1.4"
           sources."cosmiconfig-7.0.1"
-          sources."globby-11.0.4"
+          sources."globby-11.1.0"
           sources."has-flag-4.0.0"
           (sources."import-fresh-3.3.0" // {
             dependencies = [
@@ -13264,7 +13384,7 @@ let
       (sources."stylelint-config-rational-order-0.1.2" // {
         dependencies = [
           sources."@nodelib/fs.stat-1.1.3"
-          sources."ansi-regex-4.1.0"
+          sources."ansi-regex-4.1.1"
           sources."astral-regex-1.0.0"
           (sources."braces-2.3.2" // {
             dependencies = [
@@ -13284,11 +13404,13 @@ let
               sources."extend-shallow-2.0.1"
             ];
           })
+          sources."find-up-2.1.0"
           sources."flat-cache-2.0.1"
           sources."flatted-2.0.2"
           sources."get-stdin-6.0.0"
           sources."glob-parent-3.1.0"
           sources."globby-9.2.0"
+          sources."hosted-git-info-2.8.9"
           sources."html-tags-2.0.0"
           sources."ignore-4.0.6"
           sources."import-lazy-3.1.0"
@@ -13301,20 +13423,29 @@ let
           sources."is-regexp-1.0.0"
           sources."kind-of-3.2.2"
           sources."known-css-properties-0.11.0"
+          sources."locate-path-2.0.0"
           sources."log-symbols-2.2.0"
           sources."map-obj-2.0.0"
           sources."meow-5.0.0"
           sources."micromatch-3.1.10"
           sources."minimist-options-3.0.2"
+          sources."normalize-package-data-2.5.0"
+          sources."p-limit-1.3.0"
+          sources."p-locate-2.0.0"
+          sources."p-try-1.0.0"
+          sources."path-exists-3.0.0"
           sources."path-type-3.0.0"
           sources."pify-3.0.0"
           sources."postcss-sass-0.3.5"
           sources."postcss-selector-parser-3.1.2"
           sources."postcss-value-parser-3.3.1"
           sources."quick-lru-1.1.0"
+          sources."read-pkg-3.0.0"
+          sources."read-pkg-up-3.0.0"
           sources."redent-2.0.0"
           sources."resolve-from-4.0.0"
           sources."rimraf-2.6.3"
+          sources."semver-5.7.1"
           sources."slash-2.0.0"
           sources."slice-ansi-2.1.0"
           sources."string-width-3.1.0"
@@ -13347,12 +13478,14 @@ let
           sources."fast-glob-2.2.7"
           sources."file-entry-cache-4.0.0"
           sources."fill-range-4.0.0"
+          sources."find-up-2.1.0"
           sources."flat-cache-2.0.1"
           sources."flatted-2.0.2"
           sources."get-stdin-6.0.0"
           sources."glob-parent-3.1.0"
           sources."globby-9.2.0"
           sources."has-flag-1.0.0"
+          sources."hosted-git-info-2.8.9"
           sources."html-tags-2.0.0"
           sources."ignore-4.0.6"
           sources."import-lazy-3.1.0"
@@ -13365,12 +13498,19 @@ let
           sources."is-regexp-1.0.0"
           sources."kind-of-3.2.2"
           sources."known-css-properties-0.11.0"
+          sources."locate-path-2.0.0"
           sources."log-symbols-1.0.2"
           sources."map-obj-2.0.0"
           sources."meow-5.0.0"
           sources."micromatch-3.1.10"
           sources."minimist-options-3.0.2"
+          sources."normalize-package-data-2.5.0"
+          sources."p-limit-1.3.0"
+          sources."p-locate-2.0.0"
+          sources."p-try-1.0.0"
+          sources."path-exists-3.0.0"
           sources."path-type-3.0.0"
+          sources."picocolors-0.2.1"
           sources."pify-3.0.0"
           (sources."postcss-5.2.18" // {
             dependencies = [
@@ -13380,23 +13520,18 @@ let
           sources."postcss-reporter-1.4.1"
           (sources."postcss-sass-0.3.5" // {
             dependencies = [
-              sources."ansi-styles-3.2.1"
-              (sources."chalk-2.4.2" // {
-                dependencies = [
-                  sources."supports-color-5.5.0"
-                ];
-              })
-              sources."has-flag-3.0.0"
-              sources."postcss-7.0.36"
-              sources."supports-color-6.1.0"
+              sources."postcss-7.0.39"
             ];
           })
           sources."postcss-selector-parser-2.2.3"
           sources."postcss-value-parser-3.3.1"
           sources."quick-lru-1.1.0"
+          sources."read-pkg-3.0.0"
+          sources."read-pkg-up-3.0.0"
           sources."redent-2.0.0"
           sources."resolve-from-4.0.0"
           sources."rimraf-2.6.3"
+          sources."semver-5.7.1"
           sources."slash-2.0.0"
           (sources."slice-ansi-2.1.0" // {
             dependencies = [
@@ -13406,7 +13541,7 @@ let
           sources."source-map-0.6.1"
           (sources."string-width-3.1.0" // {
             dependencies = [
-              sources."ansi-regex-4.1.0"
+              sources."ansi-regex-4.1.1"
               sources."strip-ansi-5.2.0"
             ];
           })
@@ -13419,11 +13554,7 @@ let
               sources."chalk-2.4.2"
               sources."has-flag-3.0.0"
               sources."log-symbols-2.2.0"
-              (sources."postcss-7.0.36" // {
-                dependencies = [
-                  sources."supports-color-6.1.0"
-                ];
-              })
+              sources."postcss-7.0.39"
               sources."postcss-reporter-6.0.1"
               sources."postcss-selector-parser-3.1.2"
               sources."supports-color-5.5.0"
@@ -13441,19 +13572,20 @@ let
           sources."postcss-sorting-5.0.1"
         ];
       })
-      sources."stylelint-scss-3.20.1"
+      sources."stylelint-scss-3.21.0"
       sources."sugarss-2.0.0"
       sources."supports-color-5.5.0"
+      sources."supports-preserve-symlinks-flag-1.0.0"
       sources."svg-tags-1.0.0"
       (sources."svgo-1.3.2" // {
         dependencies = [
-          sources."mkdirp-0.5.5"
+          sources."mkdirp-0.5.6"
         ];
       })
       sources."swiper-6.8.4"
-      (sources."table-6.7.1" // {
+      (sources."table-6.8.0" // {
         dependencies = [
-          sources."ajv-8.6.2"
+          sources."ajv-8.11.0"
           sources."json-schema-traverse-1.0.0"
         ];
       })
@@ -13471,14 +13603,14 @@ let
           sources."source-map-0.6.1"
         ];
       })
-      (sources."terser-webpack-plugin-5.2.3" // {
+      (sources."terser-webpack-plugin-5.3.1" // {
         dependencies = [
+          sources."acorn-8.7.0"
           sources."commander-2.20.3"
-          sources."p-limit-3.1.0"
           sources."schema-utils-3.1.1"
           sources."serialize-javascript-6.0.0"
           sources."source-map-0.6.1"
-          (sources."terser-5.7.2" // {
+          (sources."terser-5.12.1" // {
             dependencies = [
               sources."source-map-0.7.3"
             ];
@@ -13497,29 +13629,29 @@ let
       })
       sources."to-regex-3.0.2"
       sources."to-regex-range-5.0.1"
-      sources."toidentifier-1.0.0"
+      sources."toidentifier-1.0.1"
       sources."tr46-1.0.1"
       sources."trim-0.0.1"
       sources."trim-newlines-3.0.1"
       sources."trim-trailing-lines-1.1.4"
       sources."trough-1.0.5"
-      (sources."tsconfig-paths-3.11.0" // {
+      (sources."tsconfig-paths-3.14.1" // {
         dependencies = [
           sources."json5-1.0.1"
         ];
       })
       sources."tslib-2.3.1"
-      sources."type-2.5.0"
+      sources."type-2.6.0"
       sources."type-check-0.4.0"
       sources."type-fest-0.20.2"
       sources."type-is-1.6.18"
       sources."typedarray-to-buffer-3.1.5"
       sources."unbox-primitive-1.0.1"
       sources."unherit-1.1.3"
-      sources."unicode-canonical-property-names-ecmascript-1.0.4"
-      sources."unicode-match-property-ecmascript-1.0.4"
-      sources."unicode-match-property-value-ecmascript-1.2.0"
-      sources."unicode-property-aliases-ecmascript-1.1.0"
+      sources."unicode-canonical-property-names-ecmascript-2.0.0"
+      sources."unicode-match-property-ecmascript-2.0.0"
+      sources."unicode-match-property-value-ecmascript-2.0.0"
+      sources."unicode-property-aliases-ecmascript-2.0.0"
       sources."unified-9.2.2"
       sources."union-value-1.0.1"
       sources."uniq-1.0.1"
@@ -13558,14 +13690,14 @@ let
           sources."punycode-1.3.2"
         ];
       })
-      sources."url-parse-1.5.3"
-      sources."url-toolkit-2.2.3"
+      sources."url-parse-1.5.10"
+      sources."url-toolkit-2.2.5"
       sources."use-3.1.1"
       sources."util-deprecate-1.0.2"
       sources."util.promisify-1.0.1"
       sources."utila-0.4.0"
       sources."utils-merge-1.0.1"
-      sources."uuid-3.4.0"
+      sources."uuid-8.3.2"
       sources."v8-compile-cache-2.3.0"
       sources."validate-npm-package-license-3.0.4"
       sources."vary-1.1.2"
@@ -13573,7 +13705,7 @@ let
       sources."vfile-4.2.1"
       sources."vfile-location-2.0.6"
       sources."vfile-message-2.0.4"
-      (sources."watchpack-2.2.0" // {
+      (sources."watchpack-2.3.1" // {
         dependencies = [
           sources."glob-to-regexp-0.4.1"
         ];
@@ -13581,16 +13713,16 @@ let
       sources."wbuf-1.7.3"
       sources."webcomponents.js-0.7.24"
       sources."webidl-conversions-4.0.2"
-      (sources."webpack-5.52.0" // {
+      (sources."webpack-5.71.0" // {
         dependencies = [
-          sources."acorn-8.4.1"
+          sources."acorn-8.7.0"
           sources."glob-to-regexp-0.4.1"
           sources."schema-utils-3.1.1"
-          sources."tapable-2.2.0"
-          sources."webpack-sources-3.2.0"
+          sources."tapable-2.2.1"
+          sources."webpack-sources-3.2.3"
         ];
       })
-      (sources."webpack-cli-4.8.0" // {
+      (sources."webpack-cli-4.9.2" // {
         dependencies = [
           sources."commander-7.2.0"
           sources."webpack-merge-5.8.0"
@@ -13598,11 +13730,11 @@ let
       })
       (sources."webpack-dev-middleware-3.7.3" // {
         dependencies = [
-          sources."mime-2.5.2"
-          sources."mkdirp-0.5.5"
+          sources."mime-2.6.0"
+          sources."mkdirp-0.5.6"
         ];
       })
-      (sources."webpack-dev-server-3.11.2" // {
+      (sources."webpack-dev-server-3.11.3" // {
         dependencies = [
           sources."ansi-regex-2.1.1"
           sources."anymatch-2.0.0"
@@ -13638,6 +13770,7 @@ let
       (sources."webpack-log-2.0.0" // {
         dependencies = [
           sources."ansi-colors-3.2.4"
+          sources."uuid-3.4.0"
         ];
       })
       sources."webpack-merge-4.2.2"
@@ -13657,84 +13790,89 @@ let
       sources."which-module-2.0.0"
       sources."wildcard-2.0.0"
       sources."word-wrap-1.2.3"
-      (sources."workbox-background-sync-6.2.4" // {
+      (sources."workbox-background-sync-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-broadcast-update-6.2.4" // {
+      (sources."workbox-broadcast-update-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-build-6.2.4" // {
+      (sources."workbox-build-6.5.2" // {
         dependencies = [
-          sources."ajv-8.6.2"
+          sources."ajv-8.11.0"
           sources."json-schema-traverse-1.0.0"
           sources."source-map-0.8.0-beta.0"
-          sources."workbox-core-6.2.4"
-          sources."workbox-precaching-6.2.4"
+          sources."workbox-core-6.5.2"
+          sources."workbox-precaching-6.5.2"
         ];
       })
-      (sources."workbox-cacheable-response-6.2.4" // {
+      (sources."workbox-cacheable-response-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
       sources."workbox-core-5.1.4"
-      (sources."workbox-expiration-6.2.4" // {
+      (sources."workbox-expiration-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-google-analytics-6.2.4" // {
+      (sources."workbox-google-analytics-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-navigation-preload-6.2.4" // {
+      (sources."workbox-navigation-preload-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
       sources."workbox-precaching-5.1.4"
-      (sources."workbox-range-requests-6.2.4" // {
+      (sources."workbox-range-requests-6.5.2" // {
+        dependencies = [
+          sources."workbox-core-6.5.2"
+        ];
+      })
+      (sources."workbox-recipes-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
+          sources."workbox-precaching-6.5.2"
         ];
       })
-      (sources."workbox-recipes-6.2.4" // {
+      (sources."workbox-routing-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
-          sources."workbox-precaching-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-routing-6.2.4" // {
+      (sources."workbox-strategies-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-strategies-6.2.4" // {
+      (sources."workbox-streams-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      (sources."workbox-streams-6.2.4" // {
+      sources."workbox-sw-6.5.2"
+      sources."workbox-webpack-plugin-6.5.2"
+      (sources."workbox-window-6.5.2" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."workbox-core-6.5.2"
         ];
       })
-      sources."workbox-sw-6.2.4"
-      sources."workbox-webpack-plugin-6.2.4"
-      (sources."workbox-window-6.2.4" // {
+      (sources."worker-plugin-5.0.1" // {
         dependencies = [
-          sources."workbox-core-6.2.4"
+          sources."json5-1.0.1"
+          sources."loader-utils-1.4.0"
         ];
       })
-      sources."worker-plugin-5.0.1"
       (sources."wrap-ansi-5.1.0" // {
         dependencies = [
-          sources."ansi-regex-4.1.0"
+          sources."ansi-regex-4.1.1"
           sources."emoji-regex-7.0.3"
           sources."is-fullwidth-code-point-2.0.0"
           sources."string-width-3.1.0"
@@ -13744,21 +13882,20 @@ let
       sources."wrappy-1.0.2"
       (sources."write-1.0.3" // {
         dependencies = [
-          sources."mkdirp-0.5.5"
+          sources."mkdirp-0.5.6"
         ];
       })
       sources."write-file-atomic-3.0.3"
       sources."write-file-stdout-0.0.2"
       sources."ws-6.2.2"
       sources."x-is-string-0.1.0"
-      sources."xmldom-0.3.0"
       sources."xtend-4.0.2"
       sources."y18n-4.0.3"
       sources."yallist-4.0.0"
       sources."yaml-1.10.2"
       (sources."yargs-13.3.2" // {
         dependencies = [
-          sources."ansi-regex-4.1.0"
+          sources."ansi-regex-4.1.1"
           sources."emoji-regex-7.0.3"
           sources."find-up-3.0.0"
           sources."is-fullwidth-code-point-2.0.0"
diff --git a/pkgs/servers/jellyfin/web-update.sh b/pkgs/servers/jellyfin/web-update.sh
index 87b05efc2d902..da25b2596951f 100755
--- a/pkgs/servers/jellyfin/web-update.sh
+++ b/pkgs/servers/jellyfin/web-update.sh
@@ -22,7 +22,7 @@ cd "$(dirname "${BASH_SOURCE[0]}")"
 # TODO: use package-lock.json on the next major release
 # https://github.com/jellyfin/jellyfin-web/commit/6efef9680d55a93f4333ef8bfb65a8a650c99a49
 node2nix \
-  --nodejs-12 \
+  --nodejs-14 \
   --development \
   --node-env ../../development/node-packages/node-env.nix \
   --output ./node-deps.nix \
diff --git a/pkgs/servers/jellyfin/web.nix b/pkgs/servers/jellyfin/web.nix
index 2b3ce5a1f3df0..2520f9ec470a3 100644
--- a/pkgs/servers/jellyfin/web.nix
+++ b/pkgs/servers/jellyfin/web.nix
@@ -77,5 +77,6 @@ stdenv.mkDerivation rec {
     homepage = "https://jellyfin.org/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ nyanloutre minijackson purcell jojosch ];
+    platforms = nodejs.meta.platforms;
   };
 }
diff --git a/pkgs/servers/kapowbang/default.nix b/pkgs/servers/kapowbang/default.nix
index efd2b17d7e515..81536ab143ad5 100644
--- a/pkgs/servers/kapowbang/default.nix
+++ b/pkgs/servers/kapowbang/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     description = "Expose command-line tools over HTTP";
     license = licenses.asl20;
     maintainers = with maintainers; [ nilp0inter ];
+    mainProgram = "kapow";
   };
 }
diff --git a/pkgs/servers/keycloak/default.nix b/pkgs/servers/keycloak/default.nix
index d9797de6d174e..f28679f2cf5fc 100644
--- a/pkgs/servers/keycloak/default.nix
+++ b/pkgs/servers/keycloak/default.nix
@@ -1,73 +1,81 @@
-{ stdenv, lib, fetchzip, makeWrapper, jre, writeText, nixosTests
-, postgresql_jdbc ? null, mysql_jdbc ? null
+{ stdenv
+, lib
+, fetchzip
+, makeWrapper
+, jre
+, writeText
+, nixosTests
 , callPackage
+
+, confFile ? null
+, plugins ? [ ]
 }:
 
-let
-  mkModuleXml = name: jarFile: writeText "module.xml" ''
-    <?xml version="1.0" ?>
-    <module xmlns="urn:jboss:module:1.3" name="${name}">
-        <resources>
-            <resource-root path="${jarFile}"/>
-        </resources>
-        <dependencies>
-            <module name="javax.api"/>
-            <module name="javax.transaction.api"/>
-        </dependencies>
-    </module>
-  '';
-in
 stdenv.mkDerivation rec {
-  pname   = "keycloak";
-  version = "16.1.0";
+  pname = "keycloak";
+  version = "17.0.1";
 
   src = fetchzip {
-    url    = "https://github.com/keycloak/keycloak/releases/download/${version}/keycloak-${version}.zip";
-    sha256 = "sha256-QVFu3f+mwafoNUttLEVMdoZHMJjjH/TpZAGV7ZvIvh0=";
+    url = "https://github.com/keycloak/keycloak/releases/download/${version}/keycloak-${version}.zip";
+    sha256 = "sha256-z1LfTUoK+v4oQxdyIQruFhl5O333zirSrkPoTFgVfmI=";
   };
 
-  nativeBuildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper jre ];
+
+  buildPhase = ''
+    runHook preBuild
+  '' + lib.optionalString (confFile != null) ''
+    install -m 0600 ${confFile} conf/keycloak.conf
+  '' + ''
+    install_plugin() {
+    if [ -d "$1" ]; then
+      find "$1" -type f \( -iname \*.ear -o -iname \*.jar \) -exec install -m 0500 "{}" "providers/" \;
+    else
+      install -m 0500 "$1" "providers/"
+    fi
+    }
+    ${lib.concatMapStringsSep "\n" (pl: "install_plugin ${lib.escapeShellArg pl}") plugins}
+  '' + ''
+    export KC_HOME_DIR=$out
+    export KC_CONF_DIR=$out/conf
+
+    patchShebangs bin/kc.sh
+    bin/kc.sh build
+
+    runHook postBuild
+  '';
 
   installPhase = ''
+    runHook preInstall
+
     mkdir $out
     cp -r * $out
 
-    rm -rf $out/bin/*.{ps1,bat}
+    rm $out/bin/*.{ps1,bat}
 
-    module_path=$out/modules/system/layers/keycloak
-    if ! [[ -d $module_path ]]; then
-        echo "The module path $module_path not found!"
-        exit 1
-    fi
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    substituteInPlace $out/bin/kc.sh --replace '-Dkc.home.dir=$DIRNAME/../' '-Dkc.home.dir=$KC_HOME_DIR'
+    substituteInPlace $out/bin/kc.sh --replace '-Djboss.server.config.dir=$DIRNAME/../conf' '-Djboss.server.config.dir=$KC_CONF_DIR'
 
-    ${lib.optionalString (postgresql_jdbc != null) ''
-      mkdir -p $module_path/org/postgresql/main
-      ln -s ${postgresql_jdbc}/share/java/postgresql-jdbc.jar $module_path/org/postgresql/main/
-      ln -s ${mkModuleXml "org.postgresql" "postgresql-jdbc.jar"} $module_path/org/postgresql/main/module.xml
-    ''}
-    ${lib.optionalString (mysql_jdbc != null) ''
-      mkdir -p $module_path/com/mysql/main
-      ln -s ${mysql_jdbc}/share/java/mysql-connector-java.jar $module_path/com/mysql/main/
-      ln -s ${mkModuleXml "com.mysql" "mysql-connector-java.jar"} $module_path/com/mysql/main/module.xml
-    ''}
-
-    for script in add-user-keycloak.sh add-user.sh domain.sh elytron-tool.sh jboss-cli.sh jconsole.sh jdr.sh standalone.sh wsconsume.sh wsprovide.sh; do
-      wrapProgram $out/bin/$script --set JAVA_HOME ${jre}
+    for script in $(find $out/bin -type f -executable); do
+      wrapProgram "$script" --set JAVA_HOME ${jre} --prefix PATH : ${jre}/bin
     done
-    wrapProgram $out/bin/kcadm.sh --prefix PATH : ${jre}/bin
-    wrapProgram $out/bin/kcreg.sh --prefix PATH : ${jre}/bin
   '';
 
   passthru = {
     tests = nixosTests.keycloak;
-    plugins = callPackage ./all-plugins.nix {};
+    plugins = callPackage ./all-plugins.nix { };
+    enabledPlugins = plugins;
   };
 
   meta = with lib; {
-    homepage    = "https://www.keycloak.org/";
+    homepage = "https://www.keycloak.org/";
     description = "Identity and access management for modern applications and services";
-    license     = licenses.asl20;
-    platforms   = jre.meta.platforms;
+    license = licenses.asl20;
+    platforms = jre.meta.platforms;
     maintainers = with maintainers; [ ngerstle talyz ];
   };
 
diff --git a/pkgs/servers/klipper/default.nix b/pkgs/servers/klipper/default.nix
index 490bb9c9e094e..b882bc589c615 100644
--- a/pkgs/servers/klipper/default.nix
+++ b/pkgs/servers/klipper/default.nix
@@ -6,13 +6,13 @@
 }:
 stdenv.mkDerivation rec {
   pname = "klipper";
-  version = "unstable-2022-03-11";
+  version = "unstable-2022-03-14";
 
   src = fetchFromGitHub {
     owner = "KevinOConnor";
     repo = "klipper";
-    rev = "e3beafbdb4f2ac3f889f81aec0cad5ec473c8612";
-    sha256 = "sha256-xZSZUJ2TNaUzfwEFpnzr5EPlOvILLyiQ/3K1iiup7kU=";
+    rev = "30098db22a43274ceb87e078e603889f403a35c4";
+    sha256 = "sha256-ORpXBFGPY6A/HEYX9Hhwb3wP2KcAE+z3pTxf6j7CwGg=";
   };
 
   sourceRoot = "source/klippy";
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   # NB: This is needed for the postBuild step
   nativeBuildInputs = [ (python2.withPackages ( p: with p; [ cffi ] )) ];
 
-  buildInputs = [ (python2.withPackages (p: with p; [ cffi pyserial greenlet jinja2 ])) ];
+  buildInputs = [ (python2.withPackages (p: with p; [ cffi pyserial greenlet jinja2 numpy ])) ];
 
   # we need to run this to prebuild the chelper.
   postBuild = "python2 ./chelper/__init__.py";
diff --git a/pkgs/servers/mail/archiveopteryx/default.nix b/pkgs/servers/mail/archiveopteryx/default.nix
index 4cc612ef89a1d..2bcd87c3b84d2 100644
--- a/pkgs/servers/mail/archiveopteryx/default.nix
+++ b/pkgs/servers/mail/archiveopteryx/default.nix
@@ -20,11 +20,15 @@ stdenv.mkDerivation rec {
     sed -i 's:READMEDIR = $(PREFIX):READMEDIR = '$out'/share/doc/archiveopteryx:' ./Jamsettings
   '';
 
-  # fix build on gcc7+
-  NIX_CFLAGS_COMPILE = builtins.toString [
+  # fix build on gcc7+ and gcc11+
+  NIX_CFLAGS_COMPILE = [
+    "-std=c++11" # c++17+ has errors
     "-Wno-error=builtin-declaration-mismatch"
-    "-Wno-error=implicit-fallthrough"
     "-Wno-error=deprecated-copy"
+    "-Wno-error=implicit-fallthrough"
+    "-Wno-error=nonnull"
+  ] ++ lib.optionals (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.version "11") [
+    "-Wno-error=mismatched-new-delete"
   ];
 
   buildPhase = ''jam "-j$NIX_BUILD_CORES" '';
diff --git a/pkgs/servers/mail/clamsmtp/default.nix b/pkgs/servers/mail/clamsmtp/default.nix
index 1972e7d86a843..b3f825f7148b9 100644
--- a/pkgs/servers/mail/clamsmtp/default.nix
+++ b/pkgs/servers/mail/clamsmtp/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
     homepage = "http://thewalter.net/stef/software/clamsmtp/";
     license = licenses.bsd3;
     maintainers = [ maintainers.ekleog ];
+    mainProgram = "clamsmtpd";
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix b/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix
index e6ec006333865..2f3a4d807d2fa 100644
--- a/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix
+++ b/pkgs/servers/mail/dovecot/plugins/fts_xapian/default.nix
@@ -1,13 +1,13 @@
 { lib, stdenv, fetchFromGitHub, autoconf, automake, sqlite, pkg-config, dovecot, libtool, xapian, icu64 }:
 stdenv.mkDerivation rec {
   pname = "dovecot-fts-xapian";
-  version = "1.5.4b";
+  version = "1.5.5";
 
   src = fetchFromGitHub {
     owner = "grosjo";
     repo = "fts-xapian";
     rev = version;
-    sha256 = "sha256-RzwJjcUgk1XXQZpNdz86Pr9HsUaQCOSt5oSejnGVmgA=";
+    sha256 = "sha256-KAZno4N/4dFH3QHFTs0wkY4PtGF+j4ZEjZzn9ljCjrM=";
   };
 
   buildInputs = [ dovecot xapian icu64 sqlite ];
diff --git a/pkgs/servers/mail/mailman/default.nix b/pkgs/servers/mail/mailman/default.nix
index 8cd087f4174f7..f5632df79491f 100644
--- a/pkgs/servers/mail/mailman/default.nix
+++ b/pkgs/servers/mail/mailman/default.nix
@@ -5,12 +5,18 @@ let
   # Mailman does not support sqlalchemy >= 1.4 https://gitlab.com/mailman/mailman/-/issues/845
   pythonOverride = python3.override {
     packageOverrides = self: super: {
+      alembic = super.alembic.overridePythonAttrs (oldAttrs:  {
+        # does not find tests
+        doCheck = false;
+      });
       sqlalchemy = super.sqlalchemy.overridePythonAttrs (oldAttrs: rec {
         version = "1.3.24";
         src = oldAttrs.src.override {
           inherit version;
-          sha256 = "06bmxzssc66cblk1hamskyv5q3xf1nh1py3vi6dka4lkpxy7gfzb";
+          hash = "sha256-67t3fL+TEjWbiXv4G6ANrg9ctp+6KhgmXcwYpvXvdRk=";
         };
+        # does not find tests
+        doCheck = false;
       });
     };
   };
diff --git a/pkgs/servers/mail/postfix/default.nix b/pkgs/servers/mail/postfix/default.nix
index 08c55f771724d..65e0041a01eb6 100644
--- a/pkgs/servers/mail/postfix/default.nix
+++ b/pkgs/servers/mail/postfix/default.nix
@@ -1,5 +1,6 @@
 { stdenv, lib, fetchurl, makeWrapper, gnused, db, openssl, cyrus_sasl, libnsl
 , coreutils, findutils, gnugrep, gawk, icu, pcre, m4
+, fetchpatch
 , buildPackages, nixosTests
 , withLDAP ? true, openldap
 , withPgSQL ? false, postgresql
@@ -24,11 +25,11 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "postfix";
-  version = "3.6.5";
+  version = "3.6.6";
 
   src = fetchurl {
     url = "http://cdn.postfix.johnriley.me/mirrors/postfix-release/official/${pname}-${version}.tar.gz";
-    hash = "sha256-MA+ogRzqINAdJcYZ01m/+rgmVucE2qcZ4MmvxOz/SAg=";
+    hash = "sha256-CYpxT0EEaO/ibiGR3I8xy6RQfVv0iPVvnrVUXjaG8NY=";
   };
 
   nativeBuildInputs = [ makeWrapper m4 ];
@@ -46,6 +47,12 @@ in stdenv.mkDerivation rec {
     ./postfix-3.0-no-warnings.patch
     ./post-install-script.patch
     ./relative-symlinks.patch
+
+    # glibc 2.34 compat
+    (fetchpatch {
+      url = "https://src.fedoraproject.org/rpms/postfix/raw/2f9d42453e67ebc43f786d98262a249037f80a77/f/postfix-3.6.2-glibc-234-build-fix.patch";
+      sha256 = "sha256-xRUL5gaoIt6HagGlhsGwvwrAfYvzMgydsltYMWvl9BI=";
+    })
   ];
 
   postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix
index a826a7afc9ac8..a720500380e13 100644
--- a/pkgs/servers/mail/rspamd/default.nix
+++ b/pkgs/servers/mail/rspamd/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchFromGitHub, cmake, perl
-, glib, luajit, openssl, pcre, pkg-config, sqlite, ragel, icu
+, glib, luajit, openssl, pcre2, pkg-config, sqlite, ragel, icu
 , hyperscan, jemalloc, blas, lapack, lua, libsodium
 , withBlas ? true
 , withHyperscan ? stdenv.isx86_64
@@ -11,19 +11,19 @@ assert withHyperscan -> stdenv.isx86_64;
 
 stdenv.mkDerivation rec {
   pname = "rspamd";
-  version = "3.1";
+  version = "3.2";
 
   src = fetchFromGitHub {
     owner = "rspamd";
     repo = "rspamd";
     rev = version;
-    sha256 = "sha256-w3pvjU6b4IAl27QvY16UdBi1v1iJnnkLRUC54eXdH9I=";
+    sha256 = "122d5m1nfxxz93bhsk8lm4dazvdknzphb0a1188m7bsa4iynbfv2";
   };
 
   hardeningEnable = [ "pie" ];
 
   nativeBuildInputs = [ cmake pkg-config perl ];
-  buildInputs = [ glib openssl pcre sqlite ragel icu jemalloc libsodium ]
+  buildInputs = [ glib openssl pcre2 sqlite ragel icu jemalloc libsodium ]
     ++ lib.optional withHyperscan hyperscan
     ++ lib.optionals withBlas [ blas lapack ]
     ++ lib.optional withLuaJIT luajit ++ lib.optional (!withLuaJIT) lua;
diff --git a/pkgs/servers/mail/system-sendmail/default.nix b/pkgs/servers/mail/system-sendmail/default.nix
index 76b92299409ec..c3574c8f17fce 100644
--- a/pkgs/servers/mail/system-sendmail/default.nix
+++ b/pkgs/servers/mail/system-sendmail/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation {
     '';
     platforms = platforms.unix;
     maintainers = with maintainers; [ ekleog ];
+    mainProgram = "sendmail";
   };
 }
diff --git a/pkgs/servers/mastodon/default.nix b/pkgs/servers/mastodon/default.nix
index ef4c22b1c2c07..f43747e185a79 100644
--- a/pkgs/servers/mastodon/default.nix
+++ b/pkgs/servers/mastodon/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   yarnOfflineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    sha256 = "sha256-Ngfs15YKLfSBOKju3BzpZFnenB370jId2G1g9Qy1y5w=";
+    sha256 = "sha256-Swe7AH/j1+N1T20xaQ+U0Ajtoe9BGzsghAjN1QakOp8=";
   };
 
   mastodon-gems = bundlerEnv {
diff --git a/pkgs/servers/mastodon/gemset.nix b/pkgs/servers/mastodon/gemset.nix
index 544e3b90412f4..0b841c325db00 100644
--- a/pkgs/servers/mastodon/gemset.nix
+++ b/pkgs/servers/mastodon/gemset.nix
@@ -320,6 +320,17 @@
     };
     version = "2.9.1";
   };
+  better_html = {
+    dependencies = ["actionview" "activesupport" "ast" "erubi" "html_tokenizer" "parser" "smart_properties"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sssv94gg7bnxiqn5pbbpf8rdnmw3iyj2qwn2pbgxxs8xmmq158b";
+      type = "gem";
+    };
+    version = "1.0.16";
+  };
   bindata = {
     groups = ["default"];
     platforms = [];
@@ -873,10 +884,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1zmak7fgis1nk9j157g2rjzxrw9prr3jzlxap9vix3xm0gkihr53";
+      sha256 = "0rgbmk044akxa84z9vdl8lkmd9z4xy3na1w0vh12pz02drxd93j9";
       type = "gem";
     };
-    version = "2.27.0";
+    version = "2.28.0";
   };
   faker = {
     dependencies = ["i18n"];
@@ -1113,10 +1124,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0rw99k86csafsgv4w7v7wzid5kvlk43nfyww1d3ss00mhjdhw619";
+      sha256 = "1nxak6q0m0nd3m5a7vp9xqww9w5fqx97viv5g6pg3q62q9binm0j";
       type = "gem";
     };
-    version = "0.5.0";
+    version = "0.9.1";
   };
   globalid = {
     dependencies = ["activesupport"];
@@ -1166,10 +1177,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "02bsx12ihl78x0vdm37byp78jjw2ff6035y7rrmbd90qxjwxr43q";
+      sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x";
       type = "gem";
     };
-    version = "4.1.0";
+    version = "5.0.0";
   };
   highline = {
     groups = ["default" "development" "test"];
@@ -1201,6 +1212,16 @@
     };
     version = "0.3.0";
   };
+  html_tokenizer = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dq6685sdzdn53mkzags6mvx3l0afcx6xma664zij6y3dxj2a7p8";
+      type = "gem";
+    };
+    version = "0.0.7";
+  };
   htmlentities = {
     groups = ["default"];
     platforms = [];
@@ -1286,15 +1307,15 @@
     version = "1.10.0";
   };
   i18n-tasks = {
-    dependencies = ["activesupport" "ast" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"];
+    dependencies = ["activesupport" "ast" "better_html" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"];
     groups = ["development" "test"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0baaaljm7nq5z9xrhdsw1nnzvj494wi4zzbv5s89gm0rwpxfg1g2";
+      sha256 = "1f3pgfjk4xmyjhqqq8dpx3vbxbq1d9bwlh3d7957vnkpdwk432n0";
       type = "gem";
     };
-    version = "0.9.37";
+    version = "1.0.8";
   };
   idn-ruby = {
     groups = ["default"];
@@ -1513,10 +1534,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1vrjm4yqn5l6q5gsl72fmk95fl6j9z1a05gzbrwmsm3gp1a1bgac";
+      sha256 = "15pjm9pa5m3mbv9xvfgfr16q4jyaznsg8y63jz9x4jqr8npw0vx3";
       type = "gem";
     };
-    version = "0.11.2";
+    version = "0.12.0";
   };
   loofah = {
     dependencies = ["crass" "nokogiri"];
@@ -1524,10 +1545,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1yp1h1j7pdkqvnx8jl6bkzlajav3h5mhqzihgs9p6y3c8927mw23";
+      sha256 = "15s6z5bvhdhnqv4wg8zcz3mhbc7i4dbqskv5jvhprz33ak7682km";
       type = "gem";
     };
-    version = "2.15.0";
+    version = "2.16.0";
   };
   mail = {
     dependencies = ["mini_mime"];
@@ -1817,10 +1838,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1nqhgvq006h6crbp8lffw66ll46zf319c2637g4sybdclglismma";
+      sha256 = "0w474bz3s1hqhilvrddr33l2nkyikypaczp3808w0345jr88b5m7";
       type = "gem";
     };
-    version = "1.2.0";
+    version = "1.3.0";
   };
   openssl = {
     groups = ["default"];
@@ -1857,10 +1878,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "15744bhmvw021a14gdks6k91gad6d1kgj2mc1zywpl0x9r3d85f2";
+      sha256 = "054xq22rwj26jag43s5fb4vb4x2252dz6rvgjn42id8ycs51my2w";
       type = "gem";
     };
-    version = "2.14.10";
+    version = "2.14.11";
   };
   parallel = {
     groups = ["default" "development"];
@@ -1909,10 +1930,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "090c3kazlmiizp25las7dgi8wlc11s29nrs2gy3qrp1z8qikgcmb";
+      sha256 = "10ryzmc3r5ja6g90a9ycsxcxsy5872xa1vf01jam0bm74zq3zmi6";
       type = "gem";
     };
-    version = "1.3.4";
+    version = "1.3.5";
   };
   pghero = {
     dependencies = ["activerecord"];
@@ -2026,10 +2047,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1np2myaxlk5iab1zarwgmp7zsjvm5j8ssg35ijv8b6dpvc3cjd56";
+      sha256 = "0dgr2rybayih2naz3658mbzqwfrg9fxl80zsvhscf6b972kp3jdw";
       type = "gem";
     };
-    version = "5.6.2";
+    version = "5.6.4";
   };
   pundit = {
     dependencies = ["activesupport"];
@@ -2100,10 +2121,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1b0h0rlfl0p0drymwfc71g87fp66ck3205pl32z89xsgh0lzw25k";
+      sha256 = "0gxxr209r8h3nxhc9h731khv6yswiv9hc6q2pg672v530xmknznw";
       type = "gem";
     };
-    version = "1.16.0";
+    version = "1.19.0";
   };
   rack-proxy = {
     dependencies = ["rack"];
@@ -2283,10 +2304,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi";
+      sha256 = "13ppgmsbrqah08j06bybd3cddv6dml79yzyjn7r8j1src78h98h7";
       type = "gem";
     };
-    version = "1.5.0";
+    version = "1.5.1";
   };
   responders = {
     dependencies = ["actionpack" "railties"];
@@ -2593,10 +2614,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1fgk2a66yn7v2011j8zk2z9mwgzmb52gjrkd5wb5xbpxwm8qfjqy";
+      sha256 = "1b2dcw604mmjh4ncfwsidzbzqaa3fbngqidhvhsjv6ladpzsrb8y";
       type = "gem";
     };
-    version = "7.1.15";
+    version = "7.1.16";
   };
   simple-navigation = {
     dependencies = ["activesupport"];
@@ -2651,6 +2672,16 @@
     };
     version = "0.1.2";
   };
+  smart_properties = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jrqssk9qhwrpq41arm712226vpcr458xv6xaqbk8cp94a0kycpr";
+      type = "gem";
+    };
+    version = "1.17.0";
+  };
   sprockets = {
     dependencies = ["concurrent-ruby" "rack"];
     groups = ["default"];
@@ -2731,10 +2762,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0c5cdpykx2h4jx8q01hjhv8f0plw5r9iqm2i1m0ijiyk7dqm824w";
+      sha256 = "12b3q2sw42nnilfb51nlqdv07f31vdv2j595kd99asnkw4cjlf5w";
       type = "gem";
     };
-    version = "1.2.0";
+    version = "1.3.0";
   };
   temple = {
     groups = ["default"];
@@ -2986,10 +3017,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0m0jh8k7c0ifh2jhbn7ihqrmn5fi754wflva97zgy70hpdvxyjar";
+      sha256 = "18jj50b44a471ig7hw1ax90wxaaz40acmrf6cm7m2iyshlffy53q";
       type = "gem";
     };
-    version = "1.1.0";
+    version = "1.2.0";
   };
   webmock = {
     dependencies = ["addressable" "crack" "hashdiff"];
diff --git a/pkgs/servers/mastodon/source.nix b/pkgs/servers/mastodon/source.nix
index 5581742ebe1ec..aa915395e31d6 100644
--- a/pkgs/servers/mastodon/source.nix
+++ b/pkgs/servers/mastodon/source.nix
@@ -2,8 +2,8 @@
 { fetchgit, applyPatches }: let
   src = fetchgit {
     url = "https://github.com/mastodon/mastodon.git";
-    rev = "v3.5.0";
-    sha256 = "1181zqz7928b6mnp4p502gy2rrwxyv5ysgfydx0n04y8wiq00g48";
+    rev = "v3.5.1";
+    sha256 = "0n6ml245jdc2inzw7jwhxbqlfkp5bs61kslyy71ww6a29ndd6hv0";
   };
 in applyPatches {
   inherit src;
diff --git a/pkgs/servers/mastodon/update.nix b/pkgs/servers/mastodon/update.nix
index 2e7df482530f4..1bd557a74a5bc 100644
--- a/pkgs/servers/mastodon/update.nix
+++ b/pkgs/servers/mastodon/update.nix
@@ -6,12 +6,12 @@
 , bundix
 , coreutils
 , diffutils
-, nix-prefetch-github
+, nix-prefetch-git
 , gnused
 , jq
 }:
 let
-  binPath = lib.makeBinPath [ yarn2nix bundix coreutils diffutils nix-prefetch-github gnused jq ];
+  binPath = lib.makeBinPath [ yarn2nix bundix coreutils diffutils nix-prefetch-git gnused jq ];
 in
 runCommand "mastodon-update-script"
 {
diff --git a/pkgs/servers/mastodon/update.sh b/pkgs/servers/mastodon/update.sh
index 77071be6ea901..3a0686a72158f 100755
--- a/pkgs/servers/mastodon/update.sh
+++ b/pkgs/servers/mastodon/update.sh
@@ -9,29 +9,29 @@ while [[ $# -gt 0 ]]; do
 
     case $key in
         --url)
-        URL="$2"
-        shift # past argument
-        shift # past value
-        ;;
+            URL="$2"
+            shift # past argument
+            shift # past value
+            ;;
         --ver)
-        VERSION="$2"
-        shift # past argument
-        shift # past value
-        ;;
-    --rev)
-    REVISION="$2"
-        shift # past argument
-        shift # past value
-        ;;
-    --patches)
-    PATCHES="$2"
-        shift # past argument
-        shift # past value
-        ;;
-        *)    # unknown option
-        POSITIONAL+=("$1")
-        shift # past argument
-        ;;
+            VERSION="$2"
+            shift # past argument
+            shift # past value
+            ;;
+        --rev)
+            REVISION="$2"
+            shift # past argument
+            shift # past value
+            ;;
+        --patches)
+            PATCHES="$2"
+            shift # past argument
+            shift # past value
+            ;;
+        *)  # unknown option
+            POSITIONAL+=("$1")
+            shift # past argument
+            ;;
     esac
 done
 
diff --git a/pkgs/servers/mastodon/version.nix b/pkgs/servers/mastodon/version.nix
index 90b75fe4fd168..7714a397576a6 100644
--- a/pkgs/servers/mastodon/version.nix
+++ b/pkgs/servers/mastodon/version.nix
@@ -1 +1 @@
-"3.5.0"
+"3.5.1"
diff --git a/pkgs/servers/matrix-corporal/default.nix b/pkgs/servers/matrix-corporal/default.nix
index ad92a1b8dbade..6451352af76e9 100644
--- a/pkgs/servers/matrix-corporal/default.nix
+++ b/pkgs/servers/matrix-corporal/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
     homepage = "https://github.com/devture/matrix-corporal";
     description = "Reconciliator and gateway for a managed Matrix server";
     maintainers = with maintainers; [ dandellion ];
+    mainProgram = "devture-matrix-corporal";
     license = licenses.agpl3Only;
   };
 }
diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix
index ffe76b25b1914..235d1895e152a 100644
--- a/pkgs/servers/matrix-synapse/default.nix
+++ b/pkgs/servers/matrix-synapse/default.nix
@@ -11,11 +11,11 @@ in
 with python3.pkgs;
 buildPythonApplication rec {
   pname = "matrix-synapse";
-  version = "1.55.2";
+  version = "1.57.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-MCdwatNo4cDAaq9a3UFwSLJzT1ZxhoYqPOu/a957D2Y=";
+    sha256 = "sha256-pZhm3jfpqOcLT+M4eeD8FyHtwj5EOAFESFu+4ZMoz0s=";
   };
 
   buildInputs = [ openssl ];
diff --git a/pkgs/servers/matrix-synapse/matrix-appservice-slack/default.nix b/pkgs/servers/matrix-synapse/matrix-appservice-slack/default.nix
index eb3d82e14d0b4..a00d983e91bb5 100644
--- a/pkgs/servers/matrix-synapse/matrix-appservice-slack/default.nix
+++ b/pkgs/servers/matrix-synapse/matrix-appservice-slack/default.nix
@@ -3,8 +3,8 @@ let
   src = fetchFromGitHub {
     owner = "matrix-org";
     repo = "matrix-appservice-slack";
-    rev = "1.10.0";
-    sha256 = "WnonduUhhrxCMuXOgLk8voNnn+f6R5CsJ7VKpEmGwzk=";
+    rev = "1.11.0";
+    sha256 = "U1EHL1ZwcpCXA9sjya6ry/3Q+gwdQWPUDFN+wp1qjrg=";
   };
 
   nodePackages = import ./node-composition.nix {
diff --git a/pkgs/servers/matrix-synapse/matrix-appservice-slack/generate-dependencies.sh b/pkgs/servers/matrix-synapse/matrix-appservice-slack/generate-dependencies.sh
index 2503d6d7ef353..1fceed1c72c1c 100755
--- a/pkgs/servers/matrix-synapse/matrix-appservice-slack/generate-dependencies.sh
+++ b/pkgs/servers/matrix-synapse/matrix-appservice-slack/generate-dependencies.sh
@@ -1,9 +1,9 @@
 #!/usr/bin/env nix-shell
 #! nix-shell -i bash -p nodePackages.node2nix
 
-# Download package.json and package-lock.json from the v1.10.0 release
-curl https://raw.githubusercontent.com/matrix-org/matrix-appservice-slack/1.10.0/package.json -o package.json
-curl https://raw.githubusercontent.com/matrix-org/matrix-appservice-slack/1.10.0/package-lock.json -o package-lock.json
+# Download package.json and package-lock.json from the v1.11.0 release
+curl https://raw.githubusercontent.com/matrix-org/matrix-appservice-slack/1.11.0/package.json -o package.json
+curl https://raw.githubusercontent.com/matrix-org/matrix-appservice-slack/1.11.0/package-lock.json -o package-lock.json
 
 node2nix \
   --nodejs-12 \
diff --git a/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix b/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix
index dc0bd7b052bf1..6bc864cd1089d 100644
--- a/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix
+++ b/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix
@@ -762,13 +762,13 @@ let
         sha512 = "ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==";
       };
     };
-    "axios-0.24.0" = {
+    "axios-0.26.0" = {
       name = "axios";
       packageName = "axios";
-      version = "0.24.0";
+      version = "0.26.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz";
-        sha512 = "Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==";
+        url = "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz";
+        sha512 = "lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==";
       };
     };
     "balanced-match-1.0.2" = {
@@ -1959,13 +1959,13 @@ let
         sha512 = "GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==";
       };
     };
-    "follow-redirects-1.14.4" = {
+    "follow-redirects-1.14.8" = {
       name = "follow-redirects";
       packageName = "follow-redirects";
-      version = "1.14.4";
+      version = "1.14.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz";
-        sha512 = "zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==";
+        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz";
+        sha512 = "1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==";
       };
     };
     "forever-agent-0.6.1" = {
@@ -4771,7 +4771,7 @@ let
   args = {
     name = "matrix-appservice-slack";
     packageName = "matrix-appservice-slack";
-    version = "1.10.0";
+    version = "1.11.0";
     src = ./.;
     dependencies = [
       sources."@alloc/quick-lru-5.2.0"
@@ -4895,7 +4895,7 @@ let
       sources."asynckit-0.4.0"
       sources."aws-sign2-0.7.0"
       sources."aws4-1.11.0"
-      sources."axios-0.24.0"
+      sources."axios-0.26.0"
       sources."balanced-match-1.0.2"
       sources."base-x-3.0.9"
       sources."base64-js-1.5.1"
@@ -5059,7 +5059,7 @@ let
       sources."flat-cache-3.0.4"
       sources."flatted-3.1.1"
       sources."fn.name-1.1.0"
-      sources."follow-redirects-1.14.4"
+      sources."follow-redirects-1.14.8"
       sources."forever-agent-0.6.1"
       sources."form-data-2.5.1"
       sources."forwarded-0.1.2"
diff --git a/pkgs/servers/matrix-synapse/plugins/shared-secret-auth.nix b/pkgs/servers/matrix-synapse/plugins/shared-secret-auth.nix
index 3df7f1e5a5d47..a6e22db34fe5c 100644
--- a/pkgs/servers/matrix-synapse/plugins/shared-secret-auth.nix
+++ b/pkgs/servers/matrix-synapse/plugins/shared-secret-auth.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "matrix-synapse-shared-secret-auth";
-  version = "2.0.1";
+  version = "2.0.2";
 
   src = fetchFromGitHub {
     owner = "devture";
     repo = "matrix-synapse-shared-secret-auth";
     rev = version;
-    sha256 = "sha256-kaok5IwKx97FYDrVIGAtUJfExqDln5vxEKrZda2RdzE=";
+    sha256 = "sha256-qzXKwTEOMtdvsxoU3Xh3vQyhK+Q18LfkeSts7EyDIXE=";
   };
 
   doCheck = false;
diff --git a/pkgs/servers/matrix-synapse/tools/synadm.nix b/pkgs/servers/matrix-synapse/tools/synadm.nix
index 46c9add3d88ed..c06999cf31026 100644
--- a/pkgs/servers/matrix-synapse/tools/synadm.nix
+++ b/pkgs/servers/matrix-synapse/tools/synadm.nix
@@ -4,12 +4,12 @@
 
 with python3Packages; buildPythonApplication rec {
   pname = "synadm";
-  version = "0.33.1";
+  version = "0.34";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-eIpRyx1iErZuB3n+Sl231BE47ckIXYzaelod7OtdSF8=";
+    sha256 = "sha256-pM1nY8j7W1aeWv7/H+9Sz9jo4u1sax/fuKPtx0JKtL8=";
   };
 
   postPatch = ''
diff --git a/pkgs/servers/matterbridge/default.nix b/pkgs/servers/matterbridge/default.nix
index e5fbe803854bd..8882853a3b438 100644
--- a/pkgs/servers/matterbridge/default.nix
+++ b/pkgs/servers/matterbridge/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "matterbridge";
-  version = "1.24.1";
+  version = "1.25.0";
 
   src = fetchFromGitHub {
     owner = "42wim";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-oT7CFJ266guNM6CEWn1BoNcERvLv89cVSlsrN6S/0h0=";
+    sha256 = "sha256-R5eoFpCbfPPkWgK1NFgRvWzUR5uTV4YpdEBE09g9D3A=";
   };
 
   vendorSha256 = null;
diff --git a/pkgs/servers/mautrix-signal/default.nix b/pkgs/servers/mautrix-signal/default.nix
index f9d3cf281c49c..426d2a32fbe88 100644
--- a/pkgs/servers/mautrix-signal/default.nix
+++ b/pkgs/servers/mautrix-signal/default.nix
@@ -2,13 +2,13 @@
 
 python3.pkgs.buildPythonPackage rec {
   pname = "mautrix-signal";
-  version = "0.2.2";
+  version = "0.2.3";
 
   src = fetchFromGitHub {
     owner = "mautrix";
     repo = "signal";
     rev = "v${version}";
-    sha256 = "sha256-gJngGgShW63g5zSyZraod0YTt/pFtVLySDXNXXC5Xxs=";
+    sha256 = "sha256-P5a/JoL6PBkYDDitlkMj2QClvcXMgXcnup5EAatGcSs=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/servers/mautrix-whatsapp/default.nix b/pkgs/servers/mautrix-whatsapp/default.nix
index e26743b9edf8b..b20bd236c85d9 100644
--- a/pkgs/servers/mautrix-whatsapp/default.nix
+++ b/pkgs/servers/mautrix-whatsapp/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "mautrix-whatsapp";
-  version = "0.3.0";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "mautrix";
     repo = "whatsapp";
     rev = "v${version}";
-    sha256 = "M44APMnpQU+9TTJu4NF528o0JvGvWja4H7XUcAHtxrA=";
+    sha256 = "adsGPVG/EwpzOqhFJvn3anjTXwGY27a7Bc4NNkBeqJk=";
   };
 
   buildInputs = [ olm ];
 
-  vendorSha256 = "o3KTcnMd6Tqt9QIfW29wvN8POIFThNg8AdeGDF5wbVc=";
+  vendorSha256 = "WT8oDtmUFrqfNK/RnEv8+jpGuQEGt+ppjtmcfUGYZv0=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/memcached/default.nix b/pkgs/servers/memcached/default.nix
index 4461930b13cc9..eedb420f2eb44 100644
--- a/pkgs/servers/memcached/default.nix
+++ b/pkgs/servers/memcached/default.nix
@@ -1,12 +1,12 @@
 {lib, stdenv, fetchurl, cyrus_sasl, libevent, nixosTests }:
 
 stdenv.mkDerivation rec {
-  version = "1.6.14";
+  version = "1.6.15";
   pname = "memcached";
 
   src = fetchurl {
     url = "https://memcached.org/files/${pname}-${version}.tar.gz";
-    sha256 = "sha256-VNY3QsaIbc3E4Mh/RDmikwqHbNnyv6AdaZsMa60XB7M=";
+    sha256 = "sha256-jXq+PWSTeO27oW9C7x1myj8qwHXy65cUXOFkOI5u1RU=";
   };
 
   configureFlags = [
diff --git a/pkgs/servers/misc/oven-media-engine/default.nix b/pkgs/servers/misc/oven-media-engine/default.nix
index 7cd209f95e3f7..655da606ef06f 100644
--- a/pkgs/servers/misc/oven-media-engine/default.nix
+++ b/pkgs/servers/misc/oven-media-engine/default.nix
@@ -18,13 +18,13 @@
 
 stdenv.mkDerivation rec {
   pname = "oven-media-engine";
-  version = "0.13.1";
+  version = "0.13.2";
 
   src = fetchFromGitHub {
     owner = "AirenSoft";
     repo = "OvenMediaEngine";
     rev = "v${version}";
-    sha256 = "sha256-oWZ+o19bNR7/QuYTquRa3l7GfRLMEdyPtBUOwb2p3jA=";
+    sha256 = "0lkpidx4r890mcdk9m69j4iahm7qr7w34h11w1nmi132v0rqm0h8";
   };
 
   sourceRoot = "source/src";
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Open-source streaming video service with sub-second latency";
     homepage    = "https://ovenmediaengine.com";
-    license     = licenses.gpl2Only;
+    license     = licenses.agpl3Only;
     maintainers = with maintainers; [ lukegb ];
     platforms   = [ "x86_64-linux" ];
   };
diff --git a/pkgs/servers/monitoring/alerta/client.nix b/pkgs/servers/monitoring/alerta/client.nix
index 31f31d0740579..cd969d9dbba50 100644
--- a/pkgs/servers/monitoring/alerta/client.nix
+++ b/pkgs/servers/monitoring/alerta/client.nix
@@ -4,11 +4,11 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "alerta";
-  version = "8.4.0";
+  version = "8.5.1";
 
   src = python3.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "260ff3118e73396104129928217b0f317ac5afdff8221874d8986df22ecf5f34";
+    sha256 = "sha256-O13Ic2iHjNF/llp6vdaAiiWExcTBPsz46GAWY3oGDY8=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/servers/monitoring/alerta/default.nix b/pkgs/servers/monitoring/alerta/default.nix
index e69a594a728bc..c3758c26b253b 100644
--- a/pkgs/servers/monitoring/alerta/default.nix
+++ b/pkgs/servers/monitoring/alerta/default.nix
@@ -4,11 +4,11 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "alerta-server";
-  version = "8.3.3";
+  version = "8.7.0";
 
   src = python3.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "a2713a31c6e326c774a3ee0328f424f944b951935ff1b893a4a66598d61c5a97";
+    sha256 = "sha256-EM3owmj+6gFjU0ARaQP3FLYXliGaGCRSaLgkiPwhGdU=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
@@ -21,6 +21,7 @@ python3.pkgs.buildPythonApplication rec {
     psycopg2
     pyjwt
     pymongo
+    pyparsing
     python-dateutil
     pytz
     pyyaml
@@ -29,13 +30,17 @@ python3.pkgs.buildPythonApplication rec {
     sentry-sdk
   ];
 
-  doCheck = false; # We can't run the tests from Nix, because they rely on the presence of a working MongoDB server
+   # We can't run the tests from Nix, because they rely on the presence of a working MongoDB server
+  doCheck = false;
 
-  disabled = python3.pythonOlder "3.6";
+  pythonImportsCheck = [
+    "alerta"
+  ];
 
   meta = with lib; {
     homepage = "https://alerta.io";
     description = "Alerta Monitoring System server";
     license = licenses.asl20;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/servers/monitoring/cadvisor/default.nix b/pkgs/servers/monitoring/cadvisor/default.nix
index 2db3cd0844705..760bed7b9371b 100644
--- a/pkgs/servers/monitoring/cadvisor/default.nix
+++ b/pkgs/servers/monitoring/cadvisor/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "cadvisor";
-  version = "0.38.7";
+  version = "0.40.0";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "cadvisor";
     rev = "v${version}";
-    sha256 = "sha256-2gwN3/sYPcDy1EUxt9mYviciN9/ZVdChIsuMt3Ueq68=";
+    sha256 = "sha256-8HOaKjdATVZpyx4yLf7xefz+jiOEqmkWiZnA3DOyT50=";
   };
 
   modRoot = "./cmd";
 
-  vendorSha256 = "sha256-FMO+wNmjFFD9+/9mhNcyZftk8ryhwFXDZeEy/h5EMWc=";
+  vendorSha256 = "sha256-+nrXD0hQ3zBwTTq9xoBqO3ho4s4tf8uZQz2wL1nYi/k=";
 
   ldflags = [ "-s" "-w" "-X github.com/google/cadvisor/version.Version=${version}" ];
 
diff --git a/pkgs/servers/monitoring/grafana-agent/default.nix b/pkgs/servers/monitoring/grafana-agent/default.nix
index 4ef0c34e393f8..ab342acb258df 100644
--- a/pkgs/servers/monitoring/grafana-agent/default.nix
+++ b/pkgs/servers/monitoring/grafana-agent/default.nix
@@ -2,20 +2,20 @@
 
 buildGoModule rec {
   pname = "grafana-agent";
-  version = "0.21.2";
+  version = "0.24.1";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "grafana";
     repo = "agent";
-    sha256 = "sha256-s++21feD3L2HuVYFjWhNIOGTjjX+lXwURc4PqbwFnhI=";
+    sha256 = "sha256-WxULVtqKxYXMWNY4l0wvTkqcDkPrlHcS70NgQhe8nzU=";
   };
 
-  vendorSha256 = "sha256-kxLtbElzfimC/ZefUyTlfQiUZo4y0f1riajRm5shVdU=";
+  vendorSha256 = "sha256-hdo8uiVJAMMPo1N8kLDFPSbyTr5WxNKtq8E7pj6Plak=";
 
-  patches = [
-    # https://github.com/grafana/agent/issues/731
-    ./skip_test_requiring_network.patch
+  tags = [
+    "nonetwork"
+    "nodocker"
   ];
 
   # uses go-systemd, which uses libsystemd headers
diff --git a/pkgs/servers/monitoring/grafana-agent/skip_test_requiring_network.patch b/pkgs/servers/monitoring/grafana-agent/skip_test_requiring_network.patch
deleted file mode 100644
index fcba11dd2fb41..0000000000000
--- a/pkgs/servers/monitoring/grafana-agent/skip_test_requiring_network.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/pkg/operator/selector_eventhandler_test.go b/pkg/operator/selector_eventhandler_test.go
-index 7b6ec602..e79bae0e 100644
---- a/pkg/operator/selector_eventhandler_test.go
-+++ b/pkg/operator/selector_eventhandler_test.go
-@@ -39,6 +39,10 @@ var (
- // TestEnqueueRequestForSelector creates an example Kubenretes cluster and runs
- // EnqueueRequestForSelector to validate it works.
- func TestEnqueueRequestForSelector(t *testing.T) {
-+	// Requires network access, which is not available during
-+	// the nixpkgs sandboxed build
-+	t.Skip()
-+
- 	l := log.NewNopLogger()
- 
- 	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
diff --git a/pkgs/servers/monitoring/grafana/default.nix b/pkgs/servers/monitoring/grafana/default.nix
index e3877265ca35f..4152e8bf98482 100644
--- a/pkgs/servers/monitoring/grafana/default.nix
+++ b/pkgs/servers/monitoring/grafana/default.nix
@@ -2,23 +2,23 @@
 
 buildGoModule rec {
   pname = "grafana";
-  version = "8.4.5";
+  version = "8.4.7";
 
-  excludedPackages = "\\(alert_webhook_listener\\|clean-swagger\\|release_publisher\\|slow_proxy\\|slow_proxy_mac\\|macaron\\)";
+  excludedPackages = [ "alert_webhook_listener" "clean-swagger" "release_publisher" "slow_proxy" "slow_proxy_mac" "macaron" ];
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "grafana";
     repo = "grafana";
-    sha256 = "sha256-CdGg979c7XD5V3jZbVeHUGylAarGc+cR+bFi5FngKtU=";
+    sha256 = "sha256-8owcfWTiXhejFc5P0AM6POXBXuAABn4M/uX9X68Zn8k=";
   };
 
   srcStatic = fetchurl {
     url = "https://dl.grafana.com/oss/release/grafana-${version}.linux-amd64.tar.gz";
-    sha256 = "sha256-PjDTEmzjDmT1WQGqF3GwojJ6mG2whBoPK0KWfXI8AB4=";
+    sha256 = "1wi28v1xhav8p2jqkf2gmk1accfcf1w0d6h312d4pns6pkhdabxv";
   };
 
-  vendorSha256 = "sha256-iOJEy7dCZGRTaOuL/09wcMlNDHjRi9SIr9bialdcKi4=";
+  vendorSha256 = "sha256-7ZeOncdiA/0Awg+olJvsLneLQH4zBQka4M81jsxwUdE=";
 
   nativeBuildInputs = [ wire ];
 
@@ -66,7 +66,10 @@ buildGoModule rec {
     cp ./conf/defaults.ini $out/share/grafana/conf/
   '';
 
-  passthru.tests = { inherit (nixosTests) grafana; };
+  passthru = {
+    tests = { inherit (nixosTests) grafana; };
+    updateScript = ./update.sh;
+  };
 
   meta = with lib; {
     description = "Gorgeous metric viz, dashboards & editors for Graphite, InfluxDB & OpenTSDB";
diff --git a/pkgs/servers/monitoring/grafana/update.sh b/pkgs/servers/monitoring/grafana/update.sh
new file mode 100755
index 0000000000000..8fce843338853
--- /dev/null
+++ b/pkgs/servers/monitoring/grafana/update.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts jq nix nix-prefetch-scripts moreutils
+
+set -euxo pipefail
+
+FILE="$(nix-instantiate --eval -E 'with import ./. {}; (builtins.unsafeGetAttrPos "version" grafana).file' | tr -d '"')"
+replaceHash() {
+  old="${1?old hash missing}"
+  new="${2?new hash missing}"
+  awk -v OLD="$old" -v NEW="$new" '{
+    if (i=index($0, OLD)) {
+      $0 = substr($0, 1, i-1) NEW substr($0, i+length(OLD));
+    }
+    print $0;
+  }' "$FILE" | sponge "$FILE"
+}
+extractVendorHash() {
+  original="${1?original hash missing}"
+  result="$(nix-build -A grafana.go-modules 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)"
+  [ -z "$result" ] && { echo "$original"; } || { echo "$result"; }
+}
+
+oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion grafana" | tr -d '"')"
+latest="$(curl https://api.github.com/repos/grafana/grafana/releases/latest | jq '.tag_name' -r | tr -d 'v')"
+
+targetVersion="${1:-$latest}"
+if [ ! "${oldVersion}" = "${targetVersion}" ]; then
+  update-source-version grafana "${targetVersion#v}"
+  oldStaticHash="$(nix-instantiate --eval -A grafana.srcStatic.outputHash | tr -d '"')"
+  newStaticHash="$(nix-prefetch-url "https://dl.grafana.com/oss/release/grafana-${targetVersion#v}.linux-amd64.tar.gz")"
+  replaceHash "$oldStaticHash" "$newStaticHash"
+  goHash="$(nix-instantiate --eval -A grafana.vendorSha256 | tr -d '"')"
+  emptyHash="$(nix-instantiate --eval -A lib.fakeSha256 | tr -d '"')"
+  replaceHash "$goHash" "$emptyHash"
+  replaceHash "$emptyHash" "$(extractVendorHash "$goHash")"
+  nix-build -A grafana
+else
+  echo "grafana is already up-to-date"
+fi
diff --git a/pkgs/servers/monitoring/heapster/default.nix b/pkgs/servers/monitoring/heapster/default.nix
deleted file mode 100644
index d1205ae353b23..0000000000000
--- a/pkgs/servers/monitoring/heapster/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, buildGoPackage, fetchFromGitHub, docker }:
-
-buildGoPackage rec {
-  rev = "3057a2c07061c8d9ffaf77e5442ffd7512ac0133";
-  pname = "heapster";
-  version = lib.strings.substring 0 7 rev;
-  goPackagePath = "k8s.io/heapster";
-  subPackages = [ "./" ];
-
-  src = fetchFromGitHub {
-    inherit rev;
-    owner = "kubernetes";
-    repo = "heapster";
-    sha256 = "1vg83207y7yigydnnhlvzs3s94vx02i56lqgs6a96c6i3mr3ydpb";
-  };
-
-  preBuild = ''
-    export GOPATH=$GOPATH:$NIX_BUILD_TOP/go/src/${goPackagePath}/Godeps/_workspace
-  '';
-
-  meta = with lib; {
-    description = "Compute Resource Usage Analysis and Monitoring of Container Clusters";
-    license = licenses.asl20;
-    homepage = "https://github.com/kubernetes/heapster";
-    maintainers = with maintainers; [ offline ];
-    platforms = docker.meta.platforms;
-  };
-}
diff --git a/pkgs/servers/monitoring/loki/default.nix b/pkgs/servers/monitoring/loki/default.nix
index 0a460e335b43c..c0816808cbad5 100644
--- a/pkgs/servers/monitoring/loki/default.nix
+++ b/pkgs/servers/monitoring/loki/default.nix
@@ -8,14 +8,14 @@
 }:
 
 buildGoModule rec {
-  version = "2.4.2";
+  version = "2.5.0";
   pname = "grafana-loki";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "grafana";
     repo = "loki";
-    sha256 = "sha256-HSEdN3PN4wQQ3A7bICNIAgdwhwD/PIUeOdW9ZgwmbCw=";
+    sha256 = "sha256-3GeWrkTL3HJQsVBafjSQXHsf1nbVzSVSDZWcJlD22Nw=";
   };
 
   vendorSha256 = null;
diff --git a/pkgs/servers/monitoring/mackerel-agent/default.nix b/pkgs/servers/monitoring/mackerel-agent/default.nix
index d11add105f6ba..54307fb98b43d 100644
--- a/pkgs/servers/monitoring/mackerel-agent/default.nix
+++ b/pkgs/servers/monitoring/mackerel-agent/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "mackerel-agent";
-  version = "0.72.8";
+  version = "0.72.9";
 
   src = fetchFromGitHub {
     owner = "mackerelio";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-IejLCi1TJ2Q0lpA2ZK3hea18YX483FV4IisYRRVD1Vg=";
+    sha256 = "sha256-+3a0FyVf5AB85gGGBI8/ssLBqj9Kp3w9DUNbSaAtXvA=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/monitoring/mimir/default.nix b/pkgs/servers/monitoring/mimir/default.nix
new file mode 100644
index 0000000000000..db5c45f2fd37f
--- /dev/null
+++ b/pkgs/servers/monitoring/mimir/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+buildGoModule rec {
+  pname = "mimir";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    rev = "${pname}-${version}";
+    owner = "grafana";
+    repo = pname;
+    sha256 = "T1lljhC/TS3eoIc9AFo9Oy9/COM/XnfcwtkU618YCdM=";
+  };
+
+  vendorSha256 = null;
+
+  subPackages = [ "cmd/mimir" ];
+
+  ldflags = let t = "github.com/grafana/mimir/pkg/util/version";
+  in [
+    ''-extldflags "-static"''
+    "-s"
+    "-w"
+    "-X ${t}.Version=${version}"
+    "-X ${t}.Revision=unknown"
+    "-X ${t}.Branch=unknown"
+  ];
+
+  meta = with lib; {
+    description =
+      "Grafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus. ";
+    homepage = "https://github.com/grafana/mimir";
+    license = licenses.agpl3Only;
+    maintainers = with maintainers; [ happysalada bryanhonof ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/monitoring/munin/default.nix b/pkgs/servers/monitoring/munin/default.nix
index 258247c34f47e..e8fa4feb6af47 100644
--- a/pkgs/servers/monitoring/munin/default.nix
+++ b/pkgs/servers/monitoring/munin/default.nix
@@ -13,8 +13,11 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-p273O5JLFX1dA2caV3lVVL9YNTcGMSrC7DWieUfUmqI=";
   };
 
-  buildInputs = [
+  nativeBuildInputs = [
     makeWrapper
+  ];
+
+  buildInputs = [
     which
     coreutils
     rrdtool
diff --git a/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix b/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix
index b55b47cd7afdf..c4fb36d5a3b93 100644
--- a/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix
+++ b/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "check_ssl_cert";
-  version = "2.23.0";
+  version = "2.25.0";
 
   src = fetchFromGitHub {
     owner = "matteocorti";
     repo = "check_ssl_cert";
     rev = "v${version}";
-    sha256 = "sha256-RGl6Fgm9FVaZQMWHl93RwHvrScz69VgbIyDBqMh3PVo=";
+    sha256 = "sha256-WjiUsf8PMlTsldMaxnQbgnC1XLVW6wz50JyX/3MbZ+k=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/servers/monitoring/prometheus/bird-exporter.nix b/pkgs/servers/monitoring/prometheus/bird-exporter.nix
index caa17ce97fc4c..33005279962a6 100644
--- a/pkgs/servers/monitoring/prometheus/bird-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/bird-exporter.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "bird-exporter";
-  version = "1.4.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "czerwonk";
     repo = "bird_exporter";
     rev = version;
-    sha256 = "sha256-N/00+2OrP0BsEazD9bHk+w/xO9E6sFT6nC0MM4n9lR4=";
+    sha256 = "sha256-QCnOMiAcvn0HcppGJlf3sdllApKcjHpucvk9xxD/MqE=";
   };
 
-  vendorSha256 = "sha256-9xKMwHNgPMtC+J3mwwUNSJnpMGttpaWF6l8gv0YtvHE=";
+  vendorSha256 = "sha256-jBwaneVv1a8iIqnhDbQOnvaJdnXgO8P90Iv51IfGaM0=";
 
   passthru.tests = { inherit (nixosTests.prometheus-exporters) bird; };
 
diff --git a/pkgs/servers/monitoring/prometheus/mesos-exporter.nix b/pkgs/servers/monitoring/prometheus/mesos-exporter.nix
deleted file mode 100644
index 289b8f2403d8f..0000000000000
--- a/pkgs/servers/monitoring/prometheus/mesos-exporter.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, buildGoPackage, fetchFromGitHub }:
-
-buildGoPackage rec {
-  pname = "mesos_exporter";
-  version = "1.1.2";
-
-  goPackagePath = "github.com/prometheus/mesos_exporter";
-
-  src = fetchFromGitHub {
-    rev = "v${version}";
-    owner = "mesos";
-    repo = "mesos_exporter";
-    sha256 = "0nvjlpxdhh60wcdw2fdc8h0vn6fxkz0nh7zrx43hjxymvc15ixza";
-  };
-
-  meta = with lib; {
-    description = "Export Mesos metrics to Prometheus";
-    homepage = "https://github.com/prometheus/mesos_exporter";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ benley ];
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix b/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix
index 4f96e516278fb..386e49594d248 100644
--- a/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/nextcloud-exporter.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "prometheus-nextcloud-exporter";
-  version = "0.5.0";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "xperimental";
     repo = "nextcloud-exporter";
     rev = "v${version}";
-    sha256 = "sha256-73IxGxnKgbG50nr57Wft+hh0KT7redrwXc4EZFn25qs=";
+    sha256 = "18xvxx0aplkj7xzi0zfsz7a5d45hh8blfqb105360pknvvi6apjv";
   };
 
-  vendorSha256 = "sha256-vIhHUFg8m6raKF82DcXRGKCgSM2FJ2VTM+MdMjP7KUY=";
+  vendorSha256 = "1wr1ckz0klk9sqpyk96h8bwr1dg6aiirr1l1f23kbib91pfpd08r";
 
   passthru.tests = { inherit (nixosTests.prometheus-exporters) nextcloud; };
 
diff --git a/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix b/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix
index 04e2772ca2a11..0ada418872d18 100644
--- a/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/nginxlog-exporter.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "nginxlog_exporter";
-  version = "1.9.0";
+  version = "1.9.2";
 
   src = fetchFromGitHub {
     owner = "martin-helmich";
     repo = "prometheus-nginxlog-exporter";
     rev = "v${version}";
-    sha256 = "0kcwhaf9k7c1xsz78064qz5zb4x3xgi1ifi49qkwiaqrzx2xy26p";
+    sha256 = "sha256-rRmWy6c5bvmJO0h7uleabQnBLm8Qarp2iEBGfodGdKE=";
   };
 
   vendorSha256 = "sha256-5C5xQx8I5aHgi9P5gpHmPw6nV76D68/agVAP1vGab4w=";
diff --git a/pkgs/servers/monitoring/prometheus/process-exporter.nix b/pkgs/servers/monitoring/prometheus/process-exporter.nix
index e4bfed9821b78..135551db56609 100644
--- a/pkgs/servers/monitoring/prometheus/process-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/process-exporter.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "process-exporter";
-  version = "0.7.5";
+  version = "0.7.10";
 
   src = fetchFromGitHub {
     owner = "ncabatoff";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0v1q8mi8p01smzfxaf52kbqnjz9fx4rp64jqhgbcx0s45q3bph9l";
+    sha256 = "sha256-TAgMA9IV3i8dpgOBDmnlt4iyGlmWN5Nj3BexXb5vzlc=";
   };
 
-  vendorSha256 = "19y2w1vplf7qqkzcpi01ssawv9badhwpglh2gz69fgl6xc3mxfmp";
+  vendorSha256 = "sha256-LAEnXJ3qShfCGjtsYAGyW5x/TTFQxQxXM0hebJrqiW4=";
 
   postPatch = ''
     substituteInPlace proc/read_test.go --replace /bin/cat cat
diff --git a/pkgs/servers/monitoring/prometheus/promscale/default.nix b/pkgs/servers/monitoring/prometheus/promscale/default.nix
index dd297d4c25854..fbd1661c5f8b1 100644
--- a/pkgs/servers/monitoring/prometheus/promscale/default.nix
+++ b/pkgs/servers/monitoring/prometheus/promscale/default.nix
@@ -2,7 +2,7 @@
 , buildGoModule
 , fetchFromGitHub
 , promscale
-, testVersion
+, testers
 }:
 
 buildGoModule rec {
@@ -40,7 +40,7 @@ buildGoModule rec {
     runHook postCheck
   '';
 
-  passthru.tests.version = testVersion {
+  passthru.tests.version = testers.testVersion {
     package = promscale;
     command = "promscale -version";
   };
diff --git a/pkgs/servers/monitoring/telegraf/default.nix b/pkgs/servers/monitoring/telegraf/default.nix
index 3250d2339941f..5c1f2e6862bd3 100644
--- a/pkgs/servers/monitoring/telegraf/default.nix
+++ b/pkgs/servers/monitoring/telegraf/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "telegraf";
-  version = "1.22.0";
+  version = "1.22.1";
 
   excludedPackages = "test";
 
@@ -12,10 +12,10 @@ buildGoModule rec {
     owner = "influxdata";
     repo = "telegraf";
     rev = "v${version}";
-    sha256 = "sha256-Y7vR6kmh1rObDyyHA2NFvBkilBz+Bx8BHqlAoVY/gGo=";
+    sha256 = "sha256-W6o+dFUdnH4c+SLwqhoutOsXf+XLu2qNjYytPp43fjk=";
   };
 
-  vendorSha256 = "sha256-oSN6nHOtXA2cSZEmToRvALkSxAyel9BU7bh1groEnsw=";
+  vendorSha256 = "sha256-28Xz8fIlrdCVkG0x5toJXht+RIkBmey4wi6WGqsq80k=";
   proxyVendor = true;
 
   ldflags = [
diff --git a/pkgs/servers/monitoring/thanos/default.nix b/pkgs/servers/monitoring/thanos/default.nix
index 8692b5b558ab9..7b1bd2960ab90 100644
--- a/pkgs/servers/monitoring/thanos/default.nix
+++ b/pkgs/servers/monitoring/thanos/default.nix
@@ -1,13 +1,13 @@
 { lib, buildGoModule, fetchFromGitHub }:
 buildGoModule rec {
   pname = "thanos";
-  version = "0.25.1";
+  version = "0.25.2";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "thanos-io";
     repo = "thanos";
-    sha256 = "sha256-yisJqr2JMpXSo9O3q7WpNe1r6w7E3XyeLpVlbdest3s=";
+    sha256 = "sha256-CAeI+5aC8kSQaKOk/5WCQiQMOX82hogAQGP2Em3DJAw=";
   };
 
   vendorSha256 = "sha256-tHtfS4PnO9n3ckUdaG6dQAIE2D2PG6km4Tqofaab/eg=";
diff --git a/pkgs/servers/monitoring/zipkin/default.nix b/pkgs/servers/monitoring/zipkin/default.nix
index 9395c3c61c191..37e43aeb3d948 100644
--- a/pkgs/servers/monitoring/zipkin/default.nix
+++ b/pkgs/servers/monitoring/zipkin/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.unix;
     maintainers = [ maintainers.hectorj ];
+    mainProgram = "zipkin-server";
   };
 }
diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix
index 92e8d6ff5d21e..e71fb9db115ed 100644
--- a/pkgs/servers/nextcloud/default.nix
+++ b/pkgs/servers/nextcloud/default.nix
@@ -46,13 +46,13 @@ in {
   '';
 
   nextcloud22 = generic {
-    version = "22.2.6";
-    sha256 = "0f1d0f0cb000c51b11886be25a8adce478846c3233572fcf28b44c5d4036e235";
+    version = "22.2.7";
+    sha256 = "5ada41cb3e69665e8a13946f71978829c0a0163d0277a49e599c9e8ccf960eab";
   };
 
   nextcloud23 = generic {
-    version = "23.0.3";
-    sha256 = "39401d400fab02a84a175ea6e995b8ed4110fbaea48c876230b4f09755a62986";
+    version = "23.0.4";
+    sha256 = "67191c2b8b41591ae42accfb32216313fde0e107201682cb39029f890712bc6a";
   };
   # tip: get she sha with:
   # curl 'https://download.nextcloud.com/server/releases/nextcloud-${version}.tar.bz2.sha256'
diff --git a/pkgs/servers/nitter/default.nix b/pkgs/servers/nitter/default.nix
index 32c7ac21dae4d..a0115440b6ecc 100644
--- a/pkgs/servers/nitter/default.nix
+++ b/pkgs/servers/nitter/default.nix
@@ -2,14 +2,14 @@
 
 nimPackages.buildNimPackage rec {
   pname = "nitter";
-  version = "unstable-2022-02-11";
+  version = "unstable-2022-03-21";
   nimBinOnly = true;
 
   src = fetchFromGitHub {
     owner = "zedeus";
     repo = "nitter";
-    rev = "6695784050605c77a301c0a66764fa9a9580a2f5";
-    sha256 = "1lddzf6m74bw5kkv465cp211xxqbwnfacav7ia3y9i38rrnqwk6m";
+    rev = "6884f05041a9b8619ec709afacdfdd6482a120a0";
+    sha256 = "1mnc6jqljpqp9lgcrxxvf3aiswssr34v139cxfbwlmj45swmsazh";
   };
 
   buildInputs = with nimPackages; [
diff --git a/pkgs/servers/nitter/update.sh b/pkgs/servers/nitter/update.sh
new file mode 100755
index 0000000000000..e756eff5fb981
--- /dev/null
+++ b/pkgs/servers/nitter/update.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p common-updater-scripts curl jq nix nix-prefetch-git patchutils
+set -euo pipefail
+
+info() {
+    if [ -t 2 ]; then
+        set -- '\033[32m%s\033[39m\n' "$@"
+    else
+        set -- '%s\n' "$@"
+    fi
+    printf "$@" >&2
+}
+
+nitter_old_version=$(nix-instantiate --eval --strict --json -A nitter.version . | jq -r .)
+nitter_old_rev=$(nix-instantiate --eval --strict --json -A nitter.src.rev . | jq -r .)
+today=$(LANG=C date -u +'%Y-%m-%d')
+
+# use latest commit before today, we should not call the version *today*
+# because there might still be commits coming
+# use the day of the latest commit we picked as version
+commit=$(curl -Sfs "https://api.github.com/repos/zedeus/nitter/compare/$nitter_old_rev~1...master" \
+    | jq '.commits | map(select(.commit.committer.date < $today) | {sha, date: .commit.committer.date}) | .[-1]' --arg today "$today")
+nitter_new_rev=$(jq -r '.sha' <<< "$commit")
+nitter_new_version="unstable-$(jq -r '.date[0:10]' <<< "$commit")"
+info "latest commit before $today: $nitter_new_rev ($(jq -r '.date' <<< "$commit"))"
+
+if [ "$nitter_new_rev" = "$nitter_old_rev" ]; then
+    info "nitter is up-to-date."
+    exit
+fi
+
+if curl -Sfs "https://github.com/zedeus/nitter/compare/$nitter_old_rev...$nitter_new_rev.patch" \
+| lsdiff | grep -Fxe 'a/nitter.nimble' -e 'b/nitter.nimble' > /dev/null; then
+    info "nitter.nimble changed, some dependencies probably need updating."
+fi
+
+nitter_new_sha256=$(nix-prefetch-git --rev "$nitter_new_rev" "https://github.com/zedeus/nitter.git" | jq -r .sha256)
+update-source-version nitter "$nitter_new_version" "$nitter_new_sha256" --rev="$nitter_new_rev"
+git commit --all --verbose --message "nitter: $nitter_old_version -> $nitter_new_version"
+info "Updated nitter to $nitter_new_version."
diff --git a/pkgs/servers/nosql/arangodb/default.nix b/pkgs/servers/nosql/arangodb/default.nix
index bf7f7b4396096..d9f1892beca94 100644
--- a/pkgs/servers/nosql/arangodb/default.nix
+++ b/pkgs/servers/nosql/arangodb/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, openssl, zlib, cmake, python2, perl, snappy, lzo, which }:
+{ stdenv, lib, fetchFromGitHub, openssl, zlib, cmake, python2, perl, snappy, lzo, which, catch2, catch }:
 
 let
   common = { version, sha256 }: stdenv.mkDerivation {
@@ -26,6 +26,14 @@ let
       # with nixpkgs, it has no sense to check for a version update
       substituteInPlace js/client/client.js --replace "require('@arangodb').checkAvailableVersions();" ""
       substituteInPlace js/server/server.js --replace "require('@arangodb').checkAvailableVersions();" ""
+
+      ${if (lib.versionOlder version "3.4") then ''
+        cp ${catch}/include/catch/catch.hpp 3rdParty/catch/catch.hpp
+      '' else if (lib.versionOlder version "3.5") then ''
+        cp ${catch2}/include/catch2/catch.hpp 3rdParty/catch/catch.hpp
+      '' else ''
+        (cd 3rdParty/boost/1.69.0 && patch -p1 < ${../../../development/libraries/boost/pthread-stack-min-fix.patch})
+      ''}
     '';
 
     cmakeFlags = [
diff --git a/pkgs/servers/nosql/cassandra/2.1.json b/pkgs/servers/nosql/cassandra/2.1.json
new file mode 100644
index 0000000000000..d1af24106b69f
--- /dev/null
+++ b/pkgs/servers/nosql/cassandra/2.1.json
@@ -0,0 +1,4 @@
+{
+  "version": "2.1.22",
+  "sha256": "1wk57dz0kmc6d5y8d8dkx269lzh3ark3751z734gxncwdlclcyz3"
+}
diff --git a/pkgs/servers/nosql/cassandra/2.1.nix b/pkgs/servers/nosql/cassandra/2.1.nix
index 63d89a29d13f5..02f954ebd1fe7 100644
--- a/pkgs/servers/nosql/cassandra/2.1.nix
+++ b/pkgs/servers/nosql/cassandra/2.1.nix
@@ -1,11 +1,12 @@
 { callPackage, ... } @ args:
 
-callPackage ./generic.nix (args // {
-  version = "2.1.22";
-  sha256 = "1wk57dz0kmc6d5y8d8dkx269lzh3ark3751z734gxncwdlclcyz3";
-  generation = "2_1";
-  extraMeta.knownVulnerabilities = [
-    # Fixed in 3.* but 2.* hasn't been released since
-    "CVE-2020-17516"
-  ];
-})
+callPackage ./generic.nix (
+  args
+  // builtins.fromJSON (builtins.readFile ./2.1.json)
+  // {
+    generation = "2_1";
+    extraMeta.knownVulnerabilities = [
+      # Fixed in 3.* but 2.* hasn't been released since
+      "CVE-2020-17516"
+    ];
+  })
diff --git a/pkgs/servers/nosql/cassandra/2.2.json b/pkgs/servers/nosql/cassandra/2.2.json
new file mode 100644
index 0000000000000..694e66f4f463f
--- /dev/null
+++ b/pkgs/servers/nosql/cassandra/2.2.json
@@ -0,0 +1,4 @@
+{
+  "version": "2.2.14",
+  "sha256": "1b2x3q1ach44qg07sh8wr7d8a10n36w5522drd3p35djbiwa3d9q"
+}
diff --git a/pkgs/servers/nosql/cassandra/2.2.nix b/pkgs/servers/nosql/cassandra/2.2.nix
index dc04c374b3d53..bcb2eaec123c6 100644
--- a/pkgs/servers/nosql/cassandra/2.2.nix
+++ b/pkgs/servers/nosql/cassandra/2.2.nix
@@ -1,11 +1,12 @@
 { callPackage, ... } @ args:
 
-callPackage ./generic.nix (args // {
-  version = "2.2.14";
-  sha256 = "1b2x3q1ach44qg07sh8wr7d8a10n36w5522drd3p35djbiwa3d9q";
-  generation = "2_2";
-  extraMeta.knownVulnerabilities = [
-    # Fixed in 3.* but 2.* hasn't been released since
-    "CVE-2020-17516"
-  ];
-})
+callPackage ./generic.nix (
+  args
+  // builtins.fromJSON (builtins.readFile ./2.2.json)
+  // {
+    generation = "2_2";
+    extraMeta.knownVulnerabilities = [
+      # Fixed in 3.* but 2.* hasn't been released since
+      "CVE-2020-17516"
+    ];
+  })
diff --git a/pkgs/servers/nosql/cassandra/3.0.json b/pkgs/servers/nosql/cassandra/3.0.json
new file mode 100644
index 0000000000000..665a5604d7730
--- /dev/null
+++ b/pkgs/servers/nosql/cassandra/3.0.json
@@ -0,0 +1,4 @@
+{
+  "version": "3.0.26",
+  "sha256": "09wim1w2yizcqpja62jk64fhaw3jgnrgrjlrm4kgmcc3g3bsmw6i"
+}
diff --git a/pkgs/servers/nosql/cassandra/3.0.nix b/pkgs/servers/nosql/cassandra/3.0.nix
index d9f5978f2649a..9c62901a48081 100644
--- a/pkgs/servers/nosql/cassandra/3.0.nix
+++ b/pkgs/servers/nosql/cassandra/3.0.nix
@@ -1,7 +1,7 @@
 { callPackage, ... } @ args:
-
-callPackage ./generic.nix (args // {
-  version = "3.0.26";
-  sha256 = "09wim1w2yizcqpja62jk64fhaw3jgnrgrjlrm4kgmcc3g3bsmw6i";
-  generation = "3_0";
-})
+callPackage ./generic.nix (
+  args
+  // builtins.fromJSON (builtins.readFile ./3.0.json)
+  // {
+    generation = "3_0";
+  })
diff --git a/pkgs/servers/nosql/cassandra/3.11.json b/pkgs/servers/nosql/cassandra/3.11.json
new file mode 100644
index 0000000000000..e47f78b7baf81
--- /dev/null
+++ b/pkgs/servers/nosql/cassandra/3.11.json
@@ -0,0 +1,4 @@
+{
+  "version": "3.11.12",
+  "sha256": "16j58l7r47qrfh8q7fm92y935ykgvnbj3qn984c42qda15x92hkw"
+}
diff --git a/pkgs/servers/nosql/cassandra/3.11.nix b/pkgs/servers/nosql/cassandra/3.11.nix
index fc839fa8c3560..ffb29743405bf 100644
--- a/pkgs/servers/nosql/cassandra/3.11.nix
+++ b/pkgs/servers/nosql/cassandra/3.11.nix
@@ -1,7 +1,7 @@
 { callPackage, ... } @ args:
-
-callPackage ./generic.nix (args // {
-  version = "3.11.12";
-  sha256 = "16j58l7r47qrfh8q7fm92y935ykgvnbj3qn984c42qda15x92hkw";
-  generation = "3_11";
-})
+callPackage ./generic.nix (
+  args
+  // builtins.fromJSON (builtins.readFile ./3.11.json)
+  // {
+    generation = "3_11";
+  })
diff --git a/pkgs/servers/nosql/cassandra/generic.nix b/pkgs/servers/nosql/cassandra/generic.nix
index ca11b838e3250..9d62279e74e45 100644
--- a/pkgs/servers/nosql/cassandra/generic.nix
+++ b/pkgs/servers/nosql/cassandra/generic.nix
@@ -16,6 +16,7 @@
 , version
 , sha256
 , extraMeta ? { }
+, callPackage
 , ...
 }:
 
@@ -37,7 +38,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     inherit sha256;
-    url = "mirror://apache/cassandra/${version}/apache-${pname}-${version}-bin.tar.gz";
+    url = "mirror://apache/cassandra/${version}/apache-cassandra-${version}-bin.tar.gz";
   };
 
   nativeBuildInputs = [ makeWrapper coreutils ];
@@ -113,6 +114,8 @@ stdenv.mkDerivation rec {
           assert test.testPackage.version == version;
           test;
       };
+
+    updateScript = callPackage ./update-script.nix { inherit generation; };
   };
 
   meta = with lib; {
diff --git a/pkgs/servers/nosql/cassandra/update-script.nix b/pkgs/servers/nosql/cassandra/update-script.nix
new file mode 100644
index 0000000000000..b407b704fdfd2
--- /dev/null
+++ b/pkgs/servers/nosql/cassandra/update-script.nix
@@ -0,0 +1,55 @@
+{ git
+, lib
+, runtimeShell
+, writeScript
+, generation
+, gnupg
+}:
+let
+  inherit (lib) makeBinPath;
+  filename = lib.strings.replaceStrings [ "_" ] [ "." ] generation + ".json";
+  regex = lib.strings.replaceStrings [ "_" ] [ "[.]" ] generation;
+in
+writeScript "update-cassandra_${generation}" ''
+  #!${runtimeShell}
+  set -eux -o pipefail
+  test -d pkgs -a -d nixos -a -d lib || {
+    echo >&2 "$0 expects to be run in a nixpkgs checkout"
+    exit 1
+  }
+  cd pkgs/servers/nosql/cassandra
+  PATH="${makeBinPath [git gnupg]}:$PATH"
+
+  tmp="$(mktemp -d)"
+  cleanup() {
+    rm -rf "$tmp"
+  }
+  trap cleanup EXIT
+
+  # get numeric-only versions, sort them latest first
+  git ls-remote --tags https://github.com/apache/cassandra \
+    | awk '{ if (match($0, /refs.tags.cassandra-([0-9.]*)$/, m)) print m[1] }' \
+    | sort -V \
+    | tac >$tmp/versions
+
+  version="$(grep -E '^${regex}' <$tmp/versions | head -n 1)"
+  path="cassandra/$version/apache-cassandra-$version-bin.tar.gz"
+  curl "https://downloads.apache.org/$path" >$tmp/src.tar.gz
+  curl "https://downloads.apache.org/$path.asc" >$tmp/src.tar.gz.asc
+
+  # See https://downloads.apache.org/cassandra/KEYS
+  # Make sure that any new key corresponds to someone on the project
+  for key in A4C465FEA0C552561A392A61E91335D77E3E87CB; do
+    gpg --trustdb-name "$tmp/trust.db" --batch --recv-keys "$key"
+    echo "$key:5:" | gpg --trustdb-name "$tmp/trust.db" --batch --import-ownertrust
+  done
+  gpg --trustdb-name "$tmp/trust.db" --batch --verify --trust-model direct $tmp/src.tar.gz.asc $tmp/src.tar.gz
+
+  hash="$(nix-prefetch-url "file://$tmp/src.tar.gz")"
+  cat >${filename} <<EOF
+  {
+    "version": "$version",
+    "sha256": "$hash"
+  }
+  EOF
+''
diff --git a/pkgs/servers/nosql/mongodb/4.4.nix b/pkgs/servers/nosql/mongodb/4.4.nix
new file mode 100644
index 0000000000000..7dd74e24fc489
--- /dev/null
+++ b/pkgs/servers/nosql/mongodb/4.4.nix
@@ -0,0 +1,14 @@
+{ stdenv, callPackage, lib, sasl, boost, Security, CoreFoundation, cctools }:
+
+let
+  buildMongoDB = callPackage ./mongodb.nix {
+    inherit sasl boost Security CoreFoundation cctools;
+  };
+in
+buildMongoDB {
+  version = "4.4.13";
+  sha256 = "sha256-ebg3R6P+tjRvizDzsl7mZzhTfqIaRJPfHBu0IfRvtS8=";
+  patches = [
+    ./forget-build-dependencies-4-4.patch
+  ] ++ lib.optionals stdenv.isDarwin [ ./asio-no-experimental-string-view-4-4.patch ];
+}
diff --git a/pkgs/servers/nosql/mongodb/5.0.nix b/pkgs/servers/nosql/mongodb/5.0.nix
new file mode 100644
index 0000000000000..6bb2294cfffa7
--- /dev/null
+++ b/pkgs/servers/nosql/mongodb/5.0.nix
@@ -0,0 +1,25 @@
+{ stdenv, callPackage, lib, sasl, boost, Security, CoreFoundation, cctools }:
+
+let
+  buildMongoDB = callPackage ./mongodb.nix {
+    inherit sasl boost Security CoreFoundation cctools;
+  };
+  variants = if stdenv.isLinux then
+    {
+      version = "5.0.7";
+      sha256 = "sha256-1PeDBZJNqJXHH/cSh2e+WR0PfS/b7XuJEzkkbrRT/gc=";
+    }
+  else
+    {
+      version = "5.0.3"; # at least darwin has to stay on 5.0.3 until the SDK used by nixpkgs is bumped to 10.13
+      sha256 = "1p9pq0dfd6lynvnz5p1c8dqp4filzrz86j840xwxwx82dm1zl6p0";
+    };
+in
+buildMongoDB {
+  version = variants.version;
+  sha256 = variants.sha256;
+  patches = [
+    ./forget-build-dependencies-4-4.patch
+    ./asio-no-experimental-string-view-4-4.patch
+  ];
+}
diff --git a/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch b/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch
new file mode 100644
index 0000000000000..b27145d57ecf9
--- /dev/null
+++ b/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch
@@ -0,0 +1,23 @@
+--- a/src/third_party/asio-master/asio/include/asio/detail/config.hpp
+--- b/src/third_party/asio-master/asio/include/asio/detail/config.hpp
+@@ -831,20 +831,8 @@
+ #     endif // (__cplusplus >= 201402)
+ #    endif // (_LIBCPP_VERSION < 7000)
+ #   else // defined(ASIO_HAS_CLANG_LIBCXX)
+-#    if (__cplusplus >= 201402)
+-#     if __has_include(<experimental/string_view>)
+-#      define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1
+-#     endif // __has_include(<experimental/string_view>)
+-#    endif // (__cplusplus >= 201402)
+ #   endif // // defined(ASIO_HAS_CLANG_LIBCXX)
+ #  endif // defined(__clang__)
+-#  if defined(__GNUC__)
+-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4)
+-#    if (__cplusplus >= 201402)
+-#     define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1
+-#    endif // (__cplusplus >= 201402)
+-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4)
+-#  endif // defined(__GNUC__)
+ # endif // !defined(ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW)
+ #endif // !defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW)
+ 
diff --git a/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch b/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch
new file mode 100644
index 0000000000000..1c3e0982a8c1a
--- /dev/null
+++ b/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch
@@ -0,0 +1,33 @@
+--- a/site_scons/mongo/generators.py
++++ b/site_scons/mongo/generators.py
+@@ -34,30 +34,12 @@ def default_buildinfo_environment_data():
+             False,
+         ),
+         (
+-            'ccflags',
+-            '$CCFLAGS',
+-            True,
+-            False,
+-        ),
+-        (
+             'cxx',
+             '$CXX_VERSION',
+             True,
+             False,
+         ),
+         (
+-            'cxxflags',
+-            '$CXXFLAGS',
+-            True,
+-            False,
+-        ),
+-        (
+-            'linkflags',
+-            '$LINKFLAGS',
+-            True,
+-            False,
+-        ),
+-        (
+             'target_arch',
+             '$TARGET_ARCH',
+             True,
diff --git a/pkgs/servers/nosql/mongodb/mongodb.nix b/pkgs/servers/nosql/mongodb/mongodb.nix
index 7c66d348ffb01..28795890069d1 100644
--- a/pkgs/servers/nosql/mongodb/mongodb.nix
+++ b/pkgs/servers/nosql/mongodb/mongodb.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, sconsPackages, boost, gperftools, pcre-cpp, snappy, zlib, libyamlcpp
-, sasl, openssl, libpcap, curl, Security, CoreFoundation, cctools }:
+, sasl, openssl, libpcap, python3, curl, Security, CoreFoundation, cctools, xz }:
 
 # Note:
 # The command line tools are written in Go as part of a different package (mongodb-tools)
@@ -8,12 +8,12 @@ with lib;
 
 { version, sha256, patches ? []
 , license ? lib.licenses.sspl
-}@args:
+}:
 
 let
   variants = if versionAtLeast version "4.2"
     then rec { python = scons.python.withPackages (ps: with ps; [ pyyaml cheetah3 psutil setuptools ]);
-            scons = sconsPackages.scons_latest;
+            scons = sconsPackages.scons_3_1_2.override { python = python3; }; # 4.2 < mongodb <= 5.0.x needs scons 3.x built with python3
             mozjsVersion = "60";
             mozjsReplace = "defined(HAVE___SINCOS)";
           }
@@ -44,7 +44,9 @@ in stdenv.mkDerivation rec {
     inherit sha256;
   };
 
-  nativeBuildInputs = [ variants.scons ];
+  nativeBuildInputs = [ variants.scons ]
+    ++ lib.optionals (versionAtLeast version "4.4") [ xz ];
+
   buildInputs = [
     boost
     curl
@@ -70,7 +72,6 @@ in stdenv.mkDerivation rec {
         --replace "env = Environment(" "env = Environment(ENV = os.environ,"
   '' + lib.optionalString stdenv.isDarwin ''
     substituteInPlace src/third_party/mozjs-${variants.mozjsVersion}/extract/js/src/jsmath.cpp --replace '${variants.mozjsReplace}' 0
-
     substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder
     substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder
     substituteInPlace src/third_party/s2/s2cap.cc --replace drem remainder
@@ -95,7 +96,8 @@ in stdenv.mkDerivation rec {
     "--use-sasl-client"
     "--disable-warnings-as-errors"
     "VARIANT_DIR=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld
-  ] ++ map (lib: "--use-system-${lib}") system-libraries;
+  ] ++ lib.optionals (versionAtLeast version "4.4") [ "--link-model=static" ]
+    ++ map (lib: "--use-system-${lib}") system-libraries;
 
   preBuild = ''
     sconsFlags+=" CC=$CC"
@@ -119,7 +121,9 @@ in stdenv.mkDerivation rec {
     runHook postInstallCheck
   '';
 
-  prefixKey = "--prefix=";
+  installTargets = if (versionAtLeast version "4.4") then "install-core" else "install";
+
+  prefixKey = if (versionAtLeast version "4.4") then "DESTDIR=" else "--prefix=";
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/servers/nosql/mongodb/v4_2.nix b/pkgs/servers/nosql/mongodb/v4_2.nix
index e638cddd232ad..3759cc1e6d585 100644
--- a/pkgs/servers/nosql/mongodb/v4_2.nix
+++ b/pkgs/servers/nosql/mongodb/v4_2.nix
@@ -9,8 +9,8 @@ let
     inherit cctools;
   };
 in buildMongoDB {
-  version = "4.2.17";
-  sha256 = "sha256-4ynvImVjN674VdD/bJ55Vy/IrOlMN8iZb2PAhxwbv1A=";
+  version = "4.2.19";
+  sha256 = "sha256-fngTHd+fSdHqiqQYOYS7o6P5eHybeZy3iNKkGzFmjTw=";
   patches =
     [ ./forget-build-dependencies-4-2.patch ]
     ++ lib.optionals stdenv.isDarwin [ ./asio-no-experimental-string-view-4-2.patch ];
diff --git a/pkgs/servers/ombi/default.nix b/pkgs/servers/ombi/default.nix
index a99349d8c0db6..e0eac1b8c04cf 100644
--- a/pkgs/servers/ombi/default.nix
+++ b/pkgs/servers/ombi/default.nix
@@ -26,7 +26,8 @@ in stdenv.mkDerivation rec {
     sha256 = hash;
   };
 
-  nativeBuildInputs = [ makeWrapper autoPatchelfHook ]
+  nativeBuildInputs = [ makeWrapper ]
+    ++ lib.optional stdenv.hostPlatform.isLinux autoPatchelfHook
     ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
 
   propagatedBuildInputs = [ stdenv.cc.cc zlib krb5 ];
@@ -37,7 +38,7 @@ in stdenv.mkDerivation rec {
 
     makeWrapper $out/share/${pname}-${version}/Ombi $out/bin/Ombi \
       --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ openssl icu ]} \
-      --run "cd $out/share/${pname}-${version}"
+      --chdir "$out/share/${pname}-${version}"
   '';
 
   passthru = {
diff --git a/pkgs/servers/openafs/1.8/module.nix b/pkgs/servers/openafs/1.8/module.nix
index 53834e5ccc1f4..c8be2eec27a84 100644
--- a/pkgs/servers/openafs/1.8/module.nix
+++ b/pkgs/servers/openafs/1.8/module.nix
@@ -11,6 +11,7 @@
 , perl
 , libtool_2
 , libkrb5
+, fetchpatch
 }:
 
 with (import ./srcs.nix {
@@ -21,6 +22,10 @@ let
   modDestDir = "$out/lib/modules/${kernel.modDirVersion}/extra/openafs";
   kernelBuildDir = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
 
+  fetchBase64Patch = args: (fetchpatch args).overrideAttrs (o: {
+    postFetch = "mv $out p; base64 -d p > $out; " + o.postFetch;
+  });
+
 in
 stdenv.mkDerivation {
   pname = "openafs";
@@ -32,6 +37,34 @@ stdenv.mkDerivation {
 
   buildInputs = [ libkrb5 ];
 
+  patches = [
+    # Add autoconf-archive to src/external
+    (fetchBase64Patch {
+      url = "https://gerrit.openafs.org/changes/14942/revisions/006616bd8e88b2d386a5ddc23973cf3e625cb80d/patch";
+      hash = "sha256-55sc2sKy5XkQHAv6ysVxi69+0xVsHnN2TS144UTeLHU=";
+    })
+    # Import of code from autoconf-archive
+    (fetchBase64Patch {
+      url = "https://gerrit.openafs.org/changes/14943/revisions/d3782b1d4e6fd81c5432e95112eb44305f07f272/patch";
+      hash = "sha256-ohkjSux+S3+6slh6uZIw5UJXlvhy9UUDpDlP0YFRwmw=";
+    })
+    # Use autoconf-archive m4 from src/external
+    (fetchBase64Patch {
+      url = "https://gerrit.openafs.org/changes/14944/revisions/ea2a0e128d71802f61b8da2e44de3c6325c5f328/patch";
+      hash = "sha256-PAUk/MXL5p8xwhn40/UGmo3UIhvl1PB2FwgqhmqsjJ4=";
+    })
+    # Linux-5.17: kernel func complete_and_exit renamed
+    (fetchBase64Patch {
+      url = "https://gerrit.openafs.org/changes/14945/revisions/a714e865efe41aa1112f6f9c8479112660dacd6f/patch";
+      hash = "sha256-zvyR/GOPJeAbG6ySRRMp44oT5tPujUwybyU0XR/5Xyc=";
+    })
+    # Linux-5.17: Kernel build uses -Wcast-function-type
+    (fetchBase64Patch {
+      url = "https://gerrit.openafs.org/changes/14946/revisions/449d1faf87e2841e80be38cf2b4a5cf5ff4df2d8/patch";
+      hash = "sha256-3bRTHYeMRIleLhob56m2Xt0dWzIMDo3QrytY0K1/q7c=";
+    })
+  ];
+
   hardeningDisable = [ "pic" ];
 
   configureFlags = [
@@ -70,6 +103,6 @@ stdenv.mkDerivation {
     license = licenses.ipl10;
     platforms = platforms.linux;
     maintainers = with maintainers; [ maggesi spacefrogg ];
-    broken = kernel.kernelOlder "3.18" || kernel.kernelAtLeast "5.17" || kernel.isHardened;
+    broken = kernel.isHardened;
   };
 }
diff --git a/pkgs/servers/openafs/1.9/module.nix b/pkgs/servers/openafs/1.9/module.nix
index 9799454223b25..ec1b8e1d67e5b 100644
--- a/pkgs/servers/openafs/1.9/module.nix
+++ b/pkgs/servers/openafs/1.9/module.nix
@@ -59,6 +59,6 @@ in stdenv.mkDerivation {
     license = licenses.ipl10;
     platforms = platforms.linux;
     maintainers = [ maintainers.maggesi maintainers.spacefrogg ];
-    broken = versionOlder kernel.version "3.18" || kernel.kernelAtLeast "5.15" || kernel.isHardened;
+    broken = kernel.kernelAtLeast "5.15" || kernel.isHardened;
   };
 }
diff --git a/pkgs/servers/owncast/default.nix b/pkgs/servers/owncast/default.nix
index 774f51bc0f630..313d17e8e8d42 100644
--- a/pkgs/servers/owncast/default.nix
+++ b/pkgs/servers/owncast/default.nix
@@ -15,7 +15,7 @@ buildGoModule rec {
 
   propagatedBuildInputs = [ ffmpeg ];
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   preInstall = ''
     mkdir -p $out
diff --git a/pkgs/servers/plex/raw.nix b/pkgs/servers/plex/raw.nix
index 861d66b3d04f3..dc65911a06652 100644
--- a/pkgs/servers/plex/raw.nix
+++ b/pkgs/servers/plex/raw.nix
@@ -12,16 +12,16 @@
 # server, and the FHS userenv and corresponding NixOS module should
 # automatically pick up the changes.
 stdenv.mkDerivation rec {
-  version = "1.25.8.5663-e071c3d62";
+  version = "1.26.0.5715-8cf78dab3";
   pname = "plexmediaserver";
 
   # Fetch the source
   src = if stdenv.hostPlatform.system == "aarch64-linux" then fetchurl {
     url = "https://downloads.plex.tv/plex-media-server-new/${version}/debian/plexmediaserver_${version}_arm64.deb";
-    hash = "sha256-w9k8phyiA/sK+zRlK8PAciebt5UJvmVFA+cfx4r78Gs=";
+    hash = "sha256-Ou5DlQPk+zAt/wE5Nry4nzLaR1Id6tQdwl73qawig4M=";
   } else fetchurl {
     url = "https://downloads.plex.tv/plex-media-server-new/${version}/debian/plexmediaserver_${version}_amd64.deb";
-    hash = "sha256-baOofe+7PZfLhwIXrB1ibKkkEJRVivgGHDN4phlg57Q=";
+    hash = "sha256-DQbRobiJwT7Xr4NzKS2iQOszOsd/bS/+kJ4p+QUVXfg=";
   };
 
   outputs = [ "out" "basedb" ];
diff --git a/pkgs/servers/plik/default.nix b/pkgs/servers/plik/default.nix
index 7c9cd7d00eb13..4572573d16f2e 100644
--- a/pkgs/servers/plik/default.nix
+++ b/pkgs/servers/plik/default.nix
@@ -21,6 +21,6 @@ in
     mv plik-*/webapp/dist $out/libexec/plikd/webapp
     cp ${programs.plikd-unwrapped}/bin/plikd $out/libexec/plikd/bin/plikd
     makeWrapper $out/libexec/plikd/bin/plikd $out/bin/plikd \
-      --run "cd $out/libexec/plikd/bin"
+      --chdir "$out/libexec/plikd/bin"
   '';
 }
diff --git a/pkgs/servers/postfixadmin/default.nix b/pkgs/servers/postfixadmin/default.nix
index e561b3931f736..cd60f3d9dadbd 100644
--- a/pkgs/servers/postfixadmin/default.nix
+++ b/pkgs/servers/postfixadmin/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "postfixadmin";
-  version = "3.3.10";
+  version = "3.3.11";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "0xck6df96r4z8k2j8x20b8h2qvmzyrfsya82s4i7hfhrxii92d3w";
+    sha256 = "sha256-jOO0AVcCmBxHLaWQOwvt7OFKAcAYPTVHTdQz1ZaYIqE=";
   };
 
   installPhase = ''
diff --git a/pkgs/servers/ps3netsrv/default.nix b/pkgs/servers/ps3netsrv/default.nix
index 12c4e2545a5a3..91f24a42927b5 100644
--- a/pkgs/servers/ps3netsrv/default.nix
+++ b/pkgs/servers/ps3netsrv/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     platforms = lib.platforms.unix;
     maintainers = with lib.maintainers; [ makefu ];
+    mainProgram = "ps3netsrv++";
   };
 }
diff --git a/pkgs/servers/psitransfer/default.nix b/pkgs/servers/psitransfer/default.nix
index d1d1e13d1b83d..791f656eeba92 100644
--- a/pkgs/servers/psitransfer/default.nix
+++ b/pkgs/servers/psitransfer/default.nix
@@ -7,11 +7,14 @@
 { stdenv
 , pkgs
 , lib
-, nodejs
+, nodejs-14_x
 , fetchzip
 }:
 
 let
+  # nodejs-16_x fails with ENOTCACHED
+  nodejs = nodejs-14_x;
+
   nodePackages = import ./node-composition.nix {
     inherit pkgs nodejs;
     inherit (stdenv.hostPlatform) system;
diff --git a/pkgs/servers/psitransfer/node-packages.nix b/pkgs/servers/psitransfer/node-packages.nix
index 7453a4ff1b8a7..126fe854b2813 100644
--- a/pkgs/servers/psitransfer/node-packages.nix
+++ b/pkgs/servers/psitransfer/node-packages.nix
@@ -4,40 +4,40 @@
 
 let
   sources = {
-    "@babel/helper-validator-identifier-7.15.7" = {
+    "@babel/helper-validator-identifier-7.16.7" = {
       name = "_at_babel_slash_helper-validator-identifier";
       packageName = "@babel/helper-validator-identifier";
-      version = "7.15.7";
+      version = "7.16.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz";
-        sha512 = "K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==";
+        url = "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz";
+        sha512 = "hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==";
       };
     };
-    "@babel/parser-7.16.4" = {
+    "@babel/parser-7.17.8" = {
       name = "_at_babel_slash_parser";
       packageName = "@babel/parser";
-      version = "7.16.4";
+      version = "7.17.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz";
-        sha512 = "6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==";
+        url = "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz";
+        sha512 = "BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==";
       };
     };
-    "@babel/types-7.16.0" = {
+    "@babel/types-7.17.0" = {
       name = "_at_babel_slash_types";
       packageName = "@babel/types";
-      version = "7.16.0";
+      version = "7.17.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz";
-        sha512 = "PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==";
+        url = "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz";
+        sha512 = "TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==";
       };
     };
-    "accepts-1.3.7" = {
+    "accepts-1.3.8" = {
       name = "accepts";
       packageName = "accepts";
-      version = "1.3.7";
+      version = "1.3.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz";
-        sha512 = "Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==";
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz";
+        sha512 = "PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==";
       };
     };
     "acorn-7.4.1" = {
@@ -103,13 +103,13 @@ let
         sha512 = "TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==";
       };
     };
-    "async-3.2.2" = {
+    "async-3.2.3" = {
       name = "async";
       packageName = "async";
-      version = "3.2.2";
+      version = "3.2.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/async/-/async-3.2.2.tgz";
-        sha512 = "H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==";
+        url = "https://registry.npmjs.org/async/-/async-3.2.3.tgz";
+        sha512 = "spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==";
       };
     };
     "axios-0.21.4" = {
@@ -166,13 +166,13 @@ let
         sha512 = "1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==";
       };
     };
-    "body-parser-1.19.0" = {
+    "body-parser-1.19.2" = {
       name = "body-parser";
       packageName = "body-parser";
-      version = "1.19.0";
+      version = "1.19.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz";
-        sha512 = "dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==";
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz";
+        sha512 = "SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==";
       };
     };
     "brace-expansion-1.1.11" = {
@@ -211,13 +211,13 @@ let
         sha1 = "d32815404d689699f85a4ea4fa8755dd13a96048";
       };
     };
-    "bytes-3.1.0" = {
+    "bytes-3.1.2" = {
       name = "bytes";
       packageName = "bytes";
-      version = "3.1.0";
+      version = "3.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz";
-        sha512 = "zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==";
+        url = "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz";
+        sha512 = "/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==";
       };
     };
     "call-bind-1.0.2" = {
@@ -292,13 +292,13 @@ let
         sha512 = "vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==";
       };
     };
-    "content-disposition-0.5.3" = {
+    "content-disposition-0.5.4" = {
       name = "content-disposition";
       packageName = "content-disposition";
-      version = "0.5.3";
+      version = "0.5.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz";
-        sha512 = "ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==";
+        url = "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz";
+        sha512 = "FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==";
       };
     };
     "content-type-1.0.4" = {
@@ -310,13 +310,13 @@ let
         sha512 = "hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==";
       };
     };
-    "cookie-0.4.0" = {
+    "cookie-0.4.2" = {
       name = "cookie";
       packageName = "cookie";
-      version = "0.4.0";
+      version = "0.4.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz";
-        sha512 = "+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==";
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz";
+        sha512 = "aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==";
       };
     };
     "cookie-signature-1.0.6" = {
@@ -391,13 +391,13 @@ let
         sha512 = "OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==";
       };
     };
-    "debug-4.3.3" = {
+    "debug-4.3.4" = {
       name = "debug";
       packageName = "debug";
-      version = "4.3.3";
+      version = "4.3.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz";
-        sha512 = "/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==";
+        url = "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz";
+        sha512 = "PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==";
       };
     };
     "depd-1.1.2" = {
@@ -481,13 +481,13 @@ let
         sha1 = "41ae2eeb65efa62268aebfea83ac7d79299b0887";
       };
     };
-    "express-4.17.1" = {
+    "express-4.17.3" = {
       name = "express";
       packageName = "express";
-      version = "4.17.1";
+      version = "4.17.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/express/-/express-4.17.1.tgz";
-        sha512 = "mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==";
+        url = "https://registry.npmjs.org/express/-/express-4.17.3.tgz";
+        sha512 = "yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==";
       };
     };
     "finalhandler-1.1.2" = {
@@ -499,13 +499,13 @@ let
         sha512 = "aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==";
       };
     };
-    "follow-redirects-1.14.5" = {
+    "follow-redirects-1.14.9" = {
       name = "follow-redirects";
       packageName = "follow-redirects";
-      version = "1.14.5";
+      version = "1.14.9";
       src = fetchurl {
-        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz";
-        sha512 = "wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==";
+        url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz";
+        sha512 = "MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==";
       };
     };
     "forwarded-0.2.0" = {
@@ -589,13 +589,13 @@ let
         sha512 = "lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==";
       };
     };
-    "graceful-fs-4.2.8" = {
+    "graceful-fs-4.2.9" = {
       name = "graceful-fs";
       packageName = "graceful-fs";
-      version = "4.2.8";
+      version = "4.2.9";
       src = fetchurl {
-        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz";
-        sha512 = "qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==";
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz";
+        sha512 = "NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==";
       };
     };
     "has-1.0.3" = {
@@ -607,13 +607,13 @@ let
         sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==";
       };
     };
-    "has-symbols-1.0.2" = {
+    "has-symbols-1.0.3" = {
       name = "has-symbols";
       packageName = "has-symbols";
-      version = "1.0.2";
+      version = "1.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz";
-        sha512 = "chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==";
+        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz";
+        sha512 = "l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==";
       };
     };
     "has-tostringtag-1.0.0" = {
@@ -625,24 +625,6 @@ let
         sha512 = "kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==";
       };
     };
-    "http-errors-1.7.2" = {
-      name = "http-errors";
-      packageName = "http-errors";
-      version = "1.7.2";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz";
-        sha512 = "uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==";
-      };
-    };
-    "http-errors-1.7.3" = {
-      name = "http-errors";
-      packageName = "http-errors";
-      version = "1.7.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz";
-        sha512 = "ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==";
-      };
-    };
     "http-errors-1.8.1" = {
       name = "http-errors";
       packageName = "http-errors";
@@ -679,15 +661,6 @@ let
         sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9";
       };
     };
-    "inherits-2.0.3" = {
-      name = "inherits";
-      packageName = "inherits";
-      version = "2.0.3";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
-        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
-      };
-    };
     "inherits-2.0.4" = {
       name = "inherits";
       packageName = "inherits";
@@ -706,13 +679,13 @@ let
         sha512 = "0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==";
       };
     };
-    "is-core-module-2.8.0" = {
+    "is-core-module-2.8.1" = {
       name = "is-core-module";
       packageName = "is-core-module";
-      version = "2.8.0";
+      version = "2.8.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz";
-        sha512 = "vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==";
+        url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz";
+        sha512 = "SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==";
       };
     };
     "is-expression-4.0.0" = {
@@ -886,31 +859,31 @@ let
         sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
       };
     };
-    "mime-db-1.51.0" = {
+    "mime-db-1.52.0" = {
       name = "mime-db";
       packageName = "mime-db";
-      version = "1.51.0";
+      version = "1.52.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz";
-        sha512 = "5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==";
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz";
+        sha512 = "sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==";
       };
     };
-    "mime-types-2.1.34" = {
+    "mime-types-2.1.35" = {
       name = "mime-types";
       packageName = "mime-types";
-      version = "2.1.34";
+      version = "2.1.35";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz";
-        sha512 = "6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==";
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz";
+        sha512 = "ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==";
       };
     };
-    "minimatch-3.0.4" = {
+    "minimatch-3.1.2" = {
       name = "minimatch";
       packageName = "minimatch";
-      version = "3.0.4";
+      version = "3.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz";
-        sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==";
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz";
+        sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==";
       };
     };
     "morgan-1.10.0" = {
@@ -931,22 +904,22 @@ let
         sha1 = "5608aeadfc00be6c2901df5f9861788de0d597c8";
       };
     };
-    "ms-2.1.1" = {
+    "ms-2.1.2" = {
       name = "ms";
       packageName = "ms";
-      version = "2.1.1";
+      version = "2.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz";
-        sha512 = "tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==";
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
+        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
       };
     };
-    "ms-2.1.2" = {
+    "ms-2.1.3" = {
       name = "ms";
       packageName = "ms";
-      version = "2.1.2";
+      version = "2.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
-        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
+        url = "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz";
+        sha512 = "6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==";
       };
     };
     "mz-2.7.0" = {
@@ -958,13 +931,13 @@ let
         sha512 = "z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==";
       };
     };
-    "negotiator-0.6.2" = {
+    "negotiator-0.6.3" = {
       name = "negotiator";
       packageName = "negotiator";
-      version = "0.6.2";
+      version = "0.6.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz";
-        sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz";
+        sha512 = "+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==";
       };
     };
     "normalize-path-3.0.0" = {
@@ -1183,13 +1156,13 @@ let
         sha512 = "yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==";
       };
     };
-    "qs-6.7.0" = {
+    "qs-6.9.7" = {
       name = "qs";
       packageName = "qs";
-      version = "6.7.0";
+      version = "6.9.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz";
-        sha512 = "VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==";
+        url = "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz";
+        sha512 = "IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==";
       };
     };
     "range-parser-1.2.1" = {
@@ -1201,13 +1174,13 @@ let
         sha512 = "Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==";
       };
     };
-    "raw-body-2.4.0" = {
+    "raw-body-2.4.3" = {
       name = "raw-body";
       packageName = "raw-body";
-      version = "2.4.0";
+      version = "2.4.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz";
-        sha512 = "4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==";
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz";
+        sha512 = "UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==";
       };
     };
     "readable-stream-2.3.7" = {
@@ -1228,13 +1201,13 @@ let
         sha512 = "BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==";
       };
     };
-    "resolve-1.20.0" = {
+    "resolve-1.22.0" = {
       name = "resolve";
       packageName = "resolve";
-      version = "1.20.0";
+      version = "1.22.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz";
-        sha512 = "wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==";
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz";
+        sha512 = "Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==";
       };
     };
     "safe-buffer-5.1.2" = {
@@ -1246,6 +1219,15 @@ let
         sha512 = "Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==";
       };
     };
+    "safe-buffer-5.2.1" = {
+      name = "safe-buffer";
+      packageName = "safe-buffer";
+      version = "5.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
+        sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
+      };
+    };
     "safer-buffer-2.1.2" = {
       name = "safer-buffer";
       packageName = "safer-buffer";
@@ -1255,31 +1237,22 @@ let
         sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
       };
     };
-    "send-0.17.1" = {
+    "send-0.17.2" = {
       name = "send";
       packageName = "send";
-      version = "0.17.1";
+      version = "0.17.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/send/-/send-0.17.1.tgz";
-        sha512 = "BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==";
+        url = "https://registry.npmjs.org/send/-/send-0.17.2.tgz";
+        sha512 = "UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==";
       };
     };
-    "serve-static-1.14.1" = {
+    "serve-static-1.14.2" = {
       name = "serve-static";
       packageName = "serve-static";
-      version = "1.14.1";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz";
-        sha512 = "JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==";
-      };
-    };
-    "setprototypeof-1.1.1" = {
-      name = "setprototypeof";
-      packageName = "setprototypeof";
-      version = "1.1.1";
+      version = "1.14.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz";
-        sha512 = "JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==";
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz";
+        sha512 = "+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==";
       };
     };
     "setprototypeof-1.2.0" = {
@@ -1309,6 +1282,15 @@ let
         sha512 = "n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==";
       };
     };
+    "supports-preserve-symlinks-flag-1.0.0" = {
+      name = "supports-preserve-symlinks-flag";
+      packageName = "supports-preserve-symlinks-flag";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz";
+        sha512 = "ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==";
+      };
+    };
     "tar-stream-2.2.0" = {
       name = "tar-stream";
       packageName = "tar-stream";
@@ -1354,15 +1336,6 @@ let
         sha1 = "82445234ff5edc4c00ad4211aa59f96f12354f84";
       };
     };
-    "toidentifier-1.0.0" = {
-      name = "toidentifier";
-      packageName = "toidentifier";
-      version = "1.0.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz";
-        sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
-      };
-    };
     "toidentifier-1.0.1" = {
       name = "toidentifier";
       packageName = "toidentifier";
@@ -1484,10 +1457,10 @@ in
       sha256 = "2421deb23c075381476ff3bd3216ac26610a2b403b02e82d47ac214cb4f8dbe2";
     };
     dependencies = [
-      sources."@babel/helper-validator-identifier-7.15.7"
-      sources."@babel/parser-7.16.4"
-      sources."@babel/types-7.16.0"
-      sources."accepts-1.3.7"
+      sources."@babel/helper-validator-identifier-7.16.7"
+      sources."@babel/parser-7.17.8"
+      sources."@babel/types-7.17.0"
+      sources."accepts-1.3.8"
       sources."acorn-7.4.1"
       sources."any-promise-1.3.0"
       sources."archiver-4.0.2"
@@ -1499,19 +1472,17 @@ in
       sources."array-flatten-1.1.1"
       sources."asap-2.0.6"
       sources."assert-never-1.2.1"
-      sources."async-3.2.2"
+      sources."async-3.2.3"
       sources."axios-0.21.4"
       sources."babel-walk-3.0.0-canary-5"
       sources."balanced-match-1.0.2"
       sources."base64-js-1.5.1"
       sources."basic-auth-2.0.1"
       sources."bl-4.1.0"
-      (sources."body-parser-1.19.0" // {
+      (sources."body-parser-1.19.2" // {
         dependencies = [
-          sources."bytes-3.1.0"
+          sources."bytes-3.1.2"
           sources."debug-2.6.9"
-          sources."http-errors-1.7.2"
-          sources."inherits-2.0.3"
         ];
       })
       sources."brace-expansion-1.1.11"
@@ -1534,16 +1505,20 @@ in
       })
       sources."concat-map-0.0.1"
       sources."constantinople-4.0.1"
-      sources."content-disposition-0.5.3"
+      (sources."content-disposition-0.5.4" // {
+        dependencies = [
+          sources."safe-buffer-5.2.1"
+        ];
+      })
       sources."content-type-1.0.4"
-      sources."cookie-0.4.0"
+      sources."cookie-0.4.2"
       sources."cookie-signature-1.0.6"
       sources."core-util-is-1.0.3"
       sources."cors-2.8.5"
       sources."crc-3.8.0"
       sources."crc32-stream-3.0.1"
       sources."crypto-js-4.1.1"
-      (sources."debug-4.3.3" // {
+      (sources."debug-4.3.4" // {
         dependencies = [
           sources."ms-2.1.2"
         ];
@@ -1556,9 +1531,10 @@ in
       sources."end-of-stream-1.4.4"
       sources."escape-html-1.0.3"
       sources."etag-1.8.1"
-      (sources."express-4.17.1" // {
+      (sources."express-4.17.3" // {
         dependencies = [
           sources."debug-2.6.9"
+          sources."safe-buffer-5.2.1"
         ];
       })
       (sources."finalhandler-1.1.2" // {
@@ -1566,7 +1542,7 @@ in
           sources."debug-2.6.9"
         ];
       })
-      sources."follow-redirects-1.14.5"
+      sources."follow-redirects-1.14.9"
       sources."forwarded-0.2.0"
       sources."fresh-0.5.2"
       sources."fs-constants-1.0.0"
@@ -1576,22 +1552,17 @@ in
       sources."function-bind-1.1.1"
       sources."get-intrinsic-1.1.1"
       sources."glob-7.2.0"
-      sources."graceful-fs-4.2.8"
+      sources."graceful-fs-4.2.9"
       sources."has-1.0.3"
-      sources."has-symbols-1.0.2"
+      sources."has-symbols-1.0.3"
       sources."has-tostringtag-1.0.0"
-      (sources."http-errors-1.8.1" // {
-        dependencies = [
-          sources."setprototypeof-1.2.0"
-          sources."toidentifier-1.0.1"
-        ];
-      })
+      sources."http-errors-1.8.1"
       sources."iconv-lite-0.4.24"
       sources."ieee754-1.2.1"
       sources."inflight-1.0.6"
       sources."inherits-2.0.4"
       sources."ipaddr.js-1.9.1"
-      sources."is-core-module-2.8.0"
+      sources."is-core-module-2.8.1"
       sources."is-expression-4.0.0"
       sources."is-promise-2.2.2"
       sources."is-regex-1.1.4"
@@ -1619,9 +1590,9 @@ in
       })
       sources."methods-1.1.2"
       sources."mime-1.6.0"
-      sources."mime-db-1.51.0"
-      sources."mime-types-2.1.34"
-      sources."minimatch-3.0.4"
+      sources."mime-db-1.52.0"
+      sources."mime-types-2.1.35"
+      sources."minimatch-3.1.2"
       (sources."morgan-1.10.0" // {
         dependencies = [
           sources."debug-2.6.9"
@@ -1630,7 +1601,7 @@ in
       })
       sources."ms-2.0.0"
       sources."mz-2.7.0"
-      sources."negotiator-0.6.2"
+      sources."negotiator-0.6.3"
       sources."normalize-path-3.0.0"
       sources."object-assign-4.1.1"
       sources."on-finished-2.3.0"
@@ -1655,40 +1626,38 @@ in
       sources."pug-runtime-3.0.1"
       sources."pug-strip-comments-2.0.0"
       sources."pug-walk-2.0.0"
-      sources."qs-6.7.0"
+      sources."qs-6.9.7"
       sources."range-parser-1.2.1"
-      (sources."raw-body-2.4.0" // {
+      (sources."raw-body-2.4.3" // {
         dependencies = [
-          sources."bytes-3.1.0"
-          sources."http-errors-1.7.2"
-          sources."inherits-2.0.3"
+          sources."bytes-3.1.2"
         ];
       })
       sources."readable-stream-3.6.0"
-      sources."resolve-1.20.0"
+      sources."resolve-1.22.0"
       sources."safe-buffer-5.1.2"
       sources."safer-buffer-2.1.2"
-      (sources."send-0.17.1" // {
+      (sources."send-0.17.2" // {
         dependencies = [
           (sources."debug-2.6.9" // {
             dependencies = [
               sources."ms-2.0.0"
             ];
           })
-          sources."http-errors-1.7.3"
-          sources."ms-2.1.1"
+          sources."ms-2.1.3"
         ];
       })
-      sources."serve-static-1.14.1"
-      sources."setprototypeof-1.1.1"
+      sources."serve-static-1.14.2"
+      sources."setprototypeof-1.2.0"
       sources."statuses-1.5.0"
       sources."string_decoder-1.1.1"
+      sources."supports-preserve-symlinks-flag-1.0.0"
       sources."tar-stream-2.2.0"
       sources."thenify-3.3.1"
       sources."thenify-all-1.6.0"
       sources."to-fast-properties-2.0.0"
       sources."to-object-reducer-1.0.1"
-      sources."toidentifier-1.0.0"
+      sources."toidentifier-1.0.1"
       sources."token-stream-1.0.0"
       sources."type-is-1.6.18"
       sources."unpipe-1.0.0"
diff --git a/pkgs/servers/pulseaudio/add-option-for-installation-sysconfdir.patch b/pkgs/servers/pulseaudio/add-option-for-installation-sysconfdir.patch
index dd4de7321e958..bb56eb13e88a1 100644
--- a/pkgs/servers/pulseaudio/add-option-for-installation-sysconfdir.patch
+++ b/pkgs/servers/pulseaudio/add-option-for-installation-sysconfdir.patch
@@ -1,9 +1,6 @@
-
-diff --git a/meson.build b/meson.build
-index 86af7243e..e2d48ab94 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -65,6 +65,11 @@ datadir = join_paths(prefix, get_option('datadir'))
+@@ -67,6 +67,11 @@ datadir = join_paths(prefix, get_option('datadir'))
  localedir = join_paths(prefix, get_option('localedir'))
  localstatedir = join_paths(prefix, get_option('localstatedir'))
  sysconfdir = join_paths(prefix, get_option('sysconfdir'))
@@ -14,8 +11,8 @@ index 86af7243e..e2d48ab94 100644
 +endif
  privlibdir = join_paths(libdir, 'pulseaudio')
  
- alsadatadir = get_option('alsadatadir')
-@@ -75,6 +80,11 @@ endif
+ if host_machine.system() == 'windows'
+@@ -82,6 +87,11 @@ endif
  pkgconfigdir = join_paths(libdir, 'pkgconfig')
  pulselibexecdir = join_paths(libexecdir, 'pulse')
  pulsesysconfdir = join_paths(sysconfdir, 'pulse')
@@ -27,11 +24,9 @@ index 86af7243e..e2d48ab94 100644
  
  modlibexecdir = get_option('modlibexecdir')
  if modlibexecdir == ''
-diff --git a/meson_options.txt b/meson_options.txt
-index 824f24e08..59a2b57ab 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
-@@ -66,6 +66,9 @@ option('bashcompletiondir',
+@@ -72,6 +72,9 @@ option('bashcompletiondir',
  option('zshcompletiondir',
         type : 'string',
         description : 'Directory for zsh completion scripts ["no" disables]')
@@ -41,11 +36,18 @@ index 824f24e08..59a2b57ab 100644
  
  # Optional features
  
-diff --git a/src/daemon/meson.build b/src/daemon/meson.build
-index 9c9f807e7..425cecb46 100644
 --- a/src/daemon/meson.build
 +++ b/src/daemon/meson.build
-@@ -53,7 +53,7 @@ if x11_dep.found()
+@@ -52,7 +52,7 @@ if x11_dep.found()
+     output : '00-pulseaudio-x11',
+     configuration : conf,
+     install : true,
+-    install_dir : join_paths(sysconfdir, 'xdg', 'Xwayland-session.d'),
++    install_dir : join_paths(sysconfdir_install, 'xdg', 'Xwayland-session.d'),
+   )
+ 
+   desktop_file = i18n.merge_file(
+@@ -61,7 +61,7 @@ if x11_dep.found()
      po_dir : po_dir,
      type : 'desktop',
      install : true,
@@ -54,7 +56,7 @@ index 9c9f807e7..425cecb46 100644
    )
  
    desktop_utils = find_program('desktop-file-validate', required: false)
-@@ -85,7 +85,7 @@ custom_target('daemon.conf',
+@@ -93,7 +93,7 @@ custom_target('daemon.conf',
    command : [m4, '@INPUT@'],
    build_by_default : true,
    install : true,
@@ -63,7 +65,7 @@ index 9c9f807e7..425cecb46 100644
  )
  
  default_conf = configuration_data()
-@@ -111,7 +111,7 @@ custom_target('default.pa',
+@@ -117,7 +117,7 @@ custom_target('default.pa',
    command : [m4, '@INPUT@'],
    build_by_default : true,
    install : true,
@@ -72,7 +74,7 @@ index 9c9f807e7..425cecb46 100644
  )
  
  system_conf = configuration_data()
-@@ -132,12 +132,12 @@ custom_target('system.pa',
+@@ -136,12 +136,12 @@ custom_target('system.pa',
    command : [m4, '@INPUT@'],
    build_by_default : true,
    install : true,
@@ -87,11 +89,9 @@ index 9c9f807e7..425cecb46 100644
    )
  endif
  
-diff --git a/src/pulse/meson.build b/src/pulse/meson.build
-index aaebff53e..05a29a0d0 100644
 --- a/src/pulse/meson.build
 +++ b/src/pulse/meson.build
-@@ -130,5 +130,5 @@ client_conf_file = configure_file(
+@@ -134,5 +134,5 @@ client_conf_file = configure_file(
    input : 'client.conf.in',
    output : 'client.conf',
    configuration : client_conf,
diff --git a/pkgs/servers/pulseaudio/correct-ldflags.patch b/pkgs/servers/pulseaudio/correct-ldflags.patch
deleted file mode 100644
index 174cb8b4f7469..0000000000000
--- a/pkgs/servers/pulseaudio/correct-ldflags.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/meson.build b/meson.build
-index 45df103f0..d57d13172 100644
---- a/meson.build
-+++ b/meson.build
-@@ -342,7 +342,7 @@ cdata.set('MESON_BUILD', 1)
- # On ELF systems we don't want the libraries to be unloaded since we don't clean them up properly,
- # so we request the nodelete flag to be enabled.
- # On other systems, we don't really know how to do that, but it's welcome if somebody can tell.
--nodelete_link_args = ['-Wl,-z,nodelete']
-+nodelete_link_args = cc.get_supported_link_arguments(['-Wl,-z,nodelete'])
- 
- # Code coverage
- 
diff --git a/pkgs/servers/pulseaudio/default.nix b/pkgs/servers/pulseaudio/default.nix
index 664d9ef9f753b..b0ccd5f76354d 100644
--- a/pkgs/servers/pulseaudio/default.nix
+++ b/pkgs/servers/pulseaudio/default.nix
@@ -1,9 +1,10 @@
-{ lib, stdenv, fetchurl, pkg-config, autoreconfHook
+{ lib, stdenv, fetchurl, fetchpatch, pkg-config
 , libsndfile, libtool, makeWrapper, perlPackages
 , xorg, libcap, alsa-lib, glib, dconf
 , avahi, libjack2, libasyncns, lirc, dbus
 , sbc, bluez5, udev, openssl, fftwFloat
 , soxr, speexdsp, systemd, webrtc-audio-processing
+, check, meson, ninja, m4
 
 , x11Support ? false
 
@@ -31,23 +32,29 @@
 
 stdenv.mkDerivation rec {
   pname = "${if libOnly then "lib" else ""}pulseaudio";
-  version = "14.2";
+  version = "15.0";
 
   src = fetchurl {
     url = "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-${version}.tar.xz";
-    sha256 = "sha256-ddP3dCwa5EkEmkyIkA5FS4s1DsqoxUTzSIolYqn/ZvE=";
+    sha256 = "pAuIejupjMJpdusRvbZhOYjxRbGQJNG2VVxqA8nLoaA=";
   };
 
+  patches = [
+    # Install sysconfdir files inside of the nix store,
+    # but use a conventional runtime sysconfdir outside the store
+    ./add-option-for-installation-sysconfdir.patch
+  ];
+
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkg-config autoreconfHook makeWrapper perlPackages.perl perlPackages.XMLParser ]
+  nativeBuildInputs = [ pkg-config meson ninja makeWrapper perlPackages.perl perlPackages.XMLParser m4 ]
     ++ lib.optionals stdenv.isLinux [ glib ];
 
   propagatedBuildInputs =
     lib.optionals stdenv.isLinux [ libcap ];
 
   buildInputs =
-    [ libtool libsndfile soxr speexdsp fftwFloat ]
+    [ libtool libsndfile soxr speexdsp fftwFloat check ]
     ++ lib.optionals stdenv.isLinux [ glib dbus ]
     ++ lib.optionals stdenv.isDarwin [ AudioUnit Cocoa CoreServices ]
     ++ lib.optionals (!libOnly) (
@@ -62,53 +69,45 @@ stdenv.mkDerivation rec {
       ++ lib.optional zeroconfSupport  avahi
   );
 
-  prePatch = ''
-    substituteInPlace bootstrap.sh \
-      --replace pkg-config $PKG_CONFIG
-  '';
-
-  autoreconfPhase = ''
-    # Performs an autoreconf
-    patchShebangs bootstrap.sh
-    NOCONFIGURE=1 ./bootstrap.sh
-
-    # Move the udev rules under $(prefix).
-    sed -i "src/Makefile.in" \
-        -e "s|udevrulesdir[[:blank:]]*=.*$|udevrulesdir = $out/lib/udev/rules.d|g"
-
-    # don't install proximity-helper as root and setuid
-    sed -i "src/Makefile.in" \
-        -e "s|chown root|true |" \
-        -e "s|chmod r+s |true |"
+  mesonFlags = [
+    "-Dalsa=${if !libOnly then "enabled" else "disabled"}"
+    "-Dasyncns=${if !libOnly then "enabled" else "disabled"}"
+    "-Davahi=${if zeroconfSupport then "enabled" else "disabled"}"
+    "-Dbluez5=${if !libOnly then "enabled" else "disabled"}"
+    "-Dbluez5-gstreamer=disabled"
+    "-Ddatabase=simple"
+    "-Ddoxygen=false"
+    "-Delogind=disabled"
+    # gsettings does not support cross-compilation
+    "-Dgsettings=${if stdenv.buildPlatform == stdenv.hostPlatform then "enabled" else "disabled"}"
+    "-Dgstreamer=disabled"
+    "-Dgtk=disabled"
+    "-Djack=${if jackaudioSupport && !libOnly then "enabled" else "disabled"}"
+    "-Dlirc=${if remoteControlSupport then "enabled" else "disabled"}"
+    "-Dopenssl=${if airtunesSupport then "enabled" else "disabled"}"
+    "-Dorc=disabled"
+    "-Dsystemd=${if useSystemd && !libOnly then "enabled" else "disabled"}"
+    "-Dtcpwrap=disabled"
+    "-Dudev=${if !libOnly then "enabled" else "disabled"}"
+    "-Dvalgrind=disabled"
+    "-Dwebrtc-aec=${if !libOnly then "enabled" else "disabled"}"
+    "-Dx11=${if x11Support then "enabled" else "disabled"}"
+
+    "-Dlocalstatedir=/var"
+    "-Dsysconfdir=/etc"
+    "-Dsysconfdir_install=${placeholder "out"}/etc"
+    "-Dudevrulesdir=${placeholder "out"}/lib/udev/rules.d"
+  ]
+    ++ lib.optional (stdenv.isLinux && useSystemd) "-Dsystemduserunitdir=${placeholder "out"}/lib/systemd/user"
+    ;
+
+  doCheck = true;
+  preCheck = ''
+    export HOME=$(mktemp -d)
   '';
 
-  configureFlags =
-    [ "--disable-solaris"
-      "--disable-jack"
-      "--disable-oss-output"
-    ] ++ lib.optional (!ossWrapper) "--disable-oss-wrapper" ++
-    [ "--localstatedir=/var"
-      "--sysconfdir=/etc"
-      "--with-access-group=audio"
-      "--with-bash-completion-dir=${placeholder "out"}/share/bash-completions/completions"
-    ]
-    ++ lib.optional (jackaudioSupport && !libOnly) "--enable-jack"
-    ++ lib.optionals stdenv.isDarwin [
-      "--disable-neon-opt"
-    ]
-    ++ lib.optional (stdenv.isLinux && useSystemd) "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
-    ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "--disable-gsettings";
-
-  enableParallelBuilding = true;
-
-  installFlags =
-    [ "sysconfdir=${placeholder "out"}/etc"
-      "pulseconfdir=${placeholder "out"}/etc/pulse"
-    ];
-
   postInstall = lib.optionalString libOnly ''
     rm -rf $out/{bin,share,etc,lib/{pulse-*,systemd}}
-    sed 's|-lltdl|-L${libtool.lib}/lib -lltdl|' -i $out/lib/pulseaudio/libpulsecore-${version}.la
   ''
     + ''
     moveToOutput lib/cmake "$dev"
diff --git a/pkgs/servers/pulseaudio/pali.nix b/pkgs/servers/pulseaudio/pali.nix
deleted file mode 100644
index b07c2fd4ac70a..0000000000000
--- a/pkgs/servers/pulseaudio/pali.nix
+++ /dev/null
@@ -1,219 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, fetchFromGitLab
-, meson
-, ninja
-, pkg-config
-, libsndfile
-, libtool
-, makeWrapper
-, perlPackages
-, xorg
-, libcap
-, alsa-lib
-, glib
-, dconf
-, avahi
-, libjack2
-, libasyncns
-, lirc
-, dbus
-, sbc
-, bluez5
-, udev
-, openssl
-, fftwFloat
-, soxr
-, speexdsp
-, systemd
-, webrtc-audio-processing
-, gtk3
-, tdb
-, orc
-, check
-, gettext
-, gst_all_1
-, libopenaptx
-
-, x11Support ? true
-
-, # Whether to support the JACK sound system as a backend.
-  jackaudioSupport ? false
-
-, airtunesSupport ? true
-
-, bluetoothSupport ? true
-
-, remoteControlSupport ? true
-
-, zeroconfSupport ? true
-
-, # Whether to build only the library.
-  libOnly ? false
-
-# Building from Git source
-, fromGit ? true
-
-, CoreServices
-, AudioUnit
-, Cocoa
-}:
-
-stdenv.mkDerivation rec {
-  pname = "${if libOnly then "lib" else ""}pulseaudio-hsphfpd";
-  version = "13.99.2";
-
-  outputs = [ "out" "dev" ];
-
-  # https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/288
-  src = fetchFromGitLab {
-    domain = "gitlab.freedesktop.org";
-    owner = "pali";
-    repo = "pulseaudio";
-    rev = "5336b39e7e03cf50386e719e287a712b59730eb8";
-    sha256 = "0vc0i5rzkns3xw6y2q0c94p2qdi5k3mgjvhicgq1b0py2qxmji16";
-  };
-
-  patches = [
-    ./add-option-for-installation-sysconfdir.patch
-    ./correct-ldflags.patch
-  ];
-
-  # Says it should be v${version} but it's parsing logic is broken
-  preConfigure = lib.optionalString fromGit ''
-    sed -i "s@version : run_command.*@version: '${version}',@" meson.build
-  '';
-
-  nativeBuildInputs = [
-    gettext
-    makeWrapper
-    meson
-    ninja
-    pkg-config
-    perlPackages.perl
-    perlPackages.XMLParser
-  ];
-
-  checkInputs = [
-    check
-  ];
-
-  propagatedBuildInputs = lib.optional stdenv.isLinux libcap;
-
-  buildInputs = [
-    libopenaptx
-    fftwFloat
-    libsndfile
-    libtool
-    orc
-    soxr
-    speexdsp
-    tdb
-    sbc
-    gst_all_1.gst-plugins-base
-  ] ++ lib.optionals bluetoothSupport [
-    bluez5
-  ] ++ lib.optionals stdenv.isLinux [
-    dbus
-    glib
-    gtk3
-    libasyncns
-  ] ++ lib.optionals stdenv.isDarwin [
-    AudioUnit
-    Cocoa
-    CoreServices
-  ] ++ lib.optionals (!libOnly) (
-    lib.optionals x11Support [
-      xorg.libXi
-      xorg.libXtst
-      xorg.xlibsWrapper
-    ] ++ lib.optionals stdenv.isLinux [
-      alsa-lib
-      systemd
-      udev
-    ] ++ lib.optional airtunesSupport openssl
-    ++ lib.optional jackaudioSupport libjack2
-    ++ lib.optional remoteControlSupport lirc
-    ++ lib.optional zeroconfSupport avahi
-    ++ [ webrtc-audio-processing ]
-  );
-
-  mesonFlags = [
-    "--localstatedir=/var"
-    "--sysconfdir=/etc"
-    "-Daccess_group=audio"
-    "-Dbashcompletiondir=${placeholder "out"}/share/bash-completions/completions"
-    "-Dman=false" # TODO: needs xmltoman; also doesn't check for this
-    "-Dsysconfdir_install=${placeholder "out"}/etc"
-    "-Dsystemduserunitdir=${placeholder "out"}/lib/systemd/user"
-    "-Dudevrulesdir=${placeholder "out"}/lib/udev/rules.d"
-    "-Dzshcompletiondir=${placeholder "out"}/share/zsh/site-functions"
-  ] ++ lib.optionals (!stdenv.isLinux) [
-    "-Dasyncns=disabled"
-    "-Ddbus=disabled"
-    "-Dglib=disabled"
-    "-Dgsettings=disabled"
-    "-Dgtk=disabled"
-  ] ++ lib.optionals (!stdenv.isLinux || libOnly) [
-    "-Dalsa=disabled"
-    "-Dsystemd=disabled"
-    "-Dudev=disabled"
-  ] ++ lib.optional libOnly "-Dwebrtc-aec=disabled"
-    ++ lib.optional (!x11Support) "-Dx11=disabled"
-    ++ lib.optional (!bluetoothSupport) "-Dbluez5=false"
-    ++ lib.optional (!airtunesSupport) "-Dopenssl=disabled"
-    ++ lib.optional (!jackaudioSupport) "-Djack=disabled"
-    ++ lib.optional (!remoteControlSupport) "-Dlirc=disabled"
-    ++ lib.optional (!zeroconfSupport) "-Davahi=disabled"
-    ++ lib.optional (!doCheck) "-Dtests=false";
-
-  # To create ~/.config/pulse
-  preCheck = ''
-    export HOME=$(mktemp -d)
-  '';
-
-  doCheck = true;
-
-  # not sure what the best practices are here -- can't seem to find a way
-  # for the compiler to bring in stdlib and stdio (etc.) properly
-  # the alternative is to copy the files from /usr/include to src, but there are
-  # probably a large number of files that would need to be copied (I stopped
-  # after the seventh)
-  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I/usr/include";
-
-  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework CoreServices -framework Cocoa -framework AudioUnit";
-
-  postInstall = ''
-    moveToOutput lib/cmake "$dev"
-    rm -f $out/bin/qpaeq # this is packaged by the "qpaeq" package now, because of missing deps
-  '' + lib.optionalString libOnly ''
-    rm -rf $out/{bin,share,etc,lib/{pulse-*,systemd}}
-  '';
-
-  preFixup = lib.optionalString (stdenv.isLinux && !libOnly) ''
-    wrapProgram $out/libexec/pulse/gsettings-helper \
-     --prefix XDG_DATA_DIRS : "$out/share/gsettings-schemas/${pname}-${version}" \
-     --prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules"
-  '';
-
-  passthru = {
-    pulseDir = "lib/pulse-" + lib.versions.majorMinor version;
-  };
-
-  meta = with lib; {
-    description = "A featureful, general-purpose sound server";
-    homepage = "http://www.pulseaudio.org/";
-    license = licenses.lgpl2Plus;
-    maintainers = with maintainers; [ lovek323 ];
-    platforms = platforms.unix;
-    longDescription = ''
-      PulseAudio is a sound system for POSIX OSes, meaning that it is
-      a proxy for your sound applications. It allows you to do advanced
-      operations on your sound data as it passes between your application
-      and your hardware. Things like transferring the audio to a different machine,
-      changing the sample format or channel count and mixing several sounds into one
-      are easily achieved using a sound server.
-    '';
-  };
-}
diff --git a/pkgs/servers/radicale/3.x.nix b/pkgs/servers/radicale/3.x.nix
index d0ed5cc97a647..9867922d85238 100644
--- a/pkgs/servers/radicale/3.x.nix
+++ b/pkgs/servers/radicale/3.x.nix
@@ -2,13 +2,13 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "radicale";
-  version = "3.1.5";
+  version = "3.1.7";
 
   src = fetchFromGitHub {
     owner = "Kozea";
     repo = "Radicale";
     rev = "v${version}";
-    hash = "sha256-PGPUV0oOWmzc7Lih6D0sCwIuUB8FOyOrYUEIvMpr4HE=";
+    hash = "sha256-D/JPq8p+iLmm0XaoXvNonRHr9PIhQ11yTDqur3DiYdc=";
   };
 
   postPatch = ''
@@ -20,7 +20,6 @@ python3.pkgs.buildPythonApplication rec {
     passlib
     vobject
     python-dateutil
-    setuptools
   ];
 
   checkInputs = with python3.pkgs; [
diff --git a/pkgs/servers/roon-bridge/default.nix b/pkgs/servers/roon-bridge/default.nix
index 2607ade99310a..4e590dd981867 100644
--- a/pkgs/servers/roon-bridge/default.nix
+++ b/pkgs/servers/roon-bridge/default.nix
@@ -67,7 +67,7 @@ stdenv.mkDerivation rec {
       ${fixBin "${placeholder "out"}/Bridge/RoonBridgeHelper"}
 
       mkdir -p $out/bin
-      makeWrapper "$out/Bridge/RoonBridge" "$out/bin/RoonBridge" --run "cd $out"
+      makeWrapper "$out/Bridge/RoonBridge" "$out/bin/RoonBridge" --chdir "$out"
 
       runHook postInstall
     '';
diff --git a/pkgs/servers/roon-server/default.nix b/pkgs/servers/roon-server/default.nix
index 8decbf1341b62..32d0a1310eff3 100644
--- a/pkgs/servers/roon-server/default.nix
+++ b/pkgs/servers/roon-server/default.nix
@@ -63,7 +63,7 @@ stdenv.mkDerivation rec {
             --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ alsa-lib icu66 ffmpeg openssl ]}" \
             --prefix PATH : "$dotnetDir" \
             --prefix PATH : "${lib.makeBinPath [ alsa-utils cifs-utils ffmpeg ]}" \
-            --run "cd $binDir" \
+            --chdir "$binDir" \
             --set DOTNET_ROOT "$dotnetDir"
         )
       '';
@@ -82,7 +82,7 @@ stdenv.mkDerivation rec {
       ${wrapBin "$out/Server/RoonServer"}
 
       mkdir -p $out/bin
-      makeWrapper "$out/Server/RoonServer" "$out/bin/RoonServer" --run "cd $out"
+      makeWrapper "$out/Server/RoonServer" "$out/bin/RoonServer" --chdir "$out"
 
       runHook postInstall
     '';
diff --git a/pkgs/servers/roundcube/plugins/carddav/default.nix b/pkgs/servers/roundcube/plugins/carddav/default.nix
index c3745c9bcc5ee..b26cfce67721e 100644
--- a/pkgs/servers/roundcube/plugins/carddav/default.nix
+++ b/pkgs/servers/roundcube/plugins/carddav/default.nix
@@ -2,10 +2,10 @@
 
 roundcubePlugin rec {
   pname = "carddav";
-  version = "3.0.3";
+  version = "4.3.0";
 
   src = fetchzip {
-    url = "https://github.com/blind-coder/rcmcarddav/releases/download/v${version}/carddav-${version}.tar.bz2";
-    sha256 = "0scqxqfwv9r4ggaammmjp51mj50qc5p4jmjliwjvcwyjr36wjq3z";
+    url = "https://github.com/mstilkerich/rcmcarddav/releases/download/v${version}/carddav-v${version}.tar.gz";
+    sha256 = "1jk1whx155svfalf1kq8vavn7jsswmzx4ax5zbj01783rqyxkkd5";
   };
 }
diff --git a/pkgs/servers/roundcube/plugins/persistent_login/default.nix b/pkgs/servers/roundcube/plugins/persistent_login/default.nix
index e210c10068457..0b97dd8a05021 100644
--- a/pkgs/servers/roundcube/plugins/persistent_login/default.nix
+++ b/pkgs/servers/roundcube/plugins/persistent_login/default.nix
@@ -2,12 +2,12 @@
 
 roundcubePlugin rec {
   pname = "persistent_login";
-  version = "5.2.0";
+  version = "5.3.0";
 
   src = fetchFromGitHub {
     owner = "mfreiholz";
     repo = pname;
     rev = "version-${version}";
-    sha256 = "0aasc2ns318s1g8vf2hhqwsplchhrhv5cd725rnfldim1y8k0n1i";
+    sha256 = "1qf7q1sypwa800pgxa3bg6ngcpkf4dqgg6jqx8cnd6cb7ikbfldb";
   };
 }
diff --git a/pkgs/servers/routinator/default.nix b/pkgs/servers/routinator/default.nix
index 2e5bd017216aa..ed57e21b62057 100644
--- a/pkgs/servers/routinator/default.nix
+++ b/pkgs/servers/routinator/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "routinator";
-  version = "0.11.0";
+  version = "0.11.2";
 
   src = fetchFromGitHub {
     owner = "NLnetLabs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-GKn8JRgYXLkm5gX5Tv6lMdS7oFan2TF7dLqWK+nEeYg=";
+    sha256 = "sha256-C6BY+Ba5KQgi+jMUKRi7osZNEDMLMDOhA4TQlbqb9jY=";
   };
 
-  cargoSha256 = "sha256-r3Np9aAJRZUj0TezZhT5cJJkm8EBjV9yQpplcrNgzmU=";
+  cargoSha256 = "sha256-5ZBE7jbhO4j4FwGSXLIbYjmtmNxFpiME9JqXBqwHSUA=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
diff --git a/pkgs/servers/rt/default.nix b/pkgs/servers/rt/default.nix
index ff0bbd6b97dc0..2b5188f743ad5 100644
--- a/pkgs/servers/rt/default.nix
+++ b/pkgs/servers/rt/default.nix
@@ -18,10 +18,10 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     autoreconfHook
+    makeWrapper
   ];
 
   buildInputs = [
-    makeWrapper
     perl
     (buildEnv {
       name = "rt-perl-deps";
diff --git a/pkgs/servers/search/elasticsearch/6.x.nix b/pkgs/servers/search/elasticsearch/6.x.nix
index 56f0779c833a7..798fa83e6d588 100644
--- a/pkgs/servers/search/elasticsearch/6.x.nix
+++ b/pkgs/servers/search/elasticsearch/6.x.nix
@@ -62,9 +62,10 @@ stdenv.mkDerivation (rec {
   };
 } // optionalAttrs enableUnfree {
   dontPatchELF = true;
-  nativeBuildInputs = [ makeWrapper autoPatchelfHook ];
+  nativeBuildInputs = [ makeWrapper ]
+    ++ optional stdenv.isLinux autoPatchelfHook;
   runtimeDependencies = [ zlib ];
-  postFixup = ''
+  postFixup = lib.optionalString stdenv.isLinux ''
     for exe in $(find $out/modules/x-pack-ml/platform/linux-x86_64/bin -executable -type f); do
       echo "patching $exe..."
       patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$exe"
diff --git a/pkgs/servers/search/elasticsearch/7.x.nix b/pkgs/servers/search/elasticsearch/7.x.nix
index 592cc947a42e3..83c169eb25e77 100644
--- a/pkgs/servers/search/elasticsearch/7.x.nix
+++ b/pkgs/servers/search/elasticsearch/7.x.nix
@@ -18,9 +18,10 @@ let
   plat = elemAt info 1;
   shas =
     {
-      x86_64-linux  = "1s16l95wc589cr69pfbgmkn9rkvxn6sd6jlbiqpm6p6iyxiaxd6c";
-      x86_64-darwin = "05h7pvq4pb816wgcymnfklp3w6sv54x6138v2infw5219dnk8pfs";
-      aarch64-linux = "0q4xnjzhlx1b2lkikca88qh9glfxaifsm419k2bxxlrfrx31zlkq";
+      x86_64-linux   = "1s16l95wc589cr69pfbgmkn9rkvxn6sd6jlbiqpm6p6iyxiaxd6c";
+      x86_64-darwin  = "05h7pvq4pb816wgcymnfklp3w6sv54x6138v2infw5219dnk8pfs";
+      aarch64-linux  = "0q4xnjzhlx1b2lkikca88qh9glfxaifsm419k2bxxlrfrx31zlkq";
+      aarch64-darwin = "067mb1dianwiarw8cz1va4g6zfhp9ls4s174xbpkxwsknvvyhgz6";
     };
 in
 stdenv.mkDerivation rec {
@@ -44,7 +45,8 @@ stdenv.mkDerivation rec {
       "ES_CLASSPATH=\"\$ES_CLASSPATH:$out/\$additional_classpath_directory/*\""
   '';
 
-  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ]
+    ++ lib.optional (!stdenv.hostPlatform.isDarwin) autoPatchelfHook;
 
   buildInputs = [ jre_headless util-linux zlib ];
 
diff --git a/pkgs/servers/search/groonga/default.nix b/pkgs/servers/search/groonga/default.nix
index f42574884ed99..fff449f372516 100644
--- a/pkgs/servers/search/groonga/default.nix
+++ b/pkgs/servers/search/groonga/default.nix
@@ -7,11 +7,11 @@
 stdenv.mkDerivation rec {
 
   pname = "groonga";
-  version = "11.0.9";
+  version = "11.1.0";
 
   src = fetchurl {
     url    = "https://packages.groonga.org/source/groonga/${pname}-${version}.tar.gz";
-    sha256 = "sha256-yE/Ok0QNY9+a4vfNJWZjR4W8E/i+lw7T85X2+oOw8m4=";
+    sha256 = "sha256-di1uzTZxeRLevcSS5d/yba5Y6tdy21H2NgU7ZrZTObI=";
   };
 
   preConfigure = ''
diff --git a/pkgs/servers/sickbeard/sickgear.nix b/pkgs/servers/sickbeard/sickgear.nix
index ebe79b927761d..4c2048000a64b 100644
--- a/pkgs/servers/sickbeard/sickgear.nix
+++ b/pkgs/servers/sickbeard/sickgear.nix
@@ -4,13 +4,13 @@ let
   pythonEnv = python3.withPackages(ps: with ps; [ cheetah3 ]);
 in stdenv.mkDerivation rec {
   pname = "sickgear";
-  version = "0.25.28";
+  version = "0.25.31";
 
   src = fetchFromGitHub {
     owner = "SickGear";
     repo = "SickGear";
     rev = "release_${version}";
-    sha256 = "16d0yvsp9yp67q1clhjs77syd13bmfgbadxcc1x8yfrfvdy6v39l";
+    sha256 = "11l537c7d6mrbvn24bfkzydb96mwzhr8z5rl6imiphjzr0f8qyyp";
   };
 
   dontBuild = true;
diff --git a/pkgs/servers/soft-serve/default.nix b/pkgs/servers/soft-serve/default.nix
index 582603a7a76c6..0d4c58d2b86a7 100644
--- a/pkgs/servers/soft-serve/default.nix
+++ b/pkgs/servers/soft-serve/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "soft-serve";
-  version = "0.2.3";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "charmbracelet";
     repo = "soft-serve";
     rev = "v${version}";
-    sha256 = "sha256-IaSXkbOBuvC7BhM+rGGYMcvk6jjKVDHH+lSs3y2UM40=";
+    sha256 = "sha256-FtWlE2CmUx9ric4yFItj7lc57259/BVINyUhSuBNapo=";
   };
 
-  vendorSha256 = "sha256-m5xwxs6XvmPffDX9dkkEG0/LdlDDm6Eq9CC0tVdauVI=";
+  vendorSha256 = "sha256-MwbtrtfvQ1HimLjUCmk8Twr4tpfP4eFBUlDP15IZKto=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/sql/dolt/default.nix b/pkgs/servers/sql/dolt/default.nix
index a1db051e7b2d9..072bd793346c9 100644
--- a/pkgs/servers/sql/dolt/default.nix
+++ b/pkgs/servers/sql/dolt/default.nix
@@ -2,24 +2,24 @@
 
 buildGoModule rec {
   pname = "dolt";
-  version = "0.37.4";
+  version = "0.39.2";
 
   src = fetchFromGitHub {
-    owner = "liquidata-inc";
+    owner = "dolthub";
     repo = "dolt";
     rev = "v${version}";
-    sha256 = "sha256-cKX8idMmh9hQVPjO8rJWlp1nhtnzwwlLkelNw+LLBag=";
+    sha256 = "sha256-rCGjBb5aiDLPBKYX4jhHxtBDf3Xs1/p1DdsFmdfLNLM=";
   };
 
   modRoot = "./go";
   subPackages = [ "cmd/dolt" "cmd/git-dolt" "cmd/git-dolt-smudge" ];
-  vendorSha256 = "sha256-vaYCo+jvw3qcLQ63oA8tq6G6Gxq50VTxK6IMBcEZXqs=";
+  vendorSha256 = "sha256-yemt7hUcLXgC42B2q4+1MalGd3jCMHcVD/Bpq8B2x7M=";
 
   doCheck = false;
 
   meta = with lib; {
     description = "Relational database with version control and CLI a-la Git";
-    homepage = "https://github.com/liquidata-inc/dolt";
+    homepage = "https://github.com/dolthub/dolt";
     license = licenses.asl20;
     maintainers = with maintainers; [ danbst ];
   };
diff --git a/pkgs/servers/sql/mysql/8.0.x.nix b/pkgs/servers/sql/mysql/8.0.x.nix
index ae2e170379df0..f897e018d6930 100644
--- a/pkgs/servers/sql/mysql/8.0.x.nix
+++ b/pkgs/servers/sql/mysql/8.0.x.nix
@@ -20,6 +20,8 @@ self = stdenv.mkDerivation rec {
   postPatch = ''
     substituteInPlace cmake/libutils.cmake --replace /usr/bin/libtool libtool
     substituteInPlace cmake/os/Darwin.cmake --replace /usr/bin/libtool libtool
+    substituteInPlace cmake/fido2.cmake \
+    --replace ''$\{MY_PKG_CONFIG_EXECUTABLE\} "${pkg-config}/bin/pkg-config"
   '';
 
   buildInputs = [
diff --git a/pkgs/servers/sql/patroni/default.nix b/pkgs/servers/sql/patroni/default.nix
index abf84d4bc6688..e3d5089dfa0a9 100644
--- a/pkgs/servers/sql/patroni/default.nix
+++ b/pkgs/servers/sql/patroni/default.nix
@@ -57,7 +57,7 @@ pythonPackages.buildPythonApplication rec {
     homepage = "https://patroni.readthedocs.io/en/latest/";
     description = "A Template for PostgreSQL HA with ZooKeeper, etcd or Consul";
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = teams.deshaw.members;
   };
 }
diff --git a/pkgs/servers/sql/pgbouncer/default.nix b/pkgs/servers/sql/pgbouncer/default.nix
index 441b99c7bcd66..0a6bfda03a73f 100644
--- a/pkgs/servers/sql/pgbouncer/default.nix
+++ b/pkgs/servers/sql/pgbouncer/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pgbouncer";
-  version = "1.16.1";
+  version = "1.17.0";
 
   src = fetchurl {
     url = "https://pgbouncer.github.io/downloads/files/${version}/${pname}-${version}.tar.gz";
-    sha256 = "1z7p3ghpmbp5qv1bz9s186jn0hfnr300dc5p0hmh6vbnwklpfx08";
+    sha256 = "sha256-ZXMJt7xceoXL9wqaRBtTX3gkEjCB6rt7qG0ANJolbiM=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/servers/sql/postgresql/ext/jsonb_deep_sum.nix b/pkgs/servers/sql/postgresql/ext/jsonb_deep_sum.nix
new file mode 100644
index 0000000000000..cf0ba46d87625
--- /dev/null
+++ b/pkgs/servers/sql/postgresql/ext/jsonb_deep_sum.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "jsonb_deep_sum";
+  version = "unstable-2021-12-24";
+
+  src = fetchFromGitHub {
+    owner = "furstenheim";
+    repo = "jsonb_deep_sum";
+    rev = "d9c69aa6b7da860e5522a9426467e67cb787980c";
+    sha256 = "sha256-W1wNILAwTAjFPezq+grdRMA59KEnMZDz69n9xQUqdc0=";
+  };
+
+  buildInputs = [ postgresql ];
+
+  installPhase = ''
+    mkdir -p $out/{lib,share/postgresql/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with lib; {
+    description = "PostgreSQL extension to easily add jsonb numeric";
+    homepage = "https://github.com/furstenheim/jsonb_deep_sum";
+    maintainers = with maintainers; [ _1000101 ];
+    platforms = postgresql.meta.platforms;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix b/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix
index fb62bdd94eee7..6f0a22167a91a 100644
--- a/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix
+++ b/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix
@@ -1,26 +1,16 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, postgresql, openssl, zlib, readline, libkrb5 }:
+{ lib, stdenv, fetchFromGitHub, postgresql, openssl, zlib, readline, libkrb5 }:
 
 stdenv.mkDerivation rec {
   pname = "pg_auto_failover";
-  version = "1.6.3";
+  version = "1.6.4";
 
   src = fetchFromGitHub {
     owner = "citusdata";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-hGpcHV4ai9mxaJ/u/o9LNFWPGsW22W7ak2pbvAUgmwU=";
+    sha256 = "sha256-MzMKVS86ymfRwZqTzJsdophRrIIPDp50Wpt7QkGA6Nc=";
   };
 
-  patches = [
-    # Pull upstream fix for ncurses-6.3 support:
-    #  https://github.com/citusdata/pg_auto_failover/pull/830
-    (fetchpatch {
-      name = "ncurses-6.3.patch";
-      url = "https://github.com/citusdata/pg_auto_failover/commit/fc92546965437a6d5f82ed9a6bdc8204a3bca725.patch";
-      sha256 = "sha256-t4DC/d/2s/Mc44rpFxBMOWGhACG0s5wAWyeDD7Mefo8=";
-    })
-  ];
-
   buildInputs = [ postgresql openssl zlib readline libkrb5 ];
 
   installPhase = ''
diff --git a/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix b/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix
index ff5f464c8e518..dae538822385c 100644
--- a/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix
+++ b/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "plpgsql_check";
-  version = "2.1.2";
+  version = "2.1.3";
 
   src = fetchFromGitHub {
     owner = "okbob";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-S/b6oQPYgaM6UvloYqlwhF5rxlyKG4Vw6ejN/gK8Spg=";
+    sha256 = "sha256-hVbx1eUrVQ35UzcokoqYCi6RFI5Dn7t9XH8q9VbyDbQ=";
   };
 
   buildInputs = [ postgresql ];
diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix
index 1b19593053a23..f54d1244b2baa 100644
--- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix
+++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   pname = "timescaledb";
-  version = "2.6.0";
+  version = "2.6.1";
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [ postgresql openssl libkrb5 ];
@@ -16,9 +16,8 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "timescale";
     repo = "timescaledb";
-    # some branches are named like tags which confuses git
-    rev = "refs/tags/${version}";
-    sha256 = "sha256-OiY7u7n78k+LsXo/B463p02tw5Fmq/OiVcLcZVutUdA=";
+    rev = version;
+    sha256 = "sha256-P0gdw6Ai5+6A/+bmlTkmKpy18UkbRgJN3wCzLQI5oMA=";
   };
 
   cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" "-DTAP_CHECKS=OFF" ]
diff --git a/pkgs/servers/sql/postgresql/packages.nix b/pkgs/servers/sql/postgresql/packages.nix
index fec106f32acd6..c789e92c8e3c9 100644
--- a/pkgs/servers/sql/postgresql/packages.nix
+++ b/pkgs/servers/sql/postgresql/packages.nix
@@ -2,6 +2,8 @@ self: super: {
 
     age = super.callPackage ./ext/age.nix { };
 
+    jsonb_deep_sum = super.callPackage ./ext/jsonb_deep_sum.nix { };
+
     periods = super.callPackage ./ext/periods.nix { };
 
     postgis = super.callPackage ./ext/postgis.nix { };
diff --git a/pkgs/servers/stayrtr/default.nix b/pkgs/servers/stayrtr/default.nix
index cee68bd2f61b9..a168cf5b1eec0 100644
--- a/pkgs/servers/stayrtr/default.nix
+++ b/pkgs/servers/stayrtr/default.nix
@@ -2,7 +2,7 @@
 , fetchFromGitHub
 , buildGoModule
 , stayrtr
-, testVersion
+, testers
 }:
 
 buildGoModule rec {
@@ -23,7 +23,7 @@ buildGoModule rec {
     "-X main.version=${version}"
   ];
 
-  passthru.tests.version = testVersion {
+  passthru.tests.version = testers.testVersion {
     package = stayrtr;
   };
 
diff --git a/pkgs/servers/tailscale/default.nix b/pkgs/servers/tailscale/default.nix
index 7c7bb84e15b7e..2ccabb3f21b91 100644
--- a/pkgs/servers/tailscale/default.nix
+++ b/pkgs/servers/tailscale/default.nix
@@ -2,20 +2,20 @@
 
 buildGoModule rec {
   pname = "tailscale";
-  version = "1.22.2";
+  version = "1.24.0";
 
   src = fetchFromGitHub {
     owner = "tailscale";
     repo = "tailscale";
     rev = "v${version}";
-    sha256 = "sha256-W4BcUDMxUZKFXueSI/Xlml17Jabi/hnnOyXgitao76A=";
+    sha256 = "12dn2dkk86ni7wqpl7zaxb8n840fnvg8kcjsg1lvf9k432dqhksn";
   };
 
   nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ];
 
   CGO_ENABLED = 0;
 
-  vendorSha256 = "sha256-Bu0a9JI0rlsA4wvvX9Mj4+QH0ot6Jdl+t246HbXu6OA=";
+  vendorSha256 = "01hh8v3mvl7fgv4w4y78jg50b383lgxfy876lkn7wg0sgg336dc8";
 
   doCheck = false;
 
@@ -35,6 +35,6 @@ buildGoModule rec {
     homepage = "https://tailscale.com";
     description = "The node agent for Tailscale, a mesh VPN built on WireGuard";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ danderson mbaillie ];
+    maintainers = with maintainers; [ danderson mbaillie twitchyliquid64 ];
   };
 }
diff --git a/pkgs/servers/traefik/default.nix b/pkgs/servers/traefik/default.nix
index 2dbed400650a1..622662645c7ef 100644
--- a/pkgs/servers/traefik/default.nix
+++ b/pkgs/servers/traefik/default.nix
@@ -2,18 +2,16 @@
 
 buildGoModule rec {
   pname = "traefik";
-  version = "2.6.2";
+  version = "2.6.3";
 
   src = fetchzip {
     url = "https://github.com/traefik/traefik/releases/download/v${version}/traefik-v${version}.src.tar.gz";
-    sha256 = "sha256-DVmszzDre0pWXARUqXuqGfY3pX1Ijh33G0Gsdmp8f98=";
+    sha256 = "sha256-OaKgX3qwiJM/EPprV1r3CbUnxOaWl7BTMcS5v+tmHoo=";
     stripRoot = false;
   };
 
   vendorSha256 = "sha256-tqrfCpZ/fRYZBZ/SBAvvJebLBeD2M/AVJEPiseehJHY=";
 
-  doCheck = false;
-
   subPackages = [ "cmd/traefik" ];
 
   nativeBuildInputs = [ go-bindata ];
diff --git a/pkgs/servers/trezord/default.nix b/pkgs/servers/trezord/default.nix
index 040ae21c2232d..29cd2766bd8ba 100644
--- a/pkgs/servers/trezord/default.nix
+++ b/pkgs/servers/trezord/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
     homepage = "https://trezor.io";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ canndrew jb55 prusnak mmahut _1000101 ];
+    mainProgram = "trezord-go";
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/servers/udpt/default.nix b/pkgs/servers/udpt/default.nix
index 8f59d9e02a85f..6d5b0bb90993f 100644
--- a/pkgs/servers/udpt/default.nix
+++ b/pkgs/servers/udpt/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     license = lib.licenses.gpl3;
     platforms = lib.platforms.all;
     maintainers = with lib.maintainers; [ makefu ];
+    mainProgram = "udpt-rs";
   };
 }
diff --git a/pkgs/servers/ursadb/default.nix b/pkgs/servers/ursadb/default.nix
index 836a5934d96b6..c9b39eccd8a81 100644
--- a/pkgs/servers/ursadb/default.nix
+++ b/pkgs/servers/ursadb/default.nix
@@ -11,6 +11,14 @@ stdenv.mkDerivation rec {
     hash = "sha256-/EK1CKJ0IR7fkKSpQkONbWcz6uhUoAwK430ljNYsV5U=";
   };
 
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace \
+        "add_executable(ursadb_test Tests.cpp)" "" \
+      --replace \
+        "target_link_libraries(ursadb_test ursa)" ""
+  '';
+
   installPhase = ''
     mkdir -p $out/bin
     cp ursadb $out/bin/
diff --git a/pkgs/servers/uxplay/default.nix b/pkgs/servers/uxplay/default.nix
new file mode 100644
index 0000000000000..d013a5a59e4fe
--- /dev/null
+++ b/pkgs/servers/uxplay/default.nix
@@ -0,0 +1,60 @@
+{ lib
+, stdenv
+, pkg-config
+, fetchFromGitHub
+, fetchpatch
+, cmake
+, wrapGAppsHook
+, avahi
+, avahi-compat
+, openssl
+, gst_all_1
+, libplist
+}:
+
+stdenv.mkDerivation rec {
+  pname = "uxplay";
+  version = "1.50";
+
+  src = fetchFromGitHub {
+    owner = "FDH2";
+    repo = "UxPlay";
+    rev = "v${version}";
+    sha256 = "sha256-43BCpYh0XtsnI064/ddcz2/Imj399g+bxLlT0BpqLMI=";
+  };
+
+  patches = [
+    # https://github.com/FDH2/UxPlay/issues/91
+    (fetchpatch {
+      url = "https://github.com/FDH2/UxPlay/commit/f373fb2edcfb1f4c279e5796cf21e4a865800a71.patch";
+      sha256 = "sha256-ENT/sMyPjDdZ4gdxiatYJ/UxuCl+ekk0iQOn8ELDAKQ=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    openssl
+    libplist
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    avahi
+    avahi-compat
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-plugins-ugly
+    gst_all_1.gst-libav
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/FDH2/UxPlay";
+    description = "AirPlay Unix mirroring server";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ azuwis ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/web-apps/discourse/admin_create.patch b/pkgs/servers/web-apps/discourse/admin_create.patch
index 651e8ce81dc93..691b806dfd65e 100644
--- a/pkgs/servers/web-apps/discourse/admin_create.patch
+++ b/pkgs/servers/web-apps/discourse/admin_create.patch
@@ -1,5 +1,5 @@
 diff --git a/lib/tasks/admin.rake b/lib/tasks/admin.rake
-index 80c403616d..cba01202ac 100644
+index 37ef651f2b..b775129498 100644
 --- a/lib/tasks/admin.rake
 +++ b/lib/tasks/admin.rake
 @@ -107,3 +107,43 @@ task "admin:create" => :environment do
diff --git a/pkgs/servers/web-apps/discourse/assets_rake_command.patch b/pkgs/servers/web-apps/discourse/assets_rake_command.patch
new file mode 100644
index 0000000000000..b37b6d1d79944
--- /dev/null
+++ b/pkgs/servers/web-apps/discourse/assets_rake_command.patch
@@ -0,0 +1,13 @@
+diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
+index 68b5db61ac..d460b5753e 100644
+--- a/lib/tasks/assets.rake
++++ b/lib/tasks/assets.rake
+@@ -19,7 +19,7 @@ task 'assets:precompile:before' do
+ 
+     if only_assets_precompile_remaining
+       # Using exec to free up Rails app memory during ember build
+-      exec "#{compile_command} && EMBER_CLI_COMPILE_DONE=1 bin/rake assets:precompile"
++      exec "#{compile_command} && EMBER_CLI_COMPILE_DONE=1 bundle exec rake assets:precompile"
+     else
+       system compile_command
+     end
diff --git a/pkgs/servers/web-apps/discourse/auto_generated_path.patch b/pkgs/servers/web-apps/discourse/auto_generated_path.patch
index e63d4a283a74d..c80e4a48ecd96 100644
--- a/pkgs/servers/web-apps/discourse/auto_generated_path.patch
+++ b/pkgs/servers/web-apps/discourse/auto_generated_path.patch
@@ -1,8 +1,8 @@
 diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb
-index e59a6fbc05..c773a1356e 100644
+index 8482ff0210..826d111d65 100644
 --- a/lib/plugin/instance.rb
 +++ b/lib/plugin/instance.rb
-@@ -447,7 +447,7 @@ class Plugin::Instance
+@@ -455,7 +455,7 @@ class Plugin::Instance
    end
  
    def auto_generated_path
diff --git a/pkgs/servers/web-apps/discourse/default.nix b/pkgs/servers/web-apps/discourse/default.nix
index 693e638dec6e3..19860ad7886df 100644
--- a/pkgs/servers/web-apps/discourse/default.nix
+++ b/pkgs/servers/web-apps/discourse/default.nix
@@ -3,20 +3,21 @@
 
 , ruby, replace, gzip, gnutar, git, cacert, util-linux, gawk, nettools
 , imagemagick, optipng, pngquant, libjpeg, jpegoptim, gifsicle, jhead
-, libpsl, redis, postgresql, which, brotli, procps, rsync, icu
-, nodePackages, nodejs-16_x
+, oxipng, libpsl, redis, postgresql, which, brotli, procps, rsync, icu
+, fetchYarnDeps, yarn, fixup_yarn_lock, nodePackages, nodejs-14_x
+, nodejs-16_x
 
 , plugins ? []
 }@args:
 
 let
-  version = "2.9.0.beta1";
+  version = "2.9.0.beta4";
 
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse";
     rev = "v${version}";
-    sha256 = "sha256-mf2Niyv1H+Zq7RfnV93O1Ul9RdRrtmtAJMBJrb8hp3U=";
+    sha256 = "sha256-DpUEBGLgjcroVzdDG8/nGvC+ym19ZkGa7qvHKZZ1mH4=";
   };
 
   runtimeDeps = [
@@ -38,6 +39,7 @@ let
     # Image optimization
     imagemagick
     optipng
+    oxipng
     pngquant
     libjpeg
     jpegoptim
@@ -99,7 +101,7 @@ let
         ${lib.concatStrings (lib.mapAttrsToList (name: value: "--set ${name} '${value}' ") runtimeEnv)} \
         --prefix PATH : ${lib.makeBinPath runtimeDeps} \
         --set RAKEOPT '-f ${discourse}/share/discourse/Rakefile' \
-        --run 'cd ${discourse}/share/discourse'
+        --chdir '${discourse}/share/discourse'
   '';
 
   rubyEnv = bundlerEnv {
@@ -157,6 +159,11 @@ let
     ];
   };
 
+  yarnOfflineCache = fetchYarnDeps {
+    yarnLock = src + "/app/assets/javascripts/yarn.lock";
+    sha256 = "1l4nfc14cm42lkilsawfhdcnv1ln7m7bpan9a804abv4hwrs3f52";
+  };
+
   assets = stdenv.mkDerivation {
     pname = "discourse-assets";
     inherit version src;
@@ -166,6 +173,8 @@ let
       redis
       nodePackages.uglify-js
       nodePackages.terser
+      yarn
+      nodejs-14_x
     ];
 
     patches = [
@@ -177,6 +186,10 @@ let
       # defaults to the plugin's directory and isn't writable at the
       # time of asset generation
       ./auto_generated_path.patch
+
+      # Fix the rake command used to recursively execute itself in the
+      # assets precompilation task.
+      ./assets_rake_command.patch
     ];
 
     # We have to set up an environment that is close enough to
@@ -184,8 +197,21 @@ let
     # run. This means that Redis and PostgreSQL has to be running and
     # database migrations performed.
     preBuild = ''
+      # Yarn wants a real home directory to write cache, config, etc to
+      export HOME=$NIX_BUILD_TOP/fake_home
+
+      # Make yarn install packages from our offline cache, not the registry
+      yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
+
+      # Fixup "resolved"-entries in yarn.lock to match our offline cache
+      ${fixup_yarn_lock}/bin/fixup_yarn_lock app/assets/javascripts/yarn.lock
+
       export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
 
+      yarn install --offline --cwd app/assets/javascripts/discourse
+
+      patchShebangs app/assets/javascripts/node_modules/
+
       redis-server >/dev/null &
 
       initdb -A trust $NIX_BUILD_TOP/postgres >/dev/null
@@ -211,7 +237,7 @@ let
       export RAILS_ENV=production
 
       bundle exec rake db:migrate >/dev/null
-      rm -r tmp/*
+      chmod -R +w tmp
     '';
 
     buildPhase = ''
@@ -229,6 +255,10 @@ let
 
       runHook postInstall
     '';
+
+    passthru = {
+      inherit yarnOfflineCache;
+    };
   };
 
   discourse = stdenv.mkDerivation {
@@ -309,7 +339,7 @@ let
     };
 
     passthru = {
-      inherit rubyEnv runtimeEnv runtimeDeps rake mkDiscoursePlugin;
+      inherit rubyEnv runtimeEnv runtimeDeps rake mkDiscoursePlugin assets;
       enabledPlugins = plugins;
       plugins = callPackage ./plugins/all-plugins.nix { inherit mkDiscoursePlugin; };
       ruby = rubyEnv.wrappedRuby;
diff --git a/pkgs/servers/web-apps/discourse/nixos_defaults.patch b/pkgs/servers/web-apps/discourse/nixos_defaults.patch
index 3efca97e62c02..98dba9b54b90a 100644
--- a/pkgs/servers/web-apps/discourse/nixos_defaults.patch
+++ b/pkgs/servers/web-apps/discourse/nixos_defaults.patch
@@ -1,8 +1,8 @@
 diff --git a/app/models/site_setting.rb b/app/models/site_setting.rb
-index 89a5e923fc..b60754f50a 100644
+index a6641f967a..a45353504a 100644
 --- a/app/models/site_setting.rb
 +++ b/app/models/site_setting.rb
-@@ -26,6 +26,8 @@ class SiteSetting < ActiveRecord::Base
+@@ -21,6 +21,8 @@ class SiteSetting < ActiveRecord::Base
      end
    end
  
diff --git a/pkgs/servers/web-apps/discourse/plugin_gem_api_version.patch b/pkgs/servers/web-apps/discourse/plugin_gem_api_version.patch
index ca7aa850ec515..84fb1d4dad4a4 100644
--- a/pkgs/servers/web-apps/discourse/plugin_gem_api_version.patch
+++ b/pkgs/servers/web-apps/discourse/plugin_gem_api_version.patch
@@ -1,5 +1,5 @@
 diff --git a/lib/plugin_gem.rb b/lib/plugin_gem.rb
-index 855d1aca2c..8115623547 100644
+index 49882b2cd9..96672df2ea 100644
 --- a/lib/plugin_gem.rb
 +++ b/lib/plugin_gem.rb
 @@ -4,7 +4,7 @@ module PluginGem
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix
index 2a1970e92dd30..3cf491a2f42d6 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-assign/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-assign";
-    rev = "ffe95da7ed0cf0893a76af37498784ad92041131";
-    sha256 = "sha256-FdZATO1Z6XmhForETZ2FC+6wfR437cpRg8QSFzmbsxQ=";
+    rev = "7a854fe5046783bcff6cc24fca818056e1b9414a";
+    sha256 = "sha256-SGGwj0V4mTXD33tLnH76tQD/f6IvDbacq23XbaRdLsI=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-docs";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile
index bda8e6ec3cf34..faf4db6ca825b 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile
@@ -2,7 +2,5 @@
 
 source "https://rubygems.org"
 
-git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
-
 # gem "rails"
-gem 'rrule', '0.4.2', require: false
+gem 'rrule', '0.4.4', require: false
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
index 727fde304953d..4a4ff3b0e178a 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/Gemfile.lock
@@ -1,17 +1,17 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (7.0.1)
+    activesupport (7.0.2.3)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
       tzinfo (~> 2.0)
-    concurrent-ruby (1.1.9)
-    i18n (1.9.1)
+    concurrent-ruby (1.1.10)
+    i18n (1.10.0)
       concurrent-ruby (~> 1.0)
     minitest (5.15.0)
-    rrule (0.4.2)
-      activesupport (>= 4.1)
+    rrule (0.4.4)
+      activesupport (>= 2.3)
     tzinfo (2.0.4)
       concurrent-ruby (~> 1.0)
 
@@ -19,7 +19,7 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
-  rrule (= 0.4.2)
+  rrule (= 0.4.4)
 
 BUNDLED WITH
-   2.2.24
+   2.3.9
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
index 1d3e2756bb0d3..d935b37b5a112 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/default.nix
@@ -6,8 +6,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-calendar";
-    rev = "765d16242ffeb4324c3269393d3fa81e9b751d4f";
-    sha256 = "sha256-YYxspW0DX0DUBwPOcvX2pLJYmyK4b56LdjL6avLKzRs=";
+    rev = "eb8bc3e864c6f735fa5a005e854f8c37411b6288";
+    sha256 = "sha256-fc3oQj2NqaTfmokJUryd2oBd/eVAcNOMMT0ZT45bU28=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-calendar";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
index 48598802c61c1..69f2648831ce5 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-calendar/gemset.nix
@@ -5,20 +5,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "02lys9pnb99hsczs551iqzjn008i8k7c728xxba7acfi9rdw9pa6";
+      sha256 = "1jpydd414j0fig3r0f6ci67mchclg6cq2qgqbq9zplrbg40pzfi8";
       type = "gem";
     };
-    version = "7.0.1";
+    version = "7.0.2.3";
   };
   concurrent-ruby = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
+      sha256 = "0s4fpn3mqiizpmpy2a24k4v365pv75y50292r8ajrv4i1p5b2k14";
       type = "gem";
     };
-    version = "1.1.9";
+    version = "1.1.10";
   };
   i18n = {
     dependencies = ["concurrent-ruby"];
@@ -26,10 +26,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1nancdgq51wk3c1pkxps0rkjsfdwnkx60hzkm947m5rzsz8b2sw8";
+      sha256 = "0b2qyvnk4yynlg17ymkq4g5xgr275637fhl1mjh0valw3cb1fhhg";
       type = "gem";
     };
-    version = "1.9.1";
+    version = "1.10.0";
   };
   minitest = {
     groups = ["default"];
@@ -47,10 +47,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0w338b7dgvd144fl5b8xy2lfc6zgbcjac7b4z158jc8h070yzc9v";
+      sha256 = "04h3q0ws0wswqj3mwjyv44yx59d9ima9a820ay9w5bwnlb73syj2";
       type = "gem";
     };
-    version = "0.4.2";
+    version = "0.4.4";
   };
   tzinfo = {
     dependencies = ["concurrent-ruby"];
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
index 43ef518a9cec9..07e58652d9fe2 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-canned-replies/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-canned-replies";
-    rev = "8762b8d0fe28ffcacc427e7a683b971bf125a881";
-    sha256 = "sha256-ZAm/A45vAofiOiqXS/STt4XO3FJ6XUFyVydsFaI40+k=";
+    rev = "18af3367d9eda8842e8ff0de96c90aa2f0bdb0a3";
+    sha256 = "sha256-v8QOR0/9RUJ1zFmzhKYe/GEev3Jl4AlXWkQyuquyuJY=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-canned-replies";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix
index 63797d3b89cc3..f96348e6f273d 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-chat-integration/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-chat-integration";
-    rev = "ddee0c44179c547b2581474c3c4d0da7d8d23fe8";
-    sha256 = "sha256-8AUzIu+HRHrcAqpyI/eVrgZLTKXTLgDjXFTGQbMRzxs=";
+    rev = "eaa7de8c2b659d107c2b16ac0d469592aff79d7c";
+    sha256 = "sha256-7anXDbltMBM22dBnE5FFwNk7IJEUFZgDzR4Q/AYn6ng=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-chat-integration";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
index 9c61b4bcf67c9..d1bcd57fc66a5 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-checklist/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-checklist";
-    rev = "c2bb6b0156e411ef3c1de52aa36b38abeba801cd";
-    sha256 = "sha256-p0nOdh0zg891Pe8wYhMzcbunGYJY41iVET4fFRDJt+k=";
+    rev = "68941e370e132c17fc2aa21ac40c033df72c9771";
+    sha256 = "sha256-jJM/01fKxc1RBcSPt9/KDxMkBMH2AOp9dINxSneNhAs=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-checklist";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix
index 38336973f32ad..8073d89df8176 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-data-explorer/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-data-explorer";
-    rev = "2a17f49f66feb7a3068cf6f1e4ad08550f875057";
-    sha256 = "sha256-LOcJle0S7Z8oGz1XgTEHiz1JNKufxege+joeinwX7xU=";
+    rev = "baaac7ce671e716559329ae756988cc395d7079e";
+    sha256 = "sha256-bUCRfbKXdNbiJnU3xPMhG3s8kH7wQQoS2kV7ScHGOMQ=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-data-explorer";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix
index 3b7d5e96f0770..071b1eb5dd9ba 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-docs/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-docs";
-    rev = "05678c451caf2ceb192501da91cf0d24ea44c8e8";
-    sha256 = "sha256-C+3jaJ09P1PteeHFVfbAXxDgAa6d0RZwLdlp+NKuZJU=";
+    rev = "72b2e87e84221588bc2ff08961a492044f1f8237";
+    sha256 = "sha256-moR4TJYffh6JwC7oxeS4+Cyngi88Ht2eTbSEJJ4JKdY=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-docs";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile
index 7c0e7f435ae73..ae97d91984594 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile
@@ -2,8 +2,6 @@
 
 source "https://rubygems.org"
 
-git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
-
 # gem "rails"
 gem 'sawyer', '0.8.2'
-gem 'octokit', '4.21.0'
+gem 'octokit', '4.22.0'
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
index 837fd40ee0815..ba05169809779 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/Gemfile.lock
@@ -3,7 +3,7 @@ GEM
   specs:
     addressable (2.8.0)
       public_suffix (>= 2.0.2, < 5.0)
-    faraday (1.9.3)
+    faraday (1.10.0)
       faraday-em_http (~> 1.0)
       faraday-em_synchrony (~> 1.0)
       faraday-excon (~> 1.1)
@@ -27,10 +27,10 @@ GEM
     faraday-rack (1.0.0)
     faraday-retry (1.0.3)
     multipart-post (2.1.1)
-    octokit (4.21.0)
+    octokit (4.22.0)
       faraday (>= 0.9)
       sawyer (~> 0.8.0, >= 0.5.3)
-    public_suffix (4.0.6)
+    public_suffix (4.0.7)
     ruby2_keywords (0.0.5)
     sawyer (0.8.2)
       addressable (>= 2.3.5)
@@ -40,8 +40,8 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
-  octokit (= 4.21.0)
+  octokit (= 4.22.0)
   sawyer (= 0.8.2)
 
 BUNDLED WITH
-   2.2.24
+   2.3.9
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
index 9421267d1522a..f9ccaed863ef0 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/default.nix
@@ -6,8 +6,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-github";
-    rev = "031dc6b512ada263eb3634eae5adfe4cdb008b4b";
-    sha256 = "sha256-v69RYgA5k6A3bus+Joc/NFp2DU4bwiaoCSe2xua3DgY=";
+    rev = "36cbacdd32916435391b4700c024074da3bcbe74";
+    sha256 = "sha256-R4Kp7NFMIXYDcAZlOUdhNdN/mmQMgXlLFolzo2OZahw=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-github";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
index 29a1e080e83f5..7bab2858b652e 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-github/gemset.nix
@@ -16,10 +16,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0y32gj994ll3zlcqjmwp78r7s03iiwayij6fz2pjpkfywgvp71s6";
+      sha256 = "00palwawk897p5gypw5wjrh93d4p0xz2yl9w93yicb4kq7amh8d4";
       type = "gem";
     };
-    version = "1.9.3";
+    version = "1.10.0";
   };
   faraday-em_http = {
     groups = ["default"];
@@ -138,20 +138,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0ak64rb48d8z98nw6q70r6i0i3ivv61iqla40ss5l79491qfnn27";
+      sha256 = "1nmdd7klyinvrrv2mggwwmc99ykaq7i379j00i37hvvaqx4giifj";
       type = "gem";
     };
-    version = "4.21.0";
+    version = "4.22.0";
   };
   public_suffix = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
+      sha256 = "1f3knlwfwm05sfbaihrxm4g772b79032q14c16q4b38z8bi63qcb";
       type = "gem";
     };
-    version = "4.0.6";
+    version = "4.0.7";
   };
   ruby2_keywords = {
     groups = ["default"];
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile
index a988913a1bf62..2602ef5c72b57 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile
@@ -2,8 +2,6 @@
 
 source "https://rubygems.org"
 
-git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
-
 # gem "rails"
 gem 'pyu-ruby-sasl', '0.0.3.3', require: false
 gem 'rubyntlm', '0.3.4', require: false
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock
index 83e3cd4cbf47b..9ed9dcc8ef911 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/Gemfile.lock
@@ -25,4 +25,4 @@ DEPENDENCIES
   rubyntlm (= 0.3.4)
 
 BUNDLED WITH
-   2.2.24
+   2.3.9
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix
index 9010ee21a8975..0fc71fad26151 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-ldap-auth/default.nix
@@ -6,8 +6,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "jonmbake";
     repo = "discourse-ldap-auth";
-    rev = "fe014176bd635e7df24ee2978d356e1f87d8daed";
-    sha256 = "sha256-1Cx+65rJx292sTfPUfbzSfJAU71V1pKWvWdLNCq8M8A=";
+    rev = "a7a2e35eb5a8f6ee3b90bf48424efcb2a66c9989";
+    sha256 = "sha256-Dsb12bZEZlNjFGw1GX7zt2hDVM9Ua+MDWSmBn4HEvs0=";
   };
   meta = with lib; {
     homepage = "https://github.com/jonmbake/discourse-ldap-auth";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
index e3e52ccfea786..d65087cca737d 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-math/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-math";
-    rev = "2deef48ab16bc0a15ab5f1fef98e15261251bf32";
-    sha256 = "sha256-Crt7ozasZ1DCwAzaH/Y6BQEXwpX6t9qsIrGYMlECylk=";
+    rev = "b875a21b4d5225b61cb525531d30eaf852db6237";
+    sha256 = "sha256-UKba9ZaVjIxOqUYdl00Z2sLt3Y+exBX7MJax8EzXB1Q=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-math";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix
index c5405367ff3b0..e3c52319d279d 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-openid-connect/default.nix
@@ -6,8 +6,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-openid-connect";
-    rev = "ab26c4eaa858bf35cb6fa6314597a50fff57baf9";
-    sha256 = "sha256-Yxw1C0vNcVr+sYvmLvBWFV/XOr7yDBTW17Ohxfkv6W0=";
+    rev = "e897702139b9c0dca40b9385427ba8bad0e1eae9";
+    sha256 = "sha256-miosXf4to60BqGsbXYEL37G38uVHrz2/2Pizn0Rlp2o=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-openid-connect";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile
index ed57d552593ed..63a7cf62749bf 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile
@@ -2,7 +2,5 @@
 
 source "https://rubygems.org"
 
-git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
-
 # gem "rails"
 gem 'prometheus_exporter', File.read(File.expand_path("../prometheus_exporter_version", __FILE__)).strip
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock
index 7fbd6680db6cf..79978e387cb9f 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/Gemfile.lock
@@ -10,4 +10,4 @@ DEPENDENCIES
   prometheus_exporter (= 0.5.0)
 
 BUNDLED WITH
-   2.2.24
+   2.3.9
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix
index 4c23355b301d8..e5d7259099ad1 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-prometheus/default.nix
@@ -6,8 +6,8 @@
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-prometheus";
-    rev = "1c3e2d75c33a0ed8563977d7c4919e3d06788dcd";
-    sha256 = "sha256-tj/IYUjuUs6foV4goIm+HACccmHjAiI1/EAOKibwUMs=";
+    rev = "43536e4a4977718972a673dc2475ae07df9a0a45";
+    sha256 = "sha256-7sQldPLY7YW/sr4WBHWxJVvhvRK0LwO3+52HAIJFvY4=";
   };
 
   patches = [
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix
index 5ba948cf1d139..682032bb9d0f1 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-saved-searches/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-saved-searches";
-    rev = "baf1ab94317129d2ff2eb4e5e6d84fa76c40797c";
-    sha256 = "sha256-6NP9TK5Wx0LPX0ZFIiaEEYJv3d9WIQ26nvODk0dU2I0=";
+    rev = "f008809ee3bf3a8a5c11daff0807d59ab4336a0c";
+    sha256 = "sha256-/OyFL/9fLdVpsFQIlnjQ6ser6hdEs4X434nAaqKCTUE=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-saved-searches";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
index 8d0c1b07d9609..ebec54bc6e5db 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-solved/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-solved";
-    rev = "922ca15fc92bfab496088b5ee240982bd8404f28";
-    sha256 = "sha256-s7XNRLDXnrsoB7FUgGaYIVfd7iO3ittIBoqSo2UaUTY=";
+    rev = "17ba805a06ddfc27c6435eb20c0f8466f1708be8";
+    sha256 = "sha256-G48c1khRVnCPXA8ujpDmEzL10uLC9e2sYVLVEXWIk0s=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-solved";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
index e97f1bfd06c1d..b4f7e000fd64a 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-spoiler-alert/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-spoiler-alert";
-    rev = "5afbcb905fa2c8cb8b7156ab5df3af27d6e6b477";
-    sha256 = "sha256-/Y5ATVSnJ3hMNiiqqYJzitgkQ/2zbWLaPdII9agTa10=";
+    rev = "4a07519cf9d7ac713f5e21ba770adb127524a22d";
+    sha256 = "sha256-pMTXdjqI4GrLNfZMbyPdeW+Jwieh6I4O/pT2Yyf4ltA=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-spoiler-alert";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix
index 4efe8aabcdcd8..4d0f71fdd7f64 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-voting/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-voting";
-    rev = "6a4b2a306928191c9ef9f3efdafeb9b4df496bcb";
-    sha256 = "sha256-OAn+NS64BcOlhmFYXV0Bq+O1B4a9FKHyN44vbHSax3Y=";
+    rev = "1da667721269ca01ef53c35ec0470486b490e72c";
+    sha256 = "sha256-VCMv6YWHY24v9KyO4q0YSSYK+mszOVqP46slOh8okvY=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-voting";
diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
index a03bf7b8cdd96..e38aa7f83571b 100644
--- a/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
+++ b/pkgs/servers/web-apps/discourse/plugins/discourse-yearly-review/default.nix
@@ -5,8 +5,8 @@ mkDiscoursePlugin {
   src = fetchFromGitHub {
     owner = "discourse";
     repo = "discourse-yearly-review";
-    rev = "5e3674201a32bf9e6c22417395bc2e052d9f217d";
-    sha256 = "sha256-gkQGLJegWTSwzpjrHPYK5/Uz4QjLUCLd6OuEIRYeP/I=";
+    rev = "ef4855f6afa16ef86013bba7da8e50a63e11b493";
+    sha256 = "sha256-IVKGysAKr+lKV1CO1JJIMLtzcvpK8joWjx8Bfy+dx8Y=";
   };
   meta = with lib; {
     homepage = "https://github.com/discourse/discourse-yearly-review";
diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile
index 9cdfbf21a9d8c..2766c3feadc03 100644
--- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile
+++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile
@@ -18,7 +18,7 @@ else
   # this allows us to include the bits of rails we use without pieces we do not.
   #
   # To issue a rails update bump the version number here
-  rails_version = '6.1.4.1'
+  rails_version = '6.1.4.7'
   gem 'actionmailer', rails_version
   gem 'actionpack', rails_version
   gem 'actionview', rails_version
@@ -31,9 +31,7 @@ end
 
 gem 'json'
 
-# TODO: At the moment Discourse does not work with Sprockets 4, we would need to correct internals
-# This is a desired upgrade we should get to.
-gem 'sprockets', '3.7.2'
+gem 'sprockets'
 
 # this will eventually be added to rails,
 # allows us to precompile all our templates in the unicorn master
@@ -105,9 +103,7 @@ gem 'omniauth-oauth2', require: false
 
 gem 'omniauth-google-oauth2'
 
-# Pinning oj until https://github.com/ohler55/oj/issues/699 is resolved.
-# Segfaults and stuck processes after upgrading.
-gem 'oj', '3.13.2'
+gem 'oj'
 
 gem 'pg'
 gem 'mini_sql'
@@ -135,6 +131,14 @@ gem 'cose', require: false
 gem 'addressable'
 gem 'json_schemer'
 
+if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.1")
+  # net-smtp, net-imap and net-pop were removed from default gems in Ruby 3.1
+  gem "net-smtp", "~> 0.2.1", require: false
+  gem "net-imap", "~> 0.2.1", require: false
+  gem "net-pop", "~> 0.1.1", require: false
+  gem "digest", "3.0.0", require: false
+end
+
 # Gems used only for assets and not required in production environments by default.
 # Allow everywhere for now cause we are allowing asset debugging in production
 group :assets do
@@ -152,7 +156,6 @@ end
 
 group :test, :development do
   gem 'rspec'
-  gem 'mock_redis'
   gem 'listen', require: false
   gem 'certified', require: false
   gem 'fabrication', require: false
diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
index e9964e0340c4e..4e832c8abdb19 100644
--- a/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
+++ b/pkgs/servers/web-apps/discourse/rubyEnv/Gemfile.lock
@@ -8,22 +8,22 @@ GIT
 GEM
   remote: https://rubygems.org/
   specs:
-    actionmailer (6.1.4.1)
-      actionpack (= 6.1.4.1)
-      actionview (= 6.1.4.1)
-      activejob (= 6.1.4.1)
-      activesupport (= 6.1.4.1)
+    actionmailer (6.1.4.7)
+      actionpack (= 6.1.4.7)
+      actionview (= 6.1.4.7)
+      activejob (= 6.1.4.7)
+      activesupport (= 6.1.4.7)
       mail (~> 2.5, >= 2.5.4)
       rails-dom-testing (~> 2.0)
-    actionpack (6.1.4.1)
-      actionview (= 6.1.4.1)
-      activesupport (= 6.1.4.1)
+    actionpack (6.1.4.7)
+      actionview (= 6.1.4.7)
+      activesupport (= 6.1.4.7)
       rack (~> 2.0, >= 2.0.9)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.2.0)
-    actionview (6.1.4.1)
-      activesupport (= 6.1.4.1)
+    actionview (6.1.4.7)
+      activesupport (= 6.1.4.7)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
@@ -32,15 +32,15 @@ GEM
       actionview (>= 6.0.a)
     active_model_serializers (0.8.4)
       activemodel (>= 3.0)
-    activejob (6.1.4.1)
-      activesupport (= 6.1.4.1)
+    activejob (6.1.4.7)
+      activesupport (= 6.1.4.7)
       globalid (>= 0.3.6)
-    activemodel (6.1.4.1)
-      activesupport (= 6.1.4.1)
-    activerecord (6.1.4.1)
-      activemodel (= 6.1.4.1)
-      activesupport (= 6.1.4.1)
-    activesupport (6.1.4.1)
+    activemodel (6.1.4.7)
+      activesupport (= 6.1.4.7)
+    activerecord (6.1.4.7)
+      activemodel (= 6.1.4.7)
+      activesupport (= 6.1.4.7)
+    activesupport (6.1.4.7)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
@@ -48,8 +48,8 @@ GEM
       zeitwerk (~> 2.3)
     addressable (2.8.0)
       public_suffix (>= 2.0.2, < 5.0)
-    annotate (3.1.1)
-      activerecord (>= 3.2, < 7.0)
+    annotate (3.2.0)
+      activerecord (>= 3.2, < 8.0)
       rake (>= 10.4, < 14.0)
     ast (2.4.2)
     aws-eventstream (1.2.0)
@@ -80,8 +80,8 @@ GEM
       rack (>= 0.9.0)
     binding_of_caller (1.0.0)
       debug_inspector (>= 0.0.1)
-    bootsnap (1.9.4)
-      msgpack (~> 1.0)
+    bootsnap (1.11.1)
+      msgpack (~> 1.2)
     builder (3.2.4)
     bullet (7.0.1)
       activesupport (>= 3.0.0)
@@ -92,12 +92,12 @@ GEM
     chunky_png (1.4.0)
     coderay (1.1.3)
     colored2 (3.1.2)
-    concurrent-ruby (1.1.9)
+    concurrent-ruby (1.1.10)
     connection_pool (2.2.5)
     cose (1.2.0)
       cbor (~> 0.5.9)
       openssl-signature_algorithm (~> 1.0)
-    cppjieba_rb (0.3.3)
+    cppjieba_rb (0.4.2)
     crack (0.4.5)
       rexml
     crass (1.0.6)
@@ -129,14 +129,14 @@ GEM
       sprockets (>= 3.3, < 4.1)
     ember-source (2.18.2)
     erubi (1.10.0)
-    excon (0.89.0)
+    excon (0.92.2)
     execjs (2.8.1)
     exifr (1.3.9)
-    fabrication (2.24.0)
-    faker (2.19.0)
-      i18n (>= 1.6, < 2)
+    fabrication (2.28.0)
+    faker (2.20.0)
+      i18n (>= 1.8.11, < 2)
     fakeweb (1.3.0)
-    faraday (1.9.3)
+    faraday (1.10.0)
       faraday-em_http (~> 1.0)
       faraday-em_synchrony (~> 1.0)
       faraday-excon (~> 1.1)
@@ -175,7 +175,7 @@ GEM
     hkdf (0.3.0)
     htmlentities (4.3.4)
     http_accept_language (2.1.1)
-    i18n (1.8.11)
+    i18n (1.10.0)
       concurrent-ruby (~> 1.0)
     image_optim (0.31.1)
       exifr (~> 1.2, >= 1.2.2)
@@ -184,9 +184,9 @@ GEM
       in_threads (~> 1.3)
       progress (~> 3.0, >= 3.0.1)
     image_size (3.0.1)
-    in_threads (1.5.4)
-    ipaddr (1.2.3)
-    jmespath (1.5.0)
+    in_threads (1.6.0)
+    ipaddr (1.2.4)
+    jmespath (1.6.1)
     jquery-rails (4.4.0)
       rails-dom-testing (>= 1, < 3)
       railties (>= 4.2.0)
@@ -194,7 +194,7 @@ GEM
     json (2.6.1)
     json-schema (2.8.1)
       addressable (>= 2.4)
-    json_schemer (0.2.18)
+    json_schemer (0.2.20)
       ecma-re-validator (~> 0.3)
       hana (~> 1.3)
       regexp_parser (~> 2.0)
@@ -206,7 +206,7 @@ GEM
       rb-fsevent (~> 0.10, >= 0.10.3)
       rb-inotify (~> 0.9, >= 0.9.10)
     literate_randomizer (0.4.0)
-    lograge (0.11.2)
+    lograge (0.12.0)
       actionpack (>= 4)
       activesupport (>= 4)
       railties (>= 4)
@@ -214,38 +214,36 @@ GEM
     logstash-event (1.2.02)
     logstash-logger (0.26.1)
       logstash-event (~> 1.2)
-    logster (2.10.1)
-    loofah (2.13.0)
+    logster (2.11.0)
+    loofah (2.16.0)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     lru_redux (1.1.0)
     lz4-ruby (0.3.3)
     maxminddb (0.1.22)
     memory_profiler (1.0.0)
-    message_bus (4.0.0)
+    message_bus (4.2.0)
       rack (>= 1.1.3)
     method_source (1.0.0)
     mini_mime (1.1.2)
-    mini_portile2 (2.6.1)
-    mini_racer (0.6.1)
+    mini_portile2 (2.8.0)
+    mini_racer (0.6.2)
       libv8-node (~> 16.10.0.0)
     mini_scheduler (0.13.0)
       sidekiq (>= 4.2.3)
-    mini_sql (1.1.3)
+    mini_sql (1.4.0)
     mini_suffix (0.3.3)
       ffi (~> 1.9)
     minitest (5.15.0)
     mocha (1.13.0)
-    mock_redis (0.29.0)
-      ruby2_keywords
-    msgpack (1.4.2)
+    msgpack (1.5.1)
     multi_json (1.15.0)
     multi_xml (0.6.0)
     multipart-post (2.1.1)
     mustache (1.1.1)
     nio4r (2.5.8)
-    nokogiri (1.12.5)
-      mini_portile2 (~> 2.6.1)
+    nokogiri (1.13.4)
+      mini_portile2 (~> 2.8.0)
       racc (~> 1.4)
     oauth (0.5.8)
     oauth2 (1.4.7)
@@ -254,7 +252,7 @@ GEM
       multi_json (~> 1.3)
       multi_xml (~> 0.5)
       rack (>= 1.2, < 3)
-    oj (3.13.2)
+    oj (3.13.11)
     omniauth (1.9.1)
       hashie (>= 3.4.6)
       rack (>= 1.6.2, < 3)
@@ -282,12 +280,12 @@ GEM
     openssl-signature_algorithm (1.1.1)
       openssl (~> 2.0)
     optimist (3.0.1)
-    parallel (1.21.0)
-    parallel_tests (3.7.3)
+    parallel (1.22.1)
+    parallel_tests (3.8.1)
       parallel
-    parser (3.1.0.0)
+    parser (3.1.2.0)
       ast (~> 2.4.1)
-    pg (1.2.3)
+    pg (1.3.5)
     progress (3.6.0)
     pry (0.13.1)
       coderay (~> 1.1)
@@ -297,15 +295,15 @@ GEM
       pry (~> 0.13.0)
     pry-rails (0.3.9)
       pry (>= 0.10.4)
-    public_suffix (4.0.6)
-    puma (5.5.2)
+    public_suffix (4.0.7)
+    puma (5.6.4)
       nio4r (~> 2.0)
     r2 (0.2.7)
     racc (1.6.0)
     rack (2.2.3)
-    rack-mini-profiler (2.3.3)
+    rack-mini-profiler (3.0.0)
       rack (>= 1.2.0)
-    rack-protection (2.1.0)
+    rack-protection (2.2.0)
       rack
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
@@ -314,23 +312,23 @@ GEM
       nokogiri (>= 1.6)
     rails-html-sanitizer (1.4.2)
       loofah (~> 2.3)
-    rails_failover (0.7.3)
-      activerecord (~> 6.0)
+    rails_failover (0.8.1)
+      activerecord (> 6.0, < 7.1)
       concurrent-ruby
-      railties (~> 6.0)
-    rails_multisite (4.0.0)
-      activerecord (> 5.0, < 7)
-      railties (> 5.0, < 7)
-    railties (6.1.4.1)
-      actionpack (= 6.1.4.1)
-      activesupport (= 6.1.4.1)
+      railties (> 6.0, < 7.1)
+    rails_multisite (4.0.1)
+      activerecord (> 5.0, < 7.1)
+      railties (> 5.0, < 7.1)
+    railties (6.1.4.7)
+      actionpack (= 6.1.4.7)
+      activesupport (= 6.1.4.7)
       method_source
       rake (>= 0.13)
       thor (~> 1.0)
     rainbow (3.1.1)
     raindrops (0.20.0)
     rake (13.0.6)
-    rb-fsevent (0.11.0)
+    rb-fsevent (0.11.1)
     rb-inotify (0.10.1)
       ffi (~> 1.0)
     rbtrace (0.4.14)
@@ -339,34 +337,34 @@ GEM
       optimist (>= 3.0.0)
     rchardet (1.8.0)
     redis (4.5.1)
-    redis-namespace (1.8.1)
+    redis-namespace (1.8.2)
       redis (>= 3.0.4)
-    regexp_parser (2.2.0)
-    request_store (1.5.0)
+    regexp_parser (2.3.0)
+    request_store (1.5.1)
       rack (>= 1.4)
     rexml (3.2.5)
     rinku (2.0.6)
     rotp (6.2.0)
-    rqrcode (2.1.0)
+    rqrcode (2.1.1)
       chunky_png (~> 1.0)
       rqrcode_core (~> 1.0)
     rqrcode_core (1.2.0)
-    rspec (3.10.0)
-      rspec-core (~> 3.10.0)
-      rspec-expectations (~> 3.10.0)
-      rspec-mocks (~> 3.10.0)
-    rspec-core (3.10.1)
-      rspec-support (~> 3.10.0)
-    rspec-expectations (3.10.2)
+    rspec (3.11.0)
+      rspec-core (~> 3.11.0)
+      rspec-expectations (~> 3.11.0)
+      rspec-mocks (~> 3.11.0)
+    rspec-core (3.11.0)
+      rspec-support (~> 3.11.0)
+    rspec-expectations (3.11.0)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.10.0)
+      rspec-support (~> 3.11.0)
     rspec-html-matchers (0.9.4)
       nokogiri (~> 1)
       rspec (>= 3.0.0.a, < 4)
-    rspec-mocks (3.10.2)
+    rspec-mocks (3.11.1)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.10.0)
-    rspec-rails (5.0.2)
+      rspec-support (~> 3.11.0)
+    rspec-rails (5.1.1)
       actionpack (>= 5.2)
       activesupport (>= 5.2)
       railties (>= 5.2)
@@ -374,29 +372,29 @@ GEM
       rspec-expectations (~> 3.10)
       rspec-mocks (~> 3.10)
       rspec-support (~> 3.10)
-    rspec-support (3.10.3)
+    rspec-support (3.11.0)
     rss (0.2.9)
       rexml
-    rswag-specs (2.4.0)
-      activesupport (>= 3.1, < 7.0)
+    rswag-specs (2.5.1)
+      activesupport (>= 3.1, < 7.1)
       json-schema (~> 2.2)
-      railties (>= 3.1, < 7.0)
+      railties (>= 3.1, < 7.1)
     rtlit (0.0.5)
-    rubocop (1.25.0)
+    rubocop (1.27.0)
       parallel (~> 1.10)
       parser (>= 3.1.0.0)
       rainbow (>= 2.2.2, < 4.0)
       regexp_parser (>= 1.8, < 3.0)
       rexml
-      rubocop-ast (>= 1.15.1, < 2.0)
+      rubocop-ast (>= 1.16.0, < 2.0)
       ruby-progressbar (~> 1.7)
       unicode-display_width (>= 1.4.0, < 3.0)
-    rubocop-ast (1.15.1)
-      parser (>= 3.0.1.1)
+    rubocop-ast (1.17.0)
+      parser (>= 3.1.1.0)
     rubocop-discourse (2.5.0)
       rubocop (>= 1.1.0)
       rubocop-rspec (>= 2.0.0)
-    rubocop-rspec (2.7.0)
+    rubocop-rspec (2.9.0)
       rubocop (~> 1.19)
     ruby-prof (1.4.3)
     ruby-progressbar (1.11.0)
@@ -422,7 +420,7 @@ GEM
       activesupport (>= 3.1)
     shoulda-matchers (5.1.0)
       activesupport (>= 5.2.0)
-    sidekiq (6.3.1)
+    sidekiq (6.4.1)
       connection_pool (>= 2.2.2)
       rack (~> 2.0)
       redis (>= 4.2.0)
@@ -431,8 +429,8 @@ GEM
       simplecov-html (~> 0.11)
       simplecov_json_formatter (~> 0.1)
     simplecov-html (0.12.3)
-    simplecov_json_formatter (0.1.3)
-    sprockets (3.7.2)
+    simplecov_json_formatter (0.1.4)
+    sprockets (4.0.3)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
     sprockets-rails (3.4.2)
@@ -440,8 +438,8 @@ GEM
       activesupport (>= 5.2)
       sprockets (>= 3.0.0)
     sshkey (2.0.0)
-    stackprof (0.2.17)
-    test-prof (1.0.7)
+    stackprof (0.2.19)
+    test-prof (1.0.8)
     thor (1.2.1)
     tilt (2.0.10)
     tzinfo (2.0.4)
@@ -450,12 +448,12 @@ GEM
       execjs (>= 0.3.0, < 3)
     unf (0.1.4)
       unf_ext
-    unf_ext (0.0.8)
+    unf_ext (0.0.8.1)
     unicode-display_width (2.1.0)
     unicorn (6.1.0)
       kgio (~> 2.6)
       raindrops (~> 0.7)
-    uniform_notifier (1.14.2)
+    uniform_notifier (1.16.0)
     uri_template (0.7.0)
     webmock (3.14.0)
       addressable (>= 2.8.0)
@@ -466,20 +464,20 @@ GEM
       jwt (~> 2.0)
     xorcist (1.1.2)
     yaml-lint (0.0.10)
-    zeitwerk (2.5.3)
+    zeitwerk (2.5.4)
 
 PLATFORMS
   ruby
 
 DEPENDENCIES
-  actionmailer (= 6.1.4.1)
-  actionpack (= 6.1.4.1)
-  actionview (= 6.1.4.1)
+  actionmailer (= 6.1.4.7)
+  actionpack (= 6.1.4.7)
+  actionview (= 6.1.4.7)
   actionview_precompiler
   active_model_serializers (~> 0.8.3)
-  activemodel (= 6.1.4.1)
-  activerecord (= 6.1.4.1)
-  activesupport (= 6.1.4.1)
+  activemodel (= 6.1.4.7)
+  activerecord (= 6.1.4.7)
+  activesupport (= 6.1.4.7)
   addressable
   annotate
   aws-sdk-s3
@@ -537,11 +535,10 @@ DEPENDENCIES
   mini_suffix
   minitest
   mocha
-  mock_redis
   multi_json
   mustache
   nokogiri
-  oj (= 3.13.2)
+  oj
   omniauth
   omniauth-facebook
   omniauth-github
@@ -559,7 +556,7 @@ DEPENDENCIES
   rack-protection
   rails_failover
   rails_multisite
-  railties (= 6.1.4.1)
+  railties (= 6.1.4.7)
   rake
   rb-fsevent
   rbtrace
@@ -586,7 +583,7 @@ DEPENDENCIES
   shoulda-matchers
   sidekiq
   simplecov
-  sprockets (= 3.7.2)
+  sprockets
   sprockets-rails
   sshkey
   stackprof
@@ -601,4 +598,4 @@ DEPENDENCIES
   yaml-lint
 
 BUNDLED WITH
-   2.3.4
+   2.3.9
diff --git a/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix b/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix
index 9b5fbfca4a854..84f4c37dfb22c 100644
--- a/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix
+++ b/pkgs/servers/web-apps/discourse/rubyEnv/gemset.nix
@@ -5,10 +5,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "00s07l2ac5igch1g2rpa0linmiq7mhgk6v6wxkckg8gbiqijb592";
+      sha256 = "0rjm6rx3qbqgxczy2a8l6hff72166hsf878fy2v1ik4pp8rh9cxa";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   actionpack = {
     dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
@@ -16,10 +16,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0xgysqnibjsy6kdz10x2xb3kwa6lssiqhh0zggrbgs31ypwhlpia";
+      sha256 = "0cr02mj9wic0xbdrhjipk58cdljsfl4mplhqr9whn3l5qg8x5814";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   actionview = {
     dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
@@ -27,10 +27,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1yf4ic5kl324rs0raralpwx24s6hvvdzxfhinafylf8f3x7jj23z";
+      sha256 = "02x8cxq2bhgj5r9vpdjz8a56awg22gqvnqn01dqwyx8ny6sirzac";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   actionview_precompiler = {
     dependencies = ["actionview"];
@@ -60,10 +60,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1q7c0i0kwarxgcbxk71wa9jnlg45grbxmhlrh7dk9bgcv7r7r7hn";
+      sha256 = "1g8dpxjzj7k3sjfjhfia21bwzmgc721lafpk2napravmq1qi0rkj";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   activemodel = {
     dependencies = ["activesupport"];
@@ -71,10 +71,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "16ixam4lni8b5lgx0whnax0imzh1dh10fy5r9pxs52n83yz5nbq3";
+      sha256 = "01mzgr5pdxcki023p96bj77by1iblv9bq6pwmbly931bjwhr5irv";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   activerecord = {
     dependencies = ["activemodel" "activesupport"];
@@ -82,10 +82,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ccgvlj767ybps3pxlaa4iw77n7wbriw2sr8754id3ngjfap08ja";
+      sha256 = "1idirwh7dzhzcjsssnghqyjl87inh84za0cmrf8g323p9qsx879l";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   activesupport = {
     dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo" "zeitwerk"];
@@ -93,10 +93,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "19gx1jcq46x9d1pi1w8xq0bgvvfw239y4lalr8asm291gj3q3ds4";
+      sha256 = "04j9cgv729mcz2jwr312nr5aswv07s6kjynmf59w61j395dfcvw9";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   addressable = {
     dependencies = ["public_suffix"];
@@ -111,14 +111,14 @@
   };
   annotate = {
     dependencies = ["activerecord" "rake"];
-    groups = ["development"];
+    groups = ["development" "test"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1dxrfppwfg13vqmambbs56xjj8qsdgcy58r2yc44vvy3z1g5yflw";
+      sha256 = "1lw0fxb5mirsdp3bp20gjyvs7clvi19jbxnrm2ihm20kzfhvlqcs";
       type = "gem";
     };
-    version = "3.1.1";
+    version = "3.2.0";
   };
   ast = {
     groups = ["default" "development" "test"];
@@ -252,10 +252,10 @@
     }];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "19i4x2nascd74ahcvmrsnf03cygh1y4c9yf8rcv91fv0mcxpvb9n";
+      sha256 = "0bjhh8pngmvnrsri2h6a753pgv0xdkbbgi1bmv6c7q137sp37jbg";
       type = "gem";
     };
-    version = "1.9.4";
+    version = "1.11.1";
   };
   builder = {
     groups = ["default" "development" "test"];
@@ -351,10 +351,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
+      sha256 = "0s4fpn3mqiizpmpy2a24k4v365pv75y50292r8ajrv4i1p5b2k14";
       type = "gem";
     };
-    version = "1.1.9";
+    version = "1.1.10";
   };
   connection_pool = {
     groups = ["default"];
@@ -382,10 +382,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1sslff7yy8jvp4rcn1b6jn9v0d3iibb68i79shgd94rs2yq8k117";
+      sha256 = "0ijzvnm5jclyhf6ls30kv7dqy05f3hbha69f59jwbzdid7dndla5";
       type = "gem";
     };
-    version = "0.3.3";
+    version = "0.4.2";
   };
   crack = {
     dependencies = ["rexml"];
@@ -573,10 +573,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0153rr745g48h48vaplgmx7xkfjbc79acpq5jsl7agdrk4yf75ih";
+      sha256 = "01pcl1vx60x3f28rs6iw1lgqxycgb2yxq2p45k7b4a8liadykhba";
       type = "gem";
     };
-    version = "0.89.0";
+    version = "0.92.2";
   };
   execjs = {
     groups = ["assets" "default"];
@@ -603,10 +603,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "09b6gyqf76iflxh9v69k59xhxmrx1akdp2mbg8k8nb5rxy0sz0v6";
+      sha256 = "0rgbmk044akxa84z9vdl8lkmd9z4xy3na1w0vh12pz02drxd93j9";
       type = "gem";
     };
-    version = "2.24.0";
+    version = "2.28.0";
   };
   faker = {
     dependencies = ["i18n"];
@@ -614,10 +614,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0hb9wfxyb4ss2vl2mrj1zgdk7dh4yaxghq22gbx62yxj5yb9w4zw";
+      sha256 = "1694ndj701a8q4c4bwxz53kx94ih1rr4pgr4gk7a6c8k4jsbjgwi";
       type = "gem";
     };
-    version = "2.19.0";
+    version = "2.20.0";
   };
   fakeweb = {
     groups = ["test"];
@@ -635,10 +635,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0y32gj994ll3zlcqjmwp78r7s03iiwayij6fz2pjpkfywgvp71s6";
+      sha256 = "00palwawk897p5gypw5wjrh93d4p0xz2yl9w93yicb4kq7amh8d4";
       type = "gem";
     };
-    version = "1.9.3";
+    version = "1.10.0";
   };
   faraday-em_http = {
     groups = ["default"];
@@ -918,10 +918,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0vdd1kii40qhbr9n8qx71k2gskq6rkl8ygy8hw5hfj8bb5a364xf";
+      sha256 = "0b2qyvnk4yynlg17ymkq4g5xgr275637fhl1mjh0valw3cb1fhhg";
       type = "gem";
     };
-    version = "1.8.11";
+    version = "1.10.0";
   };
   image_optim = {
     dependencies = ["exifr" "fspath" "image_size" "in_threads" "progress"];
@@ -949,30 +949,30 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0m71806p1gm4kxiz4gvkyr8qip16hifn2kdf926jz44jj6kc6bbs";
+      sha256 = "0j9132d4g8prjafgdh4pw948j527kr09m2lvylrcd797il9yd9wi";
       type = "gem";
     };
-    version = "1.5.4";
+    version = "1.6.0";
   };
   ipaddr = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0s2cipiyhm1r8igc1n43py5p5r3rdz8lvagaa61jrm62prn7v5b2";
+      sha256 = "13qd34nzpgp3fxfjbvaqg3dcnfr0cgl5vjvcqy0hfllbvfcklnbq";
       type = "gem";
     };
-    version = "1.2.3";
+    version = "1.2.4";
   };
   jmespath = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ylph158dc3ql6cvkik00ab6gf2k1rv2dii63m196xclhkzwfyan";
+      sha256 = "1mnvb80cdg7fzdcs3xscv21p28w4igk5sj5m7m81xp8v2ks87jj0";
       type = "gem";
     };
-    version = "1.5.0";
+    version = "1.6.1";
   };
   jquery-rails = {
     dependencies = ["rails-dom-testing" "railties" "thor"];
@@ -1012,10 +1012,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1rkb7gz819g82n3xshb5g8kgv1nvgwg1lm2fk7715pggzcgc4qik";
+      sha256 = "1ahcnfw3lchyyq7ixjfghkw709fbm8mkqsqq9yhd9in3bhzywa88";
       type = "gem";
     };
-    version = "0.2.18";
+    version = "0.2.20";
   };
   jwt = {
     groups = ["default"];
@@ -1080,10 +1080,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1vrjm4yqn5l6q5gsl72fmk95fl6j9z1a05gzbrwmsm3gp1a1bgac";
+      sha256 = "15pjm9pa5m3mbv9xvfgfr16q4jyaznsg8y63jz9x4jqr8npw0vx3";
       type = "gem";
     };
-    version = "0.11.2";
+    version = "0.12.0";
   };
   logstash-event = {
     groups = ["default"];
@@ -1111,10 +1111,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "09l4rdq5gsnhr7ma7i5ddg8sagkqn122kz8cb244q4hyk9rwmd2w";
+      sha256 = "0mamk8hgdhjcd33jf1w3j2kayvpyyscysvnmbhq3mw5kjji89cam";
       type = "gem";
     };
-    version = "2.10.1";
+    version = "2.11.0";
   };
   loofah = {
     dependencies = ["crass" "nokogiri"];
@@ -1122,10 +1122,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "17rvbrqcci1579d7dpbsfmz1f9g7msk82lyh9ip5h29dkrnixcgg";
+      sha256 = "15s6z5bvhdhnqv4wg8zcz3mhbc7i4dbqskv5jvhprz33ak7682km";
       type = "gem";
     };
-    version = "2.13.0";
+    version = "2.16.0";
   };
   lru_redux = {
     groups = ["default"];
@@ -1196,10 +1196,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0589k3ggj6s970mr2jaz8zfcnl5b926birwi6s3b6j3ijf2nh3s3";
+      sha256 = "15gazkvbqffh57if68j2p81pm52ww7j9wibbqpq8xp7c3gxqahgq";
       type = "gem";
     };
-    version = "4.0.0";
+    version = "4.2.0";
   };
   method_source = {
     groups = ["default" "development" "test"];
@@ -1226,10 +1226,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
+      sha256 = "0rapl1sfmfi3bfr68da4ca16yhc0pp93vjwkj7y3rdqrzy3b41hy";
       type = "gem";
     };
-    version = "2.6.1";
+    version = "2.8.0";
   };
   mini_racer = {
     dependencies = ["libv8-node"];
@@ -1237,10 +1237,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1j45mg8fs7i0g6ndbzd9qqs3fhq6wpvlp5s95k6mjn1as71l5l55";
+      sha256 = "0jf9qjz3r06asz14b6f3z7f2y437a1viqfp52sdi71ipj7dk70bs";
       type = "gem";
     };
-    version = "0.6.1";
+    version = "0.6.2";
   };
   mini_scheduler = {
     dependencies = ["sidekiq"];
@@ -1258,10 +1258,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1yvln5wx2jfpd9q2pvjdid96vdz1ynnfk8ip913wpx28wp8ww7jn";
+      sha256 = "1dgwyyya821sfj4f92sljsxmmnak2yrzsbckvy82001zgq1n3b41";
       type = "gem";
     };
-    version = "1.1.3";
+    version = "1.4.0";
   };
   mini_suffix = {
     dependencies = ["ffi"];
@@ -1294,17 +1294,6 @@
     };
     version = "1.13.0";
   };
-  mock_redis = {
-    dependencies = ["ruby2_keywords"];
-    groups = ["development" "test"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "10jj7hralc2hmvvm77w71d4dwq9ij5a1lkqyfw6z32saybzmcs99";
-      type = "gem";
-    };
-    version = "0.29.0";
-  };
   msgpack = {
     groups = ["default"];
     platforms = [{
@@ -1314,10 +1303,10 @@
     }];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6";
+      sha256 = "1i0gbypr1yxwfkaxzrk0i1wz4n6v3mw7z24k65jy3q1h5lda5xbw";
       type = "gem";
     };
-    version = "1.4.2";
+    version = "1.5.1";
   };
   multi_json = {
     groups = ["default"];
@@ -1375,10 +1364,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1v02g7k7cxiwdcahvlxrmizn3avj2q6nsjccgilq1idc89cr081b";
+      sha256 = "1g43ii497cwdqhfnaxfl500bq5yfc5hfv5df1lvf6wcjnd708ihd";
       type = "gem";
     };
-    version = "1.12.5";
+    version = "1.13.4";
   };
   oauth = {
     groups = ["default"];
@@ -1406,10 +1395,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1fh73xl58n696akgarylfdfmv6l93rfwh3csjjbljr6gvhg4qrz9";
+      sha256 = "0bm8sdh7vz7ss3y21v961rd8nww23w5g4yhgvnd7jk331kdjyyzl";
       type = "gem";
     };
-    version = "3.13.2";
+    version = "3.13.11";
   };
   omniauth = {
     dependencies = ["hashie" "rack"];
@@ -1529,10 +1518,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1hkfpm78c2vs1qblnva3k1grijvxh87iixcnyd83s3lxrxsjvag4";
+      sha256 = "07vnk6bb54k4yc06xnwck7php50l09vvlw1ga8wdz0pia461zpzb";
       type = "gem";
     };
-    version = "1.21.0";
+    version = "1.22.1";
   };
   parallel_tests = {
     dependencies = ["parallel"];
@@ -1540,10 +1529,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1vsfsfd194xnzjz94ml157w61fnag8jg47b4bssc508kb3vmk20w";
+      sha256 = "01kzjshbim0w5ax7vcjfxvb83x2pglws7qr43x0qkd731f8w10f7";
       type = "gem";
     };
-    version = "3.7.3";
+    version = "3.8.1";
   };
   parser = {
     dependencies = ["ast"];
@@ -1551,20 +1540,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "08q20ckhn58m49lccf93p0yv7pkc7hymmcz3di762kb658d5fd38";
+      sha256 = "0xhfghgidj8cbdnqp01f7kvnrv1f60izpkd9dhxsvpdzkfsdg97d";
       type = "gem";
     };
-    version = "3.1.0.0";
+    version = "3.1.2.0";
   };
   pg = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "13mfrysrdrh8cka1d96zm0lnfs59i5x2g6ps49r2kz5p3q81xrzj";
+      sha256 = "10ryzmc3r5ja6g90a9ycsxcxsy5872xa1vf01jam0bm74zq3zmi6";
       type = "gem";
     };
-    version = "1.2.3";
+    version = "1.3.5";
   };
   progress = {
     groups = ["default"];
@@ -1614,10 +1603,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
+      sha256 = "1f3knlwfwm05sfbaihrxm4g772b79032q14c16q4b38z8bi63qcb";
       type = "gem";
     };
-    version = "4.0.6";
+    version = "4.0.7";
   };
   puma = {
     dependencies = ["nio4r"];
@@ -1625,10 +1614,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xblxnrs0c5m326v7kgr32k4m00cl2ipcf5m0qvyisrw62vd5dbn";
+      sha256 = "0dgr2rybayih2naz3658mbzqwfrg9fxl80zsvhscf6b972kp3jdw";
       type = "gem";
     };
-    version = "5.5.2";
+    version = "5.6.4";
   };
   r2 = {
     groups = ["default"];
@@ -1670,10 +1659,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "03hcvjw9nrv0w6yjy2zkv4ivin9xg2wr7xfcvx7rc2msv1gmjb6z";
+      sha256 = "121fqk18x1bd52c2bkz8wkvv9nkgpqphj5aycnb7lkf67jkwic0h";
       type = "gem";
     };
-    version = "2.3.3";
+    version = "3.0.0";
   };
   rack-protection = {
     dependencies = ["rack"];
@@ -1681,10 +1670,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "159a4j4kragqh0z0z8vrpilpmaisnlz3n7kgiyf16bxkwlb3qlhz";
+      sha256 = "1hz6h6d67r217qi202qmxq2xkn3643ay3iybhl3dq3qd6j8nm3b2";
       type = "gem";
     };
-    version = "2.1.0";
+    version = "2.2.0";
   };
   rack-test = {
     dependencies = ["rack"];
@@ -1725,10 +1714,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0g3snqmsbdl2jyf2h7q4ds333hizp0j89chca75xv10gv2lq6sa8";
+      sha256 = "145m778yylgrjl2q7zfkq35l5sibyynlx6pyp176ifm146gbf9wf";
       type = "gem";
     };
-    version = "0.7.3";
+    version = "0.8.1";
   };
   rails_multisite = {
     dependencies = ["activerecord" "railties"];
@@ -1736,10 +1725,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1j44n1c19gbskzxskdipr5f6lgglpn398x9kcbpw452wwwav8rmf";
+      sha256 = "08fa5yq73ws536nhzd55bjx4gfvh6986zvw33rkg6ql6i8rga68y";
       type = "gem";
     };
-    version = "4.0.0";
+    version = "4.0.1";
   };
   railties = {
     dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
@@ -1747,10 +1736,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1kwpm068cqys34p2g0j3l1g0cd5f3kxnsay5v7lmbd0sgarac0vy";
+      sha256 = "0g6hvhvqdmgabcpmdiby4b77ni3rsgd5p7sd1qkqj34r4an0ldyd";
       type = "gem";
     };
-    version = "6.1.4.1";
+    version = "6.1.4.7";
   };
   rainbow = {
     groups = ["default" "development" "test"];
@@ -1793,10 +1782,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1qsx9c4jr11vr3a9s5j83avczx9qn9rjaf32gxpc2v451hvbc0is";
+      sha256 = "06c50pvxib7wqnv6q0f3n7gzfcrp5chi3sa48hxpkfxc3hhy11fm";
       type = "gem";
     };
-    version = "0.11.0";
+    version = "0.11.1";
   };
   rb-inotify = {
     dependencies = ["ffi"];
@@ -1850,20 +1839,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0k65fr7f8ciq7d9nwc5ziw1d32zsxilgmqdlj3359rz5jgb0f5y8";
+      sha256 = "0ndj4lcm8rw01078zr0249grsk93zbda8qsibdvlx69b5ijg1rzf";
       type = "gem";
     };
-    version = "1.8.1";
+    version = "1.8.2";
   };
   regexp_parser = {
     groups = ["default" "development" "test"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "008yn8j44414qxhn1c0nxp4a70rq0bqhz70hnjpgx8cjh2g0makp";
+      sha256 = "0a6nxfq3ln1i109jx172n33s73a90l8g04h8p56bmw9phj467h9k";
       type = "gem";
     };
-    version = "2.2.0";
+    version = "2.3.0";
   };
   request_store = {
     dependencies = ["rack"];
@@ -1871,10 +1860,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0cx74kispmnw3ljwb239j65a2j14n8jlsygy372hrsa8mxc71hxi";
+      sha256 = "13ppgmsbrqah08j06bybd3cddv6dml79yzyjn7r8j1src78h98h7";
       type = "gem";
     };
-    version = "1.5.0";
+    version = "1.5.1";
   };
   rexml = {
     groups = ["default" "development" "test"];
@@ -1912,10 +1901,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0444sgvx3ahvgr3c9swpy32kcdpciwgcqahp3pb4m7d23xp1qjdc";
+      sha256 = "10sq4aknch9rzpy8af77rqxk8rr59d33slg1kwg9h7fw9f1spmjn";
       type = "gem";
     };
-    version = "2.1.0";
+    version = "2.1.1";
   };
   rqrcode_core = {
     groups = ["default"];
@@ -1933,10 +1922,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1dwai7jnwmdmd7ajbi2q0k0lx1dh88knv5wl7c34wjmf94yv8w5q";
+      sha256 = "19dyb6rcvgi9j2mksd29wfdhfdyzqk7yjhy1ai77559hbhpg61w9";
       type = "gem";
     };
-    version = "3.10.0";
+    version = "3.11.0";
   };
   rspec-core = {
     dependencies = ["rspec-support"];
@@ -1944,10 +1933,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0wwnfhxxvrlxlk1a3yxlb82k2f9lm0yn0598x7lk8fksaz4vv6mc";
+      sha256 = "118hkfw9b11hvvalr7qlylwal5h8dihagm9xg7k4gskg7587hca6";
       type = "gem";
     };
-    version = "3.10.1";
+    version = "3.11.0";
   };
   rspec-expectations = {
     dependencies = ["diff-lcs" "rspec-support"];
@@ -1955,10 +1944,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1qrj2j9jcd3m4aksk4kbv439882yl3z1harv2jrybrgjgdzdz7zs";
+      sha256 = "001ihayil7jpfxdlxlhakvz02kx0nk5m1w0bz6z8izdx0nc8bh53";
       type = "gem";
     };
-    version = "3.10.2";
+    version = "3.11.0";
   };
   rspec-html-matchers = {
     dependencies = ["nokogiri" "rspec"];
@@ -1977,10 +1966,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1d13g6kipqqc9lmwz5b244pdwc97z15vcbnbq6n9rlf32bipdz4k";
+      sha256 = "07vagjxdm5a6s103y8zkcnja6avpl8r196hrpiffmg7sk83dqdsm";
       type = "gem";
     };
-    version = "3.10.2";
+    version = "3.11.1";
   };
   rspec-rails = {
     dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
@@ -1988,20 +1977,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "152yz205p8zi5nxxhs8z581rjdvvqsfjndklkvn11f2vi50nv7n9";
+      sha256 = "0jj5zs9h2ll8iz699ac4bysih7y4csnf8h5h80bm6ppbf02ly8fa";
       type = "gem";
     };
-    version = "5.0.2";
+    version = "5.1.1";
   };
   rspec-support = {
     groups = ["default" "development" "test"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0pjckrh8q6sqxy38xw7f4ziylq1983k84xh927s6352pps68zj35";
+      sha256 = "0xfk4pla77251n39zf4n792m1rhg5sn1kp63yvpvvysany34la03";
       type = "gem";
     };
-    version = "3.10.3";
+    version = "3.11.0";
   };
   rss = {
     dependencies = ["rexml"];
@@ -2020,10 +2009,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1dma3j5vfjhyclg8y0gsp44vs4wn9chf4jgfhc9r6ws018xrbxzd";
+      sha256 = "00gm5qbf56shi655hwxzas74avsfv8b91v6i8v06i4jdw8y4qky2";
       type = "gem";
     };
-    version = "2.4.0";
+    version = "2.5.1";
   };
   rtlit = {
     groups = ["assets"];
@@ -2041,10 +2030,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "141ff5mdqi8an8q00qw8kchzil7ck2dzalkk3vk176l0s6hljcbj";
+      sha256 = "00d9nzlnbxr3jqkya2b2rcahs9l22qpdk5qf3y7pws8m555l8slk";
       type = "gem";
     };
-    version = "1.25.0";
+    version = "1.27.0";
   };
   rubocop-ast = {
     dependencies = ["parser"];
@@ -2052,10 +2041,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xrij42166a71ixfpfr1pildqdrcmc0cb4906h2s8sk4kqdyngih";
+      sha256 = "1k9izkr5rhw3zc309yjp17z7496l74j4li3zrcgpgqfnqwz695qx";
       type = "gem";
     };
-    version = "1.15.1";
+    version = "1.17.0";
   };
   rubocop-discourse = {
     dependencies = ["rubocop" "rubocop-rspec"];
@@ -2074,10 +2063,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1d76haw5gjpxlfanfzicn7sb5gziyizaksm7i999p7p5dmy5vf9q";
+      sha256 = "051gq9pz49iv4gq34d3n089iaa6cb418n2fhin6gd6fpysbi3nf6";
       type = "gem";
     };
-    version = "2.7.0";
+    version = "2.9.0";
   };
   ruby-prof = {
     groups = ["development"];
@@ -2195,10 +2184,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0k38cbwhcj9ncfzlgfmvq2zqfdvldln58w8s8v89m0jqlhnhsqhj";
+      sha256 = "0fq3nxpj1c9s2bi056p9cldb7zy45bgdkjq8721zypw1pkvllb7f";
       type = "gem";
     };
-    version = "6.3.1";
+    version = "6.4.1";
   };
   simplecov = {
     dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
@@ -2226,10 +2215,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "19r15hyvh52jx7fmsrcflb58xh8l7l0zx4sxkh3hqzhq68y81pjl";
+      sha256 = "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j";
       type = "gem";
     };
-    version = "0.1.3";
+    version = "0.1.4";
   };
   sprockets = {
     dependencies = ["concurrent-ruby" "rack"];
@@ -2237,10 +2226,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
+      sha256 = "19k5cwg8gyb6lkmz4kab7c5nlplpgj64jy7vw8p5l2i2ysq5hym0";
       type = "gem";
     };
-    version = "3.7.2";
+    version = "4.0.3";
   };
   sprockets-rails = {
     dependencies = ["actionpack" "activesupport" "sprockets"];
@@ -2272,20 +2261,20 @@
     }];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "06lz70k8c0r7fyxk1nc3idh14x7nvsr21ydm1bsmbj00jyhmfzsn";
+      sha256 = "19rnk17rz0lhf7l9awy0s7xxyw91ydcqxlx0576xvwyi79jh6a2m";
       type = "gem";
     };
-    version = "0.2.17";
+    version = "0.2.19";
   };
   test-prof = {
     groups = ["test"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1vg0zjfgibdcgkzb4c25v0f4v6v8mvpzvgcag194rwglmkkyrwkx";
+      sha256 = "04yxdm2cdhwp0wsp8891f06cprp4442p3mlgpdc4pziflpfvaw05";
       type = "gem";
     };
-    version = "1.0.7";
+    version = "1.0.8";
   };
   thor = {
     groups = ["default" "development" "test"];
@@ -2345,10 +2334,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0jmbimpnpjdzz8hlrppgl9spm99qh3qzbx0b81k3gkgwba8nk3yd";
+      sha256 = "0bf120xbq23zjyf8zi8h1576d71g58srr8rndig0whn10w72vrxz";
       type = "gem";
     };
-    version = "0.0.8";
+    version = "0.0.8.1";
   };
   unicode-display_width = {
     groups = ["default" "development" "test"];
@@ -2382,10 +2371,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1614dqnky0f9f1znj0lih8i184vfps86md93dw0kxrg3af9gnqb4";
+      sha256 = "1dfvqixshwvm82b9qwdidvnkavdj7s0fbdbmyd4knkl6l3j9xcwr";
       type = "gem";
     };
-    version = "1.14.2";
+    version = "1.16.0";
   };
   uri_template = {
     groups = ["default"];
@@ -2444,9 +2433,9 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0lmg9x683gr9mkrbq9df2m0zb0650mdfxqna0bs10js44inv7znx";
+      sha256 = "09bq7j2p6mkbxnsg71s253dm2463kg51xc7bmjcxgyblqbh4ln7m";
       type = "gem";
     };
-    version = "2.5.3";
+    version = "2.5.4";
   };
 }
diff --git a/pkgs/servers/web-apps/discourse/unicorn_logging_and_timeout.patch b/pkgs/servers/web-apps/discourse/unicorn_logging_and_timeout.patch
index 2541e7311b0b9..88ebc1337487b 100644
--- a/pkgs/servers/web-apps/discourse/unicorn_logging_and_timeout.patch
+++ b/pkgs/servers/web-apps/discourse/unicorn_logging_and_timeout.patch
@@ -2,7 +2,7 @@ diff --git a/config/unicorn.conf.rb b/config/unicorn.conf.rb
 index e69979adfe..68cb04a036 100644
 --- a/config/unicorn.conf.rb
 +++ b/config/unicorn.conf.rb
-@@ -27,17 +27,9 @@ pid (ENV["UNICORN_PID_PATH"] || "#{discourse_path}/tmp/pids/unicorn.pid")
+@@ -27,18 +27,10 @@ pid (ENV["UNICORN_PID_PATH"] || "#{discourse_path}/tmp/pids/unicorn.pid")
  
  if ENV["RAILS_ENV"] != "production"
    logger Logger.new(STDOUT)
diff --git a/pkgs/servers/web-apps/discourse/update.py b/pkgs/servers/web-apps/discourse/update.py
index ebc85c02087a9..64f374bad7038 100755
--- a/pkgs/servers/web-apps/discourse/update.py
+++ b/pkgs/servers/web-apps/discourse/update.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#! nix-shell -i python3 -p bundix bundler nix-update nix-universal-prefetch python3 python3Packages.requests python3Packages.click python3Packages.click-log
+#! nix-shell -i python3 -p bundix bundler nix-update nix-universal-prefetch python3 python3Packages.requests python3Packages.click python3Packages.click-log prefetch-yarn-deps
 from __future__ import annotations
 
 import click
@@ -104,10 +104,17 @@ class DiscourseRepo:
 
         return self._latest_commit_sha
 
+    def get_yarn_lock_hash(self, rev: str):
+        yarnLockText = self.get_file('app/assets/javascripts/yarn.lock', rev)
+        with tempfile.NamedTemporaryFile(mode='w') as lockFile:
+            lockFile.write(yarnLockText)
+            return subprocess.check_output(['prefetch-yarn-deps', lockFile.name]).decode('utf-8').strip()
+
     def get_file(self, filepath, rev):
-        """returns file contents at a given rev :param filepath: the path to
-        the file, relative to the repo root :param rev: the rev to
-        fetch at :return:
+        """Return file contents at a given rev.
+
+        :param str filepath: the path to the file, relative to the repo root
+        :param str rev: the rev to fetch at :return:
 
         """
         r = requests.get(f'https://raw.githubusercontent.com/{self.owner}/{self.repo}/{rev}/{filepath}')
@@ -116,7 +123,7 @@ class DiscourseRepo:
 
 
 def _call_nix_update(pkg, version):
-    """calls nix-update from nixpkgs root dir"""
+    """Call nix-update from nixpkgs root dir."""
     nixpkgs_path = Path(__file__).parent / '../../../../'
     return subprocess.check_output(['nix-update', pkg, '--version', version], cwd=nixpkgs_path)
 
@@ -215,7 +222,7 @@ def print_diffs(rev, reverse):
 def update(rev):
     """Update gem files and version.
 
-    REV should be the git rev to update to ('vX.Y.Z[.betaA]') or
+    REV: the git rev to update to ('vX.Y.Z[.betaA]') or
     'latest'; defaults to 'latest'.
 
     """
@@ -241,12 +248,39 @@ def update(rev):
 
     _call_nix_update('discourse', version.version)
 
+    old_yarn_hash = _nix_eval('discourse.assets.yarnOfflineCache.outputHash')
+    new_yarn_hash = repo.get_yarn_lock_hash(version.tag)
+    click.echo(f"Updating yarn lock hash, {old_yarn_hash} -> {new_yarn_hash}")
+    with open(Path(__file__).parent / "default.nix", 'r+') as f:
+        content = f.read()
+        content = content.replace(old_yarn_hash, new_yarn_hash)
+        f.seek(0)
+        f.write(content)
+        f.truncate()
+
 
 @cli.command()
-def update_plugins():
-    """Update plugins to their latest revision.
+@click.argument('rev', default='latest')
+def update_mail_receiver(rev):
+    """Update discourse-mail-receiver.
+
+    REV: the git rev to update to ('vX.Y.Z') or 'latest'; defaults to
+    'latest'.
 
     """
+    repo = DiscourseRepo(repo="mail-receiver")
+
+    if rev == 'latest':
+        version = repo.versions[0]
+    else:
+        version = DiscourseVersion(rev)
+
+    _call_nix_update('discourse-mail-receiver', version.version)
+
+
+@cli.command()
+def update_plugins():
+    """Update plugins to their latest revision."""
     plugins = [
         {'name': 'discourse-assign'},
         {'name': 'discourse-calendar'},
diff --git a/pkgs/servers/web-apps/invoiceplane/default.nix b/pkgs/servers/web-apps/invoiceplane/default.nix
index 6c9ffd44b9d73..fa79997fbd01b 100644
--- a/pkgs/servers/web-apps/invoiceplane/default.nix
+++ b/pkgs/servers/web-apps/invoiceplane/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, writeText, unzip, nixosTests }:
+{ lib, stdenv, fetchurl, writeText, unzip, nixosTests, fetchpatch }:
 
 stdenv.mkDerivation rec {
   pname = "invoiceplane";
@@ -9,6 +9,37 @@ stdenv.mkDerivation rec {
     sha256 = "137g0xps4kb3j7f5gz84ql18iggbya6d9dnrfp05g2qcbbp8kqad";
   };
 
+  patches = [
+
+    # Fix CVE-2021-29024, unauthenticated directory listing
+    # Should be included in a later release > 1.5.11
+    # https://github.com/NixOS/nixpkgs/issues/166655
+    # https://github.com/InvoicePlane/InvoicePlane/pull/754
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/InvoicePlane/InvoicePlane/pull/754.patch";
+      sha256 = "sha256-EHXw7Zqli/nA3tPIrhxpt8ueXvDtshz0XRzZT78sdQk=";
+    })
+
+    # Fix CVE-2021-29023, password reset rate-limiting
+    # Should be included in a later release > 1.5.11
+    # https://github.com/NixOS/nixpkgs/issues/166655
+    # https://github.com/InvoicePlane/InvoicePlane/pull/739
+    (fetchpatch {
+      url = "https://patch-diff.githubusercontent.com/raw/InvoicePlane/InvoicePlane/pull/739.patch";
+      sha256 = "sha256-6ksJjW6awr3lZsDRxa22pCcRGBVBYyV8+TbhOp6HBq0=";
+    })
+
+    # Fix CVE-2021-29022, full path disclosure
+    # Should be included in a later release > 1.5.11
+    # https://github.com/NixOS/nixpkgs/issues/166655
+    # https://github.com/InvoicePlane/InvoicePlane/pull/767
+    #(fetchpatch {
+    #  url = "https://patch-diff.githubusercontent.com/raw/InvoicePlane/InvoicePlane/pull/767.patch";
+    #  sha256 = "sha256-rSWDH8KeHSRWLyQEa7RSwv+8+ja9etTz+6Q9XThuwUo=";
+    #})
+
+  ];
+
   nativeBuildInputs = [ unzip ];
 
   sourceRoot = ".";
diff --git a/pkgs/servers/web-apps/jitsi-meet/default.nix b/pkgs/servers/web-apps/jitsi-meet/default.nix
index d63fe8192372a..e31327927fa98 100644
--- a/pkgs/servers/web-apps/jitsi-meet/default.nix
+++ b/pkgs/servers/web-apps/jitsi-meet/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "jitsi-meet";
-  version = "1.0.5818";
+  version = "1.0.6091";
 
   src = fetchurl {
     url = "https://download.jitsi.org/jitsi-meet/src/jitsi-meet-${version}.tar.bz2";
-    sha256 = "oVZoYEkYQd8dy1m0+1i/uIQ/gRipvJBXmgYphbBhicY=";
+    sha256 = "lYQGrH7D2xsRdwDC0yXB+tt4nOawEkq9A5tDIwl6pRk=";
   };
 
   dontBuild = true;
diff --git a/pkgs/servers/web-apps/lemmy/update.sh b/pkgs/servers/web-apps/lemmy/update.sh
index 62159618ce2fa..ebe46e97a2944 100755
--- a/pkgs/servers/web-apps/lemmy/update.sh
+++ b/pkgs/servers/web-apps/lemmy/update.sh
@@ -3,6 +3,8 @@
 
 # TODO set to `verbose` or `extdebug` once implemented in oil
 shopt --set xtrace
+# we need failures inside of command subs to get the correct dependency sha256
+shopt --unset inherit_errexit
 
 const directory = $(dirname $0 | xargs realpath)
 const owner = "LemmyNet"
diff --git a/pkgs/servers/web-apps/moodle/default.nix b/pkgs/servers/web-apps/moodle/default.nix
index 0df0b83109a4c..77f02e7a78cd7 100644
--- a/pkgs/servers/web-apps/moodle/default.nix
+++ b/pkgs/servers/web-apps/moodle/default.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchurl, writeText, plugins ? [ ] }:
 
 let
-  version = "3.11.5";
+  version = "3.11.6";
   stableVersion = lib.concatStrings (lib.take 2 (lib.splitVersion version));
 
 in stdenv.mkDerivation rec {
@@ -10,7 +10,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://download.moodle.org/stable${stableVersion}/${pname}-${version}.tgz";
-    sha256 = "sha256-KFitrMThEcx7pU/+jmP8casEyg6/FlhpvjfIjf31vw0=";
+    sha256 = "sha256-g3qHYkxiXb18vJ23THUw8ej+s5SgIkJpmjQmmARwQhs=";
   };
 
   phpConfig = writeText "config.php" ''
diff --git a/pkgs/servers/web-apps/netbox/default.nix b/pkgs/servers/web-apps/netbox/default.nix
index a8abcf9d85737..988076947bc21 100644
--- a/pkgs/servers/web-apps/netbox/default.nix
+++ b/pkgs/servers/web-apps/netbox/default.nix
@@ -10,15 +10,6 @@ let
   py = python3.override {
     packageOverrides = self: super: {
       django = super.django_3;
-      graphql-core = super.graphql-core.overridePythonAttrs (old: rec {
-        version = "3.1.7";
-        src = fetchFromGitHub {
-          owner = "graphql-python";
-          repo = old.pname;
-          rev = "v${version}";
-          sha256 = "1mwwh55qd5bcpvgy6pyliwn8jkmj4yk4d2pqb6mdkgqhdic2081l";
-        };
-      });
       jsonschema = super.jsonschema.overridePythonAttrs (old: rec {
         version = "3.2.0";
         src = self.fetchPypi {
@@ -28,14 +19,26 @@ let
         };
       });
       lxml = super.lxml.overridePythonAttrs (old: rec {
-        pname = "lxml";
         version = "4.6.5";
-
         src = self.fetchPypi {
-          inherit pname version;
+          pname = old.pname;
+          inherit version;
           sha256 = "6e84edecc3a82f90d44ddee2ee2a2630d4994b8471816e226d2b771cda7ac4ca";
         };
       });
+      werkzeug = super.werkzeug.overridePythonAttrs (old: rec {
+        version = "2.0.3";
+        src = self.fetchPypi {
+          pname = "Werkzeug";
+          inherit version;
+          sha256 = "sha256-uGP4/wV8UiFktgZ8niiwQRYbS+W6TQ2s7qpQoWOCLTw=";
+        };
+      });
+      sentry-sdk = super.sentry-sdk.overridePythonAttrs (old: rec {
+        disabledTestPaths = old.disabledTestPaths ++ [
+          "tests/integrations/flask/test_flask.py"
+        ];
+      });
     };
   };
 
@@ -43,13 +46,13 @@ let
 in
 py.pkgs.buildPythonApplication rec {
     pname = "netbox";
-    version = "3.1.10";
+    version = "3.2.1";
 
     src = fetchFromGitHub {
       owner = "netbox-community";
       repo = pname;
       rev = "v${version}";
-      sha256 = "sha256-qREq4FJHHTA9Vm6f9kSfiYqur2omFmdsoZ4OdaPFcpU=";
+      sha256 = "sha256-iA0KIgaHQh0OsN/tXmTATIlvnf0aLRdjeQ6VkiR9VJ4=";
     };
 
     format = "other";
@@ -57,6 +60,7 @@ py.pkgs.buildPythonApplication rec {
     patches = [
       # Allow setting the STATIC_ROOT from within the configuration and setting a custom redis URL
       ./config.patch
+      ./graphql-3_2_0.patch
     ];
 
     propagatedBuildInputs = with py.pkgs; [
@@ -75,6 +79,7 @@ py.pkgs.buildPythonApplication rec {
       django-timezone-field
       djangorestframework
       drf-yasg
+      swagger-spec-validator # from drf-yasg[validation]
       graphene-django
       jinja2
       markdown
diff --git a/pkgs/servers/web-apps/netbox/graphql-3_2_0.patch b/pkgs/servers/web-apps/netbox/graphql-3_2_0.patch
new file mode 100644
index 0000000000000..1e97b7d85ce01
--- /dev/null
+++ b/pkgs/servers/web-apps/netbox/graphql-3_2_0.patch
@@ -0,0 +1,21 @@
+diff --git a/netbox/netbox/graphql/scalars.py b/netbox/netbox/graphql/scalars.py
+index 7d14189dd..0a18e79d2 100644
+--- a/netbox/netbox/graphql/scalars.py
++++ b/netbox/netbox/graphql/scalars.py
+@@ -1,6 +1,6 @@
+ from graphene import Scalar
+ from graphql.language import ast
+-from graphql.type.scalars import MAX_INT, MIN_INT
++from graphql.type.scalars import GRAPHQL_MAX_INT, GRAPHQL_MIN_INT
+ 
+ 
+ class BigInt(Scalar):
+@@ -10,7 +10,7 @@ class BigInt(Scalar):
+     @staticmethod
+     def to_float(value):
+         num = int(value)
+-        if num > MAX_INT or num < MIN_INT:
++        if num > GRAPHQL_MAX_INT or num < GRAPHQL_MIN_INT:
+             return float(num)
+         return num
+ 
diff --git a/pkgs/servers/web-apps/nifi/default.nix b/pkgs/servers/web-apps/nifi/default.nix
new file mode 100644
index 0000000000000..f25c1931501e4
--- /dev/null
+++ b/pkgs/servers/web-apps/nifi/default.nix
@@ -0,0 +1,45 @@
+{ lib, stdenv, fetchurl, makeWrapper, jre8, nixosTests }:
+
+stdenv.mkDerivation rec {
+  pname = "nifi";
+  version = "1.16.0";
+
+  src = fetchurl {
+    url = "https://dlcdn.apache.org/nifi/${version}/nifi-${version}-bin.tar.gz";
+    sha256 = "sha256-BE990mVSocO+UuMa9kULJcbXbqiX8oquZQTQKSRPe4g=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jre8 ];
+
+  installPhase = ''
+    mv ../$sourceRoot $out
+    rm -f $out/bin/*bat
+    rm -rf $out/extensions
+    mkdir -p $out/share/nifi
+    mv $out/conf $out/share/nifi
+    mv $out/docs $out/share/nifi
+    mv $out/{LICENSE,NOTICE,README} $out/share/nifi
+
+    substituteInPlace $out/bin/nifi.sh \
+      --replace "/bin/sh" "${stdenv.shell}"
+    substituteInPlace $out/bin/nifi-env.sh \
+      --replace "#export JAVA_HOME=/usr/java/jdk1.8.0/" "export JAVA_HOME=${jre8}"
+  '';
+
+  passthru = {
+    tests.nifi = nixosTests.nifi;
+  };
+
+  meta = with lib; {
+    description = "Easy to use, powerful, and reliable system to process and distribute data";
+    longDescription = ''
+      Apache NiFi supports powerful and scalable directed graphs of data routing,
+      transformation, and system mediation logic.
+    '';
+    license = licenses.asl20;
+    homepage = "https://nifi.apache.org";
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ izorkin ];
+  };
+}
diff --git a/pkgs/servers/web-apps/virtlyst/default.nix b/pkgs/servers/web-apps/virtlyst/default.nix
index 3ff42050eb2d0..d6a72916fae30 100644
--- a/pkgs/servers/web-apps/virtlyst/default.nix
+++ b/pkgs/servers/web-apps/virtlyst/default.nix
@@ -18,9 +18,13 @@ stdenv.mkDerivation rec {
   dontWrapQtApps = true;
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/lib
-    cp src/libVirtlyst.so $out/lib
+    cp src/libVirtlyst${stdenv.hostPlatform.extensions.sharedLibrary} $out/lib
     cp -r ../root $out
+
+    runHook postInstall
   '';
 
   patches = [ ./add-admin-password-env.patch ];
@@ -29,6 +33,7 @@ stdenv.mkDerivation rec {
     description = "Web interface to manage virtual machines with libvirt";
     homepage = "https://github.com/cutelyst/Virtlyst";
     license = licenses.agpl3Plus;
+    platforms = platforms.unix;
     maintainers = with maintainers; [ fpletz ];
   };
 }
diff --git a/pkgs/servers/web-apps/wiki-js/default.nix b/pkgs/servers/web-apps/wiki-js/default.nix
index f4e7775c400f0..c0f94b1bca774 100644
--- a/pkgs/servers/web-apps/wiki-js/default.nix
+++ b/pkgs/servers/web-apps/wiki-js/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "wiki-js";
-  version = "2.5.276";
+  version = "2.5.277";
 
   src = fetchurl {
     url = "https://github.com/Requarks/wiki/releases/download/v${version}/${pname}.tar.gz";
-    sha256 = "sha256-ulx3/yj5wxmHsep0+93xpy6VeQJkMXRjGd/xx2F1zII=";
+    sha256 = "sha256-YLw0DR4dbPfNY56lNybEQFXFEVPZ99sQkwDl6gtz40E=";
   };
 
   sourceRoot = ".";
@@ -21,7 +21,10 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  passthru.tests = { inherit (nixosTests) wiki-js; };
+  passthru = {
+    tests = { inherit (nixosTests) wiki-js; };
+    updateScript = ./update.sh;
+  };
 
   meta = with lib; {
     homepage = "https://js.wiki/";
diff --git a/pkgs/servers/web-apps/wiki-js/update.sh b/pkgs/servers/web-apps/wiki-js/update.sh
new file mode 100755
index 0000000000000..63015800e6913
--- /dev/null
+++ b/pkgs/servers/web-apps/wiki-js/update.sh
@@ -0,0 +1,13 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts
+
+oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion wiki-js" | tr -d '"')"
+latestTag="$(git ls-remote --tags --sort="v:refname" https://github.com/Requarks/wiki.git | tail -1 | awk '{ print $2 }' | sed -E "s,^refs/tags/v(.*)$,\1,")"
+
+targetVersion="${1:-$latestTag}"
+if [ ! "${oldVersion}" = "${targetVersion}" ]; then
+  update-source-version wiki-js "${targetVersion}"
+  nix-build -A wiki-js
+else
+  echo "wiki-js is already up-to-date"
+fi
diff --git a/pkgs/servers/web-apps/wordpress/default.nix b/pkgs/servers/web-apps/wordpress/default.nix
index 1e6b40865ee35..f1c43bde3ce09 100644
--- a/pkgs/servers/web-apps/wordpress/default.nix
+++ b/pkgs/servers/web-apps/wordpress/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "wordpress";
-  version = "5.9.2";
+  version = "5.9.3";
 
   src = fetchurl {
     url = "https://wordpress.org/${pname}-${version}.tar.gz";
-    sha256 = "sha256-d2Xy3SpWzpIHmXh8x5BKWF9jNlvKK6D3uwbqIGDGn4s=";
+    sha256 = "sha256-cMvqXXLez7Ep9MyObD0BdepkvsaOl5YbbbA3cnilKlY=";
   };
 
   installPhase = ''
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 932372d2b3dce..0b11138ec237f 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -2127,11 +2127,11 @@ lib.makeScope newScope (self: with self; {
   # THIS IS A GENERATED FILE.  DO NOT EDIT!
   xf86videoati = callPackage ({ stdenv, pkg-config, fetchurl, xorgproto, mesa, libGL, libdrm, udev, libpciaccess, xorgserver }: stdenv.mkDerivation {
     pname = "xf86-video-ati";
-    version = "19.1.0";
+    version = "5eba006e4129e8015b822f9e1d2f1e613e252cda";
     builder = ./builder.sh;
     src = fetchurl {
-      url = "mirror://xorg/individual/driver/xf86-video-ati-19.1.0.tar.bz2";
-      sha256 = "0j9w4axsqlycv4v14g53xyhkm9h7d27b2fcv9lrzb9gf54b5m7v5";
+      url = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/-/archive/5eba006e4129e8015b822f9e1d2f1e613e252cda/xf86-video-ati-5eba006e4129e8015b822f9e1d2f1e613e252cda.tar.bz2";
+      sha256 = "0gmymk8207fd9rjliq05l2gvx220h432rj3h75hv2ylr3k9vmp2b";
     };
     hardeningDisable = [ "bindnow" "relro" ];
     nativeBuildInputs = [ pkg-config ];
@@ -2337,11 +2337,11 @@ lib.makeScope newScope (self: with self; {
   # THIS IS A GENERATED FILE.  DO NOT EDIT!
   xf86videonouveau = callPackage ({ stdenv, pkg-config, fetchurl, xorgproto, libdrm, udev, libpciaccess, xorgserver }: stdenv.mkDerivation {
     pname = "xf86-video-nouveau";
-    version = "1.0.17";
+    version = "3ee7cbca8f9144a3bb5be7f71ce70558f548d268";
     builder = ./builder.sh;
     src = fetchurl {
-      url = "mirror://xorg/individual/driver/xf86-video-nouveau-1.0.17.tar.bz2";
-      sha256 = "0sqm1jwjg15sp8v7039y2hsbhph8gpjd2bdzcqqiij2mgbi254s9";
+      url = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/archive/3ee7cbca8f9144a3bb5be7f71ce70558f548d268/xf86-video-nouveau-3ee7cbca8f9144a3bb5be7f71ce70558f548d268.tar.bz2";
+      sha256 = "0rhs3z274jdzd82pcsl25xn8hmw6i4cxs2kwfnphpfhxbbkiq7wl";
     };
     hardeningDisable = [ "bindnow" "relro" ];
     nativeBuildInputs = [ pkg-config ];
@@ -3100,17 +3100,17 @@ lib.makeScope newScope (self: with self; {
   }) {};
 
   # THIS IS A GENERATED FILE.  DO NOT EDIT!
-  xorgserver = callPackage ({ stdenv, pkg-config, fetchurl, xorgproto, openssl, libX11, libXau, libXaw, libxcb, xcbutil, xcbutilwm, xcbutilimage, xcbutilkeysyms, xcbutilrenderutil, libXdmcp, libXfixes, libxkbfile, libXmu, libXpm, libXrender, libXres, libXt }: stdenv.mkDerivation {
+  xorgserver = callPackage ({ stdenv, pkg-config, fetchurl, xorgproto, openssl, libX11, libXau, libxcb, xcbutil, xcbutilwm, xcbutilimage, xcbutilkeysyms, xcbutilrenderutil, libXdmcp, libXfixes, libxkbfile }: stdenv.mkDerivation {
     pname = "xorg-server";
-    version = "1.20.13";
+    version = "21.1.3";
     builder = ./builder.sh;
     src = fetchurl {
-      url = "mirror://xorg/individual/xserver/xorg-server-1.20.13.tar.xz";
-      sha256 = "003371ad64bz7i2hx7idnh90yw12dbh116ssy40s70balnb4xaj0";
+      url = "mirror://xorg/individual/xserver/xorg-server-21.1.3.tar.xz";
+      sha256 = "1rgbrld7spg7plkv3c3bbnlnszpflk5z1mqbjrmi2ymlnvasmmk1";
     };
     hardeningDisable = [ "bindnow" "relro" ];
     nativeBuildInputs = [ pkg-config ];
-    buildInputs = [ xorgproto openssl libX11 libXau libXaw libxcb xcbutil xcbutilwm xcbutilimage xcbutilkeysyms xcbutilrenderutil libXdmcp libXfixes libxkbfile libXmu libXpm libXrender libXres libXt ];
+    buildInputs = [ xorgproto openssl libX11 libXau libxcb xcbutil xcbutilwm xcbutilimage xcbutilkeysyms xcbutilrenderutil libXdmcp libXfixes libxkbfile ];
     meta.platforms = lib.platforms.unix;
   }) {};
 
diff --git a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl
index bd81f7fa513be..69ff9a70155a4 100755
--- a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl
+++ b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl
@@ -57,7 +57,7 @@ while (<>) {
       $tarball =~ /\/((?:(?:[A-Za-z0-9]|(?:-[^0-9])|(?:-[0-9]*[a-z]))+))[^\/]*$/;
       die unless defined $1;
       $pkg = $1;
-      $pkg =~ s/-//g;
+      $pkg =~ s/(-|[a-f0-9]{40})//g; # Remove hyphen-minus and SHA-1
       #next unless $pkg eq "xcbutil";
     }
 
@@ -71,8 +71,8 @@ while (<>) {
         next;
     }
 
-    # split by first occurence of hyphen followd by only numbers ends line or another hyphen follows
-    my ($name, $version) = split(/-(?=[.0-9]+(?:$|-))/, $pkgName, 2);
+    # Split by first occurrence of hyphen followed by only numbers, ends line, another hyphen follows, or SHA-1
+    my ($name, $version) = split(/-(?=[.0-9]+(?:$|-)|[a-f0-9]{40})/, $pkgName, 2);
 
     $pkgURLs{$pkg} = $tarball;
     $pkgNames{$pkg} = $name;
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 3ec0360c0638f..d58a3c929aaac 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -442,6 +442,17 @@ self: super:
 
   xf86videoati = super.xf86videoati.overrideAttrs (attrs: {
     NIX_CFLAGS_COMPILE = "-I${self.xorgserver.dev or self.xorgserver}/include/xorg";
+    nativeBuildInputs = with self; attrs.nativeBuildInputs ++ [ autoreconfHook utilmacros ];
+    patches = [
+      (fetchpatch {
+        url = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/-/commit/e0511968d04b42abf11bc0ffb387f143582bc144.patch";
+        sha256 = "sha256-79nqKuJRgMYXDEMB8IWxdmbxtI/m+Oca1wSLYeGMuEk=";
+      })
+    ];
+  });
+
+  xf86videonouveau = super.xf86videonouveau.overrideAttrs (attrs: {
+    nativeBuildInputs = with self; attrs.nativeBuildInputs ++ [ autoreconfHook utilmacros ];
   });
 
   xf86videovmware = super.xf86videovmware.overrideAttrs (attrs: {
@@ -620,7 +631,7 @@ self: super:
     in attrs //
     (let
       version = lib.getVersion attrs;
-      commonBuildInputs = attrs.buildInputs ++ [ xtrans ];
+      commonBuildInputs = attrs.buildInputs ++ [ libxcvt xtrans ];
       commonPropagatedBuildInputs = [
         zlib libGL libGLU dbus
         xorgproto
@@ -653,28 +664,10 @@ self: super:
       then {
         outputs = [ "out" "dev" ];
         patches = [
-          # https://lists.x.org/archives/xorg-announce/2021-December/003122.html
-          (fpgit "ebce7e2d80e7c80e1dda60f2f0bc886f1106ba60"
-            "sNi16FqN4rS4s8j5+PUVeOQBasccCkB5KvywP7xl28M=" "CVE-2021-4008")
-          (fpgit "b5196750099ae6ae582e1f46bd0a6dad29550e02"
-            "5hgzQXBBaJfhSTa9hs8K2N1fQ6+Vp8TTkertmQhkw8Y=" "CVE-2021-4009")
-          (fpgit "6c4c53010772e3cb4cb8acd54950c8eec9c00d21"
-            "1gGG9RpjLMi7Emwh13/z5CN1+ISLsPL3hJXP5gQcNkE=" "CVE-2021-4010")
-          (fpgit "e56f61c79fc3cee26d83cda0f84ae56d5979f768"
-            "e1KgSXGwwI3GgcYeWaF3KHPmkE4tf9VTqvfTYqRpysY=" "CVE-2021-4011")
-
           # The build process tries to create the specified logdir when building.
           #
           # We set it to /var/log which can't be touched from inside the sandbox causing the build to hard-fail
           ./dont-create-logdir-during-build.patch
-
-          # Fix e.g. xorg.xf86videovmware with libdrm 2.4.108
-          # TODO: remove with xorgserver >= 1.21
-          (fetchpatch {
-            name = "stdbool.patch";
-            url = "https://gitlab.freedesktop.org/xorg/xserver/-/commit/454b3a826edb5fc6d0fea3a9cfd1a5e8fc568747.diff";
-            sha256 = "1l9qg905jvlw3r0kx4xfw5m12pbs0782v2g3267d1m6q4m6fj1zy";
-          })
         ];
         buildInputs = commonBuildInputs ++ [ libdrm mesa ];
         propagatedBuildInputs = attrs.propagatedBuildInputs or [] ++ [ libpciaccess libepoxy ] ++ commonPropagatedBuildInputs ++ lib.optionals stdenv.isLinux [
@@ -835,14 +828,14 @@ self: super:
 
   xf86videointel = super.xf86videointel.overrideAttrs (attrs: {
     # the update script only works with released tarballs :-/
-    name = "xf86-video-intel-2019-12-09";
+    name = "xf86-video-intel-2021-01-15";
     src = fetchFromGitLab {
       domain = "gitlab.freedesktop.org";
       group = "xorg";
       owner = "driver";
       repo = "xf86-video-intel";
-      rev = "f66d39544bb8339130c96d282a80f87ca1606caf";
-      sha256 = "14rwbbn06l8qpx7s5crxghn80vgcx8jmfc7qvivh72d81r0kvywl";
+      rev = "31486f40f8e8f8923ca0799aea84b58799754564";
+      sha256 = "sha256-nqT9VZDb2kAC72ot9UCdwEkM1uuP9NriJePulzrdZlM=";
     };
     buildInputs = attrs.buildInputs ++ [ self.libXScrnSaver self.libXfixes self.libXv self.pixman ];
     nativeBuildInputs = attrs.nativeBuildInputs ++ [autoreconfHook self.utilmacros];
diff --git a/pkgs/servers/x11/xorg/tarballs.list b/pkgs/servers/x11/xorg/tarballs.list
index 96a5ac712f46d..3a0cce1ee0521 100644
--- a/pkgs/servers/x11/xorg/tarballs.list
+++ b/pkgs/servers/x11/xorg/tarballs.list
@@ -90,7 +90,7 @@ mirror://xorg/individual/driver/xf86-video-amdgpu-21.0.0.tar.bz2
 mirror://xorg/individual/driver/xf86-video-apm-1.3.0.tar.bz2
 mirror://xorg/individual/driver/xf86-video-ark-0.7.5.tar.bz2
 mirror://xorg/individual/driver/xf86-video-ast-1.1.5.tar.bz2
-mirror://xorg/individual/driver/xf86-video-ati-19.1.0.tar.bz2
+https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/-/archive/5eba006e4129e8015b822f9e1d2f1e613e252cda/xf86-video-ati-5eba006e4129e8015b822f9e1d2f1e613e252cda.tar.bz2
 mirror://xorg/individual/driver/xf86-video-chips-1.4.0.tar.bz2
 mirror://xorg/individual/driver/xf86-video-cirrus-1.5.3.tar.bz2
 mirror://xorg/individual/driver/xf86-video-dummy-0.3.8.tar.bz2
@@ -104,7 +104,7 @@ mirror://xorg/individual/driver/xf86-video-intel-2.99.917.tar.bz2
 mirror://xorg/individual/driver/xf86-video-mga-2.0.0.tar.bz2
 mirror://xorg/individual/driver/xf86-video-neomagic-1.3.0.tar.bz2
 mirror://xorg/individual/driver/xf86-video-newport-0.2.4.tar.bz2
-mirror://xorg/individual/driver/xf86-video-nouveau-1.0.17.tar.bz2
+https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/archive/3ee7cbca8f9144a3bb5be7f71ce70558f548d268/xf86-video-nouveau-3ee7cbca8f9144a3bb5be7f71ce70558f548d268.tar.bz2
 mirror://xorg/individual/driver/xf86-video-nv-2.1.21.tar.bz2
 mirror://xorg/individual/driver/xf86-video-omap-0.4.5.tar.bz2
 mirror://xorg/individual/driver/xf86-video-openchrome-0.6.0.tar.bz2
@@ -218,4 +218,4 @@ mirror://xorg/individual/util/lndir-1.0.3.tar.bz2
 mirror://xorg/individual/util/makedepend-1.0.6.tar.bz2
 mirror://xorg/individual/util/util-macros-1.19.3.tar.bz2
 mirror://xorg/individual/util/xorg-cf-files-1.0.7.tar.bz2
-mirror://xorg/individual/xserver/xorg-server-1.20.13.tar.xz
+mirror://xorg/individual/xserver/xorg-server-21.1.3.tar.xz
diff --git a/pkgs/servers/x11/xorg/xwayland.nix b/pkgs/servers/x11/xorg/xwayland.nix
index 53dfdc529cb60..97414481a915f 100644
--- a/pkgs/servers/x11/xorg/xwayland.nix
+++ b/pkgs/servers/x11/xorg/xwayland.nix
@@ -44,10 +44,10 @@
 stdenv.mkDerivation rec {
 
   pname = "xwayland";
-  version = "22.1.0";
+  version = "22.1.1";
   src = fetchurl {
     url = "mirror://xorg/individual/xserver/${pname}-${version}.tar.xz";
-    sha256 = "sha256-F1LW0Kkw5xKStaMI04EevVTYzGjKz/RN5lQmW4YXor8=";
+    sha256 = "sha256-9dDgujfhm7h8YvYdpZcL0gSTnyEgYglkvtTMhJW6plc=";
   };
 
   depsBuildBuild = [
diff --git a/pkgs/servers/xmpp/prosody/default.nix b/pkgs/servers/xmpp/prosody/default.nix
index 1556250447a9a..6b70c4cc9874f 100644
--- a/pkgs/servers/xmpp/prosody/default.nix
+++ b/pkgs/servers/xmpp/prosody/default.nix
@@ -72,17 +72,17 @@ stdenv.mkDerivation rec {
         cp -r $communityModules/mod_${module} $out/lib/prosody/modules/
       '') (lib.lists.unique(nixosModuleDeps ++ withCommunityModules ++ withOnlyInstalledCommunityModules))}
       wrapProgram $out/bin/prosody \
-        --set LUA_PATH "$luaEnvPath" \
-        --set LUA_CPATH "$luaEnvCPath"
+        --prefix LUA_PATH ';' "$luaEnvPath" \
+        --prefix LUA_CPATH ';' "$luaEnvCPath"
       wrapProgram $out/bin/prosodyctl \
         --add-flags '--config "/etc/prosody/prosody.cfg.lua"' \
-        --set LUA_PATH "$luaEnvPath" \
-        --set LUA_CPATH "$luaEnvCPath"
+        --prefix LUA_PATH ';' "$luaEnvPath" \
+        --prefix LUA_CPATH ';' "$luaEnvCPath"
 
       make -C tools/migration install
       wrapProgram $out/bin/prosody-migrator \
-        --set LUA_PATH "$luaEnvPath" \
-        --set LUA_CPATH "$luaEnvCPath"
+        --prefix LUA_PATH ';' "$luaEnvPath" \
+        --prefix LUA_CPATH ';' "$luaEnvCPath"
     '';
 
   passthru = {