about summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/X11/xdg-utils/default.nix7
-rw-r--r--pkgs/tools/admin/ansible/doctor.nix1
-rw-r--r--pkgs/tools/admin/ansible/later.nix2
-rw-r--r--pkgs/tools/admin/ansible/lint.nix1
-rw-r--r--pkgs/tools/admin/aws-google-auth/default.nix1
-rw-r--r--pkgs/tools/admin/aws-lambda-runtime-interface-emulator/default.nix7
-rw-r--r--pkgs/tools/admin/aws-mfa/default.nix1
-rw-r--r--pkgs/tools/admin/aws-vault/default.nix1
-rw-r--r--pkgs/tools/admin/awscli/default.nix20
-rw-r--r--pkgs/tools/admin/awslimitchecker/default.nix1
-rw-r--r--pkgs/tools/admin/awslogs/default.nix1
-rw-r--r--pkgs/tools/admin/azure-cli/default.nix4
-rw-r--r--pkgs/tools/admin/azure-cli/python-packages.nix152
-rw-r--r--pkgs/tools/admin/chkcrontab/default.nix1
-rw-r--r--pkgs/tools/admin/copilot-cli/default.nix6
-rw-r--r--pkgs/tools/admin/credhub-cli/default.nix4
-rw-r--r--pkgs/tools/admin/dehydrated/default.nix1
-rw-r--r--pkgs/tools/admin/drawterm/default.nix6
-rw-r--r--pkgs/tools/admin/exoscale-cli/default.nix4
-rw-r--r--pkgs/tools/admin/gam/default.nix1
-rw-r--r--pkgs/tools/admin/gimme-aws-creds/default.nix1
-rw-r--r--pkgs/tools/admin/gixy/default.nix1
-rw-r--r--pkgs/tools/admin/google-cloud-sdk/components.json1419
-rw-r--r--pkgs/tools/admin/google-cloud-sdk/data.nix22
-rw-r--r--pkgs/tools/admin/hedgedoc-cli/default.nix2
-rw-r--r--pkgs/tools/admin/lxd/default.nix6
-rw-r--r--pkgs/tools/admin/mycli/default.nix1
-rw-r--r--pkgs/tools/admin/nomachine-client/default.nix1
-rw-r--r--pkgs/tools/admin/proxmove/default.nix1
-rw-r--r--pkgs/tools/admin/pulumi-bin/data.nix126
-rw-r--r--pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix1
-rw-r--r--pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix1
-rw-r--r--pkgs/tools/admin/pulumi-packages/pulumi-command.nix1
-rw-r--r--pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix1
-rw-r--r--pkgs/tools/admin/pulumi-packages/pulumi-random.nix1
-rw-r--r--pkgs/tools/admin/qovery-cli/default.nix6
-rw-r--r--pkgs/tools/admin/s3bro/default.nix1
-rw-r--r--pkgs/tools/admin/salt/default.nix12
-rw-r--r--pkgs/tools/admin/ssl-cert-check/default.nix1
-rw-r--r--pkgs/tools/admin/trivy/default.nix6
-rw-r--r--pkgs/tools/admin/try/default.nix1
-rw-r--r--pkgs/tools/archivers/unar/default.nix6
-rw-r--r--pkgs/tools/archivers/zpaq/zpaqd.nix1
-rw-r--r--pkgs/tools/audio/asap/default.nix4
-rw-r--r--pkgs/tools/audio/liquidsoap/full.nix1
-rw-r--r--pkgs/tools/audio/openai-whisper-cpp/default.nix4
-rw-r--r--pkgs/tools/audio/pa-applet/default.nix1
-rw-r--r--pkgs/tools/audio/spotdl/default.nix1
-rw-r--r--pkgs/tools/audio/wyoming/piper.nix1
-rw-r--r--pkgs/tools/backup/android-backup-extractor/default.nix1
-rw-r--r--pkgs/tools/backup/automysqlbackup/default.nix1
-rw-r--r--pkgs/tools/backup/awsbck/default.nix6
-rw-r--r--pkgs/tools/backup/bakelite/default.nix1
-rw-r--r--pkgs/tools/backup/btar/default.nix1
-rw-r--r--pkgs/tools/backup/bup/default.nix1
-rw-r--r--pkgs/tools/backup/burp/default.nix2
-rw-r--r--pkgs/tools/backup/chunksync/default.nix1
-rw-r--r--pkgs/tools/backup/discordchatexporter-cli/default.nix46
-rw-r--r--pkgs/tools/backup/discordchatexporter-cli/deps.nix23
-rwxr-xr-xpkgs/tools/backup/discordchatexporter-cli/updater.sh15
-rw-r--r--pkgs/tools/backup/diskrsync/default.nix1
-rw-r--r--pkgs/tools/backup/duply/default.nix1
-rw-r--r--pkgs/tools/backup/flockit/default.nix1
-rw-r--r--pkgs/tools/backup/gh2md/default.nix1
-rw-r--r--pkgs/tools/backup/gphotos-sync/default.nix1
-rw-r--r--pkgs/tools/backup/httrack/qt.nix1
-rw-r--r--pkgs/tools/backup/kopia/default.nix1
-rw-r--r--pkgs/tools/backup/lvmsync/default.nix1
-rw-r--r--pkgs/tools/backup/mastodon-archive/default.nix1
-rw-r--r--pkgs/tools/backup/monolith/default.nix1
-rw-r--r--pkgs/tools/backup/mylvmbackup/default.nix1
-rw-r--r--pkgs/tools/backup/pyznap/default.nix1
-rw-r--r--pkgs/tools/backup/rdedup/default.nix1
-rw-r--r--pkgs/tools/backup/restic/rest-server.nix1
-rw-r--r--pkgs/tools/backup/rotate-backups/default.nix1
-rw-r--r--pkgs/tools/backup/sigtop/default.nix1
-rw-r--r--pkgs/tools/backup/stenc/default.nix1
-rw-r--r--pkgs/tools/backup/ugarit-manifest-maker/default.nix1
-rw-r--r--pkgs/tools/backup/wal-e/default.nix1
-rw-r--r--pkgs/tools/backup/wal-g/default.nix9
-rw-r--r--pkgs/tools/backup/zbackup/default.nix1
-rw-r--r--pkgs/tools/backup/zfs-prune-snapshots/default.nix1
-rw-r--r--pkgs/tools/backup/zfs-replicate/default.nix1
-rw-r--r--pkgs/tools/backup/zfsnap/default.nix1
-rw-r--r--pkgs/tools/compression/crabz/default.nix6
-rw-r--r--pkgs/tools/compression/lzham/default.nix1
-rw-r--r--pkgs/tools/compression/lzip/default.nix7
-rw-r--r--pkgs/tools/compression/lzip/mingw-mkdir-one-argument.patch13
-rw-r--r--pkgs/tools/compression/ouch/default.nix4
-rw-r--r--pkgs/tools/compression/xz/default.nix4
-rw-r--r--pkgs/tools/filesystems/9pfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/archivemount/default.nix1
-rw-r--r--pkgs/tools/filesystems/btrfs-heatmap/default.nix1
-rw-r--r--pkgs/tools/filesystems/btrfs-snap/default.nix1
-rw-r--r--pkgs/tools/filesystems/catcli/default.nix1
-rw-r--r--pkgs/tools/filesystems/ceph-csi/default.nix1
-rw-r--r--pkgs/tools/filesystems/ceph/default.nix26
-rw-r--r--pkgs/tools/filesystems/cpcfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/curlftpfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/darling-dmg/default.nix1
-rw-r--r--pkgs/tools/filesystems/dduper/default.nix1
-rw-r--r--pkgs/tools/filesystems/disorderfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/djmount/default.nix1
-rw-r--r--pkgs/tools/filesystems/duff/default.nix1
-rw-r--r--pkgs/tools/filesystems/httpfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/tar2ext4/default.nix4
-rw-r--r--pkgs/tools/games/ajour/default.nix1
-rw-r--r--pkgs/tools/games/gamemode/default.nix2
-rw-r--r--pkgs/tools/games/joystickwake/default.nix1
-rw-r--r--pkgs/tools/games/jpsxdec/default.nix4
-rw-r--r--pkgs/tools/games/minecraft/amidst/default.nix1
-rw-r--r--pkgs/tools/games/minecraft/fabric-installer/default.nix1
-rw-r--r--pkgs/tools/games/minecraft/mcaselector/default.nix1
-rw-r--r--pkgs/tools/games/minecraft/minecraft-server-hibernation/default.nix1
-rw-r--r--pkgs/tools/games/mymcplus/default.nix1
-rw-r--r--pkgs/tools/games/pokefinder/default.nix1
-rw-r--r--pkgs/tools/games/steamback/default.nix1
-rw-r--r--pkgs/tools/games/steamtinkerlaunch/default.nix1
-rw-r--r--pkgs/tools/games/ukmm/default.nix1
-rw-r--r--pkgs/tools/graphics/asymptote/default.nix53
-rw-r--r--pkgs/tools/graphics/pngcrush/default.nix9
-rw-r--r--pkgs/tools/graphics/quirc/0001-dont-build-demos.patch4
-rw-r--r--pkgs/tools/graphics/quirc/default.nix33
-rw-r--r--pkgs/tools/graphics/rocket/default.nix1
-rw-r--r--pkgs/tools/graphics/snapdragon-profiler/default.nix2
-rw-r--r--pkgs/tools/graphics/vips/default.nix4
-rw-r--r--pkgs/tools/inputmethods/emote/default.nix1
-rw-r--r--pkgs/tools/inputmethods/evdevremapkeys/default.nix1
-rw-r--r--pkgs/tools/inputmethods/evscript/default.nix1
-rw-r--r--pkgs/tools/inputmethods/evsieve/default.nix1
-rw-r--r--pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix1
-rw-r--r--pkgs/tools/inputmethods/gebaar-libinput/default.nix1
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-cangjie/default.nix1
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix1
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix1
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix1
-rw-r--r--pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix1
-rw-r--r--pkgs/tools/inputmethods/interception-tools/caps2esc.nix1
-rw-r--r--pkgs/tools/inputmethods/keyfuzz/default.nix1
-rw-r--r--pkgs/tools/inputmethods/libinput-gestures/default.nix1
-rw-r--r--pkgs/tools/inputmethods/lisgd/default.nix1
-rw-r--r--pkgs/tools/inputmethods/m17n-db/default.nix1
-rw-r--r--pkgs/tools/inputmethods/nabi/default.nix1
-rw-r--r--pkgs/tools/inputmethods/remote-touchpad/default.nix1
-rw-r--r--pkgs/tools/inputmethods/touchegg/default.nix1
-rw-r--r--pkgs/tools/inputmethods/xlibinput_calibrator/default.nix1
-rw-r--r--pkgs/tools/misc/0x/default.nix1
-rw-r--r--pkgs/tools/misc/3mux/default.nix1
-rw-r--r--pkgs/tools/misc/SP800-90B_EntropyAssessment/default.nix2
-rw-r--r--pkgs/tools/misc/altserver-linux/default.nix2
-rw-r--r--pkgs/tools/misc/autojump/default.nix1
-rw-r--r--pkgs/tools/misc/bepasty/default.nix4
-rw-r--r--pkgs/tools/misc/chezmoi/default.nix6
-rw-r--r--pkgs/tools/misc/clipster/default.nix2
-rw-r--r--pkgs/tools/misc/diffoscope/default.nix4
-rw-r--r--pkgs/tools/misc/domine/default.nix1
-rw-r--r--pkgs/tools/misc/dooit/default.nix1
-rw-r--r--pkgs/tools/misc/eludris/default.nix1
-rw-r--r--pkgs/tools/misc/esphome/dashboard.nix4
-rw-r--r--pkgs/tools/misc/esphome/default.nix12
-rw-r--r--pkgs/tools/misc/fastfetch/default.nix2
-rw-r--r--pkgs/tools/misc/fclones/gui.nix1
-rw-r--r--pkgs/tools/misc/fedifetcher/default.nix6
-rw-r--r--pkgs/tools/misc/gosu/default.nix1
-rw-r--r--pkgs/tools/misc/hdf5/default.nix18
-rw-r--r--pkgs/tools/misc/i3minator/default.nix1
-rw-r--r--pkgs/tools/misc/ili2c/default.nix4
-rw-r--r--pkgs/tools/misc/kalker/default.nix6
-rw-r--r--pkgs/tools/misc/libbitcoin/libbitcoin-client.nix2
-rw-r--r--pkgs/tools/misc/libbitcoin/libbitcoin-explorer.nix3
-rw-r--r--pkgs/tools/misc/libbitcoin/libbitcoin-network.nix2
-rw-r--r--pkgs/tools/misc/libbitcoin/libbitcoin-protocol.nix2
-rw-r--r--pkgs/tools/misc/libbitcoin/libbitcoin.nix2
-rw-r--r--pkgs/tools/misc/linux-logo/default.nix1
-rw-r--r--pkgs/tools/misc/map/default.nix1
-rw-r--r--pkgs/tools/misc/mise/default.nix6
-rw-r--r--pkgs/tools/misc/moar/default.nix4
-rw-r--r--pkgs/tools/misc/neo-cowsay/default.nix1
-rw-r--r--pkgs/tools/misc/ollama/default.nix5
-rw-r--r--pkgs/tools/misc/onefetch/default.nix6
-rw-r--r--pkgs/tools/misc/opentelemetry-collector/contrib.nix12
-rw-r--r--pkgs/tools/misc/pb/default.nix2
-rw-r--r--pkgs/tools/misc/pgbadger/default.nix46
-rw-r--r--pkgs/tools/misc/plantuml/plantuml-c4.nix1
-rw-r--r--pkgs/tools/misc/pokeget-rs/default.nix6
-rw-r--r--pkgs/tools/misc/pspg/default.nix4
-rw-r--r--pkgs/tools/misc/pubs/default.nix1
-rw-r--r--pkgs/tools/misc/qrscan/default.nix1
-rw-r--r--pkgs/tools/misc/r3ctl/default.nix1
-rw-r--r--pkgs/tools/misc/remind/default.nix4
-rw-r--r--pkgs/tools/misc/riemann-c-client/default.nix1
-rw-r--r--pkgs/tools/misc/scdl/default.nix4
-rw-r--r--pkgs/tools/misc/star-history/default.nix6
-rw-r--r--pkgs/tools/misc/starship/default.nix10
-rw-r--r--pkgs/tools/misc/steampipe/default.nix2
-rw-r--r--pkgs/tools/misc/thefuck/default.nix6
-rw-r--r--pkgs/tools/misc/tkman/default.nix1
-rw-r--r--pkgs/tools/misc/tmuxp/default.nix4
-rw-r--r--pkgs/tools/misc/ttfautohint/default.nix1
-rw-r--r--pkgs/tools/misc/turbo/default.nix1
-rw-r--r--pkgs/tools/misc/upower-notify/default.nix1
-rw-r--r--pkgs/tools/misc/url-parser/default.nix6
-rw-r--r--pkgs/tools/misc/wacomtablet/default.nix1
-rw-r--r--pkgs/tools/misc/wv2/default.nix1
-rw-r--r--pkgs/tools/misc/z-lua/default.nix4
-rw-r--r--pkgs/tools/networking/6tunnel/default.nix1
-rw-r--r--pkgs/tools/networking/airgeddon/default.nix1
-rw-r--r--pkgs/tools/networking/bwm-ng/default.nix1
-rw-r--r--pkgs/tools/networking/cantoolz/default.nix1
-rw-r--r--pkgs/tools/networking/carddav-util/default.nix1
-rw-r--r--pkgs/tools/networking/cfspeedtest/default.nix6
-rw-r--r--pkgs/tools/networking/cloud-custodian/default.nix1
-rw-r--r--pkgs/tools/networking/cmst/default.nix1
-rw-r--r--pkgs/tools/networking/curl-impersonate/default.nix11
-rw-r--r--pkgs/tools/networking/dd-agent/datadog-process-agent.nix1
-rw-r--r--pkgs/tools/networking/ddns-go/default.nix4
-rw-r--r--pkgs/tools/networking/decode-spam-headers/default.nix1
-rw-r--r--pkgs/tools/networking/discord-sh/default.nix1
-rw-r--r--pkgs/tools/networking/dnschef/default.nix1
-rw-r--r--pkgs/tools/networking/dnstwist/default.nix1
-rw-r--r--pkgs/tools/networking/dnsviz/default.nix1
-rw-r--r--pkgs/tools/networking/evillimiter/default.nix1
-rw-r--r--pkgs/tools/networking/flannel/default.nix6
-rw-r--r--pkgs/tools/networking/flannel/plugin.nix1
-rw-r--r--pkgs/tools/networking/gandi-cli/default.nix1
-rw-r--r--pkgs/tools/networking/gmrender-resurrect/default.nix1
-rw-r--r--pkgs/tools/networking/gnirehtet/default.nix1
-rw-r--r--pkgs/tools/networking/godns/default.nix39
-rw-r--r--pkgs/tools/networking/gost/default.nix14
-rw-r--r--pkgs/tools/networking/gp-saml-gui/default.nix1
-rw-r--r--pkgs/tools/networking/haguichi/default.nix1
-rw-r--r--pkgs/tools/networking/hblock/default.nix1
-rw-r--r--pkgs/tools/networking/http-prompt/default.nix1
-rw-r--r--pkgs/tools/networking/httplz/default.nix1
-rw-r--r--pkgs/tools/networking/httpstat/default.nix1
-rw-r--r--pkgs/tools/networking/ifwifi/default.nix1
-rw-r--r--pkgs/tools/networking/imapsync/default.nix1
-rw-r--r--pkgs/tools/networking/iperf3d/default.nix1
-rw-r--r--pkgs/tools/networking/ipfetch/default.nix1
-rw-r--r--pkgs/tools/networking/ipgrep/default.nix1
-rw-r--r--pkgs/tools/networking/kea/default.nix1
-rw-r--r--pkgs/tools/networking/labctl/default.nix12
-rw-r--r--pkgs/tools/networking/linkchecker/default.nix1
-rw-r--r--pkgs/tools/networking/mbidled/default.nix13
-rw-r--r--pkgs/tools/networking/modemmanager/default.nix4
-rw-r--r--pkgs/tools/networking/moodle-dl/default.nix1
-rw-r--r--pkgs/tools/networking/mozillavpn/default.nix1
-rw-r--r--pkgs/tools/networking/muffet/default.nix6
-rw-r--r--pkgs/tools/networking/mutt-ics/default.nix1
-rw-r--r--pkgs/tools/networking/narrowlink/default.nix6
-rw-r--r--pkgs/tools/networking/networkd-dispatcher/default.nix1
-rw-r--r--pkgs/tools/networking/networkd-notify/default.nix1
-rw-r--r--pkgs/tools/networking/networkmanager/default.nix4
-rw-r--r--pkgs/tools/networking/networkmanager/dmenu/default.nix1
-rw-r--r--pkgs/tools/networking/networkmanager/fix-install-paths.patch4
-rw-r--r--pkgs/tools/networking/networkmanager/fix-paths.patch48
-rw-r--r--pkgs/tools/networking/networkmanager/tray.nix1
-rw-r--r--pkgs/tools/networking/nikto/default.nix1
-rw-r--r--pkgs/tools/networking/norouter/default.nix3
-rw-r--r--pkgs/tools/networking/nss-mdns/default.nix6
-rw-r--r--pkgs/tools/networking/nxdomain/default.nix1
-rw-r--r--pkgs/tools/networking/nyx/default.nix1
-rw-r--r--pkgs/tools/networking/nzbget/default.nix14
-rw-r--r--pkgs/tools/networking/openresolv/default.nix1
-rw-r--r--pkgs/tools/networking/p2p/gtk-gnutella/default.nix1
-rw-r--r--pkgs/tools/networking/p2p/tahoe-lafs/default.nix1
-rw-r--r--pkgs/tools/networking/persepolis/default.nix1
-rw-r--r--pkgs/tools/networking/picosnitch/default.nix1
-rw-r--r--pkgs/tools/networking/pirate-get/default.nix1
-rw-r--r--pkgs/tools/networking/polygon-cli/default.nix1
-rw-r--r--pkgs/tools/networking/ratman/default.nix2
-rw-r--r--pkgs/tools/networking/s3cmd/default.nix1
-rw-r--r--pkgs/tools/networking/saldl/default.nix2
-rw-r--r--pkgs/tools/networking/sish/default.nix8
-rw-r--r--pkgs/tools/networking/sitespeed-io/default.nix6
-rw-r--r--pkgs/tools/networking/snowflake/default.nix6
-rw-r--r--pkgs/tools/networking/sockdump/default.nix9
-rw-r--r--pkgs/tools/networking/sshoogr/default.nix1
-rw-r--r--pkgs/tools/networking/swaks/default.nix1
-rw-r--r--pkgs/tools/networking/telepresence/default.nix1
-rw-r--r--pkgs/tools/networking/termshark/default.nix1
-rw-r--r--pkgs/tools/networking/tinystatus/default.nix1
-rw-r--r--pkgs/tools/networking/tuntox/default.nix1
-rw-r--r--pkgs/tools/networking/udp2raw/default.nix1
-rw-r--r--pkgs/tools/networking/uget-integrator/default.nix1
-rw-r--r--pkgs/tools/networking/unbound/default.nix30
-rw-r--r--pkgs/tools/networking/updog/default.nix1
-rw-r--r--pkgs/tools/networking/urlwatch/default.nix1
-rw-r--r--pkgs/tools/networking/v2ray/default.nix5
-rw-r--r--pkgs/tools/networking/vpn-slice/default.nix1
-rw-r--r--pkgs/tools/networking/vpnc-scripts/default.nix1
-rw-r--r--pkgs/tools/networking/whatip/default.nix1
-rw-r--r--pkgs/tools/networking/wifish/default.nix1
-rw-r--r--pkgs/tools/networking/wuzz/default.nix2
-rw-r--r--pkgs/tools/networking/xray/default.nix1
-rw-r--r--pkgs/tools/nix/cached-nix-shell/default.nix1
-rw-r--r--pkgs/tools/nix/dnadd/default.nix1
-rw-r--r--pkgs/tools/nix/nar-serve/default.nix1
-rw-r--r--pkgs/tools/nix/nix-init/default.nix1
-rw-r--r--pkgs/tools/nix/nix-melt/default.nix1
-rw-r--r--pkgs/tools/nix/nix-query-tree-viewer/default.nix1
-rw-r--r--pkgs/tools/nix/nix-store-gcs-proxy/default.nix1
-rw-r--r--pkgs/tools/nix/nixdoc/default.nix1
-rw-r--r--pkgs/tools/nix/nixel/default.nix1
-rw-r--r--pkgs/tools/nix/nixos-render-docs/default.nix1
-rw-r--r--pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/html.py5
-rw-r--r--pkgs/tools/nix/nixpkgs-lint/default.nix1
-rw-r--r--pkgs/tools/nix/npins/default.nix1
-rw-r--r--pkgs/tools/nix/rnix-hashes/default.nix1
-rw-r--r--pkgs/tools/nix/zon2nix/default.nix1
-rw-r--r--pkgs/tools/package-management/conda/default.nix1
-rw-r--r--pkgs/tools/package-management/disnix/DisnixWebService/default.nix1
-rw-r--r--pkgs/tools/package-management/dpkg/default.nix4
-rw-r--r--pkgs/tools/package-management/gx/go/default.nix1
-rw-r--r--pkgs/tools/package-management/harmonia/default.nix15
-rw-r--r--pkgs/tools/package-management/nix-doc/default.nix25
-rw-r--r--pkgs/tools/package-management/nix-du/default.nix5
-rw-r--r--pkgs/tools/package-management/nix-update-source/default.nix1
-rw-r--r--pkgs/tools/package-management/nix-update/default.nix4
-rw-r--r--pkgs/tools/package-management/nix/default.nix8
-rw-r--r--pkgs/tools/package-management/pacman/default.nix2
-rw-r--r--pkgs/tools/package-management/wapm/cli/default.nix1
-rw-r--r--pkgs/tools/security/2fa/default.nix1
-rw-r--r--pkgs/tools/security/acltoolkit/default.nix1
-rw-r--r--pkgs/tools/security/adenum/default.nix1
-rw-r--r--pkgs/tools/security/aesfix/default.nix1
-rw-r--r--pkgs/tools/security/aeskeyfind/default.nix1
-rw-r--r--pkgs/tools/security/afl/libdislocator.nix1
-rw-r--r--pkgs/tools/security/age-plugin-ledger/default.nix1
-rw-r--r--pkgs/tools/security/age-plugin-tpm/default.nix1
-rw-r--r--pkgs/tools/security/age-plugin-yubikey/default.nix1
-rw-r--r--pkgs/tools/security/aide/default.nix1
-rw-r--r--pkgs/tools/security/aiodnsbrute/default.nix1
-rw-r--r--pkgs/tools/security/alterx/default.nix1
-rw-r--r--pkgs/tools/security/amoco/default.nix1
-rw-r--r--pkgs/tools/security/apachetomcatscanner/default.nix1
-rw-r--r--pkgs/tools/security/argocd-vault-plugin/default.nix1
-rw-r--r--pkgs/tools/security/arti/default.nix1
-rw-r--r--pkgs/tools/security/arubaotp-seed-extractor/default.nix1
-rw-r--r--pkgs/tools/security/asc-key-to-qr-code-gif/default.nix1
-rw-r--r--pkgs/tools/security/asnmap/default.nix1
-rw-r--r--pkgs/tools/security/atomic-operator/default.nix1
-rw-r--r--pkgs/tools/security/authz0/default.nix1
-rw-r--r--pkgs/tools/security/aws-iam-authenticator/default.nix1
-rw-r--r--pkgs/tools/security/b2sum/default.nix1
-rw-r--r--pkgs/tools/security/b3sum/default.nix1
-rw-r--r--pkgs/tools/security/badchars/default.nix1
-rw-r--r--pkgs/tools/security/badrobot/default.nix1
-rw-r--r--pkgs/tools/security/binbloom/default.nix1
-rw-r--r--pkgs/tools/security/bmrsa/11.nix1
-rw-r--r--pkgs/tools/security/boofuzz/default.nix1
-rw-r--r--pkgs/tools/security/browserpass/default.nix1
-rw-r--r--pkgs/tools/security/bruteforce-luks/default.nix1
-rw-r--r--pkgs/tools/security/brutespray/default.nix1
-rw-r--r--pkgs/tools/security/buttercup-desktop/default.nix1
-rw-r--r--pkgs/tools/security/cariddi/default.nix1
-rw-r--r--pkgs/tools/security/cdxgen/default.nix6
-rw-r--r--pkgs/tools/security/certdump/default.nix1
-rw-r--r--pkgs/tools/security/certgraph/default.nix1
-rw-r--r--pkgs/tools/security/certinfo/default.nix1
-rw-r--r--pkgs/tools/security/certstrap/default.nix1
-rw-r--r--pkgs/tools/security/certsync/default.nix9
-rw-r--r--pkgs/tools/security/cewl/default.nix1
-rw-r--r--pkgs/tools/security/cfripper/default.nix1
-rw-r--r--pkgs/tools/security/chain-bench/default.nix1
-rw-r--r--pkgs/tools/security/chainsaw/default.nix1
-rw-r--r--pkgs/tools/security/cherrybomb/default.nix1
-rw-r--r--pkgs/tools/security/chrome-token-signing/default.nix1
-rw-r--r--pkgs/tools/security/cirrusgo/default.nix1
-rw-r--r--pkgs/tools/security/clairvoyance/default.nix1
-rw-r--r--pkgs/tools/security/cliam/default.nix1
-rw-r--r--pkgs/tools/security/cloudbrute/default.nix1
-rw-r--r--pkgs/tools/security/cloudfox/default.nix1
-rw-r--r--pkgs/tools/security/cloudhunter/default.nix1
-rw-r--r--pkgs/tools/security/cloudlist/default.nix1
-rw-r--r--pkgs/tools/security/cmospwd/default.nix1
-rw-r--r--pkgs/tools/security/cnquery/default.nix6
-rw-r--r--pkgs/tools/security/cnspec/default.nix6
-rw-r--r--pkgs/tools/security/coercer/default.nix1
-rw-r--r--pkgs/tools/security/commix/default.nix1
-rw-r--r--pkgs/tools/security/cosign/default.nix1
-rw-r--r--pkgs/tools/security/coze/default.nix1
-rw-r--r--pkgs/tools/security/crackql/default.nix1
-rw-r--r--pkgs/tools/security/crackxls/default.nix1
-rw-r--r--pkgs/tools/security/credential-detector/default.nix1
-rw-r--r--pkgs/tools/security/creds/default.nix1
-rw-r--r--pkgs/tools/security/credslayer/default.nix1
-rw-r--r--pkgs/tools/security/crlfsuite/default.nix1
-rw-r--r--pkgs/tools/security/crlfuzz/default.nix1
-rw-r--r--pkgs/tools/security/crowbar/default.nix1
-rw-r--r--pkgs/tools/security/crunch/default.nix1
-rw-r--r--pkgs/tools/security/cryptomator/default.nix1
-rw-r--r--pkgs/tools/security/decoder/default.nix1
-rw-r--r--pkgs/tools/security/deepsecrets/default.nix1
-rw-r--r--pkgs/tools/security/dieharder/default.nix1
-rw-r--r--pkgs/tools/security/dirstalk/default.nix1
-rw-r--r--pkgs/tools/security/dismap/default.nix1
-rw-r--r--pkgs/tools/security/dnsenum/default.nix1
-rw-r--r--pkgs/tools/security/dnspeep/default.nix1
-rw-r--r--pkgs/tools/security/dnsrecon/default.nix1
-rw-r--r--pkgs/tools/security/doas/default.nix1
-rw-r--r--pkgs/tools/security/dontgo403/default.nix5
-rw-r--r--pkgs/tools/security/doona/default.nix1
-rw-r--r--pkgs/tools/security/doppler/default.nix1
-rw-r--r--pkgs/tools/security/dorkscout/default.nix1
-rw-r--r--pkgs/tools/security/earlybird/default.nix1
-rw-r--r--pkgs/tools/security/ec2stepshell/default.nix1
-rw-r--r--pkgs/tools/security/ecdsatool/default.nix1
-rw-r--r--pkgs/tools/security/enc/default.nix1
-rw-r--r--pkgs/tools/security/enchive/default.nix1
-rw-r--r--pkgs/tools/security/enum4linux-ng/default.nix1
-rw-r--r--pkgs/tools/security/enum4linux/default.nix1
-rw-r--r--pkgs/tools/security/enumerepo/default.nix1
-rw-r--r--pkgs/tools/security/evil-winrm/default.nix1
-rw-r--r--pkgs/tools/security/evtx/default.nix1
-rw-r--r--pkgs/tools/security/expliot/default.nix1
-rw-r--r--pkgs/tools/security/exploitdb/default.nix4
-rw-r--r--pkgs/tools/security/extrude/default.nix1
-rw-r--r--pkgs/tools/security/faraday-agent-dispatcher/default.nix1
-rw-r--r--pkgs/tools/security/faraday-cli/default.nix1
-rw-r--r--pkgs/tools/security/ffuf/default.nix1
-rw-r--r--pkgs/tools/security/fierce/default.nix1
-rw-r--r--pkgs/tools/security/fingerprintx/default.nix1
-rw-r--r--pkgs/tools/security/firefox_decrypt/default.nix1
-rw-r--r--pkgs/tools/security/fpm2/default.nix1
-rw-r--r--pkgs/tools/security/freeze/default.nix1
-rw-r--r--pkgs/tools/security/fulcio/default.nix1
-rw-r--r--pkgs/tools/security/galer/default.nix1
-rw-r--r--pkgs/tools/security/gallia/default.nix5
-rw-r--r--pkgs/tools/security/gau/default.nix1
-rw-r--r--pkgs/tools/security/gencfsm/default.nix1
-rw-r--r--pkgs/tools/security/genpass/default.nix1
-rw-r--r--pkgs/tools/security/ggshield/default.nix1
-rw-r--r--pkgs/tools/security/ghauri/default.nix1
-rw-r--r--pkgs/tools/security/ghdorker/default.nix1
-rw-r--r--pkgs/tools/security/ghidra/build.nix1
-rw-r--r--pkgs/tools/security/ghidra/default.nix1
-rw-r--r--pkgs/tools/security/ghost/default.nix1
-rw-r--r--pkgs/tools/security/gitjacker/default.nix1
-rw-r--r--pkgs/tools/security/gnupg-pkcs11-scd/default.nix1
-rw-r--r--pkgs/tools/security/go-cve-search/default.nix1
-rw-r--r--pkgs/tools/security/go-exploitdb/default.nix1
-rw-r--r--pkgs/tools/security/goblob/default.nix1
-rw-r--r--pkgs/tools/security/gobuster/default.nix1
-rw-r--r--pkgs/tools/security/gomapenum/default.nix1
-rw-r--r--pkgs/tools/security/gopass/default.nix6
-rw-r--r--pkgs/tools/security/gopass/git-credential.nix15
-rw-r--r--pkgs/tools/security/gopass/hibp.nix15
-rw-r--r--pkgs/tools/security/gopass/jsonapi.nix15
-rw-r--r--pkgs/tools/security/gopass/summon.nix15
-rw-r--r--pkgs/tools/security/gorilla-bin/default.nix1
-rw-r--r--pkgs/tools/security/gospider/default.nix1
-rw-r--r--pkgs/tools/security/gotestwaf/default.nix5
-rw-r--r--pkgs/tools/security/gotrue/default.nix1
-rw-r--r--pkgs/tools/security/gotrue/supabase.nix1
-rw-r--r--pkgs/tools/security/goverview/default.nix1
-rw-r--r--pkgs/tools/security/govulncheck/default.nix1
-rw-r--r--pkgs/tools/security/gowitness/default.nix1
-rw-r--r--pkgs/tools/security/graphinder/default.nix1
-rw-r--r--pkgs/tools/security/graphqlmap/default.nix1
-rw-r--r--pkgs/tools/security/graphw00f/default.nix1
-rw-r--r--pkgs/tools/security/grype/default.nix1
-rw-r--r--pkgs/tools/security/hakrawler/default.nix1
-rw-r--r--pkgs/tools/security/hash_extender/default.nix1
-rw-r--r--pkgs/tools/security/hashcat/default.nix5
-rw-r--r--pkgs/tools/security/hashrat/default.nix1
-rw-r--r--pkgs/tools/security/haveged/default.nix1
-rw-r--r--pkgs/tools/security/hfinger/default.nix1
-rw-r--r--pkgs/tools/security/holehe/default.nix1
-rw-r--r--pkgs/tools/security/honeytrap/default.nix1
-rw-r--r--pkgs/tools/security/hstsparser/default.nix1
-rw-r--r--pkgs/tools/security/httpdump/default.nix1
-rw-r--r--pkgs/tools/security/httpx/default.nix1
-rw-r--r--pkgs/tools/security/iaito/default.nix1
-rw-r--r--pkgs/tools/security/ibm-sw-tpm2/default.nix1
-rw-r--r--pkgs/tools/security/ifdnfc/default.nix1
-rw-r--r--pkgs/tools/security/imdshift/default.nix1
-rw-r--r--pkgs/tools/security/inql/default.nix1
-rw-r--r--pkgs/tools/security/ioccheck/default.nix1
-rw-r--r--pkgs/tools/security/ipscan/default.nix1
-rw-r--r--pkgs/tools/security/isolate/default.nix1
-rw-r--r--pkgs/tools/security/jaeles/default.nix1
-rw-r--r--pkgs/tools/security/jd-gui/default.nix1
-rw-r--r--pkgs/tools/security/joincap/default.nix1
-rw-r--r--pkgs/tools/security/jsubfinder/default.nix1
-rw-r--r--pkgs/tools/security/jwx/default.nix1
-rw-r--r--pkgs/tools/security/katana/default.nix1
-rw-r--r--pkgs/tools/security/kbs2/default.nix1
-rw-r--r--pkgs/tools/security/kdigger/default.nix1
-rw-r--r--pkgs/tools/security/keepwn/default.nix1
-rw-r--r--pkgs/tools/security/kerbrute/default.nix1
-rw-r--r--pkgs/tools/security/kestrel/default.nix1
-rw-r--r--pkgs/tools/security/keybase/gui.nix1
-rw-r--r--pkgs/tools/security/keycard-cli/default.nix1
-rw-r--r--pkgs/tools/security/keyscope/default.nix1
-rw-r--r--pkgs/tools/security/kiterunner/default.nix1
-rw-r--r--pkgs/tools/security/knockpy/default.nix1
-rw-r--r--pkgs/tools/security/knowsmore/default.nix1
-rw-r--r--pkgs/tools/security/kpcli/default.nix1
-rw-r--r--pkgs/tools/security/kube-bench/default.nix1
-rw-r--r--pkgs/tools/security/kubeaudit/default.nix1
-rw-r--r--pkgs/tools/security/kubeclarity/default.nix1
-rw-r--r--pkgs/tools/security/kubernetes-polaris/default.nix1
-rw-r--r--pkgs/tools/security/kubescape/default.nix1
-rw-r--r--pkgs/tools/security/kubesec/default.nix1
-rw-r--r--pkgs/tools/security/ldapmonitor/default.nix1
-rw-r--r--pkgs/tools/security/ldeep/default.nix1
-rw-r--r--pkgs/tools/security/lesspass-cli/default.nix1
-rw-r--r--pkgs/tools/security/lil-pwny/default.nix1
-rw-r--r--pkgs/tools/security/linux-exploit-suggester/default.nix1
-rw-r--r--pkgs/tools/security/log4j-scan/default.nix1
-rw-r--r--pkgs/tools/security/log4j-sniffer/default.nix1
-rw-r--r--pkgs/tools/security/lynis/default.nix5
-rw-r--r--pkgs/tools/security/masscan/default.nix1
-rw-r--r--pkgs/tools/security/medusa/default.nix1
-rw-r--r--pkgs/tools/security/melt/default.nix7
-rw-r--r--pkgs/tools/security/metasploit/Gemfile2
-rw-r--r--pkgs/tools/security/metasploit/Gemfile.lock14
-rw-r--r--pkgs/tools/security/metasploit/default.nix4
-rw-r--r--pkgs/tools/security/metasploit/gemset.nix14
-rw-r--r--pkgs/tools/security/mfcuk/default.nix1
-rw-r--r--pkgs/tools/security/mfoc/default.nix1
-rw-r--r--pkgs/tools/security/minica/default.nix1
-rw-r--r--pkgs/tools/security/mitm6/default.nix1
-rw-r--r--pkgs/tools/security/mitmproxy2swagger/default.nix1
-rw-r--r--pkgs/tools/security/mkpasswd/default.nix1
-rw-r--r--pkgs/tools/security/mkrand/default.nix1
-rw-r--r--pkgs/tools/security/mktemp/default.nix1
-rw-r--r--pkgs/tools/security/mokutil/default.nix5
-rw-r--r--pkgs/tools/security/monsoon/default.nix1
-rw-r--r--pkgs/tools/security/mpw/default.nix1
-rw-r--r--pkgs/tools/security/msfpc/default.nix1
-rw-r--r--pkgs/tools/security/mx-takeover/default.nix1
-rw-r--r--pkgs/tools/security/naabu/default.nix1
-rw-r--r--pkgs/tools/security/nasty/default.nix1
-rw-r--r--pkgs/tools/security/nbtscanner/default.nix1
-rw-r--r--pkgs/tools/security/ncrack/default.nix1
-rw-r--r--pkgs/tools/security/nitrokey-app/default.nix1
-rw-r--r--pkgs/tools/security/nmap-formatter/default.nix1
-rw-r--r--pkgs/tools/security/nmap/qt.nix1
-rw-r--r--pkgs/tools/security/noseyparker/default.nix1
-rw-r--r--pkgs/tools/security/nosqli/default.nix1
-rw-r--r--pkgs/tools/security/notary/default.nix1
-rw-r--r--pkgs/tools/security/ntlmrecon/default.nix1
-rw-r--r--pkgs/tools/security/nuclei/default.nix6
-rw-r--r--pkgs/tools/security/nwipe/default.nix1
-rw-r--r--pkgs/tools/security/oauth2c/default.nix1
-rw-r--r--pkgs/tools/security/octosuite/default.nix1
-rw-r--r--pkgs/tools/security/onioncircuits/default.nix1
-rw-r--r--pkgs/tools/security/onlykey-cli/default.nix1
-rw-r--r--pkgs/tools/security/open-ecard/default.nix1
-rw-r--r--pkgs/tools/security/openrisk/default.nix1
-rw-r--r--pkgs/tools/security/orjail/default.nix1
-rw-r--r--pkgs/tools/security/ospd-openvas/default.nix6
-rw-r--r--pkgs/tools/security/osv-detector/default.nix1
-rw-r--r--pkgs/tools/security/osv-scanner/default.nix7
-rw-r--r--pkgs/tools/security/otpauth/default.nix1
-rw-r--r--pkgs/tools/security/ots/default.nix1
-rw-r--r--pkgs/tools/security/pamtester/default.nix1
-rw-r--r--pkgs/tools/security/paperkey/default.nix1
-rw-r--r--pkgs/tools/security/pass/extensions/import.nix1
-rw-r--r--pkgs/tools/security/pass/rofi-pass.nix1
-rw-r--r--pkgs/tools/security/pass/wofi-pass.nix4
-rw-r--r--pkgs/tools/security/pass2csv/default.nix1
-rw-r--r--pkgs/tools/security/passphrase2pgp/default.nix1
-rw-r--r--pkgs/tools/security/pcsc-cyberjack/default.nix1
-rw-r--r--pkgs/tools/security/pcsclite/default.nix4
-rw-r--r--pkgs/tools/security/pdfcrack/default.nix1
-rw-r--r--pkgs/tools/security/pgpdump/default.nix1
-rw-r--r--pkgs/tools/security/plecost/default.nix1
-rw-r--r--pkgs/tools/security/pomerium-cli/default.nix1
-rw-r--r--pkgs/tools/security/posteid-seed-extractor/default.nix1
-rw-r--r--pkgs/tools/security/pretender/default.nix1
-rw-r--r--pkgs/tools/security/proxmark3/default.nix4
-rw-r--r--pkgs/tools/security/pwdsafety/default.nix1
-rw-r--r--pkgs/tools/security/pwncat/default.nix1
-rw-r--r--pkgs/tools/security/qdigidoc/default.nix1
-rw-r--r--pkgs/tools/security/quill-qr/default.nix1
-rw-r--r--pkgs/tools/security/quill/default.nix1
-rw-r--r--pkgs/tools/security/radamsa/default.nix1
-rw-r--r--pkgs/tools/security/redwax-tool/default.nix1
-rw-r--r--pkgs/tools/security/regpg/default.nix1
-rw-r--r--pkgs/tools/security/responder/default.nix1
-rw-r--r--pkgs/tools/security/ripasso/cursive.nix1
-rw-r--r--pkgs/tools/security/rustscan/default.nix1
-rw-r--r--pkgs/tools/security/s5/default.nix1
-rw-r--r--pkgs/tools/security/safe/default.nix1
-rw-r--r--pkgs/tools/security/saml2aws/default.nix1
-rw-r--r--pkgs/tools/security/sammler/default.nix1
-rw-r--r--pkgs/tools/security/sbctl/default.nix1
-rw-r--r--pkgs/tools/security/scilla/default.nix1
-rw-r--r--pkgs/tools/security/scorecard/default.nix1
-rw-r--r--pkgs/tools/security/scrypt/default.nix1
-rw-r--r--pkgs/tools/security/sdlookup/default.nix1
-rw-r--r--pkgs/tools/security/secretscanner/default.nix1
-rw-r--r--pkgs/tools/security/semgrep/semgrep-core.nix1
-rw-r--r--pkgs/tools/security/sequoia-sqop/default.nix6
-rw-r--r--pkgs/tools/security/shc/default.nix1
-rw-r--r--pkgs/tools/security/shisho/default.nix1
-rw-r--r--pkgs/tools/security/signify/default.nix1
-rw-r--r--pkgs/tools/security/silenthound/default.nix9
-rw-r--r--pkgs/tools/security/slsa-verifier/default.nix1
-rw-r--r--pkgs/tools/security/smbmap/default.nix1
-rw-r--r--pkgs/tools/security/snallygaster/default.nix1
-rw-r--r--pkgs/tools/security/snow/default.nix1
-rw-r--r--pkgs/tools/security/snowcat/default.nix1
-rw-r--r--pkgs/tools/security/spectre-meltdown-checker/default.nix1
-rw-r--r--pkgs/tools/security/spyre/default.nix1
-rw-r--r--pkgs/tools/security/ssdeep/default.nix1
-rw-r--r--pkgs/tools/security/ssh-audit/default.nix1
-rw-r--r--pkgs/tools/security/ssh-to-pgp/default.nix1
-rw-r--r--pkgs/tools/security/sshchecker/default.nix1
-rw-r--r--pkgs/tools/security/sshguard/default.nix1
-rw-r--r--pkgs/tools/security/sshocker/default.nix1
-rw-r--r--pkgs/tools/security/sshuttle/default.nix1
-rw-r--r--pkgs/tools/security/sslscan/default.nix1
-rw-r--r--pkgs/tools/security/stacs/default.nix1
-rw-r--r--pkgs/tools/security/step-kms-plugin/default.nix6
-rw-r--r--pkgs/tools/security/su-exec/default.nix1
-rw-r--r--pkgs/tools/security/subjs/default.nix1
-rw-r--r--pkgs/tools/security/swaggerhole/default.nix1
-rw-r--r--pkgs/tools/security/teler/default.nix1
-rw-r--r--pkgs/tools/security/tell-me-your-secrets/default.nix1
-rw-r--r--pkgs/tools/security/terrascan/default.nix1
-rw-r--r--pkgs/tools/security/theharvester/default.nix5
-rw-r--r--pkgs/tools/security/threatest/default.nix1
-rw-r--r--pkgs/tools/security/tor/torsocks.nix1
-rw-r--r--pkgs/tools/security/tpm2-abrmd/default.nix1
-rw-r--r--pkgs/tools/security/tracee/default.nix1
-rw-r--r--pkgs/tools/security/trousers/default.nix1
-rw-r--r--pkgs/tools/security/truecrack/default.nix1
-rw-r--r--pkgs/tools/security/trueseeing/default.nix1
-rw-r--r--pkgs/tools/security/trufflehog/default.nix6
-rw-r--r--pkgs/tools/security/trustymail/default.nix1
-rw-r--r--pkgs/tools/security/uddup/default.nix1
-rw-r--r--pkgs/tools/security/udpx/default.nix1
-rw-r--r--pkgs/tools/security/urlhunter/default.nix1
-rw-r--r--pkgs/tools/security/usbrip/default.nix1
-rw-r--r--pkgs/tools/security/vals/default.nix7
-rw-r--r--pkgs/tools/security/vault-medusa/default.nix1
-rw-r--r--pkgs/tools/security/vault-ssh-plus/default.nix1
-rw-r--r--pkgs/tools/security/vault/default.nix2
-rw-r--r--pkgs/tools/security/verifpal/default.nix1
-rw-r--r--pkgs/tools/security/vexctl/default.nix1
-rw-r--r--pkgs/tools/security/vulnix/default.nix1
-rw-r--r--pkgs/tools/security/wad/default.nix1
-rw-r--r--pkgs/tools/security/waf-tester/default.nix1
-rw-r--r--pkgs/tools/security/wafw00f/default.nix1
-rw-r--r--pkgs/tools/security/web-eid-app/default.nix1
-rw-r--r--pkgs/tools/security/whatweb/default.nix1
-rw-r--r--pkgs/tools/security/wipe/default.nix1
-rw-r--r--pkgs/tools/security/xcat/default.nix1
-rw-r--r--pkgs/tools/security/xorex/default.nix1
-rw-r--r--pkgs/tools/security/xsser/default.nix1
-rw-r--r--pkgs/tools/security/xsubfind3r/default.nix1
-rw-r--r--pkgs/tools/security/yarGen/default.nix1
-rw-r--r--pkgs/tools/security/yersinia/default.nix1
-rw-r--r--pkgs/tools/security/yubikey-agent/default.nix1
-rw-r--r--pkgs/tools/security/yubikey-touch-detector/default.nix32
-rw-r--r--pkgs/tools/security/zdns/default.nix1
-rw-r--r--pkgs/tools/security/zgrab2/default.nix1
-rw-r--r--pkgs/tools/system/automatic-timezoned/default.nix6
-rw-r--r--pkgs/tools/system/btop/default.nix9
-rw-r--r--pkgs/tools/system/confd/default.nix19
-rw-r--r--pkgs/tools/system/freeipmi/default.nix4
-rw-r--r--pkgs/tools/system/goreman/default.nix1
-rw-r--r--pkgs/tools/system/illum/default.nix2
-rw-r--r--pkgs/tools/system/journalwatch/default.nix1
-rw-r--r--pkgs/tools/system/kanata/default.nix5
-rw-r--r--pkgs/tools/system/monit/default.nix2
-rw-r--r--pkgs/tools/system/netdata/go.d.plugin.nix1
-rw-r--r--pkgs/tools/system/nvtop/build-nvtop.nix90
-rw-r--r--pkgs/tools/system/nvtop/default.nix91
-rw-r--r--pkgs/tools/system/rsyslog/default.nix1
-rw-r--r--pkgs/tools/system/sleuthkit/default.nix76
-rw-r--r--pkgs/tools/system/zenith/default.nix1
-rw-r--r--pkgs/tools/text/a2ps/default.nix4
-rw-r--r--pkgs/tools/text/abbreviate/default.nix1
-rw-r--r--pkgs/tools/text/agrep/default.nix1
-rw-r--r--pkgs/tools/text/aha/default.nix1
-rw-r--r--pkgs/tools/text/align/default.nix1
-rw-r--r--pkgs/tools/text/anew/default.nix1
-rw-r--r--pkgs/tools/text/anewer/default.nix1
-rw-r--r--pkgs/tools/text/ansifilter/default.nix1
-rw-r--r--pkgs/tools/text/ascii/default.nix1
-rw-r--r--pkgs/tools/text/asciigraph/default.nix1
-rw-r--r--pkgs/tools/text/autocorrect/default.nix1
-rw-r--r--pkgs/tools/text/base16384/default.nix1
-rw-r--r--pkgs/tools/text/bashblog/default.nix1
-rw-r--r--pkgs/tools/text/book-summary/default.nix1
-rw-r--r--pkgs/tools/text/boxes/default.nix1
-rw-r--r--pkgs/tools/text/catdocx/default.nix1
-rw-r--r--pkgs/tools/text/cconv/default.nix1
-rw-r--r--pkgs/tools/text/chars/default.nix1
-rw-r--r--pkgs/tools/text/choose/default.nix1
-rw-r--r--pkgs/tools/text/cidrgrep/default.nix1
-rw-r--r--pkgs/tools/text/cmigemo/default.nix1
-rw-r--r--pkgs/tools/text/coloursum/default.nix1
-rw-r--r--pkgs/tools/text/comrak/default.nix1
-rw-r--r--pkgs/tools/text/convertlit/default.nix1
-rw-r--r--pkgs/tools/text/copyright-update/default.nix1
-rw-r--r--pkgs/tools/text/crowdin-cli/default.nix4
-rw-r--r--pkgs/tools/text/csvdiff/default.nix1
-rw-r--r--pkgs/tools/text/csview/default.nix1
-rw-r--r--pkgs/tools/text/dadadodo/default.nix1
-rw-r--r--pkgs/tools/text/dfmt/default.nix1
-rw-r--r--pkgs/tools/text/diffr/default.nix1
-rw-r--r--pkgs/tools/text/diffstat/default.nix1
-rw-r--r--pkgs/tools/text/difftastic/default.nix5
-rw-r--r--pkgs/tools/text/dirdiff/default.nix1
-rw-r--r--pkgs/tools/text/each/default.nix1
-rw-r--r--pkgs/tools/text/epubcheck/default.nix1
-rw-r--r--pkgs/tools/text/esh/default.nix1
-rw-r--r--pkgs/tools/text/fanficfare/default.nix1
-rw-r--r--pkgs/tools/text/fastmod/default.nix1
-rw-r--r--pkgs/tools/text/frangipanni/default.nix1
-rw-r--r--pkgs/tools/text/frawk/default.nix6
-rw-r--r--pkgs/tools/text/frogmouth/default.nix1
-rw-r--r--pkgs/tools/text/fst/default.nix1
-rw-r--r--pkgs/tools/text/gawk/gawkextlib.nix1
-rw-r--r--pkgs/tools/text/gjo/default.nix1
-rw-r--r--pkgs/tools/text/glogg/default.nix1
-rw-r--r--pkgs/tools/text/gnupatch/default.nix1
-rw-r--r--pkgs/tools/text/gtranslator/default.nix1
-rw-r--r--pkgs/tools/text/gtree/default.nix7
-rw-r--r--pkgs/tools/text/gucci/default.nix1
-rw-r--r--pkgs/tools/text/hcledit/default.nix1
-rw-r--r--pkgs/tools/text/highlight/default.nix1
-rw-r--r--pkgs/tools/text/html2text/default.nix1
-rw-r--r--pkgs/tools/text/huniq/default.nix1
-rw-r--r--pkgs/tools/text/hyx/default.nix1
-rw-r--r--pkgs/tools/text/invoice2data/default.nix1
-rw-r--r--pkgs/tools/text/jen/default.nix1
-rw-r--r--pkgs/tools/text/jotdown/default.nix7
-rw-r--r--pkgs/tools/text/jsawk/default.nix1
-rw-r--r--pkgs/tools/text/jumanpp/default.nix1
-rw-r--r--pkgs/tools/text/kdiff3/default.nix1
-rw-r--r--pkgs/tools/text/l2md/default.nix1
-rw-r--r--pkgs/tools/text/mairix/default.nix1
-rw-r--r--pkgs/tools/text/mark/default.nix1
-rw-r--r--pkgs/tools/text/markscribe/default.nix1
-rw-r--r--pkgs/tools/text/math-review/default.nix1
-rw-r--r--pkgs/tools/text/mawk/default.nix1
-rw-r--r--pkgs/tools/text/mb2md/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-admonish/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-cmdrun/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-d2/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-emojicodes/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-epub/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-footnote/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-graphviz/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-katex/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-kroki-preprocessor/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-linkcheck/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-man/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-mermaid/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-open-on-gh/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-pagetoc/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-pdf/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-plantuml/default.nix1
-rw-r--r--pkgs/tools/text/mdbook-toc/default.nix1
-rw-r--r--pkgs/tools/text/mdbook/default.nix1
-rw-r--r--pkgs/tools/text/mir-qualia/default.nix1
-rw-r--r--pkgs/tools/text/mmdoc/default.nix1
-rw-r--r--pkgs/tools/text/morsel/default.nix1
-rw-r--r--pkgs/tools/text/mpage/default.nix1
-rw-r--r--pkgs/tools/text/multitran/mtutils/default.nix1
-rw-r--r--pkgs/tools/text/nerdfix/default.nix1
-rw-r--r--pkgs/tools/text/nkf/default.nix1
-rw-r--r--pkgs/tools/text/odt2txt/default.nix1
-rw-r--r--pkgs/tools/text/papeer/default.nix1
-rw-r--r--pkgs/tools/text/paperoni/default.nix1
-rw-r--r--pkgs/tools/text/papertrail/default.nix1
-rw-r--r--pkgs/tools/text/par/default.nix1
-rw-r--r--pkgs/tools/text/pbgopy/default.nix1
-rw-r--r--pkgs/tools/text/peco/default.nix1
-rw-r--r--pkgs/tools/text/pinyin-tool/default.nix1
-rw-r--r--pkgs/tools/text/platinum-searcher/default.nix1
-rw-r--r--pkgs/tools/text/pn/default.nix1
-rw-r--r--pkgs/tools/text/podiff/default.nix1
-rw-r--r--pkgs/tools/text/poedit/default.nix1
-rw-r--r--pkgs/tools/text/pomsky/default.nix1
-rw-r--r--pkgs/tools/text/proselint/default.nix1
-rw-r--r--pkgs/tools/text/qprint/default.nix1
-rw-r--r--pkgs/tools/text/reckon/default.nix1
-rw-r--r--pkgs/tools/text/recode/default.nix1
-rw-r--r--pkgs/tools/text/reveal-md/default.nix1
-rw-r--r--pkgs/tools/text/rgxg/default.nix1
-rw-r--r--pkgs/tools/text/riffdiff/default.nix6
-rw-r--r--pkgs/tools/text/rnr/default.nix1
-rw-r--r--pkgs/tools/text/rosie/default.nix1
-rw-r--r--pkgs/tools/text/rpl/default.nix1
-rw-r--r--pkgs/tools/text/runiq/default.nix1
-rw-r--r--pkgs/tools/text/ruplacer/default.nix1
-rw-r--r--pkgs/tools/text/sad/default.nix12
-rw-r--r--pkgs/tools/text/scraper/default.nix1
-rw-r--r--pkgs/tools/text/sd/default.nix1
-rw-r--r--pkgs/tools/text/sgml/openjade/default.nix1
-rw-r--r--pkgs/tools/text/sgrep/default.nix1
-rw-r--r--pkgs/tools/text/shab/default.nix1
-rw-r--r--pkgs/tools/text/shocco/default.nix1
-rw-r--r--pkgs/tools/text/sift/default.nix1
-rw-r--r--pkgs/tools/text/smu/default.nix1
-rw-r--r--pkgs/tools/text/sorted-grep/default.nix1
-rw-r--r--pkgs/tools/text/subedit/default.nix1
-rw-r--r--pkgs/tools/text/tab/default.nix1
-rw-r--r--pkgs/tools/text/teip/default.nix1
-rw-r--r--pkgs/tools/text/termbook/default.nix1
-rw-r--r--pkgs/tools/text/tidy-viewer/default.nix1
-rw-r--r--pkgs/tools/text/tml/default.nix1
-rw-r--r--pkgs/tools/text/to-html/default.nix1
-rw-r--r--pkgs/tools/text/tuc/default.nix1
-rw-r--r--pkgs/tools/text/tv/default.nix1
-rw-r--r--pkgs/tools/text/txt2tags/default.nix1
-rw-r--r--pkgs/tools/text/unfurl/default.nix1
-rw-r--r--pkgs/tools/text/uniscribe/default.nix1
-rw-r--r--pkgs/tools/text/unrtf/default.nix1
-rw-r--r--pkgs/tools/text/untex/default.nix1
-rw-r--r--pkgs/tools/text/uwc/default.nix1
-rw-r--r--pkgs/tools/text/vale/default.nix4
-rw-r--r--pkgs/tools/text/vgrep/default.nix1
-rw-r--r--pkgs/tools/text/wdiff/default.nix1
-rw-r--r--pkgs/tools/text/wgetpaste/default.nix1
-rw-r--r--pkgs/tools/text/xidel/default.nix1
-rw-r--r--pkgs/tools/text/xml/xmlformat/default.nix1
-rw-r--r--pkgs/tools/text/xml/xmloscopy/default.nix1
-rw-r--r--pkgs/tools/text/xml/xq/default.nix1
-rw-r--r--pkgs/tools/text/xpaste/default.nix1
-rw-r--r--pkgs/tools/text/xsv/default.nix1
-rw-r--r--pkgs/tools/text/yaml-merge/default.nix1
-rw-r--r--pkgs/tools/text/zet/default.nix1
-rw-r--r--pkgs/tools/typesetting/bibtex-tidy/default.nix1
-rw-r--r--pkgs/tools/typesetting/fop/default.nix8
-rw-r--r--pkgs/tools/typesetting/soupault/default.nix61
-rw-r--r--pkgs/tools/typesetting/tectonic/default.nix3
-rw-r--r--pkgs/tools/typesetting/tex/dblatex/default.nix1
-rw-r--r--pkgs/tools/typesetting/tex/gladtex/default.nix1
-rw-r--r--pkgs/tools/typesetting/tex/latexrun/default.nix1
-rw-r--r--pkgs/tools/typesetting/tex/pplatex/default.nix1
-rw-r--r--pkgs/tools/typesetting/tex/tex-match/default.nix1
-rw-r--r--pkgs/tools/typesetting/tex/texlive/bin.nix28
-rw-r--r--pkgs/tools/typesetting/tex/texlive/build-tex-env.nix11
-rw-r--r--pkgs/tools/typesetting/tex/texlive/default.nix8
-rw-r--r--pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix524
-rw-r--r--pkgs/tools/typesetting/tex/texlive/tlpdb-overrides.nix23
-rw-r--r--pkgs/tools/typesetting/tex/texlive/tlpdb.nix2449
-rw-r--r--pkgs/tools/typesetting/typstfmt/Cargo.lock787
-rw-r--r--pkgs/tools/typesetting/typstfmt/default.nix29
-rw-r--r--pkgs/tools/video/blackmagic-desktop-video/default.nix2
-rw-r--r--pkgs/tools/virtualization/cloud-init/default.nix19
-rw-r--r--pkgs/tools/virtualization/nixos-container/default.nix1
-rw-r--r--pkgs/tools/virtualization/xen-guest-agent/default.nix2
-rw-r--r--pkgs/tools/wayland/hyprland-per-window-layout/default.nix6
-rw-r--r--pkgs/tools/wayland/wleave/default.nix6
854 files changed, 4089 insertions, 3839 deletions
diff --git a/pkgs/tools/X11/xdg-utils/default.nix b/pkgs/tools/X11/xdg-utils/default.nix
index 451ce3a81b56..b9c286328a49 100644
--- a/pkgs/tools/X11/xdg-utils/default.nix
+++ b/pkgs/tools/X11/xdg-utils/default.nix
@@ -29,7 +29,7 @@ let
 
   # This is still required to work around the eval trickery some scripts do
   commonPrologue = "${writeText "xdg-utils-prologue" ''
-    export PATH=$PATH:${coreutils}/bin
+    export PATH=$PATH:${lib.makeBinPath [ coreutils ]}
   ''}";
 
   solutions = [
@@ -120,7 +120,10 @@ let
         "$KDE_SESSION_VERSION" = true;
         "$KTRADER" = true;
       };
-      prologue = commonPrologue;
+      prologue = "${writeText "xdg-mime-prologue" ''
+        export PERL5LIB=${with perlPackages; makePerlPath [ FileMimeInfo ]}
+        export PATH=$PATH:${lib.makeBinPath [ coreutils perlPackages.FileMimeInfo ]}
+      ''}";
     }
 
     {
diff --git a/pkgs/tools/admin/ansible/doctor.nix b/pkgs/tools/admin/ansible/doctor.nix
index ef7ef6aabb85..8a14a049893b 100644
--- a/pkgs/tools/admin/ansible/doctor.nix
+++ b/pkgs/tools/admin/ansible/doctor.nix
@@ -59,6 +59,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Annotation based documentation for your Ansible roles";
+    mainProgram = "ansible-doctor";
     homepage = "https://github.com/thegeeklab/ansible-doctor";
     changelog = "https://github.com/thegeeklab/ansible-doctor/releases/tag/v${version}";
     license = licenses.lgpl3Only;
diff --git a/pkgs/tools/admin/ansible/later.nix b/pkgs/tools/admin/ansible/later.nix
index 733981ecd928..f040acdfbd0f 100644
--- a/pkgs/tools/admin/ansible/later.nix
+++ b/pkgs/tools/admin/ansible/later.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
   '';
 
   pythonRelaxDeps = [
+    "anyconfig"
     "flake8"
     "jsonschema"
     "pathspec"
@@ -79,6 +80,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Best practice scanner for Ansible roles and playbooks";
+    mainProgram = "ansible-later";
     homepage = "https://github.com/thegeeklab/ansible-later";
     changelog = "https://github.com/thegeeklab/ansible-later/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/admin/ansible/lint.nix b/pkgs/tools/admin/ansible/lint.nix
index 4f05f0471af2..2c746ae69bd2 100644
--- a/pkgs/tools/admin/ansible/lint.nix
+++ b/pkgs/tools/admin/ansible/lint.nix
@@ -88,6 +88,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Best practices checker for Ansible";
+    mainProgram = "ansible-lint";
     homepage = "https://github.com/ansible/ansible-lint";
     changelog = "https://github.com/ansible/ansible-lint/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/admin/aws-google-auth/default.nix b/pkgs/tools/admin/aws-google-auth/default.nix
index 545e22f6b58a..84b9d3fd8c99 100644
--- a/pkgs/tools/admin/aws-google-auth/default.nix
+++ b/pkgs/tools/admin/aws-google-auth/default.nix
@@ -76,6 +76,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Acquire AWS STS (temporary) credentials via Google Apps SAML Single Sign On";
+    mainProgram = "aws-google-auth";
     homepage = "https://github.com/cevoaustralia/aws-google-auth";
     maintainers = [ maintainers.marsam ];
     license = licenses.mit;
diff --git a/pkgs/tools/admin/aws-lambda-runtime-interface-emulator/default.nix b/pkgs/tools/admin/aws-lambda-runtime-interface-emulator/default.nix
index 01d5b9479aa7..b1993ef05c10 100644
--- a/pkgs/tools/admin/aws-lambda-runtime-interface-emulator/default.nix
+++ b/pkgs/tools/admin/aws-lambda-runtime-interface-emulator/default.nix
@@ -2,22 +2,23 @@
 
 buildGoModule rec {
   pname = "aws-lambda-runtime-interface-emulator";
-  version = "1.15";
+  version = "1.17";
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = "aws-lambda-runtime-interface-emulator";
     rev = "v${version}";
-    sha256 = "sha256-ogsWAAm/rEol+UFBqgMSowb78BbQKeGyeJ7UVp/p4js=";
+    sha256 = "sha256-dJbN3Ln3nXED8HmIHSrdKW37fj8dyGnJG27S12VydiE=";
   };
 
-  vendorHash = "sha256-8HRYGpMNZuPBzhp73lGvbJgA5WivMNrBa2wUw/+LX5M=";
+  vendorHash = "sha256-fGoqKDBg+O4uzGmhEIROsBvDS+6zWCzsXe8U6t98bqk=";
 
   # disabled because I lack the skill
   doCheck = false;
 
   meta = with lib; {
     description = "Locally test Lambda functions packaged as container images";
+    mainProgram = "aws-lambda-rie";
     homepage = "https://github.com/aws/aws-lambda-runtime-interface-emulator";
     license = licenses.asl20;
     maintainers = with maintainers; [ teto ];
diff --git a/pkgs/tools/admin/aws-mfa/default.nix b/pkgs/tools/admin/aws-mfa/default.nix
index 53b3a8d4a474..6e58574ee2ba 100644
--- a/pkgs/tools/admin/aws-mfa/default.nix
+++ b/pkgs/tools/admin/aws-mfa/default.nix
@@ -39,6 +39,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Manage AWS MFA Security Credentials";
+    mainProgram = "aws-mfa";
     homepage = "https://github.com/broamski/aws-mfa";
     license = licenses.mit;
     maintainers = [ ];
diff --git a/pkgs/tools/admin/aws-vault/default.nix b/pkgs/tools/admin/aws-vault/default.nix
index 99255f568fa9..20d0667b70e2 100644
--- a/pkgs/tools/admin/aws-vault/default.nix
+++ b/pkgs/tools/admin/aws-vault/default.nix
@@ -50,6 +50,7 @@ buildGoModule rec {
   meta = with lib; {
     description =
       "A vault for securely storing and accessing AWS credentials in development environments";
+    mainProgram = "aws-vault";
     homepage = "https://github.com/99designs/aws-vault";
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/tools/admin/awscli/default.nix b/pkgs/tools/admin/awscli/default.nix
index 94b4f8ff82d8..09910f125bc4 100644
--- a/pkgs/tools/admin/awscli/default.nix
+++ b/pkgs/tools/admin/awscli/default.nix
@@ -10,16 +10,30 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "awscli";
-  version = "1.32.21"; # N.B: if you change this, change botocore and boto3 to a matching version too
+  version = "1.32.58"; # N.B: if you change this, change botocore and boto3 to a matching version too
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-euz3pcTKCPjgP7mKVoOf/62JPp0rRevbcYf/RfZTNd0=";
+    hash = "sha256-dffY/BKsQ7vztW2sGn+WaZB0fXnqwwVjA4nkVwRZ1js=";
   };
 
+  nativeBuildInputs = [
+    python3.pkgs.pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "colorama"
+    "docutils"
+    "rsa"
+  ];
+
+  build-system = [
+    python3.pkgs.setuptools
+  ];
+
   propagatedBuildInputs = with python3.pkgs; [
     botocore
-    bcdoc
     s3transfer
     colorama
     docutils
diff --git a/pkgs/tools/admin/awslimitchecker/default.nix b/pkgs/tools/admin/awslimitchecker/default.nix
index 0a67e5a4e4e2..cc492ed065d3 100644
--- a/pkgs/tools/admin/awslimitchecker/default.nix
+++ b/pkgs/tools/admin/awslimitchecker/default.nix
@@ -52,6 +52,7 @@ python3Packages.buildPythonApplication rec {
     homepage = "http://awslimitchecker.readthedocs.org";
     changelog = "https://github.com/jantman/awslimitchecker/blob/${version}/CHANGES.rst";
     description = "A script and python package to check your AWS service limits and usage via boto3";
+    mainProgram = "awslimitchecker";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ zakame ];
   };
diff --git a/pkgs/tools/admin/awslogs/default.nix b/pkgs/tools/admin/awslogs/default.nix
index ff4924c1cce5..153da049ac16 100644
--- a/pkgs/tools/admin/awslogs/default.nix
+++ b/pkgs/tools/admin/awslogs/default.nix
@@ -45,6 +45,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "AWS CloudWatch logs for Humans";
+    mainProgram = "awslogs";
     homepage = "https://github.com/jorgebastida/awslogs";
     license = licenses.bsd3;
     maintainers = with maintainers; [ dbrock ];
diff --git a/pkgs/tools/admin/azure-cli/default.nix b/pkgs/tools/admin/azure-cli/default.nix
index 71c478d61216..9d92a10cc288 100644
--- a/pkgs/tools/admin/azure-cli/default.nix
+++ b/pkgs/tools/admin/azure-cli/default.nix
@@ -5,14 +5,14 @@
 }:
 
 let
-  version = "2.56.0";
+  version = "2.58.0";
 
   src = fetchFromGitHub {
     name = "azure-cli-${version}-src";
     owner = "Azure";
     repo = "azure-cli";
     rev = "azure-cli-${version}";
-    hash = "sha256-rlyBp0aVjmOCIb000PdvU7nJlC9vvk+nVmIEtMTKEG8=";
+    hash = "sha256-2KLjPzxtHeuH0/+Sge1wTmGimOiaTWr8EI+xkFBrPD0=";
   };
 
   # put packages that needs to be overridden in the py package scope
diff --git a/pkgs/tools/admin/azure-cli/python-packages.nix b/pkgs/tools/admin/azure-cli/python-packages.nix
index 3714c5bec020..b01341f1a2ca 100644
--- a/pkgs/tools/admin/azure-cli/python-packages.nix
+++ b/pkgs/tools/admin/azure-cli/python-packages.nix
@@ -95,140 +95,52 @@ let
         '';
       };
 
-      antlr4-python3-runtime = super.antlr4-python3-runtime.override (_: {
-        antlr4 = super.pkgs.antlr4_12;
-      });
-      azure-mgmt-advisor = overrideAzureMgmtPackage super.azure-mgmt-advisor "9.0.0" "zip" "sha256-/ECLNzFf6EeBtRkST4yxuKwQsvQkHkOdDT4l/WyhjXs=";
-      azure-mgmt-apimanagement = overrideAzureMgmtPackage super.azure-mgmt-apimanagement "4.0.0" "zip" "sha256-AiTjLJ28g80xnrRFLfPUevJgeaxLpuGmvkd3+FskNiw=";
-      azure-mgmt-authorization = overrideAzureMgmtPackage super.azure-mgmt-authorization "4.0.0" "zip" "sha256-abhavAmuZPxyl1vUNDEXDYx+tdFmdUuYqsXzhF3lfcQ=";
-      azure-mgmt-billing = overrideAzureMgmtPackage super.azure-mgmt-billing "6.0.0" "zip" "sha256-1PXFpBiKRW/h6zK2xF9VyiBpx0vkHrdpIYQLOfL1wH8=";
+      azure-keyvault-keys = overrideAzureMgmtPackage super.azure-keyvault-keys "4.9.0b3" "tar.gz" "sha256-qoseyf6WqBEG8vPc1hF17K46AWk8Ba8V9KRed4lOlGo=";
+      azure-mgmt-applicationinsights = overrideAzureMgmtPackage super.azure-mgmt-applicationinsights "1.0.0" "zip" "sha256-woeix9703hn5LAwxugKGf6xvW433G129qxkoi7RV/Fs=";
+      azure-mgmt-batch = overrideAzureMgmtPackage super.azure-mgmt-batch "17.2.0" "tar.gz" "sha256-ihXjijfW5OzilXPegIxaiSdsmfJSDqHzUrhqcEyJhY0=";
+      azure-mgmt-batchai = overrideAzureMgmtPackage super.azure-mgmt-batchai "7.0.0b1" "zip" "sha256-mT6vvjWbq0RWQidugR229E8JeVEiobPD3XA/nDM3I6Y=";
       azure-mgmt-botservice = overrideAzureMgmtPackage super.azure-mgmt-botservice "2.0.0b3" "zip" "sha256-XZGQOeMw8usyQ1tl8j57fZ3uqLshomHY9jO/rbpQOvM=";
-      azure-mgmt-cognitiveservices = overrideAzureMgmtPackage super.azure-mgmt-cognitiveservices "13.5.0" "zip" "sha256-RK8LGbH4J+nN6gnGBUweZgkqUcMrwe9aVtvZtAvFeBU=";
+      azure-mgmt-cdn = overrideAzureMgmtPackage super.azure-mgmt-cdn "12.0.0" "zip" "sha256-t8PuIYkjS0r1Gs4pJJJ8X9cz8950imQtbVBABnyMnd0=";
       azure-mgmt-compute = overrideAzureMgmtPackage super.azure-mgmt-compute "30.4.0" "tar.gz" "sha256-C3Qo/YvRXHy9fGa5uwEOClyzeoBs7x9JSNkHGRV2kzQ=";
-      azure-mgmt-containerinstance = overrideAzureMgmtPackage super.azure-mgmt-containerinstance "10.1.0" "zip" "sha256-eNQ3rbKFdPRIyDjtXwH5ztN4GWCYBh3rWdn3AxcEwX4=";
-      azure-mgmt-containerregistry = overrideAzureMgmtPackage super.azure-mgmt-containerregistry "10.1.0" "zip" "sha256-VrX9YfYNvlA8+eNqHCp35BAeQZzQKakZs7ZZKwT8oYc=";
       azure-mgmt-core = overrideAzureMgmtPackage super.azure-mgmt-core "1.3.2" "zip" "sha256-B/Sv6COlXXBLBI1h7f3BMYwFHtWfJEAyEmNQvpXp1QE=";
-      azure-mgmt-cosmosdb = overrideAzureMgmtPackage super.azure-mgmt-cosmosdb "9.3.0" "tar.gz" "sha256-02DisUN2/auBDhPgE9aUvEvYwoQUQC4NYGD/PQZOl/Y=";
-      azure-mgmt-databoxedge = overrideAzureMgmtPackage super.azure-mgmt-databoxedge "1.0.0" "zip" "sha256-BAkAYrwejwDC9FMVo7zrD7OzR57BR01xuINC4TSZsIc=";
-      azure-mgmt-datalake-nspkg = overrideAzureMgmtPackage super.azure-mgmt-datalake-nspkg "3.0.1" "zip" "sha256-3rGSukIviz7Ccs5OiHNnlvIW8o6lsD8oMx14S3o/SIA=";
-      azure-mgmt-datamigration = overrideAzureMgmtPackage super.azure-mgmt-datamigration "10.0.0" "zip" "sha256-XO5w+X/joJPDy3DCoZDC35Nrdy6UoJ73496x7Rd8nzI=";
+      azure-mgmt-datalake-store = overrideAzureMgmtPackage super.azure-mgmt-datalake-store "0.5.0" "zip" "sha256-k3bTVJVmHRn4rMVgT2ewvFlJOxg1u8SA+aGVL5ABekw=";
+      azure-mgmt-devtestlabs = overrideAzureMgmtPackage super.azure-mgmt-devtestlabs "4.0.0" "zip" "sha256-WVScTEBo8mRmsQl7V0qOUJn7LNbIvgoAOVsG07KeJ40=";
       azure-mgmt-dns = overrideAzureMgmtPackage super.azure-mgmt-dns "8.0.0" "zip" "sha256-QHwtrLM1E/++nKS+Wt216dS64Mt++mE8P31THve/jeg=";
+      azure-mgmt-eventgrid = overrideAzureMgmtPackage super.azure-mgmt-eventgrid "10.2.0b2" "zip" "sha256-QcHY1wCwQyVOEdUi06/wEa4dqJH5Ccd33gJ1Sju0qZA=";
+      azure-mgmt-eventhub = overrideAzureMgmtPackage super.azure-mgmt-eventhub "10.1.0" "zip" "sha256-MZqhSBkwypvEefhoEWEPsBUFidWYD7qAX6edcBDDSSA=";
       azure-mgmt-extendedlocation = overrideAzureMgmtPackage super.azure-mgmt-extendedlocation "1.0.0b2" "zip" "sha256-mjfH35T81JQ97jVgElWmZ8P5MwXVxZQv/QJKNLS3T8A=";
-      azure-mgmt-hdinsight = overrideAzureMgmtPackage super.azure-mgmt-hdinsight "9.0.0" "zip" "sha256-QevcacDR+B0l3TBDjBT/9DMfZmOfVYBbkYuWSer/54o=";
-      azure-mgmt-imagebuilder = overrideAzureMgmtPackage super.azure-mgmt-imagebuilder "1.2.0" "zip" "sha256-XmGIzw+yGYgdaNGZJClFRl531BGsQUH+HESUXGVK6TI=";
-      azure-mgmt-iothubprovisioningservices = overrideAzureMgmtPackage super.azure-mgmt-iothubprovisioningservices "1.1.0" "zip" "sha256-04OoJuff93L62G6IozpmHpEaUbHHHD6nKlkMHVoJvJ4=";
-      azure-mgmt-managementgroups = overrideAzureMgmtPackage super.azure-mgmt-managementgroups "1.0.0" "zip" "sha256-urm9UyocNFV/Wwq5lQ5DHj8Au5boo85m3w9s4q4ZzXM=";
+      azure-mgmt-iotcentral = overrideAzureMgmtPackage super.azure-mgmt-iotcentral "10.0.0b1" "zip" "sha256-1CiZuTXYhIb74eGQZUJHHzovYNnnVd3Ydu1UCy2Bu00=";
+      azure-mgmt-kusto = (overrideAzureMgmtPackage super.azure-mgmt-kusto "0.3.0" "zip"
+        "sha256-nri3eB/UQQ7p4gfNDDmDuvnlhBS1tKGISdCYVuNrrN4=").overridePythonAttrs (attrs: {
+        propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ self.msrest self.msrestazure ];
+      });
       azure-mgmt-maps = overrideAzureMgmtPackage super.azure-mgmt-maps "2.0.0" "zip" "sha256-OE4X92potwCk+YhHiUXDqXIXEcBAByWv38tjz4ToXw4=";
-      azure-mgmt-marketplaceordering = overrideAzureMgmtPackage super.azure-mgmt-marketplaceordering "1.1.0" "zip" "sha256-aLOB9SpN9ENdrK1al+HFmsTJgfZn3MqPnQRFNBfWCtg=";
+      azure-mgmt-media = overrideAzureMgmtPackage super.azure-mgmt-media "9.0.0" "zip" "sha256-TI7l8sSQ2QUgPqiE3Cu/F67Wna+KHbQS3fuIjOb95ZM=";
       azure-mgmt-monitor = overrideAzureMgmtPackage super.azure-mgmt-monitor "5.0.0" "zip" "sha256-eL9KJowxTF7hZJQQQCNJZ7l+rKPFM8wP5vEigt3ZFGE=";
-      azure-mgmt-msi = overrideAzureMgmtPackage super.azure-mgmt-msi "7.0.0" "zip" "sha256-ctRsmmJ4PsTqthm+nRt4/+u9qhZNQG/TA/FjA/NyVrI=";
+      azure-mgmt-netapp = overrideAzureMgmtPackage super.azure-mgmt-netapp "10.1.0" "zip" "sha256-eJiWTOCk2C79Jotku9bKlu3vU6H8004hWrX+h76MjQM=";
+      azure-mgmt-policyinsights = overrideAzureMgmtPackage super.azure-mgmt-policyinsights "1.1.0b4" "zip" "sha256-aB16xyrhNYHJeitvdCeV+kik21B2LC+5/OSDQIGwTpI=";
       azure-mgmt-privatedns = overrideAzureMgmtPackage super.azure-mgmt-privatedns "1.0.0" "zip" "sha256-tg8W5D97KRWCxfV7rhsIMJbYMD6dmVjiwpInpVzCfEU=";
-      azure-mgmt-recoveryservices = overrideAzureMgmtPackage super.azure-mgmt-recoveryservices "2.5.0" "tar.gz" "sha256-XxowjEhYx5uD/4vY5hGSCSvcarmdbdc5Y2GLHciEurU=";
-      azure-mgmt-recoveryservicesbackup = overrideAzureMgmtPackage super.azure-mgmt-recoveryservicesbackup "7.0.0" "tar.gz" "sha256-GuW6x8JGdBedywum4fDAQ8rwbVU9UgQWgHrFqJ6Uz9A=";
-      azure-mgmt-redhatopenshift = overrideAzureMgmtPackage super.azure-mgmt-redhatopenshift "1.4.0" "tar.gz" "sha256-BL2a2L2AwJWvs0V+VpSGaS8//AWMy5m6rdAPDJPbrEo=";
-      azure-mgmt-redis = overrideAzureMgmtPackage super.azure-mgmt-redis "14.1.0" "zip" "sha256-LO92Wc2+VvsEKiOjVSHXw2o3D69NQlL58m+YqWl6+ig=";
+      azure-mgmt-rdbms = overrideAzureMgmtPackage super.azure-mgmt-rdbms "10.2.0b12" "tar.gz" "sha256-WdTm0YxMXNHGcSGD38YZ1YmJaMjfLJC8OImXedcxDeE=";
+      azure-mgmt-recoveryservicesbackup = overrideAzureMgmtPackage super.azure-mgmt-recoveryservicesbackup "8.0.0" "tar.gz" "sha256-Hakde59uvVcCkvFt9w69nVr7BjNrPU0Q/COcA0h7Cnw=";
+      azure-mgmt-redis = overrideAzureMgmtPackage super.azure-mgmt-redis "14.3.0" "tar.gz" "sha256-eoMbY4oNzYXkn3uFUhxecJQD+BxYkGTbWhAWSgAoLyA=";
+      azure-mgmt-resource = overrideAzureMgmtPackage super.azure-mgmt-resource "23.1.0b2" "zip" "sha256-kMmiKVwjPgmsTIxxxDRNXE41jSTJkemnKhO+P/OcPZI=";
       azure-mgmt-search = overrideAzureMgmtPackage super.azure-mgmt-search "9.0.0" "zip" "sha256-Gc+qoTa1EE4/YmJvUSqVG+zZ50wfohvWOe/fLJ/vgb0=";
       azure-mgmt-security = overrideAzureMgmtPackage super.azure-mgmt-security "5.0.0" "zip" "sha256-OLA+/oLCNEzqID/alebQC3rCJ4L6HAtYXNDqLI/z5wI=";
-      azure-mgmt-servicebus = overrideAzureMgmtPackage super.azure-mgmt-servicebus "8.2.0" "zip" "sha256-i+kgjxQdmnifaNuNIZdU/3gGn9j5OQ6fdkS7laO+nsI=";
-      azure-mgmt-servicefabricmanagedclusters = overrideAzureMgmtPackage super.azure-mgmt-servicefabricmanagedclusters "1.0.0" "zip" "sha256-EJyjolHrt92zWg+IKWFKTapwZaFrwTtSyEIu5/mZXOg=";
-      azure-mgmt-storage = overrideAzureMgmtPackage super.azure-mgmt-storage "21.1.0" "tar.gz" "sha256-1tPA6RfJiLye0Eckd9PvP5CIYAnrHZenEZRPg3VjAWI=";
-      azure-mgmt-trafficmanager = overrideAzureMgmtPackage super.azure-mgmt-trafficmanager "1.0.0" "zip" "sha256-R0F2HoA0bE7dTLPycTaOqYBj+ATQFeJFwv4EjtK1lqg=";
-      azure-synapse-managedprivateendpoints = overrideAzureMgmtPackage super.azure-synapse-managedprivateendpoints "0.4.0" "zip" "sha256-kA6urM/9zQEBKySKfQSQCMkoB7dJ7dHJB0ypJIVUwX4=";
-
-      azure-synapse-spark = overrideAzureMgmtPackage super.azure-synapse-spark "0.2.0" "zip" "sha256-OQ5brhweEIrtN2iP4I5NacdC9t3YUiGIVhhqSs3FMuI=";
-
-      azure-mgmt-appcontainers = overrideAzureMgmtPackage super.azure-mgmt-appcontainers "2.0.0" "zip"
-        "sha256-ccdIdvdgTYPWEZCWqkLc8lEuMuAEERvl5B1huJyBkvU=";
-
-      azure-mgmt-batch = (overrideAzureMgmtPackage super.azure-mgmt-batch "17.0.0" "zip"
-        "sha256-hkM4WVLuwxj4qgXsY8Ya7zu7/v37gKdP0Xbf2EqrsWo=").overridePythonAttrs (attrs: {
-        propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ self.msrest ];
-      });
-
-      azure-mgmt-batchai = overrideAzureMgmtPackage super.azure-mgmt-batchai "7.0.0b1" "zip"
-        "sha256-mT6vvjWbq0RWQidugR229E8JeVEiobPD3XA/nDM3I6Y=";
-
-      azure-mgmt-policyinsights = overrideAzureMgmtPackage super.azure-mgmt-policyinsights "1.1.0b4" "zip"
-        "sha512-NW2BNj45lKzBmPXWMuBnVEDG2C6xzo9J/QjcC5fczvyhKBIkhugJVOWdPUsSzyGeQYKdqpRWPOl0yBG/eblHQA==";
-
-      azure-mgmt-cdn = overrideAzureMgmtPackage super.azure-mgmt-cdn "12.0.0" "zip"
-        "sha256-t8PuIYkjS0r1Gs4pJJJ8X9cz8950imQtbVBABnyMnd0=";
-
-      azure-mgmt-rdbms = overrideAzureMgmtPackage super.azure-mgmt-rdbms "10.2.0b11" "tar.gz"
-        "sha256-A7SwklqAhz4Ey9ar1YWythtVZyQ2Y2RUsa27iMc2mxU=";
-
-      azure-mgmt-appconfiguration = overrideAzureMgmtPackage super.azure-mgmt-appconfiguration "3.0.0" "zip"
-        "sha256-FJhuVgqNjdRIegP4vUISrAtHvvVle5VQFVITPm4HLEw=";
-
-      azure-mgmt-eventgrid = overrideAzureMgmtPackage super.azure-mgmt-eventgrid "10.2.0b2" "zip"
-        "sha256-QcHY1wCwQyVOEdUi06/wEa4dqJH5Ccd33gJ1Sju0qZA=";
-
-      azure-mgmt-iothub = overrideAzureMgmtPackage super.azure-mgmt-iothub "3.0.0" "tar.gz"
-        "sha256-2vIfyYxoo1PsYWMYwOYr4EyNaJmWC+jCy/mRZzrItyI=";
-
-      azure-mgmt-iotcentral = overrideAzureMgmtPackage super.azure-mgmt-iotcentral "10.0.0b1" "zip"
-        "sha256-1CiZuTXYhIb74eGQZUJHHzovYNnnVd3Ydu1UCy2Bu00=";
-
-      azure-mgmt-kusto = (overrideAzureMgmtPackage super.azure-mgmt-kusto "0.3.0" "zip"
-        "sha256-nri3eB/UQQ7p4gfNDDmDuvnlhBS1tKGISdCYVuNrrN4=").overridePythonAttrs (attrs: {
-        propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ self.msrest self.msrestazure ];
-      });
-
-      azure-mgmt-devtestlabs = overrideAzureMgmtPackage super.azure-mgmt-devtestlabs "4.0.0" "zip"
-        "sha256-WVScTEBo8mRmsQl7V0qOUJn7LNbIvgoAOVsG07KeJ40=";
-
-      azure-mgmt-loganalytics = overrideAzureMgmtPackage super.azure-mgmt-loganalytics "13.0.0b4" "zip"
-        "sha256-Jm1t7v5vyFjNNM/evVaEI9sXJKNwJk6XAXuJSRSnKHk=";
-
-      azure-mgmt-media = overrideAzureMgmtPackage super.azure-mgmt-media "9.0.0" "zip"
-        "sha256-TI7l8sSQ2QUgPqiE3Cu/F67Wna+KHbQS3fuIjOb95ZM=";
-
-      azure-mgmt-web = overrideAzureMgmtPackage super.azure-mgmt-web "7.2.0" "tar.gz"
-        "sha256-78/m9/Ug7Qq8/oZRfhyM8CpxL3N6PbDbfLRsbWR5ge0=";
-
-      azure-mgmt-netapp = overrideAzureMgmtPackage super.azure-mgmt-netapp "10.1.0" "zip"
-        "sha256-eJiWTOCk2C79Jotku9bKlu3vU6H8004hWrX+h76MjQM=";
-
-      azure-mgmt-signalr = overrideAzureMgmtPackage super.azure-mgmt-signalr "2.0.0b2" "tar.gz"
-        "sha256-05PUV8ouAKq/xhGxVEWIzDop0a7WDTV5mGVSC4sv9P4=";
-
-      azure-mgmt-sql = overrideAzureMgmtPackage super.azure-mgmt-sql "4.0.0b12" "tar.gz"
-        "sha256-LJx9cdtqpoHl1pPGYodoA50y8NP4ftbXhY7zohsCPH8=";
-
-      azure-mgmt-sqlvirtualmachine = overrideAzureMgmtPackage super.azure-mgmt-sqlvirtualmachine "1.0.0b5" "zip"
-        "sha256-ZFgJflgynRSxo+B+Vso4eX1JheWlDQjfJ9QmupXypMc=";
-
-      azure-mgmt-synapse = overrideAzureMgmtPackage super.azure-mgmt-synapse "2.1.0b5" "zip"
-        "sha256-5E6Yf1GgNyNVjd+SeFDbhDxnOA6fOAG6oojxtCP4m+k=";
-
-      azure-mgmt-eventhub = overrideAzureMgmtPackage super.azure-mgmt-eventhub "10.1.0" "zip"
-        "sha256-MZqhSBkwypvEefhoEWEPsBUFidWYD7qAX6edcBDDSSA=";
-
-      azure-mgmt-keyvault = overrideAzureMgmtPackage super.azure-mgmt-keyvault "10.3.0" "tar.gz"
-        "sha256-GDtBZM8YaLjqfv6qmO2tfSpOFKm9l3woGLErdRUM0qI=";
-
-      azure-mgmt-applicationinsights = overrideAzureMgmtPackage super.azure-mgmt-applicationinsights "1.0.0" "zip"
-        "sha256-woeix9703hn5LAwxugKGf6xvW433G129qxkoi7RV/Fs=";
-
       azure-mgmt-servicefabric = (overrideAzureMgmtPackage super.azure-mgmt-servicefabric "1.0.0" "zip"
         "sha256-3jXhF5EoMsGp6TEJqNJMq5T1VwOpCHsuscWwZVs7GRM=").overridePythonAttrs (attrs: {
-        propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ self.msrest ];
+        propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ self.msrest self.msrestazure ];
       });
+      azure-mgmt-servicelinker = overrideAzureMgmtPackage super.azure-mgmt-servicelinker "1.2.0b1" "zip" "sha256-RK1Q51Q0wAG55oKrFmv65/2AUKl+gRdp27t/EcuMONk=";
+      azure-mgmt-signalr = overrideAzureMgmtPackage super.azure-mgmt-signalr "2.0.0b1" "tar.gz" "sha256-oK2ceBEoQ7gAeG6mye+x8HPzQU9bUNRPVJtRW2GL4xg=";
+      azure-mgmt-sql = overrideAzureMgmtPackage super.azure-mgmt-sql "4.0.0b15" "tar.gz" "sha256-zSrDo3+ftYayOK/gvhf/PQ926e3qExtSj/yDgXC9VqA=";
+      azure-mgmt-sqlvirtualmachine = overrideAzureMgmtPackage super.azure-mgmt-sqlvirtualmachine "1.0.0b5" "zip" "sha256-ZFgJflgynRSxo+B+Vso4eX1JheWlDQjfJ9QmupXypMc=";
+      azure-mgmt-storage = overrideAzureMgmtPackage super.azure-mgmt-storage "21.1.0" "tar.gz" "sha256-1tPA6RfJiLye0Eckd9PvP5CIYAnrHZenEZRPg3VjAWI=";
+      azure-mgmt-synapse = overrideAzureMgmtPackage super.azure-mgmt-synapse "2.1.0b5" "zip" "sha256-5E6Yf1GgNyNVjd+SeFDbhDxnOA6fOAG6oojxtCP4m+k=";
+      azure-mgmt-trafficmanager = overrideAzureMgmtPackage super.azure-mgmt-trafficmanager "1.0.0" "zip" "sha256-R0F2HoA0bE7dTLPycTaOqYBj+ATQFeJFwv4EjtK1lqg=";
 
-      azure-mgmt-servicelinker = overrideAzureMgmtPackage super.azure-mgmt-servicelinker "1.2.0b1" "zip"
-        "sha256-RK1Q51Q0wAG55oKrFmv65/2AUKl+gRdp27t/EcuMONk=";
-
-      azure-storage-common = overrideAzureMgmtPackage super.azure-storage-common "1.4.2" "tar.gz"
-        "sha256-Tsh8dTfUV+yVJS4ORkd+LBzPM3dP/v0F2FRGgssK5AE=";
-
-      azure-keyvault-keys = overrideAzureMgmtPackage super.azure-keyvault-keys "4.9.0b3" "tar.gz"
-        "sha256-qoseyf6WqBEG8vPc1hF17K46AWk8Ba8V9KRed4lOlGo=";
-
-      azure-mgmt-datalake-store = overrideAzureMgmtPackage super.azure-mgmt-datalake-store "0.5.0" "zip"
-        "sha256-k3bTVJVmHRn4rMVgT2ewvFlJOxg1u8SA+aGVL5ABekw=";
-
-      azure-mgmt-resource = overrideAzureMgmtPackage super.azure-mgmt-resource "23.1.0b2" "zip"
-        "sha256-kMmiKVwjPgmsTIxxxDRNXE41jSTJkemnKhO+P/OcPZI=";
+      azure-storage-common = overrideAzureMgmtPackage super.azure-storage-common "1.4.2" "tar.gz" "sha256-Tsh8dTfUV+yVJS4ORkd+LBzPM3dP/v0F2FRGgssK5AE=";
+      azure-synapse-accesscontrol = overrideAzureMgmtPackage super.azure-synapse-accesscontrol "0.5.0" "zip" "sha256-g14ySiByqPgkJGRH8EnIRJO9Q6H2usS5FOeMCQiUuwQ=";
+      azure-synapse-spark = overrideAzureMgmtPackage super.azure-synapse-spark "0.2.0" "zip" "sha256-OQ5brhweEIrtN2iP4I5NacdC9t3YUiGIVhhqSs3FMuI=";
     };
   };
 in
diff --git a/pkgs/tools/admin/chkcrontab/default.nix b/pkgs/tools/admin/chkcrontab/default.nix
index 7d24270f8d53..e8133ae65d2f 100644
--- a/pkgs/tools/admin/chkcrontab/default.nix
+++ b/pkgs/tools/admin/chkcrontab/default.nix
@@ -13,6 +13,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A tool to detect crontab errors";
+    mainProgram = "chkcrontab";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
     homepage = "https://github.com/lyda/chkcrontab";
diff --git a/pkgs/tools/admin/copilot-cli/default.nix b/pkgs/tools/admin/copilot-cli/default.nix
index 64fc1b20920b..4664c60694d3 100644
--- a/pkgs/tools/admin/copilot-cli/default.nix
+++ b/pkgs/tools/admin/copilot-cli/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "copilot-cli";
-  version = "1.33.1";
+  version = "1.33.2";
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-/xuS5tJBV67gXGHQ93FpMXMLXnhAgnicQnKx/pnwyAM=";
+    hash = "sha256-+1ri9l6ngNIMFYg+n0wDluqZ6/Zl3it4yPOBglk/0JU=";
   };
 
-  vendorHash = "sha256-ekAuvvLxk9cwIuElosc6QbsW7+3f/mO8vsA74DA82D0=";
+  vendorHash = "sha256-HoiBg32L+aRsdDXFOvwZFURV2RttLIGuOOjB8lcYGXU=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/admin/credhub-cli/default.nix b/pkgs/tools/admin/credhub-cli/default.nix
index bd828b6ce4bc..b4c79b8913b1 100644
--- a/pkgs/tools/admin/credhub-cli/default.nix
+++ b/pkgs/tools/admin/credhub-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "credhub-cli";
-  version = "2.9.27";
+  version = "2.9.28";
 
   src = fetchFromGitHub {
     owner = "cloudfoundry-incubator";
     repo = "credhub-cli";
     rev = version;
-    sha256 = "sha256-qd6AKiFfDmh7O0HloV05yMGwP4htrPR+O3wQFSsZEps=";
+    sha256 = "sha256-2LHWbTvxE8awSUm33XocjWxrY8dosMEaCPOx85+tj4s=";
   };
 
   # these tests require network access that we're not going to give them
diff --git a/pkgs/tools/admin/dehydrated/default.nix b/pkgs/tools/admin/dehydrated/default.nix
index d36028e3b227..93a4c4f740d7 100644
--- a/pkgs/tools/admin/dehydrated/default.nix
+++ b/pkgs/tools/admin/dehydrated/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "Letsencrypt/acme client implemented as a shell-script";
+    mainProgram = "dehydrated";
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = [ maintainers.pstn ];
diff --git a/pkgs/tools/admin/drawterm/default.nix b/pkgs/tools/admin/drawterm/default.nix
index 3e4c15faf14b..c83b3dfd6597 100644
--- a/pkgs/tools/admin/drawterm/default.nix
+++ b/pkgs/tools/admin/drawterm/default.nix
@@ -19,13 +19,13 @@
 
 stdenv.mkDerivation {
   pname = "drawterm";
-  version = "unstable-2024-02-18";
+  version = "unstable-2024-03-20";
 
   src = fetchFrom9Front {
     owner = "plan9front";
     repo = "drawterm";
-    rev = "bcf1eb425dd4c90a3bfcd004f6aee3854259da78";
-    hash = "sha256-aUQ6ay2ky9NzVUZvWyHc/GqPlCdhGpXTY8GGytJSC6g=";
+    rev = "77b464a5d5648bb646467111b8faf719cd5c46b6";
+    hash = "sha256-3J/Fa3NXxUieEqRcCepGdd0ktxQFKhyY4z8Pvcq94Kw=";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/tools/admin/exoscale-cli/default.nix b/pkgs/tools/admin/exoscale-cli/default.nix
index b76e362c66d5..4abc7a998eab 100644
--- a/pkgs/tools/admin/exoscale-cli/default.nix
+++ b/pkgs/tools/admin/exoscale-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "exoscale-cli";
-  version = "1.76.1";
+  version = "1.76.2";
 
   src = fetchFromGitHub {
     owner = "exoscale";
     repo = "cli";
     rev = "v${version}";
-    sha256 = "sha256-HVMsN5qkC+eWb5usdSLgE/dgFtALCaadnKV5zeiKLJI=";
+    sha256 = "sha256-0wobPnSrKVJ61+gj3cZsNUt6hun3qa/zVoBZlP3viSk=";
   };
 
   vendorHash = null;
diff --git a/pkgs/tools/admin/gam/default.nix b/pkgs/tools/admin/gam/default.nix
index 5847bcf00d51..795256d21890 100644
--- a/pkgs/tools/admin/gam/default.nix
+++ b/pkgs/tools/admin/gam/default.nix
@@ -64,6 +64,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command line management for Google Workspace";
+    mainProgram = "gam";
     homepage = "https://github.com/GAM-team/GAM/wiki";
     changelog = "https://github.com/GAM-team/GAM/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/admin/gimme-aws-creds/default.nix b/pkgs/tools/admin/gimme-aws-creds/default.nix
index 82081a68af43..f4a2e496b056 100644
--- a/pkgs/tools/admin/gimme-aws-creds/default.nix
+++ b/pkgs/tools/admin/gimme-aws-creds/default.nix
@@ -95,6 +95,7 @@ python.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/Nike-Inc/gimme-aws-creds";
     changelog = "https://github.com/Nike-Inc/gimme-aws-creds/releases";
     description = "A CLI that utilizes Okta IdP via SAML to acquire temporary AWS credentials";
+    mainProgram = "gimme-aws-creds";
     license = licenses.asl20;
     maintainers = with maintainers; [ jbgosselin ];
   };
diff --git a/pkgs/tools/admin/gixy/default.nix b/pkgs/tools/admin/gixy/default.nix
index 31c2e88dd825..541bcb42f905 100644
--- a/pkgs/tools/admin/gixy/default.nix
+++ b/pkgs/tools/admin/gixy/default.nix
@@ -50,6 +50,7 @@ python.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Nginx configuration static analyzer";
+    mainProgram = "gixy";
     longDescription = ''
       Gixy is a tool to analyze Nginx configuration.
       The main goal of Gixy is to prevent security misconfiguration and automate flaw detection.
diff --git a/pkgs/tools/admin/google-cloud-sdk/components.json b/pkgs/tools/admin/google-cloud-sdk/components.json
index eba193fd516e..88908d304608 100644
--- a/pkgs/tools/admin/google-cloud-sdk/components.json
+++ b/pkgs/tools/admin/google-cloud-sdk/components.json
@@ -5,7 +5,7 @@
         "checksum": "5a65179c291bc480696ca323d2f8c4874985458303eff8f233e16cdca4e88e6f",
         "contents_checksum": "038c999c7a7d70d5133eab7dc5868c4c3d0358431dad250f9833306af63016c8",
         "size": 800,
-        "source": "components/google-cloud-sdk-alpha-20231025210228.tar.gz",
+        "source": "components/google-cloud-sdk-alpha-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -22,8 +22,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2023.10.25"
+        "build_number": 20240229170130,
+        "version_string": "2024.02.29"
       }
     },
     {
@@ -56,15 +56,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.4.4"
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "f197d04a40be89731ecd7a653f83900dcc4dcd84e54e0833c529f9f8dfa4395c",
-        "contents_checksum": "fa1d4910c1ce188c5c450d655c5d15e59a146364ec46e3fda0791db76c2edd17",
-        "size": 20108065,
-        "source": "components/google-cloud-sdk-anthos-auth-darwin-arm-20220923141408.tar.gz",
+        "checksum": "e644f1dfa8a4c25029b33fcf04f4c3c6e01c4c7ed2d572e550890c71d3e8105f",
+        "contents_checksum": "1f789abe50e6cc5423d39c2530995849bda198e866abbd61904ffb964688e3b3",
+        "size": 21674635,
+        "source": "components/google-cloud-sdk-anthos-auth-darwin-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -88,16 +88,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "5417a11523868f36d6b7c3199e3029cf9f43c8cb99c57dba016942db4141c939",
-        "contents_checksum": "06a661642cbd20bcb9965c7a4b505d4d72944c48c30b8ada71db7e53c898d505",
-        "size": 21183974,
-        "source": "components/google-cloud-sdk-anthos-auth-darwin-x86_64-20220923141408.tar.gz",
+        "checksum": "72a93a9df0d0647ac5587be7dc0f423c9700d191d21e870d7f8218195e8b7c67",
+        "contents_checksum": "80a810795133e6ed5d17b963606a980c85e059011c9eeffc4b23fdecbbc95736",
+        "size": 22732157,
+        "source": "components/google-cloud-sdk-anthos-auth-darwin-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -121,16 +121,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "c9dee264071d169de081880019f2f6fdb14edc22cbd20c19de76bb7cfa196eae",
-        "contents_checksum": "80ae98f1bfd1bd5cce9cddd642a1505d5401908d8890a22afa723490132b4342",
-        "size": 19755666,
-        "source": "components/google-cloud-sdk-anthos-auth-linux-arm-20220923141408.tar.gz",
+        "checksum": "c6201122eb946238b632d68c944880a172759e7c6e60086d878c8f65017d4614",
+        "contents_checksum": "def3aaea624bd24a35d2cd8321562cb5ef5f4b659415c552e439c47ea80be22b",
+        "size": 21172533,
+        "source": "components/google-cloud-sdk-anthos-auth-linux-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -154,16 +154,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "b5efe7e9cd17f44905186242e663b97734183e14c66daed35553bc59bbf07a3a",
-        "contents_checksum": "57b753ecbde456973bed97af69aa7d1696694c1d30e9756d57658f79689fd925",
-        "size": 21362894,
-        "source": "components/google-cloud-sdk-anthos-auth-linux-x86_64-20220923141408.tar.gz",
+        "checksum": "1a674e3872d702e59c8ef9b275f7e6dfb3a2e428fbaaa177442341f46c62b92d",
+        "contents_checksum": "ce215c3c67f2445ff1e1bd7d3c897ed5e83b169edb6004ce0898da08a3dc5066",
+        "size": 22854830,
+        "source": "components/google-cloud-sdk-anthos-auth-linux-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -187,16 +187,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "ab73e4c82e95a7b707f2298906a7a5fb9a2c1fe741c4584ab16e507bcf7b6d5b",
-        "contents_checksum": "38d10a97aa0e5fbf2c927acda1c853c25a2b729615bebd2ac8fce4eb77c2466a",
-        "size": 21470866,
-        "source": "components/google-cloud-sdk-anthos-auth-windows-x86_64-20220923141408.tar.gz",
+        "checksum": "340aff9659764a4b82358dc1face81ca6fccb6cdba0a4b176305d984706f136c",
+        "contents_checksum": "603ea38b094e85e9a4836061bd057c086b37778a8cc2c7134d1d9bbd43b68639",
+        "size": 23111838,
+        "source": "components/google-cloud-sdk-anthos-auth-windows-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -220,8 +220,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
@@ -258,15 +258,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "0.2.42"
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "47cc151c673943cbfee58321453f85b32d673b3e453724fff31374a8605992b6",
-        "contents_checksum": "3ff8b9ef0510722872095c6d027b78f45dce430eadf07fc219b7f435c503dcf1",
-        "size": 70015524,
-        "source": "components/google-cloud-sdk-anthoscli-darwin-arm-20231023224440.tar.gz",
+        "checksum": "4072c0c3b3d6f40c5ca5969cf4ce3d530d45cb260b0ccea3d40099504307b7f4",
+        "contents_checksum": "0a6d7ed6b3073e8da7569f723fa6dd1c9907f0d270228dd02d16c9d1900089f7",
+        "size": 70276185,
+        "source": "components/google-cloud-sdk-anthoscli-darwin-arm-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -290,16 +290,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "e99a7d19c60cbab6f5ce8578133e1c30c545e89b6f768b457abd2d84722f9c4d",
-        "contents_checksum": "348b94e8d769713049f005663b17056668dc4e3429e682a6956dd7f624fccbbf",
-        "size": 72896092,
-        "source": "components/google-cloud-sdk-anthoscli-darwin-x86-20231023224440.tar.gz",
+        "checksum": "6d8ae30ff42cbd2549a77dd9b4542f1d6bd444adf7a9c1166a8688ca7a2f96da",
+        "contents_checksum": "f6d26cbd246d289b9a5f6df50adc8a7179b98358dee21873f71283384cd260f5",
+        "size": 73173000,
+        "source": "components/google-cloud-sdk-anthoscli-darwin-x86-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -323,16 +323,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "f9e5e6e59e910787542ed59cd7a31f27774e7795989457689bb974238ea58312",
-        "contents_checksum": "348b94e8d769713049f005663b17056668dc4e3429e682a6956dd7f624fccbbf",
-        "size": 72896095,
-        "source": "components/google-cloud-sdk-anthoscli-darwin-x86_64-20231023224440.tar.gz",
+        "checksum": "5aa411f1acee57507bd5ed78b9370ddc47b07ed7a97c551677c5847211ca9d12",
+        "contents_checksum": "f6d26cbd246d289b9a5f6df50adc8a7179b98358dee21873f71283384cd260f5",
+        "size": 73173003,
+        "source": "components/google-cloud-sdk-anthoscli-darwin-x86_64-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -356,16 +356,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "768b260e7477339405cd191e43b5bcdc96150af0f309b58c24e48827237542be",
-        "contents_checksum": "d3d2363c63df31848603536b8af09769ce6bb8a0fefbeaefd0336b2362d0ef31",
-        "size": 67245549,
-        "source": "components/google-cloud-sdk-anthoscli-linux-arm-20231023224440.tar.gz",
+        "checksum": "132825b8e3d349181132c31f6a9d3789997eaf733e79b49e6207315a00b21592",
+        "contents_checksum": "32d0ae794185fd24adaecc5b1c31715f600afbb70f079546fdaa3c22a0a18823",
+        "size": 67454849,
+        "source": "components/google-cloud-sdk-anthoscli-linux-arm-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -389,16 +389,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "390124c5fec46fb6800ca03dd9caf7f75259a6bc28d5841dcc972900cec9a9ba",
-        "contents_checksum": "bf1c54e0b66c498b1d086940dee6ddd11aaa7ed745c65d03cd98f10ef1c49e83",
-        "size": 65298977,
-        "source": "components/google-cloud-sdk-anthoscli-linux-x86-20231023224440.tar.gz",
+        "checksum": "f6451b9ed3b68042a5a58d5fa7d5281ac729291c3380733bb58e7fb4495339c5",
+        "contents_checksum": "1d0815760f9ee60b2837a16837c5550cffe144de6ff6d766521f553584dcccea",
+        "size": 65536636,
+        "source": "components/google-cloud-sdk-anthoscli-linux-x86-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -422,16 +422,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "091730628a45921ef9f34db8b9fbc9568007b0a2a771c60ca786fbc45728b884",
-        "contents_checksum": "b30074343ee0a19121bf1163fccf5223b9e6125e744c00eef5c20977bcd3320a",
-        "size": 71982294,
-        "source": "components/google-cloud-sdk-anthoscli-linux-x86_64-20231023224440.tar.gz",
+        "checksum": "353c04a84703c0a507ce095bdd2dae814b464a8d11273b29b517894815232707",
+        "contents_checksum": "5c444bb3875fe95e3b4e961a425c30d0d664c18a8f61eaf82935b041bfc0e637",
+        "size": 72231225,
+        "source": "components/google-cloud-sdk-anthoscli-linux-x86_64-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -455,16 +455,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "d6f16a6a028d3247de10be2cd63d523b954c4f76347d6a5c88a301c4cd35ddcb",
-        "contents_checksum": "2ad1786533a5cee19cddf36074f51726748422801d4417cb3793baff40ca9b0d",
-        "size": 67251009,
-        "source": "components/google-cloud-sdk-anthoscli-windows-x86-20231023224440.tar.gz",
+        "checksum": "dddd7a0af6168ce4f23dd26010f15232972c3c7ce134c7677605f81316bd9ef7",
+        "contents_checksum": "2f06c8d0090fdb54381888b0bcd66e8849c5c0e87a303a76bab56ab0a31c8bfd",
+        "size": 67482145,
+        "source": "components/google-cloud-sdk-anthoscli-windows-x86-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -488,16 +488,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
       "data": {
-        "checksum": "de36bc756712c520d88572641ccd4810acb6d9342b055291a517e32eda2d9e25",
-        "contents_checksum": "686ac57e568ce4ae5b4ad352c3cc32643762e48d8c6009dae47eebb0fff7ae0d",
-        "size": 72608049,
-        "source": "components/google-cloud-sdk-anthoscli-windows-x86_64-20231023224440.tar.gz",
+        "checksum": "d4fd88249c1cc7a91a63ea9c1142b14c82d1c9c022d0302f0cd981963601c41d",
+        "contents_checksum": "a69fc1bacbf484cc8034c3eae2cb5479797c9db41461bef73cda18a96e26d672",
+        "size": 72854116,
+        "source": "components/google-cloud-sdk-anthoscli-windows-x86_64-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -521,8 +521,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "0.2.42"
+        "build_number": 20240209195330,
+        "version_string": "0.2.48"
       }
     },
     {
@@ -560,15 +560,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.9.75"
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "88f025a6822f74ffa4c34d23b656158f6191891abf9fbe244a4664077a45f57c",
-        "contents_checksum": "7a27fc4862491e5690c8158b915dd6c2c27c4fd1668f273057e059af4977a6e8",
-        "size": 4469651,
-        "source": "components/google-cloud-sdk-app-engine-go-darwin-arm-20230417163046.tar.gz",
+        "checksum": "b1a1821583b0831db76219711dd5c5502a31d5a3a9b2f22c95c36f5457b91b7f",
+        "contents_checksum": "fe65695e8101cb234a298f5129d6f93d3d113440eb42d5dd60690a5b0be941bd",
+        "size": 4673886,
+        "source": "components/google-cloud-sdk-app-engine-go-darwin-arm-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -594,16 +594,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "4a093245d248d58197ea5ec35a65b4b329fc7aed383df80dd9a9206700ca830e",
-        "contents_checksum": "f17f61e98b4f3221eae38212f727d736326ac5c803526067d2c0da965ade6000",
-        "size": 4658659,
-        "source": "components/google-cloud-sdk-app-engine-go-darwin-x86_64-20230417163046.tar.gz",
+        "checksum": "0e280be54d40ebfb84015f9238e3b58df562cecf9a1ba832ea87288f1d21b63b",
+        "contents_checksum": "b453bcc5bd1c9f4f0443462810dec6a4c31071b0e18c01f57e53cd6083306806",
+        "size": 4927378,
+        "source": "components/google-cloud-sdk-app-engine-go-darwin-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -629,16 +629,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "18e5f83a7ae30202e2794d5a46641319dba24d01ac43d1e427b906109ce9069a",
-        "contents_checksum": "22b5e43c2665f646b3b4c043ea8ce5d657576ba54392ffab81c64776ccb0e10e",
-        "size": 4426107,
-        "source": "components/google-cloud-sdk-app-engine-go-linux-arm-20230417163046.tar.gz",
+        "checksum": "fc68960029cfcb4e66a29e75e45ccf52459b9f25313f7e6a3cea995febf5b0d1",
+        "contents_checksum": "99a95e04cfa19eb3fed767ac461433d52c8cfd61dcc43f9c2a2b5be73c53a725",
+        "size": 4628999,
+        "source": "components/google-cloud-sdk-app-engine-go-linux-arm-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -664,16 +664,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "e6271bd8ecf5309c573cae3cf2386a51099517dbe8ec3a8563e96586d6b5beb2",
-        "contents_checksum": "dab30a813f4c0da5028b46ca3ca4675b708358cb4d983b1bc52e03d385f49cfb",
-        "size": 4798186,
-        "source": "components/google-cloud-sdk-app-engine-go-linux-x86-20230417163046.tar.gz",
+        "checksum": "492f92731d80bea2b5ef828276bf1fc54b7f32dbd52517f64fa6b211ca4684d8",
+        "contents_checksum": "6ea55d86c3fa493cb0cfc0c1edeb625493976944f92765ffcfcb72fdef46ee9c",
+        "size": 4811027,
+        "source": "components/google-cloud-sdk-app-engine-go-linux-x86-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -699,16 +699,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "1d5396984ff515be84c3bb526a802cfa9da49e677b46a23d192e09b063cad7d9",
-        "contents_checksum": "d4dce85cce2a173cdfac1e039f409c364b3db99624010cc0c38bcfbc96996cc3",
-        "size": 4731246,
-        "source": "components/google-cloud-sdk-app-engine-go-linux-x86_64-20230417163046.tar.gz",
+        "checksum": "aaf0cc3cb9782a103c36985f5dbcdde3fbfe50b3d18df580d298f9fd5fca3cc9",
+        "contents_checksum": "e5044222f13b99b75a7559425e2c397be40229803ba1e5480e63a7a66a68a6c8",
+        "size": 4957977,
+        "source": "components/google-cloud-sdk-app-engine-go-linux-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -734,16 +734,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "d1bbf796ff06580baeccc60c792c348cb1e466a3e6cc587ef6972ad0f67cd522",
-        "contents_checksum": "847ee7c88906720d640fbdb926b61105fd95e93d816fa5d1a83f1acf04ef8d74",
-        "size": 4900275,
-        "source": "components/google-cloud-sdk-app-engine-go-windows-x86-20230417163046.tar.gz",
+        "checksum": "190a523aa852a05e1d286936da6ee7e50f9f8e9f430813d08de42bc4b2266c57",
+        "contents_checksum": "c67be57a817917cb43238a4ebc5fe6f59cb80c8cad3debd4bca18d019d75ead8",
+        "size": 4901455,
+        "source": "components/google-cloud-sdk-app-engine-go-windows-x86-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -769,16 +769,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
       "data": {
-        "checksum": "4f2b7379f39b50a092cf158174b5966f9e14f7cd3ca1ac5732f1164ae60ba94e",
-        "contents_checksum": "9bd2d84c68d600bb3da84855996341596df3b8716d732fc9b7502db972dc5da3",
-        "size": 4784860,
-        "source": "components/google-cloud-sdk-app-engine-go-windows-x86_64-20230417163046.tar.gz",
+        "checksum": "1d3808bff8faf031d4f3dc0352cf5832a8fab0ff6fda44add456f3351604316d",
+        "contents_checksum": "2c2bb14f552ba67a01ee7344075cee7a253d839668bdbbb5928b19ef4257c758",
+        "size": 5030525,
+        "source": "components/google-cloud-sdk-app-engine-go-windows-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -804,8 +804,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230417163046,
-        "version_string": "1.9.75"
+        "build_number": 20231215195722,
+        "version_string": "1.9.76"
       }
     },
     {
@@ -1020,10 +1020,10 @@
     },
     {
       "data": {
-        "checksum": "38175db1182e07654ddef6ff8794d3ddf0d830c180920392342ea4ceff027a58",
-        "contents_checksum": "2fb9f245011b3b51c4173522e015f899dd2d6a4bc54ea12bff941c9265aba2e5",
-        "size": 129915384,
-        "source": "components/google-cloud-sdk-app-engine-java-20231023224440.tar.gz",
+        "checksum": "ae39996160cebbed748ed12a6ef89ff73e93848b4b1a22f153c371c8ec2153ad",
+        "contents_checksum": "66509cd7d0ee0046439e2bc0e70eed9afecb637d578e518d6771925267693055",
+        "size": 132057381,
+        "source": "components/google-cloud-sdk-app-engine-java-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1041,8 +1041,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "2.0.21"
+        "build_number": 20240106004423,
+        "version_string": "2.0.24"
       }
     },
     {
@@ -1142,10 +1142,10 @@
     },
     {
       "data": {
-        "checksum": "07c19454806ac60603f18bc9e7eeb56ae6eba1477e25a91fd95682c4011c6207",
-        "contents_checksum": "71ff9043af9fa982b8dbbc1f8f122d9f981cb5fe168356f4a7f13bf58ae23e25",
-        "size": 8748068,
-        "source": "components/google-cloud-sdk-app-engine-python-20231016163610.tar.gz",
+        "checksum": "893d741c65d65cfc20f3820fdf62cb71f111e814083c942fee4ced13b10944a2",
+        "contents_checksum": "a97004f0aedeff49894c2cce7b5f634762900f64f38f65c1676e7897f3fb2c53",
+        "size": 8780608,
+        "source": "components/google-cloud-sdk-app-engine-python-20240216153112.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1164,8 +1164,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231016163610,
-        "version_string": "1.9.107"
+        "build_number": 20240216153112,
+        "version_string": "1.9.109"
       }
     },
     {
@@ -1432,7 +1432,7 @@
         "checksum": "707d412854a14450b4fddee199d258e75946fe51b44eb2980c8cd7e274c15760",
         "contents_checksum": "0b4e9d8e6394dc841aece07ca4da91920a460cbd7ec22495be4a2b4f46635b4d",
         "size": 797,
-        "source": "components/google-cloud-sdk-beta-20231025210228.tar.gz",
+        "source": "components/google-cloud-sdk-beta-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1449,8 +1449,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2023.10.25"
+        "build_number": 20240229170130,
+        "version_string": "2024.02.29"
       }
     },
     {
@@ -1493,10 +1493,10 @@
     },
     {
       "data": {
-        "checksum": "5af8d24eb8da1c8229c414e9950bcdc453a9e316742541eefe830afaca8a158e",
-        "contents_checksum": "e08ae70a70d4da56bae3d13b09b898b865557461f01e7690fd25f82b91890910",
-        "size": 7097728,
-        "source": "components/google-cloud-sdk-bigtable-darwin-arm-20231006153333.tar.gz",
+        "checksum": "663eb2bb5e083b366f739b81bc95ce7853187a823890c34e07a8bacdfce35244",
+        "contents_checksum": "20101432339e657f9f272c5898dbdffd89dad2e08dcfccfa26c6609343f39f4c",
+        "size": 7149239,
+        "source": "components/google-cloud-sdk-bigtable-darwin-arm-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1521,7 +1521,7 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
@@ -1561,10 +1561,10 @@
     },
     {
       "data": {
-        "checksum": "aa2d0f3e322a7912fac2b012fc1c368eaa129905372b82560488ec9b803494d5",
-        "contents_checksum": "7c84152ea5f2da5f06f9b55b035534d9bd2270c9959ae162c3cb5f8d392d6801",
-        "size": 7333846,
-        "source": "components/google-cloud-sdk-bigtable-darwin-x86_64-20231006153333.tar.gz",
+        "checksum": "c00519ab786c673527f79f72770d1f4b5bf599c16f9c5d4b42a3f6658414ac22",
+        "contents_checksum": "55675241aba0458e9e7e272511ed469bc30949464d23cf672b2e8549e16559a5",
+        "size": 7384031,
+        "source": "components/google-cloud-sdk-bigtable-darwin-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1589,16 +1589,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
     {
       "data": {
-        "checksum": "52ea181edb2b8b69fa3ebea25467238facc828dc79d1b22c2aafb79385e0f4e6",
-        "contents_checksum": "0dc475dc09c285508b6ba21ab40ebabf9151a9e5ecaf05a3754b3283a00df42a",
-        "size": 7011804,
-        "source": "components/google-cloud-sdk-bigtable-linux-arm-20231006153333.tar.gz",
+        "checksum": "bb6a7e3068ba643e11505e2cbf2fb7418662045566105c711ccda37bbce2f235",
+        "contents_checksum": "a2613adc36a34833bf1e11c7f725688389a330d89e3719e5f4e00387dfa20fb8",
+        "size": 7032893,
+        "source": "components/google-cloud-sdk-bigtable-linux-arm-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1623,16 +1623,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
     {
       "data": {
-        "checksum": "972efb72c12e9fb15777d2f0b0ee49d34793bd088147eda1599826b261c54f8d",
-        "contents_checksum": "ea6f11df05804197e9a0f3ad1d52db162b23769aab97b2913248dc42044e2803",
-        "size": 7255397,
-        "source": "components/google-cloud-sdk-bigtable-linux-x86-20231006153333.tar.gz",
+        "checksum": "5e762be2009986b3a9594cefc861d186eb3130c0f1b0dbf08bef6534ce868761",
+        "contents_checksum": "2adb488dd36830e794eb141ec5243b0bc5f24206a6bd0ae5a731a31346f08078",
+        "size": 7287874,
+        "source": "components/google-cloud-sdk-bigtable-linux-x86-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1657,16 +1657,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
     {
       "data": {
-        "checksum": "e62748c75c268a9648b26920838b281e50511b7f430dff0eca124f3f5763699e",
-        "contents_checksum": "19b5048d20242fc730b4544fe0b5ac800c30b02059efb4b26588eb31d1fc482a",
-        "size": 7454541,
-        "source": "components/google-cloud-sdk-bigtable-linux-x86_64-20231006153333.tar.gz",
+        "checksum": "b3c54cb77875fddf48a0ff41a8870cb55891bf49ae81e23adeb72c1280fc1fd0",
+        "contents_checksum": "711fd9de39fbf4583dbb22c52e7b3fa801ad81dee1e2a4d65d98992738f2aa34",
+        "size": 7488736,
+        "source": "components/google-cloud-sdk-bigtable-linux-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1691,16 +1691,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
     {
       "data": {
-        "checksum": "e031eb7a2735c0bd2db4d82d8da081a264cbaddc58ed9b84e2b1564994e54643",
-        "contents_checksum": "7751a9071bb5830f7f3f9dc9a229a268405a1ba76d5bdd19483a8c66089c72eb",
-        "size": 7288454,
-        "source": "components/google-cloud-sdk-bigtable-windows-x86-20231006153333.tar.gz",
+        "checksum": "7ae926f8aad9bb48247a2468da737b1cd239764aca4ef31b02aebe14437bc5f9",
+        "contents_checksum": "a4409d3c0f7bce7ab0aeaf66adb80ea96a2f8c3854aa0570f3badf21b8b7d430",
+        "size": 7317721,
+        "source": "components/google-cloud-sdk-bigtable-windows-x86-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1725,16 +1725,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
     {
       "data": {
-        "checksum": "1f24acd6a6c63ed1c283e7b7bfbda31bc08a86b1241e5ad4f08858df7678d669",
-        "contents_checksum": "f640127893c4339c4f04791834143af3fe3931ac91877dd73dcb4ee3cecf6d01",
-        "size": 7451653,
-        "source": "components/google-cloud-sdk-bigtable-windows-x86_64-20231006153333.tar.gz",
+        "checksum": "96eac561a6b2efe89e840ff2c6fa22e50f368a536a5db6c168ce9072f6142271",
+        "contents_checksum": "7d9e07ff31df84f57a66a4f9b0d3d0d666c70c7a17174cb2c69feea2db8a194e",
+        "size": 7479168,
+        "source": "components/google-cloud-sdk-bigtable-windows-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1759,16 +1759,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
+        "build_number": 20240112150613,
         "version_string": ""
       }
     },
     {
       "data": {
-        "checksum": "5044841dc30f739de0c5f1a846580baf714a36b09070c00574360e906789d373",
-        "contents_checksum": "b1570cc1a0eb04a5856453cb234021a676ff276c0f779a248ddf589f5ed5724d",
-        "size": 1659622,
-        "source": "components/google-cloud-sdk-bq-20230913232318.tar.gz",
+        "checksum": "8918c7fd033de8f13f331152e59dc16a33f0f7007a6be615b7b53337197be33f",
+        "contents_checksum": "f516a7a4d24280d59d67bf908d80d0a560b8d680e8c2699efc1071b1c0039c1f",
+        "size": 1679148,
+        "source": "components/google-cloud-sdk-bq-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1787,16 +1787,16 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20230913232318,
-        "version_string": "2.0.98"
+        "build_number": 20240112150613,
+        "version_string": "2.0.101"
       }
     },
     {
       "data": {
-        "checksum": "b6a10d752554fb9cf518d697999f49806d1009455c78cc3c6fc67f6d97edf1b9",
-        "contents_checksum": "da65662d83df53b15ff35bdedace8671669280b875620876181ac0e9665cbc04",
-        "size": 2019,
-        "source": "components/google-cloud-sdk-bq-nix-20231025210228.tar.gz",
+        "checksum": "81d6fafb672c791a58b6d2cecbcb8a78ca1a1c7e885d359bcf3ec11ebf138ea0",
+        "contents_checksum": "fcd529ea7485a8621ac5d217ac7e7793cc8acabe5ba4c2c6f222b402580e5578",
+        "size": 2026,
+        "source": "components/google-cloud-sdk-bq-nix-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1821,16 +1821,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2.0.98"
+        "build_number": 20240106004423,
+        "version_string": "2.0.101"
       }
     },
     {
       "data": {
-        "checksum": "d4d4e87deaf12a2c8eefe6ae5d75d9fe160149488077579dc41d6010988ad432",
-        "contents_checksum": "515edb1628a75d42d3b465d7e8c8ad5d298538e75f78d00a0cda738ac9fcce5e",
-        "size": 2660,
-        "source": "components/google-cloud-sdk-bq-win-20230106151201.tar.gz",
+        "checksum": "5d3fdd2bd23beba4e15e60d8e2befdb3d68ae9faed8a19b14526ffacb247546e",
+        "contents_checksum": "aa61d0c34c3b3d6509e7a529b28446faaa645f15abb56a27be3b425ed6404fac",
+        "size": 2683,
+        "source": "components/google-cloud-sdk-bq-win-20240226203415.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -1852,8 +1852,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230106151201,
-        "version_string": "2.0.84"
+        "build_number": 20240226203415,
+        "version_string": "2.0.101"
       }
     },
     {
@@ -1963,8 +1963,8 @@
         "core"
       ],
       "details": {
-        "description": "Provides stand-alone Python 3.9.12 install.",
-        "display_name": "Bundled Python 3.9"
+        "description": "Provides stand-alone Python 3.11 install.",
+        "display_name": "Bundled Python 3.11"
       },
       "id": "bundled-python3",
       "is_configuration": false,
@@ -1982,7 +1982,7 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "3.9.12"
+        "version_string": "3.11.6"
       }
     },
     {
@@ -1991,8 +1991,8 @@
         "core"
       ],
       "details": {
-        "description": "Provides stand-alone Python 3.9.17 installation for UNIX.",
-        "display_name": "Bundled Python 3.9"
+        "description": "Provides stand-alone Python 3.11.8 installation for UNIX.",
+        "display_name": "Bundled Python 3.11"
       },
       "id": "bundled-python3-unix",
       "is_configuration": false,
@@ -2009,15 +2009,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "3.9.17"
+        "version_string": "3.11.8"
       }
     },
     {
       "data": {
-        "checksum": "ad591cffcb3cb00ea73e1e8fa13d76d4ebeded14bb7d4d54f4dbd90cff79911c",
-        "contents_checksum": "d2c4025b7acd5008a935cbd1a71c399d28cb5723065576b1b31f917f10bb0479",
-        "size": 65481810,
-        "source": "components/google-cloud-sdk-bundled-python3-unix-linux-x86_64-20231023224440.tar.gz",
+        "checksum": "e0819134f743b2524add92d5ed3bfff5e4098dfd5d77944ef1a8f95a14fe02ee",
+        "contents_checksum": "3969f4cfb146659adf2d3b34dfe6e0a3b471317db2512ff3c1523b809b5ad765",
+        "size": 78486918,
+        "source": "components/google-cloud-sdk-bundled-python3-unix-linux-x86_64-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2025,8 +2025,8 @@
         "core"
       ],
       "details": {
-        "description": "Provides stand-alone Python 3.9.17 installation for UNIX.",
-        "display_name": "Bundled Python 3.9"
+        "description": "Provides stand-alone Python 3.11.8 installation for UNIX.",
+        "display_name": "Bundled Python 3.11"
       },
       "id": "bundled-python3-unix-linux-x86_64",
       "is_configuration": false,
@@ -2042,16 +2042,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "3.9.17"
+        "build_number": 20240229170130,
+        "version_string": "3.11.8"
       }
     },
     {
       "data": {
-        "checksum": "f893470fa6f4cabc0bbbd73275b563b9c97682fd199514440c9027b6c5b94b54",
-        "contents_checksum": "c486cae0284bb1138814cf54bb930441fd39d9ff791366a564d27d6bfac7a789",
-        "size": 20778243,
-        "source": "components/google-cloud-sdk-bundled-python3-windows-x86-20231016163610.tar.gz",
+        "checksum": "78b090d3d133b622c8fa591e55d97dec41ebeceda117f1fc4c87a3a3053710fc",
+        "contents_checksum": "b18344f58a872b7fd500946a8ca7c7929608a4bf5257570e7c60c2f5b9208ad4",
+        "size": 20426074,
+        "source": "components/google-cloud-sdk-bundled-python3-windows-x86-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2059,8 +2059,8 @@
         "core"
       ],
       "details": {
-        "description": "Provides stand-alone Python 3.9.12 install.",
-        "display_name": "Bundled Python 3.9"
+        "description": "Provides stand-alone Python 3.11 install.",
+        "display_name": "Bundled Python 3.11"
       },
       "id": "bundled-python3-windows-x86",
       "is_configuration": false,
@@ -2076,16 +2076,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231016163610,
-        "version_string": "3.9.12"
+        "build_number": 20231110155547,
+        "version_string": "3.11.6"
       }
     },
     {
       "data": {
-        "checksum": "cabdb1da4996629632a90399276a75058e46be4a6b92019960c4bdb62efcc4ea",
-        "contents_checksum": "3bb2ec678153e5bd214be0439970173d86729baaa33f06176bd2ec8435d4304d",
-        "size": 22193214,
-        "source": "components/google-cloud-sdk-bundled-python3-windows-x86_64-20231016163610.tar.gz",
+        "checksum": "f80970b12053a77afb5888982362396c379392462806837c47c4ed3271c19aaf",
+        "contents_checksum": "3207aea9e98dcf0cf0ee6ad339235fda213dbf8ac997bfa823698c52d68b7f65",
+        "size": 22512051,
+        "source": "components/google-cloud-sdk-bundled-python3-windows-x86_64-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2093,8 +2093,8 @@
         "core"
       ],
       "details": {
-        "description": "Provides stand-alone Python 3.9.12 install.",
-        "display_name": "Bundled Python 3.9"
+        "description": "Provides stand-alone Python 3.11 install.",
+        "display_name": "Bundled Python 3.11"
       },
       "id": "bundled-python3-windows-x86_64",
       "is_configuration": false,
@@ -2110,8 +2110,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231016163610,
-        "version_string": "3.9.12"
+        "build_number": 20231110155547,
+        "version_string": "3.11.6"
       }
     },
     {
@@ -2148,15 +2148,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "0.16.2"
+        "version_string": "1.17.2"
       }
     },
     {
       "data": {
-        "checksum": "4cec674242be0d7a3de6d830325ef93d0b554eeab10431eaf0706199434d937c",
-        "contents_checksum": "c08a0d1bafbfc51f2aac4555268f1e1dba13f8222454ee8315a7855a114c7216",
-        "size": 16254518,
-        "source": "components/google-cloud-sdk-cbt-darwin-arm-20231006153333.tar.gz",
+        "checksum": "538df81550df3242dd9047437ceea867abb38125df24154ffafb5298dee1a2b8",
+        "contents_checksum": "02563cdae195531dc844381cd1cfed92ec8217adc475b9dac73898f1a25c0a45",
+        "size": 16720666,
+        "source": "components/google-cloud-sdk-cbt-darwin-arm-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2180,8 +2180,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
@@ -2219,10 +2219,10 @@
     },
     {
       "data": {
-        "checksum": "cab9647842e2c6702f739bcf7f4a390098a245f58798035914d47b2e023f5003",
-        "contents_checksum": "5437ed3b7499b97a8dc71d81f1446b429ca635676fdaada94e5089d181f851f1",
-        "size": 16717237,
-        "source": "components/google-cloud-sdk-cbt-darwin-x86_64-20231006153333.tar.gz",
+        "checksum": "b9194d1a8371dea7c63147767a6f9e3f8c6f4b03fa30ca3bc5ea901d97acd011",
+        "contents_checksum": "c359de592aa1b957326c205b8723a59520cac0f142bf278b84eed03399b56b59",
+        "size": 17196541,
+        "source": "components/google-cloud-sdk-cbt-darwin-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2246,16 +2246,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
       "data": {
-        "checksum": "50481ebc4a0a82e068b9d11e8af938c81dceae23f39a5d7eff888c5d9d29d379",
-        "contents_checksum": "f1a58b3ed33e5728def81f61e7e28b46239f0a2a0201fc9685d808d11df38f3b",
-        "size": 15863768,
-        "source": "components/google-cloud-sdk-cbt-linux-arm-20231006153333.tar.gz",
+        "checksum": "eb0c6f7e7f9c3bfecbfd733ea018c09fb8ba61b78b1cf8c1c9263c7109ad8671",
+        "contents_checksum": "5c1a36f98fd4654ee47fccea2a9a50ce8b22cd70e013b83bb051fe357122638d",
+        "size": 16297518,
+        "source": "components/google-cloud-sdk-cbt-linux-arm-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2279,16 +2279,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
       "data": {
-        "checksum": "5a5539eab4133fade3206d5f7b546e8d51a5af18c0ac3f0b6ada98249847fa1e",
-        "contents_checksum": "961c6d25d74bae5b5c00b4e0d48393702c529ac0b1de2b85056f07d63933eb8d",
-        "size": 16051931,
-        "source": "components/google-cloud-sdk-cbt-linux-x86-20231006153333.tar.gz",
+        "checksum": "39ca479add8bc11ad11a3b2965e562e62858901c96d79aa1aa2c938a7f40993c",
+        "contents_checksum": "fc6133d7e68b1ad303d87cb9e712bc94fd40511f3818979b4e20d7f5f2074df7",
+        "size": 16492482,
+        "source": "components/google-cloud-sdk-cbt-linux-x86-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2312,16 +2312,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
       "data": {
-        "checksum": "74d5a97a01d246acda0897004a5ece95f9c9ced8aa3c89f0e8cf742edd4284b3",
-        "contents_checksum": "5fdf279f55e77702b62280f58d19f5eb0adcd5d81e20f76cc7759de07a224ca3",
-        "size": 16868331,
-        "source": "components/google-cloud-sdk-cbt-linux-x86_64-20231006153333.tar.gz",
+        "checksum": "23df574487ba9ddb32ffc8c387a0d428ef27be297d5769800710974266d4932c",
+        "contents_checksum": "8134edf246fa051787bf993034e8f1800bb1f04620bbd13cc1f40e965bf32599",
+        "size": 17340658,
+        "source": "components/google-cloud-sdk-cbt-linux-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2345,16 +2345,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
       "data": {
-        "checksum": "97b355f30dd40324f7724eb8a1e269d857316796a6d42fdcf3805fce9cefa402",
-        "contents_checksum": "e824180249e02e5d9c8805faa2cbbc1a237bac7fe53925d6290943234e42cf8c",
-        "size": 16305542,
-        "source": "components/google-cloud-sdk-cbt-windows-x86-20231006153333.tar.gz",
+        "checksum": "ae60d8116338562cc98ba1ad852842760d2ab78016377ec827701c80dc7b7b41",
+        "contents_checksum": "61f3390cc8c868a77e378f9d4aa37502d4e04357d8ab33735f1e5418a3a225e7",
+        "size": 16750394,
+        "source": "components/google-cloud-sdk-cbt-windows-x86-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2378,16 +2378,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
       "data": {
-        "checksum": "fc7d710003577bf740e4d8dd5f6ad3929620a7f088c1de321a41ff229acb6084",
-        "contents_checksum": "038673c9ff153e08f9e4cb6af1c7963483796d3f6654e746cb5bf414ff4a63ee",
-        "size": 16944208,
-        "source": "components/google-cloud-sdk-cbt-windows-x86_64-20231006153333.tar.gz",
+        "checksum": "ce201b8cb3e4e10d4ae1cbec9ff253474dff5931eaff9c1d260b117ac03781e3",
+        "contents_checksum": "d28a7a0d5156bff526e51932172d63a6bc8fc6258138551e81ffc241e20faeb3",
+        "size": 17415844,
+        "source": "components/google-cloud-sdk-cbt-windows-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2411,8 +2411,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "0.16.2"
+        "build_number": 20240112150613,
+        "version_string": "1.17.2"
       }
     },
     {
@@ -2572,10 +2572,10 @@
     },
     {
       "data": {
-        "checksum": "1822e13b021d42edf1ee3d648b00be30960a57d3c74de708a14dd9758bb8f466",
-        "contents_checksum": "16cc1f413795a2197704184256179a5c65eb11b66d8af59f209bfbda798df11b",
-        "size": 44883913,
-        "source": "components/google-cloud-sdk-cloud-firestore-emulator-20230915145114.tar.gz",
+        "checksum": "412203bd80a2ce63b6893f2fc7af0c9c86a4725bd9cf4aeca6a6905269f267b8",
+        "contents_checksum": "f43be764e885bb2206a1b7fdacabd0fca828cd76d95e5006c9509645dfd27b0e",
+        "size": 46597550,
+        "source": "components/google-cloud-sdk-cloud-firestore-emulator-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2592,8 +2592,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "1.18.2"
+        "build_number": 20240229170130,
+        "version_string": "1.19.2"
       }
     },
     {
@@ -2818,15 +2818,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.5.10"
+        "version_string": "1.5.13"
       }
     },
     {
       "data": {
-        "checksum": "7460e9a21137063a8f9f8143f6da86d39d3fde425a956240b695924d45bf3e2f",
-        "contents_checksum": "3617a6b7497fc5cc13cb5764e374816940474072d2db432342c1bf0f6844f1c5",
-        "size": 36939704,
-        "source": "components/google-cloud-sdk-cloud-spanner-emulator-linux-x86_64-20230922151743.tar.gz",
+        "checksum": "7c8f4db773fae956a385c746203ef7d2784d992fd674cdbacf59720c4d3e0ca6",
+        "contents_checksum": "d3df9908458ec5b1115dd1c439b256fcc7ba00533f0c7363ac09685f5bc95790",
+        "size": 37731211,
+        "source": "components/google-cloud-sdk-cloud-spanner-emulator-linux-x86_64-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -2851,8 +2851,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230922151743,
-        "version_string": "1.5.10"
+        "build_number": 20240106004423,
+        "version_string": "1.5.13"
       }
     },
     {
@@ -3322,10 +3322,10 @@
     },
     {
       "data": {
-        "checksum": "8197db59e523d340b2da73594807ac5a2c0a09d2899fa5adb71cc6dbdb64c63e",
-        "contents_checksum": "a788f4961a718e4bc4717a5149874353b83ba4ad01f6587725d48bc2e689a07d",
-        "size": 23032301,
-        "source": "components/google-cloud-sdk-core-20231025210228.tar.gz",
+        "checksum": "394b9a3441b3a88962ee3fe01e2b816671466ca55c244826adc1093395a08117",
+        "contents_checksum": "b22a86659b93e65751c75128448d23b9d935b9a85c46301498bc4054256aff86",
+        "size": 23893614,
+        "source": "components/google-cloud-sdk-core-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3346,16 +3346,16 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2023.10.25"
+        "build_number": 20240229170130,
+        "version_string": "2024.02.29"
       }
     },
     {
       "data": {
-        "checksum": "0d68f826ada61d2ab98721bbab6c94132a1c210080fdd85c750073e009ae6d39",
-        "contents_checksum": "3e23fcf9fd07d22bf46bca03f951e715a328cb8420e09f34ce2e7f5ef401b982",
-        "size": 2402,
-        "source": "components/google-cloud-sdk-core-nix-20231025210228.tar.gz",
+        "checksum": "b7f76cd9c7f391d8504d31fba7c180b7c3028646c0efda8fafdb1abd13056917",
+        "contents_checksum": "35b7e083b5dc365a7f2ff9fac444ad23ddfae564c22296c502183ee4eb9fab00",
+        "size": 2410,
+        "source": "components/google-cloud-sdk-core-nix-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3382,16 +3382,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2023.10.25"
+        "build_number": 20240106004423,
+        "version_string": "2024.01.06"
       }
     },
     {
       "data": {
-        "checksum": "0af3f8e9ba07b24f3821758107b18d273edf7fa7703ff4d659b9732e84a73a37",
-        "contents_checksum": "2ac264344fcf75702a4770bfcba3e6f47573351303cbba558bcde7f8c32cc731",
-        "size": 3200,
-        "source": "components/google-cloud-sdk-core-win-20230915145114.tar.gz",
+        "checksum": "75e34fa5b9f7524861796258e8140d9e9bab9921ace5e9bcd6f0bdd03c718ceb",
+        "contents_checksum": "5770aeb4c914a1193d8f6311d16eab708f76a1c78eb143d0215a8999a82630ca",
+        "size": 3549,
+        "source": "components/google-cloud-sdk-core-win-20240226203415.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3415,8 +3415,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "2023.09.15"
+        "build_number": 20240226203415,
+        "version_string": "2024.02.26"
       }
     },
     {
@@ -3715,15 +3715,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "0.2.1"
+        "version_string": "0.3.2"
       }
     },
     {
       "data": {
-        "checksum": "01c037710f20fe53e05715439a5de469469f10ee3953076c61387de8afc38d1d",
-        "contents_checksum": "367a10efe8b2bb1ca828cc4e91472f81dcbe3e51d98b16843ebe29e250201fab",
-        "size": 6390940,
-        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-darwin-arm-20230224152814.tar.gz",
+        "checksum": "a3e8f5c45ac19bd3430201339c07f2f6dc21296702375c2381ecf5c8d3e88279",
+        "contents_checksum": "22e8de82f1f0cb7a6db65e095c15017866869cac0f1d5556c146c92b1c49acb9",
+        "size": 8680702,
+        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-darwin-arm-20231208151900.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3747,16 +3747,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230224152814,
-        "version_string": "0.2.1"
+        "build_number": 20231208151900,
+        "version_string": "0.3.2"
       }
     },
     {
       "data": {
-        "checksum": "d0c4da5a4668b94ad0609f414beb05fad1e6ca153b28baa846155b9d6e353a64",
-        "contents_checksum": "9f784ec794093b9aa6867dd9895ca93f7b01eef4bc5a1893303e39e2d2141a31",
-        "size": 7001595,
-        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-darwin-x86_64-20230224152814.tar.gz",
+        "checksum": "301757a2839dce01a6435ed4b0dfd05616f9a3c8aeba4624362b48f115e5b97a",
+        "contents_checksum": "6d407b55892613efd363344f855292ddda8fdbe81f549f318264480dc167b25a",
+        "size": 9536921,
+        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-darwin-x86_64-20231208151900.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3780,16 +3780,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230224152814,
-        "version_string": "0.2.1"
+        "build_number": 20231208151900,
+        "version_string": "0.3.2"
       }
     },
     {
       "data": {
-        "checksum": "01ac1d6276ab45779d87f28970906b050aa1d91d113a76ba1c62a40895519e8a",
-        "contents_checksum": "5dd83c5800e0c515bfc776f8e92e2c8e5c70d84089ccdba9eeb81cc3cd579adb",
-        "size": 8611365,
-        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-linux-x86_64-20230714124024.tar.gz",
+        "checksum": "620e7f1598535dba84e52085cf12275e6e2264b281d7d43d71d4079ad0daab7e",
+        "contents_checksum": "1ccff0b7259285d34269926c6038535561cc6d24c0a5c40e3f1b49c7748c9808",
+        "size": 9012612,
+        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-linux-x86_64-20231208151900.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3813,16 +3813,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230714124024,
-        "version_string": "0.2.1"
+        "build_number": 20231208151900,
+        "version_string": "0.3.2"
       }
     },
     {
       "data": {
-        "checksum": "211f5ac63a9397b6f7ac95d22fd34e18c98b348acfdb2cbf3bcd1384ee1deeb0",
-        "contents_checksum": "16743f19efef5cd51b3f1038e27a60ef68f626317a700acd6a25e2f72e381992",
-        "size": 6778179,
-        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-windows-x86_64-20230519173220.tar.gz",
+        "checksum": "d49562e0fac17a4ac3c4e30d7c7056320a69ebc157a6c3f3e744f5731bb16f92",
+        "contents_checksum": "bfa2c0f4ea80fb6e3299b6fb7554565213c39ed7b01140020f8ae00c260d09e1",
+        "size": 6801316,
+        "source": "components/google-cloud-sdk-enterprise-certificate-proxy-windows-x86_64-20231208151900.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3846,8 +3846,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230519173220,
-        "version_string": "0.2.1"
+        "build_number": 20231208151900,
+        "version_string": "0.3.2"
       }
     },
     {
@@ -3907,10 +3907,10 @@
     },
     {
       "data": {
-        "checksum": "535ce4686c07b3bac76f7b107828d4059bf598c92aefac1ebb55d911d90cbc4c",
-        "contents_checksum": "e3b7aacbdc4d8a5adbf88bee4ac738d9e51755b994a700135dbfd8a758a054c2",
-        "size": 1243996,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-darwin-arm-20231023224440.tar.gz",
+        "checksum": "77cacb09f213e98cd3461796567bb583dc05e7f2fe70c47da65e948daf2dfff7",
+        "contents_checksum": "d651a36a3f0e41f7cc7312d09bc3c089a55a583cdaaaa922b0d385e57dece361",
+        "size": 1242963,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-darwin-arm-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3934,16 +3934,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "00972aba9c56aa0bc4916798ab672cc1e6806e76b00783e15b5c5bbc4e804900",
-        "contents_checksum": "2db99100afdae388afbf96ba0440977d1ab0e9b1fdaa997fac07c5d2c9d6040e",
-        "size": 1284906,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-darwin-x86_64-20231023224440.tar.gz",
+        "checksum": "ef420a608c6446543cf660c7d168f6af297aebb760d163e11c3af278e34eb731",
+        "contents_checksum": "48cfe6b4f0f12b23a1271ef686966959314ba9d3ac21de9082009cbb5e9ab1d8",
+        "size": 1283814,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-darwin-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -3967,16 +3967,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "d978d88831992d75a8d1c506c661e3caa702b65acb13bb881f7d2847360836ab",
-        "contents_checksum": "bc5cd52ce1950d6ac8b24d8f8a00c4bbf7f6af82a908fbe2be630b75ecfc35da",
-        "size": 1217581,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-linux-arm-20231023224440.tar.gz",
+        "checksum": "c42492e21729fd33b413c7151e9b9d8c1b352a0f5fa94dbd42e39b0a417ea9da",
+        "contents_checksum": "06647040a666b59ce69c90e6ba9cbfba3f1763236a0872af722e62ea30e51e34",
+        "size": 1214415,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-linux-arm-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4000,16 +4000,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "5abf460069b1f95004805a1f3469061dc340dda0a44fe89fa969e9693cfdd1c1",
-        "contents_checksum": "6a50901818b7cd1a27b2229b350f1869edea9c6aa3bf62a526679b81e967e5f0",
-        "size": 1236281,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-linux-x86-20231023224440.tar.gz",
+        "checksum": "111269e6760bcf2c8d86c435ba6e1814b96281089d38dc73c699b9b12489c662",
+        "contents_checksum": "93fa6c57934e224e3e9e20eec8386ca1d3169b5a4e8f2515f1b042b11e000564",
+        "size": 1233668,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-linux-x86-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4033,16 +4033,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "ec15e4bb7d1a361ae7d931c79626b7a27ded310f118208b5b80e6d54b4f7c793",
-        "contents_checksum": "3d6e552b35cbf9a7cb8e34026d14de0422241344032487ff418514503c133ad4",
-        "size": 1289207,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-linux-x86_64-20231023224440.tar.gz",
+        "checksum": "3fe726e72437a2257264bedb9bb4d61949c15c80b9f587888717c267f65ab91e",
+        "contents_checksum": "0b6b618de4cf9fc339b414d44e6e834e6cdb5fae2ddb65bde3525ad78c595d51",
+        "size": 1287877,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-linux-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4066,16 +4066,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "98febf85b26c1a33eb215b2af9f3c8bee847ee71c84be463b26b6d0a763f6400",
-        "contents_checksum": "2e7b929903bc28273be12f0c28dbd68c51315a66600c9751e749ff448d89696f",
-        "size": 1268435,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-windows-x86-20231023224440.tar.gz",
+        "checksum": "46a658000be7850ef81652659448e70c67e089d20946a572c6ba521676af668c",
+        "contents_checksum": "58e78452a22e94789408f6afbb86a65544cb1fac500ef3fbe7422c5eb6b19c10",
+        "size": 1267116,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-windows-x86-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4099,16 +4099,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "a5ed8bb33c67304f57f1ab4c1922f0396565e868dd938b49ce9434a87992a5b8",
-        "contents_checksum": "0c794abb07a045e2c0110bbda9e4033410bb8b7a3d9ddcd329777626ab36d2b3",
-        "size": 1322057,
-        "source": "components/google-cloud-sdk-gcloud-crc32c-windows-x86_64-20231023224440.tar.gz",
+        "checksum": "b9752b5c9eccc0105ef06f322b2dff92f2542884475708b864ae02e800ef7765",
+        "contents_checksum": "96506b713c645adb109e0a7bf83fef4af59a24cd7f714f8455b8d66af8946213",
+        "size": 1321071,
+        "source": "components/google-cloud-sdk-gcloud-crc32c-windows-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4132,16 +4132,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20231215195722,
         "version_string": "1.0.0"
       }
     },
     {
       "data": {
-        "checksum": "e6ff194b0ebb57cfca1c65a600e852bd5760a7257afb6240a0ed470ff0965fe0",
-        "contents_checksum": "25b6e403e06e65b9205d1258a1b9e09e5e84efb20007e5f940b90af41e3e7873",
-        "size": 12282466,
-        "source": "components/google-cloud-sdk-gcloud-deps-20231025210228.tar.gz",
+        "checksum": "199a922d9427440154dbd427650aac513dde9dcf5fb904f696011e208af16436",
+        "contents_checksum": "bd1cee79ccb1075e6174ce72da21507e22c9309c7d453ec4c0365c38184dbf72",
+        "size": 17398946,
+        "source": "components/google-cloud-sdk-gcloud-deps-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4164,8 +4164,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2023.10.25"
+        "build_number": 20240229170130,
+        "version_string": "2024.02.29"
       }
     },
     {
@@ -4401,10 +4401,10 @@
     },
     {
       "data": {
-        "checksum": "a437611fe8ca14e5fbeada917374b7cd2f7d56ad2212e51b80fcb9e7b036a21a",
-        "contents_checksum": "4272d2b5be6e3778aaddfdd6a9d555b6dcf31d27428ed7d4aea76e68dfe5f839",
-        "size": 6464999,
-        "source": "components/google-cloud-sdk-gcloud-man-pages-nix-20231023224440.tar.gz",
+        "checksum": "5002cd1d0b639317a879d8c6eaf1c8b65ae30d908be20168b3d1126a7a9931fb",
+        "contents_checksum": "be1175193dbcc96732f074ee8916e2d01bae057865ca4cc9af4fce96669a2e82",
+        "size": 6729281,
+        "source": "components/google-cloud-sdk-gcloud-man-pages-nix-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4429,7 +4429,7 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
+        "build_number": 20240229170130,
         "version_string": ""
       }
     },
@@ -4466,15 +4466,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "0.5.6"
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "748941d0f1088368cddbff04350c1156eb6c0b941fb4a8281f90e715de91600c",
-        "contents_checksum": "2e92b76de260589610789902d43950f9c23035d9492e9acde1ab81c2ce1b6f86",
-        "size": 7760852,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-darwin-arm-20230915145114.tar.gz",
+        "checksum": "327a609642f03ff8f40490eed3794ecf937c6d5fdabf16b41711f037f86c283a",
+        "contents_checksum": "e63fd07984cbb296b5359bb35569445a539ed4e58c8bce640d4216a94c8a6881",
+        "size": 7784812,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-darwin-arm-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4498,16 +4498,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "87e8b9fa1ab657e6f9059b3e73987cdbcafcd0a54a7c0695933a1a630e8c40b6",
-        "contents_checksum": "e93346a6bed20405a41737b6894e5555fe6e65ff84e0c4dfef1c1ca8fbc8759a",
-        "size": 8135789,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-darwin-x86_64-20230915145114.tar.gz",
+        "checksum": "79c52f25361b485515fdf2d20283925997feeea6a3f276eb49f5476645c1fe10",
+        "contents_checksum": "aeff6edc3ea7bde1aa33f44744484644cd4e1ca56803f043e7ef27dba5e7b015",
+        "size": 8160991,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-darwin-x86_64-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4531,16 +4531,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "ba39fbdeae5f44a54a83a730d8df93a0b9ce7e18369dabe6f87b023b06b27632",
-        "contents_checksum": "4fe1de8207994103e77bad7d93ebcc9bffde9cb4fa03fd6d658f009454863ba6",
-        "size": 7669387,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-linux-arm-20230915145114.tar.gz",
+        "checksum": "51fcd3459f2ef594b441faea5433a26cc8d94ab638cdac3b9028a2710a5adcbb",
+        "contents_checksum": "b33be7d31ad5e77814ae435860a3ab9688672baaccda4bf86c000a5b7d1eea67",
+        "size": 7695357,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-linux-arm-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4564,16 +4564,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "dde5954dc3e5aeb70dd031d1f9dc06ca91fbfef353786dc7aeaf08fe47b8349e",
-        "contents_checksum": "23d71fc214901822027f64f6096b3a6559d963432c189b3bacc7ecf5bf36aef6",
-        "size": 8185793,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-linux-x86-20230915145114.tar.gz",
+        "checksum": "87066fca15ebfd79a716c54fd15ad5621fb67dc4a3a34d1e23bcd69d4b5ed5dd",
+        "contents_checksum": "2a425e75e5ec31bec2b7dbdec75ed1a4ca8920ccceee7b12bf658b2e1bd409a8",
+        "size": 8213296,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-linux-x86-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4597,16 +4597,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "d8d9359bbbb0b8e2761bda8a315a50ad1580450d32e4b31d43da1805c408ec9a",
-        "contents_checksum": "08767b975276ca0651442a13bb7319c3c065dca875cf416a27251cf2093d576a",
-        "size": 8298454,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-linux-x86_64-20230915145114.tar.gz",
+        "checksum": "cb9856b2ae92bf1a5fd69c7f29bd6892abeb2a229732541f361adea37ede3d9f",
+        "contents_checksum": "811125a0907dc84d4603f7c3734cfd214509c7400397e705d234b06d31c6714f",
+        "size": 8323564,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-linux-x86_64-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4630,16 +4630,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "4e53ce9e76364f936a3730aa26d8396fc905443093bfcba5107e50d999767a28",
-        "contents_checksum": "e13da874c2f1330b78675428fbf7aead7c0f4a4bb8152c911906659d1e7923bb",
-        "size": 8294371,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-windows-x86-20230915145114.tar.gz",
+        "checksum": "3b4ffda0fab2631a3b43229390bbb7c2d35d6aa6c7b283d47d8107499c44ee58",
+        "contents_checksum": "3f148312f9edea79f254274261b0bb1a928dc979bd569ca1410699f576433156",
+        "size": 8319970,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-windows-x86-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4663,16 +4663,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
       "data": {
-        "checksum": "72c35b4ec450e1e30e301e681c322bb2ddd8c9158b60f6d7a6c86f5d1d082396",
-        "contents_checksum": "1a1de077982ffdcb3762e47dea8d515cfe301ec2fab336aa2d3f968a142cff56",
-        "size": 8448839,
-        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-windows-x86_64-20230915145114.tar.gz",
+        "checksum": "56b20fa9e9fbe51bc2b8e5d8086088be75aaaf90fdeae444c7bb246bdd38454a",
+        "contents_checksum": "af802f48ffa244f12154321bc1bc4170e53d2ab7628df711cac7c36bb1b0493d",
+        "size": 8477137,
+        "source": "components/google-cloud-sdk-gke-gcloud-auth-plugin-windows-x86_64-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4696,8 +4696,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230915145114,
-        "version_string": "0.5.6"
+        "build_number": 20240106004423,
+        "version_string": "0.5.8"
       }
     },
     {
@@ -4730,10 +4730,10 @@
     },
     {
       "data": {
-        "checksum": "140a65cc728b7d7f0e0018c85f30ea6e7a0cae5e59af15fa51a6f1156f598ec8",
-        "contents_checksum": "865d885b3c86680b0f5581236d54916c71c2672b13e32c2c5b1d213429291bdf",
-        "size": 2035,
-        "source": "components/google-cloud-sdk-gsutil-nix-20231025210228.tar.gz",
+        "checksum": "0e203c936ca846514c498e1bf3f18ecfd8f4e031eb65f1f915812fa31824d246",
+        "contents_checksum": "023019da3e1594d499efe2047aa7069fd138fba4022da534f245de4a9b25597c",
+        "size": 2042,
+        "source": "components/google-cloud-sdk-gsutil-nix-20240106004423.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4758,16 +4758,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
+        "build_number": 20240106004423,
         "version_string": "5.27"
       }
     },
     {
       "data": {
-        "checksum": "f44dc54214254bc4c977ac3635113b9299fc7077e2ff2ba649718b0b2b9754ee",
-        "contents_checksum": "d7ff72a9837188a8f602ba4833ea0f38bb0a55ac160121c59dba0b72fae4064e",
-        "size": 4125,
-        "source": "components/google-cloud-sdk-gsutil-win-20231025210228.tar.gz",
+        "checksum": "8b63a83d67b850db7e46f468c9a5370bcdf67aa826c39e5d686c1154e378cf27",
+        "contents_checksum": "0f40962ad671c9f7eb0c6d0d9fe2ea0cfa406fa550764864959335988172d5e6",
+        "size": 4160,
+        "source": "components/google-cloud-sdk-gsutil-win-20240226203415.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4789,7 +4789,7 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
+        "build_number": 20240226203415,
         "version_string": "5.27"
       }
     },
@@ -4854,6 +4854,169 @@
     },
     {
       "dependencies": [
+        "istioctl-darwin-arm",
+        "istioctl-darwin-x86_64",
+        "istioctl-linux-arm",
+        "istioctl-linux-x86_64"
+      ],
+      "details": {
+        "description": "Support tool for Cloud Service Mesh.",
+        "display_name": "istioctl"
+      },
+      "id": "istioctl",
+      "is_configuration": false,
+      "is_hidden": true,
+      "is_required": false,
+      "platform": {
+        "architectures": [
+          "arm",
+          "x86_64"
+        ],
+        "operating_systems": [
+          "LINUX",
+          "MACOSX"
+        ]
+      },
+      "platform_required": false,
+      "version": {
+        "build_number": 0,
+        "version_string": "1.20.311"
+      }
+    },
+    {
+      "data": {
+        "checksum": "e21e0b1b1a143e74b1b0ba7392ed4fdd1cf28323bd74ef59f116e218f49824fb",
+        "contents_checksum": "ea25e0ffad0fcd5877d24e86ef5b96be2e86446f432926385ebfc08590a9be36",
+        "size": 26043155,
+        "source": "components/google-cloud-sdk-istioctl-darwin-arm-20240229170130.tar.gz",
+        "type": "tar"
+      },
+      "dependencies": [
+        "istioctl"
+      ],
+      "details": {
+        "description": "Support tool for Cloud Service Mesh.",
+        "display_name": "istioctl"
+      },
+      "id": "istioctl-darwin-arm",
+      "is_configuration": false,
+      "is_hidden": true,
+      "is_required": false,
+      "platform": {
+        "architectures": [
+          "arm"
+        ],
+        "operating_systems": [
+          "MACOSX"
+        ]
+      },
+      "platform_required": false,
+      "version": {
+        "build_number": 20240229170130,
+        "version_string": "1.20.311"
+      }
+    },
+    {
+      "data": {
+        "checksum": "e26416a75034738c5decb4e88b69f060849db045eb1a416dbe5def38ca036051",
+        "contents_checksum": "9ed26dc784a70ed4f98d845dac4ba8b298a90dcdfb169e665e1756cbbfadbfc7",
+        "size": 26886694,
+        "source": "components/google-cloud-sdk-istioctl-darwin-x86_64-20240229170130.tar.gz",
+        "type": "tar"
+      },
+      "dependencies": [
+        "istioctl"
+      ],
+      "details": {
+        "description": "Support tool for Cloud Service Mesh.",
+        "display_name": "istioctl"
+      },
+      "id": "istioctl-darwin-x86_64",
+      "is_configuration": false,
+      "is_hidden": true,
+      "is_required": false,
+      "platform": {
+        "architectures": [
+          "x86_64"
+        ],
+        "operating_systems": [
+          "MACOSX"
+        ]
+      },
+      "platform_required": false,
+      "version": {
+        "build_number": 20240229170130,
+        "version_string": "1.20.311"
+      }
+    },
+    {
+      "data": {
+        "checksum": "5fbeafb59962e1f5e42b874caf897a151ce05f2082063e04edddd054be1b9b78",
+        "contents_checksum": "62e413e41af9e75ae3523f45e5e60063ce9363d9b73e7b5b427e6e451bbc6816",
+        "size": 22993370,
+        "source": "components/google-cloud-sdk-istioctl-linux-arm-20240229170130.tar.gz",
+        "type": "tar"
+      },
+      "dependencies": [
+        "istioctl"
+      ],
+      "details": {
+        "description": "Support tool for Cloud Service Mesh.",
+        "display_name": "istioctl"
+      },
+      "id": "istioctl-linux-arm",
+      "is_configuration": false,
+      "is_hidden": true,
+      "is_required": false,
+      "platform": {
+        "architectures": [
+          "arm"
+        ],
+        "operating_systems": [
+          "LINUX"
+        ]
+      },
+      "platform_required": false,
+      "version": {
+        "build_number": 20240229170130,
+        "version_string": "1.20.311"
+      }
+    },
+    {
+      "data": {
+        "checksum": "167b9dc19cb7b64b5eca9e0efecf609a621eb18ce7ece2288a36038e1124658e",
+        "contents_checksum": "1d3a6f9870ab2b0b693927d32154cd44b4686079a9c117590cdc2b385b040869",
+        "size": 25190186,
+        "source": "components/google-cloud-sdk-istioctl-linux-x86_64-20240229170130.tar.gz",
+        "type": "tar"
+      },
+      "dependencies": [
+        "istioctl"
+      ],
+      "details": {
+        "description": "Support tool for Cloud Service Mesh.",
+        "display_name": "istioctl"
+      },
+      "id": "istioctl-linux-x86_64",
+      "is_configuration": false,
+      "is_hidden": true,
+      "is_required": false,
+      "platform": {
+        "architectures": [
+          "x86_64"
+        ],
+        "operating_systems": [
+          "LINUX"
+        ]
+      },
+      "platform_required": false,
+      "version": {
+        "build_number": 20240229170130,
+        "version_string": "1.20.311"
+      }
+    },
+    {
+      "dependencies": [
         "kpt-darwin-arm",
         "kpt-darwin-x86_64",
         "kpt-linux-arm",
@@ -4880,15 +5043,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.0.0-beta.45"
+        "version_string": "1.0.0-beta.49"
       }
     },
     {
       "data": {
-        "checksum": "165e0d01221c66f8a02ca770a613af9e10ca84c301908cee016c4b9f62228c90",
-        "contents_checksum": "d69220663dd3189ef2d75698793f173994662ab4a1331f832cce561122dd3347",
-        "size": 15098362,
-        "source": "components/google-cloud-sdk-kpt-darwin-arm-20231006153333.tar.gz",
+        "checksum": "0790df1606aadcd3818ad4dd7e7826d454602c6e7d2c93376285c8b73487a91b",
+        "contents_checksum": "3dbe499874490929331944b276ff0332f4e94f1babf071e6779cb52746bdc906",
+        "size": 15088020,
+        "source": "components/google-cloud-sdk-kpt-darwin-arm-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4912,16 +5075,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "1.0.0-beta.45"
+        "build_number": 20231215195722,
+        "version_string": "1.0.0-beta.49"
       }
     },
     {
       "data": {
-        "checksum": "8a507cc40d952611f0d3d7ef881cd2564be93a09d91a01c8d9af13a8477eebe8",
-        "contents_checksum": "bba9c09fe778ebccbeb4c2d77f7fa1a008fc134eebc024d3cfa74ad8737de55d",
-        "size": 15865808,
-        "source": "components/google-cloud-sdk-kpt-darwin-x86_64-20231006153333.tar.gz",
+        "checksum": "ca3bceb9312bb492a1050ba6ed200b835102c58c76d55f9d1c6822c3e074d7e9",
+        "contents_checksum": "706fe93e6842fe68860507bc65fdbe08660e1063d61c882667dee51608789284",
+        "size": 15854938,
+        "source": "components/google-cloud-sdk-kpt-darwin-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4945,16 +5108,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "1.0.0-beta.45"
+        "build_number": 20231215195722,
+        "version_string": "1.0.0-beta.49"
       }
     },
     {
       "data": {
-        "checksum": "00242648b8722bdecbbc422dfe5e947a711d14aeb9adb575cb664e07b61a16c0",
-        "contents_checksum": "b7acebf0b9a28366a0a7ee8f283bb01baa7ba9ab0c85a31d994604c9ee62e587",
-        "size": 13639470,
-        "source": "components/google-cloud-sdk-kpt-linux-arm-20231006153333.tar.gz",
+        "checksum": "56d0a81d5b31304c153cf07d4b5eeb433a27245c095f9e181f49eb8b98536ace",
+        "contents_checksum": "78fe72d925a7144d71ac007c684d7fcbdb3f9b4e5e454bcd6c49ebc133cf132f",
+        "size": 13629886,
+        "source": "components/google-cloud-sdk-kpt-linux-arm-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -4978,16 +5141,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "1.0.0-beta.45"
+        "build_number": 20231215195722,
+        "version_string": "1.0.0-beta.49"
       }
     },
     {
       "data": {
-        "checksum": "d429dbc12345c454e5494e3312bdff83d39ad5793a05423c4ae5fc07a8128aba",
-        "contents_checksum": "2d9bc0d3ace7952ca0e3e37df2545c0d30734162edd151f7759a75a186134604",
-        "size": 15103896,
-        "source": "components/google-cloud-sdk-kpt-linux-x86_64-20231006153333.tar.gz",
+        "checksum": "72b3a2a1e41963a892899e273fff38aa93a83acdc90d59c9f3c335fa62b1d30b",
+        "contents_checksum": "3de022e880f11c7cbb0e258281b2dc5a7c32ebf688958a99feecaae684cc62bd",
+        "size": 15090734,
+        "source": "components/google-cloud-sdk-kpt-linux-x86_64-20231215195722.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5011,16 +5174,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231006153333,
-        "version_string": "1.0.0-beta.45"
+        "build_number": 20231215195722,
+        "version_string": "1.0.0-beta.49"
       }
     },
     {
       "data": {
-        "checksum": "1856710bc0df7be64bab8bf90cb5efb07dc3ea87affbd82d5fb95b1a87a0fd38",
-        "contents_checksum": "40d66e6d7f3852fcf4d60000bb89743f36516642a9fb5e4b4ac72d5db2b7d00f",
-        "size": 35802,
-        "source": "components/google-cloud-sdk-kubectl-20230901141909.tar.gz",
+        "checksum": "e06b2f2bd331421fa8f8c5776b7370b793101232a8316c61420ebad9622e2709",
+        "contents_checksum": "d7c1385f3b9bedea994733230851e6d3548ea4be8f5014b1feadbf4ca2c6ca46",
+        "size": 35936,
+        "source": "components/google-cloud-sdk-kubectl-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5044,16 +5207,16 @@
       "platform": {},
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
       "data": {
-        "checksum": "98705f1c24b4deb4c4705890b9d96cf7304b8df3f9fa21d16d971b1e8d577c85",
-        "contents_checksum": "713724b4e531400e61289f6649a0ebc2a390c23c17f9b13cf36ddf713e8c6fff",
-        "size": 103078284,
-        "source": "components/google-cloud-sdk-kubectl-darwin-arm-20230901141909.tar.gz",
+        "checksum": "ad4230981ddba174dc301d5ed31704c86819b99de90fc0a391d379197b221ff0",
+        "contents_checksum": "8208474ff6408f57a030648f9e0409eb66f854f95eb1cc8fc28897e3dae882b7",
+        "size": 76487537,
+        "source": "components/google-cloud-sdk-kubectl-darwin-arm-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5078,16 +5241,16 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
       "data": {
-        "checksum": "89fd68aa32498f5fa73e569cc6897c6ef2d12c822870703ce2cc004711260ca6",
-        "contents_checksum": "76c149262b6b45f75eec6d812f6c800924ddc42627bdfa757fbe8ba57c87c856",
-        "size": 108009509,
-        "source": "components/google-cloud-sdk-kubectl-darwin-x86_64-20230901141909.tar.gz",
+        "checksum": "7154fc7e724a41ba9109fc4d3211fdfb24bb9c706f82175a0543158a74ea64f4",
+        "contents_checksum": "1db2fb77158d4aeb37b895ca7beb34d2380b6d7bda97e18189c03a235473a26f",
+        "size": 80131408,
+        "source": "components/google-cloud-sdk-kubectl-darwin-x86_64-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5112,16 +5275,16 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
       "data": {
-        "checksum": "277ce37c99d1da67302f0b96be2f81712c7655b8bd6e8a681e5ec42c7e839f3d",
-        "contents_checksum": "603f81934af743bec8493385ef0742e396547ab8d4730f1b25243ce6f9d6583c",
-        "size": 96034568,
-        "source": "components/google-cloud-sdk-kubectl-linux-arm-20230901141909.tar.gz",
+        "checksum": "655be0e96cc23f6e04c4ec176ef19d6ac4164f0093de7e6a5ab882128bacf3cc",
+        "contents_checksum": "69a8d347c6cc78a42b8ec340794632e449b2ceac8f7a8cf3e677f97743fa6e66",
+        "size": 72277260,
+        "source": "components/google-cloud-sdk-kubectl-linux-arm-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5146,16 +5309,16 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
       "data": {
-        "checksum": "d0aa47c656c3f62b046fcdebe292fdd4277423d27ae82e076b33b7ca9c39eefb",
-        "contents_checksum": "da0be2ec150a1178b21e571fc31f3a0c1bc97aec8808add47123f958c8c3f622",
-        "size": 96964577,
-        "source": "components/google-cloud-sdk-kubectl-linux-x86-20230901141909.tar.gz",
+        "checksum": "37931d1405a46bac8833f106c35734512445fc218cc9f1e007604bb48cdee55b",
+        "contents_checksum": "8222dd939577e50f8ffc0f667d6a2ccbd88c8a0813925f4889a58d27b180ff98",
+        "size": 71637401,
+        "source": "components/google-cloud-sdk-kubectl-linux-x86-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5180,16 +5343,16 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
       "data": {
-        "checksum": "7ea12e2911cf031f4f1642d9be5a0336c9142d84b3e9511c2405ab742cddab5b",
-        "contents_checksum": "651b0f1e393ec6903229f7c170d1d54a41066fe5cfd6dd233c5a24e7ce08fb4d",
-        "size": 102779659,
-        "source": "components/google-cloud-sdk-kubectl-linux-x86_64-20230901141909.tar.gz",
+        "checksum": "479be7e5c55b77eacb26a86afb8063ee0c22664eca0af154c6725c6d413f4631",
+        "contents_checksum": "0d9e46f2a36f34ac1d485901b2243bbedc5f66e54cb3d8e42172cbc6484075ea",
+        "size": 76232083,
+        "source": "components/google-cloud-sdk-kubectl-linux-x86_64-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5214,8 +5377,8 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
@@ -5248,15 +5411,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.4.4"
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "a7d9d1a977856dc342b82936bedfda0032e27ec4657fd380048cd7dc5de05039",
-        "contents_checksum": "2d656b34043e23ff6a98a7fb432efa86d251eb0b14c4452d17c537dc02e04eaf",
-        "size": 20108100,
-        "source": "components/google-cloud-sdk-kubectl-oidc-darwin-arm-20220923141408.tar.gz",
+        "checksum": "ca1e67289f1d377b6fc300777cdd8853a4ebc7eb11c00db85a3e7394c8daea30",
+        "contents_checksum": "3d35d8343042427849f27fe09652e94dbb563ebb6026ded792641beb1c536ebd",
+        "size": 21674622,
+        "source": "components/google-cloud-sdk-kubectl-oidc-darwin-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5280,16 +5443,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "1d6d08431d911928ef8500d1979720278f8116e86ae52afc32ce0b76ec4a5fb0",
-        "contents_checksum": "497465b1a0c3a6781d2bb0b68a951af0a4d2230ae67caa84288d38b853800a53",
-        "size": 21183987,
-        "source": "components/google-cloud-sdk-kubectl-oidc-darwin-x86_64-20220923141408.tar.gz",
+        "checksum": "d8b175936d29c11412e099627cbc9d4bc4574e7201a48bd045714aa4d5039d97",
+        "contents_checksum": "b4c5609dd10b63e9946c1afaf9a6e242fe3b09cb0d5c0c453e4ead4fb173c4e2",
+        "size": 22732154,
+        "source": "components/google-cloud-sdk-kubectl-oidc-darwin-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5313,16 +5476,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "87550a6e878b3091c8da5df8380c65f9e2579f012b7cbddc3e64fb637906fc38",
-        "contents_checksum": "2c33c85c5826938f014a33c21d28289676cccc09d7ffb87368fd94faf43b6cc1",
-        "size": 19755678,
-        "source": "components/google-cloud-sdk-kubectl-oidc-linux-arm-20220923141408.tar.gz",
+        "checksum": "da25e182095d25746563ded62b84c614f6ba87514e751e1f445b8ef9ddbcf239",
+        "contents_checksum": "f1bd3477dd4ad77ed8c02631cfd0b7e102000e6bac495dcd3fb69daf6b21ba93",
+        "size": 21172499,
+        "source": "components/google-cloud-sdk-kubectl-oidc-linux-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5346,16 +5509,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "cd6945af71ecfdf94c693ee22b7629ad62dc650cf0c19d58761fe260f792e36f",
-        "contents_checksum": "c2092312910a7e7e86adcd8d72c9e97d7d9757d6dce2f3e24124d9bcadd0d9eb",
-        "size": 21362894,
-        "source": "components/google-cloud-sdk-kubectl-oidc-linux-x86_64-20220923141408.tar.gz",
+        "checksum": "94eb2344e8f1a5cff5b2f1db0c35e3cfc378336f148a701ac94e4111f17069f1",
+        "contents_checksum": "9ddfa977b16e32f97c5d5ad574ff09ae06f67b87f218f45a178cfae5f88d4355",
+        "size": 22854824,
+        "source": "components/google-cloud-sdk-kubectl-oidc-linux-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5379,16 +5542,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "2cf3f2460446692a81c888ec16ac7cbd838fd83acdec46e99bd9225ed49a5d67",
-        "contents_checksum": "6477f1e7ad0e16d891b1b47c201c2bf0e4409789893be60e1697593c58f74025",
-        "size": 21470876,
-        "source": "components/google-cloud-sdk-kubectl-oidc-windows-x86_64-20220923141408.tar.gz",
+        "checksum": "386b201a127ea6723ba4f4ac943c596310d03aa0568d947f23980577fc0c5685",
+        "contents_checksum": "72ccfee0b039eaf5d4bd5445044806c84a1af5d55318de032a372af0fdf779c4",
+        "size": 23111830,
+        "source": "components/google-cloud-sdk-kubectl-oidc-windows-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5412,16 +5575,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220923141408,
-        "version_string": "1.4.4"
+        "build_number": 20231201141418,
+        "version_string": "1.5.0"
       }
     },
     {
       "data": {
-        "checksum": "f0f671d703d9f167ad6bd3eaa6160a1f3612f55cb4224a7f5d6e32fe24aad4bf",
-        "contents_checksum": "97933ed5d6afd63a6d24200980cadc6ebcfe962827cb1cc5fff294f425b02225",
-        "size": 101631898,
-        "source": "components/google-cloud-sdk-kubectl-windows-x86-20230901141909.tar.gz",
+        "checksum": "80b067c1eed2401d32b2078e9296322ceecad8de4903105c8627a182bc626f89",
+        "contents_checksum": "008b98a6902a2d260427a6067f7b26278c947c3da0f65a135bea6806906de7cc",
+        "size": 75077053,
+        "source": "components/google-cloud-sdk-kubectl-windows-x86-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5448,16 +5611,16 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
       "data": {
-        "checksum": "be9dfaab70e30013b181ca6b01db0cbe33a9998c8b42b294cb6ae42586c08dcb",
-        "contents_checksum": "8646408cad8f64abcbf575a5b9606d304d3f0a1c914b5c7ba4148d4024c22b34",
-        "size": 103973366,
-        "source": "components/google-cloud-sdk-kubectl-windows-x86_64-20230901141909.tar.gz",
+        "checksum": "a632645797fb65db3f112548543ce4f7b1e048963f264bf5bc9e318f9f85cda2",
+        "contents_checksum": "bcdf97a387126e7b831c903b905bc96af608ff2fc5d2013482280535f077c21c",
+        "size": 77301897,
+        "source": "components/google-cloud-sdk-kubectl-windows-x86_64-20240209195330.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -5484,8 +5647,8 @@
       },
       "platform_required": true,
       "version": {
-        "build_number": 20230901141909,
-        "version_string": "1.27.5"
+        "build_number": 20240209195330,
+        "version_string": "1.26.13"
       }
     },
     {
@@ -6042,15 +6205,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.31.2"
+        "version_string": "1.32.0"
       }
     },
     {
       "data": {
-        "checksum": "78205e250353829eef8e4226427043612a26df3751750bdfeb4ce5096534477b",
-        "contents_checksum": "989ca8305dc5b0ac3ea012bde522d707e7893ec7b5601476015be170587c2484",
-        "size": 34507436,
-        "source": "components/google-cloud-sdk-minikube-darwin-arm-20230822145232.tar.gz",
+        "checksum": "6cdb5663bc455017a2c1b7a7d34acaacc7cb4b0af5785db6ccdbfb0beec199fd",
+        "contents_checksum": "f7ca3880897a3db31c4619210464df1577b933823248436b8d7b1981d5d302df",
+        "size": 35193661,
+        "source": "components/google-cloud-sdk-minikube-darwin-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6074,16 +6237,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230822145232,
-        "version_string": "1.31.2"
+        "build_number": 20231201141418,
+        "version_string": "1.32.0"
       }
     },
     {
       "data": {
-        "checksum": "09de85445c6b3df96b513fa5ef0893e141f2dd276d6ebe2a5c14805e02966386",
-        "contents_checksum": "6599c91419fd71db290d9df3d12a37cb335d9e30c206533767bcbccfb8415894",
-        "size": 35694869,
-        "source": "components/google-cloud-sdk-minikube-darwin-x86_64-20230822145232.tar.gz",
+        "checksum": "cdad196423217d1a81f1a00f8d706d4e05a27f58c21660e383d78351f4eda51c",
+        "contents_checksum": "da96e69ac893ea621f909904c57c57e34b1ae56f60b2de84427fb5d0a6df568f",
+        "size": 36498067,
+        "source": "components/google-cloud-sdk-minikube-darwin-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6107,16 +6270,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230822145232,
-        "version_string": "1.31.2"
+        "build_number": 20231201141418,
+        "version_string": "1.32.0"
       }
     },
     {
       "data": {
-        "checksum": "01f5ee655a8877b9d55912694d634151f411f84f59489c8f61129e60eec1dfbb",
-        "contents_checksum": "bdd299c7575c1365a3ebb3ece947b735a51234851358d24c53997228351232c9",
-        "size": 33636964,
-        "source": "components/google-cloud-sdk-minikube-linux-arm-20230822145232.tar.gz",
+        "checksum": "8a80e98200d3572f803d700c8475c25f143d30997491ff4aaddb30633ab2cf76",
+        "contents_checksum": "af8b9577ef05c98d3cb2fe6832a8c2bf182f2cd19cb64a22f492581fc2882d2b",
+        "size": 34568485,
+        "source": "components/google-cloud-sdk-minikube-linux-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6140,16 +6303,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230822145232,
-        "version_string": "1.31.2"
+        "build_number": 20231201141418,
+        "version_string": "1.32.0"
       }
     },
     {
       "data": {
-        "checksum": "567adccb2ee4f3112208def4dda54ec4ec96815a95499444efde14b240175fde",
-        "contents_checksum": "8a3e8c01ca983d10eda486ffcae60cf59d6a1e7fa09e2e4424e5ee56be742d07",
-        "size": 36252687,
-        "source": "components/google-cloud-sdk-minikube-linux-x86_64-20230822145232.tar.gz",
+        "checksum": "54e5932d307b935e9033bfa9ab956f701ce2bee640c16fddf2ba1f061f2707cd",
+        "contents_checksum": "28c6cb2657e863e1023b2f905edf91735e0a122c210669fd59e914ecdcb25846",
+        "size": 37111912,
+        "source": "components/google-cloud-sdk-minikube-linux-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6173,16 +6336,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230822145232,
-        "version_string": "1.31.2"
+        "build_number": 20231201141418,
+        "version_string": "1.32.0"
       }
     },
     {
       "data": {
-        "checksum": "2fc9ea9e26e672d5369e63e4084520b7e252f9c9eabf9e63edc30f362b79c751",
-        "contents_checksum": "f31c9d1fd17b363be49476ea676866474dabd71904101bc9cb748c1c8d50efa1",
-        "size": 36153509,
-        "source": "components/google-cloud-sdk-minikube-windows-x86_64-20230822145232.tar.gz",
+        "checksum": "66ccc0487812cac8ab071d878eda07fae7440eb232df9177520cd1522d67cd92",
+        "contents_checksum": "6a7de15384ab840952fdbcecad98e73b479542120dc0b9621b0c9452bcca4023",
+        "size": 37199202,
+        "source": "components/google-cloud-sdk-minikube-windows-x86_64-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6206,8 +6369,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20230822145232,
-        "version_string": "1.31.2"
+        "build_number": 20231201141418,
+        "version_string": "1.32.0"
       }
     },
     {
@@ -6235,15 +6398,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "1.16.2-rc.2"
+        "version_string": "1.17.2-rc.1"
       }
     },
     {
       "data": {
-        "checksum": "e985978e6f21b67b026ac23882b40fde32fce195c3618c845dce6e05e145359f",
-        "contents_checksum": "21fb7c2de16364b3e011aa4364c7b724cd7aacdfa21610ad891c1b8c3a388e02",
-        "size": 29892791,
-        "source": "components/google-cloud-sdk-nomos-darwin-x86_64-20231023224440.tar.gz",
+        "checksum": "3fd0c679ed6a308edc3460a04e939ef67152e9717ebac4c18b38e98edac51cea",
+        "contents_checksum": "bc7d9a0ef3f3a61d1d4d59a500ec650acae2425ab17b723bc4c2ad5d05a0837a",
+        "size": 29981784,
+        "source": "components/google-cloud-sdk-nomos-darwin-x86_64-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6267,16 +6430,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "1.16.2-rc.2"
+        "build_number": 20240229170130,
+        "version_string": "1.17.2-rc.1"
       }
     },
     {
       "data": {
-        "checksum": "413f599d671855ce7bd0002a35b0f6793041282463342206246e42c01fd9c9b8",
-        "contents_checksum": "ef98a3d5add19c22799e9fe9031487e542f779b31fa604db671775dcd592b739",
-        "size": 30473701,
-        "source": "components/google-cloud-sdk-nomos-linux-x86_64-20231023224440.tar.gz",
+        "checksum": "93d532890f146415a74734c921ded0e8bdd408d3d9424beb6bbb7113530ec5fe",
+        "contents_checksum": "b429ab3ef37405bc06cbd594edc0730dd162f37a933fa854597a1bd5e59c761d",
+        "size": 30144691,
+        "source": "components/google-cloud-sdk-nomos-linux-x86_64-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6300,8 +6463,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "1.16.2-rc.2"
+        "build_number": 20240229170130,
+        "version_string": "1.17.2-rc.1"
       }
     },
     {
@@ -6581,10 +6744,10 @@
     },
     {
       "data": {
-        "checksum": "28574de6bc04f41d2ffc96e94fb00243ae6ec5e6c19524de7c833afd082a0a20",
-        "contents_checksum": "ec18cbdb02d4f8c9f3abe177bd0f9255eedc1e1d7739121a4ed7a29ce9ff36f4",
-        "size": 65097027,
-        "source": "components/google-cloud-sdk-pubsub-emulator-20231016163610.tar.gz",
+        "checksum": "a080b9775844f83bcce039e5c9dff7f4c87d69ae7cf6f0cc85a3c9212b8361ed",
+        "contents_checksum": "bcc50b05f18aabe3fd90857ec8933e7580ee9212d764d3efb9ac6ef26b01a9fa",
+        "size": 66384213,
+        "source": "components/google-cloud-sdk-pubsub-emulator-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6601,8 +6764,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231016163610,
-        "version_string": "0.8.10"
+        "build_number": 20240229170130,
+        "version_string": "0.8.12"
       }
     },
     {
@@ -6636,15 +6799,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "2.7.1"
+        "version_string": "2.9.0"
       }
     },
     {
       "data": {
-        "checksum": "d82de49ad5de08e99bd6e77ec3dca58b7a48b6d440fffd24a136bc01d3f15c63",
-        "contents_checksum": "f919555748e2d8c1af435e9a62af9633d5146a251e152d0f077d6f3a5a90d5c5",
-        "size": 24334283,
-        "source": "components/google-cloud-sdk-skaffold-darwin-arm-20231002150006.tar.gz",
+        "checksum": "badd2854a9b5a3b4d3b8b55c163656776778c572eba854262bfd637c803ca3b7",
+        "contents_checksum": "45e2f3eb2703f29f735cbc820e9d4004f1e95bea1ab96e698ded74f2a5de857d",
+        "size": 24426195,
+        "source": "components/google-cloud-sdk-skaffold-darwin-arm-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6669,16 +6832,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231002150006,
-        "version_string": "2.7.1"
+        "build_number": 20231110155547,
+        "version_string": "2.9.0"
       }
     },
     {
       "data": {
-        "checksum": "80f62a636612be395d304441b70cb94eb2137a21c5f27363a746fd70f3670565",
-        "contents_checksum": "e446714207056f4c0a70739472eca48de9a4063c6260a1609c55291a0756f75a",
-        "size": 26431910,
-        "source": "components/google-cloud-sdk-skaffold-darwin-x86_64-20231002150006.tar.gz",
+        "checksum": "cba0d4046df4764747f9a15ebe061fec60f9f768d1079041feea2321c5cd5e76",
+        "contents_checksum": "941bc43d4633be69ed64eadf7ad3ba477929bd6dcb519dc668b77f29b5115a57",
+        "size": 26530698,
+        "source": "components/google-cloud-sdk-skaffold-darwin-x86_64-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6703,16 +6866,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231002150006,
-        "version_string": "2.7.1"
+        "build_number": 20231110155547,
+        "version_string": "2.9.0"
       }
     },
     {
       "data": {
-        "checksum": "6fd3ecbea23c64ccb1a7a43ba949df0108d5dcb279b8cd1d55a35f54b53bb674",
-        "contents_checksum": "d38419a04db49b0f30f761ae709c9fa902552871d0aa5522d1777643cc963579",
-        "size": 22351847,
-        "source": "components/google-cloud-sdk-skaffold-linux-arm-20231002150006.tar.gz",
+        "checksum": "45cb0e94d47b3b28db5d8dda5fbd1dd7fbfad96936ce3bbbdce3f2f8be63a093",
+        "contents_checksum": "2f36d4b1b0eab170b21fe0df2964aa31d79694a8860070c32b7eb7bc471a74aa",
+        "size": 22439050,
+        "source": "components/google-cloud-sdk-skaffold-linux-arm-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6737,16 +6900,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231002150006,
-        "version_string": "2.7.1"
+        "build_number": 20231110155547,
+        "version_string": "2.9.0"
       }
     },
     {
       "data": {
-        "checksum": "6ed058de92dfa76751028437b05c76ce17030fc19d4ff7fde5f0d5c915b94110",
-        "contents_checksum": "c86e65478b18bc05b803e0d4d2c4cf5387b05bd99def05b7017dd74fd478bebc",
-        "size": 24456326,
-        "source": "components/google-cloud-sdk-skaffold-linux-x86_64-20231002150006.tar.gz",
+        "checksum": "6add62f50ef3b9d77259177118ee30251c2f07074fc4555d516a3ae5dfbbb3b6",
+        "contents_checksum": "065a00f4d25312efad8a854d21809862d9f0e41588511a1c1930ed5c34e7e57b",
+        "size": 24544699,
+        "source": "components/google-cloud-sdk-skaffold-linux-x86_64-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6771,16 +6934,16 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231002150006,
-        "version_string": "2.7.1"
+        "build_number": 20231110155547,
+        "version_string": "2.9.0"
       }
     },
     {
       "data": {
-        "checksum": "c81abe9107f9b03476de18df93b7272bfe4942629e5202eea60611b0294f5883",
-        "contents_checksum": "027478d2605b71896dfffeb11c85da30e6fa3e6164b55701c5186137047e2771",
-        "size": 24939189,
-        "source": "components/google-cloud-sdk-skaffold-windows-x86_64-20231002150006.tar.gz",
+        "checksum": "577504b2686302f74a7e00bebe9a561b0caa15d3294dc0c9e15dba2d9d745f32",
+        "contents_checksum": "940d470dd53773d3e907de4d80ef70df247824167fcb95a05494e66e6bb28c9a",
+        "size": 25035980,
+        "source": "components/google-cloud-sdk-skaffold-windows-x86_64-20231110155547.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6805,8 +6968,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231002150006,
-        "version_string": "2.7.1"
+        "build_number": 20231110155547,
+        "version_string": "2.9.0"
       }
     },
     {
@@ -6832,15 +6995,15 @@
       "platform_required": false,
       "version": {
         "build_number": 0,
-        "version_string": "3.1.3"
+        "version_string": "3.2.2"
       }
     },
     {
       "data": {
-        "checksum": "f329d03249adcbd72707b0c723b3229bc3957bc2865ae0c2c13a90339ffed4f0",
-        "contents_checksum": "280d4a1fac4f797c9ca31c3a60ac377f32633678e92c45cb3d9c52d9ed697b52",
-        "size": 23033348,
-        "source": "components/google-cloud-sdk-spanner-migration-tool-linux-x86_64-20231023224440.tar.gz",
+        "checksum": "6f55289b6cdb9206c110e5e1f3e040e4c9a69aa129c5c0caae71bc668b17bca9",
+        "contents_checksum": "2284e73fc19acea54651526b45fd808530a9272fd56b0c553386bbfaac02f729",
+        "size": 24615874,
+        "source": "components/google-cloud-sdk-spanner-migration-tool-linux-x86_64-20240112150613.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -6864,8 +7027,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20231023224440,
-        "version_string": "3.1.3"
+        "build_number": 20240112150613,
+        "version_string": "3.2.2"
       }
     },
     {
@@ -7022,10 +7185,10 @@
     },
     {
       "data": {
-        "checksum": "be800db8eba62f286ff49c2ad59c399a6375429bcab4d06285a0f6851b10ee01",
-        "contents_checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
-        "size": 105,
-        "source": "components/google-cloud-sdk-terraform-tools-linux-arm-20220325151342.tar.gz",
+        "checksum": "a227491c831d1ed3619bfebd69a3a4379729372b302de64c77891f0955316445",
+        "contents_checksum": "84c92ebb4b1ae244c96595c4774a9594857e37d900306958fb63fcc58ef61a0f",
+        "size": 64183072,
+        "source": "components/google-cloud-sdk-terraform-tools-linux-arm-20231201141418.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -7049,8 +7212,8 @@
       },
       "platform_required": false,
       "version": {
-        "build_number": 20220325151342,
-        "version_string": "0.2.1"
+        "build_number": 20231201141418,
+        "version_string": "0.11.1"
       }
     },
     {
@@ -7121,10 +7284,10 @@
     },
     {
       "data": {
-        "checksum": "5f1b1acfd653d1c7906dca110f939cf3e3389778ae0d4328c722348e69c3ba58",
-        "contents_checksum": "7fa3155ffbfc1c7b90d78a1eabb7e722f274149645f0e3979a5493aad1fd9df1",
-        "size": 50896581,
-        "source": "components/google-cloud-sdk-tests-20231025210228.tar.gz",
+        "checksum": "274f5f8fa50423d400d3df880f06bab3a10fadf9ce9a4b65bbb00d5ef84afe3a",
+        "contents_checksum": "d3d35039158b47815d55b4cf508dccc25076c4250104e4277e3555782fc81317",
+        "size": 51453272,
+        "source": "components/google-cloud-sdk-tests-20240229170130.tar.gz",
         "type": "tar"
       },
       "dependencies": [
@@ -7141,8 +7304,8 @@
       "platform": {},
       "platform_required": false,
       "version": {
-        "build_number": 20231025210228,
-        "version_string": "2023.10.25"
+        "build_number": 20240229170130,
+        "version_string": "2024.02.29"
       }
     }
   ],
@@ -7161,11 +7324,11 @@
   ],
   "post_processing_command": "components post-process",
   "release_notes_url": "RELEASE_NOTES",
-  "revision": 20231025210228,
+  "revision": 20240229170130,
   "schema_version": {
     "no_update": false,
     "url": "https://dl.google.com/dl/cloudsdk/channels/rapid/google-cloud-sdk.tar.gz",
     "version": 3
   },
-  "version": "452.0.1"
+  "version": "467.0.0"
 }
diff --git a/pkgs/tools/admin/google-cloud-sdk/data.nix b/pkgs/tools/admin/google-cloud-sdk/data.nix
index 13ba8b8dd6f0..09f56aa4a77d 100644
--- a/pkgs/tools/admin/google-cloud-sdk/data.nix
+++ b/pkgs/tools/admin/google-cloud-sdk/data.nix
@@ -1,32 +1,32 @@
 # DO NOT EDIT! This file is generated automatically by update.sh
 { }:
 {
-  version = "452.0.1";
+  version = "467.0.0";
   googleCloudSdkPkgs = {
     x86_64-linux =
       {
-        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-452.0.1-linux-x86_64.tar.gz";
-        sha256 = "0dj0hzhfvw1p74ja079jmhrhzrbsivgfm0509rxf9xvh1a0kb8zx";
+        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-467.0.0-linux-x86_64.tar.gz";
+        sha256 = "09qkz9zw23rza5siz77m52nzfyikdzszrqsl200z2zs2cm69g50w";
       };
     x86_64-darwin =
       {
-        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-452.0.1-darwin-x86_64.tar.gz";
-        sha256 = "0gxz12sblc3slw9rhy0i7x8k61sakr0gwipx75h3cghf72hsx0cn";
+        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-467.0.0-darwin-x86_64.tar.gz";
+        sha256 = "0il26ivqym4n94kjb22pcizgmy6j1p70l2yxjfrsj8i6vhwi3qbq";
       };
     aarch64-linux =
       {
-        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-452.0.1-linux-arm.tar.gz";
-        sha256 = "1jcacwqxa5ylffpfp5mr509imay24ddsv43l04fygzahv2sv8a2d";
+        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-467.0.0-linux-arm.tar.gz";
+        sha256 = "1d72l35jcxg7r2r8ajhyigadj8ydp2k1g25kw6rkwvlg4whv8d7b";
       };
     aarch64-darwin =
       {
-        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-452.0.1-darwin-arm.tar.gz";
-        sha256 = "1mpydxqkmfrnqiifgplvc5ghn6rs4981p4pw5zgxip7khw64dfap";
+        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-467.0.0-darwin-arm.tar.gz";
+        sha256 = "0yd9hjn8pgaih7hj3hhbl70apcmg5b3gkx758r8m9823vhqkk5wm";
       };
     i686-linux =
       {
-        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-452.0.1-linux-x86.tar.gz";
-        sha256 = "1whijjp2bn24j78rlfpp01y832fnlgj557v6fim9l78zcavgnahz";
+        url = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-467.0.0-linux-x86.tar.gz";
+        sha256 = "0wag0qjzh0m6kmpzvmzvr7sy74w20xzgysljwjfravqr1xmw9m48";
       };
   };
 }
diff --git a/pkgs/tools/admin/hedgedoc-cli/default.nix b/pkgs/tools/admin/hedgedoc-cli/default.nix
index 0af64919e746..ce1497b62c7c 100644
--- a/pkgs/tools/admin/hedgedoc-cli/default.nix
+++ b/pkgs/tools/admin/hedgedoc-cli/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     description = "Hedgedoc CLI";
     homepage = "https://github.com/hedgedoc/cli";
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     maintainers = with maintainers; [ drupol ];
   };
 }
diff --git a/pkgs/tools/admin/lxd/default.nix b/pkgs/tools/admin/lxd/default.nix
index 65dd2c70daa2..d66fd7cb3a45 100644
--- a/pkgs/tools/admin/lxd/default.nix
+++ b/pkgs/tools/admin/lxd/default.nix
@@ -18,11 +18,11 @@
 
 buildGoModule rec {
   pname = "lxd-unwrapped";
-  version = "5.20";
+  version = "5.21.0";
 
   src = fetchurl {
     url = "https://github.com/canonical/lxd/releases/download/lxd-${version}/lxd-${version}.tar.gz";
-    hash = "sha256-L5WLdX9M3mTQ81eNoL2p7lllo6cOwJVu3fgofRKQFn8=";
+    hash = "sha256-vnh+8Jm4Olg+VdAPpGboLSbChdnwsU84IgyzGe4ltg8=";
   };
 
   vendorHash = null;
@@ -87,7 +87,7 @@ buildGoModule rec {
     description = "Daemon based on liblxc offering a REST API to manage containers";
     homepage = "https://ubuntu.com/lxd";
     changelog = "https://github.com/canonical/lxd/releases/tag/lxd-${version}";
-    license = with licenses; [ asl20 agpl3 ];
+    license = with licenses; [ asl20 agpl3Plus ];
     maintainers = teams.lxc.members;
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/admin/mycli/default.nix b/pkgs/tools/admin/mycli/default.nix
index 8a67139bb576..58f1236db037 100644
--- a/pkgs/tools/admin/mycli/default.nix
+++ b/pkgs/tools/admin/mycli/default.nix
@@ -57,6 +57,7 @@ buildPythonApplication rec {
   meta = with lib; {
     inherit version;
     description = "Command-line interface for MySQL";
+    mainProgram = "mycli";
     longDescription = ''
       Rich command-line interface for MySQL with auto-completion and
       syntax highlighting.
diff --git a/pkgs/tools/admin/nomachine-client/default.nix b/pkgs/tools/admin/nomachine-client/default.nix
index 754c8c506f66..78685e067859 100644
--- a/pkgs/tools/admin/nomachine-client/default.nix
+++ b/pkgs/tools/admin/nomachine-client/default.nix
@@ -81,6 +81,7 @@ in
     meta = with lib; {
       description = "NoMachine remote desktop client (nxplayer)";
       homepage = "https://www.nomachine.com/";
+      mainProgram = "nxplayer";
       sourceProvenance = with sourceTypes; [ binaryNativeCode ];
       license = {
         fullName = "NoMachine 7 End-User License Agreement";
diff --git a/pkgs/tools/admin/proxmove/default.nix b/pkgs/tools/admin/proxmove/default.nix
index 6f20e5fe603f..21055de12b6c 100644
--- a/pkgs/tools/admin/proxmove/default.nix
+++ b/pkgs/tools/admin/proxmove/default.nix
@@ -34,6 +34,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "The Proxmox VM migrator: migrates VMs between different Proxmox VE clusters";
+    mainProgram = "proxmove";
     homepage = "https://github.com/ossobv/proxmove";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/tools/admin/pulumi-bin/data.nix b/pkgs/tools/admin/pulumi-bin/data.nix
index 5acba25c0850..fa059873593f 100644
--- a/pkgs/tools/admin/pulumi-bin/data.nix
+++ b/pkgs/tools/admin/pulumi-bin/data.nix
@@ -1,12 +1,12 @@
 # DO NOT EDIT! This file is generated automatically by update.sh
 { }:
 {
-  version = "3.111.0";
+  version = "3.111.1";
   pulumiPkgs = {
     x86_64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.0-linux-x64.tar.gz";
-        sha256 = "19nlzw60bsysqldzdg9zlxc9qvwzlfa9bn8wvffndg0xndy6ghwh";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.1-linux-x64.tar.gz";
+        sha256 = "1hkj2dkpxp2migg1xh3vk42k1yq7y1bhchvkjd3vxbsd86llkwjz";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-linux-amd64.tar.gz";
@@ -29,8 +29,8 @@
         sha256 = "0984gpc5ds1bycvl1jwd3ifl6933vkd32w2mbyn3ik13wzxqm3q0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.25.1-linux-amd64.tar.gz";
-        sha256 = "1bwp6fxqaxgyhlakci2crk7qiwgymkmih5cnpcvmgxwvdw56ll4q";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.27.0-linux-amd64.tar.gz";
+        sha256 = "0dcyg4d50x5fkzqmnhw7mm8bgcs2zxph6bdjfdq2cxi28nzzg1ac";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.2-linux-amd64.tar.gz";
@@ -69,8 +69,8 @@
         sha256 = "0hnardid0kbzy65dmn7vz8ddy5hq78nf2871zz6srf2hfyiv7qa4";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.0-linux-amd64.tar.gz";
-        sha256 = "06lzppd2y2qm4gxf54f0s4gps13kk2zv6zmar8lrk31w4sfr06j3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.1-linux-amd64.tar.gz";
+        sha256 = "0vjd2y8h4m4j7v61wqwzrdgchqpz1nlbrvvrah06k8l9ci2hpml1";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.14.0-linux-amd64.tar.gz";
@@ -125,8 +125,8 @@
         sha256 = "1fihr9kilipd3lycl5m0vrf8l8658b1pm8mywsnk5wlksk1bf665";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-linux-amd64.tar.gz";
-        sha256 = "018ynwc7l2xvqq1n64ny3rlv37nzbx1b0c2j1jla7r35a4vjym8f";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.69.0-linux-amd64.tar.gz";
+        sha256 = "0qmh81kvqprmp1shml183qc6mdq76p6an7cm0b1qg7zyabg7qbrz";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.3-linux-amd64.tar.gz";
@@ -148,23 +148,14 @@
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.7.0-linux-amd64.tar.gz";
         sha256 = "0w7cgafkz1r55bz8n51v2rqhmmxzrf7ma60awzlfd2apyihghxyp";
       }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.10.0-linux-amd64.tar.gz";
-        sha256 = "0j3g5d94x5hawlrvr2iya4l0lsqjvszkgrgwppna6cn5mqjpx7v0";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-wavefront-v3.1.1-linux-amd64.tar.gz";
-        sha256 = "0ghxcipyz6j3fmawi5bpkz1mdpcdg046nib2w90r26dbidi4l3f3";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-yandex-v0.13.0-linux-amd64.tar.gz";
-        sha256 = "14qsnjafhd8ppachxr7j9541p5rbf1cakqlr7mra86fli1r49z9p";
-      }
+      # pulumi-resource-vsphere skipped (does not exist on remote)
+      # pulumi-resource-wavefront skipped (does not exist on remote)
+      # pulumi-resource-yandex skipped (does not exist on remote)
     ];
     x86_64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.0-darwin-x64.tar.gz";
-        sha256 = "0z6bcdsm48cw0q6p3jrcbd920kwq56h81hd4qzf1akr5b0fqs8qk";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.1-darwin-x64.tar.gz";
+        sha256 = "0vqwgx29z4rpmlxjqjxaixhijha6si0y01ibnr4wiwmm4y6ls578";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-darwin-amd64.tar.gz";
@@ -187,8 +178,8 @@
         sha256 = "0369vlly2x6sl59b4qha55yhhyjjpx38vlkmsbbqzla3da7zabf0";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.25.1-darwin-amd64.tar.gz";
-        sha256 = "1dhykjnvn1qr65nmbdafxl1q3vqfqc152x540syf5v3avcf0kqdb";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.27.0-darwin-amd64.tar.gz";
+        sha256 = "0xx4yw5zl4lnswnz4w4qrxgdiy400c8p7bsr1rqz1zmc9bqm43ng";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.2-darwin-amd64.tar.gz";
@@ -227,8 +218,8 @@
         sha256 = "1m5lh59h7nck1flzxs9m4n0ag0klk3jmnpf7hc509vffxs89xnjq";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.0-darwin-amd64.tar.gz";
-        sha256 = "0ibabyyk92v4cx7h6bckbb6yqp25b68z3s34ri2ci3q595f1mr84";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.1-darwin-amd64.tar.gz";
+        sha256 = "1c5wf2ksp7f02x82swjd7gq1d072j4zsyiyllrrazyvv8310zyig";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.14.0-darwin-amd64.tar.gz";
@@ -283,8 +274,8 @@
         sha256 = "0n0yd8hg10qfxvb6y5hci60n3520w5pidjzw43ih35dj84f0y23s";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-darwin-amd64.tar.gz";
-        sha256 = "1jy9ybxsplz7zapw56l0g11sfdzjf6xg1q7cj4js95fvisd2y0a4";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.69.0-darwin-amd64.tar.gz";
+        sha256 = "0mjcsgcwb8mqy5si5kj8l96ig6ccjwfplmr8kwrg22bj7g7vidlz";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.3-darwin-amd64.tar.gz";
@@ -306,23 +297,14 @@
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.7.0-darwin-amd64.tar.gz";
         sha256 = "1pvbcyw1l2b27hn48klc2fj3is2y3z1dj90ac4kkqi2ag4xj45vx";
       }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.10.0-darwin-amd64.tar.gz";
-        sha256 = "0yfk80y2dm0rk06q5m5sc159gryxbxp1gmbi4iwjcrpdra6vbm9v";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-wavefront-v3.1.1-darwin-amd64.tar.gz";
-        sha256 = "1lypf3yisnf19ygkjy6fmdbzf4i4mi5jzq7yc16hrg3aq2g75rr5";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-yandex-v0.13.0-darwin-amd64.tar.gz";
-        sha256 = "11wm9c125154brisncm9cgb41nbjl9q9h4bq6z0ym8v681qq0fc4";
-      }
+      # pulumi-resource-vsphere skipped (does not exist on remote)
+      # pulumi-resource-wavefront skipped (does not exist on remote)
+      # pulumi-resource-yandex skipped (does not exist on remote)
     ];
     aarch64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.0-linux-arm64.tar.gz";
-        sha256 = "0vgaqm6ap02640yf6a8ycbb2an3ymamgrzl6x1bj3ykk13x7ri2p";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.1-linux-arm64.tar.gz";
+        sha256 = "0nahz89vw9gkgszdcv9v9d658x43jzvk547kq6jpsgnzjligf41q";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-linux-arm64.tar.gz";
@@ -345,8 +327,8 @@
         sha256 = "10iaa1w7a0xbp15hyfl3slksg7rss04jcchws1z3lqddfn5xdcf2";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.25.1-linux-arm64.tar.gz";
-        sha256 = "14ayammjy00d73qgkcdyyryd60yrk6h71vjqakvmbnwndh44hm52";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.27.0-linux-arm64.tar.gz";
+        sha256 = "1v3h9j9bxqnjg8fj4k75p96sglnnkw5jziyfvbzhcbd11fcvaffs";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.2-linux-arm64.tar.gz";
@@ -385,8 +367,8 @@
         sha256 = "111pia2f5xwkwaqs6p90ri29l5b3ivmahsa1bji4fwyyjyp22h4r";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.0-linux-arm64.tar.gz";
-        sha256 = "14c25p6hfyyxq5cfq1z89gb67ywlr4zwj8lllknwqc7wsnvykllg";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.1-linux-arm64.tar.gz";
+        sha256 = "1cx7b7nxmjng8pff84yf0jhdmnmld5g09a80999ah90p54xy4zww";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.14.0-linux-arm64.tar.gz";
@@ -441,8 +423,8 @@
         sha256 = "1ssm84izdqzaymw1w3q9b2lkw35brysii73xhw7dgcazhgagfd1w";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-linux-arm64.tar.gz";
-        sha256 = "1nwm69fblmll2d3hgnl5d98x1xhjl49l5cdc8smldr25i5zp5zj2";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.69.0-linux-arm64.tar.gz";
+        sha256 = "0ns90ky01kys22dwhkmb4dwax1gzyr8jclczx1fc5d9xvl5cssiy";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.3-linux-arm64.tar.gz";
@@ -464,23 +446,14 @@
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.7.0-linux-arm64.tar.gz";
         sha256 = "017ff9x7s4yvsrf4ypsyaz934r9jm954080gn5535w1694k96wbn";
       }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.10.0-linux-arm64.tar.gz";
-        sha256 = "0sgrb6h7d5myp1cy4i7fhhx718n4qx83hj561z98y5hvipg16bcx";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-wavefront-v3.1.1-linux-arm64.tar.gz";
-        sha256 = "08mxk5rccxsgvjcnfxwzcr8980gkg7mxfrzx3fyvcxmgvf3ykcn8";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-yandex-v0.13.0-linux-arm64.tar.gz";
-        sha256 = "0fd3hgvkr3ch2r5hpmi7h70w4hkbjdyc7z534h151pyc5ssxw8bd";
-      }
+      # pulumi-resource-vsphere skipped (does not exist on remote)
+      # pulumi-resource-wavefront skipped (does not exist on remote)
+      # pulumi-resource-yandex skipped (does not exist on remote)
     ];
     aarch64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.0-darwin-arm64.tar.gz";
-        sha256 = "13qhv19xr21y6zs6if6gmyvayy0jrcg4kfn1z7zsqhf6j33ibwys";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.111.1-darwin-arm64.tar.gz";
+        sha256 = "0vs7mnp16bc9zj74v2ibn4nsjp43hjqpsdkgx3xhvb021b6lvnh0";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-darwin-arm64.tar.gz";
@@ -503,8 +476,8 @@
         sha256 = "0ja508z0r4gbg2zdyrjb7gq8kn1brrx5q6am5dvwaikqs6i6vxrm";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.25.1-darwin-arm64.tar.gz";
-        sha256 = "0wx39f18qc3yvnzixs7r1lq7lbff3as2xb60ldy3zim2dapy3y37";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.27.0-darwin-arm64.tar.gz";
+        sha256 = "0y0qha8d0dsjnqjaipn6i3csda4cl13zq0mqd8jpda127c3jzzxv";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.2-darwin-arm64.tar.gz";
@@ -543,8 +516,8 @@
         sha256 = "12bzicm43l7yvh02v5fx3z8v46l9i7a9f677735xi5rjbmd2an4c";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.0-darwin-arm64.tar.gz";
-        sha256 = "1ayyr8kywylv6zvwbzs71mvyldkh8qiki8ca90i34rpjxrv92n2d";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v8.5.1-darwin-arm64.tar.gz";
+        sha256 = "18985l0djz592235y2brxncpaky850qyr0xa23aflm07wdh7fc3n";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.14.0-darwin-arm64.tar.gz";
@@ -599,8 +572,8 @@
         sha256 = "1qr6qh4323d6n7f56lixdrph5cb5qby4q2f3l8l4l6n8s345v9kr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-darwin-arm64.tar.gz";
-        sha256 = "120acxnm1lid5spszv8i4vgnk732fch8j3i2qhrdd3k2p86z0a1n";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.69.0-darwin-arm64.tar.gz";
+        sha256 = "0rjb8pbxrp0djvjmxqvivd3jyy9r1iflp6i5a7mzad825g7gzczb";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.3-darwin-arm64.tar.gz";
@@ -622,18 +595,9 @@
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.7.0-darwin-arm64.tar.gz";
         sha256 = "00qq53wirdjm8zqqisad34fzx70m96dwg0dqysz6nqikq620h7dp";
       }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vsphere-v4.10.0-darwin-arm64.tar.gz";
-        sha256 = "1562pylmy4i109wwpn0lqb11m3ajwlswn5f76ni0cq4sw0iips4l";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-wavefront-v3.1.1-darwin-arm64.tar.gz";
-        sha256 = "09k9px0pm55jf3kxq1xc37li34mdv96sgcg89wmmm7spwl8q48m1";
-      }
-      {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-yandex-v0.13.0-darwin-arm64.tar.gz";
-        sha256 = "1qaccfqw24g862ij2p49m78hnymg0j2nghshszqrg45v0d0qnknm";
-      }
+      # pulumi-resource-vsphere skipped (does not exist on remote)
+      # pulumi-resource-wavefront skipped (does not exist on remote)
+      # pulumi-resource-yandex skipped (does not exist on remote)
     ];
   };
 }
diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix b/pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix
index 2a0582ecb805..51971963fc37 100644
--- a/pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix
+++ b/pkgs/tools/admin/pulumi-packages/pulumi-aws-native.nix
@@ -27,6 +27,7 @@ mkPulumiPackage rec {
 
   meta = with lib; {
     description = "Native AWS Pulumi Provider";
+    mainProgram = "pulumi-resource-aws-native";
     homepage = "https://github.com/pulumi/pulumi-aws-native";
     license = licenses.asl20;
     maintainers = with maintainers; [ veehaitch trundle ];
diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix b/pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix
index 76a5eff2973e..7b37577da566 100644
--- a/pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix
+++ b/pkgs/tools/admin/pulumi-packages/pulumi-azure-native.nix
@@ -32,6 +32,7 @@ mkPulumiPackage rec {
   __darwinAllowLocalNetworking = true;
   meta = with lib; {
     description = "Native Azure Pulumi Provider";
+    mainProgram = "pulumi-resource-azure-native";
     homepage = "https://github.com/pulumi/pulumi-azure-native";
     license = licenses.asl20;
     maintainers = with maintainers; [ veehaitch trundle ];
diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-command.nix b/pkgs/tools/admin/pulumi-packages/pulumi-command.nix
index d53e9593feec..e74a36fd5ef3 100644
--- a/pkgs/tools/admin/pulumi-packages/pulumi-command.nix
+++ b/pkgs/tools/admin/pulumi-packages/pulumi-command.nix
@@ -26,6 +26,7 @@ mkPulumiPackage rec {
 
   meta = with lib; {
     description = "A Pulumi provider to execute commands and scripts either locally or remotely as part of the Pulumi resource model";
+    mainProgram = "pulumi-resource-command";
     homepage = "https://github.com/pulumi/pulumi-command";
     license = licenses.asl20;
     maintainers = with maintainers; [ veehaitch trundle ];
diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix b/pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix
index 88da6f0d33f4..5a5e9ec7397d 100644
--- a/pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix
+++ b/pkgs/tools/admin/pulumi-packages/pulumi-language-go.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Golang language host plugin for Pulumi";
+    mainProgram = "pulumi-language-go";
     homepage = "https://github.com/pulumi/pulumi/tree/master/sdk/go";
     license = licenses.asl20;
   };
diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-random.nix b/pkgs/tools/admin/pulumi-packages/pulumi-random.nix
index af704eac192d..4f8781811519 100644
--- a/pkgs/tools/admin/pulumi-packages/pulumi-random.nix
+++ b/pkgs/tools/admin/pulumi-packages/pulumi-random.nix
@@ -16,6 +16,7 @@ mkPulumiPackage rec {
   __darwinAllowLocalNetworking = true;
   meta = with lib; {
     description = "A Pulumi provider that safely enables randomness for resources";
+    mainProgram = "pulumi-resource-random";
     homepage = "https://github.com/pulumi/pulumi-random";
     license = licenses.asl20;
     maintainers = with maintainers; [ veehaitch trundle ];
diff --git a/pkgs/tools/admin/qovery-cli/default.nix b/pkgs/tools/admin/qovery-cli/default.nix
index 7d8ebca61f16..5c380c92720c 100644
--- a/pkgs/tools/admin/qovery-cli/default.nix
+++ b/pkgs/tools/admin/qovery-cli/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "qovery-cli";
-  version = "0.84.4";
+  version = "0.85.0";
 
   src = fetchFromGitHub {
     owner = "Qovery";
     repo = "qovery-cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Er7rmIo/7B4cVNVCg04ILjVajwtwlZM386V+MiCf0ok=";
+    hash = "sha256-peIbzUDP6vJneeFkvIUXuMzOQJKZ602dIzRnSf/7HAI=";
   };
 
-  vendorHash = "sha256-YcLgmGCmOEawgTh0CvwmvOg3NAQxvA5Q9SJcH5dpwyQ=";
+  vendorHash = "sha256-3UsHxBIJpmga3Hjtwx4cZ45xY52RVMdPS/DAgTBYmuw=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/pkgs/tools/admin/s3bro/default.nix b/pkgs/tools/admin/s3bro/default.nix
index 47b458e9cc02..ee35c619fb74 100644
--- a/pkgs/tools/admin/s3bro/default.nix
+++ b/pkgs/tools/admin/s3bro/default.nix
@@ -34,6 +34,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "s3 CLI tool";
+    mainProgram = "s3bro";
     homepage = "https://github.com/rsavordelli/s3bro";
     license = licenses.mit;
     maintainers = with maintainers; [ psyanticy ];
diff --git a/pkgs/tools/admin/salt/default.nix b/pkgs/tools/admin/salt/default.nix
index 9988029f1f77..e38016de93ac 100644
--- a/pkgs/tools/admin/salt/default.nix
+++ b/pkgs/tools/admin/salt/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , python3
-, fetchpatch
 , fetchPypi
 , openssl
   # Many Salt modules require various Python modules to be installed,
@@ -11,21 +10,15 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "salt";
-  version = "3006.7";
+  version = "3007.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-7ZLSG4TrnUefk7qJRoRTQIEX4NwQEGFCFJmejQwhCv0=";
+    hash = "sha256-Qb+E5x/GVb+KS1LrRA0GIa6WEJaghtIOEy4VEuLt3/g=";
   };
 
   patches = [
-    # https://github.com/saltstack/salt/pull/63795
-    (fetchpatch {
-      name = "remove-duplicate-scripts.patch";
-      url = "https://github.com/saltstack/salt/commit/6b9463836e70e40409dbf653f01aa94ef869dfe7.patch";
-      hash = "sha256-VcVdKC8EH4qoWHtq6eEPl8OviR4eA2k/S2lWNQbubJw=";
-    })
     ./fix-libcrypto-loading.patch
   ];
 
@@ -57,6 +50,7 @@ python3.pkgs.buildPythonApplication rec {
     pyyaml
     pyzmq
     requests
+    tornado
   ] ++ extraInputs;
 
   # Don't use fixed dependencies on Darwin
diff --git a/pkgs/tools/admin/ssl-cert-check/default.nix b/pkgs/tools/admin/ssl-cert-check/default.nix
index c314c304aec8..857fc096e06d 100644
--- a/pkgs/tools/admin/ssl-cert-check/default.nix
+++ b/pkgs/tools/admin/ssl-cert-check/default.nix
@@ -51,6 +51,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Bourne shell script that can be used to report on expiring SSL certificates";
+    mainProgram = "ssl-cert-check";
     homepage = "https://github.com/Matty9191/ssl-cert-check";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ryantm ];
diff --git a/pkgs/tools/admin/trivy/default.nix b/pkgs/tools/admin/trivy/default.nix
index 2992e233d74d..428f3703e47b 100644
--- a/pkgs/tools/admin/trivy/default.nix
+++ b/pkgs/tools/admin/trivy/default.nix
@@ -10,19 +10,19 @@
 
 buildGoModule rec {
   pname = "trivy";
-  version = "0.49.1";
+  version = "0.50.0";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-+wgnj7mDIJ5UPGfD7vogdcbUeBdvTenL/a0Ew4CfuvE=";
+    hash = "sha256-gRePoEfUqTWSalUaCROEsZcgxXOFGe0AukyoaDlKAsM=";
   };
 
   # Hash mismatch on across Linux and Darwin
   proxyVendor = true;
 
-  vendorHash = "sha256-IL3FHgOYQYJIqJKr2eEeM/NzO+SeYucGSNUUY62kHNA=";
+  vendorHash = "sha256-i+FgfYdfhuS4utcHDWI1QofBysiU6tV9Y7b2SE0jnVA=";
 
   subPackages = [ "cmd/trivy" ];
 
diff --git a/pkgs/tools/admin/try/default.nix b/pkgs/tools/admin/try/default.nix
index 697a192d156e..a5a6c760a010 100644
--- a/pkgs/tools/admin/try/default.nix
+++ b/pkgs/tools/admin/try/default.nix
@@ -18,6 +18,7 @@ stdenvNoCC.mkDerivation rec {
   meta = with lib;{
     homepage = "https://github.com/binpash/try";
     description = "Lets you run a command and inspect its effects before changing your live system";
+    mainProgram = "try";
     maintainers = with maintainers; [ pasqui23 ];
     license = with licenses; [ mit ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/archivers/unar/default.nix b/pkgs/tools/archivers/unar/default.nix
index 4b2c66c0fc40..b1c818505712 100644
--- a/pkgs/tools/archivers/unar/default.nix
+++ b/pkgs/tools/archivers/unar/default.nix
@@ -50,12 +50,6 @@ stdenv.mkDerivation rec {
     lib.optionals stdenv.isLinux [ gnustep.make ] ++
     lib.optionals stdenv.isDarwin [ xcbuildHook ];
 
-  # Work around https://github.com/NixOS/nixpkgs/issues/166205.
-  # xcbuild links with clang instead of clang++.
-  env = lib.optionalAttrs stdenv.isDarwin {
-    LD_FLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
-  };
-
   xcbuildFlags = lib.optionals stdenv.isDarwin [
     "-target unar"
     "-target lsar"
diff --git a/pkgs/tools/archivers/zpaq/zpaqd.nix b/pkgs/tools/archivers/zpaq/zpaqd.nix
index 6896897be3b1..07ef4db4d6b0 100644
--- a/pkgs/tools/archivers/zpaq/zpaqd.nix
+++ b/pkgs/tools/archivers/zpaq/zpaqd.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "ZPAQ archive (de)compressor and algorithm development tool";
+    mainProgram = "zpaqd";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/audio/asap/default.nix b/pkgs/tools/audio/asap/default.nix
index 3eb2e8ea7ca9..7f7b5d9d5fe8 100644
--- a/pkgs/tools/audio/asap/default.nix
+++ b/pkgs/tools/audio/asap/default.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "asap";
-  version = "6.0.2";
+  version = "6.0.3";
 
   src = fetchzip {
     url = "mirror://sourceforge/project/asap/asap/${version}/asap-${version}.tar.gz";
-    sha256 = "sha256-hVZODnm2GxSUKglOyQ8uObeKkAKrupPTftEP0dck9a8=";
+    sha256 = "sha256-a4RUtFue5wdoGUykLRb46s4+yR/I/7DhwE1SiWPRg8s=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/tools/audio/liquidsoap/full.nix b/pkgs/tools/audio/liquidsoap/full.nix
index b4c4af7d457d..f4fac11df220 100644
--- a/pkgs/tools/audio/liquidsoap/full.nix
+++ b/pkgs/tools/audio/liquidsoap/full.nix
@@ -131,6 +131,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Swiss-army knife for multimedia streaming";
+    mainProgram = "liquidsoap";
     homepage = "https://www.liquidsoap.info/";
     maintainers = with maintainers; [ dandellion ehmry ];
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/audio/openai-whisper-cpp/default.nix b/pkgs/tools/audio/openai-whisper-cpp/default.nix
index 191aae946e21..20d2a23d1dd5 100644
--- a/pkgs/tools/audio/openai-whisper-cpp/default.nix
+++ b/pkgs/tools/audio/openai-whisper-cpp/default.nix
@@ -45,9 +45,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
     ] ++ lib.optionals cudaSupport ( with cudaPackages ;[
       cuda_nvcc
 
-      # TODO: Replace with autoAddDriverRunpath
-      # once https://github.com/NixOS/nixpkgs/pull/275241 has been merged
-      autoAddOpenGLRunpathHook
+      autoAddDriverRunpath
     ]);
 
   buildInputs = [
diff --git a/pkgs/tools/audio/pa-applet/default.nix b/pkgs/tools/audio/pa-applet/default.nix
index 0a82f37e04d3..ef5cde192baf 100644
--- a/pkgs/tools/audio/pa-applet/default.nix
+++ b/pkgs/tools/audio/pa-applet/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "";
+    mainProgram = "pa-applet";
     license = licenses.gpl2;
     maintainers = with maintainers; [ domenkozar ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/audio/spotdl/default.nix b/pkgs/tools/audio/spotdl/default.nix
index a825fd2e1e39..f4a7e207bef3 100644
--- a/pkgs/tools/audio/spotdl/default.nix
+++ b/pkgs/tools/audio/spotdl/default.nix
@@ -91,6 +91,7 @@ in python.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Download your Spotify playlists and songs along with album art and metadata";
+    mainProgram = "spotdl";
     homepage = "https://github.com/spotDL/spotify-downloader";
     changelog = "https://github.com/spotDL/spotify-downloader/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/audio/wyoming/piper.nix b/pkgs/tools/audio/wyoming/piper.nix
index dc69c907ee2a..82d8c003348e 100644
--- a/pkgs/tools/audio/wyoming/piper.nix
+++ b/pkgs/tools/audio/wyoming/piper.nix
@@ -38,6 +38,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     changelog = "https://github.com/rhasspy/wyoming-openwakeword/v${version}/master/CHANGELOG.md";
     description = "Wyoming Server for Piper";
+    mainProgram = "wyoming-piper";
     homepage = "https://github.com/rhasspy/wyoming-openwakeword";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/tools/backup/android-backup-extractor/default.nix b/pkgs/tools/backup/android-backup-extractor/default.nix
index 5411b70c77a2..3ecbce8555cd 100644
--- a/pkgs/tools/backup/android-backup-extractor/default.nix
+++ b/pkgs/tools/backup/android-backup-extractor/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Utility to extract and repack Android backups created with adb backup";
+    mainProgram = "abe";
     homepage = "https://github.com/nelenkov/android-backup-extractor";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.asl20;
diff --git a/pkgs/tools/backup/automysqlbackup/default.nix b/pkgs/tools/backup/automysqlbackup/default.nix
index f103149a83d7..2a36e3a2a275 100644
--- a/pkgs/tools/backup/automysqlbackup/default.nix
+++ b/pkgs/tools/backup/automysqlbackup/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A script to run daily, weekly and monthly backups for your MySQL database";
+    mainProgram = "automysqlbackup";
     homepage = "https://github.com/sixhop/AutoMySQLBackup";
     platforms = platforms.linux;
     maintainers = [ maintainers.aanderse ];
diff --git a/pkgs/tools/backup/awsbck/default.nix b/pkgs/tools/backup/awsbck/default.nix
index cb5b4f76549c..99ce2afc0a54 100644
--- a/pkgs/tools/backup/awsbck/default.nix
+++ b/pkgs/tools/backup/awsbck/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "awsbck";
-  version = "0.3.7";
+  version = "0.3.8";
 
   src = fetchFromGitHub {
     owner = "beeb";
     repo = "awsbck";
     rev = "v${version}";
-    hash = "sha256-asYXmBPNsIac+c/UXSijol+DFI7qZVpg/SKxaadlBOI=";
+    hash = "sha256-dUBuuFl6PVTsPnrH9OU3N/GwgTC2/QtH6yKtv3QgBsA=";
   };
 
-  cargoHash = "sha256-vFIBl/ZvSZn/9yLYMtzFvlPM+OYkZndkT6qPCIWVlOM=";
+  cargoHash = "sha256-X5lYplBej+ZBLnNoHQTGu63pwouGfbVtSH4bgdoxqUo=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
diff --git a/pkgs/tools/backup/bakelite/default.nix b/pkgs/tools/backup/bakelite/default.nix
index c67741b06869..9270be408d2d 100644
--- a/pkgs/tools/backup/bakelite/default.nix
+++ b/pkgs/tools/backup/bakelite/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/richfelker/bakelite";
     description = "Incremental backup with strong cryptographic confidentality";
+    mainProgram = "bakelite";
     license = licenses.gpl2;
     maintainers = with maintainers; [ mvs ];
     # no support for Darwin (yet: https://github.com/richfelker/bakelite/pull/5)
diff --git a/pkgs/tools/backup/btar/default.nix b/pkgs/tools/backup/btar/default.nix
index f1033d275aab..7d9f257f72b8 100644
--- a/pkgs/tools/backup/btar/default.nix
+++ b/pkgs/tools/backup/btar/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tar-compatible block-based archiver";
+    mainProgram = "btar";
     license = lib.licenses.gpl3Plus;
     homepage = "https://viric.name/cgi-bin/btar";
     platforms = platforms.all;
diff --git a/pkgs/tools/backup/bup/default.nix b/pkgs/tools/backup/bup/default.nix
index c2b7b048bce2..07ae258a675f 100644
--- a/pkgs/tools/backup/bup/default.nix
+++ b/pkgs/tools/backup/bup/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/bup/bup";
     description = "Efficient file backup system based on the git packfile format";
+    mainProgram = "bup";
     license = licenses.gpl2Plus;
 
     longDescription = ''
diff --git a/pkgs/tools/backup/burp/default.nix b/pkgs/tools/backup/burp/default.nix
index d78e75685f05..4684631efe9a 100644
--- a/pkgs/tools/backup/burp/default.nix
+++ b/pkgs/tools/backup/burp/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "BURP - BackUp and Restore Program";
     homepage    = "https://burp.grke.org";
-    license     = licenses.agpl3;
+    license     = licenses.agpl3Plus;
     maintainers = with maintainers; [ arjan-s ];
     platforms   = platforms.all;
   };
diff --git a/pkgs/tools/backup/chunksync/default.nix b/pkgs/tools/backup/chunksync/default.nix
index 2bab8d5ea22e..5a2ec9e5db7c 100644
--- a/pkgs/tools/backup/chunksync/default.nix
+++ b/pkgs/tools/backup/chunksync/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Space-efficient incremental backups of large files or block devices";
+    mainProgram = "chunksync";
     homepage = "http://chunksync.florz.de/";
     license = lib.licenses.gpl2;
     platforms = with lib.platforms; linux;
diff --git a/pkgs/tools/backup/discordchatexporter-cli/default.nix b/pkgs/tools/backup/discordchatexporter-cli/default.nix
deleted file mode 100644
index 518113e0b217..000000000000
--- a/pkgs/tools/backup/discordchatexporter-cli/default.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ lib
-, buildDotnetModule
-, dotnetCorePackages
-, fetchFromGitHub
-, testers
-, discordchatexporter-cli
-}:
-
-buildDotnetModule rec {
-  pname = "discordchatexporter-cli";
-  version = "2.41.2";
-
-  src = fetchFromGitHub {
-    owner = "tyrrrz";
-    repo = "discordchatexporter";
-    rev = version;
-    hash = "sha256-8ETEIZXIo7Tx6Vb9Id/E/8IklpcvO9OpcrYD+mHRX3o=";
-  };
-
-  projectFile = "DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj";
-  nugetDeps = ./deps.nix;
-  dotnet-sdk = dotnetCorePackages.sdk_7_0;
-  dotnet-runtime = dotnetCorePackages.runtime_7_0;
-
-  postFixup = ''
-    ln -s $out/bin/DiscordChatExporter.Cli $out/bin/discordchatexporter-cli
-  '';
-
-  passthru = {
-    updateScript = ./updater.sh;
-    tests.version = testers.testVersion {
-      package = discordchatexporter-cli;
-      version = "v${version}";
-    };
-  };
-
-  meta = with lib; {
-    description = "A tool to export Discord chat logs to a file";
-    homepage = "https://github.com/Tyrrrz/DiscordChatExporter";
-    license = licenses.gpl3Plus;
-    changelog = "https://github.com/Tyrrrz/DiscordChatExporter/blob/${version}/Changelog.md";
-    maintainers = with maintainers; [ eclairevoyant ivar ];
-    platforms = [ "x86_64-linux" ];
-    mainProgram = "discordchatexporter-cli";
-  };
-}
diff --git a/pkgs/tools/backup/discordchatexporter-cli/deps.nix b/pkgs/tools/backup/discordchatexporter-cli/deps.nix
deleted file mode 100644
index 36fe79638043..000000000000
--- a/pkgs/tools/backup/discordchatexporter-cli/deps.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file was automatically generated by passthru.fetch-deps.
-# Please dont edit it manually, your changes might get overwritten!
-
-{ fetchNuGet }: [
-  (fetchNuGet { pname = "AdvancedStringBuilder"; version = "0.1.0"; sha256 = "1lpv5sggdxza0bmcqmzf5r4i340f0m7nr5073lac18naj5697q5g"; })
-  (fetchNuGet { pname = "AngleSharp"; version = "1.0.4"; sha256 = "1b4qd0z27fdkgy5l8fqcbpzwm29gmmjm2h0mqb9ac94rv6ynq510"; })
-  (fetchNuGet { pname = "AsyncKeyedLock"; version = "6.2.1"; sha256 = "0281mj9ppz6q454li6xyllb1hdfkl59bh3psbj4z6l9xjbhnjhz0"; })
-  (fetchNuGet { pname = "CliFx"; version = "2.3.4"; sha256 = "14nj8w3j0hbsr5cghj39jx2sh5cg3wsvl517dk8whva5kgy3q1mf"; })
-  (fetchNuGet { pname = "CSharpier.MsBuild"; version = "0.25.0"; sha256 = "0xpdb2mss9zhdpks9ajm2h611khhw69xjwxv1k6qf7qrbkb0rgr3"; })
-  (fetchNuGet { pname = "Deorcify"; version = "1.0.2"; sha256 = "0nwxyrl4rd5x621i2hs5fl3w7fxpm13lkdssxr9fd5042px2gqbm"; })
-  (fetchNuGet { pname = "DotnetRuntimeBootstrapper"; version = "2.5.1"; sha256 = "192795akjmdxvp8p52g256rg0nzriipfsr8j808h69j6himhp4d7"; })
-  (fetchNuGet { pname = "Gress"; version = "2.1.1"; sha256 = "1svz1flhyl26h3xjch0acjjinympgf6bhj5vpb188njfih3ip4ck"; })
-  (fetchNuGet { pname = "JsonExtensions"; version = "1.2.0"; sha256 = "0g54hibabbqqfhxjlnxwv1rxagpali5agvnpymp2w3dk8h6q66xy"; })
-  (fetchNuGet { pname = "Polly"; version = "8.0.0"; sha256 = "08wzmkz9qjz61sczmipm8m5j4bg8dg4mbjgspagx4hh28q8mvagn"; })
-  (fetchNuGet { pname = "Polly.Core"; version = "8.0.0"; sha256 = "10w6z81kidkdhbwkhyas9kc1zmvz0r3mzcsii01wpydw27v0rzxp"; })
-  (fetchNuGet { pname = "RazorBlade"; version = "0.4.4"; sha256 = "1dkyyn58gcrl1sh6mv3g7zqapqg8lb5nzn10aj3vh4l51wpl0l5r"; })
-  (fetchNuGet { pname = "Spectre.Console"; version = "0.47.0"; sha256 = "0gc9ana660an7d76w9qd8l62lv66dc69vr5lslr896b1313ywakp"; })
-  (fetchNuGet { pname = "Superpower"; version = "3.0.0"; sha256 = "0p6riay4732j1fahc081dzgs9q4z3n2fpxrin4zfpj6q2226dhz4"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.5"; sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "7.0.0"; sha256 = "0sn6hxdjm7bw3xgsmg041ccchsa4sp02aa27cislw3x61dbr68kq"; })
-  (fetchNuGet { pname = "WebMarkupMin.Core"; version = "2.14.0"; sha256 = "0c41zw1bwz6ybxagq5vr26cx7najd17rrdbqjpn8mabynq380ayr"; })
-  (fetchNuGet { pname = "YoutubeExplode"; version = "6.3.4"; sha256 = "0zlfga8aigxxqa96jmqsp95h5plvxxlgymsrbcl5z1ds9ga0ldkd"; })
-]
diff --git a/pkgs/tools/backup/discordchatexporter-cli/updater.sh b/pkgs/tools/backup/discordchatexporter-cli/updater.sh
deleted file mode 100755
index cc81761b93d9..000000000000
--- a/pkgs/tools/backup/discordchatexporter-cli/updater.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -I nixpkgs=./. -i bash -p curl jq common-updater-scripts
-set -eo pipefail
-cd "$(dirname "${BASH_SOURCE[0]}")"
-
-new_version="$(curl -s "https://api.github.com/repos/tyrrrz/DiscordChatExporter/releases?per_page=1" | jq -r '.[0].name')"
-old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
-if [[ "$new_version" == "$old_version" ]]; then
-  echo "Up to date"
-  exit 0
-fi
-
-cd ../../../..
-update-source-version discordchatexporter-cli "$new_version"
-$(nix-build -A discordchatexporter-cli.fetch-deps --no-out-link)
diff --git a/pkgs/tools/backup/diskrsync/default.nix b/pkgs/tools/backup/diskrsync/default.nix
index 9154451a2441..5506a197fd1d 100644
--- a/pkgs/tools/backup/diskrsync/default.nix
+++ b/pkgs/tools/backup/diskrsync/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Rsync for block devices and disk images";
+    mainProgram = "diskrsync";
     homepage = "https://github.com/dop251/diskrsync";
     license = licenses.mit;
     maintainers = with maintainers; [ jluttine ];
diff --git a/pkgs/tools/backup/duply/default.nix b/pkgs/tools/backup/duply/default.nix
index 66c31ddd0e16..d69980cb94b5 100644
--- a/pkgs/tools/backup/duply/default.nix
+++ b/pkgs/tools/backup/duply/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Shell front end for the duplicity backup tool";
+    mainProgram = "duply";
     longDescription = ''
       Duply is a shell front end for the duplicity backup tool
       https://www.nongnu.org/duplicity. It greatly simplifies its usage by
diff --git a/pkgs/tools/backup/flockit/default.nix b/pkgs/tools/backup/flockit/default.nix
index cd17f8e2438c..c1df7f368043 100644
--- a/pkgs/tools/backup/flockit/default.nix
+++ b/pkgs/tools/backup/flockit/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "LD_PRELOAD shim to add file locking to programs that don't do it (I'm looking at you, rsync!)";
+    mainProgram = "flockit";
     longDescription = ''
       This library and tool exists solely because rsync doesn't have file locking.
 
diff --git a/pkgs/tools/backup/gh2md/default.nix b/pkgs/tools/backup/gh2md/default.nix
index 047b838859a4..035139b58022 100644
--- a/pkgs/tools/backup/gh2md/default.nix
+++ b/pkgs/tools/backup/gh2md/default.nix
@@ -21,6 +21,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Export Github repository issues to markdown files";
+    mainProgram = "gh2md";
     homepage = "https://github.com/mattduck/gh2md";
     license = licenses.mit;
     maintainers = with maintainers; [ artturin ];
diff --git a/pkgs/tools/backup/gphotos-sync/default.nix b/pkgs/tools/backup/gphotos-sync/default.nix
index 9fefd79c3c62..461931b1b991 100644
--- a/pkgs/tools/backup/gphotos-sync/default.nix
+++ b/pkgs/tools/backup/gphotos-sync/default.nix
@@ -54,6 +54,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Google Photos and Albums backup with Google Photos Library API";
+    mainProgram = "gphotos-sync";
     homepage = "https://github.com/gilesknap/gphotos-sync";
     license = licenses.asl20;
     maintainers = with maintainers; [ dnr ];
diff --git a/pkgs/tools/backup/httrack/qt.nix b/pkgs/tools/backup/httrack/qt.nix
index ed1a75c974aa..061c8b2ad6de 100644
--- a/pkgs/tools/backup/httrack/qt.nix
+++ b/pkgs/tools/backup/httrack/qt.nix
@@ -31,6 +31,7 @@ mkDerivation rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "Easy-to-use offline browser / website mirroring utility - QT frontend";
+    mainProgram = "httraqt";
     homepage    = "http://www.httrack.com";
     license     = licenses.gpl3;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/tools/backup/kopia/default.nix b/pkgs/tools/backup/kopia/default.nix
index 3709040490b0..8a68cfd5ba92 100644
--- a/pkgs/tools/backup/kopia/default.nix
+++ b/pkgs/tools/backup/kopia/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://kopia.io";
     description = "Cross-platform backup tool with fast, incremental backups, client-side end-to-end encryption, compression and data deduplication";
+    mainProgram = "kopia";
     license = licenses.asl20;
     maintainers = [ maintainers.bbigras ];
   };
diff --git a/pkgs/tools/backup/lvmsync/default.nix b/pkgs/tools/backup/lvmsync/default.nix
index 00a03cda7149..bbea71b7f370 100644
--- a/pkgs/tools/backup/lvmsync/default.nix
+++ b/pkgs/tools/backup/lvmsync/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Optimised synchronisation of LVM snapshots over a network";
+    mainProgram = "lvmsync";
     homepage = "https://theshed.hezmatt.org/lvmsync/";
     license = licenses.gpl3;
     platforms = platforms.all;
diff --git a/pkgs/tools/backup/mastodon-archive/default.nix b/pkgs/tools/backup/mastodon-archive/default.nix
index 88d05022d437..92498c529ca1 100644
--- a/pkgs/tools/backup/mastodon-archive/default.nix
+++ b/pkgs/tools/backup/mastodon-archive/default.nix
@@ -25,6 +25,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Utility for backing up your Mastodon content";
+    mainProgram = "mastodon-archive";
     homepage = "https://alexschroeder.ch/software/Mastodon_Archive";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ julm ];
diff --git a/pkgs/tools/backup/monolith/default.nix b/pkgs/tools/backup/monolith/default.nix
index 10859512ef80..b43e97e1ba95 100644
--- a/pkgs/tools/backup/monolith/default.nix
+++ b/pkgs/tools/backup/monolith/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Bundle any web page into a single HTML file";
+    mainProgram = "monolith";
     homepage = "https://github.com/Y2Z/monolith";
     license = licenses.unlicense;
     maintainers = with maintainers; [ Br1ght0ne ];
diff --git a/pkgs/tools/backup/mylvmbackup/default.nix b/pkgs/tools/backup/mylvmbackup/default.nix
index 6c87fca05672..ad1fcf696944 100644
--- a/pkgs/tools/backup/mylvmbackup/default.nix
+++ b/pkgs/tools/backup/mylvmbackup/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://www.lenzg.net/mylvmbackup/";
     description = "a tool for quickly creating full physical backups of a MySQL server's data files";
+    mainProgram = "mylvmbackup";
     license = lib.licenses.gpl2Only;
     maintainers = with lib.maintainers; [ ryantm ];
     platforms = with lib.platforms; linux;
diff --git a/pkgs/tools/backup/pyznap/default.nix b/pkgs/tools/backup/pyznap/default.nix
index 81f3a99ecd91..fcb3ee17cb5a 100644
--- a/pkgs/tools/backup/pyznap/default.nix
+++ b/pkgs/tools/backup/pyznap/default.nix
@@ -23,6 +23,7 @@ buildPythonApplication rec {
   meta = {
     homepage = "https://github.com/yboetz/pyznap";
     description = "ZFS snapshot tool written in python";
+    mainProgram = "pyznap";
     license = with lib.licenses; [ gpl3 ];
     maintainers = with lib.maintainers; [ rbrewer ];
   };
diff --git a/pkgs/tools/backup/rdedup/default.nix b/pkgs/tools/backup/rdedup/default.nix
index c9b59782a585..0c8d4afb522d 100644
--- a/pkgs/tools/backup/rdedup/default.nix
+++ b/pkgs/tools/backup/rdedup/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Data deduplication with compression and public key encryption";
+    mainProgram = "rdedup";
     homepage = "https://github.com/dpc/rdedup";
     license = licenses.mpl20;
     maintainers = with maintainers; [ dywedir ];
diff --git a/pkgs/tools/backup/restic/rest-server.nix b/pkgs/tools/backup/restic/rest-server.nix
index 9af1151518b6..62c31cd64ea7 100644
--- a/pkgs/tools/backup/restic/rest-server.nix
+++ b/pkgs/tools/backup/restic/rest-server.nix
@@ -16,6 +16,7 @@ buildGoModule rec {
   meta = with lib; {
     changelog = "https://github.com/restic/rest-server/blob/${src.rev}/CHANGELOG.md";
     description = "A high performance HTTP server that implements restic's REST backend API";
+    mainProgram = "rest-server";
     homepage = "https://github.com/restic/rest-server";
     license = licenses.bsd2;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/tools/backup/rotate-backups/default.nix b/pkgs/tools/backup/rotate-backups/default.nix
index d64b0dee50a8..08f1c3ff3bc8 100644
--- a/pkgs/tools/backup/rotate-backups/default.nix
+++ b/pkgs/tools/backup/rotate-backups/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Simple command line interface for backup rotation";
+    mainProgram = "rotate-backups";
     homepage = "https://github.com/xolox/python-rotate-backups";
     license = licenses.mit;
     maintainers = with maintainers; [ eyjhb ];
diff --git a/pkgs/tools/backup/sigtop/default.nix b/pkgs/tools/backup/sigtop/default.nix
index b83dd061efe4..9c503be790d9 100644
--- a/pkgs/tools/backup/sigtop/default.nix
+++ b/pkgs/tools/backup/sigtop/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Utility to export messages, attachments and other data from Signal Desktop";
+    mainProgram = "sigtop";
     license = licenses.isc;
     platforms = platforms.all;
     maintainers = with maintainers; [ fricklerhandwerk ];
diff --git a/pkgs/tools/backup/stenc/default.nix b/pkgs/tools/backup/stenc/default.nix
index fb8d71c73119..96e7ed5eca8d 100644
--- a/pkgs/tools/backup/stenc/default.nix
+++ b/pkgs/tools/backup/stenc/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "SCSI Tape Encryption Manager";
+    mainProgram = "stenc";
     homepage = "https://github.com/scsitape/stenc";
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ woffs ];
diff --git a/pkgs/tools/backup/ugarit-manifest-maker/default.nix b/pkgs/tools/backup/ugarit-manifest-maker/default.nix
index 8c37a7b72ac7..10f397df6b2a 100644
--- a/pkgs/tools/backup/ugarit-manifest-maker/default.nix
+++ b/pkgs/tools/backup/ugarit-manifest-maker/default.nix
@@ -24,6 +24,7 @@ in with pkgs; eggDerivation rec {
   meta = with lib; {
     homepage = "https://www.kitten-technologies.co.uk/project/ugarit-manifest-maker/";
     description = "A tool for generating import manifests for Ugarit";
+    mainProgram = "ugarit-manifest-maker";
     license = licenses.bsd3;
     maintainers = [ maintainers.ebzzry ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/backup/wal-e/default.nix b/pkgs/tools/backup/wal-e/default.nix
index 544f61918de9..3e77d5c3087f 100644
--- a/pkgs/tools/backup/wal-e/default.nix
+++ b/pkgs/tools/backup/wal-e/default.nix
@@ -28,6 +28,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = {
     description = "A Postgres WAL-shipping disaster recovery and replication toolkit";
+    mainProgram = "wal-e";
     homepage = "https://github.com/wal-e/wal-e";
     maintainers = [ ];
     license = lib.licenses.bsd3;
diff --git a/pkgs/tools/backup/wal-g/default.nix b/pkgs/tools/backup/wal-g/default.nix
index 6300dba6bff8..fe6a1bd2cdbd 100644
--- a/pkgs/tools/backup/wal-g/default.nix
+++ b/pkgs/tools/backup/wal-g/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "wal-g";
-  version = "2.0.1";
+  version = "3.0.0";
 
   src = fetchFromGitHub {
     owner = "wal-g";
     repo = "wal-g";
     rev = "v${version}";
-    sha256 = "sha256-5mwA55aAHwEFabGZ6c3pi8NLcYofvoe4bb/cFj7NWok=";
+    sha256 = "sha256-k+GaOb+o5b+Rmggk+Wq3NscDS+fIvyK0e/EhX6UMlqM=";
   };
 
-  vendorHash = "sha256-BbQuY6r30AkxlCZjY8JizaOrqEBdv7rIQet9KQwYB/g=";
+  vendorHash = "sha256-ZsVqR02D4YmZP/tVz2UWpXa6fM7HU7Hi2CSnvuVx9UU=";
 
   nativeBuildInputs = [ installShellFiles ];
 
@@ -21,7 +21,7 @@ buildGoModule rec {
 
   tags = [ "brotli" "libsodium" ];
 
-  ldflags = [ "-s" "-w" "-X github.com/wal-g/wal-g/cmd/pg.WalgVersion=${version}" "-X github.com/wal-g/wal-g/cmd/pg.GitRevision=${src.rev}" ];
+  ldflags = [ "-s" "-w" "-X github.com/wal-g/wal-g/cmd/pg.walgVersion=${version}" "-X github.com/wal-g/wal-g/cmd/pg.gitRevision=${src.rev}" ];
 
   postInstall = ''
     mv $out/bin/pg $out/bin/wal-g
@@ -34,6 +34,7 @@ buildGoModule rec {
     homepage = "https://github.com/wal-g/wal-g";
     license = licenses.asl20;
     description = "An archival restoration tool for PostgreSQL";
+    mainProgram = "wal-g";
     maintainers = with maintainers; [ marsam ];
   };
 }
diff --git a/pkgs/tools/backup/zbackup/default.nix b/pkgs/tools/backup/zbackup/default.nix
index 021c85707a60..c43a3d52af81 100644
--- a/pkgs/tools/backup/zbackup/default.nix
+++ b/pkgs/tools/backup/zbackup/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A versatile deduplicating backup tool";
+    mainProgram = "zbackup";
     homepage = "http://zbackup.org/";
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl2Plus;
diff --git a/pkgs/tools/backup/zfs-prune-snapshots/default.nix b/pkgs/tools/backup/zfs-prune-snapshots/default.nix
index 2c9e4a2fdf8a..18ddacd4d55f 100644
--- a/pkgs/tools/backup/zfs-prune-snapshots/default.nix
+++ b/pkgs/tools/backup/zfs-prune-snapshots/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Remove snapshots from one or more zpools that match given criteria";
+    mainProgram = "zfs-prune-snapshots";
     homepage = "https://github.com/bahamas10/zfs-prune-snapshots";
     license = licenses.mit;
     maintainers = [ maintainers.ymarkus ];
diff --git a/pkgs/tools/backup/zfs-replicate/default.nix b/pkgs/tools/backup/zfs-replicate/default.nix
index bdaf5c6dc6de..0c9e2b0998a8 100644
--- a/pkgs/tools/backup/zfs-replicate/default.nix
+++ b/pkgs/tools/backup/zfs-replicate/default.nix
@@ -43,6 +43,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/alunduil/zfs-replicate";
     description = "ZFS Snapshot Replication";
+    mainProgram = "zfs-replicate";
     license = licenses.bsd2;
     maintainers = with maintainers; [ alunduil ];
   };
diff --git a/pkgs/tools/backup/zfsnap/default.nix b/pkgs/tools/backup/zfsnap/default.nix
index 36e369b4f30a..6e71f38e4e63 100644
--- a/pkgs/tools/backup/zfsnap/default.nix
+++ b/pkgs/tools/backup/zfsnap/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A portable, performant script to make rolling ZFS snapshots easy";
+    mainProgram = "zfsnap";
     homepage = "https://github.com/zfsnap/zfsnap";
     license = licenses.bsd3;
     maintainers = with maintainers; [ woffs ];
diff --git a/pkgs/tools/compression/crabz/default.nix b/pkgs/tools/compression/crabz/default.nix
index f8cb155f272e..debfef0c3c53 100644
--- a/pkgs/tools/compression/crabz/default.nix
+++ b/pkgs/tools/compression/crabz/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "crabz";
-  version = "0.8.1";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "sstadick";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-w/e0NFmBsYNEECT+2zHEm/UUpp5LxPYr0BdKikT2o1M=";
+    sha256 = "sha256-qKyrAao4b+D9KhK0euNcn2/YyXGeUjgCfdVtDxy6cuQ=";
   };
 
-  cargoSha256 = "sha256-9VOJeRvyudZSCaUZ1J9gHMEoWXEnEhCZPxvfYGRKzj0=";
+  cargoHash = "sha256-S3/JDheTBwYS3uEAwwK+bAtzp0LP8FHHxyOnIQkKqlA=";
 
   nativeBuildInputs = [ cmake ];
 
diff --git a/pkgs/tools/compression/lzham/default.nix b/pkgs/tools/compression/lzham/default.nix
index 5915d1439dff..7d2879f63cd8 100644
--- a/pkgs/tools/compression/lzham/default.nix
+++ b/pkgs/tools/compression/lzham/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Lossless data compression codec with LZMA-like ratios but 1.5x-8x faster decompression speed";
+    mainProgram = "lzhamtest";
     homepage = "https://github.com/richgel999/lzham_codec";
     license = with licenses; [ mit ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/compression/lzip/default.nix b/pkgs/tools/compression/lzip/default.nix
index cbf789d1bbf1..82052bab6e3d 100644
--- a/pkgs/tools/compression/lzip/default.nix
+++ b/pkgs/tools/compression/lzip/default.nix
@@ -7,19 +7,16 @@
 
 stdenv.mkDerivation rec {
   pname = "lzip";
-  version = "1.24";
+  version = "1.24.1";
   outputs = [ "out" "man" "info" ];
 
   src = fetchurl {
     url = "mirror://savannah/lzip/${pname}-${version}.tar.gz";
-    sha256 = "sha256-1CZZIpsQ4GbutugetnPN2JO2cuUS0mcZwtlZdVVspWw=";
+    hash = "sha256-MMnLagYF9HnElsN262KaSLChaW0WfjweCQxd76SBsWI=";
   };
 
   patches = lib.optionals stdenv.hostPlatform.isMinGW [
     ./mingw-install-exe-file.patch
-    # https://lists.nongnu.org/archive/html/lzip-bug/2024-02/msg00015.html
-    # patch provided by upstream, to be removed in the next release
-    ./mingw-mkdir-one-argument.patch
   ];
 
   configureFlags = [
diff --git a/pkgs/tools/compression/lzip/mingw-mkdir-one-argument.patch b/pkgs/tools/compression/lzip/mingw-mkdir-one-argument.patch
deleted file mode 100644
index efa0d8e3a067..000000000000
--- a/pkgs/tools/compression/lzip/mingw-mkdir-one-argument.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- lzip-1.24/main.cc     2024-01-26 00:08:47.000000000 +0100
-+++ lzip-1.24.1/src/main.cc   2024-02-06 16:04:00.000000000 +0100
-@@ -42,8 +42,10 @@
- #if defined __MSVCRT__ || defined __OS2__ || defined __DJGPP__
- #include <io.h>
- #if defined __MSVCRT__
-+#include <direct.h>
- #define fchmod(x,y) 0
- #define fchown(x,y,z) 0
-+#define mkdir(name,mode) _mkdir(name)
- #define strtoull std::strtoul
- #define SIGHUP SIGTERM
- #define S_ISSOCK(x) 0
diff --git a/pkgs/tools/compression/ouch/default.nix b/pkgs/tools/compression/ouch/default.nix
index 07a5302b5a17..42ae945aeea0 100644
--- a/pkgs/tools/compression/ouch/default.nix
+++ b/pkgs/tools/compression/ouch/default.nix
@@ -39,9 +39,7 @@ rustPlatform.buildRustPackage rec {
     installShellCompletion artifacts/ouch.{bash,fish} --zsh artifacts/_ouch
   '';
 
-  env = { OUCH_ARTIFACTS_FOLDER = "artifacts"; } //
-    # Work around https://github.com/NixOS/nixpkgs/issues/166205.
-    lib.optionalAttrs stdenv.cc.isClang { NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}"; };
+  env.OUCH_ARTIFACTS_FOLDER = "artifacts";
 
   meta = with lib; {
     description = "A command-line utility for easily compressing and decompressing files and directories";
diff --git a/pkgs/tools/compression/xz/default.nix b/pkgs/tools/compression/xz/default.nix
index 2f10236b46b3..480eff197088 100644
--- a/pkgs/tools/compression/xz/default.nix
+++ b/pkgs/tools/compression/xz/default.nix
@@ -11,11 +11,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "xz";
-  version = "5.6.0";
+  version = "5.6.1";
 
   src = fetchurl {
     url = with finalAttrs; "https://github.com/tukaani-project/xz/releases/download/v${version}/xz-${version}.tar.bz2";
-    hash = "sha256-iMhjHO+6kWZP3EexS7dT4YdvSWSgfbZQgh0gOZKx4eo=";
+    hash = "sha256-0wBCJkmgEksRIWML5VnIkM7t8yZn1wZLgSiTMWbCF8g=";
   };
 
   strictDeps = true;
diff --git a/pkgs/tools/filesystems/9pfs/default.nix b/pkgs/tools/filesystems/9pfs/default.nix
index 7b652bd68aa0..51238e97f42a 100644
--- a/pkgs/tools/filesystems/9pfs/default.nix
+++ b/pkgs/tools/filesystems/9pfs/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://github.com/ftrvxmtrx/9pfs";
     description = "FUSE-based client of the 9P network filesystem protocol";
+    mainProgram = "9pfs";
     maintainers = [ lib.maintainers.eelco ];
     platforms = lib.platforms.unix;
     license = with lib.licenses; [ lpl-102 bsd2 ];
diff --git a/pkgs/tools/filesystems/archivemount/default.nix b/pkgs/tools/filesystems/archivemount/default.nix
index 22e41611aef8..6c0566153a9f 100644
--- a/pkgs/tools/filesystems/archivemount/default.nix
+++ b/pkgs/tools/filesystems/archivemount/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Gateway between FUSE and libarchive: allows mounting of cpio, .tar.gz, .tar.bz2 archives";
+    mainProgram = "archivemount";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.unix;
   };
diff --git a/pkgs/tools/filesystems/btrfs-heatmap/default.nix b/pkgs/tools/filesystems/btrfs-heatmap/default.nix
index 9de91738e74d..ee09a25ceb14 100644
--- a/pkgs/tools/filesystems/btrfs-heatmap/default.nix
+++ b/pkgs/tools/filesystems/btrfs-heatmap/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Visualize the layout of a mounted btrfs";
+    mainProgram = "btrfs-heatmap";
     homepage = "https://github.com/knorrie/btrfs-heatmap";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/tools/filesystems/btrfs-snap/default.nix b/pkgs/tools/filesystems/btrfs-snap/default.nix
index efc2ddafa419..40838c1fed62 100644
--- a/pkgs/tools/filesystems/btrfs-snap/default.nix
+++ b/pkgs/tools/filesystems/btrfs-snap/default.nix
@@ -24,6 +24,7 @@ stdenvNoCC.mkDerivation rec {
   '';
   meta = with lib; {
     description = "Create and maintain the history of snapshots of btrfs filesystems";
+    mainProgram = "btrfs-snap";
     homepage = "https://github.com/jf647/btrfs-snap";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ lionello ];
diff --git a/pkgs/tools/filesystems/catcli/default.nix b/pkgs/tools/filesystems/catcli/default.nix
index a2f5402dca25..b8668a43c0ce 100644
--- a/pkgs/tools/filesystems/catcli/default.nix
+++ b/pkgs/tools/filesystems/catcli/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "The command line catalog tool for your offline data";
+    mainProgram = "catcli";
     homepage = "https://github.com/deadc0de6/catcli";
     changelog = "https://github.com/deadc0de6/catcli/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/filesystems/ceph-csi/default.nix b/pkgs/tools/filesystems/ceph-csi/default.nix
index 7ee65616e0b1..29224aba38b7 100644
--- a/pkgs/tools/filesystems/ceph-csi/default.nix
+++ b/pkgs/tools/filesystems/ceph-csi/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://ceph.com/";
     description = "Container Storage Interface (CSI) driver for Ceph RBD and CephFS";
+    mainProgram = "cephcsi";
     license = [ licenses.asl20 ];
     maintainers = with maintainers; [ johanot ];
     platforms = [ "x86_64-linux" "aarch64-linux" ];
diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix
index ebaf6532df52..27d766060704 100644
--- a/pkgs/tools/filesystems/ceph/default.nix
+++ b/pkgs/tools/filesystems/ceph/default.nix
@@ -169,7 +169,28 @@ let
 
   # Watch out for python <> boost compatibility
   python = python310.override {
-    packageOverrides = self: super: let cryptographyOverrideVersion = "40.0.1"; in {
+    packageOverrides = self: super: let
+      cryptographyOverrideVersion = "40.0.1";
+      bcryptOverrideVersion = "4.0.1";
+    in {
+      # Ceph does not support `bcrypt` > 4.0 yet:
+      # * Upstream issue: https://tracker.ceph.com/issues/63529
+      #   > Python Sub-Interpreter Model Used by ceph-mgr Incompatible With Python Modules Based on PyO3
+      bcrypt = super.bcrypt.overridePythonAttrs (old: rec {
+        pname = "bcrypt";
+        version = bcryptOverrideVersion;
+        src = fetchPypi {
+          inherit pname version;
+          hash = "sha256-J9N1kDrIJhz+QEf2cJ0W99GNObHskqr3KvmJVSplDr0=";
+        };
+        cargoRoot = "src/_bcrypt";
+        cargoDeps = rustPlatform.fetchCargoTarball {
+          inherit src;
+          sourceRoot = "${pname}-${version}/${cargoRoot}";
+          name = "${pname}-${version}";
+          hash = "sha256-lDWX69YENZFMu7pyBmavUZaalGvFqbHSHfkwkzmDQaY=";
+        };
+      });
       # Ceph does not support `cryptography` > 40 yet:
       # * https://github.com/NixOS/nixpkgs/pull/281858#issuecomment-1899358602
       # * Upstream issue: https://tracker.ceph.com/issues/63529
@@ -218,6 +239,9 @@ let
           inherit version;
           hash = "sha256-hBSYub7GFiOxtsR+u8AjZ8B9YODhlfGXkIF/EMyNsLc=";
         };
+        pytestFlagsArray = [
+          "-W" "ignore::pytest.PytestRemovedIn8Warning"
+        ];
       });
 
       # Ceph does not support `kubernetes` >= 19, see:
diff --git a/pkgs/tools/filesystems/cpcfs/default.nix b/pkgs/tools/filesystems/cpcfs/default.nix
index 93bfdd8d23fa..3b1d54ba427c 100644
--- a/pkgs/tools/filesystems/cpcfs/default.nix
+++ b/pkgs/tools/filesystems/cpcfs/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Manipulating CPC dsk images and files";
+    mainProgram = "cpcfs";
     homepage = "https://github.com/derikz/cpcfs/" ;
     license = licenses.bsd2;
     maintainers = [ ];
diff --git a/pkgs/tools/filesystems/curlftpfs/default.nix b/pkgs/tools/filesystems/curlftpfs/default.nix
index 1263ccb8565e..7b3760ba5aa2 100644
--- a/pkgs/tools/filesystems/curlftpfs/default.nix
+++ b/pkgs/tools/filesystems/curlftpfs/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Filesystem for accessing FTP hosts based on FUSE and libcurl";
+    mainProgram = "curlftpfs";
     homepage = "https://curlftpfs.sourceforge.net";
     license = licenses.gpl2Only;
     platforms = platforms.unix;
diff --git a/pkgs/tools/filesystems/darling-dmg/default.nix b/pkgs/tools/filesystems/darling-dmg/default.nix
index 54d23e770db1..8884ef2f63d5 100644
--- a/pkgs/tools/filesystems/darling-dmg/default.nix
+++ b/pkgs/tools/filesystems/darling-dmg/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.darlinghq.org/";
     description = "Darling lets you open macOS dmgs on Linux";
+    mainProgram = "darling-dmg";
     platforms = platforms.unix;
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ Luflosi ];
diff --git a/pkgs/tools/filesystems/dduper/default.nix b/pkgs/tools/filesystems/dduper/default.nix
index 7f876df37ee1..c63846e2c46a 100644
--- a/pkgs/tools/filesystems/dduper/default.nix
+++ b/pkgs/tools/filesystems/dduper/default.nix
@@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast block-level out-of-band BTRFS deduplication tool";
+    mainProgram = "dduper";
     homepage = "https://github.com/Lakshmipathi/dduper";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ thesola10 ];
diff --git a/pkgs/tools/filesystems/disorderfs/default.nix b/pkgs/tools/filesystems/disorderfs/default.nix
index 27dc55fb9263..14106cfd4ba9 100644
--- a/pkgs/tools/filesystems/disorderfs/default.nix
+++ b/pkgs/tools/filesystems/disorderfs/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An overlay FUSE filesystem that introduces non-determinism into filesystem metadata";
+    mainProgram = "disorderfs";
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/tools/filesystems/djmount/default.nix b/pkgs/tools/filesystems/djmount/default.nix
index d3a75e420db9..52a89013ced6 100644
--- a/pkgs/tools/filesystems/djmount/default.nix
+++ b/pkgs/tools/filesystems/djmount/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://djmount.sourceforge.net/";
     description = "UPnP AV client, mounts as a Linux filesystem the media content of compatible UPnP AV devices";
+    mainProgram = "djmount";
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.jagajaga ];
     license = lib.licenses.gpl2;
diff --git a/pkgs/tools/filesystems/duff/default.nix b/pkgs/tools/filesystems/duff/default.nix
index f980c7613332..4c6f3caff79a 100644
--- a/pkgs/tools/filesystems/duff/default.nix
+++ b/pkgs/tools/filesystems/duff/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Quickly find duplicate files";
+    mainProgram = "duff";
     longDescription = ''
       Duff is a Unix command-line utility for quickly finding duplicates in
       a given set of files.
diff --git a/pkgs/tools/filesystems/httpfs/default.nix b/pkgs/tools/filesystems/httpfs/default.nix
index f7a42f192eef..4cf618826b8f 100644
--- a/pkgs/tools/filesystems/httpfs/default.nix
+++ b/pkgs/tools/filesystems/httpfs/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "FUSE-based HTTP filesystem for Linux";
+    mainProgram = "httpfs2";
 
     homepage = "https://httpfs.sourceforge.net/";
 
diff --git a/pkgs/tools/filesystems/tar2ext4/default.nix b/pkgs/tools/filesystems/tar2ext4/default.nix
index 3f042646841d..dd4ab499de92 100644
--- a/pkgs/tools/filesystems/tar2ext4/default.nix
+++ b/pkgs/tools/filesystems/tar2ext4/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "tar2ext4";
-  version = "0.12.0";
+  version = "0.12.1";
 
   src = fetchFromGitHub {
     owner = "microsoft";
     repo = "hcsshim";
     rev = "v${version}";
-    sha256 = "sha256-Zpcv3sSO1iQGgoy6PYfhf165BgGi2mkS9s+y8Ewhxa8=";
+    sha256 = "sha256-p0sNdCC8T5MDVimkS2DJusfuM788QxEtgKJNGlqrkAU=";
   };
 
   sourceRoot = "${src.name}/cmd/tar2ext4";
diff --git a/pkgs/tools/games/ajour/default.nix b/pkgs/tools/games/ajour/default.nix
index 0f90a794987e..7416d4f717ab 100644
--- a/pkgs/tools/games/ajour/default.nix
+++ b/pkgs/tools/games/ajour/default.nix
@@ -83,6 +83,7 @@ in rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "World of Warcraft addon manager written in Rust";
+    mainProgram = "ajour";
     longDescription = ''
       Ajour is a World of Warcraft addon manager written in Rust with a
       strong focus on performance and simplicity. The project is
diff --git a/pkgs/tools/games/gamemode/default.nix b/pkgs/tools/games/gamemode/default.nix
index 928b9233bccd..13a619c770c4 100644
--- a/pkgs/tools/games/gamemode/default.nix
+++ b/pkgs/tools/games/gamemode/default.nix
@@ -69,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: {
     "--libexecdir=libexec"
   ];
 
-  doCheck = true;
+  doCheck = false; # https://github.com/FeralInteractive/gamemode/issues/468
   nativeCheckInputs = [
     appstream
   ];
diff --git a/pkgs/tools/games/joystickwake/default.nix b/pkgs/tools/games/joystickwake/default.nix
index 9b2012857db2..e321daf2dd8f 100644
--- a/pkgs/tools/games/joystickwake/default.nix
+++ b/pkgs/tools/games/joystickwake/default.nix
@@ -19,6 +19,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A joystick-aware screen waker";
+    mainProgram = "joystickwake";
     longDescription = ''
       Linux gamers often find themselves unexpectedly staring at a blank screen, because their display server fails to recognize game controllers as input devices, allowing the screen blanker to activate during gameplay.
       This program works around the problem by temporarily disabling screen blankers when joystick activity is detected.
diff --git a/pkgs/tools/games/jpsxdec/default.nix b/pkgs/tools/games/jpsxdec/default.nix
index 85fd9d65ada1..58876d678969 100644
--- a/pkgs/tools/games/jpsxdec/default.nix
+++ b/pkgs/tools/games/jpsxdec/default.nix
@@ -7,7 +7,7 @@
 , makeWrapper
 , makeDesktopItem
 , copyDesktopItems
-, canonicalize-jars-hook
+, stripJavaArchivesHook
 }:
 
 stdenv.mkDerivation (finalAttrs: {
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
     jdk8
     makeWrapper
     copyDesktopItems
-    canonicalize-jars-hook
+    stripJavaArchivesHook
   ];
 
   buildPhase = ''
diff --git a/pkgs/tools/games/minecraft/amidst/default.nix b/pkgs/tools/games/minecraft/amidst/default.nix
index 5e6a79e1cba1..3dae62507106 100644
--- a/pkgs/tools/games/minecraft/amidst/default.nix
+++ b/pkgs/tools/games/minecraft/amidst/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/toolbox4minecraft/amidst";
     description = "Advanced Minecraft Interface and Data/Structure Tracking";
+    mainProgram = "amidst";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.gpl3Only;
     maintainers = [ maintainers.ivar ];
diff --git a/pkgs/tools/games/minecraft/fabric-installer/default.nix b/pkgs/tools/games/minecraft/fabric-installer/default.nix
index 27c70d38a06c..4a11a08a42e6 100644
--- a/pkgs/tools/games/minecraft/fabric-installer/default.nix
+++ b/pkgs/tools/games/minecraft/fabric-installer/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://fabricmc.net/";
     description = "A lightweight, experimental modding toolchain for Minecraft";
+    mainProgram = "fabric-installer";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.asl20;
     maintainers = [ maintainers.ivar ];
diff --git a/pkgs/tools/games/minecraft/mcaselector/default.nix b/pkgs/tools/games/minecraft/mcaselector/default.nix
index 395be450f65c..a2099c4e382e 100644
--- a/pkgs/tools/games/minecraft/mcaselector/default.nix
+++ b/pkgs/tools/games/minecraft/mcaselector/default.nix
@@ -33,6 +33,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://github.com/Querz/mcaselector";
     description = "A tool to select chunks from Minecraft worlds for deletion or export";
+    mainProgram = "mcaselector";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.mit;
     maintainers = [ maintainers.Scrumplex ];
diff --git a/pkgs/tools/games/minecraft/minecraft-server-hibernation/default.nix b/pkgs/tools/games/minecraft/minecraft-server-hibernation/default.nix
index ff0e7873827b..3837b890632b 100644
--- a/pkgs/tools/games/minecraft/minecraft-server-hibernation/default.nix
+++ b/pkgs/tools/games/minecraft/minecraft-server-hibernation/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Autostart and stop minecraft-server when players join/leave";
+    mainProgram = "msh";
     homepage = "https://github.com/gekware/minecraft-server-hibernation";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ squarepear ];
diff --git a/pkgs/tools/games/mymcplus/default.nix b/pkgs/tools/games/mymcplus/default.nix
index 0e5abb1e8994..c94ef8768c07 100644
--- a/pkgs/tools/games/mymcplus/default.nix
+++ b/pkgs/tools/games/mymcplus/default.nix
@@ -27,6 +27,7 @@ pythonPackages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://git.sr.ht/~thestr4ng3r/mymcplus";
     description = "A PlayStation 2 memory card manager";
+    mainProgram = "mymcplus";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/tools/games/pokefinder/default.nix b/pkgs/tools/games/pokefinder/default.nix
index 16439309b413..de53fb839af9 100644
--- a/pkgs/tools/games/pokefinder/default.nix
+++ b/pkgs/tools/games/pokefinder/default.nix
@@ -66,6 +66,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/Admiral-Fish/PokeFinder";
     description = "Cross platform Pokémon RNG tool";
+    mainProgram = "PokeFinder";
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ leo60228 ];
diff --git a/pkgs/tools/games/steamback/default.nix b/pkgs/tools/games/steamback/default.nix
index 42e5ec3b2ef9..bb91fa41c618 100644
--- a/pkgs/tools/games/steamback/default.nix
+++ b/pkgs/tools/games/steamback/default.nix
@@ -58,6 +58,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A Decky plugin to add versioned save-game snapshots to Steam-cloud enabled games";
+    mainProgram = "steamback";
     homepage = "https://github.com/geeksville/steamback";
     license = licenses.gpl3;
     maintainers = with maintainers; [ AngryAnt ];
diff --git a/pkgs/tools/games/steamtinkerlaunch/default.nix b/pkgs/tools/games/steamtinkerlaunch/default.nix
index 4f37109f5437..f9db25353499 100644
--- a/pkgs/tools/games/steamtinkerlaunch/default.nix
+++ b/pkgs/tools/games/steamtinkerlaunch/default.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Linux wrapper tool for use with the Steam client for custom launch options and 3rd party programs";
+    mainProgram = "steamtinkerlaunch";
     homepage = "https://github.com/sonic2kk/steamtinkerlaunch";
     license = licenses.gpl3;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/tools/games/ukmm/default.nix b/pkgs/tools/games/ukmm/default.nix
index 5f2d366e7f9b..389b7486b8b9 100644
--- a/pkgs/tools/games/ukmm/default.nix
+++ b/pkgs/tools/games/ukmm/default.nix
@@ -71,6 +71,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A new mod manager for The Legend of Zelda: Breath of the Wild";
+    mainProgram = "ukmm";
     homepage = "https://github.com/NiceneNerd/ukmm";
     changelog = "https://github.com/NiceneNerd/ukmm/blob/${src.rev}/CHANGELOG.md";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/graphics/asymptote/default.nix b/pkgs/tools/graphics/asymptote/default.nix
index 30681663a7ce..aeb51d66bf6f 100644
--- a/pkgs/tools/graphics/asymptote/default.nix
+++ b/pkgs/tools/graphics/asymptote/default.nix
@@ -1,6 +1,6 @@
-{ lib, stdenv, fetchFromGitHub
-, autoreconfHook, bison, glm, flex, wrapQtAppsHook, cmake
-, freeglut, ghostscriptX, imagemagick, fftw
+{ lib, stdenv, fetchurl, fetchpatch
+, autoreconfHook, bison, glm, flex, wrapQtAppsHook, cmake, pkg-config
+, freeglut, ghostscriptX, imagemagick, fftw, eigen, libtirpc
 , boehmgc, libGLU, libGL, mesa, ncurses, readline, gsl, libsigsegv
 , python3, qtbase, qtsvg, boost
 , zlib, perl, curl
@@ -9,16 +9,25 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "2.87";
+  version = "2.88";
   pname = "asymptote";
 
-  src = fetchFromGitHub {
-    owner = "vectorgraphics";
-    repo = pname;
-    rev = version;
-    hash = "sha256-xzRZ7NOWeu+uC5WeTxwh5MFm7psXMhxrxucT4PVtRxM=";
+  outputs = [ "out" "man" "info" "doc" "tex" ];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/asymptote/${version}/asymptote-${version}.src.tgz";
+    hash = "sha256-DecadD+m7pORuH3Sdcs/5M3vUbN6rhSkFoNN0Soq9bs=";
   };
 
+  patches = [
+    (fetchpatch {
+      # partial fix for macOS XDR/V3D support (LDFLAGS change seems like an unrelated bugfix)
+      name = "restore-LDFLAGS-dont-look-for-tirpc-under-MacOS.patch";
+      url = "https://github.com/vectorgraphics/asymptote/commit/7e17096b22d18d133d1bc5916b6e32c0cb24ad10.patch";
+      hash = "sha256-olCFzqfZwWOAjqlB5lDPXYRHU9i3VQNgoR0cO5TmW98=";
+    })
+  ];
+
   nativeBuildInputs = [
     autoreconfHook
     bison
@@ -27,15 +36,16 @@ stdenv.mkDerivation rec {
     texinfo
     wrapQtAppsHook
     cmake
+    pkg-config
   ];
 
   buildInputs = [
-    ghostscriptX imagemagick fftw
+    ghostscriptX imagemagick fftw eigen
     boehmgc ncurses readline gsl libsigsegv
     zlib perl curl qtbase qtsvg boost
     (texliveSmall.withPackages (ps: with ps; [ epsf cm-super ps.texinfo media9 ocgx2 collection-latexextra ]))
     (python3.withPackages (ps: with ps; [ cson numpy pyqt5 ]))
-  ];
+  ] ++ lib.optionals stdenv.isLinux [ libtirpc ];
 
   propagatedBuildInputs = [
     glm
@@ -47,14 +57,18 @@ stdenv.mkDerivation rec {
 
   dontWrapQtApps = true;
 
+  # Do not build $tex/ls-R which will be generated by texlive.combine
   preConfigure = ''
     HOME=$TMP
+    substituteInPlace Makefile.in \
+      --replace-fail 'install: install-notexhash install-texhash' 'install: install-notexhash install-asy'
+    prependToVar configureFlags "--with-latex=$tex/tex/latex" "--with-context=$tex/tex/context/third"
   '';
 
-  configureFlags = [
-    "--with-latex=$out/share/texmf/tex/latex"
-    "--with-context=$out/share/texmf/tex/context/third"
-  ];
+  # do not use bundled libgc.so
+  configureFlags = [ "--enable-gc=system" ]
+    # TODO add open_memstream to enable XDR/V3D on Darwin (requires memstream or >=10.13 Apple SDK)
+    ++ lib.optional stdenv.isDarwin "--enable-xdr=no";
 
   env.NIX_CFLAGS_COMPILE = "-I${boehmgc.dev}/include/gc";
 
@@ -62,12 +76,11 @@ stdenv.mkDerivation rec {
     rm "$out"/bin/xasy
     makeQtWrapper "$out"/share/asymptote/GUI/xasy.py "$out"/bin/xasy --prefix PATH : "$out"/bin
 
-    mv $out/share/info/asymptote/*.info $out/share/info/
-    sed -i -e 's|(asymptote/asymptote)|(asymptote)|' $out/share/info/asymptote.info
-    rmdir $out/share/info/asymptote
-    rm -f $out/share/info/dir
+    mv "$info"/share/info/asymptote/*.info "$info"/share/info/
+    sed -i -e 's|(asymptote/asymptote)|(asymptote)|' "$info"/share/info/asymptote.info
+    rmdir "$info"/share/info/asymptote
+    rm -f "$info"/share/info/dir
 
-    rm -rf $out/share/texmf
     install -Dt $out/share/emacs/site-lisp/${pname} $out/share/asymptote/*.el
   '';
 
diff --git a/pkgs/tools/graphics/pngcrush/default.nix b/pkgs/tools/graphics/pngcrush/default.nix
index 8ce9965eae25..2863881b9302 100644
--- a/pkgs/tools/graphics/pngcrush/default.nix
+++ b/pkgs/tools/graphics/pngcrush/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, libpng }:
+{ lib, stdenv, fetchurl, fetchpatch2, libpng }:
 
 stdenv.mkDerivation rec {
   pname = "pngcrush";
@@ -9,6 +9,13 @@ stdenv.mkDerivation rec {
     sha256 = "0l43c59d6v9l0g07z3q3ywhb8xb3vz74llv3mna0izk9bj6aqkiv";
   };
 
+  patches = [
+    (fetchpatch2 {
+      url = "https://salsa.debian.org/debian/pngcrush/-/raw/b4856b56fbc28252103cc14d156baddd564ca880/debian/patches/ignore_PNG_IGNORE_ADLER32.patch";
+      hash = "sha256-pFON/NUJiXMe9GETptgNltWa0izlby6P/fLsG1abz3g=";
+    })
+  ];
+
   makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" "LD=${stdenv.cc.targetPrefix}cc" ];      # gcc and/or clang compat
 
   configurePhase = ''
diff --git a/pkgs/tools/graphics/quirc/0001-dont-build-demos.patch b/pkgs/tools/graphics/quirc/0001-dont-build-demos.patch
index 9ecb6dda4e19..5e11a5207508 100644
--- a/pkgs/tools/graphics/quirc/0001-dont-build-demos.patch
+++ b/pkgs/tools/graphics/quirc/0001-dont-build-demos.patch
@@ -4,8 +4,8 @@ index 2d5b745..ecef988 100644
 +++ b/Makefile
 @@ -37,7 +37,7 @@ DEMO_UTIL_OBJ = \
  
- OPENCV_CFLAGS != pkg-config --cflags opencv4
- OPENCV_LIBS != pkg-config --libs opencv4
+ OPENCV_CFLAGS := $(shell pkg-config --cflags opencv4 2>&1)
+ OPENCV_LIBS = $(shell pkg-config --libs opencv4)
 -QUIRC_CXXFLAGS = $(QUIRC_CFLAGS) $(OPENCV_CFLAGS) --std=c++17
 +QUIRC_CXXFLAGS = $(QUIRC_CFLAGS) --std=c++17
  
diff --git a/pkgs/tools/graphics/quirc/default.nix b/pkgs/tools/graphics/quirc/default.nix
index 88993dbe8ce6..aa6c0cfeb671 100644
--- a/pkgs/tools/graphics/quirc/default.nix
+++ b/pkgs/tools/graphics/quirc/default.nix
@@ -1,17 +1,24 @@
 { lib, stdenv, fetchFromGitHub, SDL_gfx, SDL, libjpeg, libpng, opencv
 , pkg-config }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "quirc";
-  version = "2021-10-08";
+  version = "1.2";
 
   src = fetchFromGitHub {
     owner = "dlbeer";
     repo = "quirc";
-    rev = "516d91a94d880ca1006fc1d57f318bdff8411f0d";
-    sha256 = "0jkaz5frm6jr9bxyfympvzh180nczrfvvb3z3qhk21djlas6nr5f";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-zdq/YKL33jJXa10RqmQIl06rRYnrthWG+umT4dipft0=";
   };
 
+  postPatch = ''
+    # don't try to change ownership
+    substituteInPlace Makefile \
+      --replace-fail "-o root" "" \
+      --replace-fail "-g root" ""
+  '';
+
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ SDL SDL_gfx libjpeg libpng opencv ];
 
@@ -28,15 +35,6 @@ stdenv.mkDerivation {
     runHook postBuild
   '';
 
-  configurePhase = ''
-    runHook preConfigure
-
-    # don't try to change ownership
-    sed -e 's/-[og] root//g' -i Makefile
-
-    runHook postConfigure
-  '';
-
   preInstall = ''
     mkdir -p "$out"/{bin,lib,include}
 
@@ -44,10 +42,17 @@ stdenv.mkDerivation {
     find -maxdepth 1 -type f -executable ! -name '*.so.*' | xargs cp -t "$out"/bin
   '';
 
+  postInstall = ''
+    # don't install static library
+    rm $out/lib/libquirc.a
+
+    ln -s $out/lib/libquirc.so.* $out/lib/libquirc.so
+  '';
+
   meta = {
     description = "A small QR code decoding library";
     license = lib.licenses.isc;
     maintainers = [ lib.maintainers.raskin ];
     platforms = lib.platforms.linux ++ [ "x86_64-darwin" "aarch64-darwin" ];
   };
-}
+})
diff --git a/pkgs/tools/graphics/rocket/default.nix b/pkgs/tools/graphics/rocket/default.nix
index 070e359fe1c5..5dcd40b4d5ec 100644
--- a/pkgs/tools/graphics/rocket/default.nix
+++ b/pkgs/tools/graphics/rocket/default.nix
@@ -23,6 +23,7 @@ mkDerivation {
 
   meta = with lib; {
     description = "A tool for synchronizing music and visuals in demoscene productions";
+    mainProgram = "editor";
     homepage = "https://github.com/rocket/rocket";
     license = licenses.zlib;
     platforms = platforms.linux;
diff --git a/pkgs/tools/graphics/snapdragon-profiler/default.nix b/pkgs/tools/graphics/snapdragon-profiler/default.nix
index caf187cb4c1f..aa8477d5717d 100644
--- a/pkgs/tools/graphics/snapdragon-profiler/default.nix
+++ b/pkgs/tools/graphics/snapdragon-profiler/default.nix
@@ -10,7 +10,6 @@
 , gtk-sharp-2_0
 , gtk2
 , libcxx
-, libcxxabi
 , coreutils
 , requireFile
 , archive ? requireFile {
@@ -42,7 +41,6 @@ stdenv.mkDerivation rec {
     gtk-sharp-2_0
     gtk2
     libcxx
-    libcxxabi
   ];
 
   installPhase = ''
diff --git a/pkgs/tools/graphics/vips/default.nix b/pkgs/tools/graphics/vips/default.nix
index 5c59971f955c..fde14fe0c53d 100644
--- a/pkgs/tools/graphics/vips/default.nix
+++ b/pkgs/tools/graphics/vips/default.nix
@@ -42,7 +42,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "vips";
-  version = "8.15.1";
+  version = "8.15.2";
 
   outputs = [ "bin" "out" "man" "dev" ] ++ lib.optionals (!stdenv.isDarwin) [ "devdoc" ];
 
@@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "libvips";
     repo = "libvips";
     rev = "refs/tags/v${finalAttrs.version}";
-    hash = "sha256-0zfYpOawH7XnTH9k8BdNDtZEKpYUlCXp7GY+fdXalsE=";
+    hash = "sha256-jp6RPceFzzWgFBzcfvggniAkhXaAGszT/sy4H6aCtGc=";
     # Remove unicode file names which leads to different checksums on HFS+
     # vs. other filesystems because of unicode normalisation.
     postFetch = ''
diff --git a/pkgs/tools/inputmethods/emote/default.nix b/pkgs/tools/inputmethods/emote/default.nix
index 8e3d7227d1bd..6c2e4962a996 100644
--- a/pkgs/tools/inputmethods/emote/default.nix
+++ b/pkgs/tools/inputmethods/emote/default.nix
@@ -53,6 +53,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Modern emoji picker for Linux";
+    mainProgram = "emote";
     homepage = "https://github.com/tom-james-watson/emote";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ emilytrau SuperSandro2000 ];
diff --git a/pkgs/tools/inputmethods/evdevremapkeys/default.nix b/pkgs/tools/inputmethods/evdevremapkeys/default.nix
index 497a4abc5956..2dcc169c6444 100644
--- a/pkgs/tools/inputmethods/evdevremapkeys/default.nix
+++ b/pkgs/tools/inputmethods/evdevremapkeys/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/philipl/evdevremapkeys";
     description = "Daemon to remap events on linux input devices";
+    mainProgram = "evdevremapkeys";
     license = licenses.mit;
     maintainers = [ maintainers.q3k ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/inputmethods/evscript/default.nix b/pkgs/tools/inputmethods/evscript/default.nix
index d1440bea357f..1de971b7cea2 100644
--- a/pkgs/tools/inputmethods/evscript/default.nix
+++ b/pkgs/tools/inputmethods/evscript/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     homepage = "https://codeberg.org/valpackett/evscript";
     description = "A tiny sandboxed Dyon scripting environment for evdev input devices";
+    mainProgram = "evscript";
     license = licenses.unlicense;
     maintainers = with maintainers; [ milesbreslin ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/inputmethods/evsieve/default.nix b/pkgs/tools/inputmethods/evsieve/default.nix
index de18668e7475..c8c6752b823d 100644
--- a/pkgs/tools/inputmethods/evsieve/default.nix
+++ b/pkgs/tools/inputmethods/evsieve/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A utility for mapping events from Linux event devices";
+    mainProgram = "evsieve";
     homepage = "https://github.com/KarsMulder/evsieve";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ tsowell ];
diff --git a/pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix b/pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix
index 0699f23e3aab..4aac06dc1ade 100644
--- a/pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix
+++ b/pkgs/tools/inputmethods/fcitx5/fcitx5-chinese-addons.nix
@@ -71,6 +71,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Addons related to Chinese, including IME previous bundled inside fcitx4";
+    mainProgram = "scel2org5";
     homepage = "https://github.com/fcitx/fcitx5-chinese-addons";
     license = with licenses; [ gpl2Plus lgpl21Plus ];
     maintainers = with maintainers; [ poscat ];
diff --git a/pkgs/tools/inputmethods/gebaar-libinput/default.nix b/pkgs/tools/inputmethods/gebaar-libinput/default.nix
index 9a808535fe04..533d4ddc8ee7 100644
--- a/pkgs/tools/inputmethods/gebaar-libinput/default.nix
+++ b/pkgs/tools/inputmethods/gebaar-libinput/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Gebaar, A Super Simple WM Independent Touchpad Gesture Daemon for libinput";
+    mainProgram = "gebaard";
     homepage = "https://github.com/Coffee2CodeNL/gebaar-libinput";
     license = licenses.gpl3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-cangjie/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-cangjie/default.nix
index 0d7f06039a09..0e5233ad8b6f 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-cangjie/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-cangjie/default.nix
@@ -66,6 +66,7 @@ stdenv.mkDerivation {
   meta = {
     isIbusEngine = true;
     description = "An IBus engine for users of the Cangjie and Quick input methods";
+    mainProgram = "ibus-setup-cangjie";
     homepage = "https://github.com/Cangjians/ibus-cangjie";
     license = lib.licenses.gpl3Plus;
     platforms = lib.platforms.linux;
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix
index af3e1edd6399..9c338f71698e 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-hangul/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     isIbusEngine = true;
     description = "Ibus Hangul engine";
+    mainProgram = "ibus-setup-hangul";
     homepage = "https://github.com/choehwanjin/ibus-hangul";
     license = licenses.gpl2;
     maintainers = with maintainers; [ ericsagnes ];
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix
index 220c89ca175d..d0199bdbed4a 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-mozc/default.nix
@@ -78,6 +78,7 @@ buildBazelPackage rec {
   meta = with lib; {
     isIbusEngine = true;
     description = "Japanese input method from Google";
+    mainProgram = "mozc_emacs_helper";
     homepage = "https://github.com/google/mozc";
     license = licenses.free;
     platforms = platforms.linux;
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix
index c5f02f4c8a22..7b277e76ecb5 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-table/default.nix
@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     isIbusEngine = true;
     description  = "An IBus framework for table-based input methods";
+    mainProgram = "ibus-table-createdb";
     homepage     = "https://github.com/kaio/ibus-table/wiki";
     license      = licenses.lgpl21;
     platforms    = platforms.linux;
diff --git a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
index 47262be28d5c..7f1131f092b8 100644
--- a/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
+++ b/pkgs/tools/inputmethods/ibus-engines/ibus-typing-booster/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
     homepage = "https://mike-fabian.github.io/ibus-typing-booster/";
     license = licenses.gpl3Plus;
     description = "A completion input method for faster typing";
+    mainProgram = "emoji-picker";
     maintainers = with maintainers; [ ncfavier ];
     isIbusEngine = true;
   };
diff --git a/pkgs/tools/inputmethods/interception-tools/caps2esc.nix b/pkgs/tools/inputmethods/interception-tools/caps2esc.nix
index 933a731828fb..ef8c4b17baf1 100644
--- a/pkgs/tools/inputmethods/interception-tools/caps2esc.nix
+++ b/pkgs/tools/inputmethods/interception-tools/caps2esc.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://gitlab.com/interception/linux/plugins/caps2esc";
     description = "Transforming the most useless key ever into the most useful one";
+    mainProgram = "caps2esc";
     license = licenses.mit;
     maintainers = [ maintainers.vyp ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/inputmethods/keyfuzz/default.nix b/pkgs/tools/inputmethods/keyfuzz/default.nix
index 8980abba2f62..f92993cfe754 100644
--- a/pkgs/tools/inputmethods/keyfuzz/default.nix
+++ b/pkgs/tools/inputmethods/keyfuzz/default.nix
@@ -6,6 +6,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Manipulate the scancode/keycode translation tables of keyboard drivers";
+    mainProgram = "keyfuzz";
     homepage    = "http://0pointer.de/lennart/projects/keyfuzz/";
     license     = licenses.gpl2Plus;
     platforms   = platforms.linux;
diff --git a/pkgs/tools/inputmethods/libinput-gestures/default.nix b/pkgs/tools/inputmethods/libinput-gestures/default.nix
index b9384469e963..bb466e38ba53 100644
--- a/pkgs/tools/inputmethods/libinput-gestures/default.nix
+++ b/pkgs/tools/inputmethods/libinput-gestures/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/bulletmark/libinput-gestures";
     description = "Gesture mapper for libinput";
+    mainProgram = "libinput-gestures";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ teozkr ];
diff --git a/pkgs/tools/inputmethods/lisgd/default.nix b/pkgs/tools/inputmethods/lisgd/default.nix
index dd57f61de9d6..23e677144945 100644
--- a/pkgs/tools/inputmethods/lisgd/default.nix
+++ b/pkgs/tools/inputmethods/lisgd/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Bind gestures via libinput touch events";
+    mainProgram = "lisgd";
     homepage = "https://git.sr.ht/~mil/lisgd";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/tools/inputmethods/m17n-db/default.nix b/pkgs/tools/inputmethods/m17n-db/default.nix
index dc0ed25a3efe..558d59d0ca94 100644
--- a/pkgs/tools/inputmethods/m17n-db/default.nix
+++ b/pkgs/tools/inputmethods/m17n-db/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://www.nongnu.org/m17n/";
     description = "Multilingual text processing library (database)";
+    mainProgram = "m17n-db";
     changelog = "https://git.savannah.nongnu.org/cgit/m17n/m17n-db.git/plain/NEWS?h=REL-${lib.replaceStrings [ "." ] [ "-" ] version}";
     license = lib.licenses.lgpl21Plus;
     platforms = lib.platforms.linux;
diff --git a/pkgs/tools/inputmethods/nabi/default.nix b/pkgs/tools/inputmethods/nabi/default.nix
index 72f13d4eb2dc..61a948529f4d 100644
--- a/pkgs/tools/inputmethods/nabi/default.nix
+++ b/pkgs/tools/inputmethods/nabi/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "The Easy Hangul XIM";
+    mainProgram = "nabi";
     homepage = "https://github.com/choehwanjin/nabi";
     license = licenses.gpl2;
     maintainers = [ maintainers.ianwookim ];
diff --git a/pkgs/tools/inputmethods/remote-touchpad/default.nix b/pkgs/tools/inputmethods/remote-touchpad/default.nix
index eef3ddfe835a..88c6db4842ef 100644
--- a/pkgs/tools/inputmethods/remote-touchpad/default.nix
+++ b/pkgs/tools/inputmethods/remote-touchpad/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Control mouse and keyboard from the web browser of a smartphone";
+    mainProgram = "remote-touchpad";
     homepage = "https://github.com/unrud/remote-touchpad";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ schnusch ];
diff --git a/pkgs/tools/inputmethods/touchegg/default.nix b/pkgs/tools/inputmethods/touchegg/default.nix
index de30b853670a..32a1b059f2c5 100644
--- a/pkgs/tools/inputmethods/touchegg/default.nix
+++ b/pkgs/tools/inputmethods/touchegg/default.nix
@@ -74,6 +74,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/JoseExposito/touchegg";
     description = "Linux multi-touch gesture recognizer";
+    mainProgram = "touchegg";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = teams.pantheon.members;
diff --git a/pkgs/tools/inputmethods/xlibinput_calibrator/default.nix b/pkgs/tools/inputmethods/xlibinput_calibrator/default.nix
index 2b6585c92513..3d5faba1c63c 100644
--- a/pkgs/tools/inputmethods/xlibinput_calibrator/default.nix
+++ b/pkgs/tools/inputmethods/xlibinput_calibrator/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Touch calibrator for libinput";
+    mainProgram = "xlibinput_calibrator";
     homepage = "https://github.com/kreijack/xlibinput_calibrator";
     changelog = "https://github.com/kreijack/xlibinput_calibrator/blob/${src.rev}/Changelog";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/misc/0x/default.nix b/pkgs/tools/misc/0x/default.nix
index b76c13e66287..2f1493d23452 100644
--- a/pkgs/tools/misc/0x/default.nix
+++ b/pkgs/tools/misc/0x/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage {
   meta = with lib; {
     homepage = "https://github.com/mcy/0x";
     description = "A colorful, configurable xxd";
+    mainProgram = "0x";
     license = licenses.asl20;
     maintainers = with maintainers; [ AndersonTorres ];
   };
diff --git a/pkgs/tools/misc/3mux/default.nix b/pkgs/tools/misc/3mux/default.nix
index 9ec4572328e7..0a16b853943d 100644
--- a/pkgs/tools/misc/3mux/default.nix
+++ b/pkgs/tools/misc/3mux/default.nix
@@ -46,6 +46,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Terminal multiplexer inspired by i3";
+    mainProgram = "3mux";
     longDescription = ''
       Terminal multiplexer with out-of-the-box support for search,
       mouse-controlled scrollback, and i3-like keybindings
diff --git a/pkgs/tools/misc/SP800-90B_EntropyAssessment/default.nix b/pkgs/tools/misc/SP800-90B_EntropyAssessment/default.nix
index 7647d2b9f0b0..3c18621d712d 100644
--- a/pkgs/tools/misc/SP800-90B_EntropyAssessment/default.nix
+++ b/pkgs/tools/misc/SP800-90B_EntropyAssessment/default.nix
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/usnistgov/SP800-90B_EntropyAssessment";
     description = "Implementation of min-entropy assessment methods included in Special Publication 800-90B";
     platforms = lib.platforms.linux;
-    license = lib.licenses.free; #this software uses the NIST software license
+    license = lib.licenses.nistSoftware;
     maintainers = with lib.maintainers; [ orichter thillux ];
   };
 }
diff --git a/pkgs/tools/misc/altserver-linux/default.nix b/pkgs/tools/misc/altserver-linux/default.nix
index 701fe0d5afb9..30d528294901 100644
--- a/pkgs/tools/misc/altserver-linux/default.nix
+++ b/pkgs/tools/misc/altserver-linux/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://github.com/NyaMisty/AltServer-Linux";
     description = "AltServer for AltStore, but on-device. Requires root privileges as well as running a custom anisette server currently";
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     mainProgram = "alt-server";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/misc/autojump/default.nix b/pkgs/tools/misc/autojump/default.nix
index e1bb2f084110..977e339d7ef5 100644
--- a/pkgs/tools/misc/autojump/default.nix
+++ b/pkgs/tools/misc/autojump/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A `cd' command that learns";
+    mainProgram = "autojump";
     longDescription = ''
       One of the most used shell commands is “cd”.  A quick survey
       among my friends revealed that between 10 and 20% of all
diff --git a/pkgs/tools/misc/bepasty/default.nix b/pkgs/tools/misc/bepasty/default.nix
index 9bf8c8e3ae16..c38963ade2f3 100644
--- a/pkgs/tools/misc/bepasty/default.nix
+++ b/pkgs/tools/misc/bepasty/default.nix
@@ -23,7 +23,7 @@ let
 #https://github.com/NixOS/nixpkgs/pull/38300
 in with bepastyPython.pkgs; buildPythonPackage rec {
   pname = "bepasty";
-  version = "1.2.0";
+  version = "1.2.1";
   format = "pyproject";
 
   propagatedBuildInputs = [
@@ -46,7 +46,7 @@ in with bepastyPython.pkgs; buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-R3bvrl/tOP0S9m6X+MwYK6fMQ51cI6W5AoxyYZ8aZ/w=";
+    sha256 = "sha256-08cyr2AruGAfHAwHHS8WMfJh7DBKymaYyz4AxI/ubkE=";
   };
 
   nativeCheckInputs = [
diff --git a/pkgs/tools/misc/chezmoi/default.nix b/pkgs/tools/misc/chezmoi/default.nix
index 24f94f6a7445..0533a0a4e81c 100644
--- a/pkgs/tools/misc/chezmoi/default.nix
+++ b/pkgs/tools/misc/chezmoi/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "chezmoi";
-  version = "2.47.1";
+  version = "2.47.2";
 
   src = fetchFromGitHub {
     owner = "twpayne";
     repo = "chezmoi";
     rev = "v${version}";
-    hash = "sha256-sCDRHbizWhxaGBKdBhLViOfv+mwJiVvw7cjXSuDnOAo=";
+    hash = "sha256-XjPeOTVoWcAWq8wb3RJCsIVMN4zF5ovAni+fWrR1P+I=";
   };
 
-  vendorHash = "sha256-gTgzuNsNzw8RmYaeOTBxkOc0Pt+WGLWTA6/oAL/1RRg=";
+  vendorHash = "sha256-ZtxX8BTX+7SfRxdxNWAy3wNTl8H7yoBNJr99dzCA+uk=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/misc/clipster/default.nix b/pkgs/tools/misc/clipster/default.nix
index 26170d148943..cad2c4506374 100644
--- a/pkgs/tools/misc/clipster/default.nix
+++ b/pkgs/tools/misc/clipster/default.nix
@@ -43,7 +43,7 @@ stdenv.mkDerivation  rec {
       - Option to ignore clipboard updates form certain applications. (filter_classes)
       - Ability to delete items in clipboard history.
     '';
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     homepage = "https://github.com/mrichar1/clipster";
     platforms = platforms.linux;
     maintainers = [ maintainers.magnetophon ];
diff --git a/pkgs/tools/misc/diffoscope/default.nix b/pkgs/tools/misc/diffoscope/default.nix
index a7d870a4d5dc..171cbc2dfe72 100644
--- a/pkgs/tools/misc/diffoscope/default.nix
+++ b/pkgs/tools/misc/diffoscope/default.nix
@@ -79,11 +79,11 @@
 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
 python3.pkgs.buildPythonApplication rec {
   pname = "diffoscope";
-  version = "260";
+  version = "261";
 
   src = fetchurl {
     url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
-    hash = "sha256-jZXBX6aIArm3eFmJpr60HxlcSlVNCK/wSL1yeIl/MjQ=";
+    hash = "sha256-BbxY5w2Up5IaDJyZgwnUDm683G8VIGaVnhUvaMRZHqU=";
   };
 
   outputs = [
diff --git a/pkgs/tools/misc/domine/default.nix b/pkgs/tools/misc/domine/default.nix
index 3d193ba2a06f..a85275acab0e 100644
--- a/pkgs/tools/misc/domine/default.nix
+++ b/pkgs/tools/misc/domine/default.nix
@@ -12,4 +12,5 @@ buildDartApplication rec {
   };
 
   pubspecLock = lib.importJSON ./pubspec.lock.json;
+  meta.mainProgram = "domine";
 }
diff --git a/pkgs/tools/misc/dooit/default.nix b/pkgs/tools/misc/dooit/default.nix
index 1621ea8e5249..1a76a304277c 100644
--- a/pkgs/tools/misc/dooit/default.nix
+++ b/pkgs/tools/misc/dooit/default.nix
@@ -23,6 +23,7 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   pythonRelaxDeps = [
+    "textual"
     "tzlocal"
   ];
 
diff --git a/pkgs/tools/misc/eludris/default.nix b/pkgs/tools/misc/eludris/default.nix
index ac3ecc2e5a6c..e3fc67fcacb0 100644
--- a/pkgs/tools/misc/eludris/default.nix
+++ b/pkgs/tools/misc/eludris/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple CLI to help you with setting up and managing your Eludris instance";
+    mainProgram = "eludris";
     homepage = "https://github.com/eludris/eludris/tree/main/cli";
     license = licenses.mit;
     maintainers = with maintainers; [ ooliver1 ];
diff --git a/pkgs/tools/misc/esphome/dashboard.nix b/pkgs/tools/misc/esphome/dashboard.nix
index f5bd9910569f..6d72dc40ca0d 100644
--- a/pkgs/tools/misc/esphome/dashboard.nix
+++ b/pkgs/tools/misc/esphome/dashboard.nix
@@ -5,12 +5,12 @@
 
 buildPythonPackage rec {
   pname = "esphome-dashboard";
-  version = "20231107.0";
+  version = "20240319.0";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-84iM987nxNidMObnbY3lt78xRbN9USNtqQzfOzkd17k=";
+    hash = "sha256-jiEXZWw8A4RcsRbypFpWkt8O3Ib1cNcOQO1zHt96aQU=";
   };
 
   # no tests
diff --git a/pkgs/tools/misc/esphome/default.nix b/pkgs/tools/misc/esphome/default.nix
index ec8b1beeb15c..102c97b464f7 100644
--- a/pkgs/tools/misc/esphome/default.nix
+++ b/pkgs/tools/misc/esphome/default.nix
@@ -19,14 +19,14 @@ let
 in
 python.pkgs.buildPythonApplication rec {
   pname = "esphome";
-  version = "2024.2.2";
+  version = "2024.3.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-SIp4hrllPgWNnrflUStSIcUB00eGU5pHoYveBPg7CVw=";
+    hash = "sha256-ha15MLTScFmgYjIRwCQ46DD+Zm64r+KReJTS8jfZX0o=";
   };
 
   nativeBuildInputs = with python.pkgs; [
@@ -71,6 +71,7 @@ python.pkgs.buildPythonApplication rec {
     python-magic
     pyyaml
     requests
+    ruamel-yaml
     tornado
     tzdata
     tzlocal
@@ -99,13 +100,6 @@ python.pkgs.buildPythonApplication rec {
     pytestCheckHook
   ];
 
-  disabledTestPaths = [
-    # requires hypothesis 5.49, we have 6.x
-    # ImportError: cannot import name 'ip_addresses' from 'hypothesis.provisional'
-    "tests/unit_tests/test_core.py"
-    "tests/unit_tests/test_helpers.py"
-  ];
-
   postCheck = ''
     $out/bin/esphome --help > /dev/null
   '';
diff --git a/pkgs/tools/misc/fastfetch/default.nix b/pkgs/tools/misc/fastfetch/default.nix
index 54c1bb587fce..bc3f4340b476 100644
--- a/pkgs/tools/misc/fastfetch/default.nix
+++ b/pkgs/tools/misc/fastfetch/default.nix
@@ -151,7 +151,7 @@ stdenv.mkDerivation (finalAttrs: {
     description = "Like neofetch, but much faster because written in C";
     homepage = "https://github.com/fastfetch-cli/fastfetch";
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ gerg-l khaneliman ];
+    maintainers = with lib.maintainers; [ gerg-l khaneliman federicoschonborn ];
     platforms = lib.platforms.all;
     mainProgram = "fastfetch";
   };
diff --git a/pkgs/tools/misc/fclones/gui.nix b/pkgs/tools/misc/fclones/gui.nix
index 7b2d063d45b7..8dff1eec4928 100644
--- a/pkgs/tools/misc/fclones/gui.nix
+++ b/pkgs/tools/misc/fclones/gui.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Interactive duplicate file remover";
+    mainProgram = "fclones-gui";
     homepage = "https://github.com/pkolaczk/fclones-gui";
     changelog = "https://github.com/pkolaczk/fclones-gui/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/tools/misc/fedifetcher/default.nix b/pkgs/tools/misc/fedifetcher/default.nix
index dbf8c3bce281..36885e953262 100644
--- a/pkgs/tools/misc/fedifetcher/default.nix
+++ b/pkgs/tools/misc/fedifetcher/default.nix
@@ -2,14 +2,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "fedifetcher";
-  version = "7.0.3";
+  version = "7.0.4";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "nanos";
     repo = "FediFetcher";
-    rev = "v${version}";
-    hash = "sha256-ADf6ZVqO9v6GQbNWi3NDX5bNmFDX5LMJfM6ePEWwbrQ=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-19ZpOpvDj2/qMufH2qPPAj8hRPlViSuC64WqJp6+xSk=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/tools/misc/gosu/default.nix b/pkgs/tools/misc/gosu/default.nix
index bd3ba4c930d7..8b5a5fb88d33 100644
--- a/pkgs/tools/misc/gosu/default.nix
+++ b/pkgs/tools/misc/gosu/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that avoids TTY and signal-forwarding behavior of sudo and su";
+    mainProgram = "gosu";
     homepage = "https://github.com/tianon/gosu";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/misc/hdf5/default.nix b/pkgs/tools/misc/hdf5/default.nix
index ba00746c08f9..c6855a47f8e6 100644
--- a/pkgs/tools/misc/hdf5/default.nix
+++ b/pkgs/tools/misc/hdf5/default.nix
@@ -3,7 +3,7 @@
 , fetchurl
 , cmake
 , removeReferencesTo
-, cppSupport ? false
+, cppSupport ? true
 , fortranSupport ? false
 , fortran
 , zlibSupport ? true
@@ -13,6 +13,7 @@
 , mpiSupport ? false
 , mpi
 , enableShared ? !stdenv.hostPlatform.isStatic
+, enableStatic ? stdenv.hostPlatform.isStatic
 , javaSupport ? false
 , jdk
 , usev110Api ? false
@@ -58,7 +59,7 @@ stdenv.mkDerivation rec {
       ;
   };
 
-  outputs = [ "out" "dev" ];
+  outputs = [ "out" "dev" "bin" ];
 
   nativeBuildInputs = [ removeReferencesTo cmake ]
     ++ optional fortranSupport fortran;
@@ -72,6 +73,7 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [
     "-DHDF5_INSTALL_CMAKE_DIR=${placeholder "dev"}/lib/cmake"
+    "-DBUILD_STATIC_LIBS=${lib.boolToString enableStatic}"
   ] ++ lib.optional stdenv.isDarwin "-DHDF5_BUILD_WITH_INSTALL_NAME=ON"
     ++ lib.optional cppSupport "-DHDF5_BUILD_CPP_LIB=ON"
     ++ lib.optional fortranSupport "-DHDF5_BUILD_FORTRAN=ON"
@@ -85,10 +87,22 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' +
+    moveToOutput 'bin/' "''${!outputBin}"
     moveToOutput 'bin/h5cc' "''${!outputDev}"
     moveToOutput 'bin/h5c++' "''${!outputDev}"
     moveToOutput 'bin/h5fc' "''${!outputDev}"
     moveToOutput 'bin/h5pcc' "''${!outputDev}"
+    moveToOutput 'bin/h5hlcc' "''${!outputDev}"
+    moveToOutput 'bin/h5hlc++' "''${!outputDev}"
+  '' + lib.optionalString enableShared
+  # The shared build creates binaries with -shared suffixes,
+  # so we remove these suffixes.
+  ''
+    pushd ''${!outputBin}/bin
+    for file in *-shared; do
+      mv "$file" "''${file%%-shared}"
+    done
+    popd
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/tools/misc/i3minator/default.nix b/pkgs/tools/misc/i3minator/default.nix
index 4db029ef8fa2..d56ee6eadc7a 100644
--- a/pkgs/tools/misc/i3minator/default.nix
+++ b/pkgs/tools/misc/i3minator/default.nix
@@ -20,6 +20,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "i3 project manager similar to tmuxinator";
+    mainProgram = "i3minator";
     longDescription = ''
       A simple "workspace manager" for i3. It allows to quickly
       manage workspaces defining windows and their layout. The
diff --git a/pkgs/tools/misc/ili2c/default.nix b/pkgs/tools/misc/ili2c/default.nix
index 99c1353631e9..d4ac13046377 100644
--- a/pkgs/tools/misc/ili2c/default.nix
+++ b/pkgs/tools/misc/ili2c/default.nix
@@ -5,7 +5,7 @@
 , jdk8
 , jre8
 , makeWrapper
-, canonicalize-jars-hook
+, stripJavaArchivesHook
 }:
 
 let
@@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: {
     ant
     jdk
     makeWrapper
-    canonicalize-jars-hook
+    stripJavaArchivesHook
   ];
 
   src = fetchFromGitHub {
diff --git a/pkgs/tools/misc/kalker/default.nix b/pkgs/tools/misc/kalker/default.nix
index 2df69dd8f252..6b90866493c3 100644
--- a/pkgs/tools/misc/kalker/default.nix
+++ b/pkgs/tools/misc/kalker/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "kalker";
-  version = "2.0.4";
+  version = "2.1.0";
 
   src = fetchFromGitHub {
     owner = "PaddiM8";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-8tJi4PRGhNCndiMRdZUvCSdx/+p9OhJyJ3AbD+PucSo=";
+    hash = "sha256-oBdo/FQZsJnUwhGrBuRWKZIvw2lZab9N/rv/muofs04=";
   };
 
-  cargoHash = "sha256-rGy4tkjjPiV2lpdOtfqjsXgBgi/x+45K4KeUDhyfQoA=";
+  cargoHash = "sha256-v4biE3J1a3qxiqJrSTFxyZhOJpoCnh2lZFBjy4O3XiE=";
 
   buildInputs = [ gmp mpfr libmpc ];
 
diff --git a/pkgs/tools/misc/libbitcoin/libbitcoin-client.nix b/pkgs/tools/misc/libbitcoin/libbitcoin-client.nix
index 266ef9accca6..4e997c65565a 100644
--- a/pkgs/tools/misc/libbitcoin/libbitcoin-client.nix
+++ b/pkgs/tools/misc/libbitcoin/libbitcoin-client.nix
@@ -30,6 +30,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ];
 
     # AGPL with a lesser clause
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
   };
 }
diff --git a/pkgs/tools/misc/libbitcoin/libbitcoin-explorer.nix b/pkgs/tools/misc/libbitcoin/libbitcoin-explorer.nix
index 48c8e9a4f721..f14c19e0e474 100644
--- a/pkgs/tools/misc/libbitcoin/libbitcoin-explorer.nix
+++ b/pkgs/tools/misc/libbitcoin/libbitcoin-explorer.nix
@@ -26,11 +26,12 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Bitcoin command line tool";
+    mainProgram = "bx";
     homepage = "https://github.com/libbitcoin/libbitcoin-explorer";
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ asymmetric ];
 
     # AGPL with a lesser clause
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
   };
 }
diff --git a/pkgs/tools/misc/libbitcoin/libbitcoin-network.nix b/pkgs/tools/misc/libbitcoin/libbitcoin-network.nix
index ee9cb1da687f..bc4186c9b8e7 100644
--- a/pkgs/tools/misc/libbitcoin/libbitcoin-network.nix
+++ b/pkgs/tools/misc/libbitcoin/libbitcoin-network.nix
@@ -30,6 +30,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ asymmetric ];
 
     # AGPL with a lesser clause
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
   };
 }
diff --git a/pkgs/tools/misc/libbitcoin/libbitcoin-protocol.nix b/pkgs/tools/misc/libbitcoin/libbitcoin-protocol.nix
index 57e55400aa27..6014c6c5c779 100644
--- a/pkgs/tools/misc/libbitcoin/libbitcoin-protocol.nix
+++ b/pkgs/tools/misc/libbitcoin/libbitcoin-protocol.nix
@@ -31,6 +31,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ asymmetric ];
 
     # AGPL with a lesser clause
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
   };
 }
diff --git a/pkgs/tools/misc/libbitcoin/libbitcoin.nix b/pkgs/tools/misc/libbitcoin/libbitcoin.nix
index 70a0f9bff6ef..cebd5090bfe5 100644
--- a/pkgs/tools/misc/libbitcoin/libbitcoin.nix
+++ b/pkgs/tools/misc/libbitcoin/libbitcoin.nix
@@ -30,6 +30,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ ];
     # AGPL with a lesser clause
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
   };
 }
diff --git a/pkgs/tools/misc/linux-logo/default.nix b/pkgs/tools/misc/linux-logo/default.nix
index ad7dd7227a90..5b12f75b7297 100644
--- a/pkgs/tools/misc/linux-logo/default.nix
+++ b/pkgs/tools/misc/linux-logo/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Prints an ASCII logo and some system info";
+    mainProgram = "linux_logo";
     homepage = "http://www.deater.net/weave/vmwprod/linux_logo";
     changelog = "https://github.com/deater/linux_logo/blob/${src.rev}/CHANGES";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/misc/map/default.nix b/pkgs/tools/misc/map/default.nix
index b6049904dc62..6416e12e9c19 100644
--- a/pkgs/tools/misc/map/default.nix
+++ b/pkgs/tools/misc/map/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Map lines from stdin to commands";
+    mainProgram = "map";
     homepage = "https://github.com/soveran/map";
     license = licenses.bsd2;
     maintainers = with maintainers; [ pogobanane ];
diff --git a/pkgs/tools/misc/mise/default.nix b/pkgs/tools/misc/mise/default.nix
index f720edd67db6..c08de9afd8f1 100644
--- a/pkgs/tools/misc/mise/default.nix
+++ b/pkgs/tools/misc/mise/default.nix
@@ -17,16 +17,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mise";
-  version = "2024.3.2";
+  version = "2024.3.7";
 
   src = fetchFromGitHub {
     owner = "jdx";
     repo = "mise";
     rev = "v${version}";
-    hash = "sha256-o8oYfah5Vveup9qdxl+Uzl+j4Sqoj+C6BA3c5kpofXo=";
+    hash = "sha256-vwbg/OY7w9+5KvLp+BN2Ive9khVTUnWgnWD1T09iVR8=";
   };
 
-  cargoHash = "sha256-c6hN9JuMuUp1jl5wXf4N5S3hzyQeeLKAb56H9cLBAIY=";
+  cargoHash = "sha256-su8kyq+H42cYcQcoDYaTKAhLSykYOTXdkDQeCgScnp0=";
 
   nativeBuildInputs = [ installShellFiles pkg-config ];
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
diff --git a/pkgs/tools/misc/moar/default.nix b/pkgs/tools/misc/moar/default.nix
index 9f57849d81c6..85eefe9f36eb 100644
--- a/pkgs/tools/misc/moar/default.nix
+++ b/pkgs/tools/misc/moar/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "moar";
-  version = "1.23.7";
+  version = "1.23.9";
 
   src = fetchFromGitHub {
     owner = "walles";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-QQiqi3rt1EQTUWSXAxAb5MHGCFyXZV6LZ6ZAS5P3mO4=";
+    hash = "sha256-qpbsNHIWiYTa5kt0GTybnWiSnUdPYIeFYsWXinYjtQA=";
   };
 
   vendorHash = "sha256-1u/2OlMX2FuZaxWnpU4n5r/4xKe+rK++GoCJiSq/BdE=";
diff --git a/pkgs/tools/misc/neo-cowsay/default.nix b/pkgs/tools/misc/neo-cowsay/default.nix
index e6b675e4d36f..2682658ab38d 100644
--- a/pkgs/tools/misc/neo-cowsay/default.nix
+++ b/pkgs/tools/misc/neo-cowsay/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     homepage = "https://github.com/Code-Hex/Neo-cowsay";
     license = with licenses; [ artistic1 /* or */ gpl3 ];
     maintainers = with maintainers; [ Br1ght0ne ];
+    mainProgram = "cowsay";
   };
 }
diff --git a/pkgs/tools/misc/ollama/default.nix b/pkgs/tools/misc/ollama/default.nix
index 0facac21e5be..6feec441f911 100644
--- a/pkgs/tools/misc/ollama/default.nix
+++ b/pkgs/tools/misc/ollama/default.nix
@@ -51,6 +51,11 @@ let
   rocmPath = buildEnv {
     name = "rocm-path";
     paths = [
+      rocmPackages.clr
+      rocmPackages.hipblas
+      rocmPackages.rocblas
+      rocmPackages.rocsolver
+      rocmPackages.rocsparse
       rocmPackages.rocm-device-libs
       rocmClang
     ];
diff --git a/pkgs/tools/misc/onefetch/default.nix b/pkgs/tools/misc/onefetch/default.nix
index fe509320a712..84762c8b7274 100644
--- a/pkgs/tools/misc/onefetch/default.nix
+++ b/pkgs/tools/misc/onefetch/default.nix
@@ -14,16 +14,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "onefetch";
-  version = "2.19.0";
+  version = "2.20.0";
 
   src = fetchFromGitHub {
     owner = "o2sh";
     repo = pname;
     rev = version;
-    hash = "sha256-IaXQyTQMvgfm3CWU6z0T4nTJNgA8/8urG+hhuthB4+U=";
+    hash = "sha256-aQeKzOxRlSGuVewh3HEx1M12vmaxhy6ImnqMDc5b0DI=";
   };
 
-  cargoHash = "sha256-8brPYBVqoBg9wO/Y6LdNgVasJgmyZvdNIC0Cclpyk68=";
+  cargoHash = "sha256-g+fTmZGyPkQLgnJ9Bb4sLTfDMPPBRA+s6f3OxXTKwsM=";
 
   cargoPatches = [
     # enable pkg-config feature of zstd
diff --git a/pkgs/tools/misc/opentelemetry-collector/contrib.nix b/pkgs/tools/misc/opentelemetry-collector/contrib.nix
index e928544d240a..bad1051fcc64 100644
--- a/pkgs/tools/misc/opentelemetry-collector/contrib.nix
+++ b/pkgs/tools/misc/opentelemetry-collector/contrib.nix
@@ -8,18 +8,18 @@
 
 buildGoModule rec {
   pname = "opentelemetry-collector-contrib";
-  version = "0.87.0";
+  version = "0.96.0";
 
   src = fetchFromGitHub {
     owner = "open-telemetry";
     repo = "opentelemetry-collector-contrib";
     rev = "v${version}";
-    sha256 = "sha256-b1TCj3aKupqUMQ74O58O5WJfQM9tj1G0ny5YeeilFAM=";
+    sha256 = "sha256-eQau6PcslY/Bzghmndv1lq5fb+Q+x9guouKzLw5sJTg=";
   };
 
   # proxy vendor to avoid hash missmatches between linux and macOS
   proxyVendor = true;
-  vendorHash = "sha256-o/51Z2Zmdza3pNZa0u3j4uG46orE9S7pUsZOXjHKrnI=";
+  vendorHash = "sha256-aMxOu6eCskTlphMjM/CBs0lN6UkLDgSidS9qwlSUUiU=";
 
   # there is a nested go.mod
   sourceRoot = "${src.name}/cmd/otelcontribcol";
@@ -39,11 +39,7 @@ buildGoModule rec {
   # it instead of trusting the global $PATH.
   propagatedBuildInputs = lib.optionals withSystemd [ systemdMinimal ];
 
-  preCheck = "export CGO_ENABLED=1";
-
-  # This test fails on darwin for mysterious reasons.
-  checkFlags = lib.optionals stdenv.isDarwin
-    [ "-skip" "TestDefaultExtensions/memory_ballast" ];
+  doCheck = false;
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/misc/pb/default.nix b/pkgs/tools/misc/pb/default.nix
index 1cbe8eded5cb..061ca691af75 100644
--- a/pkgs/tools/misc/pb/default.nix
+++ b/pkgs/tools/misc/pb/default.nix
@@ -30,7 +30,7 @@ buildGoModule rec {
     homepage = "https://github.com/parseablehq/pb";
     changelog = "https://github.com/parseablehq/pb/releases/tag/v${version}";
     description = "CLI client for Parseable server";
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
     maintainers = with maintainers; [ aaronjheng ];
     mainProgram = "pb";
   };
diff --git a/pkgs/tools/misc/pgbadger/default.nix b/pkgs/tools/misc/pgbadger/default.nix
index 4054e6b20e94..b1024d68a91c 100644
--- a/pkgs/tools/misc/pgbadger/default.nix
+++ b/pkgs/tools/misc/pgbadger/default.nix
@@ -1,13 +1,28 @@
-{ buildPerlPackage, shortenPerlShebang, stdenv, lib, fetchFromGitHub, which, bzip2, PodMarkdown, JSONXS
-, TextCSV_XS }:
+{
+  buildPerlPackage,
+  bzip2,
+  fetchFromGitHub,
+  JSONXS,
+  lib,
+  nix-update-script,
+  pgbadger,
+  PodMarkdown,
+  shortenPerlShebang,
+  stdenv,
+  testers,
+  TextCSV_XS,
+  which,
+}:
+
 buildPerlPackage rec {
   pname = "pgbadger";
-  version = "12.2";
+  version = "12.4";
+
   src = fetchFromGitHub {
     owner = "darold";
     repo = "pgbadger";
-    rev = "v${version}";
-    hash = "sha256-IzfpDqzS5VcehkPsFxyn3kJsvXs8nLgJ3WT8ZCmIDxI=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-an/BOkQsMkTXS0HywV1JWerS16HRbO1MHVleYhVqmBM=";
   };
 
   postPatch = ''
@@ -25,10 +40,27 @@ buildPerlPackage rec {
 
   PERL_MM_OPT = "INSTALL_BASE=${placeholder "out"}";
 
-  buildInputs = [ PodMarkdown JSONXS TextCSV_XS ];
+  buildInputs = [
+    JSONXS
+    PodMarkdown
+    TextCSV_XS
+  ];
+
   nativeBuildInputs = lib.optionals stdenv.isDarwin [ shortenPerlShebang ];
 
-  nativeCheckInputs = [ which bzip2 ];
+  nativeCheckInputs = [
+    bzip2
+    which
+  ];
+
+  passthru = {
+    tests.version = testers.testVersion {
+      inherit version;
+      command = "${lib.getExe pgbadger} --version";
+      package = pgbadger;
+    };
+    updateScript = nix-update-script { };
+  };
 
   meta = {
     homepage = "https://github.com/darold/pgbadger";
diff --git a/pkgs/tools/misc/plantuml/plantuml-c4.nix b/pkgs/tools/misc/plantuml/plantuml-c4.nix
index 2829d0a31eab..77cfa82e894f 100644
--- a/pkgs/tools/misc/plantuml/plantuml-c4.nix
+++ b/pkgs/tools/misc/plantuml/plantuml-c4.nix
@@ -65,6 +65,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "PlantUML bundled with C4-Plantuml and plantuml sprites library";
+    mainProgram = "plantuml";
     homepage = "https://github.com/plantuml-stdlib/C4-PlantUML";
     license = licenses.mit;
     maintainers = with maintainers; [ tfc ];
diff --git a/pkgs/tools/misc/pokeget-rs/default.nix b/pkgs/tools/misc/pokeget-rs/default.nix
index 55995e8b0bce..2505fd2f9678 100644
--- a/pkgs/tools/misc/pokeget-rs/default.nix
+++ b/pkgs/tools/misc/pokeget-rs/default.nix
@@ -5,17 +5,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "pokeget-rs";
-  version = "1.4.2";
+  version = "1.4.2-2";
 
   src = fetchFromGitHub {
     owner = "talwat";
     repo = "pokeget-rs";
     rev = version;
-    hash = "sha256-++MD7XYWJ4Oim/VSYSisu/DwazOEfQ4CJNLfR5sjP3M=";
+    hash = "sha256-RPdtwHJsXdjIAeJP/LPdJ7GjwdIngM3eZO/A8InTpXQ=";
     fetchSubmodules = true;
   };
 
-  cargoHash = "sha256-lWImtmtoo3ujbHvaeijuVjt0NQhdp+mxuu8oxNutr2E=";
+  cargoHash = "sha256-JeRSBG1HswttHOGyiNseFf2KiWkumrzEIw76A80nQHM=";
 
   meta = with lib; {
     description = "A better rust version of pokeget";
diff --git a/pkgs/tools/misc/pspg/default.nix b/pkgs/tools/misc/pspg/default.nix
index 2449fd30171d..47fb6fbbd8dd 100644
--- a/pkgs/tools/misc/pspg/default.nix
+++ b/pkgs/tools/misc/pspg/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pspg";
-  version = "5.8.1";
+  version = "5.8.2";
 
   src = fetchFromGitHub {
     owner = "okbob";
     repo = pname;
     rev = version;
-    sha256 = "sha256-nsGBBGw66LCwOuNdBjlz6u9RT+BX6iZmZeDY9yJoc+c=";
+    sha256 = "sha256-1mL/UlN7wD0GBYwg0C2eYCB3MtFO2ILd4+A7br+/ovs=";
   };
 
   nativeBuildInputs = [ pkg-config installShellFiles ];
diff --git a/pkgs/tools/misc/pubs/default.nix b/pkgs/tools/misc/pubs/default.nix
index b02aeb8aefb6..1dcd011f0ace 100644
--- a/pkgs/tools/misc/pubs/default.nix
+++ b/pkgs/tools/misc/pubs/default.nix
@@ -72,6 +72,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command-line bibliography manager";
+    mainProgram = "pubs";
     homepage = "https://github.com/pubs/pubs";
     changelog = "https://github.com/pubs/pubs/blob/v${version}/changelog.md";
     license = licenses.lgpl3Only;
diff --git a/pkgs/tools/misc/qrscan/default.nix b/pkgs/tools/misc/qrscan/default.nix
index 6ac80bb7f746..1ad4c526e752 100644
--- a/pkgs/tools/misc/qrscan/default.nix
+++ b/pkgs/tools/misc/qrscan/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Scan a QR code in the terminal using the system camera or a given image";
+    mainProgram = "qrscan";
     homepage = "https://github.com/sayanarijit/qrscan";
     license = licenses.mit;
     broken = stdenv.isDarwin;
diff --git a/pkgs/tools/misc/r3ctl/default.nix b/pkgs/tools/misc/r3ctl/default.nix
index f76f704fc2a7..8af95a4630cf 100644
--- a/pkgs/tools/misc/r3ctl/default.nix
+++ b/pkgs/tools/misc/r3ctl/default.nix
@@ -40,6 +40,7 @@ qt5.mkDerivation {
 
   meta = with lib; {
     description = "A cmdline tool to control the r3 hackerspace lights";
+    mainProgram = "r3ctl";
     homepage = "https://github.com/0xfeedc0de64/r3ctl";
     maintainers = with maintainers; [ mkg20001 ];
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/misc/remind/default.nix b/pkgs/tools/misc/remind/default.nix
index b9becd60ab08..d3ac44b71364 100644
--- a/pkgs/tools/misc/remind/default.nix
+++ b/pkgs/tools/misc/remind/default.nix
@@ -15,11 +15,11 @@ let
 in
 tcl.mkTclDerivation rec {
   pname = "remind";
-  version = "04.03.02";
+  version = "04.03.03";
 
   src = fetchurl {
     url = "https://dianne.skoll.ca/projects/remind/download/remind-${version}.tar.gz";
-    sha256 = "sha256-tL5Ntb/RIoT9mKcdU1ndBo/pGwhtIsRnTV0lL6Sg1Vw=";
+    sha256 = "sha256-+/vX6Nu0F84mZcEnd9jFlaVKbJIQQOJiPsxspKF+klQ=";
   };
 
   propagatedBuildInputs = tclLibraries;
diff --git a/pkgs/tools/misc/riemann-c-client/default.nix b/pkgs/tools/misc/riemann-c-client/default.nix
index 7c744935064f..9ce23873aa27 100644
--- a/pkgs/tools/misc/riemann-c-client/default.nix
+++ b/pkgs/tools/misc/riemann-c-client/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://git.madhouse-project.org/algernon/riemann-c-client";
     description = "A C client library for the Riemann monitoring system";
+    mainProgram = "riemann-client";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ pradeepchhetri ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/misc/scdl/default.nix b/pkgs/tools/misc/scdl/default.nix
index 611326d55403..d2e28865e33c 100644
--- a/pkgs/tools/misc/scdl/default.nix
+++ b/pkgs/tools/misc/scdl/default.nix
@@ -2,12 +2,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "scdl";
-  version = "2.7.3";
+  version = "2.7.5";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "60284b7b058040d4847f2e4b0ab906b10e959d51f976a0188641e8e10685474f";
+    sha256 = "sha256-YoQaIbOfwLtkSZJGZd9CL7TZGgqjfohJfrnQ3t5uLU0=";
   };
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/tools/misc/star-history/default.nix b/pkgs/tools/misc/star-history/default.nix
index 65a2d35a33cd..5c98e8a94419 100644
--- a/pkgs/tools/misc/star-history/default.nix
+++ b/pkgs/tools/misc/star-history/default.nix
@@ -9,14 +9,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "star-history";
-  version = "1.0.19";
+  version = "1.0.20";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-sjVxYo5Sx6fmlLflg3y754jnFbnA5x/X5NINM3omPVY=";
+    sha256 = "sha256-1mAEDcg25v47zKSYbL0w6KX56ZIti6NcpnQKUyrtybg=";
   };
 
-  cargoHash = "sha256-aeRAXUdpv94WW1E/bWvJnwHOxYn9bALXvTb5RVjcozQ=";
+  cargoHash = "sha256-qkIHNFCGLtQ1uO0Y3vKR3zBtKj8Cq0ptgQcqeGvG5qs=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/tools/misc/starship/default.nix b/pkgs/tools/misc/starship/default.nix
index 605867e285c2..c970e19a6b89 100644
--- a/pkgs/tools/misc/starship/default.nix
+++ b/pkgs/tools/misc/starship/default.nix
@@ -13,13 +13,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "starship";
-  version = "1.17.1";
+  version = "1.18.0";
 
   src = fetchFromGitHub {
     owner = "starship";
-    repo = pname;
+    repo = "starship";
     rev = "v${version}";
-    hash = "sha256-e+vhisUzSYKUUoYfSaQwpfMz2OzNcZbeHgbvyPon18g=";
+    hash = "sha256-f9alFoTH461y1EYnhxnnPN98ujLTnlVBJa8lEp8t44Y=";
   };
 
   nativeBuildInputs = [ installShellFiles cmake ];
@@ -41,10 +41,10 @@ rustPlatform.buildRustPackage rec {
 
     presetdir=$out/share/starship/presets/
     mkdir -p $presetdir
-    cp docs/.vuepress/public/presets/toml/*.toml $presetdir
+    cp docs/public/presets/toml/*.toml $presetdir
   '';
 
-  cargoHash = "sha256-xLlZyLvS9AcXQHxjyL4Dden1rEwCLB8/comfRyqXXCI=";
+  cargoHash = "sha256-7k7qb5jLz2mk27ayYYE5uFXYgQkjbIIwdppJxM8YgtY=";
 
   nativeCheckInputs = [ git ];
 
diff --git a/pkgs/tools/misc/steampipe/default.nix b/pkgs/tools/misc/steampipe/default.nix
index 04e4593f1ebd..ef2b17828d80 100644
--- a/pkgs/tools/misc/steampipe/default.nix
+++ b/pkgs/tools/misc/steampipe/default.nix
@@ -41,7 +41,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://steampipe.io/";
     description = "select * from cloud;";
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     maintainers = with maintainers; [ hardselius ];
     changelog = "https://github.com/turbot/steampipe/blob/v${version}/CHANGELOG.md";
   };
diff --git a/pkgs/tools/misc/thefuck/default.nix b/pkgs/tools/misc/thefuck/default.nix
index d7a90fa8891f..150913c31d13 100644
--- a/pkgs/tools/misc/thefuck/default.nix
+++ b/pkgs/tools/misc/thefuck/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub, buildPythonApplication
 , colorama, decorator, psutil, pyte, six
-, go, mock, pytestCheckHook, pytest-mock
+, go, mock, pytestCheckHook, pytest-mock, pytest_7
 }:
 
 buildPythonApplication rec {
@@ -16,7 +16,7 @@ buildPythonApplication rec {
 
   propagatedBuildInputs = [ colorama decorator psutil pyte six ];
 
-  nativeCheckInputs = [ go mock pytestCheckHook pytest-mock ];
+  nativeCheckInputs = [ go mock (pytestCheckHook.override { pytest = pytest_7; }) pytest-mock ];
 
   disabledTests = lib.optionals stdenv.isDarwin [
     "test_settings_defaults"
@@ -39,6 +39,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/nvbn/thefuck";
     description = "Magnificent app which corrects your previous console command";
     license = licenses.mit;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ marcusramberg ];
   };
 }
diff --git a/pkgs/tools/misc/tkman/default.nix b/pkgs/tools/misc/tkman/default.nix
index 4df680fb6b8c..c51c3564fef8 100644
--- a/pkgs/tools/misc/tkman/default.nix
+++ b/pkgs/tools/misc/tkman/default.nix
@@ -67,6 +67,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Graphical, hypertext manual page and Texinfo browser for UNIX";
+    mainProgram = "tkman";
     longDescription = ''
       TkMan is a graphical, hypertext manual page and Texinfo browser for UNIX.
       TkMan boasts hypertext links, unmatched online text formatting and display
diff --git a/pkgs/tools/misc/tmuxp/default.nix b/pkgs/tools/misc/tmuxp/default.nix
index b61f0bddaa26..37faf47f02a9 100644
--- a/pkgs/tools/misc/tmuxp/default.nix
+++ b/pkgs/tools/misc/tmuxp/default.nix
@@ -2,12 +2,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "tmuxp";
-  version = "1.39.0";
+  version = "1.43.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-E8Q1uCV3kl4rYg/bzwjk3CNQU/uP9lEZzSqcOFkLrY0=";
+    hash = "sha256-SbMZpMrcOGNzEqa/2x0OtgC2/fhKp8Prs8Hspy3I3tA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/misc/ttfautohint/default.nix b/pkgs/tools/misc/ttfautohint/default.nix
index 9d2036b97f78..14572d12a781 100644
--- a/pkgs/tools/misc/ttfautohint/default.nix
+++ b/pkgs/tools/misc/ttfautohint/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An automatic hinter for TrueType fonts";
+    mainProgram = "ttfautohint";
     longDescription = ''
       A library and two programs which take a TrueType font as the
       input, remove its bytecode instructions (if any), and return a
diff --git a/pkgs/tools/misc/turbo/default.nix b/pkgs/tools/misc/turbo/default.nix
index c891ad5d0da2..05d2f7d1a0f6 100644
--- a/pkgs/tools/misc/turbo/default.nix
+++ b/pkgs/tools/misc/turbo/default.nix
@@ -62,6 +62,7 @@ rustPlatform.buildRustPackage rec{
 
   meta = with lib; {
     description = "High-performance build system for JavaScript and TypeScript codebases";
+    mainProgram = "turbo";
     homepage = "https://turbo.build/";
     maintainers = with maintainers; [ dlip ];
     license = licenses.mpl20;
diff --git a/pkgs/tools/misc/upower-notify/default.nix b/pkgs/tools/misc/upower-notify/default.nix
index c46ad10a40af..8033a91ecf51 100644
--- a/pkgs/tools/misc/upower-notify/default.nix
+++ b/pkgs/tools/misc/upower-notify/default.nix
@@ -23,6 +23,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "simple tool to give you Desktop Notifications about your battery";
+    mainProgram = "upower-notify";
     homepage = "https://github.com/omeid/upower-notify";
     maintainers = with maintainers; [ kamilchm ];
   };
diff --git a/pkgs/tools/misc/url-parser/default.nix b/pkgs/tools/misc/url-parser/default.nix
index d55639b8be80..39ae506c2524 100644
--- a/pkgs/tools/misc/url-parser/default.nix
+++ b/pkgs/tools/misc/url-parser/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "url-parser";
-  version = "2.0.2";
+  version = "2.0.3";
 
   src = fetchFromGitHub {
     owner = "thegeeklab";
     repo = "url-parser";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1KNe2sYr2DtRJGdgqs7JAA788Qa3+Z7iTntCkiJd29I=";
+    hash = "sha256-pu6U6YIA7+K1ZSt97Nn0IDaQFVIwMq3m7d8JidK1vJk=";
   };
 
-  vendorHash = "sha256-DAwPYihfOorC61/UhRNNOsOaAjbu8mDBaikGJIOzk6Y=";
+  vendorHash = "sha256-QqhjS0uL2Fm2OeFkuAB8VeS7HpoS9dOhgHk/J4j9++M=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/misc/wacomtablet/default.nix b/pkgs/tools/misc/wacomtablet/default.nix
index 5ff2800496a7..f10ccd698cb9 100644
--- a/pkgs/tools/misc/wacomtablet/default.nix
+++ b/pkgs/tools/misc/wacomtablet/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = {
     description = "KDE Configuration Module for Wacom Graphics Tablets";
+    mainProgram = "kde_wacom_tabletfinder";
     longDescription = ''
       This module implements a GUI for the Wacom Linux Drivers and extends it
       with profile support to handle different button / pen layouts per profile.
diff --git a/pkgs/tools/misc/wv2/default.nix b/pkgs/tools/misc/wv2/default.nix
index d57001449404..14420c1c3908 100644
--- a/pkgs/tools/misc/wv2/default.nix
+++ b/pkgs/tools/misc/wv2/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Excellent MS Word filter lib, used in most Office suites";
+    mainProgram = "wv2-config";
     license = lib.licenses.lgpl2;
     homepage = "https://wvware.sourceforge.net";
   };
diff --git a/pkgs/tools/misc/z-lua/default.nix b/pkgs/tools/misc/z-lua/default.nix
index dca8c865a812..2d8dcc30f33a 100644
--- a/pkgs/tools/misc/z-lua/default.nix
+++ b/pkgs/tools/misc/z-lua/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "z-lua";
-  version = "1.8.17";
+  version = "1.8.18";
 
   src = fetchFromGitHub {
     owner = "skywind3000";
     repo = "z.lua";
     rev = version;
-    sha256 = "sha256-zhhrRTteKv6VvTbM7ao2Z3nWRN181nqLLcOA+qi88fc=";
+    sha256 = "sha256-QSwZhdBXO+x4vcwRnZjdYdIdWW0Nfu0oImftUgm4wyo=";
   };
 
   dontBuild = true;
diff --git a/pkgs/tools/networking/6tunnel/default.nix b/pkgs/tools/networking/6tunnel/default.nix
index fbdd23f754ef..50259f827321 100644
--- a/pkgs/tools/networking/6tunnel/default.nix
+++ b/pkgs/tools/networking/6tunnel/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tunnelling for application that don't speak IPv6";
+    mainProgram = "6tunnel";
     homepage = "https://github.com/wojtekka/6tunnel";
     license = licenses.gpl2;
     maintainers = with maintainers; [ Br1ght0ne ];
diff --git a/pkgs/tools/networking/airgeddon/default.nix b/pkgs/tools/networking/airgeddon/default.nix
index cba25cae74f0..2bfe38203e8a 100644
--- a/pkgs/tools/networking/airgeddon/default.nix
+++ b/pkgs/tools/networking/airgeddon/default.nix
@@ -158,6 +158,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Multi-use TUI to audit wireless networks";
+    mainProgram = "airgeddon";
     homepage = "https://github.com/v1s1t0r1sh3r3/airgeddon";
     changelog = "https://github.com/v1s1t0r1sh3r3/airgeddon/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/networking/bwm-ng/default.nix b/pkgs/tools/networking/bwm-ng/default.nix
index cfe0d4176a6f..e594e1bae778 100644
--- a/pkgs/tools/networking/bwm-ng/default.nix
+++ b/pkgs/tools/networking/bwm-ng/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A small and simple console-based live network and disk io bandwidth monitor";
+    mainProgram = "bwm-ng";
     homepage = "http://www.gropp.org/?id=projects&sub=bwm-ng";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/cantoolz/default.nix b/pkgs/tools/networking/cantoolz/default.nix
index 1f9308b741b4..9da492340007 100644
--- a/pkgs/tools/networking/cantoolz/default.nix
+++ b/pkgs/tools/networking/cantoolz/default.nix
@@ -52,6 +52,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Black-box CAN network analysis framework";
+    mainProgram = "cantoolz";
     longDescription = ''
       CANToolz is a framework for analysing CAN networks and devices. It
       provides multiple modules that can be chained using CANToolz's pipe
diff --git a/pkgs/tools/networking/carddav-util/default.nix b/pkgs/tools/networking/carddav-util/default.nix
index e788de13df81..76e1b2656628 100644
--- a/pkgs/tools/networking/carddav-util/default.nix
+++ b/pkgs/tools/networking/carddav-util/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/ljanyst/carddav-util";
     description = "A CardDAV import/export utility";
+    mainProgram = "carddav-util.py";
     platforms = platforms.unix;
     license = licenses.isc;
   };
diff --git a/pkgs/tools/networking/cfspeedtest/default.nix b/pkgs/tools/networking/cfspeedtest/default.nix
index fcde1b580378..cb18d9ae1ed3 100644
--- a/pkgs/tools/networking/cfspeedtest/default.nix
+++ b/pkgs/tools/networking/cfspeedtest/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cfspeedtest";
-  version = "1.2.2";
+  version = "1.2.3";
 
   src = fetchFromGitHub {
     owner = "code-inflation";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-0BX9nEhSyYY/fDJHZOw0URLPIXZGRGZyXB1Tm8GX1/A=";
+    hash = "sha256-xg5jSA3J6QzqiItNV+poVxxXmKKPE7TsEYMGdKv4k+k=";
   };
 
-  cargoHash = "sha256-GNoYLps6OaA3Ubb0nG6hQfe6r52lhnIb19n1PLCsbXs=";
+  cargoHash = "sha256-ZXETP60R2121xTFqsvIFziUtKhL+ODGCpG98Mlt/zlg=";
 
   meta = with lib; {
     description = "Unofficial CLI for speed.cloudflare.com";
diff --git a/pkgs/tools/networking/cloud-custodian/default.nix b/pkgs/tools/networking/cloud-custodian/default.nix
index c5e1f7527dac..01e9d9a85722 100644
--- a/pkgs/tools/networking/cloud-custodian/default.nix
+++ b/pkgs/tools/networking/cloud-custodian/default.nix
@@ -41,6 +41,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Rules engine for cloud security, cost optimization, and governance";
+    mainProgram = "custodian";
     homepage = "https://cloudcustodian.io";
     license = licenses.asl20;
     maintainers = with maintainers; [ bhipple ];
diff --git a/pkgs/tools/networking/cmst/default.nix b/pkgs/tools/networking/cmst/default.nix
index e86ffeed9576..fd484798677c 100644
--- a/pkgs/tools/networking/cmst/default.nix
+++ b/pkgs/tools/networking/cmst/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "QT GUI for Connman with system tray icon";
+    mainProgram = "cmst";
     homepage = "https://github.com/andrew-bibb/cmst";
     maintainers = with maintainers; [ matejc romildo ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/curl-impersonate/default.nix b/pkgs/tools/networking/curl-impersonate/default.nix
index 070aab8d53f2..f4373e09b052 100644
--- a/pkgs/tools/networking/curl-impersonate/default.nix
+++ b/pkgs/tools/networking/curl-impersonate/default.nix
@@ -11,7 +11,10 @@
 , python3
 , ninja
 , perl
-, autoconf
+# autoconf-2.71 fails on problematic configure:
+#   checking curl version... 7.84.0
+#   ./configure: line 6713: syntax error near unexpected token `;;'
+, autoconf269
 , automake
 , libtool
 , darwin
@@ -40,6 +43,10 @@ let
       ./curl-impersonate-0.5.2-fix-shebangs.patch
     ];
 
+    # Disable blanket -Werror to fix build on `gcc-13` related to minor
+    # warnings on `boringssl`.
+    env.NIX_CFLAGS_COMPILE = "-Wno-error";
+
     strictDeps = true;
 
     nativeBuildInputs = lib.optionals stdenv.isDarwin [
@@ -52,7 +59,7 @@ let
       python3.pkgs.gyp
       ninja
       perl
-      autoconf
+      autoconf269
       automake
       libtool
       unzip
diff --git a/pkgs/tools/networking/dd-agent/datadog-process-agent.nix b/pkgs/tools/networking/dd-agent/datadog-process-agent.nix
index 4d1334505f32..45088be9e29b 100644
--- a/pkgs/tools/networking/dd-agent/datadog-process-agent.nix
+++ b/pkgs/tools/networking/dd-agent/datadog-process-agent.nix
@@ -4,6 +4,7 @@ datadog-agent.overrideAttrs (attrs: {
   meta = with lib;
     attrs.meta // {
       description = "Live process collector for the DataDog Agent v7";
+      mainProgram = "process-agent";
       maintainers = with maintainers; [ domenkozar ];
     };
   subPackages = [ "cmd/process-agent" ];
diff --git a/pkgs/tools/networking/ddns-go/default.nix b/pkgs/tools/networking/ddns-go/default.nix
index 720d6757da0a..c2b635c5e336 100644
--- a/pkgs/tools/networking/ddns-go/default.nix
+++ b/pkgs/tools/networking/ddns-go/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "ddns-go";
-  version = "6.2.1";
+  version = "6.2.2";
 
   src = fetchFromGitHub {
     owner = "jeessy2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-KfSOhUmV81Z8qp8MrqwJLtQ5SZgiEPbdkA1NacqpNRc=";
+    hash = "sha256-MwDwYoX1OT4TKMD2g+RBAlGfs8cz42dEFnV2b8Xzup8=";
   };
 
   vendorHash = "sha256-zUqsuph0fn1x4dwvBY0W0+S6SzS086SHya2ViNpDXGU=";
diff --git a/pkgs/tools/networking/decode-spam-headers/default.nix b/pkgs/tools/networking/decode-spam-headers/default.nix
index 8f18658b52c5..0294a45be78b 100644
--- a/pkgs/tools/networking/decode-spam-headers/default.nix
+++ b/pkgs/tools/networking/decode-spam-headers/default.nix
@@ -37,6 +37,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/mgeeky/decode-spam-headers/";
     description = "A script that helps you understand why your E-Mail ended up in Spam";
+    mainProgram = "decode-spam-headers";
     longDescription = ''
       Whether you are trying to understand why a specific e-mail ended up in
       SPAM/Junk for your daily Administrative duties or for your Red-Team
diff --git a/pkgs/tools/networking/discord-sh/default.nix b/pkgs/tools/networking/discord-sh/default.nix
index 50e84034428d..cb6821ab4bc8 100644
--- a/pkgs/tools/networking/discord-sh/default.nix
+++ b/pkgs/tools/networking/discord-sh/default.nix
@@ -42,6 +42,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Write-only command-line Discord webhook integration written in 100% Bash script";
+    mainProgram = "discord.sh";
     homepage = "https://github.com/ChaoticWeg/discord.sh";
     license = licenses.gpl3;
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/dnschef/default.nix b/pkgs/tools/networking/dnschef/default.nix
index 5dbb8980f063..2907a0f578e5 100644
--- a/pkgs/tools/networking/dnschef/default.nix
+++ b/pkgs/tools/networking/dnschef/default.nix
@@ -21,6 +21,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/iphelix/dnschef";
     description = "Highly configurable DNS proxy for penetration testers and malware analysts";
+    mainProgram = "dnschef";
     license = licenses.bsd3;
     maintainers = [ maintainers.gfrascadorio ];
   };
diff --git a/pkgs/tools/networking/dnstwist/default.nix b/pkgs/tools/networking/dnstwist/default.nix
index 1d075a75de24..9165c550eaec 100644
--- a/pkgs/tools/networking/dnstwist/default.nix
+++ b/pkgs/tools/networking/dnstwist/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Domain name permutation engine for detecting homograph phishing attacks";
+    mainProgram = "dnstwist";
     homepage = "https://github.com/elceef/dnstwist";
     changelog = "https://github.com/elceef/dnstwist/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/networking/dnsviz/default.nix b/pkgs/tools/networking/dnsviz/default.nix
index aebf7e3cd14f..b275734f8889 100644
--- a/pkgs/tools/networking/dnsviz/default.nix
+++ b/pkgs/tools/networking/dnsviz/default.nix
@@ -39,6 +39,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool suite for analyzing and visualizing DNS and DNSSEC behavior";
+    mainProgram = "dnsviz";
     longDescription = ''
       DNSViz is a tool suite for analysis and visualization of Domain Name System (DNS) behavior,
       including its security extensions (DNSSEC).
diff --git a/pkgs/tools/networking/evillimiter/default.nix b/pkgs/tools/networking/evillimiter/default.nix
index 20cc10728d60..a96151a3355f 100644
--- a/pkgs/tools/networking/evillimiter/default.nix
+++ b/pkgs/tools/networking/evillimiter/default.nix
@@ -40,6 +40,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool that monitors, analyzes and limits the bandwidth";
+    mainProgram = "evillimiter";
     longDescription = ''
       A tool to monitor, analyze and limit the bandwidth (upload/download) of
       devices on your local network without physical or administrative access.
diff --git a/pkgs/tools/networking/flannel/default.nix b/pkgs/tools/networking/flannel/default.nix
index 95dda1485ed6..03cf372e2f07 100644
--- a/pkgs/tools/networking/flannel/default.nix
+++ b/pkgs/tools/networking/flannel/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "flannel";
-  version = "0.24.3";
+  version = "0.24.4";
   rev = "v${version}";
 
-  vendorHash = "sha256-YCedMUxcME0NFEtYhLA4G1WZU8SMBvDOBZ/U7X7Tx3k=";
+  vendorHash = "sha256-meBo4KsM0qcpW/FIF32NG9MYWK945EaBpzopkmT1WMI=";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "flannel-io";
     repo = "flannel";
-    sha256 = "sha256-f6jHK0h0NVgHaWT6l+WS9P9WXVLzxxujdjXND01lLNM=";
+    sha256 = "sha256-Qw1TAkToKgDt2/GHqlsM5vyTslI0dutJlwTA5xKqbFo=";
   };
 
   ldflags = [ "-X github.com/flannel-io/flannel/pkg/version.Version=${rev}" ];
diff --git a/pkgs/tools/networking/flannel/plugin.nix b/pkgs/tools/networking/flannel/plugin.nix
index db8b89fa0bfe..0ff8e600ff44 100644
--- a/pkgs/tools/networking/flannel/plugin.nix
+++ b/pkgs/tools/networking/flannel/plugin.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "flannel CNI plugin";
+    mainProgram = "flannel";
     homepage = "https://github.com/flannel-io/cni-plugin/";
     license = licenses.asl20;
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/gandi-cli/default.nix b/pkgs/tools/networking/gandi-cli/default.nix
index d7394ac94d88..8f703320f253 100644
--- a/pkgs/tools/networking/gandi-cli/default.nix
+++ b/pkgs/tools/networking/gandi-cli/default.nix
@@ -31,6 +31,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command-line interface to the public Gandi.net API";
+    mainProgram = "gandi";
     homepage = "https://cli.gandi.net/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/networking/gmrender-resurrect/default.nix b/pkgs/tools/networking/gmrender-resurrect/default.nix
index 70ad352a6aad..70c07b4eac9b 100644
--- a/pkgs/tools/networking/gmrender-resurrect/default.nix
+++ b/pkgs/tools/networking/gmrender-resurrect/default.nix
@@ -28,6 +28,7 @@ in
 
     meta = with lib; {
       description = "Resource efficient UPnP/DLNA renderer, optimal for Raspberry Pi, CuBox or a general MediaServer";
+      mainProgram = "gmediarender";
       homepage = "https://github.com/hzeller/gmrender-resurrect";
       license = licenses.gpl2Plus;
       platforms = platforms.linux;
diff --git a/pkgs/tools/networking/gnirehtet/default.nix b/pkgs/tools/networking/gnirehtet/default.nix
index be511c756587..2281822d2e77 100644
--- a/pkgs/tools/networking/gnirehtet/default.nix
+++ b/pkgs/tools/networking/gnirehtet/default.nix
@@ -49,6 +49,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Reverse tethering over adb for Android";
+    mainProgram = "gnirehtet";
     longDescription = ''
       This project provides reverse tethering over adb for Android: it allows devices to use the internet connection of the computer they are plugged on. It does not require any root access (neither on the device nor on the computer).
 
diff --git a/pkgs/tools/networking/godns/default.nix b/pkgs/tools/networking/godns/default.nix
deleted file mode 100644
index a41d1993270b..000000000000
--- a/pkgs/tools/networking/godns/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
-, nix-update-script
-}:
-
-buildGoModule rec {
-  pname = "godns";
-  version = "3.0.7";
-
-  src = fetchFromGitHub {
-    owner = "TimothyYe";
-    repo = "godns";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-7zgvrEVt8xg54NijcqnXoZcXetzOu9h3Ucw7w03YagU=";
-  };
-
-  vendorHash = "sha256-veDrGB6gjUa8G/UyKzEgH2ItGGEPlXDePahq2XP2nAo=";
-
-  # Some tests require internet access, broken in sandbox
-  doCheck = false;
-
-  ldflags = [
-    "-s"
-    "-w"
-    "-X main.Version=${version}"
-  ];
-
-  passthru.updateScript = nix-update-script { };
-
-  meta = with lib; {
-    description = "A dynamic DNS client tool supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc";
-    homepage = "https://github.com/TimothyYe/godns";
-    changelog = "https://github.com/TimothyYe/godns/releases/tag/v${version}";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ yinfeng ];
-    mainProgram = "godns";
-  };
-}
diff --git a/pkgs/tools/networking/gost/default.nix b/pkgs/tools/networking/gost/default.nix
index 4c31ce88cbf5..2921fab6f2a9 100644
--- a/pkgs/tools/networking/gost/default.nix
+++ b/pkgs/tools/networking/gost/default.nix
@@ -2,24 +2,24 @@
 
 buildGoModule rec {
   pname = "gost";
-  version = "2.11.5";
+  version = "2.11.5-unstable-2024-02-02";
 
   src = fetchFromGitHub {
     owner = "ginuerzh";
     repo = "gost";
-    rev = "v${version}";
-    sha256 = "sha256-UBjrWeBw9+qKQ/+1T1W/3e0vrigp540URIyM2d9iCE8=";
+    rev = "fd57e80709aba9581757b1cd63b7d8f75e2385d2";
+    sha256 = "sha256-GkXsiUcH5hppgkkt4ddVMLm5riUDORVhjWBGHZXti5A=";
   };
 
   patches = [
-    # Add go1.20 support. Remove with the next release.
+    # Bump quic-go to v0.41.0 for go 1.22 compatibility.
     (fetchpatch {
-      url = "https://github.com/ginuerzh/gost/commit/0f7376bd10c913c7e6b1e7e02dd5fd7769975d78.patch";
-      hash = "sha256-pQNCvl7/huNrkM3+XHkGnvLYCzdjbMV6nef1KcMnKEw=";
+      url = "https://github.com/ginuerzh/gost/pull/1016/commits/c2e3f7e493bbb6ff1bc348f36e1a148d9d0c16ad.patch";
+      hash = "sha256-9OtuPIzzCymMAVbrDuhhPcxcac69gjAUm4ykXbH/pbo=";
     })
   ];
 
-  vendorHash = "sha256-wAdNfhSPj9JUcI6Gcja6nRy68bVhV8B4PARR0WS9rjQ=";
+  vendorHash = "sha256-mq95eHyW8XkqyLApSqVB3bv5VFSu6FuPap/mTQj8a9M=";
 
   postPatch = ''
     substituteInPlace http2_test.go \
diff --git a/pkgs/tools/networking/gp-saml-gui/default.nix b/pkgs/tools/networking/gp-saml-gui/default.nix
index 8a7ad11a2fe7..348d47b667f6 100644
--- a/pkgs/tools/networking/gp-saml-gui/default.nix
+++ b/pkgs/tools/networking/gp-saml-gui/default.nix
@@ -39,6 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Interactively authenticate to GlobalProtect VPNs that require SAML";
+    mainProgram = "gp-saml-gui";
     homepage = "https://github.com/dlenski/gp-saml-gui";
     license = licenses.gpl3Only;
     maintainers = [ maintainers.pallix ];
diff --git a/pkgs/tools/networking/haguichi/default.nix b/pkgs/tools/networking/haguichi/default.nix
index fd228c141b5d..a921884dda06 100644
--- a/pkgs/tools/networking/haguichi/default.nix
+++ b/pkgs/tools/networking/haguichi/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Graphical frontend for Hamachi on Linux";
+    mainProgram = "haguichi";
     homepage = "https://haguichi.net/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/hblock/default.nix b/pkgs/tools/networking/hblock/default.nix
index 19e7dde77c85..6615c27fe629 100644
--- a/pkgs/tools/networking/hblock/default.nix
+++ b/pkgs/tools/networking/hblock/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Improve your security and privacy by blocking ads, tracking and malware domains";
+    mainProgram = "hblock";
     homepage = "https://github.com/hectorm/hblock";
     license = licenses.mit;
     maintainers = with maintainers; [ alanpearce ];
diff --git a/pkgs/tools/networking/http-prompt/default.nix b/pkgs/tools/networking/http-prompt/default.nix
index 8fce232cdb17..02bb42800abf 100644
--- a/pkgs/tools/networking/http-prompt/default.nix
+++ b/pkgs/tools/networking/http-prompt/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "An interactive command-line HTTP client featuring autocomplete and syntax highlighting";
+    mainProgram = "http-prompt";
     homepage = "https://github.com/eliangcs/http-prompt";
     license = licenses.mit;
     maintainers = with maintainers; [ matthiasbeyer ];
diff --git a/pkgs/tools/networking/httplz/default.nix b/pkgs/tools/networking/httplz/default.nix
index 2a0f665f863a..c85c763635d3 100644
--- a/pkgs/tools/networking/httplz/default.nix
+++ b/pkgs/tools/networking/httplz/default.nix
@@ -45,6 +45,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A basic http server for hosting a folder fast and simply";
+    mainProgram = "httplz";
     homepage = "https://github.com/thecoshman/http";
     changelog = "https://github.com/thecoshman/http/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/httpstat/default.nix b/pkgs/tools/networking/httpstat/default.nix
index be4a8f2a168d..971c973ada21 100644
--- a/pkgs/tools/networking/httpstat/default.nix
+++ b/pkgs/tools/networking/httpstat/default.nix
@@ -17,6 +17,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = {
     description = "curl statistics made simple";
+    mainProgram = "httpstat";
     homepage = "https://github.com/reorx/httpstat";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ nequissimus ];
diff --git a/pkgs/tools/networking/ifwifi/default.nix b/pkgs/tools/networking/ifwifi/default.nix
index f04c3369bacf..8777df72b5e1 100644
--- a/pkgs/tools/networking/ifwifi/default.nix
+++ b/pkgs/tools/networking/ifwifi/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple wrapper over nmcli using wifiscanner made in rust";
+    mainProgram = "ifwifi";
     longDescription = ''
       In the author's words:
 
diff --git a/pkgs/tools/networking/imapsync/default.nix b/pkgs/tools/networking/imapsync/default.nix
index 0fb519ad5af7..4c2b4a36e064 100644
--- a/pkgs/tools/networking/imapsync/default.nix
+++ b/pkgs/tools/networking/imapsync/default.nix
@@ -64,6 +64,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Mail folder synchronizer between IMAP servers";
+    mainProgram = "imapsync";
     homepage = "https://imapsync.lamiral.info/";
     license = licenses.nlpl;
     maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/tools/networking/iperf3d/default.nix b/pkgs/tools/networking/iperf3d/default.nix
index 1edcaf86ed2e..eb1fa052131b 100644
--- a/pkgs/tools/networking/iperf3d/default.nix
+++ b/pkgs/tools/networking/iperf3d/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A iperf3 client and server wrapper for dynamic server ports";
+    mainProgram = "iperf3d";
     homepage = "https://github.com/wobcom/iperf3d";
     license = licenses.mit;
     maintainers = with maintainers; [ netali ] ++ teams.wdz.members;
diff --git a/pkgs/tools/networking/ipfetch/default.nix b/pkgs/tools/networking/ipfetch/default.nix
index f264deaa8a35..38d1e309bc97 100644
--- a/pkgs/tools/networking/ipfetch/default.nix
+++ b/pkgs/tools/networking/ipfetch/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Neofetch but for ip addresses";
+    mainProgram = "ipfetch";
     homepage = "https://github.com/trakBan/ipfetch";
     license = licenses.gpl3Only;
     platforms = platforms.all;
diff --git a/pkgs/tools/networking/ipgrep/default.nix b/pkgs/tools/networking/ipgrep/default.nix
index d1f5316c27b4..04f39f8d28fb 100644
--- a/pkgs/tools/networking/ipgrep/default.nix
+++ b/pkgs/tools/networking/ipgrep/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Extract, defang, resolve names and IPs from text";
+    mainProgram = "ipgrep.py";
     longDescription = ''
       ipgrep extracts possibly obfuscated host names and IP addresses
       from text, resolves host names, and prints them, sorted by ASN.
diff --git a/pkgs/tools/networking/kea/default.nix b/pkgs/tools/networking/kea/default.nix
index 574afb68e237..5bdb7bd7607b 100644
--- a/pkgs/tools/networking/kea/default.nix
+++ b/pkgs/tools/networking/kea/default.nix
@@ -87,7 +87,6 @@ stdenv.mkDerivation rec {
   passthru.tests = {
     kea = nixosTests.kea;
     prefix-delegation = nixosTests.systemd-networkd-ipv6-prefix-delegation;
-    prometheus-exporter = nixosTests.prometheus-exporters.kea;
     networking-scripted = lib.recurseIntoAttrs { inherit (nixosTests.networking.scripted) dhcpDefault dhcpSimple dhcpOneIf; };
     networking-networkd = lib.recurseIntoAttrs { inherit (nixosTests.networking.networkd) dhcpDefault dhcpSimple dhcpOneIf; };
   };
diff --git a/pkgs/tools/networking/labctl/default.nix b/pkgs/tools/networking/labctl/default.nix
index 00cb63b31d1d..921bf7c4e3bf 100644
--- a/pkgs/tools/networking/labctl/default.nix
+++ b/pkgs/tools/networking/labctl/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildGoModule
 , fetchFromGitHub
+, fetchpatch
 , installShellFiles
 }:
 
@@ -15,9 +16,18 @@ buildGoModule rec {
     hash = "sha256-84t7qhLafNyPLgHmFQUsizEn6Us44dDTercGEm9lup4=";
   };
 
+  patches = [
+    # Fix build failure with Go 1.21 by updating go4.org/unsafe/assume-no-moving-gc
+    # See https://github.com/labctl/labctl/pull/4
+    (fetchpatch {
+      url = "https://github.com/labctl/labctl/commit/615d05e94b991362beddce71c7ee34eae7fc93ff.patch";
+      hash = "sha256-4JrXSsg8rfuH6i8XyLd/qO6AibkRMDBIpfT8r1yS75c=";
+    })
+  ];
+
   nativeBuildInputs = [ installShellFiles ];
 
-  vendorHash = "sha256-vJ9aTMVwKrqjckdfCMvheTSG+gEtMLLQuBCz8Wc5blE=";
+  vendorHash = "sha256-Ycr/IZckIFysS9Goes58hhgh96UMRHjYWfWlQU23mXk=";
 
   ldflags = [
     "-X=github.com/labctl/labctl/app.version=${version}"
diff --git a/pkgs/tools/networking/linkchecker/default.nix b/pkgs/tools/networking/linkchecker/default.nix
index 018da51f7701..2adf2c8f82d1 100644
--- a/pkgs/tools/networking/linkchecker/default.nix
+++ b/pkgs/tools/networking/linkchecker/default.nix
@@ -54,6 +54,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Check websites for broken links";
+    mainProgram = "linkchecker";
     homepage = "https://linkcheck.github.io/linkchecker/";
     changelog = "https://github.com/linkchecker/linkchecker/releases/tag/v${version}";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/mbidled/default.nix b/pkgs/tools/networking/mbidled/default.nix
index 9e07d1afbe21..d37862cf8eba 100644
--- a/pkgs/tools/networking/mbidled/default.nix
+++ b/pkgs/tools/networking/mbidled/default.nix
@@ -6,15 +6,16 @@
 , libev
 , openssl
 }:
+
 stdenv.mkDerivation {
   pname = "mbidled";
-  version = "unstable-2022-10-30";
+  version = "unstable-2023-09-30";
 
   src = fetchFromGitHub {
     owner = "zsugabubus";
     repo = "mbidled";
-    rev = "b06152f015a470876b042e538804ebb1ac247c09";
-    sha256 = "sha256-eHm10onJ7v6fhvJiGXZhuN3c9cj+NoVIW2XQb2fdmuA=";
+    rev = "c724a34cc01b829b19a60655fc1652a378db7f27";
+    sha256 = "sha256-XQXLPjEEesBd+bATsKE2nvoNcuqtRA1JIsV7306CssA=";
   };
 
   preConfigure = ''
@@ -22,11 +23,13 @@ stdenv.mkDerivation {
   '';
 
   nativeBuildInputs = [
-    meson ninja
+    meson
+    ninja
   ];
 
   buildInputs = [
-    libev openssl
+    libev
+    openssl
   ];
 
   meta = with lib; {
diff --git a/pkgs/tools/networking/modemmanager/default.nix b/pkgs/tools/networking/modemmanager/default.nix
index 6c4356d04fd4..64d61f0e323c 100644
--- a/pkgs/tools/networking/modemmanager/default.nix
+++ b/pkgs/tools/networking/modemmanager/default.nix
@@ -19,6 +19,7 @@
 , vala
 , gobject-introspection
 , dbus
+, bash
 }:
 
 stdenv.mkDerivation rec {
@@ -39,6 +40,8 @@ stdenv.mkDerivation rec {
     ./no-dummy-dirs-in-sysconfdir.patch
   ];
 
+  strictDeps = true;
+
   nativeBuildInputs = [
     meson
     ninja
@@ -61,6 +64,7 @@ stdenv.mkDerivation rec {
     systemd
     bash-completion
     dbus
+    bash # shebangs in share/ModemManager/fcc-unlock.available.d/
   ];
 
   nativeInstallCheckInputs = [
diff --git a/pkgs/tools/networking/moodle-dl/default.nix b/pkgs/tools/networking/moodle-dl/default.nix
index f819fe819284..76c3e4b1a20a 100644
--- a/pkgs/tools/networking/moodle-dl/default.nix
+++ b/pkgs/tools/networking/moodle-dl/default.nix
@@ -26,6 +26,7 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/C0D3D3V/Moodle-Downloader-2";
     maintainers = [ maintainers.kmein ];
     description = "A Moodle downloader that downloads course content fast from Moodle";
+    mainProgram = "moodle-dl";
     license = licenses.gpl3Plus;
   };
 }
diff --git a/pkgs/tools/networking/mozillavpn/default.nix b/pkgs/tools/networking/mozillavpn/default.nix
index 194ac57d2cbf..4974c873894c 100644
--- a/pkgs/tools/networking/mozillavpn/default.nix
+++ b/pkgs/tools/networking/mozillavpn/default.nix
@@ -147,6 +147,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "Client for the Mozilla VPN service";
+    mainProgram = "mozillavpn";
     homepage = "https://vpn.mozilla.org/";
     license = lib.licenses.mpl20;
     maintainers = with lib.maintainers; [ andersk ];
diff --git a/pkgs/tools/networking/muffet/default.nix b/pkgs/tools/networking/muffet/default.nix
index a9fe4398afd7..3914c4af581c 100644
--- a/pkgs/tools/networking/muffet/default.nix
+++ b/pkgs/tools/networking/muffet/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "muffet";
-  version = "2.10.0";
+  version = "2.10.1";
 
   src = fetchFromGitHub {
     owner = "raviqqe";
     repo = "muffet";
     rev = "v${version}";
-    hash = "sha256-kwEHabQYAaxC8nKewc5XHZnSvUSEQRw7qg0jtJoOw9g=";
+    hash = "sha256-/LkXFY7ThPuq3RvW0NLZNRjk9kblFiztG98sTfhQuGM=";
   };
 
-  vendorHash = "sha256-GNwyQHqyfuzKnNAv5gpZFmhSq+jIHdfeceLSD9UphdA=";
+  vendorHash = "sha256-3kURSzwzM4QPCbb8C1vRb6Mr46XKNyZF0sAze5Z9xsg=";
 
   meta = with lib; {
     description = "A website link checker which scrapes and inspects all pages in a website recursively";
diff --git a/pkgs/tools/networking/mutt-ics/default.nix b/pkgs/tools/networking/mutt-ics/default.nix
index f56e688b4110..a8f3ca9d2ae6 100644
--- a/pkgs/tools/networking/mutt-ics/default.nix
+++ b/pkgs/tools/networking/mutt-ics/default.nix
@@ -15,6 +15,7 @@ with python3.pkgs; buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/dmedvinsky/mutt-ics";
     description = "A tool to show calendar event details in Mutt";
+    mainProgram = "mutt-ics";
     license = licenses.mit;
     maintainers = with maintainers; [ mh182 ];
   };
diff --git a/pkgs/tools/networking/narrowlink/default.nix b/pkgs/tools/networking/narrowlink/default.nix
index 226dd15b1c9e..9000ad282cbf 100644
--- a/pkgs/tools/networking/narrowlink/default.nix
+++ b/pkgs/tools/networking/narrowlink/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "narrowlink";
-  version = "0.2.4";
+  version = "0.2.5";
 
   src = fetchFromGitHub {
     owner = "narrowlink";
     repo = "narrowlink";
     rev = version;
-    hash = "sha256-priVl44VSxV+rCy/5H704I3CbNXDMP2BUguknl5Bguk=";
+    hash = "sha256-Ro5SfcuKy0JqSwh2HbYisE9I4BTP4o7qjEA3fU3pAuw=";
   };
 
-  cargoHash = "sha256-q15T0/2Xf8L6ZEphIjZzzcqcnkWMbv3zvBAd/Ofvnfg=";
+  cargoHash = "sha256-XHbgwqvzfnpbu2h8rbI8XsL+og0gkjQzhHzME6crmZg=";
 
   nativeBuildInputs = [
     rustPlatform.bindgenHook
diff --git a/pkgs/tools/networking/networkd-dispatcher/default.nix b/pkgs/tools/networking/networkd-dispatcher/default.nix
index 8f9cece27169..a2a03d1f8404 100644
--- a/pkgs/tools/networking/networkd-dispatcher/default.nix
+++ b/pkgs/tools/networking/networkd-dispatcher/default.nix
@@ -79,6 +79,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Dispatcher service for systemd-networkd connection status changes";
+    mainProgram = "networkd-dispatcher";
     homepage = "https://gitlab.com/craftyguy/networkd-dispatcher";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/networkd-notify/default.nix b/pkgs/tools/networking/networkd-notify/default.nix
index b80a7d450966..8a58b894d9bd 100644
--- a/pkgs/tools/networking/networkd-notify/default.nix
+++ b/pkgs/tools/networking/networkd-notify/default.nix
@@ -41,6 +41,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Desktop notification integration for systemd-networkd";
+    mainProgram = "networkd-notify";
     homepage = "https://gitlab.com/wavexx/networkd-notify";
     maintainers = with maintainers; [ danc86 ];
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/networkmanager/default.nix b/pkgs/tools/networking/networkmanager/default.nix
index 5490977df12d..c1e14dcfecb1 100644
--- a/pkgs/tools/networking/networkmanager/default.nix
+++ b/pkgs/tools/networking/networkmanager/default.nix
@@ -57,11 +57,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "networkmanager";
-  version = "1.44.2";
+  version = "1.46.0";
 
   src = fetchurl {
     url = "mirror://gnome/sources/NetworkManager/${lib.versions.majorMinor version}/NetworkManager-${version}.tar.xz";
-    sha256 = "sha256-S1i/OsV+LO+1ZS79CUXrC0vDamPZKmGrRx2LssmkIOE=";
+    hash = "sha256-ciZJ4lNiaTszQ3FHOAKnKbDsnuKDN1CWkF+GiAjnQGg=";
   };
 
   outputs = [ "out" "dev" "devdoc" "man" "doc" ];
diff --git a/pkgs/tools/networking/networkmanager/dmenu/default.nix b/pkgs/tools/networking/networkmanager/dmenu/default.nix
index d64985adbce2..56c651b68ab2 100644
--- a/pkgs/tools/networking/networkmanager/dmenu/default.nix
+++ b/pkgs/tools/networking/networkmanager/dmenu/default.nix
@@ -36,6 +36,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description  = "Small script to manage NetworkManager connections with dmenu instead of nm-applet";
+    mainProgram = "networkmanager_dmenu";
     homepage     = "https://github.com/firecat53/networkmanager-dmenu";
     license      = lib.licenses.mit;
     maintainers  = [ lib.maintainers.jensbin ];
diff --git a/pkgs/tools/networking/networkmanager/fix-install-paths.patch b/pkgs/tools/networking/networkmanager/fix-install-paths.patch
index 2b2af0b2ad46..6b5f58194c58 100644
--- a/pkgs/tools/networking/networkmanager/fix-install-paths.patch
+++ b/pkgs/tools/networking/networkmanager/fix-install-paths.patch
@@ -1,8 +1,8 @@
 diff --git a/meson.build b/meson.build
-index f71c9fd4aa..deddf28816 100644
+index 61c025b9d7..d2ae60da34 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -1022,9 +1022,9 @@ meson.add_install_script(
+@@ -1025,9 +1025,9 @@ meson.add_install_script(
    join_paths('tools', 'meson-post-install.sh'),
    nm_datadir,
    nm_bindir,
diff --git a/pkgs/tools/networking/networkmanager/fix-paths.patch b/pkgs/tools/networking/networkmanager/fix-paths.patch
index 6c97b672e679..2a1cc23e3079 100644
--- a/pkgs/tools/networking/networkmanager/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/fix-paths.patch
@@ -24,10 +24,10 @@ index f09ae86ceb..b2ecb405ef 100644
  ExecStart=@sbindir@/NetworkManager --no-daemon
  Restart=on-failure
 diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
-index 2038e2f205..90bf9fa28b 100644
+index a9e8c08508..875d6cc2cd 100644
 --- a/src/core/devices/nm-device.c
 +++ b/src/core/devices/nm-device.c
-@@ -14275,14 +14275,14 @@ nm_device_start_ip_check(NMDevice *self)
+@@ -14645,14 +14645,14 @@ nm_device_start_ip_check(NMDevice *self)
              gw = nm_l3_config_data_get_best_default_route(l3cd, AF_INET);
              if (gw) {
                  nm_inet4_ntop(NMP_OBJECT_CAST_IP4_ROUTE(gw)->gateway, buf);
@@ -45,25 +45,25 @@ index 2038e2f205..90bf9fa28b 100644
              }
          }
 diff --git a/src/libnm-client-impl/meson.build b/src/libnm-client-impl/meson.build
-index fb879dca47..13cc2867e1 100644
+index 79ac95598a..83f7ab1373 100644
 --- a/src/libnm-client-impl/meson.build
 +++ b/src/libnm-client-impl/meson.build
-@@ -173,7 +173,6 @@ if enable_introspection
-       input: libnm_core_settings_sources,
-       output: 'nm-propery-infos-' + info + '.xml',
+@@ -191,7 +191,6 @@ if enable_introspection
+       input: [gen_infos_cmd, libnm_gir[0]] + libnm_core_settings_sources,
+       output: 'nm-property-infos-' + name + '.xml',
        command: [
 -        python.path(),
-         join_paths(meson.source_root(), 'tools', 'generate-docs-nm-property-infos.py'),
-         info,
+         gen_infos_cmd,
+         name,
          '@OUTPUT@',
-@@ -230,7 +229,6 @@ if enable_introspection
-       'env',
-       'GI_TYPELIB_PATH=' + gi_typelib_path,
-       'LD_LIBRARY_PATH=' + ld_library_path,
--      python.path(),
-       join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-gir.py'),
-       '--lib-path', meson.current_build_dir(),
-       '--gir', '@INPUT@',
+@@ -207,7 +206,6 @@ if enable_introspection
+         'env',
+         'GI_TYPELIB_PATH=' + gi_typelib_path,
+         'LD_LIBRARY_PATH=' + ld_library_path,
+-        python.path(),
+         gen_gir_cmd,
+         '--lib-path', meson.current_build_dir(),
+         '--gir', libnm_gir[0],
 diff --git a/src/libnmc-base/nm-vpn-helpers.c b/src/libnmc-base/nm-vpn-helpers.c
 index cbe76f5f1c..8515f94994 100644
 --- a/src/libnmc-base/nm-vpn-helpers.c
@@ -102,25 +102,25 @@ index cbe76f5f1c..8515f94994 100644
      oc_argv[oc_argc++] = path;
      oc_argv[oc_argc++] = "--authenticate";
 diff --git a/src/libnmc-setting/meson.build b/src/libnmc-setting/meson.build
-index cf8a21fc80..61d8e140e2 100644
+index 7fb460dc33..790a2b75fc 100644
 --- a/src/libnmc-setting/meson.build
 +++ b/src/libnmc-setting/meson.build
-@@ -7,7 +7,6 @@ if enable_docs
-     input: [nm_settings_docs_xml_gir, nm_property_infos_xml['nmcli']],
+@@ -9,7 +9,6 @@ if enable_docs
+     input: [merge_cmd, nm_settings_docs_xml_gir['nmcli'], nm_property_infos_xml['nmcli']],
      output: 'settings-docs-input.xml',
      command: [
 -      python.path(),
-       join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-merge.py'),
+       merge_cmd,
        '@OUTPUT@',
        nm_property_infos_xml['nmcli'],
-@@ -20,7 +19,6 @@ if enable_docs
-     input: settings_docs_input_xml,
+@@ -23,7 +22,6 @@ if enable_docs
+     input: [gen_cmd, settings_docs_input_xml],
      output: 'settings-docs.h',
      command: [
 -      python.path(),
-       join_paths(meson.source_root(), 'tools', 'generate-docs-settings-docs.py'),
+       gen_cmd,
        '--output', '@OUTPUT@',
-       '--xml', '@INPUT@'
+       '--xml', settings_docs_input_xml
 diff --git a/src/tests/client/meson.build b/src/tests/client/meson.build
 index 8c36e40559..cfb6649a21 100644
 --- a/src/tests/client/meson.build
diff --git a/pkgs/tools/networking/networkmanager/tray.nix b/pkgs/tools/networking/networkmanager/tray.nix
index 69b1e3023b04..01725b1fb381 100644
--- a/pkgs/tools/networking/networkmanager/tray.nix
+++ b/pkgs/tools/networking/networkmanager/tray.nix
@@ -23,6 +23,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Simple Network Manager frontend written in Qt";
+    mainProgram = "nm-tray";
     homepage = "https://github.com/palinek/nm-tray";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ dtzWill ];
diff --git a/pkgs/tools/networking/nikto/default.nix b/pkgs/tools/networking/nikto/default.nix
index df03cc8c3ce7..098171de09df 100644
--- a/pkgs/tools/networking/nikto/default.nix
+++ b/pkgs/tools/networking/nikto/default.nix
@@ -57,6 +57,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Web server scanner";
+    mainProgram = "nikto";
     license = licenses.gpl2Plus;
     homepage = "https://cirt.net/Nikto2";
     changelog = "https://github.com/sullo/nikto/releases/tag/${version}";
diff --git a/pkgs/tools/networking/norouter/default.nix b/pkgs/tools/networking/norouter/default.nix
index 3513cb0cdfbc..efc50fbad2ad 100644
--- a/pkgs/tools/networking/norouter/default.nix
+++ b/pkgs/tools/networking/norouter/default.nix
@@ -27,6 +27,9 @@ buildGoModule rec {
   '';
 
   meta = with lib; {
+    # Doesn't build with Go >=1.21
+    # https://github.com/norouter/norouter/issues/165
+    broken = true;
     description = "Tool to handle unprivileged networking by using multiple loopback addresses";
     homepage = "https://github.com/norouter/norouter";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/nss-mdns/default.nix b/pkgs/tools/networking/nss-mdns/default.nix
index f0c47fe945e1..eb231f0ce036 100644
--- a/pkgs/tools/networking/nss-mdns/default.nix
+++ b/pkgs/tools/networking/nss-mdns/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
   version = "0.15.1";
 
   src = fetchFromGitHub {
-    owner = "lathiat";
+    owner = "avahi";
     repo = "nss-mdns";
     rev = "v${version}";
     hash = "sha256-iRaf9/gu9VkGi1VbGpxvC5q+0M8ivezCz/oAKEg5V1M=";
@@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
     "--enable-avahi"
     # Connect to the daemon at `/var/run/avahi-daemon/socket'.
     "--localstatedir=/var"
+    # Read configuration at `/etc/mdns.allow`, not `$out/etc/mdns.allow`.
+    "--sysconfdir=/etc"
   ];
 
   meta = {
@@ -33,7 +35,7 @@ stdenv.mkDerivation rec {
       resolution by common Unix/Linux programs in the ad-hoc mDNS
       domain `.local'.
     '';
-    homepage = "http://0pointer.de/lennart/projects/nss-mdns/";
+    homepage = "https://github.com/avahi/nss-mdns/";
     license = lib.licenses.lgpl2Plus;
     # Supports both the GNU and FreeBSD NSS.
     platforms = lib.platforms.gnu ++ lib.platforms.linux ++ lib.platforms.freebsd;
diff --git a/pkgs/tools/networking/nxdomain/default.nix b/pkgs/tools/networking/nxdomain/default.nix
index a90c7f0c23ae..2a23230ce778 100644
--- a/pkgs/tools/networking/nxdomain/default.nix
+++ b/pkgs/tools/networking/nxdomain/default.nix
@@ -22,6 +22,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/zopieux/nxdomain";
     description = "A domain (ad) block list creator";
+    mainProgram = "nxdomain";
     platforms = platforms.all;
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ zopieux ];
diff --git a/pkgs/tools/networking/nyx/default.nix b/pkgs/tools/networking/nyx/default.nix
index 844d692425b9..cb697e0f5e66 100644
--- a/pkgs/tools/networking/nyx/default.nix
+++ b/pkgs/tools/networking/nyx/default.nix
@@ -18,6 +18,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command-line monitor for Tor";
+    mainProgram = "nyx";
     homepage = "https://nyx.torproject.org/";
     license = licenses.gpl3;
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/tools/networking/nzbget/default.nix b/pkgs/tools/networking/nzbget/default.nix
index 2c698ae6c831..9a57a2e8a3b5 100644
--- a/pkgs/tools/networking/nzbget/default.nix
+++ b/pkgs/tools/networking/nzbget/default.nix
@@ -2,6 +2,7 @@
 , stdenv
 , fetchFromGitHub
 , autoreconfHook
+, boost
 , pkg-config
 , gnutls
 , libgcrypt
@@ -17,18 +18,19 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "nzbget-ng";
-  version = "21.4-rc2";
+  version = "23.0";
 
   src = fetchFromGitHub {
-    owner = "nzbget-ng";
+    owner = "nzbgetcom";
     repo = "nzbget";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-JJML5mtAog5xC7DkthCtoyn5QeC2Z+fdzSuEa/Te0Ew=";
+    hash = "sha256-JqC82zpsIqRYB7128gTSOQMWJFR/t63NJXlPgGqP0jE=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [
+    boost
     gnutls
     libgcrypt
     libpar2
@@ -49,11 +51,11 @@ stdenv.mkDerivation (finalAttrs: {
   passthru.tests = { inherit (nixosTests) nzbget; };
 
   meta = with lib; {
-    homepage = "https://nzbget-ng.github.io/";
-    changelog = "https://github.com/nzbget-ng/nzbget/releases/tag/v${finalAttrs.version}";
+    homepage = "https://nzbget.com/";
+    changelog = "https://github.com/nzbgetcom/nzbget/releases/tag/v${finalAttrs.version}";
     license = licenses.gpl2Plus;
     description = "A command line tool for downloading files from news servers";
-    maintainers = with maintainers; [ pSub ];
+    maintainers = with maintainers; [ pSub devusb ];
     platforms = with platforms; unix;
     mainProgram = "nzbget";
   };
diff --git a/pkgs/tools/networking/openresolv/default.nix b/pkgs/tools/networking/openresolv/default.nix
index e937c6bcdf60..956584bfae9a 100644
--- a/pkgs/tools/networking/openresolv/default.nix
+++ b/pkgs/tools/networking/openresolv/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A program to manage /etc/resolv.conf";
+    mainProgram = "resolvconf";
     homepage = "https://roy.marples.name/projects/openresolv";
     license = lib.licenses.bsd2;
     maintainers = [ lib.maintainers.eelco ];
diff --git a/pkgs/tools/networking/p2p/gtk-gnutella/default.nix b/pkgs/tools/networking/p2p/gtk-gnutella/default.nix
index a9708dd4713c..53622d30db48 100644
--- a/pkgs/tools/networking/p2p/gtk-gnutella/default.nix
+++ b/pkgs/tools/networking/p2p/gtk-gnutella/default.nix
@@ -58,6 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "A GTK Gnutella client, optimized for speed and scalability";
+    mainProgram = "gtk-gnutella";
     homepage = "https://gtk-gnutella.sourceforge.net/"; # Code: https://github.com/gtk-gnutella/gtk-gnutella
     changelog = "https://raw.githubusercontent.com/gtk-gnutella/gtk-gnutella/v${version}/ChangeLog";
     maintainers = [ maintainers.doronbehar ];
diff --git a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
index 3d2298e8b70e..abeabc337a15 100644
--- a/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
+++ b/pkgs/tools/networking/p2p/tahoe-lafs/default.nix
@@ -89,6 +89,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tahoe-LAFS, a decentralized, fault-tolerant, distributed storage system";
+    mainProgram = "tahoe";
     longDescription = ''
       Tahoe-LAFS is a secure, decentralized, fault-tolerant filesystem.
       This filesystem is encrypted and spread over multiple peers in
diff --git a/pkgs/tools/networking/persepolis/default.nix b/pkgs/tools/networking/persepolis/default.nix
index 35727c13e694..28d5b113c336 100644
--- a/pkgs/tools/networking/persepolis/default.nix
+++ b/pkgs/tools/networking/persepolis/default.nix
@@ -84,6 +84,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Persepolis Download Manager is a GUI for aria2";
+    mainProgram = "persepolis";
     homepage = "https://persepolisdm.github.io/";
     license = licenses.gpl3;
     maintainers = with maintainers; [ iFreilicht ];
diff --git a/pkgs/tools/networking/picosnitch/default.nix b/pkgs/tools/networking/picosnitch/default.nix
index 6007d3ec227f..c874fbf80c1b 100644
--- a/pkgs/tools/networking/picosnitch/default.nix
+++ b/pkgs/tools/networking/picosnitch/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Monitor network traffic per executable with hashing";
+    mainProgram = "picosnitch";
     homepage = "https://github.com/elesiuta/picosnitch";
     changelog = "https://github.com/elesiuta/picosnitch/releases";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/networking/pirate-get/default.nix b/pkgs/tools/networking/pirate-get/default.nix
index c1b43a00f52f..5a28858621b0 100644
--- a/pkgs/tools/networking/pirate-get/default.nix
+++ b/pkgs/tools/networking/pirate-get/default.nix
@@ -15,6 +15,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A command line interface for The Pirate Bay";
+    mainProgram = "pirate-get";
     homepage = "https://github.com/vikstrous/pirate-get";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ rnhmjoj ];
diff --git a/pkgs/tools/networking/polygon-cli/default.nix b/pkgs/tools/networking/polygon-cli/default.nix
index 75c80bd12b7d..07bfa9704557 100644
--- a/pkgs/tools/networking/polygon-cli/default.nix
+++ b/pkgs/tools/networking/polygon-cli/default.nix
@@ -25,6 +25,7 @@ python3.pkgs.buildPythonPackage rec {
 
   meta = {
     description = "Command-line tool for polygon.codeforces.com";
+    mainProgram = "polygon-cli";
     homepage = "https://github.com/kunyavskiy/polygon-cli";
     changelog = "https://github.com/kunyavskiy/polygon-cli/releases/tag/${version}";
     license = lib.licenses.mit;
diff --git a/pkgs/tools/networking/ratman/default.nix b/pkgs/tools/networking/ratman/default.nix
index a78840095d88..65f32add0f6b 100644
--- a/pkgs/tools/networking/ratman/default.nix
+++ b/pkgs/tools/networking/ratman/default.nix
@@ -87,7 +87,7 @@ rustPlatform.buildRustPackage rec {
     description = "A modular decentralised peer-to-peer packet router and associated tools";
     homepage = "https://git.irde.st/we/irdest";
     platforms = platforms.unix;
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     maintainers = with maintainers; [ spacekookie yuka ];
   };
 }
diff --git a/pkgs/tools/networking/s3cmd/default.nix b/pkgs/tools/networking/s3cmd/default.nix
index b07ea24abf9d..18aed1301355 100644
--- a/pkgs/tools/networking/s3cmd/default.nix
+++ b/pkgs/tools/networking/s3cmd/default.nix
@@ -18,6 +18,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://s3tools.org/s3cmd";
     description = "Command line tool for managing Amazon S3 and CloudFront services";
+    mainProgram = "s3cmd";
     license = licenses.gpl2;
     maintainers = [ ];
   };
diff --git a/pkgs/tools/networking/saldl/default.nix b/pkgs/tools/networking/saldl/default.nix
index b7281d3a20a7..7f1551cd85b8 100644
--- a/pkgs/tools/networking/saldl/default.nix
+++ b/pkgs/tools/networking/saldl/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "CLI downloader optimized for speed and early preview";
     homepage = "https://saldl.github.io";
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     maintainers = with maintainers; [ zowoq ];
     platforms = platforms.all;
     mainProgram = "saldl";
diff --git a/pkgs/tools/networking/sish/default.nix b/pkgs/tools/networking/sish/default.nix
index afac612d0604..3cf5b6a509ab 100644
--- a/pkgs/tools/networking/sish/default.nix
+++ b/pkgs/tools/networking/sish/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "sish";
-  version = "2.12.0";
+  version = "2.14.0";
 
   src = fetchFromGitHub {
     owner = "antoniomika";
-    repo = pname;
+    repo = "sish";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dn64M/DGnyaoEtbdeytpRsKCXQPvR+dJDI7yFt2IqU0=";
+    hash = "sha256-nDmmq8Yv+iCZPor7sLdJWqWudb3yxrllZgPH4d9mP38=";
   };
 
-  vendorHash = "sha256-P5Y5DwF9Tb9j098XiEJZaEGZhT2Ce2emnV2SawElosI=";
+  vendorHash = "sha256-4HcWD/u7aCEzQ3tYRmFwvdjPuv5eyHlCVHtxA6cBiW0=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/networking/sitespeed-io/default.nix b/pkgs/tools/networking/sitespeed-io/default.nix
index 505807129318..96d2f4dc9cb1 100644
--- a/pkgs/tools/networking/sitespeed-io/default.nix
+++ b/pkgs/tools/networking/sitespeed-io/default.nix
@@ -24,13 +24,13 @@
 assert (!withFirefox && !withChromium) -> throw "Either `withFirefox` or `withChromium` must be enabled.";
 buildNpmPackage rec {
   pname = "sitespeed-io";
-  version = "33.2.0";
+  version = "33.3.0";
 
   src = fetchFromGitHub {
     owner = "sitespeedio";
     repo = "sitespeed.io";
     rev = "v${version}";
-    hash = "sha256-GU7eQfh44zAuZ0oPb/9wGxK/+AfKvNPyuRgmEP0NaMM=";
+    hash = "sha256-voH0/F11fSMpEccyjcX3YUKaXjegJRwQwlRoa8R8sDg=";
   };
 
   nodejs = nodejs_18;
@@ -46,7 +46,7 @@ buildNpmPackage rec {
 
   dontNpmBuild = true;
   npmInstallFlags = [ "--omit=dev" ];
-  npmDepsHash = "sha256-t11JMu+MjTRsDuud/mDvLglvdcj1mlZfx67ueejdw/0=";
+  npmDepsHash = "sha256-IiDfvID3h6kBue54p6J9qpjwwO5LwKkK0fw7TNptsxA=";
 
   postInstall = ''
     mv $out/bin/sitespeed{.,-}io
diff --git a/pkgs/tools/networking/snowflake/default.nix b/pkgs/tools/networking/snowflake/default.nix
index f48824f04054..aa29bd8d11f7 100644
--- a/pkgs/tools/networking/snowflake/default.nix
+++ b/pkgs/tools/networking/snowflake/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "snowflake";
-  version = "2.9.1";
+  version = "2.9.2";
 
   src = fetchFromGitLab {
     domain = "gitlab.torproject.org";
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "anti-censorship/pluggable-transports";
     repo = "snowflake";
     rev = "v${version}";
-    sha256 = "sha256-LDr/Fzg1fC2lf7W+yTD1y5q4C2pPXZz+ZJf9sI1BxcQ=";
+    sha256 = "sha256-QyTyFz4NIuUV7g5f6qV/ujfHYZDnnZmjeBinvcWlo0U=";
   };
 
-  vendorHash = "sha256-IT2+5HmgkV6BKPEARkCZbULyVr7VDLtwGUCF22YuodA=";
+  vendorHash = "sha256-Qn8JFzrLCUrr6WGvVmaSYC7ooiMGl8iPMXkRvALho1A=";
 
   meta = with lib; {
     description = "System to defeat internet censorship";
diff --git a/pkgs/tools/networking/sockdump/default.nix b/pkgs/tools/networking/sockdump/default.nix
index 95920a91eef3..98e88d0d6f83 100644
--- a/pkgs/tools/networking/sockdump/default.nix
+++ b/pkgs/tools/networking/sockdump/default.nix
@@ -2,13 +2,13 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "sockdump";
-  version = "unstable-2023-09-16";
+  version = "unstable-2023-12-11";
 
   src = fetchFromGitHub {
     owner = "mechpen";
     repo = pname;
-    rev = "713759e383366feae76863881e851a6411c73b68";
-    hash = "sha256-q6jdwFhl2G9o2C0BVU6Xz7xizO00yaSQ2KSR/z4fixY=";
+    rev = "d40ec77e960d021861220bc14a273c5dcad13160";
+    hash = "sha256-FLK1rgWvIoFGv/6+DtDhZGeOZrn7V1jYNS3S8qwL/dc=";
   };
 
   propagatedBuildInputs = [ bcc ];
@@ -19,7 +19,8 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = src.meta // {
     description = "Dump unix domain socket traffic with bpf";
+    mainProgram = "sockdump";
     license = lib.licenses.unlicense;
-    maintainers = with lib.maintainers; [ ehmry ];
+    maintainers = with lib.maintainers; [ ehmry picnoir ];
   };
 }
diff --git a/pkgs/tools/networking/sshoogr/default.nix b/pkgs/tools/networking/sshoogr/default.nix
index e20978c277d9..abd42dcb5aa4 100644
--- a/pkgs/tools/networking/sshoogr/default.nix
+++ b/pkgs/tools/networking/sshoogr/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
     description = ''
       A Groovy-based DSL for working with remote SSH servers
     '';
+    mainProgram = "sshoogr";
     longDescription = ''
       The sshoogr (pronounced [ʃʊgə]) is a Groovy-based DSL library for working
       with remote servers through SSH. The DSL allows: connecting, executing
diff --git a/pkgs/tools/networking/swaks/default.nix b/pkgs/tools/networking/swaks/default.nix
index 471cc74d9d7f..1ca00b6beaea 100644
--- a/pkgs/tools/networking/swaks/default.nix
+++ b/pkgs/tools/networking/swaks/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://www.jetmore.org/john/code/swaks/";
     description = "A featureful, flexible, scriptable, transaction-oriented SMTP test tool";
+    mainProgram = "swaks";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [];
     platforms = platforms.all;
diff --git a/pkgs/tools/networking/telepresence/default.nix b/pkgs/tools/networking/telepresence/default.nix
index 4866cfea41ee..dee55ad5687c 100644
--- a/pkgs/tools/networking/telepresence/default.nix
+++ b/pkgs/tools/networking/telepresence/default.nix
@@ -38,6 +38,7 @@ in pythonPackages.buildPythonPackage rec {
   meta = {
     homepage = "https://www.telepresence.io/";
     description = "Local development against a remote Kubernetes or OpenShift cluster";
+    mainProgram = "telepresence";
     license = with lib.licenses; [ asl20 ];
     maintainers = with lib.maintainers; [ offline ];
   };
diff --git a/pkgs/tools/networking/termshark/default.nix b/pkgs/tools/networking/termshark/default.nix
index 84dbf7ed3311..bdca008cc94c 100644
--- a/pkgs/tools/networking/termshark/default.nix
+++ b/pkgs/tools/networking/termshark/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://termshark.io/";
     description = "A terminal UI for wireshark-cli, inspired by Wireshark";
+    mainProgram = "termshark";
     license = licenses.mit;
     maintainers = with maintainers; [ winpat ];
   };
diff --git a/pkgs/tools/networking/tinystatus/default.nix b/pkgs/tools/networking/tinystatus/default.nix
index e4e930e799a8..d58d853b5e10 100644
--- a/pkgs/tools/networking/tinystatus/default.nix
+++ b/pkgs/tools/networking/tinystatus/default.nix
@@ -50,6 +50,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "A static HTML status page generator written in pure shell";
+    mainProgram = "tinystatus";
     homepage = "https://github.com/bderenzo/tinystatus";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/tuntox/default.nix b/pkgs/tools/networking/tuntox/default.nix
index 64a13e99669a..e59a615e2627 100644
--- a/pkgs/tools/networking/tuntox/default.nix
+++ b/pkgs/tools/networking/tuntox/default.nix
@@ -71,6 +71,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tunnel TCP connections over the Tox protocol";
+    mainProgram = "tuntox";
     homepage = "https://github.com/gjedeer/tuntox";
     license = licenses.gpl3;
     maintainers = with maintainers; [
diff --git a/pkgs/tools/networking/udp2raw/default.nix b/pkgs/tools/networking/udp2raw/default.nix
index b6466ce0be57..e10db84eb49f 100644
--- a/pkgs/tools/networking/udp2raw/default.nix
+++ b/pkgs/tools/networking/udp2raw/default.nix
@@ -45,6 +45,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/wangyu-/udp2raw";
     description = "A tunnel which turns UDP traffic into encrypted UDP/FakeTCP/ICMP traffic by using a raw socket";
+    mainProgram = "udp2raw";
     license = licenses.mit;
     changelog = "https://github.com/wangyu-/udp2raw/releases/tag/${version}";
     maintainers = with maintainers; [ chvp ];
diff --git a/pkgs/tools/networking/uget-integrator/default.nix b/pkgs/tools/networking/uget-integrator/default.nix
index 2d069ea07f02..3ab9a0bafef4 100644
--- a/pkgs/tools/networking/uget-integrator/default.nix
+++ b/pkgs/tools/networking/uget-integrator/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Native messaging host to integrate uGet Download Manager with web browsers";
+    mainProgram = "uget-integrator";
     homepage = "https://github.com/ugetdm/uget-integrator";
     license = licenses.gpl3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/unbound/default.nix b/pkgs/tools/networking/unbound/default.nix
index 0c7d378eb2a0..617f5f03f1c3 100644
--- a/pkgs/tools/networking/unbound/default.nix
+++ b/pkgs/tools/networking/unbound/default.nix
@@ -51,17 +51,42 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "unbound";
-  version = "1.19.1";
+  version = "1.19.2";
 
   src = fetchurl {
     url = "https://nlnetlabs.nl/downloads/unbound/unbound-${finalAttrs.version}.tar.gz";
-    hash = "sha256-vB1Xbz3YRqBzmtxB/6pwJATGdn0rYILeufL5fLsko6k=";
+    hash = "sha256-zFYNNFc0ImwbOecadpeX5/3eImXLt3685UJwS7pInlU=";
   };
 
+
+  # Cherry pick some already merged upstream patches for configure
+  patches = [
+    # Search for protobuf-c with pkg-config
+    # https://github.com/NLnetLabs/unbound/pull/999
+    (fetchpatch {
+      url = "https://github.com/NLnetLabs/unbound/commit/59d98b9ef64e597c331c27160715d7a1b40c8638.patch";
+      hash = "sha256-DvYoYBTXOwbR8Z0GRgt724WqX3dbIEOdICU2/VMRSVQ=";
+    })
+    # Fix for previous patch
+    # https://github.com/NLnetLabs/unbound/issues/1006
+    (fetchpatch {
+      url = "https://github.com/NLnetLabs/unbound/commit/93490a0fc1bf9e62e6edcd6b69f1463c7ac410e9.patch";
+      hash = "sha256-mBo63ZlayD3YkOgIoQN0dG+xuFq/BxcjBmSo1vapiYA=";
+      excludes = [ "doc/Changelog" ];
+    })
+    # Fix for previous patch
+    # https://github.com/NLnetLabs/unbound/commit/3f5175584b0bb9ff7d417bc195ec6e4316ae58d3
+    (fetchpatch {
+      url = "https://github.com/NLnetLabs/unbound/commit/3f5175584b0bb9ff7d417bc195ec6e4316ae58d3.patch";
+      hash = "sha256-DcWfvmk+4K3c9Z+4grwzEGIkEBYNpbTK3xuBqRI33fY=";
+    })
+  ];
+
   outputs = [ "out" "lib" "man" ]; # "dev" would only split ~20 kB
 
   nativeBuildInputs =
     lib.optionals withMakeWrapper [ makeWrapper ]
+    ++ lib.optionals withDNSTAP [ protobufc ]
     ++ [ pkg-config ]
     ++ lib.optionals withPythonModule [ swig ];
 
@@ -97,7 +122,6 @@ stdenv.mkDerivation (finalAttrs: {
     "--with-libsodium=${symlinkJoin { name = "libsodium-full"; paths = [ libsodium.dev libsodium.out ]; }}"
   ] ++ lib.optionals withDNSTAP [
     "--enable-dnstap"
-    "--with-protobuf-c=${protobufc}"
   ] ++ lib.optionals withTFO [
     "--enable-tfo-client"
     "--enable-tfo-server"
diff --git a/pkgs/tools/networking/updog/default.nix b/pkgs/tools/networking/updog/default.nix
index 7fb8e0bfec37..c5cccac026ba 100644
--- a/pkgs/tools/networking/updog/default.nix
+++ b/pkgs/tools/networking/updog/default.nix
@@ -19,6 +19,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Updog is a replacement for Python's SimpleHTTPServer";
+    mainProgram = "updog";
     homepage = "https://github.com/sc0tfree/updog";
     license = licenses.mit;
     maintainers = with maintainers; [ ethancedwards8 ];
diff --git a/pkgs/tools/networking/urlwatch/default.nix b/pkgs/tools/networking/urlwatch/default.nix
index 36ad0ba77ce7..0335ed765479 100644
--- a/pkgs/tools/networking/urlwatch/default.nix
+++ b/pkgs/tools/networking/urlwatch/default.nix
@@ -46,6 +46,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A tool for monitoring webpages for updates";
+    mainProgram = "urlwatch";
     homepage = "https://thp.io/2008/urlwatch/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kmein tv ];
diff --git a/pkgs/tools/networking/v2ray/default.nix b/pkgs/tools/networking/v2ray/default.nix
index aa398dfcb9f3..0bd4f1fff80b 100644
--- a/pkgs/tools/networking/v2ray/default.nix
+++ b/pkgs/tools/networking/v2ray/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "v2ray-core";
-  version = "5.15.0";
+  version = "5.15.1";
 
   src = fetchFromGitHub {
     owner = "v2fly";
     repo = "v2ray-core";
     rev = "v${version}";
-    hash = "sha256-XxmzJfZa05Kf32Lh6FapYpQZProJyzlXoXKnDPiWqMQ=";
+    hash = "sha256-EENeJQfIKHtbh5dmWeUtnVepIGsBsXMs6Yhi/QzeRRs=";
   };
 
   # `nix-update` doesn't support `vendorHash` yet.
@@ -55,6 +55,7 @@ buildGoModule rec {
   meta = {
     homepage = "https://www.v2fly.org/en_US/";
     description = "A platform for building proxies to bypass network restrictions";
+    mainProgram = "v2ray";
     license = with lib.licenses; [ mit ];
     maintainers = with lib.maintainers; [ servalcatty ];
   };
diff --git a/pkgs/tools/networking/vpn-slice/default.nix b/pkgs/tools/networking/vpn-slice/default.nix
index 75cfe2bba0e9..0cde0170b78f 100644
--- a/pkgs/tools/networking/vpn-slice/default.nix
+++ b/pkgs/tools/networking/vpn-slice/default.nix
@@ -41,6 +41,7 @@ buildPythonApplication rec {
     homepage = "https://github.com/dlenski/vpn-slice";
     description =
       "vpnc-script replacement for easy and secure split-tunnel VPN setup";
+    mainProgram = "vpn-slice";
     license = licenses.gpl3;
     maintainers = with maintainers; [ liketechnik ];
   };
diff --git a/pkgs/tools/networking/vpnc-scripts/default.nix b/pkgs/tools/networking/vpnc-scripts/default.nix
index 7b6a760f5f00..e0319ed4bf14 100644
--- a/pkgs/tools/networking/vpnc-scripts/default.nix
+++ b/pkgs/tools/networking/vpnc-scripts/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://www.infradead.org/openconnect/";
     description = "Script for vpnc to configure the network routing and name service";
+    mainProgram = "vpnc-script";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ jerith666 ];
     platforms = platforms.linux ++ platforms.darwin;
diff --git a/pkgs/tools/networking/whatip/default.nix b/pkgs/tools/networking/whatip/default.nix
index 08979e71e35e..85a2fdf3f7b3 100644
--- a/pkgs/tools/networking/whatip/default.nix
+++ b/pkgs/tools/networking/whatip/default.nix
@@ -55,6 +55,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Info on your IP";
+    mainProgram = "whatip";
     homepage = "https://gitlab.gnome.org/GabMus/whatip";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/wifish/default.nix b/pkgs/tools/networking/wifish/default.nix
index a9e30710c1a2..7f474bc98442 100644
--- a/pkgs/tools/networking/wifish/default.nix
+++ b/pkgs/tools/networking/wifish/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/bougyman/wifish";
     description = "Simple wifi shell script for linux";
+    mainProgram = "wifish";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; linux;
diff --git a/pkgs/tools/networking/wuzz/default.nix b/pkgs/tools/networking/wuzz/default.nix
index 0ee71eb1e651..c428b40547f1 100644
--- a/pkgs/tools/networking/wuzz/default.nix
+++ b/pkgs/tools/networking/wuzz/default.nix
@@ -25,7 +25,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/asciimoo/wuzz";
     description = "Interactive cli tool for HTTP inspection";
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     maintainers = with maintainers; [ pradeepchhetri ];
     mainProgram = "wuzz";
   };
diff --git a/pkgs/tools/networking/xray/default.nix b/pkgs/tools/networking/xray/default.nix
index 2c2fce54e608..285b29f22885 100644
--- a/pkgs/tools/networking/xray/default.nix
+++ b/pkgs/tools/networking/xray/default.nix
@@ -52,6 +52,7 @@ buildGoModule rec {
 
   meta = {
     description = "A platform for building proxies to bypass network restrictions. A replacement for v2ray-core, with XTLS support and fully compatible configuration";
+    mainProgram = "xray";
     homepage = "https://github.com/XTLS/Xray-core";
     license = with lib.licenses; [ mpl20 ];
     maintainers = with lib.maintainers; [ iopq ];
diff --git a/pkgs/tools/nix/cached-nix-shell/default.nix b/pkgs/tools/nix/cached-nix-shell/default.nix
index 0cbf0f6b106d..84672a8e96a3 100644
--- a/pkgs/tools/nix/cached-nix-shell/default.nix
+++ b/pkgs/tools/nix/cached-nix-shell/default.nix
@@ -38,6 +38,7 @@ in rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Instant startup time for nix-shell";
+    mainProgram = "cached-nix-shell";
     homepage = "https://github.com/xzfc/cached-nix-shell";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = with maintainers; [ xzfc ];
diff --git a/pkgs/tools/nix/dnadd/default.nix b/pkgs/tools/nix/dnadd/default.nix
index 59a0516629e1..eccda0bd7c5f 100644
--- a/pkgs/tools/nix/dnadd/default.nix
+++ b/pkgs/tools/nix/dnadd/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/joelancaster/dnadd";
     description = "Adds packages declaratively on the command line";
+    mainProgram = "dnadd";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ joelancaster ];
   };
diff --git a/pkgs/tools/nix/nar-serve/default.nix b/pkgs/tools/nix/nar-serve/default.nix
index f2c709a2e312..98e480d4fdb9 100644
--- a/pkgs/tools/nix/nar-serve/default.nix
+++ b/pkgs/tools/nix/nar-serve/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Serve NAR file contents via HTTP";
+    mainProgram = "nar-serve";
     homepage = "https://github.com/numtide/nar-serve";
     license = licenses.mit;
     maintainers = with maintainers; [ rizary zimbatm ];
diff --git a/pkgs/tools/nix/nix-init/default.nix b/pkgs/tools/nix/nix-init/default.nix
index 1e1ef3c0d0f6..95164ba3963d 100644
--- a/pkgs/tools/nix/nix-init/default.nix
+++ b/pkgs/tools/nix/nix-init/default.nix
@@ -88,6 +88,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Command line tool to generate Nix packages from URLs";
+    mainProgram = "nix-init";
     homepage = "https://github.com/nix-community/nix-init";
     changelog = "https://github.com/nix-community/nix-init/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/tools/nix/nix-melt/default.nix b/pkgs/tools/nix/nix-melt/default.nix
index 3a0b15c8c97f..50f830cf42a0 100644
--- a/pkgs/tools/nix/nix-melt/default.nix
+++ b/pkgs/tools/nix/nix-melt/default.nix
@@ -32,6 +32,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A ranger-like flake.lock viewer";
+    mainProgram = "nix-melt";
     homepage = "https://github.com/nix-community/nix-melt";
     changelog = "https://github.com/nix-community/nix-melt/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/tools/nix/nix-query-tree-viewer/default.nix b/pkgs/tools/nix/nix-query-tree-viewer/default.nix
index a27aa8d3c3bd..03fa64545f18 100644
--- a/pkgs/tools/nix/nix-query-tree-viewer/default.nix
+++ b/pkgs/tools/nix/nix-query-tree-viewer/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "GTK viewer for the output of `nix store --query --tree`";
+    mainProgram = "nix-query-tree-viewer";
     homepage    = "https://github.com/cdepillabout/nix-query-tree-viewer";
     license     = with licenses; [ mit ];
     maintainers = with maintainers; [ cdepillabout ];
diff --git a/pkgs/tools/nix/nix-store-gcs-proxy/default.nix b/pkgs/tools/nix/nix-store-gcs-proxy/default.nix
index 166fe75766de..c83d44101b5b 100644
--- a/pkgs/tools/nix/nix-store-gcs-proxy/default.nix
+++ b/pkgs/tools/nix/nix-store-gcs-proxy/default.nix
@@ -16,6 +16,7 @@ buildGoModule rec {
 
   meta = {
     description = "A HTTP nix store that proxies requests to Google Storage";
+    mainProgram = "nix-store-gcs-proxy";
     homepage = "https://github.com/tweag/nix-store-gcs-proxy";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ zimbatm ];
diff --git a/pkgs/tools/nix/nixdoc/default.nix b/pkgs/tools/nix/nixdoc/default.nix
index 671e4891d8b1..616ee90d9a3f 100644
--- a/pkgs/tools/nix/nixdoc/default.nix
+++ b/pkgs/tools/nix/nixdoc/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Generate documentation for Nix functions";
+    mainProgram = "nixdoc";
     homepage    = "https://github.com/nix-community/nixdoc";
     license     = [ licenses.gpl3 ];
     maintainers = with maintainers; [
diff --git a/pkgs/tools/nix/nixel/default.nix b/pkgs/tools/nix/nixel/default.nix
index 5ce14a8d312f..70a0d92101d2 100644
--- a/pkgs/tools/nix/nixel/default.nix
+++ b/pkgs/tools/nix/nixel/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Lexer, Parser, Abstract Syntax Tree and Concrete Syntax Tree for the Nix Expressions Language";
+    mainProgram = "nixel";
     homepage = "https://github.com/kamadorueda/nixel";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ kamadorueda ];
diff --git a/pkgs/tools/nix/nixos-render-docs/default.nix b/pkgs/tools/nix/nixos-render-docs/default.nix
index b08abfe069f7..43a953f76d9c 100644
--- a/pkgs/tools/nix/nixos-render-docs/default.nix
+++ b/pkgs/tools/nix/nixos-render-docs/default.nix
@@ -61,6 +61,7 @@ python.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Renderer for NixOS manual and option docs";
+    mainProgram = "nixos-render-docs";
     license = licenses.mit;
     maintainers = [ ];
   };
diff --git a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/html.py b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/html.py
index 3ee10a60568d..2e43a6a2be87 100644
--- a/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/html.py
+++ b/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/html.py
@@ -181,7 +181,7 @@ class HTMLRenderer(Renderer):
         if hstyle:
             hstyle = f'style="{escape(hstyle, True)}"'
         if anchor := cast(str, token.attrs.get('id', '')):
-            anchor = f'<span id="{escape(anchor, True)}"></span>'
+            anchor = f'id="{escape(anchor, True)}"'
         result = self._close_headings(hlevel)
         tag = self._heading_tag(token, tokens, i)
         toc_fragment = self._build_toc(tokens, i)
@@ -192,8 +192,7 @@ class HTMLRenderer(Renderer):
             f' <div class="titlepage">'
             f'  <div>'
             f'   <div>'
-            f'    <{htag} class="title" {hstyle}>'
-            f'     {anchor}'
+            f'    <{htag} {anchor} class="title" {hstyle}>'
         )
     def heading_close(self, token: Token, tokens: Sequence[Token], i: int) -> str:
         heading = self._headings[-1]
diff --git a/pkgs/tools/nix/nixpkgs-lint/default.nix b/pkgs/tools/nix/nixpkgs-lint/default.nix
index 16e7582d3a92..d5e17cd46b37 100644
--- a/pkgs/tools/nix/nixpkgs-lint/default.nix
+++ b/pkgs/tools/nix/nixpkgs-lint/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A fast semantic linter for Nix using tree-sitter";
+    mainProgram = "nixpkgs-lint";
     homepage = "https://github.com/nix-community/nixpkgs-lint";
     changelog = "https://github.com/nix-community/nixpkgs-lint/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/tools/nix/npins/default.nix b/pkgs/tools/nix/npins/default.nix
index e83617da91e4..02ec39094ddf 100644
--- a/pkgs/tools/nix/npins/default.nix
+++ b/pkgs/tools/nix/npins/default.nix
@@ -33,6 +33,7 @@ in rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Simple and convenient dependency pinning for Nix";
+    mainProgram = "npins";
     homepage = "https://github.com/andir/npins";
     license = licenses.eupl12;
     maintainers = with maintainers; [ piegames ];
diff --git a/pkgs/tools/nix/rnix-hashes/default.nix b/pkgs/tools/nix/rnix-hashes/default.nix
index 4aebb35bc935..b9a98b184fb8 100644
--- a/pkgs/tools/nix/rnix-hashes/default.nix
+++ b/pkgs/tools/nix/rnix-hashes/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Nix Hash Converter";
+    mainProgram = "rnix-hashes";
     homepage = "https://github.com/numtide/rnix-hashes";
     license = licenses.asl20;
     maintainers = with maintainers; [ rizary SuperSandro2000 ];
diff --git a/pkgs/tools/nix/zon2nix/default.nix b/pkgs/tools/nix/zon2nix/default.nix
index 78b7d601906c..d3f0bd6ce54a 100644
--- a/pkgs/tools/nix/zon2nix/default.nix
+++ b/pkgs/tools/nix/zon2nix/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Convert the dependencies in `build.zig.zon` to a Nix expression";
+    mainProgram = "zon2nix";
     homepage = "https://github.com/nix-community/zon2nix";
     changelog = "https://github.com/nix-community/zon2nix/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/tools/package-management/conda/default.nix b/pkgs/tools/package-management/conda/default.nix
index 5638676838f7..57317416651a 100644
--- a/pkgs/tools/package-management/conda/default.nix
+++ b/pkgs/tools/package-management/conda/default.nix
@@ -88,6 +88,7 @@ in
 
     meta = {
       description = "Conda is a package manager for Python";
+      mainProgram = "conda-shell";
       homepage = "https://conda.io/";
       platforms = lib.platforms.linux;
       license = lib.licenses.bsd3;
diff --git a/pkgs/tools/package-management/disnix/DisnixWebService/default.nix b/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
index 461c0cacc06a..38aa1c2e261d 100644
--- a/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
+++ b/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A SOAP interface and client for Disnix";
+    mainProgram = "disnix-soap-client";
     homepage = "https://github.com/svanderburg/DisnixWebService";
     changelog = "https://github.com/svanderburg/DisnixWebService/blob/DisnixWebService-${version}/NEWS.txt";
     license = lib.licenses.mit;
diff --git a/pkgs/tools/package-management/dpkg/default.nix b/pkgs/tools/package-management/dpkg/default.nix
index b286a7b51b9f..f0f7d621414e 100644
--- a/pkgs/tools/package-management/dpkg/default.nix
+++ b/pkgs/tools/package-management/dpkg/default.nix
@@ -18,12 +18,12 @@
 
 stdenv.mkDerivation rec {
   pname = "dpkg";
-  version = "1.22.4";
+  version = "1.22.5";
 
   src = fetchgit {
     url = "https://git.launchpad.net/ubuntu/+source/dpkg";
     rev = "applied/${version}";
-    hash = "sha256-tpYSOimBd78rAthQUga/MNraWll9qEA+vRG+/F+t3mM=";
+    hash = "sha256-Rm3DacQF/0yAVtDaixPzE8IZ2Y+RZneCCVBCoYM64K4=";
   };
 
   configureFlags = [
diff --git a/pkgs/tools/package-management/gx/go/default.nix b/pkgs/tools/package-management/gx/go/default.nix
index 22f7d07537a5..dee8861d65d6 100644
--- a/pkgs/tools/package-management/gx/go/default.nix
+++ b/pkgs/tools/package-management/gx/go/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for importing go packages into gx";
+    mainProgram = "gx-go";
     homepage = "https://github.com/whyrusleeping/gx-go";
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/tools/package-management/harmonia/default.nix b/pkgs/tools/package-management/harmonia/default.nix
index 9830570a07fd..8e174cf68a89 100644
--- a/pkgs/tools/package-management/harmonia/default.nix
+++ b/pkgs/tools/package-management/harmonia/default.nix
@@ -12,32 +12,27 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "harmonia";
-  version = "0.7.4";
+  version = "0.7.5";
 
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = pname;
     rev = "refs/tags/${pname}-v${version}";
-    hash = "sha256-72JMrXmxw/FuGjqXXxMIGiAbUUOqXEERdQwch+s3iwU=";
+    hash = "sha256-QqRq5maYk4hDl0MXkj9wOPWUta5b+kXG9e/kqRorNE4=";
   };
 
-  cargoHash = "sha256-Q5Y5v7mmJpfZFGRgurTcRBRtbApFRrwqOBHdZTJbyzc=";
+  cargoHash = "sha256-dlmSn4cWU6RqEiUoQYNJFhxu3owplkxlbtszBxm+GbU=";
 
   nativeBuildInputs = [
-    pkg-config nixVersions.nix_2_19
+    pkg-config nixVersions.nix_2_21
   ];
 
   buildInputs = [
     boost
     libsodium
-    nixVersions.nix_2_19
+    nixVersions.nix_2_21
   ];
 
-  # Workaround for https://github.com/NixOS/nixpkgs/issues/166205
-  env = lib.optionalAttrs stdenv.cc.isClang {
-    NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
-  };
-
   passthru = {
     updateScript = nix-update-script {
       extraArgs = [ "--version-regex" "harmonia-v(.*)" ];
diff --git a/pkgs/tools/package-management/nix-doc/default.nix b/pkgs/tools/package-management/nix-doc/default.nix
index 2c7940b8d87d..3d0069c87dba 100644
--- a/pkgs/tools/package-management/nix-doc/default.nix
+++ b/pkgs/tools/package-management/nix-doc/default.nix
@@ -1,5 +1,17 @@
-{ lib, stdenv, rustPlatform, fetchFromGitHub, boost, nix, pkg-config }:
+{ lib
+, stdenv
+, rustPlatform
+, fetchFromGitHub
+, boost
+, nix
+, pkg-config
+# Whether to build the nix-doc plugin for Nix
+, withPlugin ? true
+}:
 
+let
+  packageFlags = [ "-p" "nix-doc" ] ++ lib.optionals withPlugin [ "-p" "nix-doc-plugin" ];
+in
 rustPlatform.buildRustPackage rec {
   pname = "nix-doc";
   version = "0.6.5";
@@ -12,17 +24,20 @@ rustPlatform.buildRustPackage rec {
   };
 
   doCheck = true;
-  buildInputs = [ boost nix ];
+  buildInputs = lib.optionals withPlugin [ boost nix ];
 
-  nativeBuildInputs = [ pkg-config nix ];
+  nativeBuildInputs = lib.optionals withPlugin [ pkg-config nix ];
+
+  cargoBuildFlags = packageFlags;
+  cargoTestFlags = packageFlags;
 
   # Packaging support for making the nix-doc plugin load cleanly as a no-op on
   # the wrong Nix version (disabling bindnow permits loading libraries
   # requiring unavailable symbols if they are unreached)
-  hardeningDisable = [ "bindnow" ];
+  hardeningDisable = lib.optionals withPlugin [ "bindnow" ];
   # Due to a Rust bug, setting -Z relro-level to anything including "off" on
   # macOS will cause link errors
-  env = lib.optionalAttrs stdenv.isLinux {
+  env = lib.optionalAttrs (withPlugin && stdenv.isLinux) {
     # nix-doc does not use nightly features, however, there is no other way to
     # set relro-level
     RUSTC_BOOTSTRAP = 1;
diff --git a/pkgs/tools/package-management/nix-du/default.nix b/pkgs/tools/package-management/nix-du/default.nix
index a3a1f0d97108..d8f2b79a4bbb 100644
--- a/pkgs/tools/package-management/nix-du/default.nix
+++ b/pkgs/tools/package-management/nix-du/default.nix
@@ -34,11 +34,6 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [ pkg-config rustPlatform.bindgenHook ];
 
-  # Workaround for https://github.com/NixOS/nixpkgs/issues/166205
-  env = lib.optionalAttrs stdenv.cc.isClang {
-    NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
-  };
-
   meta = with lib; {
     description = "A tool to determine which gc-roots take space in your nix store";
     homepage = "https://github.com/symphorien/nix-du";
diff --git a/pkgs/tools/package-management/nix-update-source/default.nix b/pkgs/tools/package-management/nix-update-source/default.nix
index 533f487e3974..13b158db81e0 100644
--- a/pkgs/tools/package-management/nix-update-source/default.nix
+++ b/pkgs/tools/package-management/nix-update-source/default.nix
@@ -51,6 +51,7 @@ python3Packages.buildPythonApplication rec {
   };
 
   meta = {
+    homepage = "https://github.com/timbertson/nix-update-source";
     description = "Utility to automate updating of nix derivation sources";
     maintainers = with lib.maintainers; [ timbertson ];
     license = lib.licenses.mit;
diff --git a/pkgs/tools/package-management/nix-update/default.nix b/pkgs/tools/package-management/nix-update/default.nix
index 8ccdd08a25e3..4320cf193cbe 100644
--- a/pkgs/tools/package-management/nix-update/default.nix
+++ b/pkgs/tools/package-management/nix-update/default.nix
@@ -9,14 +9,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "nix-update";
-  version = "1.2.0";
+  version = "1.3.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Mic92";
     repo = pname;
     rev = version;
-    hash = "sha256-/Lv4wO4mCOwk8lNdfiQq2U+PhgeEeSnh89I2N7fxEpE=";
+    hash = "sha256-Nu9/mzL/notnR6Tvtj938Mo0TmYJutA2oJ6/rg2uZCo=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 158647ca98d0..96e91b000b40 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -162,7 +162,7 @@ let
     pkg;
 
 in lib.makeExtensible (self: ({
-  nix_2_3 = (common {
+  nix_2_3 = ((common {
     version = "2.3.17";
     hash = "sha256-EK0pgHDekJFqr0oMj+8ANIjq96WPjICe2s0m4xkUdH4=";
     patches = [
@@ -170,7 +170,11 @@ in lib.makeExtensible (self: ({
       ./patches/2_3/CVE-2024-27297.patch
     ];
     maintainers = with lib.maintainers; [ flokli raitobezarius ];
-  }).override { boehmgc = boehmgc-nix_2_3; };
+  }).override { boehmgc = boehmgc-nix_2_3; }).overrideAttrs {
+    # https://github.com/NixOS/nix/issues/10222
+    # spurious test/add.sh failures
+    enableParallelChecking = false;
+  };
 
   nix_2_10 = common {
     version = "2.10.3";
diff --git a/pkgs/tools/package-management/pacman/default.nix b/pkgs/tools/package-management/pacman/default.nix
index 90252dca9cb2..e3367ef1438d 100644
--- a/pkgs/tools/package-management/pacman/default.nix
+++ b/pkgs/tools/package-management/pacman/default.nix
@@ -127,7 +127,7 @@ stdenv.mkDerivation (final: {
   meta = with lib; {
     description = "A simple library-based package manager";
     homepage = "https://archlinux.org/pacman/";
-    changelog = "https://gitlab.archlinux.org/pacman/pacman/-/raw/v${version}/NEWS";
+    changelog = "https://gitlab.archlinux.org/pacman/pacman/-/raw/v${final.version}/NEWS";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     mainProgram = "pacman";
diff --git a/pkgs/tools/package-management/wapm/cli/default.nix b/pkgs/tools/package-management/wapm/cli/default.nix
index f1feebdbb0c4..bd345ca6940d 100644
--- a/pkgs/tools/package-management/wapm/cli/default.nix
+++ b/pkgs/tools/package-management/wapm/cli/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A package manager for WebAssembly modules";
+    mainProgram = "wapm";
     homepage = "https://docs.wasmer.io/ecosystem/wapm";
     license = with licenses; [ mit ];
     maintainers = [ maintainers.lucperkins ];
diff --git a/pkgs/tools/security/2fa/default.nix b/pkgs/tools/security/2fa/default.nix
index d1d4cc42a1ff..7261eb605c08 100644
--- a/pkgs/tools/security/2fa/default.nix
+++ b/pkgs/tools/security/2fa/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://rsc.io/2fa";
     description = "Two-factor authentication on the command line";
+    mainProgram = "2fa";
     license = licenses.bsd3;
     maintainers = with maintainers; [ rvolosatovs ];
   };
diff --git a/pkgs/tools/security/acltoolkit/default.nix b/pkgs/tools/security/acltoolkit/default.nix
index 14b19e3cd7b8..b7c42c2a2574 100644
--- a/pkgs/tools/security/acltoolkit/default.nix
+++ b/pkgs/tools/security/acltoolkit/default.nix
@@ -38,6 +38,7 @@ python3.pkgs.buildPythonPackage rec {
 
   meta = with lib; {
     description = "ACL abuse swiss-knife";
+    mainProgram = "acltoolkit";
     homepage = "https://github.com/zblurx/acltoolkit";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/adenum/default.nix b/pkgs/tools/security/adenum/default.nix
index 018fd0e263fc..d547bd5c9ebc 100644
--- a/pkgs/tools/security/adenum/default.nix
+++ b/pkgs/tools/security/adenum/default.nix
@@ -40,6 +40,7 @@ python3.pkgs.buildPythonApplication {
 
   meta = with lib; {
     description = "Tool to find misconfiguration through LDAP";
+    mainProgram = "adenum";
     homepage = "https://github.com/SecuProject/ADenum";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/aesfix/default.nix b/pkgs/tools/security/aesfix/default.nix
index b2eb2e0e96ca..fed9ace264c4 100644
--- a/pkgs/tools/security/aesfix/default.nix
+++ b/pkgs/tools/security/aesfix/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Correct bit errors in an AES key schedules";
+    mainProgram = "aesfix";
     homepage = "https://citp.princeton.edu/our-work/memory/";
     maintainers = with maintainers; [ fedx-sudo ];
   };
diff --git a/pkgs/tools/security/aeskeyfind/default.nix b/pkgs/tools/security/aeskeyfind/default.nix
index 08b2481ff00d..4ce27f5eca66 100644
--- a/pkgs/tools/security/aeskeyfind/default.nix
+++ b/pkgs/tools/security/aeskeyfind/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Locates 128-bit and 256-bit AES keys in a captured memory image";
+    mainProgram = "aeskeyfind";
     homepage = "https://citp.princeton.edu/our-work/memory/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fedx-sudo ];
diff --git a/pkgs/tools/security/afl/libdislocator.nix b/pkgs/tools/security/afl/libdislocator.nix
index 400464c00567..1030ffaf9eb8 100644
--- a/pkgs/tools/security/afl/libdislocator.nix
+++ b/pkgs/tools/security/afl/libdislocator.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation {
       the odds of bumping into heap-related security bugs in
       several ways.
     '';
+    mainProgram = "get-libdislocator-so";
     license = lib.licenses.asl20;
     maintainers = with maintainers; [ ris ];
   };
diff --git a/pkgs/tools/security/age-plugin-ledger/default.nix b/pkgs/tools/security/age-plugin-ledger/default.nix
index 6ed6b526b65d..d3e1e49904ef 100644
--- a/pkgs/tools/security/age-plugin-ledger/default.nix
+++ b/pkgs/tools/security/age-plugin-ledger/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Ledger Nano plugin for age";
+    mainProgram = "age-plugin-ledger";
     homepage = "https://github.com/Ledger-Donjon/age-plugin-ledger";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ erdnaxe ];
diff --git a/pkgs/tools/security/age-plugin-tpm/default.nix b/pkgs/tools/security/age-plugin-tpm/default.nix
index 4885aa326dda..3eef366f8ea8 100644
--- a/pkgs/tools/security/age-plugin-tpm/default.nix
+++ b/pkgs/tools/security/age-plugin-tpm/default.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "TPM 2.0 plugin for age (This software is experimental, use it at your own risk)";
+    mainProgram = "age-plugin-tpm";
     homepage = "https://github.com/Foxboron/age-plugin-tpm";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/age-plugin-yubikey/default.nix b/pkgs/tools/security/age-plugin-yubikey/default.nix
index 7a3364c8420b..0942848e02e5 100644
--- a/pkgs/tools/security/age-plugin-yubikey/default.nix
+++ b/pkgs/tools/security/age-plugin-yubikey/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "YubiKey plugin for age";
+    mainProgram = "age-plugin-yubikey";
     homepage = "https://github.com/str4d/age-plugin-yubikey";
     changelog = "https://github.com/str4d/age-plugin-yubikey/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/tools/security/aide/default.nix b/pkgs/tools/security/aide/default.nix
index 0168ddc4cc90..104b5d11217a 100644
--- a/pkgs/tools/security/aide/default.nix
+++ b/pkgs/tools/security/aide/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://aide.github.io/";
     description = "A file and directory integrity checker";
+    mainProgram = "aide";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ happysalada ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/aiodnsbrute/default.nix b/pkgs/tools/security/aiodnsbrute/default.nix
index c11255e6ab80..0c2f6512d878 100644
--- a/pkgs/tools/security/aiodnsbrute/default.nix
+++ b/pkgs/tools/security/aiodnsbrute/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DNS brute force utility";
+    mainProgram = "aiodnsbrute";
     homepage = "https://github.com/blark/aiodnsbrute";
     changelog = "https://github.com/blark/aiodnsbrute/releases/tag/v${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/alterx/default.nix b/pkgs/tools/security/alterx/default.nix
index 9fcdb7378b70..a81d83d2ae31 100644
--- a/pkgs/tools/security/alterx/default.nix
+++ b/pkgs/tools/security/alterx/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast and customizable subdomain wordlist generator using DSL";
+    mainProgram = "alterx";
     homepage = "https://github.com/projectdiscovery/alterx";
     changelog = "https://github.com/projectdiscovery/alterx/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/amoco/default.nix b/pkgs/tools/security/amoco/default.nix
index fe16ad9596dd..c78cc8a60576 100644
--- a/pkgs/tools/security/amoco/default.nix
+++ b/pkgs/tools/security/amoco/default.nix
@@ -65,6 +65,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for analysing binaries";
+    mainProgram = "amoco";
     homepage = "https://github.com/bdcht/amoco";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/apachetomcatscanner/default.nix b/pkgs/tools/security/apachetomcatscanner/default.nix
index 41c68aa79792..224924721620 100644
--- a/pkgs/tools/security/apachetomcatscanner/default.nix
+++ b/pkgs/tools/security/apachetomcatscanner/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan for Apache Tomcat server vulnerabilities";
+    mainProgram = "ApacheTomcatScanner";
     homepage = "https://github.com/p0dalirius/ApacheTomcatScanner";
     changelog = "https://github.com/p0dalirius/ApacheTomcatScanner/releases/tag/${version}";
     license = with licenses; [ gpl2Only ];
diff --git a/pkgs/tools/security/argocd-vault-plugin/default.nix b/pkgs/tools/security/argocd-vault-plugin/default.nix
index 934be7d09942..b80a67792e5b 100644
--- a/pkgs/tools/security/argocd-vault-plugin/default.nix
+++ b/pkgs/tools/security/argocd-vault-plugin/default.nix
@@ -39,6 +39,7 @@ buildGoModule rec {
     homepage = "https://argocd-vault-plugin.readthedocs.io";
     changelog = "https://github.com/argoproj-labs/argocd-vault-plugin/releases/tag/v${version}";
     description = "An Argo CD plugin to retrieve secrets from Secret Management tools and inject them into Kubernetes secrets";
+    mainProgram = "argocd-vault-plugin";
     license = licenses.asl20;
     maintainers = with maintainers; [ urandom ];
   };
diff --git a/pkgs/tools/security/arti/default.nix b/pkgs/tools/security/arti/default.nix
index ef202fb69eb1..c1e1ae120f97 100644
--- a/pkgs/tools/security/arti/default.nix
+++ b/pkgs/tools/security/arti/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An implementation of Tor in Rust";
+    mainProgram = "arti";
     homepage = "https://arti.torproject.org/";
     changelog = "https://gitlab.torproject.org/tpo/core/arti/-/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/tools/security/arubaotp-seed-extractor/default.nix b/pkgs/tools/security/arubaotp-seed-extractor/default.nix
index c2ffef83635d..cd13f891cecc 100644
--- a/pkgs/tools/security/arubaotp-seed-extractor/default.nix
+++ b/pkgs/tools/security/arubaotp-seed-extractor/default.nix
@@ -40,6 +40,7 @@ python3Packages.buildPythonApplication {
   meta = with lib; {
     homepage = "https://github.com/andry08/ArubaOTP-seed-extractor";
     description = "Extract TOTP seed instead of using ArubaOTP app";
+    mainProgram = "arubaotp-seed-extractor";
     license = licenses.mit;
     maintainers = with maintainers; [ fgaz ];
   };
diff --git a/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix b/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix
index 28913c685778..3091a8c91554 100644
--- a/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix
+++ b/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/yishilin14/asc-key-to-qr-code-gif";
     description = "Convert ASCII-armored PGP keys to animated QR code";
+    mainProgram = "asc-to-gif.sh";
     platforms = platforms.unix;
     maintainers = with maintainers; [ asymmetric ];
   };
diff --git a/pkgs/tools/security/asnmap/default.nix b/pkgs/tools/security/asnmap/default.nix
index 984f5340eeeb..1c2c52fd0098 100644
--- a/pkgs/tools/security/asnmap/default.nix
+++ b/pkgs/tools/security/asnmap/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to gather network ranges using ASN information";
+    mainProgram = "asnmap";
     homepage = "https://github.com/projectdiscovery/asnmap";
     changelog = "https://github.com/projectdiscovery/asnmap/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/atomic-operator/default.nix b/pkgs/tools/security/atomic-operator/default.nix
index 6db7f0ecdd08..b93b2f809ccd 100644
--- a/pkgs/tools/security/atomic-operator/default.nix
+++ b/pkgs/tools/security/atomic-operator/default.nix
@@ -52,6 +52,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to execute Atomic Red Team tests (Atomics)";
+    mainProgram = "atomic-operator";
     homepage = "https://www.atomic-operator.com/";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/authz0/default.nix b/pkgs/tools/security/authz0/default.nix
index 04d2598fd521..2230fe2e518d 100644
--- a/pkgs/tools/security/authz0/default.nix
+++ b/pkgs/tools/security/authz0/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Automated authorization test tool";
+    mainProgram = "authz0";
     homepage = "https://github.com/hahwul/authz0";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/aws-iam-authenticator/default.nix b/pkgs/tools/security/aws-iam-authenticator/default.nix
index 73750ce03e08..3019a2593640 100644
--- a/pkgs/tools/security/aws-iam-authenticator/default.nix
+++ b/pkgs/tools/security/aws-iam-authenticator/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/kubernetes-sigs/aws-iam-authenticator";
     description = "AWS IAM credentials for Kubernetes authentication";
+    mainProgram = "aws-iam-authenticator";
     changelog = "https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ srhb ];
diff --git a/pkgs/tools/security/b2sum/default.nix b/pkgs/tools/security/b2sum/default.nix
index 581feb28ce08..1ce14a55b079 100644
--- a/pkgs/tools/security/b2sum/default.nix
+++ b/pkgs/tools/security/b2sum/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "The b2sum utility is similar to the md5sum or shasum utilities but for BLAKE2";
+    mainProgram = "b2sum";
     homepage = "https://blake2.net";
     license = with licenses; [ asl20 cc0 openssl ];
     maintainers = with maintainers; [ kirelagin ];
diff --git a/pkgs/tools/security/b3sum/default.nix b/pkgs/tools/security/b3sum/default.nix
index 94e83b5db39e..20136f377c50 100644
--- a/pkgs/tools/security/b3sum/default.nix
+++ b/pkgs/tools/security/b3sum/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "BLAKE3 cryptographic hash function";
+    mainProgram = "b3sum";
     homepage = "https://github.com/BLAKE3-team/BLAKE3/";
     maintainers = with lib.maintainers; [ fpletz ivan ];
     license = with lib.licenses; [ cc0 asl20 ];
diff --git a/pkgs/tools/security/badchars/default.nix b/pkgs/tools/security/badchars/default.nix
index 3125ff0c28c9..a6e5666c189f 100644
--- a/pkgs/tools/security/badchars/default.nix
+++ b/pkgs/tools/security/badchars/default.nix
@@ -21,6 +21,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "HEX badchar generator for different programming languages";
+    mainProgram = "badchars";
     longDescription = ''
       A HEX bad char generator to instruct encoders such as shikata-ga-nai to
       transform those to other chars.
diff --git a/pkgs/tools/security/badrobot/default.nix b/pkgs/tools/security/badrobot/default.nix
index e25e18b5ead2..ad2a0bd29750 100644
--- a/pkgs/tools/security/badrobot/default.nix
+++ b/pkgs/tools/security/badrobot/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
     homepage = "https://github.com/controlplaneio/badrobot";
     changelog = "https://github.com/controlplaneio/badrobot/blob/v${version}/CHANGELOG.md";
     description = "Operator Security Audit Tool";
+    mainProgram = "badrobot";
     longDescription = ''
       Badrobot is a Kubernetes Operator audit tool. It statically analyses
       manifests for high risk configurations such as lack of security
diff --git a/pkgs/tools/security/binbloom/default.nix b/pkgs/tools/security/binbloom/default.nix
index 0805e7b988d4..ce99de997cc0 100644
--- a/pkgs/tools/security/binbloom/default.nix
+++ b/pkgs/tools/security/binbloom/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Raw binary firmware analysis software";
+    mainProgram = "binbloom";
     homepage = "https://github.com/quarkslab/binbloom";
     license = licenses.asl20;
     maintainers = with maintainers; [ erdnaxe ];
diff --git a/pkgs/tools/security/bmrsa/11.nix b/pkgs/tools/security/bmrsa/11.nix
index 932566c65060..3ac41d2da482 100644
--- a/pkgs/tools/security/bmrsa/11.nix
+++ b/pkgs/tools/security/bmrsa/11.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "RSA utility";
+    mainProgram = "bmrsa";
     homepage = "http://bmrsa.sourceforge.net/";
     license = licenses.gpl2Only;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/boofuzz/default.nix b/pkgs/tools/security/boofuzz/default.nix
index 39b35d6944de..5c2418cad665 100644
--- a/pkgs/tools/security/boofuzz/default.nix
+++ b/pkgs/tools/security/boofuzz/default.nix
@@ -56,6 +56,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Network protocol fuzzing tool";
+    mainProgram = "boo";
     homepage = "https://github.com/jtpereyda/boofuzz";
     changelog = "https://github.com/jtpereyda/boofuzz/blob/v${version}/CHANGELOG.rst";
     license = with licenses; [ gpl2Plus ];
diff --git a/pkgs/tools/security/browserpass/default.nix b/pkgs/tools/security/browserpass/default.nix
index 1dd2a27f1ec3..b80b513b3d4b 100644
--- a/pkgs/tools/security/browserpass/default.nix
+++ b/pkgs/tools/security/browserpass/default.nix
@@ -66,6 +66,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Browserpass native client app";
+    mainProgram = "browserpass";
     homepage = "https://github.com/browserpass/browserpass-native";
     license = licenses.isc;
     maintainers = with maintainers; [ rvolosatovs infinisil ];
diff --git a/pkgs/tools/security/bruteforce-luks/default.nix b/pkgs/tools/security/bruteforce-luks/default.nix
index a6e0f3cc104b..56f827a09a4a 100644
--- a/pkgs/tools/security/bruteforce-luks/default.nix
+++ b/pkgs/tools/security/bruteforce-luks/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "Cracks passwords of LUKS encrypted volumes";
+    mainProgram = "bruteforce-luks";
     longDescription = ''
       The program tries to decrypt at least one of the key slots by trying
       all the possible passwords. It is especially useful if you know
diff --git a/pkgs/tools/security/brutespray/default.nix b/pkgs/tools/security/brutespray/default.nix
index 9b7ad8c1a666..74f49fbab41e 100644
--- a/pkgs/tools/security/brutespray/default.nix
+++ b/pkgs/tools/security/brutespray/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/x90skysn3k/brutespray";
     description = "Tool to do brute-forcing from Nmap output";
+    mainProgram = "brutespray";
     longDescription = ''
       This tool automatically attempts default credentials on found services
       directly from Nmap output.
diff --git a/pkgs/tools/security/buttercup-desktop/default.nix b/pkgs/tools/security/buttercup-desktop/default.nix
index bd83baa6db53..e38aaea42a4b 100644
--- a/pkgs/tools/security/buttercup-desktop/default.nix
+++ b/pkgs/tools/security/buttercup-desktop/default.nix
@@ -24,6 +24,7 @@ in appimageTools.wrapType2 {
 
   meta = with lib; {
     description = "Cross-Platform Passwords & Secrets Vault";
+    mainProgram = "buttercup-desktop";
     homepage = "https://buttercup.pw";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ wolfangaukang ];
diff --git a/pkgs/tools/security/cariddi/default.nix b/pkgs/tools/security/cariddi/default.nix
index 6a41ce214d1d..76a81a85431e 100644
--- a/pkgs/tools/security/cariddi/default.nix
+++ b/pkgs/tools/security/cariddi/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Crawler for URLs and endpoints";
+    mainProgram = "cariddi";
     homepage = "https://github.com/edoardottt/cariddi";
     changelog = "https://github.com/edoardottt/cariddi/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/cdxgen/default.nix b/pkgs/tools/security/cdxgen/default.nix
index f624b10952fc..351fee2ff2af 100644
--- a/pkgs/tools/security/cdxgen/default.nix
+++ b/pkgs/tools/security/cdxgen/default.nix
@@ -5,16 +5,16 @@
 
 buildNpmPackage rec {
   pname = "cdxgen";
-  version = "10.2.3";
+  version = "10.2.4";
 
   src = fetchFromGitHub {
     owner = "AppThreat";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-C/XTMOFLW2FPPi1Pgx7g5H8jtJlya5LnKmo3oF21yMI=";
+    sha256 = "sha256-fou0BfQfL66Iv+STY0JcRqu22XTgA9nSOse1LJYl3vs=";
   };
 
-  npmDepsHash = "sha256-64dKqV17WvuHjF+n1vCEfpLx6UBNpGkVE+XYi7YswgI=";
+  npmDepsHash = "sha256-ISmNasK44T21HagHKrX1LyCFVm0GF0CsTwIIi3n8h2o=";
 
   dontNpmBuild = true;
 
diff --git a/pkgs/tools/security/certdump/default.nix b/pkgs/tools/security/certdump/default.nix
index 7b5b6744b345..789f4fd57370 100644
--- a/pkgs/tools/security/certdump/default.nix
+++ b/pkgs/tools/security/certdump/default.nix
@@ -33,6 +33,7 @@ buildDotnetModule rec {
 
   meta = with lib; {
     description = "Dump certificates from PE files in different formats";
+    mainProgram = "CertDump";
     homepage = "https://github.com/secana/CertDump";
     longDescription = ''
       Cross-Platform tool to dump the signing certificate from a Portable Executable (PE) file.
diff --git a/pkgs/tools/security/certgraph/default.nix b/pkgs/tools/security/certgraph/default.nix
index da8f8358d799..3af3078d6b8b 100644
--- a/pkgs/tools/security/certgraph/default.nix
+++ b/pkgs/tools/security/certgraph/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Intelligence tool to crawl the graph of certificate alternate names";
+    mainProgram = "certgraph";
     homepage = "https://github.com/lanrat/certgraph";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/certinfo/default.nix b/pkgs/tools/security/certinfo/default.nix
index e0d2a3998a25..ea94ff3762b7 100644
--- a/pkgs/tools/security/certinfo/default.nix
+++ b/pkgs/tools/security/certinfo/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Print x509 certificate info";
+    mainProgram = "certinfo";
     homepage = "https://github.com/pete911/certinfo";
     license = licenses.mit;
     maintainers = with maintainers; [ jakuzure ];
diff --git a/pkgs/tools/security/certstrap/default.nix b/pkgs/tools/security/certstrap/default.nix
index 8808b98985f8..576176355392 100644
--- a/pkgs/tools/security/certstrap/default.nix
+++ b/pkgs/tools/security/certstrap/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tools to bootstrap CAs, certificate requests, and signed certificates";
+    mainProgram = "certstrap";
     longDescription = ''
       A simple certificate manager written in Go, to bootstrap your own
       certificate authority and public key infrastructure. Adapted from etcd-ca.
diff --git a/pkgs/tools/security/certsync/default.nix b/pkgs/tools/security/certsync/default.nix
index 15878c7826fb..e12868ac7f9c 100644
--- a/pkgs/tools/security/certsync/default.nix
+++ b/pkgs/tools/security/certsync/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "certsync";
-  version = "unstable-2023-04-14";
-  format = "pyproject";
+  version = "1.5-unstable-2024-03-08";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "zblurx";
     repo = "certsync";
-    rev = "f3c8b61f0967a6403d4c592dcbfa8921682452a6";
-    hash = "sha256-7Pzss83jf3zKmgQZki18R47OWn5VniZZ/d4N8JgZs+0=";
+    rev = "712e34c54a63537efd630561aa55dc9d35962c3f";
+    hash = "sha256-YkxEExeu3sBJ93WJGtU5oe3rDS0Ki88vAeGpE23xRwo=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
@@ -33,5 +33,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/zblurx/certsync";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "certsync";
   };
 }
diff --git a/pkgs/tools/security/cewl/default.nix b/pkgs/tools/security/cewl/default.nix
index 06d983c14e36..dc1ad37513da 100644
--- a/pkgs/tools/security/cewl/default.nix
+++ b/pkgs/tools/security/cewl/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Custom wordlist generator";
+    mainProgram = "cewl";
     homepage = "https://digi.ninja/projects/cewl.php/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ elohmeier ];
diff --git a/pkgs/tools/security/cfripper/default.nix b/pkgs/tools/security/cfripper/default.nix
index 51fa61067425..edacd10e8b05 100644
--- a/pkgs/tools/security/cfripper/default.nix
+++ b/pkgs/tools/security/cfripper/default.nix
@@ -65,6 +65,7 @@ in python.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for analysing CloudFormation templates";
+    mainProgram = "cfripper";
     homepage = "https://github.com/Skyscanner/cfripper";
     changelog = "https://github.com/Skyscanner/cfripper/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/chain-bench/default.nix b/pkgs/tools/security/chain-bench/default.nix
index 9705440dfdf8..883674951b14 100644
--- a/pkgs/tools/security/chain-bench/default.nix
+++ b/pkgs/tools/security/chain-bench/default.nix
@@ -43,6 +43,7 @@ buildGoModule rec {
     homepage = "https://github.com/aquasecurity/chain-bench";
     changelog = "https://github.com/aquasecurity/chain-bench/releases/tag/v${version}";
     description = "An open-source tool for auditing your software supply chain stack for security compliance based on a new CIS Software Supply Chain benchmark";
+    mainProgram = "chain-bench";
     longDescription = ''
       Chain-bench is an open-source tool for auditing your software supply chain
       stack for security compliance based on a new CIS Software Supply Chain
diff --git a/pkgs/tools/security/chainsaw/default.nix b/pkgs/tools/security/chainsaw/default.nix
index b939e15263da..2bc06428e781 100644
--- a/pkgs/tools/security/chainsaw/default.nix
+++ b/pkgs/tools/security/chainsaw/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Rapidly Search and Hunt through Windows Forensic Artefacts";
+    mainProgram = "chainsaw";
     homepage = "https://github.com/WithSecureLabs/chainsaw";
     changelog = "https://github.com/WithSecureLabs/chainsaw/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/cherrybomb/default.nix b/pkgs/tools/security/cherrybomb/default.nix
index 4bb975d3394c..6f8fc1d2a8e3 100644
--- a/pkgs/tools/security/cherrybomb/default.nix
+++ b/pkgs/tools/security/cherrybomb/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI tool that helps you avoid undefined user behavior by validating your API specifications";
+    mainProgram = "cherrybomb";
     homepage = "https://github.com/blst-security/cherrybomb";
     changelog = "https://github.com/blst-security/cherrybomb/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/chrome-token-signing/default.nix b/pkgs/tools/security/chrome-token-signing/default.nix
index 8081c7ef6eb5..5f9618d0f177 100644
--- a/pkgs/tools/security/chrome-token-signing/default.nix
+++ b/pkgs/tools/security/chrome-token-signing/default.nix
@@ -31,6 +31,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Chrome and Firefox extension for signing with your eID on the web";
+    mainProgram = "chrome-token-signing";
     homepage = "https://github.com/open-eid/chrome-token-signing/wiki";
     license = licenses.lgpl21;
     maintainers = [ maintainers.mmahut ];
diff --git a/pkgs/tools/security/cirrusgo/default.nix b/pkgs/tools/security/cirrusgo/default.nix
index 61c8e6b8b28f..d7301dd604bd 100644
--- a/pkgs/tools/security/cirrusgo/default.nix
+++ b/pkgs/tools/security/cirrusgo/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to scan SAAS and PAAS applications";
+    mainProgram = "cirrusgo";
     homepage = "https://github.com/Ph33rr/cirrusgo";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/clairvoyance/default.nix b/pkgs/tools/security/clairvoyance/default.nix
index ba88338347fc..ca3086047494 100644
--- a/pkgs/tools/security/clairvoyance/default.nix
+++ b/pkgs/tools/security/clairvoyance/default.nix
@@ -45,6 +45,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to obtain GraphQL API schemas";
+    mainProgram = "clairvoyance";
     homepage = "https://github.com/nikitastupin/clairvoyance";
     changelog = "https://github.com/nikitastupin/clairvoyance/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/cliam/default.nix b/pkgs/tools/security/cliam/default.nix
index 400cf8b7e7c5..1089a352d54c 100644
--- a/pkgs/tools/security/cliam/default.nix
+++ b/pkgs/tools/security/cliam/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Cloud agnostic IAM permissions enumerator";
+    mainProgram = "cliam";
     homepage = "https://github.com/securisec/cliam";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/cloudbrute/default.nix b/pkgs/tools/security/cloudbrute/default.nix
index 677c14021509..cae471ce9aec 100644
--- a/pkgs/tools/security/cloudbrute/default.nix
+++ b/pkgs/tools/security/cloudbrute/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Cloud enumeration tool";
+    mainProgram = "cloudbrute";
     longDescription = ''
       A tool to find a company (target) infrastructure, files, and apps on
       the top cloud providers (Amazon, Google, Microsoft, DigitalOcean,
diff --git a/pkgs/tools/security/cloudfox/default.nix b/pkgs/tools/security/cloudfox/default.nix
index 85777c91be09..995ee7a326a9 100644
--- a/pkgs/tools/security/cloudfox/default.nix
+++ b/pkgs/tools/security/cloudfox/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for situational awareness of cloud penetration tests";
+    mainProgram = "cloudfox";
     homepage = "https://github.com/BishopFox/cloudfox";
     changelog = "https://github.com/BishopFox/cloudfox/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/cloudhunter/default.nix b/pkgs/tools/security/cloudhunter/default.nix
index 206879d53759..7fdfa44031d1 100644
--- a/pkgs/tools/security/cloudhunter/default.nix
+++ b/pkgs/tools/security/cloudhunter/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Cloud bucket scanner";
+    mainProgram = "cloudhunter";
     homepage = "https://github.com/belane/CloudHunter";
     changelog = "https://github.com/belane/CloudHunter/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/cloudlist/default.nix b/pkgs/tools/security/cloudlist/default.nix
index fa41327a8cf5..ab849a688a29 100644
--- a/pkgs/tools/security/cloudlist/default.nix
+++ b/pkgs/tools/security/cloudlist/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for listing assets from multiple cloud providers";
+    mainProgram = "cloudlist";
     homepage = "https://github.com/projectdiscovery/cloudlist";
     changelog = "https://github.com/projectdiscovery/cloudlist/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/cmospwd/default.nix b/pkgs/tools/security/cmospwd/default.nix
index e80b7256e50c..9243afa1aad7 100644
--- a/pkgs/tools/security/cmospwd/default.nix
+++ b/pkgs/tools/security/cmospwd/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Decrypt password stored in cmos used to access BIOS SETUP";
+    mainProgram = "cmospwd";
     homepage = "https://www.cgsecurity.org/wiki/CmosPwd";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ t4ccer ];
diff --git a/pkgs/tools/security/cnquery/default.nix b/pkgs/tools/security/cnquery/default.nix
index b418d4a79a04..7fac37bd02f3 100644
--- a/pkgs/tools/security/cnquery/default.nix
+++ b/pkgs/tools/security/cnquery/default.nix
@@ -5,18 +5,18 @@
 
 buildGoModule rec {
   pname = "cnquery";
-  version = "10.2.0";
+  version = "10.8.4";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnquery";
     rev = "v${version}";
-    hash = "sha256-bz4a4+mgssrRBthkN87aYxlZV6as2uocFvBKrKLmy8A=";
+    hash = "sha256-YzoUl7dfmJpTAdJq2o8DrgRKvRoLcyIWiLUD7e7UOMk=";
   };
 
   subPackages = [ "apps/cnquery" ];
 
-  vendorHash = "sha256-vq6R2FgvoET8SLTpktGLoFzZHqnmizDp0fWU7kqlLgU=";
+  vendorHash = "sha256-FWPhKDndu+QNxERYc3aQCKAYiSR0BTrZOd3ZW8aG4HU=";
 
   meta = with lib; {
     description = "cloud-native, graph-based asset inventory";
diff --git a/pkgs/tools/security/cnspec/default.nix b/pkgs/tools/security/cnspec/default.nix
index b02e670666bf..b37f05e779cc 100644
--- a/pkgs/tools/security/cnspec/default.nix
+++ b/pkgs/tools/security/cnspec/default.nix
@@ -5,18 +5,18 @@
 
 buildGoModule rec {
   pname = "cnspec";
-  version = "10.7.3";
+  version = "10.8.4";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnspec";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TFwMquMyHnUGyHGKBrialsDKL5Mubsop1Sudyu/IGjE=";
+    hash = "sha256-emY8y+OKk052o5LGhHMra7CTpbmS/U+5sjWIYR7DRsA=";
   };
 
   proxyVendor = true;
 
-  vendorHash = "sha256-+hlJqcX3cGo/ej5HPPZBZCTUHvB9+/iPTebNKdokLQ0=";
+  vendorHash = "sha256-W39Ccc5UU+K+W/h/R1vrB1lcJXKZs8gbfxmb99vGEfM=";
 
   subPackages = [
     "apps/cnspec"
diff --git a/pkgs/tools/security/coercer/default.nix b/pkgs/tools/security/coercer/default.nix
index f380d130bb07..e0d921e62e2d 100644
--- a/pkgs/tools/security/coercer/default.nix
+++ b/pkgs/tools/security/coercer/default.nix
@@ -41,6 +41,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to automatically coerce a Windows server";
+    mainProgram = "coercer";
     homepage = "https://github.com/p0dalirius/Coercer";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/commix/default.nix b/pkgs/tools/security/commix/default.nix
index b4c16376d8da..6197b59172ca 100644
--- a/pkgs/tools/security/commix/default.nix
+++ b/pkgs/tools/security/commix/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Automated Command Injection Exploitation Tool";
+    mainProgram = "commix";
     homepage = "https://github.com/commixproject/commix";
     changelog = "https://github.com/commixproject/commix/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/cosign/default.nix b/pkgs/tools/security/cosign/default.nix
index 072b8e4ffb52..f2b9a5ed254d 100644
--- a/pkgs/tools/security/cosign/default.nix
+++ b/pkgs/tools/security/cosign/default.nix
@@ -72,6 +72,7 @@ buildGoModule rec {
     homepage = "https://github.com/sigstore/cosign";
     changelog = "https://github.com/sigstore/cosign/releases/tag/v${version}";
     description = "Container Signing CLI with support for ephemeral keys and Sigstore signing";
+    mainProgram = "cosign";
     license = licenses.asl20;
     maintainers = with maintainers; [ lesuisse jk developer-guy ];
   };
diff --git a/pkgs/tools/security/coze/default.nix b/pkgs/tools/security/coze/default.nix
index 5fbd906fd87e..ca7b8f3d1d7e 100644
--- a/pkgs/tools/security/coze/default.nix
+++ b/pkgs/tools/security/coze/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI client for Coze, a cryptographic JSON messaging specification";
+    mainProgram = "coze";
     homepage = "https://github.com/Cyphrme/coze_cli";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ qbit ];
diff --git a/pkgs/tools/security/crackql/default.nix b/pkgs/tools/security/crackql/default.nix
index 6a8e95ec57f2..cb3ecc1cb0a7 100644
--- a/pkgs/tools/security/crackql/default.nix
+++ b/pkgs/tools/security/crackql/default.nix
@@ -35,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "GraphQL password brute-force and fuzzing utility";
+    mainProgram = "crackql";
     homepage = "https://github.com/nicholasaleks/CrackQL";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/crackxls/default.nix b/pkgs/tools/security/crackxls/default.nix
index f3c1745321eb..7ff6de5deff0 100644
--- a/pkgs/tools/security/crackxls/default.nix
+++ b/pkgs/tools/security/crackxls/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/GavinSmith0123/crackxls2003/";
     description = "Used to break the encryption on old Microsoft Excel and Microsoft Word files";
+    mainProgram = "crackxls2003";
     platforms = platforms.linux;
     license = licenses.gpl3;
   };
diff --git a/pkgs/tools/security/credential-detector/default.nix b/pkgs/tools/security/credential-detector/default.nix
index fd3e40b6536c..1297d158efe5 100644
--- a/pkgs/tools/security/credential-detector/default.nix
+++ b/pkgs/tools/security/credential-detector/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to detect potentially hard-coded credentials";
+    mainProgram = "credential-detector";
     homepage = "https://github.com/ynori7/credential-detector";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/creds/default.nix b/pkgs/tools/security/creds/default.nix
index 2f2962616d7c..ed34ad0df7c2 100644
--- a/pkgs/tools/security/creds/default.nix
+++ b/pkgs/tools/security/creds/default.nix
@@ -35,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to search a collection of default credentials";
+    mainProgram = "creds";
     homepage = "https://github.com/ihebski/DefaultCreds-cheat-sheet";
     changelog = "https://github.com/ihebski/DefaultCreds-cheat-sheet/releases/tag/creds-${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/credslayer/default.nix b/pkgs/tools/security/credslayer/default.nix
index 7d9d67577930..f09a86bc613a 100644
--- a/pkgs/tools/security/credslayer/default.nix
+++ b/pkgs/tools/security/credslayer/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Extract credentials and other useful info from network captures";
+    mainProgram = "credslayer";
     homepage = "https://github.com/ShellCode33/CredSLayer";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/crlfsuite/default.nix b/pkgs/tools/security/crlfsuite/default.nix
index bc375f03c0c4..dfd1c7098c2f 100644
--- a/pkgs/tools/security/crlfsuite/default.nix
+++ b/pkgs/tools/security/crlfsuite/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CRLF injection (HTTP Response Splitting) scanner";
+    mainProgram = "crlfsuite";
     homepage = "https://github.com/Nefcore/CRLFsuite";
     license = licenses.mit;
     maintainers = with maintainers; [ c0bw3b fab ];
diff --git a/pkgs/tools/security/crlfuzz/default.nix b/pkgs/tools/security/crlfuzz/default.nix
index f28f96e5f4cd..ab2ee1e7a46e 100644
--- a/pkgs/tools/security/crlfuzz/default.nix
+++ b/pkgs/tools/security/crlfuzz/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to scan for CRLF vulnerability";
+    mainProgram = "crlfuzz";
     homepage = "https://github.com/dwisiswant0/crlfuzz";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/crowbar/default.nix b/pkgs/tools/security/crowbar/default.nix
index e58f77457de2..095004ab76df 100644
--- a/pkgs/tools/security/crowbar/default.nix
+++ b/pkgs/tools/security/crowbar/default.nix
@@ -36,6 +36,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/galkan/crowbar";
     description = "A brute forcing tool that can be used during penetration tests";
+    mainProgram = "crowbar";
     license = licenses.mit;
     maintainers = with maintainers; [ pamplemousse ];
   };
diff --git a/pkgs/tools/security/crunch/default.nix b/pkgs/tools/security/crunch/default.nix
index d287fb32fb67..146a67605847 100644
--- a/pkgs/tools/security/crunch/default.nix
+++ b/pkgs/tools/security/crunch/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Wordlist generator";
+    mainProgram = "crunch";
     homepage = "https://sourceforge.net/projects/crunch-wordlist/";
     platforms = platforms.unix;
     license = with licenses; [ gpl2Only ];
diff --git a/pkgs/tools/security/cryptomator/default.nix b/pkgs/tools/security/cryptomator/default.nix
index 85ce0c879792..39654ae0ceaf 100644
--- a/pkgs/tools/security/cryptomator/default.nix
+++ b/pkgs/tools/security/cryptomator/default.nix
@@ -85,6 +85,7 @@ mavenJdk.buildMavenPackage rec {
 
   meta = with lib; {
     description = "Free client-side encryption for your cloud files";
+    mainProgram = "cryptomator";
     homepage = "https://cryptomator.org";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/tools/security/decoder/default.nix b/pkgs/tools/security/decoder/default.nix
index 76dd3003d500..1463e132bb72 100644
--- a/pkgs/tools/security/decoder/default.nix
+++ b/pkgs/tools/security/decoder/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/PeterPawn/decoder";
     description = ''"secrets" decoding for FRITZ!OS devices'';
+    mainProgram = "decoder";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ Luflosi ];
diff --git a/pkgs/tools/security/deepsecrets/default.nix b/pkgs/tools/security/deepsecrets/default.nix
index c509311f3a6d..4fa86da7f913 100644
--- a/pkgs/tools/security/deepsecrets/default.nix
+++ b/pkgs/tools/security/deepsecrets/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Secrets scanner that understands code";
+    mainProgram = "deepsecrets";
     homepage = "https://github.com/avito-tech/deepsecrets";
     changelog = "https://github.com/avito-tech/deepsecrets/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/dieharder/default.nix b/pkgs/tools/security/dieharder/default.nix
index 51370ad8dcc2..716b3266faee 100644
--- a/pkgs/tools/security/dieharder/default.nix
+++ b/pkgs/tools/security/dieharder/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A Random Number Generator test suite";
+    mainProgram = "dieharder";
     homepage = "https://webhome.phy.duke.edu/~rgb/General/dieharder.php";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ zhaofengli ];
diff --git a/pkgs/tools/security/dirstalk/default.nix b/pkgs/tools/security/dirstalk/default.nix
index 1397a0b8aa9e..d0cdc4b48134 100644
--- a/pkgs/tools/security/dirstalk/default.nix
+++ b/pkgs/tools/security/dirstalk/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to brute force paths on web servers";
+    mainProgram = "dirstalk";
     homepage = "https://github.com/stefanoj3/dirstalk";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/dismap/default.nix b/pkgs/tools/security/dismap/default.nix
index 52e046aa80c1..d80e853dae62 100644
--- a/pkgs/tools/security/dismap/default.nix
+++ b/pkgs/tools/security/dismap/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Asset discovery and identification tools";
+    mainProgram = "dismap";
     homepage = "https://github.com/zhzyker/dismap";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/dnsenum/default.nix b/pkgs/tools/security/dnsenum/default.nix
index a24fc96621f1..826ebec015e4 100644
--- a/pkgs/tools/security/dnsenum/default.nix
+++ b/pkgs/tools/security/dnsenum/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/fwaeytens/dnsenum";
     description = "A tool to enumerate DNS information";
+    mainProgram = "dnsenum";
     maintainers = with maintainers; [ c0bw3b ];
     license = licenses.gpl2Plus;
     platforms = platforms.all;
diff --git a/pkgs/tools/security/dnspeep/default.nix b/pkgs/tools/security/dnspeep/default.nix
index 978ec5ed2f8b..73edd9724a0a 100644
--- a/pkgs/tools/security/dnspeep/default.nix
+++ b/pkgs/tools/security/dnspeep/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Spy on the DNS queries your computer is making";
+    mainProgram = "dnspeep";
     homepage = "https://github.com/jvns/dnspeep";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/security/dnsrecon/default.nix b/pkgs/tools/security/dnsrecon/default.nix
index 65fae4928c6f..4fdbad950ab0 100644
--- a/pkgs/tools/security/dnsrecon/default.nix
+++ b/pkgs/tools/security/dnsrecon/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DNS Enumeration script";
+    mainProgram = "dnsrecon";
     homepage = "https://github.com/darkoperator/dnsrecon";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ c0bw3b fab ];
diff --git a/pkgs/tools/security/doas/default.nix b/pkgs/tools/security/doas/default.nix
index 03268bc98479..2864a1edcf4d 100644
--- a/pkgs/tools/security/doas/default.nix
+++ b/pkgs/tools/security/doas/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Executes the given command as another user";
+    mainProgram = "doas";
     homepage = "https://github.com/Duncaen/OpenDoas";
     license = licenses.isc;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/dontgo403/default.nix b/pkgs/tools/security/dontgo403/default.nix
index 84e7667377b7..7fab0dac0425 100644
--- a/pkgs/tools/security/dontgo403/default.nix
+++ b/pkgs/tools/security/dontgo403/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "dontgo403";
-  version = "1.0.0";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "devploit";
     repo = "dontgo403";
     rev = "refs/tags/${version}";
-    hash = "sha256-znmPXue+pzv7vAKnIYsjJQQGMeBETH+ekyVKGz9wRik=";
+    hash = "sha256-qA1i8l2oBQQ5IF8ho3K2k+TAndUTFGwb2NfhyFqfKzU=";
   };
 
   vendorHash = "sha256-IGnTbuaQH8A6aKyahHMd2RyFRh4WxZ3Vx/A9V3uelRg=";
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to bypass 40X response codes";
+    mainProgram = "nomore403";
     homepage = "https://github.com/devploit/dontgo403";
     changelog = "https://github.com/devploit/dontgo403/releases/tag/${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/doona/default.nix b/pkgs/tools/security/doona/default.nix
index e0f459ad7453..2598f2ecbb96 100644
--- a/pkgs/tools/security/doona/default.nix
+++ b/pkgs/tools/security/doona/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/wireghoul/doona";
     description = "A fork of the Bruteforce Exploit Detector Tool (BED)";
+    mainProgram = "doona";
     longDescription = ''
       A fork of the Bruteforce Exploit Detector Tool (BED).
       BED is a program which is designed to check daemons for potential buffer overflows, format string bugs etc.
diff --git a/pkgs/tools/security/doppler/default.nix b/pkgs/tools/security/doppler/default.nix
index 4707240857fc..1e860abc57cd 100644
--- a/pkgs/tools/security/doppler/default.nix
+++ b/pkgs/tools/security/doppler/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "The official CLI for interacting with your Doppler Enclave secrets and configuration";
+    mainProgram = "doppler";
     homepage = "https://doppler.com";
     license = licenses.asl20;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/tools/security/dorkscout/default.nix b/pkgs/tools/security/dorkscout/default.nix
index e5b5057c6089..57ba965033bb 100644
--- a/pkgs/tools/security/dorkscout/default.nix
+++ b/pkgs/tools/security/dorkscout/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to automate the work with Google dorks";
+    mainProgram = "dorkscout";
     homepage = "https://github.com/R4yGM/dorkscout";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/earlybird/default.nix b/pkgs/tools/security/earlybird/default.nix
index c7cb35fe335c..d5f001fc995a 100644
--- a/pkgs/tools/security/earlybird/default.nix
+++ b/pkgs/tools/security/earlybird/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A sensitive data detection tool capable of scanning source code repositories for passwords, key files, and more";
+    mainProgram = "earlybird";
     homepage = "https://github.com/americanexpress/earlybird";
     changelog = "https://github.com/americanexpress/earlybird/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/ec2stepshell/default.nix b/pkgs/tools/security/ec2stepshell/default.nix
index ff6ee22b08eb..6b5031ffebe2 100644
--- a/pkgs/tools/security/ec2stepshell/default.nix
+++ b/pkgs/tools/security/ec2stepshell/default.nix
@@ -38,6 +38,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "AWS post-exploitation tool";
+    mainProgram = "ec2stepshell";
     homepage = "https://github.com/saw-your-packet/EC2StepShell";
     changelog = "https://github.com/saw-your-packet/EC2StepShell/blob/${version}/CHANGELOG.txt";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ecdsatool/default.nix b/pkgs/tools/security/ecdsatool/default.nix
index 0498b758c1d3..aa55facfd8e0 100644
--- a/pkgs/tools/security/ecdsatool/default.nix
+++ b/pkgs/tools/security/ecdsatool/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Create and manipulate ECC NISTP256 keypairs";
+    mainProgram = "ecdsatool";
     homepage = "https://github.com/kaniini/ecdsatool/";
     license = with licenses; [free];
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/enc/default.nix b/pkgs/tools/security/enc/default.nix
index ffacccf6a311..c5f4d62586c5 100644
--- a/pkgs/tools/security/enc/default.nix
+++ b/pkgs/tools/security/enc/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
     homepage = "https://github.com/life4/enc";
     changelog = "https://github.com/life4/enc/releases/tag/v${version}";
     description = "A modern and friendly alternative to GnuPG";
+    mainProgram = "enc";
     longDescription = ''
       Enc is a CLI tool for encryption, a modern and friendly alternative to GnuPG.
       It is easy to use, secure by default and can encrypt and decrypt files using password or encryption keys,
diff --git a/pkgs/tools/security/enchive/default.nix b/pkgs/tools/security/enchive/default.nix
index 960ef251b1cd..8db8f466f9ae 100644
--- a/pkgs/tools/security/enchive/default.nix
+++ b/pkgs/tools/security/enchive/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Encrypted personal archives";
+    mainProgram = "enchive";
     homepage = "https://github.com/skeeto/enchive";
     license = lib.licenses.unlicense;
     platforms = lib.platforms.unix;
diff --git a/pkgs/tools/security/enum4linux-ng/default.nix b/pkgs/tools/security/enum4linux-ng/default.nix
index d30bcbf665d4..ee3ed2e8154d 100644
--- a/pkgs/tools/security/enum4linux-ng/default.nix
+++ b/pkgs/tools/security/enum4linux-ng/default.nix
@@ -30,6 +30,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Windows/Samba enumeration tool";
+    mainProgram = "enum4linux-ng";
     longDescription = ''
       enum4linux-ng.py is a rewrite of Mark Lowe's enum4linux.pl, a tool for
       enumerating information from Windows and Samba systems.
diff --git a/pkgs/tools/security/enum4linux/default.nix b/pkgs/tools/security/enum4linux/default.nix
index b6da742dc6fa..dd054b58caa5 100644
--- a/pkgs/tools/security/enum4linux/default.nix
+++ b/pkgs/tools/security/enum4linux/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A tool for enumerating information from Windows and Samba systems";
+    mainProgram = "enum4linux";
     homepage = "https://labs.portcullis.co.uk/tools/enum4linux/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ fishi0x01 ];
diff --git a/pkgs/tools/security/enumerepo/default.nix b/pkgs/tools/security/enumerepo/default.nix
index 31ff035950bd..3c6849af44ff 100644
--- a/pkgs/tools/security/enumerepo/default.nix
+++ b/pkgs/tools/security/enumerepo/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to list all public repositories for (valid) GitHub usernames";
+    mainProgram = "enumerepo";
     homepage = "https://github.com/trickest/enumerepo";
     changelog = "https://github.com/trickest/enumerepo/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/evil-winrm/default.nix b/pkgs/tools/security/evil-winrm/default.nix
index 30420c7aad68..ab406caafb65 100644
--- a/pkgs/tools/security/evil-winrm/default.nix
+++ b/pkgs/tools/security/evil-winrm/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "WinRM shell for hacking/pentesting";
+    mainProgram = "evil-winrm";
     homepage = "https://github.com/Hackplayers/evil-winrm";
     changelog = "https://github.com/Hackplayers/evil-winrm/blob/v${version}/CHANGELOG.md";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/tools/security/evtx/default.nix b/pkgs/tools/security/evtx/default.nix
index e12408d22752..92f8a29cf820 100644
--- a/pkgs/tools/security/evtx/default.nix
+++ b/pkgs/tools/security/evtx/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Parser for the Windows XML Event Log (EVTX) format";
+    mainProgram = "evtx_dump";
     homepage = "https://github.com/omerbenamram/evtx";
     changelog = "https://github.com/omerbenamram/evtx/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/tools/security/expliot/default.nix b/pkgs/tools/security/expliot/default.nix
index 1414d7c36afd..88fd1cf84b61 100644
--- a/pkgs/tools/security/expliot/default.nix
+++ b/pkgs/tools/security/expliot/default.nix
@@ -71,6 +71,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "IoT security testing and exploitation framework";
+    mainProgram = "expliot";
     longDescription = ''
       EXPLIoT is a Framework for security testing and exploiting IoT
       products and IoT infrastructure. It provides a set of plugins
diff --git a/pkgs/tools/security/exploitdb/default.nix b/pkgs/tools/security/exploitdb/default.nix
index fd6e08ad5f0a..9b971e958aa2 100644
--- a/pkgs/tools/security/exploitdb/default.nix
+++ b/pkgs/tools/security/exploitdb/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "exploitdb";
-  version = "2024-03-17";
+  version = "2024-03-23";
 
   src = fetchFromGitLab {
     owner = "exploit-database";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-Vqdi7/jr+Di20y1HoFbXnl2riZfadgsRmzpSryW03M0=";
+    hash = "sha256-2Z6HY2Pz7PKh0iBXaplxj7il0Ekzqsbq57l0/Pk03+s=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/security/extrude/default.nix b/pkgs/tools/security/extrude/default.nix
index 7145314fbd41..8a9710582913 100644
--- a/pkgs/tools/security/extrude/default.nix
+++ b/pkgs/tools/security/extrude/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to analyse binaries for missing security features";
+    mainProgram = "extrude";
     homepage = "https://github.com/liamg/extrude";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/faraday-agent-dispatcher/default.nix b/pkgs/tools/security/faraday-agent-dispatcher/default.nix
index a7920f1e1cbd..8c390f2b6f7a 100644
--- a/pkgs/tools/security/faraday-agent-dispatcher/default.nix
+++ b/pkgs/tools/security/faraday-agent-dispatcher/default.nix
@@ -71,6 +71,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to send result from tools to the Faraday Platform";
+    mainProgram = "faraday-dispatcher";
     homepage = "https://github.com/infobyte/faraday_agent_dispatcher";
     changelog = "https://github.com/infobyte/faraday_agent_dispatcher/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/faraday-cli/default.nix b/pkgs/tools/security/faraday-cli/default.nix
index c6f1c3333a71..7e6ac5315e7d 100644
--- a/pkgs/tools/security/faraday-cli/default.nix
+++ b/pkgs/tools/security/faraday-cli/default.nix
@@ -47,6 +47,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command Line Interface for Faraday";
+    mainProgram = "faraday-cli";
     homepage = "https://github.com/infobyte/faraday-cli";
     changelog = "https://github.com/infobyte/faraday-cli/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/ffuf/default.nix b/pkgs/tools/security/ffuf/default.nix
index e0e5976c7510..ae0a19bff022 100644
--- a/pkgs/tools/security/ffuf/default.nix
+++ b/pkgs/tools/security/ffuf/default.nix
@@ -33,6 +33,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for web fuzzing";
+    mainProgram = "ffuf";
     longDescription = ''
       FFUF, or “Fuzz Faster you Fool” is an open source web fuzzing tool,
       intended for discovering elements and content within web applications
diff --git a/pkgs/tools/security/fierce/default.nix b/pkgs/tools/security/fierce/default.nix
index 9b8d8735b079..07ab18e36a66 100644
--- a/pkgs/tools/security/fierce/default.nix
+++ b/pkgs/tools/security/fierce/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DNS reconnaissance tool for locating non-contiguous IP space";
+    mainProgram = "fierce";
     homepage = "https://github.com/mschwager/fierce";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ c0bw3b ];
diff --git a/pkgs/tools/security/fingerprintx/default.nix b/pkgs/tools/security/fingerprintx/default.nix
index 940195b4e2b5..1d04116c5724 100644
--- a/pkgs/tools/security/fingerprintx/default.nix
+++ b/pkgs/tools/security/fingerprintx/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Standalone utility for service discovery on open ports";
+    mainProgram = "fingerprintx";
     homepage = "https://github.com/praetorian-inc/fingerprintx";
     changelog = "https://github.com/praetorian-inc/fingerprintx/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/firefox_decrypt/default.nix b/pkgs/tools/security/firefox_decrypt/default.nix
index ce41f07569fb..9ade5976e8d8 100644
--- a/pkgs/tools/security/firefox_decrypt/default.nix
+++ b/pkgs/tools/security/firefox_decrypt/default.nix
@@ -39,6 +39,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/unode/firefox_decrypt";
     description = "A tool to extract passwords from profiles of Mozilla Firefox and derivates";
+    mainProgram = "firefox_decrypt";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ schnusch ];
   };
diff --git a/pkgs/tools/security/fpm2/default.nix b/pkgs/tools/security/fpm2/default.nix
index 69e6c7f02817..68781d05dc68 100644
--- a/pkgs/tools/security/fpm2/default.nix
+++ b/pkgs/tools/security/fpm2/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GTK2 port from Figaro's Password Manager originally developed by John Conneely, with some new enhancements";
+    mainProgram = "fpm2";
     homepage    = "https://als.regnet.cz/fpm2/";
     license     = licenses.gpl2;
     platforms   = platforms.linux;
diff --git a/pkgs/tools/security/freeze/default.nix b/pkgs/tools/security/freeze/default.nix
index a8a8dbb59346..28ef21657009 100644
--- a/pkgs/tools/security/freeze/default.nix
+++ b/pkgs/tools/security/freeze/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Payload toolkit for bypassing EDRs";
+    mainProgram = "freeze";
     homepage = "https://github.com/optiv/Freeze";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/fulcio/default.nix b/pkgs/tools/security/fulcio/default.nix
index 17bd273c0a30..46b533e4e68a 100644
--- a/pkgs/tools/security/fulcio/default.nix
+++ b/pkgs/tools/security/fulcio/default.nix
@@ -67,6 +67,7 @@ buildGoModule rec {
     homepage = "https://github.com/sigstore/fulcio";
     changelog = "https://github.com/sigstore/fulcio/releases/tag/v${version}";
     description = "A Root-CA for code signing certs - issuing certificates based on an OIDC email address";
+    mainProgram = "fulcio";
     longDescription = ''
       Fulcio is a free code signing Certificate Authority, built to make
       short-lived certificates available to anyone. Based on an Open ID Connect
diff --git a/pkgs/tools/security/galer/default.nix b/pkgs/tools/security/galer/default.nix
index bfe7cb18d1eb..852a91a8fc98 100644
--- a/pkgs/tools/security/galer/default.nix
+++ b/pkgs/tools/security/galer/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to fetch URLs from HTML attributes";
+    mainProgram = "galer";
     homepage = "https://github.com/dwisiswant0/galer";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/gallia/default.nix b/pkgs/tools/security/gallia/default.nix
index f19bd817d1d4..8279227f3d28 100644
--- a/pkgs/tools/security/gallia/default.nix
+++ b/pkgs/tools/security/gallia/default.nix
@@ -18,6 +18,11 @@ python3.pkgs.buildPythonApplication rec {
 
   nativeBuildInputs = with python3.pkgs; [
     poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "httpx"
   ];
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/tools/security/gau/default.nix b/pkgs/tools/security/gau/default.nix
index eea5df85162c..dc4676a1c987 100644
--- a/pkgs/tools/security/gau/default.nix
+++ b/pkgs/tools/security/gau/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to fetch known URLs";
+    mainProgram = "gau";
     longDescription = ''
       getallurls (gau) fetches known URLs from various sources for any
       given domain.
diff --git a/pkgs/tools/security/gencfsm/default.nix b/pkgs/tools/security/gencfsm/default.nix
index 33f6297905ea..537b2caf45b3 100644
--- a/pkgs/tools/security/gencfsm/default.nix
+++ b/pkgs/tools/security/gencfsm/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
     homepage = "http://www.libertyzero.com/GEncfsM/";
     downloadPage = "https://launchpad.net/gencfsm/";
     description = "EncFS manager and mounter with GNOME3 integration";
+    mainProgram = "gnome-encfs-manager";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.spacefrogg ];
diff --git a/pkgs/tools/security/genpass/default.nix b/pkgs/tools/security/genpass/default.nix
index 9565bf80c950..243132bb263d 100644
--- a/pkgs/tools/security/genpass/default.nix
+++ b/pkgs/tools/security/genpass/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple yet robust commandline random password generator";
+    mainProgram = "genpass";
     homepage = "https://sr.ht/~cyplo/genpass/";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ cyplo ];
diff --git a/pkgs/tools/security/ggshield/default.nix b/pkgs/tools/security/ggshield/default.nix
index 3bf136683333..eb0c5c9d2a95 100644
--- a/pkgs/tools/security/ggshield/default.nix
+++ b/pkgs/tools/security/ggshield/default.nix
@@ -77,6 +77,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to find and fix various types of hardcoded secrets and infrastructure-as-code misconfigurations";
+    mainProgram = "ggshield";
     homepage = "https://github.com/GitGuardian/ggshield";
     changelog = "https://github.com/GitGuardian/ggshield/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ghauri/default.nix b/pkgs/tools/security/ghauri/default.nix
index 6e7ddeb3cd96..fd4a0fa9903f 100644
--- a/pkgs/tools/security/ghauri/default.nix
+++ b/pkgs/tools/security/ghauri/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for detecting and exploiting SQL injection security flaws";
+    mainProgram = "ghauri";
     homepage = "https://github.com/r0oth3x49/ghauri";
     changelog = "https://github.com/r0oth3x49/ghauri/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ghdorker/default.nix b/pkgs/tools/security/ghdorker/default.nix
index 28336c30ea15..f00e9a60df81 100644
--- a/pkgs/tools/security/ghdorker/default.nix
+++ b/pkgs/tools/security/ghdorker/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Extensible GitHub dorking tool";
+    mainProgram = "ghdorker";
     homepage = "https://github.com/dtaivpp/ghdorker";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ghidra/build.nix b/pkgs/tools/security/ghidra/build.nix
index da164c94b0b5..8b9f2aaca007 100644
--- a/pkgs/tools/security/ghidra/build.nix
+++ b/pkgs/tools/security/ghidra/build.nix
@@ -159,6 +159,7 @@ in stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission";
+    mainProgram = "ghidra";
     homepage = "https://ghidra-sre.org/";
     platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     sourceProvenance = with sourceTypes; [
diff --git a/pkgs/tools/security/ghidra/default.nix b/pkgs/tools/security/ghidra/default.nix
index 5f9346937b36..2337b36eb7c8 100644
--- a/pkgs/tools/security/ghidra/default.nix
+++ b/pkgs/tools/security/ghidra/default.nix
@@ -70,6 +70,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission";
+    mainProgram = "ghidra";
     homepage = "https://github.com/NationalSecurityAgency/ghidra";
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
diff --git a/pkgs/tools/security/ghost/default.nix b/pkgs/tools/security/ghost/default.nix
index 124caef45c20..d645556c87be 100644
--- a/pkgs/tools/security/ghost/default.nix
+++ b/pkgs/tools/security/ghost/default.nix
@@ -27,6 +27,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Android post-exploitation framework";
+    mainProgram = "ghost";
     homepage = "https://github.com/EntySec/ghost";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/gitjacker/default.nix b/pkgs/tools/security/gitjacker/default.nix
index c233032d9359..5303e169e8dd 100644
--- a/pkgs/tools/security/gitjacker/default.nix
+++ b/pkgs/tools/security/gitjacker/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Leak git repositories from misconfigured websites";
+    mainProgram = "gitjacker";
     longDescription = ''
       Gitjacker downloads git repositories and extracts their contents
       from sites where the .git directory has been mistakenly uploaded.
diff --git a/pkgs/tools/security/gnupg-pkcs11-scd/default.nix b/pkgs/tools/security/gnupg-pkcs11-scd/default.nix
index f7c22cddb5cb..76cc2639bf90 100644
--- a/pkgs/tools/security/gnupg-pkcs11-scd/default.nix
+++ b/pkgs/tools/security/gnupg-pkcs11-scd/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A smart-card daemon to enable the use of PKCS#11 tokens with GnuPG";
+    mainProgram = "gnupg-pkcs11-scd";
     longDescription = ''
     gnupg-pkcs11 is a project to implement a BSD-licensed smart-card
     daemon to enable the use of PKCS#11 tokens with GnuPG.
diff --git a/pkgs/tools/security/go-cve-search/default.nix b/pkgs/tools/security/go-cve-search/default.nix
index d4b231c63a18..2e521de96ed3 100644
--- a/pkgs/tools/security/go-cve-search/default.nix
+++ b/pkgs/tools/security/go-cve-search/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A lightweight CVE search tool";
+    mainProgram = "go-cve-search";
     longDescription = ''
       go-cve-search is a lightweight tool to search CVE (Common Vulnerabilities
       and Exposures).
diff --git a/pkgs/tools/security/go-exploitdb/default.nix b/pkgs/tools/security/go-exploitdb/default.nix
index d400cd22a6f0..2ca0c1b1e299 100644
--- a/pkgs/tools/security/go-exploitdb/default.nix
+++ b/pkgs/tools/security/go-exploitdb/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for searching Exploits from Exploit Databases, etc";
+    mainProgram = "go-exploitdb";
     homepage = "https://github.com/vulsio/go-exploitdb";
     changelog = "https://github.com/vulsio/go-exploitdb/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/goblob/default.nix b/pkgs/tools/security/goblob/default.nix
index 401a655d65ab..a1ffe5b4a9c8 100644
--- a/pkgs/tools/security/goblob/default.nix
+++ b/pkgs/tools/security/goblob/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Enumeration tool for publicly exposed Azure Storage blobs";
+    mainProgram = "goblob";
     homepage = "https://github.com/Macmod/goblob";
     changelog = "https://github.com/Macmod/goblob/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/gobuster/default.nix b/pkgs/tools/security/gobuster/default.nix
index 878fa576b4cd..bbc4b02c2b16 100644
--- a/pkgs/tools/security/gobuster/default.nix
+++ b/pkgs/tools/security/gobuster/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool used to brute-force URIs, DNS subdomains, Virtual Host names on target web servers";
+    mainProgram = "gobuster";
     homepage = "https://github.com/OJ/gobuster";
     changelog = "https://github.com/OJ/gobuster/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/gomapenum/default.nix b/pkgs/tools/security/gomapenum/default.nix
index 6e1da08d14f0..8171d5ef57e8 100644
--- a/pkgs/tools/security/gomapenum/default.nix
+++ b/pkgs/tools/security/gomapenum/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tools for user enumeration and password bruteforce";
+    mainProgram = "gomapenum";
     homepage = "https://github.com/nodauf/GoMapEnum";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/gopass/default.nix b/pkgs/tools/security/gopass/default.nix
index 6573c511474a..2b17f935d511 100644
--- a/pkgs/tools/security/gopass/default.nix
+++ b/pkgs/tools/security/gopass/default.nix
@@ -13,7 +13,7 @@
 
 buildGoModule rec {
   pname = "gopass";
-  version = "1.15.11";
+  version = "1.15.12";
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
 
@@ -21,10 +21,10 @@ buildGoModule rec {
     owner = "gopasspw";
     repo = "gopass";
     rev = "v${version}";
-    hash = "sha256-wgrZkRRMEWA9Lk9eW+iGi+dZNYfDVhRu1phimZC079c=";
+    hash = "sha256-sg3I/h0mkkWmK4GD1yoX14gM2oqwRjMXpX3KULHFJsg=";
   };
 
-  vendorHash = "sha256-TvohrwSFVv5ylVRd6jPdRDyRRhqqWa0xey9KN9vtyY8=";
+  vendorHash = "sha256-jbwtxOfBL/5aXdWcsXZ5HQi83Oy00SSnLcvuWeCPBug=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/git-credential.nix b/pkgs/tools/security/gopass/git-credential.nix
index 8654d05d9d13..cf05591bbbfc 100644
--- a/pkgs/tools/security/gopass/git-credential.nix
+++ b/pkgs/tools/security/gopass/git-credential.nix
@@ -2,21 +2,30 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
+, fetchpatch
 , gopass
 }:
 
 buildGoModule rec {
   pname = "git-credential-gopass";
-  version = "1.15.11";
+  version = "1.15.12";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "git-credential-gopass";
     rev = "v${version}";
-    hash = "sha256-qnWgrpcj3DZQu5haP/5xqoO7eogkRjBmc8XpgFFNT6I=";
+    hash = "sha256-5j5+so4LT3x+epEZf9OVn/kLNHBk2ENQxxRrzbziEA4=";
   };
 
-  vendorHash = "sha256-bit4+YgQ+Y/TA2q7KdZwYTE3ZKBwL6tUam+tHzBMiQw=";
+  patches = [
+    # go mod tidy. Remove with next release
+    (fetchpatch {
+      url = "https://github.com/gopasspw/git-credential-gopass/commit/88d11d2b1b49f00b7fba9a917cf90f7ea14c9d1b.patch";
+      hash = "sha256-mXxI9GXan0zYL8msL83VLqxOp4oAOwMyCOFaUOLAg5E=";
+    })
+  ];
+
+  vendorHash = "sha256-y1PH0+tt/kcHw2I4LWD2XfLud3JtsYqrRd/yVRPdaTA=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/hibp.nix b/pkgs/tools/security/gopass/hibp.nix
index 11ee0a94dbf9..c9fca15f9058 100644
--- a/pkgs/tools/security/gopass/hibp.nix
+++ b/pkgs/tools/security/gopass/hibp.nix
@@ -2,21 +2,30 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
+, fetchpatch
 , gopass
 }:
 
 buildGoModule rec {
   pname = "gopass-hibp";
-  version = "1.15.11";
+  version = "1.15.12";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-hibp";
     rev = "v${version}";
-    hash = "sha256-2XhvUIa8RxQ6CAKPGpL8/rBiJSX/WsSGtIpaHLIBM1E=";
+    hash = "sha256-5BnCaxF2XZ4f26KsTbapcZ2+Ii58nR/14pCj0c0QLKE=";
   };
 
-  vendorHash = "sha256-i9PUqircNf+jz5gcr3rVIR4tD9/bkV2h6LiDFhjiLaw=";
+  patches = [
+    # go mod tidy. Remove with next release
+    (fetchpatch {
+      url = "https://github.com/gopasspw/gopass-hibp/commit/cdfdbc6da154874c74d7c8fc83bb11a98dd8fd81.patch";
+      hash = "sha256-jCzg3c8EizhoRYvWUZCys6/q2ChVWy/psPofNGIYdxs=";
+    })
+  ];
+
+  vendorHash = "sha256-GLqtwUg3fa1okdPoQBkF+ygpm8GLmDyIyUiC7/TTTaE=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/jsonapi.nix b/pkgs/tools/security/gopass/jsonapi.nix
index 37ac46356c3a..ca0ad5a96fd3 100644
--- a/pkgs/tools/security/gopass/jsonapi.nix
+++ b/pkgs/tools/security/gopass/jsonapi.nix
@@ -2,22 +2,31 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
+, fetchpatch
 , installShellFiles
 , gopass
 }:
 
 buildGoModule rec {
   pname = "gopass-jsonapi";
-  version = "1.15.11";
+  version = "1.15.12";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-jsonapi";
     rev = "v${version}";
-    hash = "sha256-wJlnm+sgFg55LW4RWGjcT538DgNhJtFjwgwgqwLWH50=";
+    hash = "sha256-sR+48MRBHj3XpKLp/AOGf2H4ltZD1fHlIA2HPYSHdp0=";
   };
 
-  vendorHash = "sha256-qRmPO2WM9RD43twl5a47IT3xC1LGFwNF99ojIU2xg6A=";
+  patches = [
+    # go mod tidy. Remove with next release
+    (fetchpatch {
+      url = "https://github.com/gopasspw/gopass-jsonapi/commit/cab33faab113d0c9702ebaa14cde13e5ccd465d2.patch";
+      hash = "sha256-IoxU5r1k0Y6N+PKAZH8LEO/fXHjryx5y58RRFeHP7Bc=";
+    })
+  ];
+
+  vendorHash = "sha256-2JADTyBgAK2j524G+ksKLJC255PmvMViFFCwmgtXZzA=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gopass/summon.nix b/pkgs/tools/security/gopass/summon.nix
index 97aed94c05fe..fca94219cf07 100644
--- a/pkgs/tools/security/gopass/summon.nix
+++ b/pkgs/tools/security/gopass/summon.nix
@@ -2,21 +2,30 @@
 , makeWrapper
 , buildGoModule
 , fetchFromGitHub
+, fetchpatch
 , gopass
 }:
 
 buildGoModule rec {
   pname = "gopass-summon-provider";
-  version = "1.15.11";
+  version = "1.15.12";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-summon-provider";
     rev = "v${version}";
-    hash = "sha256-rbfzmr6HtGUBCjO9jkocSghTAN+aNXTsSsMC38HqgW0=";
+    hash = "sha256-gvgHqeVB+4d8UJhMv3CYYidttCcaRPkgI7PXasv7pCI=";
   };
 
-  vendorHash = "sha256-bit4+YgQ+Y/TA2q7KdZwYTE3ZKBwL6tUam+tHzBMiQw=";
+  patches = [
+    # go mod tidy. Remove with next release
+    (fetchpatch {
+      url = "https://github.com/gopasspw/gopass-summon-provider/commit/b3085cab14588cb6a5a383033947d9266fe0cd56.patch";
+      hash = "sha256-8mvJqejqmuOloj9mW9zzsE/Xr0DtPhJeDItzVFVv4+c=";
+    })
+  ];
+
+  vendorHash = "sha256-y1PH0+tt/kcHw2I4LWD2XfLud3JtsYqrRd/yVRPdaTA=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/gorilla-bin/default.nix b/pkgs/tools/security/gorilla-bin/default.nix
index 388996c62fb5..898abbbd25a4 100644
--- a/pkgs/tools/security/gorilla-bin/default.nix
+++ b/pkgs/tools/security/gorilla-bin/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Password Gorilla is a Tk based password manager";
+    mainProgram = "gorilla";
     homepage = "https://github.com/zdia/gorilla/wiki";
     maintainers = [ lib.maintainers.namore ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/tools/security/gospider/default.nix b/pkgs/tools/security/gospider/default.nix
index 91e940ec87eb..d78089f6072e 100644
--- a/pkgs/tools/security/gospider/default.nix
+++ b/pkgs/tools/security/gospider/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast web spider written in Go";
+    mainProgram = "gospider";
     longDescription = ''
       GoSpider is a fast web crawler that parses sitemap.xml and robots.txt file.
       It can generate and verify link from JavaScript files, extract URLs from
diff --git a/pkgs/tools/security/gotestwaf/default.nix b/pkgs/tools/security/gotestwaf/default.nix
index c9fbe9f699eb..b710d209244c 100644
--- a/pkgs/tools/security/gotestwaf/default.nix
+++ b/pkgs/tools/security/gotestwaf/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "gotestwaf";
-  version = "0.4.15";
+  version = "0.4.16";
 
   src = fetchFromGitHub {
     owner = "wallarm";
     repo = "gotestwaf";
     rev = "refs/tags/v${version}";
-    hash = "sha256-C5lDiHDSSweUZh83AOv5WIQ4JuC9OiCvpHshgius51k=";
+    hash = "sha256-fMSXnA8ZuyfOQINkWiYwX7NSffsHbdlfDcpfo/hahMY=";
   };
 
   vendorHash = null;
@@ -40,6 +40,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for API and OWASP attack simulation";
+    mainProgram = "gotestwaf";
     homepage = "https://github.com/wallarm/gotestwaf";
     changelog = "https://github.com/wallarm/gotestwaf/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/gotrue/default.nix b/pkgs/tools/security/gotrue/default.nix
index 112e0c4ddc6d..06b3560dec56 100644
--- a/pkgs/tools/security/gotrue/default.nix
+++ b/pkgs/tools/security/gotrue/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/netlify/gotrue";
     description = "An SWT based API for managing users and issuing SWT tokens";
+    mainProgram = "gotrue";
     changelog = "https://github.com/netlify/gotrue/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/tools/security/gotrue/supabase.nix b/pkgs/tools/security/gotrue/supabase.nix
index 36ce6d72ceb8..9020a0c8c9ba 100644
--- a/pkgs/tools/security/gotrue/supabase.nix
+++ b/pkgs/tools/security/gotrue/supabase.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/supabase/gotrue";
     description = "A JWT based API for managing users and issuing JWT tokens";
+    mainProgram = "gotrue";
     changelog = "https://github.com/supabase/gotrue/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/tools/security/goverview/default.nix b/pkgs/tools/security/goverview/default.nix
index 02038bf27b99..6c55f069d258 100644
--- a/pkgs/tools/security/goverview/default.nix
+++ b/pkgs/tools/security/goverview/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to get an overview of the list of URLs";
+    mainProgram = "goverview";
     homepage = "https://github.com/j3ssie/goverview";
     changelog = "https://github.com/j3ssie/goverview/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/govulncheck/default.nix b/pkgs/tools/security/govulncheck/default.nix
index dd45d054aeeb..84aeaf51b947 100644
--- a/pkgs/tools/security/govulncheck/default.nix
+++ b/pkgs/tools/security/govulncheck/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
     homepage = "https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck";
     downloadPage = "https://github.com/golang/vuln";
     description = "The database client and tools for the Go vulnerability database, also known as vuln";
+    mainProgram = "govulncheck";
     longDescription = ''
       Govulncheck reports known vulnerabilities that affect Go code. It uses
       static analysis of source code or a binary's symbol table to narrow down
diff --git a/pkgs/tools/security/gowitness/default.nix b/pkgs/tools/security/gowitness/default.nix
index bd9ab97a0f38..ab31281bbd28 100644
--- a/pkgs/tools/security/gowitness/default.nix
+++ b/pkgs/tools/security/gowitness/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Web screenshot utility";
+    mainProgram = "gowitness";
     homepage = "https://github.com/sensepost/gowitness";
     changelog = "https://github.com/sensepost/gowitness/releases/tag/${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/graphinder/default.nix b/pkgs/tools/security/graphinder/default.nix
index f0256dff7cbe..541e7ab3189d 100644
--- a/pkgs/tools/security/graphinder/default.nix
+++ b/pkgs/tools/security/graphinder/default.nix
@@ -48,6 +48,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to find GraphQL endpoints using subdomain enumeration";
+    mainProgram = "graphinder";
     homepage = "https://github.com/Escape-Technologies/graphinder";
     changelog = "https://github.com/Escape-Technologies/graphinder/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/graphqlmap/default.nix b/pkgs/tools/security/graphqlmap/default.nix
index 84b72d3b6a16..a2c0904b4a98 100644
--- a/pkgs/tools/security/graphqlmap/default.nix
+++ b/pkgs/tools/security/graphqlmap/default.nix
@@ -28,6 +28,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to interact with a GraphQL endpoint";
+    mainProgram = "graphqlmap";
     homepage = "https://github.com/swisskyrepo/GraphQLmap";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/graphw00f/default.nix b/pkgs/tools/security/graphw00f/default.nix
index 7f1d5ede3e71..9edcf7c1f939 100644
--- a/pkgs/tools/security/graphw00f/default.nix
+++ b/pkgs/tools/security/graphw00f/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
   '';
   meta = with lib; {
     description = "GraphQL Server Engine Fingerprinting utility";
+    mainProgram = "graphw00f";
     homepage = "https://github.com/dolevf/graphw00f";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix
index d602d1fc6e73..db9a24ecc429 100644
--- a/pkgs/tools/security/grype/default.nix
+++ b/pkgs/tools/security/grype/default.nix
@@ -109,6 +109,7 @@ buildGoModule rec {
     homepage = "https://github.com/anchore/grype";
     changelog = "https://github.com/anchore/grype/releases/tag/v${version}";
     description = "Vulnerability scanner for container images and filesystems";
+    mainProgram = "grype";
     longDescription = ''
       As a vulnerability scanner grype is able to scan the contents of a
       container image or filesystem to find known vulnerabilities.
diff --git a/pkgs/tools/security/hakrawler/default.nix b/pkgs/tools/security/hakrawler/default.nix
index 0577ceb8c103..58481390f2cc 100644
--- a/pkgs/tools/security/hakrawler/default.nix
+++ b/pkgs/tools/security/hakrawler/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Web crawler for the discovery of endpoints and assets";
+    mainProgram = "hakrawler";
     homepage = "https://github.com/hakluke/hakrawler";
     longDescription =  ''
       Simple, fast web crawler designed for easy, quick discovery of endpoints
diff --git a/pkgs/tools/security/hash_extender/default.nix b/pkgs/tools/security/hash_extender/default.nix
index b90dff6cd17c..10f82ca77e71 100644
--- a/pkgs/tools/security/hash_extender/default.nix
+++ b/pkgs/tools/security/hash_extender/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Tool to automate hash length extension attacks";
+    mainProgram = "hash_extender";
     homepage = "https://github.com/iagox86/hash_extender";
     license = licenses.bsd3;
     maintainers = with maintainers; [ oxzi ];
diff --git a/pkgs/tools/security/hashcat/default.nix b/pkgs/tools/security/hashcat/default.nix
index 2e8370be85fe..56399e61639e 100644
--- a/pkgs/tools/security/hashcat/default.nix
+++ b/pkgs/tools/security/hashcat/default.nix
@@ -21,13 +21,9 @@ stdenv.mkDerivation rec {
   };
 
   postPatch = ''
-     # Select libstdc++ or libc++ based on stdenv
      # MACOSX_DEPLOYMENT_TARGET is defined by the enviroment
      # Remove hardcoded paths on darwin
     substituteInPlace src/Makefile \
-  '' + lib.optionalString (stdenv.cc.libcxx != null) ''
-      --replace "-lstdc++" "-lc++ -l${stdenv.cc.libcxx.cxxabi.libName}" \
-  '' + ''
       --replace "export MACOSX_DEPLOYMENT_TARGET" "#export MACOSX_DEPLOYMENT_TARGET" \
       --replace "/usr/bin/ar" "ar" \
       --replace "/usr/bin/sed" "sed" \
@@ -81,6 +77,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast password cracker";
+    mainProgram = "hashcat";
     homepage    = "https://hashcat.net/hashcat/";
     license     = licenses.mit;
     platforms   = platforms.unix;
diff --git a/pkgs/tools/security/hashrat/default.nix b/pkgs/tools/security/hashrat/default.nix
index 7923021f8355..38014988dd67 100644
--- a/pkgs/tools/security/hashrat/default.nix
+++ b/pkgs/tools/security/hashrat/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command-line hash-generation utility";
+    mainProgram = "hashrat";
     longDescription = ''
       Hashing tool supporting md5,sha1,sha256,sha512,whirlpool,jh and hmac versions of these.
       Includes recursive file hashing and other features.
diff --git a/pkgs/tools/security/haveged/default.nix b/pkgs/tools/security/haveged/default.nix
index c28ae465e0eb..c30469c3a3d9 100644
--- a/pkgs/tools/security/haveged/default.nix
+++ b/pkgs/tools/security/haveged/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A simple entropy daemon";
+    mainProgram = "haveged";
     longDescription = ''
       The haveged project is an attempt to provide an easy-to-use, unpredictable
       random number generator based upon an adaptation of the HAVEGE algorithm.
diff --git a/pkgs/tools/security/hfinger/default.nix b/pkgs/tools/security/hfinger/default.nix
index 900f7402451d..baca9ed5ddd2 100644
--- a/pkgs/tools/security/hfinger/default.nix
+++ b/pkgs/tools/security/hfinger/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Fingerprinting tool for HTTP requests";
+    mainProgram = "hfinger";
     homepage = "https://github.com/CERT-Polska/hfinger";
     changelog = "https://github.com/CERT-Polska/hfinger/releases/tag/v${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/holehe/default.nix b/pkgs/tools/security/holehe/default.nix
index ed8146fec688..872cde1f8f87 100644
--- a/pkgs/tools/security/holehe/default.nix
+++ b/pkgs/tools/security/holehe/default.nix
@@ -39,6 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CLI to check if the mail is used on different sites";
+    mainProgram = "holehe";
     homepage = "https://github.com/megadose/holehe";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/honeytrap/default.nix b/pkgs/tools/security/honeytrap/default.nix
index e0252d06f154..3e311c576864 100644
--- a/pkgs/tools/security/honeytrap/default.nix
+++ b/pkgs/tools/security/honeytrap/default.nix
@@ -21,6 +21,7 @@ buildGoModule {
 
   meta = with lib; {
     description = "Advanced Honeypot framework";
+    mainProgram = "honeytrap";
     homepage = "https://github.com/honeytrap/honeytrap";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/tools/security/hstsparser/default.nix b/pkgs/tools/security/hstsparser/default.nix
index 8b4e4882f556..6c3019050719 100644
--- a/pkgs/tools/security/hstsparser/default.nix
+++ b/pkgs/tools/security/hstsparser/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to parse Firefox and Chrome HSTS databases into forensic artifacts";
+    mainProgram = "hstsparser";
     homepage = "https://github.com/thebeanogamer/hstsparser";
     changelog = "https://github.com/thebeanogamer/hstsparser/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/httpdump/default.nix b/pkgs/tools/security/httpdump/default.nix
index d745adc50d5d..2a8e75497782 100644
--- a/pkgs/tools/security/httpdump/default.nix
+++ b/pkgs/tools/security/httpdump/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Parse and display HTTP traffic from network device or pcap file";
+    mainProgram = "httpdump";
     homepage = "https://github.com/hsiafan/httpdump";
     license = with licenses; [ bsd2 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/httpx/default.nix b/pkgs/tools/security/httpx/default.nix
index 3fb537142958..80a7404be002 100644
--- a/pkgs/tools/security/httpx/default.nix
+++ b/pkgs/tools/security/httpx/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast and multi-purpose HTTP toolkit";
+    mainProgram = "httpx";
     longDescription = ''
       httpx is a fast and multi-purpose HTTP toolkit allow to run multiple
       probers using retryablehttp library, it is designed to maintain the
diff --git a/pkgs/tools/security/iaito/default.nix b/pkgs/tools/security/iaito/default.nix
index 5812b1e6cfea..2fc43ad67055 100644
--- a/pkgs/tools/security/iaito/default.nix
+++ b/pkgs/tools/security/iaito/default.nix
@@ -87,6 +87,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An official graphical interface of radare2";
+    mainProgram = "iaito";
     longDescription = ''
       iaito is the official graphical interface of radare2. It's the
       continuation of Cutter for radare2 after the Rizin fork.
diff --git a/pkgs/tools/security/ibm-sw-tpm2/default.nix b/pkgs/tools/security/ibm-sw-tpm2/default.nix
index 9a13c2103016..969a758d18d4 100644
--- a/pkgs/tools/security/ibm-sw-tpm2/default.nix
+++ b/pkgs/tools/security/ibm-sw-tpm2/default.nix
@@ -55,6 +55,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "IBM's Software TPM 2.0, an implementation of the TCG TPM 2.0 specification";
+    mainProgram = "tpm_server";
     homepage = "https://sourceforge.net/projects/ibmswtpm2/";
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ delroth ];
diff --git a/pkgs/tools/security/ifdnfc/default.nix b/pkgs/tools/security/ifdnfc/default.nix
index 34c140023ac2..ddc48085860b 100644
--- a/pkgs/tools/security/ifdnfc/default.nix
+++ b/pkgs/tools/security/ifdnfc/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "PC/SC IFD Handler based on libnfc";
+    mainProgram = "ifdnfc-activate";
     longDescription =
     '' libnfc Interface Plugin to be used in <code>services.pcscd.plugins</code>.
        It provides support for all readers which are not supported by ccid but by libnfc.
diff --git a/pkgs/tools/security/imdshift/default.nix b/pkgs/tools/security/imdshift/default.nix
index c33e0878cd4d..a4d7e46e7c28 100644
--- a/pkgs/tools/security/imdshift/default.nix
+++ b/pkgs/tools/security/imdshift/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to migrate workloads to IMDSv2";
+    mainProgram = "imdshift";
     homepage = "https://github.com/ayushpriya10/IMDShift";
     changelog = "https://github.com/ayushpriya10/IMDShift/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/inql/default.nix b/pkgs/tools/security/inql/default.nix
index 272e28292ac8..6f9a6e29f2e0 100644
--- a/pkgs/tools/security/inql/default.nix
+++ b/pkgs/tools/security/inql/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Security testing tool for GraphQL";
+    mainProgram = "inql";
     homepage = "https://github.com/doyensec/inql";
     changelog = "https://github.com/doyensec/inql/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/ioccheck/default.nix b/pkgs/tools/security/ioccheck/default.nix
index 2f25aa4ea897..3f899c33b557 100644
--- a/pkgs/tools/security/ioccheck/default.nix
+++ b/pkgs/tools/security/ioccheck/default.nix
@@ -88,6 +88,7 @@ in py.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for researching IOCs";
+    mainProgram = "ioccheck";
     homepage = "https://github.com/ranguli/ioccheck";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ipscan/default.nix b/pkgs/tools/security/ipscan/default.nix
index 72a44a4ab8a1..f61944fe63ea 100644
--- a/pkgs/tools/security/ipscan/default.nix
+++ b/pkgs/tools/security/ipscan/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Angry IP Scanner - fast and friendly network scanner";
+    mainProgram = "ipscan";
     homepage = "https://angryip.org";
     downloadPage = "https://github.com/angryip/ipscan/releases/tag/${version}";
     changelog = "https://github.com/angryip/ipscan/blob/${version}/CHANGELOG";
diff --git a/pkgs/tools/security/isolate/default.nix b/pkgs/tools/security/isolate/default.nix
index abc491d95c70..b745af75d8b7 100644
--- a/pkgs/tools/security/isolate/default.nix
+++ b/pkgs/tools/security/isolate/default.nix
@@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Sandbox for securely executing untrusted programs";
+    mainProgram = "isolate";
     homepage = "https://github.com/ioi/isolate";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ virchau13 ];
diff --git a/pkgs/tools/security/jaeles/default.nix b/pkgs/tools/security/jaeles/default.nix
index 5ab635b35ac2..7c652995f6ff 100644
--- a/pkgs/tools/security/jaeles/default.nix
+++ b/pkgs/tools/security/jaeles/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for automated Web application testing";
+    mainProgram = "jaeles";
     homepage = "https://github.com/jaeles-project/jaeles";
     changelog = "https://github.com/jaeles-project/jaeles/releases/tag/beta-v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/jd-gui/default.nix b/pkgs/tools/security/jd-gui/default.nix
index 2663af4ed620..7cc714d96773 100644
--- a/pkgs/tools/security/jd-gui/default.nix
+++ b/pkgs/tools/security/jd-gui/default.nix
@@ -122,6 +122,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast Java Decompiler with powerful GUI";
+    mainProgram = "jd-gui";
     homepage    = "https://java-decompiler.github.io/";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/tools/security/joincap/default.nix b/pkgs/tools/security/joincap/default.nix
index 1589602ac062..c37226a6f327 100644
--- a/pkgs/tools/security/joincap/default.nix
+++ b/pkgs/tools/security/joincap/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Merge multiple pcap files together, gracefully";
+    mainProgram = "joincap";
     homepage = "https://github.com/assafmo/joincap";
     changelog = "https://github.com/assafmo/joincap/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/jsubfinder/default.nix b/pkgs/tools/security/jsubfinder/default.nix
index 328c81143d1c..c989c352ea05 100644
--- a/pkgs/tools/security/jsubfinder/default.nix
+++ b/pkgs/tools/security/jsubfinder/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to search for in Javascript hidden subdomains and secrets";
+    mainProgram = "jsubfinder";
     homepage = "https://github.com/ThreatUnkown/jsubfinder";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/jwx/default.nix b/pkgs/tools/security/jwx/default.nix
index 224962825888..ea8e69fad109 100644
--- a/pkgs/tools/security/jwx/default.nix
+++ b/pkgs/tools/security/jwx/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = " Implementation of various JWx (Javascript Object Signing and Encryption/JOSE) technologies";
+    mainProgram = "jwx";
     homepage = "https://github.com/lestrrat-go/jwx";
     license = licenses.mit;
     maintainers = with maintainers; [ arianvp flokli ];
diff --git a/pkgs/tools/security/katana/default.nix b/pkgs/tools/security/katana/default.nix
index 1f4a7300e228..fef276e414c9 100644
--- a/pkgs/tools/security/katana/default.nix
+++ b/pkgs/tools/security/katana/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A next-generation crawling and spidering framework";
+    mainProgram = "katana";
     homepage = "https://github.com/projectdiscovery/katana";
     changelog = "https://github.com/projectdiscovery/katana/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/kbs2/default.nix b/pkgs/tools/security/kbs2/default.nix
index 3e9a726651a6..2592fe444d8d 100644
--- a/pkgs/tools/security/kbs2/default.nix
+++ b/pkgs/tools/security/kbs2/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A secret manager backed by age";
+    mainProgram = "kbs2";
     homepage = "https://github.com/woodruffw/kbs2";
     changelog = "https://github.com/woodruffw/kbs2/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/kdigger/default.nix b/pkgs/tools/security/kdigger/default.nix
index 82070c89447a..dc700bc8e84a 100644
--- a/pkgs/tools/security/kdigger/default.nix
+++ b/pkgs/tools/security/kdigger/default.nix
@@ -61,6 +61,7 @@ buildGoModule rec {
     homepage = "https://github.com/quarkslab/kdigger";
     changelog = "https://github.com/quarkslab/kdigger/releases/tag/v${version}";
     description = "An in-pod context discovery tool for Kubernetes penetration testing";
+    mainProgram = "kdigger";
     longDescription = ''
       kdigger, short for "Kubernetes digger", is a context discovery tool for
       Kubernetes penetration testing. This tool is a compilation of various
diff --git a/pkgs/tools/security/keepwn/default.nix b/pkgs/tools/security/keepwn/default.nix
index bb856c80710b..1d9c740960f3 100644
--- a/pkgs/tools/security/keepwn/default.nix
+++ b/pkgs/tools/security/keepwn/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to automate KeePass discovery and secret extraction";
+    mainProgram = "keepwn";
     homepage = "https://github.com/Orange-Cyberdefense/KeePwn";
     changelog = "https://github.com/Orange-Cyberdefense/KeePwn/releases/tag/${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/kerbrute/default.nix b/pkgs/tools/security/kerbrute/default.nix
index dbadde6129d8..c020e0e5c4bc 100644
--- a/pkgs/tools/security/kerbrute/default.nix
+++ b/pkgs/tools/security/kerbrute/default.nix
@@ -23,6 +23,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = {
     homepage = "https://github.com/TarlogicSecurity/kerbrute";
     description = "Kerberos bruteforce utility";
+    mainProgram = "kerbrute";
     license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ applePrincess ];
   };
diff --git a/pkgs/tools/security/kestrel/default.nix b/pkgs/tools/security/kestrel/default.nix
index f3d40b5ade0c..a94b412e67ee 100644
--- a/pkgs/tools/security/kestrel/default.nix
+++ b/pkgs/tools/security/kestrel/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "File encryption done right";
+    mainProgram = "kestrel";
     longDescription = "
       Kestrel is a data-at-rest file encryption program
       that lets you encrypt files to anyone with a public key.
diff --git a/pkgs/tools/security/keybase/gui.nix b/pkgs/tools/security/keybase/gui.nix
index 8541b02d583e..577e91c24e59 100644
--- a/pkgs/tools/security/keybase/gui.nix
+++ b/pkgs/tools/security/keybase/gui.nix
@@ -109,6 +109,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.keybase.io/";
     description = "The Keybase official GUI";
+    mainProgram = "keybase-gui";
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ avaq rvolosatovs puffnfresh np Br1ght0ne shofius ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
diff --git a/pkgs/tools/security/keycard-cli/default.nix b/pkgs/tools/security/keycard-cli/default.nix
index 851a0dac9031..26c1d7934fbb 100644
--- a/pkgs/tools/security/keycard-cli/default.nix
+++ b/pkgs/tools/security/keycard-cli/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A command line tool and shell to manage keycards";
+    mainProgram = "keycard-cli";
     homepage = "https://keycard.status.im";
     license = licenses.mpl20;
     maintainers = [ maintainers.zimbatm ];
diff --git a/pkgs/tools/security/keyscope/default.nix b/pkgs/tools/security/keyscope/default.nix
index 31d97256f0e7..928daf4b2303 100644
--- a/pkgs/tools/security/keyscope/default.nix
+++ b/pkgs/tools/security/keyscope/default.nix
@@ -41,6 +41,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A key and secret workflow (validation, invalidation, etc.) tool";
+    mainProgram = "keyscope";
     homepage = "https://github.com/spectralops/keyscope";
     changelog = "https://github.com/spectralops/keyscope/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/kiterunner/default.nix b/pkgs/tools/security/kiterunner/default.nix
index 5f73ba055902..f059eeb41153 100644
--- a/pkgs/tools/security/kiterunner/default.nix
+++ b/pkgs/tools/security/kiterunner/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Contextual content discovery tool";
+    mainProgram = "kiterunner";
     longDescription = ''
       Kiterunner is a tool that is capable of not only performing traditional
       content discovery at lightning fast speeds, but also bruteforcing routes
diff --git a/pkgs/tools/security/knockpy/default.nix b/pkgs/tools/security/knockpy/default.nix
index 3bd90b799e21..6d4e80ec98c2 100644
--- a/pkgs/tools/security/knockpy/default.nix
+++ b/pkgs/tools/security/knockpy/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan subdomains";
+    mainProgram = "knockpy";
     homepage = "https://github.com/guelfoweb/knock";
     changelog = "https://github.com/guelfoweb/knock/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/knowsmore/default.nix b/pkgs/tools/security/knowsmore/default.nix
index d9a806ef2a58..f73ae1032efa 100644
--- a/pkgs/tools/security/knowsmore/default.nix
+++ b/pkgs/tools/security/knowsmore/default.nix
@@ -47,6 +47,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for pentesting Microsoft Active Directory";
+    mainProgram = "knowsmore";
     homepage = "https://github.com/helviojunior/knowsmore";
     changelog = "https://github.com/helviojunior/knowsmore/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/kpcli/default.nix b/pkgs/tools/security/kpcli/default.nix
index 3ca03ee3ca10..0509663af1aa 100644
--- a/pkgs/tools/security/kpcli/default.nix
+++ b/pkgs/tools/security/kpcli/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "KeePass Command Line Interface";
+    mainProgram = "kpcli";
     longDescription = ''
       KeePass Command Line Interface (CLI) / interactive shell.
       Use this program to access and manage your KeePass 1.x or 2.x databases from a Unix-like command line.
diff --git a/pkgs/tools/security/kube-bench/default.nix b/pkgs/tools/security/kube-bench/default.nix
index 673dde4a58a1..4e539fa96dd5 100644
--- a/pkgs/tools/security/kube-bench/default.nix
+++ b/pkgs/tools/security/kube-bench/default.nix
@@ -43,6 +43,7 @@ buildGoModule rec {
     homepage = "https://github.com/aquasecurity/kube-bench";
     changelog = "https://github.com/aquasecurity/kube-bench/releases/tag/v${version}";
     description = "Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark";
+    mainProgram = "kube-bench";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk ];
   };
diff --git a/pkgs/tools/security/kubeaudit/default.nix b/pkgs/tools/security/kubeaudit/default.nix
index 135d29c27223..f1b673d2de70 100644
--- a/pkgs/tools/security/kubeaudit/default.nix
+++ b/pkgs/tools/security/kubeaudit/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Audit tool for Kubernetes";
+    mainProgram = "kubeaudit";
     homepage = "https://github.com/Shopify/kubeaudit";
     changelog = "https://github.com/Shopify/kubeaudit/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/kubeclarity/default.nix b/pkgs/tools/security/kubeclarity/default.nix
index 4aed36bbeaa2..38de010dd931 100644
--- a/pkgs/tools/security/kubeclarity/default.nix
+++ b/pkgs/tools/security/kubeclarity/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Kubernetes runtime scanner";
+    mainProgram = "kubeclarity";
     longDescription = ''
       KubeClarity is a vulnerabilities scanning and CIS Docker benchmark tool that
       allows users to get an accurate and immediate risk assessment of their
diff --git a/pkgs/tools/security/kubernetes-polaris/default.nix b/pkgs/tools/security/kubernetes-polaris/default.nix
index b053640d8da9..737c901e570b 100644
--- a/pkgs/tools/security/kubernetes-polaris/default.nix
+++ b/pkgs/tools/security/kubernetes-polaris/default.nix
@@ -45,6 +45,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Validate and remediate Kubernetes resources to ensure configuration best practices are followed";
+    mainProgram = "polaris";
     homepage = "https://www.fairwinds.com/polaris";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ longer ];
diff --git a/pkgs/tools/security/kubescape/default.nix b/pkgs/tools/security/kubescape/default.nix
index b5661ccbcd3c..c6fb92044cdc 100644
--- a/pkgs/tools/security/kubescape/default.nix
+++ b/pkgs/tools/security/kubescape/default.nix
@@ -71,6 +71,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for testing if Kubernetes is deployed securely";
+    mainProgram = "kubescape";
     homepage = "https://github.com/kubescape/kubescape";
     changelog = "https://github.com/kubescape/kubescape/releases/tag/v${version}";
     longDescription = ''
diff --git a/pkgs/tools/security/kubesec/default.nix b/pkgs/tools/security/kubesec/default.nix
index 4fa9337e1cb5..ed562124da90 100644
--- a/pkgs/tools/security/kubesec/default.nix
+++ b/pkgs/tools/security/kubesec/default.nix
@@ -46,6 +46,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Security risk analysis tool for Kubernetes resources";
+    mainProgram = "kubesec";
     homepage = "https://github.com/controlplaneio/kubesec";
     changelog = "https://github.com/controlplaneio/kubesec/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/ldapmonitor/default.nix b/pkgs/tools/security/ldapmonitor/default.nix
index 51295d2841a9..989e1bebc153 100644
--- a/pkgs/tools/security/ldapmonitor/default.nix
+++ b/pkgs/tools/security/ldapmonitor/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to monitor creation, deletion and changes to LDAP objects";
+    mainProgram = "ldapmonitor";
     homepage = "https://github.com/p0dalirius/LDAPmonitor";
     changelog = "https://github.com/p0dalirius/LDAPmonitor/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/ldeep/default.nix b/pkgs/tools/security/ldeep/default.nix
index ddbff2357271..92d5ff106b6c 100644
--- a/pkgs/tools/security/ldeep/default.nix
+++ b/pkgs/tools/security/ldeep/default.nix
@@ -48,6 +48,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "In-depth LDAP enumeration utility";
+    mainProgram = "ldeep";
     homepage = "https://github.com/franc-pentest/ldeep";
     changelog = "https://github.com/franc-pentest/ldeep/releases/tag/${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/lesspass-cli/default.nix b/pkgs/tools/security/lesspass-cli/default.nix
index 34d36f93b5fb..c568be5ebbd8 100644
--- a/pkgs/tools/security/lesspass-cli/default.nix
+++ b/pkgs/tools/security/lesspass-cli/default.nix
@@ -32,6 +32,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Stateless password manager";
+    mainProgram = "lesspass";
     homepage = "https://lesspass.com";
     maintainers = with maintainers; [ jasoncarr ];
     license = licenses.gpl3;
diff --git a/pkgs/tools/security/lil-pwny/default.nix b/pkgs/tools/security/lil-pwny/default.nix
index c8251dfaa249..42ee72d2c204 100644
--- a/pkgs/tools/security/lil-pwny/default.nix
+++ b/pkgs/tools/security/lil-pwny/default.nix
@@ -24,6 +24,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Offline auditing of Active Directory passwords";
+    mainProgram = "lil-pwny";
     homepage = "https://github.com/PaperMtn/lil-pwny";
     changelog = "https://github.com/PaperMtn/lil-pwny/blob/${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/linux-exploit-suggester/default.nix b/pkgs/tools/security/linux-exploit-suggester/default.nix
index 9744c416bb74..ed68e8e7c7a3 100644
--- a/pkgs/tools/security/linux-exploit-suggester/default.nix
+++ b/pkgs/tools/security/linux-exploit-suggester/default.nix
@@ -21,6 +21,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool designed to assist in detecting security deficiencies for given Linux kernel/Linux-based machine";
+    mainProgram = "linux-exploit-suggester";
     homepage = "https://github.com/mzet-/linux-exploit-suggester";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/log4j-scan/default.nix b/pkgs/tools/security/log4j-scan/default.nix
index bd2772efb416..e3de824b223c 100644
--- a/pkgs/tools/security/log4j-scan/default.nix
+++ b/pkgs/tools/security/log4j-scan/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Scanner for finding hosts which are vulnerable for log4j";
+    mainProgram = "log4j-scan";
     homepage = "https://github.com/fullhunt/log4j-scan";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/log4j-sniffer/default.nix b/pkgs/tools/security/log4j-sniffer/default.nix
index dec7ce35866a..d13180d4e403 100644
--- a/pkgs/tools/security/log4j-sniffer/default.nix
+++ b/pkgs/tools/security/log4j-sniffer/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that scans archives to check for vulnerable log4j versions";
+    mainProgram = "log4j-sniffer";
     homepage = "https://github.com/palantir/log4j-sniffer";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/lynis/default.nix b/pkgs/tools/security/lynis/default.nix
index 90683ac2fe4d..d207e3d6e3e0 100644
--- a/pkgs/tools/security/lynis/default.nix
+++ b/pkgs/tools/security/lynis/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lynis";
-  version = "3.1.0";
+  version = "3.1.1";
 
   src = fetchFromGitHub {
     owner = "CISOfy";
     repo = pname;
     rev = version;
-    sha256 = "sha256-NdGq/sItJIjLX+7qKIwKpaZKqS/0PNFSO9H4Hp5umVk=";
+    sha256 = "sha256-DdsBGISKZuqDwSeuy8/73qskP3XoO3QRT7+bkKIJcBU=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Security auditing tool for Linux, macOS, and UNIX-based systems";
+    mainProgram = "lynis";
     homepage = "https://cisofy.com/lynis/";
     license = licenses.gpl3Only;
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/masscan/default.nix b/pkgs/tools/security/masscan/default.nix
index 107ffe92b2cc..a6aa990c1d82 100644
--- a/pkgs/tools/security/masscan/default.nix
+++ b/pkgs/tools/security/masscan/default.nix
@@ -61,6 +61,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast scan of the Internet";
+    mainProgram = "masscan";
     homepage = "https://github.com/robertdavidgraham/masscan";
     changelog = "https://github.com/robertdavidgraham/masscan/releases/tag/${version}";
     license = licenses.agpl3Only;
diff --git a/pkgs/tools/security/medusa/default.nix b/pkgs/tools/security/medusa/default.nix
index a5ac8f06d16d..3a29f2a6e283 100644
--- a/pkgs/tools/security/medusa/default.nix
+++ b/pkgs/tools/security/medusa/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/jmk-foofus/medusa";
     description = "A speedy, parallel, and modular, login brute-forcer";
+    mainProgram = "medusa";
     license = licenses.gpl2;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/tools/security/melt/default.nix b/pkgs/tools/security/melt/default.nix
index 01664f2118b1..8721e34b566f 100644
--- a/pkgs/tools/security/melt/default.nix
+++ b/pkgs/tools/security/melt/default.nix
@@ -2,21 +2,22 @@
 
 buildGoModule rec {
   pname = "melt";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "charmbracelet";
     repo = "melt";
     rev = "v${version}";
-    sha256 = "sha256-LKHAVVzVhHlYRDgQCIQDQ8MLnTzxsKo198BITdHjTDA=";
+    sha256 = "sha256-AfFsw1Xjj0RsP2LOeMBDffkcqgmxsqsE1iguP/0IDtM=";
   };
 
-  vendorHash = "sha256-xTisSPACxuBrv0R2GYinFGYNXD0zoCD8DFkirdc9gIE=";
+  vendorHash = "sha256-Ec3RWH7I8nv6ZVYLrX0b/2RWwZ6cO4qbs0XqQemUYnE=";
 
   ldflags = [ "-s" "-w" "-X=main.Version=${version}" ];
 
   meta = with lib; {
     description = "Backup and restore Ed25519 SSH keys with seed words";
+    mainProgram = "melt";
     homepage = "https://github.com/charmbracelet/melt";
     changelog = "https://github.com/charmbracelet/melt/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/metasploit/Gemfile b/pkgs/tools/security/metasploit/Gemfile
index e5c600b9ad7a..21f6f0ecbd2a 100644
--- a/pkgs/tools/security/metasploit/Gemfile
+++ b/pkgs/tools/security/metasploit/Gemfile
@@ -1,4 +1,4 @@
 # frozen_string_literal: true
 source "https://rubygems.org"
 
-gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.60"
+gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.4.0"
diff --git a/pkgs/tools/security/metasploit/Gemfile.lock b/pkgs/tools/security/metasploit/Gemfile.lock
index d0d57f703aec..b58232b1e8ef 100644
--- a/pkgs/tools/security/metasploit/Gemfile.lock
+++ b/pkgs/tools/security/metasploit/Gemfile.lock
@@ -1,9 +1,9 @@
 GIT
   remote: https://github.com/rapid7/metasploit-framework
-  revision: 5df84967c30bc92484c217aa70754596ff358ad0
-  ref: refs/tags/6.3.60
+  revision: c82de1374a222da3ca6db840432a971cfd4e865e
+  ref: refs/tags/6.4.0
   specs:
-    metasploit-framework (6.3.60)
+    metasploit-framework (6.4.0)
       actionpack (~> 7.0.0)
       activerecord (~> 7.0.0)
       activesupport (~> 7.0.0)
@@ -83,7 +83,7 @@ GIT
       rex-zip
       ruby-macho
       ruby-mysql
-      ruby_smb (~> 3.3.0)
+      ruby_smb (~> 3.3.3)
       rubyntlm
       rubyzip
       sinatra
@@ -166,7 +166,7 @@ GEM
     bcrypt (3.1.20)
     bcrypt_pbkdf (1.1.0)
     bigdecimal (3.1.6)
-    bindata (2.5.0)
+    bindata (2.4.15)
     bootsnap (1.18.3)
       msgpack (~> 1.2)
     bson (5.0.0)
@@ -398,8 +398,8 @@ GEM
     ruby-mysql (4.1.0)
     ruby-rc4 (0.1.5)
     ruby2_keywords (0.0.5)
-    ruby_smb (3.3.2)
-      bindata
+    ruby_smb (3.3.4)
+      bindata (= 2.4.15)
       openssl-ccm
       openssl-cmac
       rubyntlm
diff --git a/pkgs/tools/security/metasploit/default.nix b/pkgs/tools/security/metasploit/default.nix
index cb3db6d932d3..cacaf4ec0b0e 100644
--- a/pkgs/tools/security/metasploit/default.nix
+++ b/pkgs/tools/security/metasploit/default.nix
@@ -15,13 +15,13 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "metasploit-framework";
-  version = "6.3.60";
+  version = "6.4.0";
 
   src = fetchFromGitHub {
     owner = "rapid7";
     repo = "metasploit-framework";
     rev = "refs/tags/${version}";
-    hash = "sha256-K4NBMaoWpxbyKCtkHYzPJSIM27yY8MZZDXAuJM9T1ZE=";
+    hash = "sha256-1OWgQgnmsKxGHzX2ly/7xIJH4BcWUV6SjScxB5bMhu0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/security/metasploit/gemset.nix b/pkgs/tools/security/metasploit/gemset.nix
index bdbc5917777a..a35e66a42222 100644
--- a/pkgs/tools/security/metasploit/gemset.nix
+++ b/pkgs/tools/security/metasploit/gemset.nix
@@ -234,10 +234,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "08r67nglsqnxrbn803szf5bdnqhchhq8kf2by94f37fcl65wpp19";
+      sha256 = "04y4zgh4bbcb8wmkxwfqg4saky1d1f3xw8z6yk543q13h8ky8rz5";
       type = "gem";
     };
-    version = "2.5.0";
+    version = "2.4.15";
   };
   bootsnap = {
     groups = ["default"];
@@ -674,12 +674,12 @@
     platforms = [];
     source = {
       fetchSubmodules = false;
-      rev = "5df84967c30bc92484c217aa70754596ff358ad0";
-      sha256 = "14fmag7j8bkh1mcwdw4qpkdhq8i5ry61sr1b53r1d9qnm8ql30rb";
+      rev = "c82de1374a222da3ca6db840432a971cfd4e865e";
+      sha256 = "1vc6rjb0fc97in95wl8n2zh4g0n4zcprgxim3x3arc76151a1rfl";
       type = "git";
       url = "https://github.com/rapid7/metasploit-framework";
     };
-    version = "6.3.60";
+    version = "6.4.0";
   };
   metasploit-model = {
     groups = ["default"];
@@ -1397,10 +1397,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1yy5z53mp2l3d8k8dhf8s8hbscmgd829j50nfcgmqrli0vvz0s1a";
+      sha256 = "0wcbglknz86qf7sbsns84a35a0vvfn9cn1cbhf9ycjwh6nqxhcim";
       type = "gem";
     };
-    version = "3.3.2";
+    version = "3.3.4";
   };
   rubyntlm = {
     groups = ["default"];
diff --git a/pkgs/tools/security/mfcuk/default.nix b/pkgs/tools/security/mfcuk/default.nix
index 3128a787807a..d6736b5b097a 100644
--- a/pkgs/tools/security/mfcuk/default.nix
+++ b/pkgs/tools/security/mfcuk/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "MiFare Classic Universal toolKit";
+    mainProgram = "mfcuk";
     license = licenses.gpl2;
     homepage = "https://github.com/nfc-tools/mfcuk";
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/tools/security/mfoc/default.nix b/pkgs/tools/security/mfoc/default.nix
index ca1f4a5e4f25..9ede0ffc6157 100644
--- a/pkgs/tools/security/mfoc/default.nix
+++ b/pkgs/tools/security/mfoc/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Mifare Classic Offline Cracker";
+    mainProgram = "mfoc";
     license = licenses.gpl2;
     homepage = "https://github.com/nfc-tools/mfoc";
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/tools/security/minica/default.nix b/pkgs/tools/security/minica/default.nix
index 6dd6d1fd5ce0..e7a05412303e 100644
--- a/pkgs/tools/security/minica/default.nix
+++ b/pkgs/tools/security/minica/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A simple tool for generating self signed certificates";
+    mainProgram = "minica";
     longDescription = ''
       Minica is a simple CA intended for use in situations where the CA operator
       also operates each host where a certificate will be used. It automatically
diff --git a/pkgs/tools/security/mitm6/default.nix b/pkgs/tools/security/mitm6/default.nix
index a7587330e7b9..f3626355fbb1 100644
--- a/pkgs/tools/security/mitm6/default.nix
+++ b/pkgs/tools/security/mitm6/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = {
     description = "DHCPv6 network spoofing application";
+    mainProgram = "mitm6";
     homepage = "https://github.com/dirkjanm/mitm6";
     license = lib.licenses.gpl2Only;
     maintainers = with lib.maintainers; [ arcayr ];
diff --git a/pkgs/tools/security/mitmproxy2swagger/default.nix b/pkgs/tools/security/mitmproxy2swagger/default.nix
index 56d47973b7e3..0c940692f9e8 100644
--- a/pkgs/tools/security/mitmproxy2swagger/default.nix
+++ b/pkgs/tools/security/mitmproxy2swagger/default.nix
@@ -39,6 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to automagically reverse-engineer REST APIs";
+    mainProgram = "mitmproxy2swagger";
     homepage = "https://github.com/alufers/mitmproxy2swagger";
     changelog = "https://github.com/alufers/mitmproxy2swagger/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/mkpasswd/default.nix b/pkgs/tools/security/mkpasswd/default.nix
index 2ee71b8227eb..00b1e8a01501 100644
--- a/pkgs/tools/security/mkpasswd/default.nix
+++ b/pkgs/tools/security/mkpasswd/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://packages.qa.debian.org/w/whois.html";
     description = "Overfeatured front-end to crypt, from the Debian whois package";
+    mainProgram = "mkpasswd";
     license = licenses.gpl2;
     maintainers = with maintainers; [ fpletz ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/mkrand/default.nix b/pkgs/tools/security/mkrand/default.nix
index 21c9586cd6c3..b0ebe7e521fa 100644
--- a/pkgs/tools/security/mkrand/default.nix
+++ b/pkgs/tools/security/mkrand/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A Digital Random Bit Generator";
+    mainProgram = "mkrand";
     longDescription = "MKRAND is a utility for generating random information.";
     homepage = "https://github.com/mknight-tag/MKRAND/";
     license = lib.licenses.mit;
diff --git a/pkgs/tools/security/mktemp/default.nix b/pkgs/tools/security/mktemp/default.nix
index 5010780800de..ca16611332f7 100644
--- a/pkgs/tools/security/mktemp/default.nix
+++ b/pkgs/tools/security/mktemp/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Simple tool to make temporary file handling in shells scripts safe and simple";
+    mainProgram = "mktemp";
     homepage = "https://www.mktemp.org";
     license = licenses.isc;
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/mokutil/default.nix b/pkgs/tools/security/mokutil/default.nix
index eb4eb5b1deb3..cd36b8eaa1e9 100644
--- a/pkgs/tools/security/mokutil/default.nix
+++ b/pkgs/tools/security/mokutil/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mokutil";
-  version = "0.7.1";
+  version = "0.7.2";
 
   src = fetchFromGitHub {
     owner = "lcp";
     repo = pname;
     rev = version;
-    sha256 = "sha256-vxSYwsQ+xjW7a7gZhvgX4lzA7my6BZCYGwE1bLceTQA=";
+    sha256 = "sha256-DO3S1O0AKoI8gssnUyBTRj5lDNs6hhisc/5dTIqmbzM=";
   };
 
   nativeBuildInputs = [
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/lcp/mokutil";
     description = "Utility to manipulate machines owner keys";
+    mainProgram = "mokutil";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ nickcao ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/monsoon/default.nix b/pkgs/tools/security/monsoon/default.nix
index 8ac0c834ee03..3341366e47bb 100644
--- a/pkgs/tools/security/monsoon/default.nix
+++ b/pkgs/tools/security/monsoon/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast HTTP enumerator";
+    mainProgram = "monsoon";
     longDescription = ''
       A fast HTTP enumerator that allows you to execute a large number of HTTP
       requests, filter the responses and display them in real-time.
diff --git a/pkgs/tools/security/mpw/default.nix b/pkgs/tools/security/mpw/default.nix
index 8d6f7f4f3b1d..25c71eb046db 100644
--- a/pkgs/tools/security/mpw/default.nix
+++ b/pkgs/tools/security/mpw/default.nix
@@ -57,6 +57,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A stateless password management solution";
+    mainProgram = "mpw";
     homepage = "https://masterpasswordapp.com/";
     license = licenses.gpl3;
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/msfpc/default.nix b/pkgs/tools/security/msfpc/default.nix
index 428611181410..afc67cc4dde3 100644
--- a/pkgs/tools/security/msfpc/default.nix
+++ b/pkgs/tools/security/msfpc/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "MSFvenom Payload Creator";
+    mainProgram = "msfpc";
     homepage = "https://github.com/g0tmi1k/msfpc";
     license = licenses.mit;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/mx-takeover/default.nix b/pkgs/tools/security/mx-takeover/default.nix
index 88ef8fbf3ed0..13804b4e8872 100644
--- a/pkgs/tools/security/mx-takeover/default.nix
+++ b/pkgs/tools/security/mx-takeover/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to work with DNS MX records";
+    mainProgram = "mx-takeover";
     homepage = "https://github.com/musana/mx-takeover";
     changelog = "https://github.com/musana/mx-takeover/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/naabu/default.nix b/pkgs/tools/security/naabu/default.nix
index 30d45b74e9fc..a10c6601412b 100644
--- a/pkgs/tools/security/naabu/default.nix
+++ b/pkgs/tools/security/naabu/default.nix
@@ -34,6 +34,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast SYN/CONNECT port scanner";
+    mainProgram = "naabu";
     longDescription = ''
       Naabu is a port scanning tool written in Go that allows you to enumerate
       valid ports for hosts in a fast and reliable manner. It is a really simple
diff --git a/pkgs/tools/security/nasty/default.nix b/pkgs/tools/security/nasty/default.nix
index b3b19c9268bf..f0bd0d406c33 100644
--- a/pkgs/tools/security/nasty/default.nix
+++ b/pkgs/tools/security/nasty/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Recover the passphrase of your PGP or GPG-key";
+    mainProgram = "nasty";
     longDescription = ''
     Nasty is a program that helps you to recover the passphrase of your PGP or GPG-key
     in case you forget or lost it. It is mostly a proof-of-concept: with a different implementation
diff --git a/pkgs/tools/security/nbtscanner/default.nix b/pkgs/tools/security/nbtscanner/default.nix
index 51e9f085164b..b70f554f33fd 100644
--- a/pkgs/tools/security/nbtscanner/default.nix
+++ b/pkgs/tools/security/nbtscanner/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "NetBIOS scanner written in Rust";
+    mainProgram = "nbtscanner";
     homepage = "https://github.com/jonkgrimes/nbtscanner";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ncrack/default.nix b/pkgs/tools/security/ncrack/default.nix
index 4b0feccb412a..bfce4dd37123 100644
--- a/pkgs/tools/security/ncrack/default.nix
+++ b/pkgs/tools/security/ncrack/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Network authentication tool";
+    mainProgram = "ncrack";
     homepage = "https://nmap.org/ncrack/";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/tools/security/nitrokey-app/default.nix b/pkgs/tools/security/nitrokey-app/default.nix
index 8e654900e172..018a18656381 100644
--- a/pkgs/tools/security/nitrokey-app/default.nix
+++ b/pkgs/tools/security/nitrokey-app/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Provides extra functionality for the Nitrokey Pro and Storage";
+    mainProgram = "nitrokey-app";
     longDescription = ''
       The nitrokey-app provides a QT system tray widget with which you can
       access the extra functionality of a Nitrokey Storage or Nitrokey Pro.
diff --git a/pkgs/tools/security/nmap-formatter/default.nix b/pkgs/tools/security/nmap-formatter/default.nix
index b78cb2e075d2..ade602a65375 100644
--- a/pkgs/tools/security/nmap-formatter/default.nix
+++ b/pkgs/tools/security/nmap-formatter/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that allows you to convert nmap output";
+    mainProgram = "nmap-formatter";
     homepage = "https://github.com/vdjagilev/nmap-formatter";
     changelog = "https://github.com/vdjagilev/nmap-formatter/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/nmap/qt.nix b/pkgs/tools/security/nmap/qt.nix
index b4e406a0035b..56ebc5db6213 100644
--- a/pkgs/tools/security/nmap/qt.nix
+++ b/pkgs/tools/security/nmap/qt.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Qt frontend for nmap";
+    mainProgram = "nmapsi4";
     license = licenses.gpl2;
     maintainers = with maintainers; [ peterhoeg ];
     inherit (src.meta) homepage;
diff --git a/pkgs/tools/security/noseyparker/default.nix b/pkgs/tools/security/noseyparker/default.nix
index c6e4056d9fab..72a1d87f1112 100644
--- a/pkgs/tools/security/noseyparker/default.nix
+++ b/pkgs/tools/security/noseyparker/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Find secrets and sensitive information in textual data";
+    mainProgram = "noseyparker";
     homepage = "https://github.com/praetorian-inc/noseyparker";
     changelog = "https://github.com/praetorian-inc/noseyparker/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/nosqli/default.nix b/pkgs/tools/security/nosqli/default.nix
index 47095902cea6..3a1721831a0a 100644
--- a/pkgs/tools/security/nosqli/default.nix
+++ b/pkgs/tools/security/nosqli/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "NoSql Injection tool for finding vulnerable websites using MongoDB";
+    mainProgram = "nosqli";
     homepage = "https://github.com/Charlie-belmer/nosqli";
     license = with licenses; [ agpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/notary/default.nix b/pkgs/tools/security/notary/default.nix
index ab6ec0b16818..f1fed4806eb4 100644
--- a/pkgs/tools/security/notary/default.nix
+++ b/pkgs/tools/security/notary/default.nix
@@ -37,6 +37,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "A project that allows anyone to have trust over arbitrary collections of data";
+    mainProgram = "notary";
     longDescription = ''
       The Notary project comprises a server and a client for running and
       interacting with trusted collections. See the service architecture
diff --git a/pkgs/tools/security/ntlmrecon/default.nix b/pkgs/tools/security/ntlmrecon/default.nix
index 648e2d585e09..10a564706c9a 100644
--- a/pkgs/tools/security/ntlmrecon/default.nix
+++ b/pkgs/tools/security/ntlmrecon/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Information enumerator for NTLM authentication enabled web endpoints";
+    mainProgram = "ntlmrecon";
     homepage = "https://github.com/pwnfoo/NTLMRecon";
     changelog = "https://github.com/pwnfoo/NTLMRecon/releases/tag/v-${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/nuclei/default.nix b/pkgs/tools/security/nuclei/default.nix
index 6d2c932d47d8..a89bb3cbf62e 100644
--- a/pkgs/tools/security/nuclei/default.nix
+++ b/pkgs/tools/security/nuclei/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "nuclei";
-  version = "3.2.0";
+  version = "3.2.2";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = "nuclei";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LjRhJoPK/zaM0Wuy2IC3H3jfmNvhAP5hZpywjaRM6t4=";
+    hash = "sha256-eYFHKXB6TSCLPMKiXvuSpt/2B+rbn7VZqoGEHp2vito=";
   };
 
-  vendorHash = "sha256-OInqR1+5XgMlTSbH6E8X7Ljny6BEHk1Sh+72NoDxtAI=";
+  vendorHash = "sha256-s0hspa3fKMHmFPPwB0tCDJoGEH2JpgFUaIbiSQJTtr0=";
 
   subPackages = [
     "cmd/nuclei/"
diff --git a/pkgs/tools/security/nwipe/default.nix b/pkgs/tools/security/nwipe/default.nix
index 35ca1f9b4125..00c66f351930 100644
--- a/pkgs/tools/security/nwipe/default.nix
+++ b/pkgs/tools/security/nwipe/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Securely erase disks";
+    mainProgram = "nwipe";
     homepage = "https://github.com/martijnvanbrummelen/nwipe";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ woffs ];
diff --git a/pkgs/tools/security/oauth2c/default.nix b/pkgs/tools/security/oauth2c/default.nix
index 2cc9a05e3d15..292ac255b3a0 100644
--- a/pkgs/tools/security/oauth2c/default.nix
+++ b/pkgs/tools/security/oauth2c/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/cloudentity/oauth2c";
     description = "User-friendly OAuth2 CLI";
+    mainProgram = "oauth2c";
     longDescription = ''
       oauth2c is a command-line tool for interacting with OAuth 2.0
       authorization servers. Its goal is to make it easy to fetch access tokens
diff --git a/pkgs/tools/security/octosuite/default.nix b/pkgs/tools/security/octosuite/default.nix
index 88b29dce721c..af4dd9c39740 100644
--- a/pkgs/tools/security/octosuite/default.nix
+++ b/pkgs/tools/security/octosuite/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Advanced Github OSINT framework";
+    mainProgram = "octosuite";
     homepage = "https://github.com/bellingcat/octosuite";
     changelog = "https://github.com/bellingcat/octosuite/releases/tag/${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/onioncircuits/default.nix b/pkgs/tools/security/onioncircuits/default.nix
index c1468becc262..95692ef1c188 100644
--- a/pkgs/tools/security/onioncircuits/default.nix
+++ b/pkgs/tools/security/onioncircuits/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
     broken = stdenv.isDarwin;
     homepage = "https://tails.boum.org";
     description = "GTK application to display Tor circuits and streams";
+    mainProgram = "onioncircuits";
     license = licenses.gpl3;
     maintainers = with maintainers; [ milran ];
   };
diff --git a/pkgs/tools/security/onlykey-cli/default.nix b/pkgs/tools/security/onlykey-cli/default.nix
index 4d0b0a267a38..624290c6d555 100644
--- a/pkgs/tools/security/onlykey-cli/default.nix
+++ b/pkgs/tools/security/onlykey-cli/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "OnlyKey client and command-line tool";
+    mainProgram = "onlykey-cli";
     homepage = "https://github.com/trustcrypto/python-onlykey";
     license = licenses.mit;
     maintainers = with maintainers; [ ranfdev ];
diff --git a/pkgs/tools/security/open-ecard/default.nix b/pkgs/tools/security/open-ecard/default.nix
index e8afdf6bf8c0..a3f3f72bc631 100644
--- a/pkgs/tools/security/open-ecard/default.nix
+++ b/pkgs/tools/security/open-ecard/default.nix
@@ -55,6 +55,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Client side implementation of the eCard-API-Framework (BSI
       TR-03112) and related international standards, such as ISO/IEC 24727";
+    mainProgram = "open-ecard";
     homepage = "https://www.openecard.org/";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.gpl3;
diff --git a/pkgs/tools/security/openrisk/default.nix b/pkgs/tools/security/openrisk/default.nix
index fc8475ca71a2..ebc177a6908f 100644
--- a/pkgs/tools/security/openrisk/default.nix
+++ b/pkgs/tools/security/openrisk/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that generates an AI-based risk score";
+    mainProgram = "openrisk";
     homepage = "https://github.com/projectdiscovery/openrisk";
     changelog = "https://github.com/projectdiscovery/openrisk/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/orjail/default.nix b/pkgs/tools/security/orjail/default.nix
index adcbf5ae4f9f..ed2d64588306 100644
--- a/pkgs/tools/security/orjail/default.nix
+++ b/pkgs/tools/security/orjail/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Force programs to exclusively use tor network";
+    mainProgram = "orjail";
     homepage = "https://github.com/orjail/orjail";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/tools/security/ospd-openvas/default.nix b/pkgs/tools/security/ospd-openvas/default.nix
index 0e4b4b16e752..82afa1e0fec1 100644
--- a/pkgs/tools/security/ospd-openvas/default.nix
+++ b/pkgs/tools/security/ospd-openvas/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "ospd-openvas";
-  version = "22.6.2";
-  format = "pyproject";
+  version = "22.7.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "greenbone";
     repo = "ospd-openvas";
     rev = "refs/tags/v${version}";
-    hash = "sha256-SO2+PpxjyP+Yba0X81EgNCOAu7ntlG7zOeWA+7XdRIA=";
+    hash = "sha256-aBrJODymUMj0sflJW/+dMYZBRPYqtS1L2UBENDXb2Xw=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/tools/security/osv-detector/default.nix b/pkgs/tools/security/osv-detector/default.nix
index 58db4504d23d..3be67c91d265 100644
--- a/pkgs/tools/security/osv-detector/default.nix
+++ b/pkgs/tools/security/osv-detector/default.nix
@@ -48,6 +48,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Auditing tool for detecting vulnerabilities";
+    mainProgram = "osv-detector";
     homepage = "https://github.com/G-Rath/osv-detector";
     changelog = "https://github.com/G-Rath/osv-detector/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/osv-scanner/default.nix b/pkgs/tools/security/osv-scanner/default.nix
index 26dfe919c428..e51ce66ad024 100644
--- a/pkgs/tools/security/osv-scanner/default.nix
+++ b/pkgs/tools/security/osv-scanner/default.nix
@@ -6,16 +6,16 @@
 }:
 buildGoModule rec {
   pname = "osv-scanner";
-  version = "1.6.2";
+  version = "1.7.1";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-/V0zn4Aic6tBJw23YJWkyeCZXf/ehIZlKWd9TZXe40Y=";
+    hash = "sha256-JlTD8el4hXVYI76+cxGNemkUu0n2QxCqisr6R9aPqdI=";
   };
 
-  vendorHash = "sha256-wIXc0YYTdcnUBNbypVwZJ/RNTmaeMteEujmgs5WJ1g0=";
+  vendorHash = "sha256-J5qLs4EirBOfjnLv8eQBSd9w9nzpxBW5GS28CgQMsN8=";
 
   subPackages = [
     "cmd/osv-scanner"
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Vulnerability scanner written in Go which uses the data provided by https://osv.dev";
+    mainProgram = "osv-scanner";
     homepage = "https://github.com/google/osv-scanner";
     changelog = "https://github.com/google/osv-scanner/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/otpauth/default.nix b/pkgs/tools/security/otpauth/default.nix
index e4ffadef63e0..95d9288b6bab 100644
--- a/pkgs/tools/security/otpauth/default.nix
+++ b/pkgs/tools/security/otpauth/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Google Authenticator migration decoder";
+    mainProgram = "otpauth";
     homepage = "https://github.com/dim13/otpauth";
     license = licenses.isc;
     maintainers = with maintainers; [ ereslibre ];
diff --git a/pkgs/tools/security/ots/default.nix b/pkgs/tools/security/ots/default.nix
index bba9e8e6fb89..7d55bb84d976 100644
--- a/pkgs/tools/security/ots/default.nix
+++ b/pkgs/tools/security/ots/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Share end-to-end encrypted secrets with others via a one-time URL";
+    mainProgram = "ots";
     homepage = "https://ots.sniptt.com";
     changelog = "https://github.com/sniptt-official/ots/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/pamtester/default.nix b/pkgs/tools/security/pamtester/default.nix
index d9e59290d676..7261be60f77f 100644
--- a/pkgs/tools/security/pamtester/default.nix
+++ b/pkgs/tools/security/pamtester/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Utility program to test the PAM facility";
+    mainProgram = "pamtester";
     homepage = "https://pamtester.sourceforge.net/";
     license = licenses.bsd3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/paperkey/default.nix b/pkgs/tools/security/paperkey/default.nix
index 8e86415cb9e8..a22c1617f07b 100644
--- a/pkgs/tools/security/paperkey/default.nix
+++ b/pkgs/tools/security/paperkey/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Store OpenPGP or GnuPG on paper";
+    mainProgram = "paperkey";
     longDescription = ''
       A reasonable way to achieve a long term backup of OpenPGP (GnuPG, PGP, etc)
       keys is to print them out on paper. Paper and ink have amazingly long
diff --git a/pkgs/tools/security/pass/extensions/import.nix b/pkgs/tools/security/pass/extensions/import.nix
index 8c51356e184b..cbba33c1373a 100644
--- a/pkgs/tools/security/pass/extensions/import.nix
+++ b/pkgs/tools/security/pass/extensions/import.nix
@@ -60,6 +60,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Pass extension for importing data from existing password managers";
+    mainProgram = "pimport";
     homepage = "https://github.com/roddhjav/pass-import";
     changelog = "https://github.com/roddhjav/pass-import/blob/v${version}/CHANGELOG.rst";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/security/pass/rofi-pass.nix b/pkgs/tools/security/pass/rofi-pass.nix
index b8fd130df24b..9bf699571592 100644
--- a/pkgs/tools/security/pass/rofi-pass.nix
+++ b/pkgs/tools/security/pass/rofi-pass.nix
@@ -84,6 +84,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A script to make rofi work with password-store";
+    mainProgram = "rofi-pass";
     homepage = "https://github.com/carnager/rofi-pass";
     license = lib.licenses.gpl3;
     platforms = with lib.platforms; linux;
diff --git a/pkgs/tools/security/pass/wofi-pass.nix b/pkgs/tools/security/pass/wofi-pass.nix
index 46ba88ec8cd3..9db6a7ffda35 100644
--- a/pkgs/tools/security/pass/wofi-pass.nix
+++ b/pkgs/tools/security/pass/wofi-pass.nix
@@ -29,13 +29,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "wofi-pass";
-  version = "24.0.0";
+  version = "24.0.2";
 
   src = fetchFromGitHub {
     owner = "schmidtandreas";
     repo = "wofi-pass";
     rev = "v${version}";
-    sha256 = "sha256-tmRfbcX83AfPx7yPajQIqrJVXzzhQhi9JZN8TIIpRrc=";
+    sha256 = "sha256-OtUz0YLKuEzA4kv+llrOll0L84nMTkYH6JPxrkQKB6I=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/pass2csv/default.nix b/pkgs/tools/security/pass2csv/default.nix
index aad6338391ee..101af2e7aa94 100644
--- a/pkgs/tools/security/pass2csv/default.nix
+++ b/pkgs/tools/security/pass2csv/default.nix
@@ -28,6 +28,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Export pass(1), \"the standard unix password manager\", to CSV";
+    mainProgram = "pass2csv";
     homepage = "https://github.com/reinefjord/pass2csv";
     license = licenses.mit;
     maintainers = with maintainers; [ wolfangaukang ];
diff --git a/pkgs/tools/security/passphrase2pgp/default.nix b/pkgs/tools/security/passphrase2pgp/default.nix
index 0ccbcca06c20..0470fd8cfee6 100644
--- a/pkgs/tools/security/passphrase2pgp/default.nix
+++ b/pkgs/tools/security/passphrase2pgp/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Predictable, passphrase-based PGP key generator";
+    mainProgram = "passphrase2pgp";
     homepage = "https://github.com/skeeto/passphrase2pgp";
     license = licenses.unlicense;
     maintainers = with maintainers; [ kaction ];
diff --git a/pkgs/tools/security/pcsc-cyberjack/default.nix b/pkgs/tools/security/pcsc-cyberjack/default.nix
index 04aad0b27739..fa96753a54f6 100644
--- a/pkgs/tools/security/pcsc-cyberjack/default.nix
+++ b/pkgs/tools/security/pcsc-cyberjack/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "REINER SCT cyberJack USB chipcard reader user space driver";
+    mainProgram = "cjflash";
     homepage = "https://www.reiner-sct.com/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ aszlig flokli ];
diff --git a/pkgs/tools/security/pcsclite/default.nix b/pkgs/tools/security/pcsclite/default.nix
index 2b55b76b6654..956bf451c7bf 100644
--- a/pkgs/tools/security/pcsclite/default.nix
+++ b/pkgs/tools/security/pcsclite/default.nix
@@ -19,7 +19,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   inherit pname;
-  version = "2.0.1";
+  version = "2.0.3";
 
   outputs = [ "out" "lib" "dev" "doc" "man" ];
 
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "rousseau";
     repo = "PCSC";
     rev = "refs/tags/${finalAttrs.version}";
-    hash = "sha256-7NGlU4byGxtGBticewg8K4FUiDSQZAiB7Q/y+LaqKPo=";
+    hash = "sha256-VDQh2PYAMFwgWvZFD20H3JxgKSFrSUoDLv/6fKEoy5Y=";
   };
 
   configureFlags = [
diff --git a/pkgs/tools/security/pdfcrack/default.nix b/pkgs/tools/security/pdfcrack/default.nix
index d4930b023b6f..ae863e1ec1f5 100644
--- a/pkgs/tools/security/pdfcrack/default.nix
+++ b/pkgs/tools/security/pdfcrack/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://pdfcrack.sourceforge.net/";
     description = "Small command line driven tool for recovering passwords and content from PDF files";
+    mainProgram = "pdfcrack";
     license = with licenses; [ gpl2Plus ];
     platforms = platforms.all;
     maintainers = with maintainers; [ qoelet ];
diff --git a/pkgs/tools/security/pgpdump/default.nix b/pkgs/tools/security/pgpdump/default.nix
index 9ebe0d920027..31a1c506f329 100644
--- a/pkgs/tools/security/pgpdump/default.nix
+++ b/pkgs/tools/security/pgpdump/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A PGP packet visualizer";
+    mainProgram = "pgpdump";
     longDescription = ''
       pgpdump is a PGP packet visualizer which displays the packet format of
       OpenPGP (RFC 4880) and PGP version 2 (RFC 1991).
diff --git a/pkgs/tools/security/plecost/default.nix b/pkgs/tools/security/plecost/default.nix
index 23dd8c220cac..477ed9e82645 100644
--- a/pkgs/tools/security/plecost/default.nix
+++ b/pkgs/tools/security/plecost/default.nix
@@ -33,6 +33,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Vulnerability fingerprinting and vulnerability finder for Wordpress blog engine";
+    mainProgram = "plecost";
     homepage = "https://github.com/iniqua/plecost";
     license = licenses.bsd3;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/pomerium-cli/default.nix b/pkgs/tools/security/pomerium-cli/default.nix
index 67c44930f0da..cff903021591 100644
--- a/pkgs/tools/security/pomerium-cli/default.nix
+++ b/pkgs/tools/security/pomerium-cli/default.nix
@@ -56,6 +56,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://pomerium.io";
     description = "Client-side helper for Pomerium authenticating reverse proxy";
+    mainProgram = "pomerium-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ lukegb ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/posteid-seed-extractor/default.nix b/pkgs/tools/security/posteid-seed-extractor/default.nix
index 176b210b3779..b0c1f04d21a4 100644
--- a/pkgs/tools/security/posteid-seed-extractor/default.nix
+++ b/pkgs/tools/security/posteid-seed-extractor/default.nix
@@ -41,6 +41,7 @@ python3Packages.buildPythonApplication {
   meta = with lib; {
     homepage = "https://github.com/simone36050/PosteID-seed-extractor";
     description = "Extract OTP seed instead of using PosteID app";
+    mainProgram = "posteid-seed-extractor";
     license = licenses.mit;
     maintainers = with maintainers; [ aciceri ];
   };
diff --git a/pkgs/tools/security/pretender/default.nix b/pkgs/tools/security/pretender/default.nix
index 91452f34d62b..9d7df071224d 100644
--- a/pkgs/tools/security/pretender/default.nix
+++ b/pkgs/tools/security/pretender/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for handling machine-in-the-middle tasks";
+    mainProgram = "pretender";
     homepage = "https://github.com/RedTeamPentesting/pretender";
     changelog = "https://github.com/RedTeamPentesting/pretender/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/proxmark3/default.nix b/pkgs/tools/security/proxmark3/default.nix
index bbdbec9d5d0e..ee37f938b5d9 100644
--- a/pkgs/tools/security/proxmark3/default.nix
+++ b/pkgs/tools/security/proxmark3/default.nix
@@ -26,13 +26,13 @@
 assert withBlueshark -> stdenv.hostPlatform.isLinux;
 stdenv.mkDerivation (finalAttrs: {
   pname = "proxmark3";
-  version = "4.18218";
+  version = "4.18341";
 
   src = fetchFromGitHub {
     owner = "RfidResearchGroup";
     repo = "proxmark3";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-LltTTmYEF1JsqkVaj7Z19qGR+dEUj6Hwr6T5Z1eDzZc=";
+    hash = "sha256-YeBrrzCiDgl4WdhWYatm9sOAtBAECIv/f+OzB/RTdeg=";
   };
 
   patches = [
diff --git a/pkgs/tools/security/pwdsafety/default.nix b/pkgs/tools/security/pwdsafety/default.nix
index 12785154a177..e713d7e014ab 100644
--- a/pkgs/tools/security/pwdsafety/default.nix
+++ b/pkgs/tools/security/pwdsafety/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command line tool checking password safety";
+    mainProgram = "cmd";
     homepage = "https://github.com/edoardottt/pwdsafety";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/pwncat/default.nix b/pkgs/tools/security/pwncat/default.nix
index 398132c4cee7..98b782bf194c 100644
--- a/pkgs/tools/security/pwncat/default.nix
+++ b/pkgs/tools/security/pwncat/default.nix
@@ -17,6 +17,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "TCP/UDP communication suite";
+    mainProgram = "pwncat";
     homepage = "https://pwncat.org/";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/qdigidoc/default.nix b/pkgs/tools/security/qdigidoc/default.nix
index 097ef5023974..862249d2ebd1 100644
--- a/pkgs/tools/security/qdigidoc/default.nix
+++ b/pkgs/tools/security/qdigidoc/default.nix
@@ -60,6 +60,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Qt-based UI for signing and verifying DigiDoc documents";
+    mainProgram = "qdigidoc4";
     homepage = "https://www.id.ee/";
     license = licenses.lgpl21Plus;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/quill-qr/default.nix b/pkgs/tools/security/quill-qr/default.nix
index 55c2f45cc683..826f2e51799c 100644
--- a/pkgs/tools/security/quill-qr/default.nix
+++ b/pkgs/tools/security/quill-qr/default.nix
@@ -38,6 +38,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Print QR codes for use with https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/";
+    mainProgram = "quill-qr.sh";
     homepage = "https://github.com/IvanMalison/quill-qr";
     maintainers = with maintainers; [ imalison ];
     platforms = with platforms; linux;
diff --git a/pkgs/tools/security/quill/default.nix b/pkgs/tools/security/quill/default.nix
index 5de9e8b8b3fc..71ffc7af5c15 100644
--- a/pkgs/tools/security/quill/default.nix
+++ b/pkgs/tools/security/quill/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dfinity/quill";
     changelog = "https://github.com/dfinity/quill/releases/tag/v${version}";
     description = "Minimalistic ledger and governance toolkit for cold wallets on the Internet Computer";
+    mainProgram = "quill";
     license = licenses.asl20;
     maintainers = with maintainers; [ imalison ];
   };
diff --git a/pkgs/tools/security/radamsa/default.nix b/pkgs/tools/security/radamsa/default.nix
index ebcd2a42191d..1903b435b770 100644
--- a/pkgs/tools/security/radamsa/default.nix
+++ b/pkgs/tools/security/radamsa/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A general purpose fuzzer";
+    mainProgram = "radamsa";
     longDescription = "Radamsa is a general purpose data fuzzer. It reads data from given sample files, or standard input if none are given, and outputs modified data. It is usually used to generate malformed data for testing programs.";
     homepage =  "https://gitlab.com/akihe/radamsa";
     maintainers = [ ];
diff --git a/pkgs/tools/security/redwax-tool/default.nix b/pkgs/tools/security/redwax-tool/default.nix
index af327cba948b..50a2d36699e7 100644
--- a/pkgs/tools/security/redwax-tool/default.nix
+++ b/pkgs/tools/security/redwax-tool/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://redwax.eu/rt/";
     description = "Universal certificate conversion tool";
+    mainProgram = "redwax-tool";
     longDescription = ''
       Read certificates and keys from your chosen sources, filter the
       certificates and keys you're interested in, write those
diff --git a/pkgs/tools/security/regpg/default.nix b/pkgs/tools/security/regpg/default.nix
index aaefbef227b8..e14fdbbbb759 100644
--- a/pkgs/tools/security/regpg/default.nix
+++ b/pkgs/tools/security/regpg/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GPG wrapper utility for storing secrets in VCS";
+    mainProgram = "regpg";
     homepage = "https://dotat.at/prog/regpg";
     license = licenses.gpl3;
     platforms = platforms.all;
diff --git a/pkgs/tools/security/responder/default.nix b/pkgs/tools/security/responder/default.nix
index a51bb40ac5fd..9c6b343eb5c1 100644
--- a/pkgs/tools/security/responder/default.nix
+++ b/pkgs/tools/security/responder/default.nix
@@ -47,6 +47,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server";
+    mainProgram = "responder";
     homepage = "https://github.com/lgandx/Responder";
     changelog = "https://github.com/lgandx/Responder/blob/master/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/ripasso/cursive.nix b/pkgs/tools/security/ripasso/cursive.nix
index b3e8274b450c..faef4dbff48a 100644
--- a/pkgs/tools/security/ripasso/cursive.nix
+++ b/pkgs/tools/security/ripasso/cursive.nix
@@ -73,6 +73,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple password manager written in Rust";
+    mainProgram = "ripasso-cursive";
     homepage = "https://github.com/cortex/ripasso";
     license = licenses.gpl3;
     maintainers = with maintainers; [ sgo ];
diff --git a/pkgs/tools/security/rustscan/default.nix b/pkgs/tools/security/rustscan/default.nix
index 099e685fec03..5189b7c882b7 100644
--- a/pkgs/tools/security/rustscan/default.nix
+++ b/pkgs/tools/security/rustscan/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Faster Nmap Scanning with Rust";
+    mainProgram = "rustscan";
     homepage = "https://github.com/RustScan/RustScan";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/security/s5/default.nix b/pkgs/tools/security/s5/default.nix
index 7d63c4cb8a67..f4ef34209d8e 100644
--- a/pkgs/tools/security/s5/default.nix
+++ b/pkgs/tools/security/s5/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "cipher/decipher text within a file";
+    mainProgram = "s5";
     homepage = "https://github.com/mvisonneau/s5";
     license = licenses.asl20;
     platforms = platforms.unix ++ platforms.darwin;
diff --git a/pkgs/tools/security/safe/default.nix b/pkgs/tools/security/safe/default.nix
index 2024cd8ff27b..63fe240e5619 100644
--- a/pkgs/tools/security/safe/default.nix
+++ b/pkgs/tools/security/safe/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A Vault CLI";
+    mainProgram = "safe";
     homepage = "https://github.com/starkandwayne/safe";
     license = licenses.mit;
     maintainers = with maintainers; [ eonpatapon ];
diff --git a/pkgs/tools/security/saml2aws/default.nix b/pkgs/tools/security/saml2aws/default.nix
index a4246f3c4df4..beb2b89e20b4 100644
--- a/pkgs/tools/security/saml2aws/default.nix
+++ b/pkgs/tools/security/saml2aws/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP";
+    mainProgram = "saml2aws";
     homepage    = "https://github.com/Versent/saml2aws";
     license     = licenses.mit;
     maintainers = [ lib.maintainers.pmyjavec ];
diff --git a/pkgs/tools/security/sammler/default.nix b/pkgs/tools/security/sammler/default.nix
index edc04d86371e..7a7990aee1f9 100644
--- a/pkgs/tools/security/sammler/default.nix
+++ b/pkgs/tools/security/sammler/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to extract useful data from documents";
+    mainProgram = "sammler";
     homepage = "https://github.com/redcode-labs/Sammler";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ] ++ teams.redcodelabs.members;
diff --git a/pkgs/tools/security/sbctl/default.nix b/pkgs/tools/security/sbctl/default.nix
index a5fe6cf6548c..ac3e2a4dd43f 100644
--- a/pkgs/tools/security/sbctl/default.nix
+++ b/pkgs/tools/security/sbctl/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Secure Boot key manager";
+    mainProgram = "sbctl";
     homepage = "https://github.com/Foxboron/sbctl";
     license = licenses.mit;
     maintainers = with maintainers; [ raitobezarius ];
diff --git a/pkgs/tools/security/scilla/default.nix b/pkgs/tools/security/scilla/default.nix
index 79f743ea0ce8..0484cfaa9f87 100644
--- a/pkgs/tools/security/scilla/default.nix
+++ b/pkgs/tools/security/scilla/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Information gathering tool for DNS, ports and more";
+    mainProgram = "scilla";
     homepage = "https://github.com/edoardottt/scilla";
     changelog = "https://github.com/edoardottt/scilla/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/scorecard/default.nix b/pkgs/tools/security/scorecard/default.nix
index b460f52aa292..265253bba51b 100644
--- a/pkgs/tools/security/scorecard/default.nix
+++ b/pkgs/tools/security/scorecard/default.nix
@@ -83,6 +83,7 @@ buildGoModule rec {
     homepage = "https://github.com/ossf/scorecard";
     changelog = "https://github.com/ossf/scorecard/releases/tag/v${version}";
     description = "Security health metrics for Open Source";
+    mainProgram = "scorecard";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk developer-guy ];
   };
diff --git a/pkgs/tools/security/scrypt/default.nix b/pkgs/tools/security/scrypt/default.nix
index d2b8228f6511..d1deaa0ec41d 100644
--- a/pkgs/tools/security/scrypt/default.nix
+++ b/pkgs/tools/security/scrypt/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Encryption utility";
+    mainProgram = "scrypt";
     homepage    = "https://www.tarsnap.com/scrypt.html";
     license     = licenses.bsd2;
     platforms   = platforms.all;
diff --git a/pkgs/tools/security/sdlookup/default.nix b/pkgs/tools/security/sdlookup/default.nix
index 62d6dffdaa2b..d4b4e6b3ad54 100644
--- a/pkgs/tools/security/sdlookup/default.nix
+++ b/pkgs/tools/security/sdlookup/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "IP lookups for open ports and vulnerabilities from internetdb.shodan.io";
+    mainProgram = "sdlookup";
     homepage = "https://github.com/j3ssie/sdlookup";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/secretscanner/default.nix b/pkgs/tools/security/secretscanner/default.nix
index 794597707994..db23b87058f4 100644
--- a/pkgs/tools/security/secretscanner/default.nix
+++ b/pkgs/tools/security/secretscanner/default.nix
@@ -48,6 +48,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to find secrets and passwords in container images and file systems";
+    mainProgram = "secretscanner";
     homepage = "https://github.com/deepfence/SecretScanner";
     changelog = "https://github.com/deepfence/SecretScanner/releases/tag/v${version}";
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/tools/security/semgrep/semgrep-core.nix b/pkgs/tools/security/semgrep/semgrep-core.nix
index 33e50837bf75..8986cba7d880 100644
--- a/pkgs/tools/security/semgrep/semgrep-core.nix
+++ b/pkgs/tools/security/semgrep/semgrep-core.nix
@@ -46,6 +46,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = common.meta // {
     description = common.meta.description + " - core binary";
+    mainProgram = "semgrep-core";
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     platforms = lib.attrNames common.core;
   };
diff --git a/pkgs/tools/security/sequoia-sqop/default.nix b/pkgs/tools/security/sequoia-sqop/default.nix
index 19dd99b871b0..b9be02160898 100644
--- a/pkgs/tools/security/sequoia-sqop/default.nix
+++ b/pkgs/tools/security/sequoia-sqop/default.nix
@@ -9,7 +9,7 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sequoia-sqop";
-  version = "0.31.0";
+  version = "0.32.0";
 
   src = fetchFromGitLab {
     owner = "sequoia-pgp";
@@ -17,10 +17,10 @@ rustPlatform.buildRustPackage rec {
     # generated etc
     repo = "sequoia-sop";
     rev = "v${version}";
-    hash = "sha256-qGSVmjLdx84YphAXt1MRF1cIfk7xLOvtUj+3e7vO+jA=";
+    hash = "sha256-6g6JVNlLi++XboU/ewHM7KM0tJlDayCoz1octKloQro=";
   };
 
-  cargoHash = "sha256-y4n6UPAYwI9P+jw59TOf98xSdNvzEgJp5n/GtiixsIU=";
+  cargoHash = "sha256-Vci29mnFiRRbI45Qkj6t8aVrEaJdKVB01zTXHQT5ckw=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/tools/security/shc/default.nix b/pkgs/tools/security/shc/default.nix
index 0c1bf93ed1c6..f7f3f8a08883 100644
--- a/pkgs/tools/security/shc/default.nix
+++ b/pkgs/tools/security/shc/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://neurobin.org/projects/softwares/unix/shc/";
     description = "Shell Script Compiler";
+    mainProgram = "shc";
     platforms = lib.platforms.all;
     license = licenses.gpl3;
   };
diff --git a/pkgs/tools/security/shisho/default.nix b/pkgs/tools/security/shisho/default.nix
index 5a5995f5da3b..ae61c2a249db 100644
--- a/pkgs/tools/security/shisho/default.nix
+++ b/pkgs/tools/security/shisho/default.nix
@@ -45,6 +45,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://docs.shisho.dev/shisho/";
     changelog = "https://docs.shisho.dev/changelog/";
     description = "Lightweight static analyzer for several programming languages";
+    mainProgram = "shisho";
     longDescription = ''
       Shisho is a lightweight static code analyzer designed for developers and
       is the core engine for Shisho products. It is, so to speak, like a
diff --git a/pkgs/tools/security/signify/default.nix b/pkgs/tools/security/signify/default.nix
index ac8b2ace3af1..fe1c2bf45345 100644
--- a/pkgs/tools/security/signify/default.nix
+++ b/pkgs/tools/security/signify/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "OpenBSD signing tool";
+    mainProgram = "signify";
     longDescription = ''
       OpenBSDs signing tool, which uses the Ed25519 public key signature system
       for fast signing and verification of messages using small public keys.
diff --git a/pkgs/tools/security/silenthound/default.nix b/pkgs/tools/security/silenthound/default.nix
index f2915c447675..22ecb946d4a6 100644
--- a/pkgs/tools/security/silenthound/default.nix
+++ b/pkgs/tools/security/silenthound/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "silenthound";
-  version = "unstable-2022-09-02";
+  version = "0-unstable-2022-12-14";
   format = "other";
 
   src = fetchFromGitHub {
     owner = "layer8secure";
     repo = "SilentHound";
-    rev = "44d361f6c95b79bd848603c8050af86db3d072b0";
-    hash = "sha256-6JcU6FIE+9fsMawI1RSNQyx9ubjxmchEKmeg6/kmI4s=";
+    rev = "f04746aaca29e377c8badcbd6d8f6584deb9e919";
+    hash = "sha256-alTgo8/aqwERt/JC4W3KodAdyfNZyG3XqCp3z4OpS68=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
@@ -36,8 +36,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     description = "Tool to enumerate an Active Directory Domain";
     homepage = "https://github.com/layer8secure/SilentHound";
-    # Unknown license, https://github.com/layer8secure/SilentHound/issues/1
-    license = licenses.unfree;
+    license = licenses.mit;
     maintainers = with maintainers; [ fab ];
     mainProgram = "silenthound";
   };
diff --git a/pkgs/tools/security/slsa-verifier/default.nix b/pkgs/tools/security/slsa-verifier/default.nix
index 5a6ab18a49ec..1ed192c732a1 100644
--- a/pkgs/tools/security/slsa-verifier/default.nix
+++ b/pkgs/tools/security/slsa-verifier/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
     homepage = "https://github.com/slsa-framework/slsa-verifier";
     changelog = "https://github.com/slsa-framework/slsa-verifier/releases/tag/v${version}";
     description = "Verify provenance from SLSA compliant builders";
+    mainProgram = "slsa-verifier";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ developer-guy mlieberman85 ];
   };
diff --git a/pkgs/tools/security/smbmap/default.nix b/pkgs/tools/security/smbmap/default.nix
index 698fd8b19448..772df0a66ef9 100644
--- a/pkgs/tools/security/smbmap/default.nix
+++ b/pkgs/tools/security/smbmap/default.nix
@@ -32,6 +32,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "SMB enumeration tool";
+    mainProgram = "smbmap";
     homepage = "https://github.com/ShawnDEvans/smbmap";
     changelog = "https://github.com/ShawnDEvans/smbmap/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/snallygaster/default.nix b/pkgs/tools/security/snallygaster/default.nix
index 662b46700c78..2f9ad98743cb 100644
--- a/pkgs/tools/security/snallygaster/default.nix
+++ b/pkgs/tools/security/snallygaster/default.nix
@@ -31,6 +31,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan for secret files on HTTP servers";
+    mainProgram = "snallygaster";
     homepage = "https://github.com/hannob/snallygaster";
     license = licenses.cc0;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/security/snow/default.nix b/pkgs/tools/security/snow/default.nix
index 6dce95f8cf0f..dbea144cb1ba 100644
--- a/pkgs/tools/security/snow/default.nix
+++ b/pkgs/tools/security/snow/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Conceal messages in ASCII text by appending whitespace to the end of lines";
+    mainProgram = "snow";
     homepage = "http://www.darkside.com.au/snow/";
     license = licenses.asl20;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/tools/security/snowcat/default.nix b/pkgs/tools/security/snowcat/default.nix
index 429564f91f1e..a08b18edd147 100644
--- a/pkgs/tools/security/snowcat/default.nix
+++ b/pkgs/tools/security/snowcat/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
     homepage = "https://github.com/praetorian-inc/snowcat";
     changelog = "https://github.com/praetorian-inc/snowcat/releases/tag/v${version}";
     description = "A tool to audit the istio service mesh";
+    mainProgram = "snowcat";
     longDescription = ''
       Snowcat gathers and analyzes the configuration of an Istio cluster and
       audits it for potential violations of security best practices.
diff --git a/pkgs/tools/security/spectre-meltdown-checker/default.nix b/pkgs/tools/security/spectre-meltdown-checker/default.nix
index 529da4557915..55372ce4a6aa 100644
--- a/pkgs/tools/security/spectre-meltdown-checker/default.nix
+++ b/pkgs/tools/security/spectre-meltdown-checker/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     description = "Spectre & Meltdown vulnerability/mitigation checker for Linux";
+    mainProgram = "spectre-meltdown-checker";
     homepage = "https://github.com/speed47/spectre-meltdown-checker";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.dotlambda ];
diff --git a/pkgs/tools/security/spyre/default.nix b/pkgs/tools/security/spyre/default.nix
index 3ec659373c7b..c9a4946b83d9 100644
--- a/pkgs/tools/security/spyre/default.nix
+++ b/pkgs/tools/security/spyre/default.nix
@@ -44,6 +44,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "YARA-based IOC scanner";
+    mainProgram = "spyre";
     homepage = "https://github.com/spyre-project/spyre";
     license = with licenses; [ lgpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ssdeep/default.nix b/pkgs/tools/security/ssdeep/default.nix
index 7647246369ff..a7c937f03ee0 100644
--- a/pkgs/tools/security/ssdeep/default.nix
+++ b/pkgs/tools/security/ssdeep/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A program for calculating fuzzy hashes";
+    mainProgram = "ssdeep";
     homepage    = "http://www.ssdeep.sf.net";
     license     = lib.licenses.gpl2;
     platforms   = lib.platforms.unix;
diff --git a/pkgs/tools/security/ssh-audit/default.nix b/pkgs/tools/security/ssh-audit/default.nix
index 54ec4e8f4ee1..d704832f248d 100644
--- a/pkgs/tools/security/ssh-audit/default.nix
+++ b/pkgs/tools/security/ssh-audit/default.nix
@@ -26,6 +26,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for ssh server auditing";
+    mainProgram = "ssh-audit";
     homepage = "https://github.com/jtesta/ssh-audit";
     changelog = "https://github.com/jtesta/ssh-audit/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ssh-to-pgp/default.nix b/pkgs/tools/security/ssh-to-pgp/default.nix
index c8735cffd5f2..15067063d328 100644
--- a/pkgs/tools/security/ssh-to-pgp/default.nix
+++ b/pkgs/tools/security/ssh-to-pgp/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert ssh private keys to PGP";
+    mainProgram = "ssh-to-pgp";
     homepage = "https://github.com/Mic92/ssh-to-pgp";
     license = licenses.mit;
     maintainers = with maintainers; [ mic92 ];
diff --git a/pkgs/tools/security/sshchecker/default.nix b/pkgs/tools/security/sshchecker/default.nix
index 6ed76d0dd4e2..6f904f52020d 100644
--- a/pkgs/tools/security/sshchecker/default.nix
+++ b/pkgs/tools/security/sshchecker/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Dedicated SSH brute-forcing tool";
+    mainProgram = "sshchecker";
     longDescription = ''
       sshchecker is a fast dedicated SSH brute-forcing tool to check
       SSH login on the giving IP list.
diff --git a/pkgs/tools/security/sshguard/default.nix b/pkgs/tools/security/sshguard/default.nix
index 18e93023d779..2c5391ae4499 100644
--- a/pkgs/tools/security/sshguard/default.nix
+++ b/pkgs/tools/security/sshguard/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Protects hosts from brute-force attacks";
+    mainProgram = "sshguard";
     longDescription = ''
       SSHGuard can read log messages from various input sources. Log messages are parsed, line-by-line, for recognized patterns.
       If an attack, such as several login failures within a few seconds, is detected, the offending IP is blocked.
diff --git a/pkgs/tools/security/sshocker/default.nix b/pkgs/tools/security/sshocker/default.nix
index bb8177ea3878..0ace4d9e2597 100644
--- a/pkgs/tools/security/sshocker/default.nix
+++ b/pkgs/tools/security/sshocker/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for SSH, reverse sshfs and port forwarder";
+    mainProgram = "sshocker";
     homepage = "https://github.com/lima-vm/sshocker";
     changelog = "https://github.com/lima-vm/sshocker/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/sshuttle/default.nix b/pkgs/tools/security/sshuttle/default.nix
index 8a92dbceb184..d937421adb01 100644
--- a/pkgs/tools/security/sshuttle/default.nix
+++ b/pkgs/tools/security/sshuttle/default.nix
@@ -50,6 +50,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Transparent proxy server that works as a poor man's VPN";
+    mainProgram = "sshuttle";
     longDescription = ''
       Forward connections over SSH, without requiring administrator access to the
       target network (though it does require Python 2.7, Python 3.5 or later at both ends).
diff --git a/pkgs/tools/security/sslscan/default.nix b/pkgs/tools/security/sslscan/default.nix
index 529b1bb1683e..43e2b8ace717 100644
--- a/pkgs/tools/security/sslscan/default.nix
+++ b/pkgs/tools/security/sslscan/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tests SSL/TLS services and discover supported cipher suites";
+    mainProgram = "sslscan";
     homepage = "https://github.com/rbsec/sslscan";
     changelog = "https://github.com/rbsec/sslscan/blob/${version}/Changelog";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/stacs/default.nix b/pkgs/tools/security/stacs/default.nix
index 205d85f0622e..da66dca1cbd3 100644
--- a/pkgs/tools/security/stacs/default.nix
+++ b/pkgs/tools/security/stacs/default.nix
@@ -35,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Static token and credential scanner";
+    mainProgram = "stacs";
     homepage = "https://github.com/stacscan/stacs";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/step-kms-plugin/default.nix b/pkgs/tools/security/step-kms-plugin/default.nix
index 2a141e7012b9..fd3faedf6128 100644
--- a/pkgs/tools/security/step-kms-plugin/default.nix
+++ b/pkgs/tools/security/step-kms-plugin/default.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "step-kms-plugin";
-  version = "0.10.0";
+  version = "0.11.0";
 
   src = fetchFromGitHub {
     owner = "smallstep";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-TmIQjkIESZm6u7CajyJGgf1xm3SvjA6EINUAKehzafs=";
+    hash = "sha256-FQ9UW1zz+8HMFETZVef7oyh2+Nm5z3ksvmOv/MTiKAU=";
   };
 
-  vendorHash = "sha256-mwi7ux4pnnotdwW6v0j+q8mx5i7W6fJVuAKOEqVDueY=";
+  vendorHash = "sha256-bpQHe7B7dG1oeGP/V3su0Zc6in7tive7lmh18KqxGfo=";
 
   proxyVendor = true;
 
diff --git a/pkgs/tools/security/su-exec/default.nix b/pkgs/tools/security/su-exec/default.nix
index 0e26d2430cb1..f9ab5d503f5b 100644
--- a/pkgs/tools/security/su-exec/default.nix
+++ b/pkgs/tools/security/su-exec/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "switch user and group id and exec";
+    mainProgram = "su-exec";
     homepage    = "https://github.com/ncopa/su-exec";
     license     = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/tools/security/subjs/default.nix b/pkgs/tools/security/subjs/default.nix
index 60ed306145a7..0bd3c170b656 100644
--- a/pkgs/tools/security/subjs/default.nix
+++ b/pkgs/tools/security/subjs/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fetcher for Javascript files";
+    mainProgram = "subjs";
     longDescription = ''
       subjs fetches Javascript files from a list of URLs or subdomains.
       Analyzing Javascript files can help you find undocumented endpoints,
diff --git a/pkgs/tools/security/swaggerhole/default.nix b/pkgs/tools/security/swaggerhole/default.nix
index 8455867b4be2..507fde0b3086 100644
--- a/pkgs/tools/security/swaggerhole/default.nix
+++ b/pkgs/tools/security/swaggerhole/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to searching for secret on swaggerhub";
+    mainProgram = "swaggerhole";
     homepage = "https://github.com/Liodeus/swaggerHole";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/teler/default.nix b/pkgs/tools/security/teler/default.nix
index 989743fda894..9232f4f88206 100644
--- a/pkgs/tools/security/teler/default.nix
+++ b/pkgs/tools/security/teler/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Real-time HTTP Intrusion Detection";
+    mainProgram = "teler.app";
     longDescription = ''
       teler is an real-time intrusion detection and threat alert
       based on web log that runs in a terminal with resources that
diff --git a/pkgs/tools/security/tell-me-your-secrets/default.nix b/pkgs/tools/security/tell-me-your-secrets/default.nix
index a85a62fdfcc3..1d723aae52df 100644
--- a/pkgs/tools/security/tell-me-your-secrets/default.nix
+++ b/pkgs/tools/security/tell-me-your-secrets/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tools to find secrets from various signatures";
+    mainProgram = "tell-me-your-secrets";
     homepage = "https://github.com/valayDave/tell-me-your-secrets";
     changelog = "https://github.com/valayDave/tell-me-your-secrets/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/terrascan/default.nix b/pkgs/tools/security/terrascan/default.nix
index 864289f92f59..b44387032b2f 100644
--- a/pkgs/tools/security/terrascan/default.nix
+++ b/pkgs/tools/security/terrascan/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Detect compliance and security violations across Infrastructure";
+    mainProgram = "terrascan";
     longDescription = ''
       Detect compliance and security violations across Infrastructure as Code to
       mitigate risk before provisioning cloud native infrastructure. It contains
diff --git a/pkgs/tools/security/theharvester/default.nix b/pkgs/tools/security/theharvester/default.nix
index ad5152e7e1fe..180aa0fd2e76 100644
--- a/pkgs/tools/security/theharvester/default.nix
+++ b/pkgs/tools/security/theharvester/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "theharvester";
-  version = "4.5.1";
+  version = "4.6.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "laramies";
     repo = "theharvester";
     rev = "refs/tags/${version}";
-    hash = "sha256-yfi1+SCCLCV3SJ28EVmR6V2i3O92iVRBo4EwHbKKcYY=";
+    hash = "sha256-B2pZBrWZqbtvcO0pnM57GFhrryYilLCBTMEmsKvyU/I=";
   };
 
   postPatch = ''
@@ -38,6 +38,7 @@ python3.pkgs.buildPythonApplication rec {
     lxml
     netaddr
     ujson
+    playwright
     plotly
     pyppeteer
     python-dateutil
diff --git a/pkgs/tools/security/threatest/default.nix b/pkgs/tools/security/threatest/default.nix
index faa5977986fc..a53804f1d1fc 100644
--- a/pkgs/tools/security/threatest/default.nix
+++ b/pkgs/tools/security/threatest/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Framework for end-to-end testing threat detection rules";
+    mainProgram = "threatest";
     homepage = "https://github.com/DataDog/threatest";
     changelog = "https://github.com/DataDog/threatest/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/tor/torsocks.nix b/pkgs/tools/security/tor/torsocks.nix
index 6c5be8fcc7bd..ae1a42a944d3 100644
--- a/pkgs/tools/security/tor/torsocks.nix
+++ b/pkgs/tools/security/tor/torsocks.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description      = "Wrapper to safely torify applications";
+    mainProgram = "torsocks";
     homepage         = "https://gitlab.torproject.org/tpo/core/torsocks";
     license          = lib.licenses.gpl2;
     platforms        = lib.platforms.unix;
diff --git a/pkgs/tools/security/tpm2-abrmd/default.nix b/pkgs/tools/security/tpm2-abrmd/default.nix
index 718355998794..da297f7a5b36 100644
--- a/pkgs/tools/security/tpm2-abrmd/default.nix
+++ b/pkgs/tools/security/tpm2-abrmd/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "TPM2 resource manager, accessible via D-Bus";
+    mainProgram = "tpm2-abrmd";
     homepage = "https://github.com/tpm2-software/tpm2-tools";
     license = licenses.bsd3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/tracee/default.nix b/pkgs/tools/security/tracee/default.nix
index eb1e8090b286..c1615c1ddf56 100644
--- a/pkgs/tools/security/tracee/default.nix
+++ b/pkgs/tools/security/tracee/default.nix
@@ -93,6 +93,7 @@ buildGoModule rec {
     homepage = "https://aquasecurity.github.io/tracee/latest/";
     changelog = "https://github.com/aquasecurity/tracee/releases/tag/v${version}";
     description = "Linux Runtime Security and Forensics using eBPF";
+    mainProgram = "tracee";
     longDescription = ''
       Tracee is a Runtime Security and forensics tool for Linux. It is using
       Linux eBPF technology to trace your system and applications at runtime,
diff --git a/pkgs/tools/security/trousers/default.nix b/pkgs/tools/security/trousers/default.nix
index 5502de2d6272..43d0941b47b6 100644
--- a/pkgs/tools/security/trousers/default.nix
+++ b/pkgs/tools/security/trousers/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Trusted computing software stack";
+    mainProgram = "tcsd";
     homepage    = "https://trousers.sourceforge.net/";
     license     = licenses.bsd3;
     maintainers = [ maintainers.ak ];
diff --git a/pkgs/tools/security/truecrack/default.nix b/pkgs/tools/security/truecrack/default.nix
index 19ae85105657..1c0648f33bcb 100644
--- a/pkgs/tools/security/truecrack/default.nix
+++ b/pkgs/tools/security/truecrack/default.nix
@@ -41,6 +41,7 @@ gccStdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A brute-force password cracker for TrueCrypt volumes, optimized for Nvidia Cuda technology";
+    mainProgram = "truecrack";
     homepage = "https://gitlab.com/kalilinux/packages/truecrack";
     broken = cudaSupport;
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/security/trueseeing/default.nix b/pkgs/tools/security/trueseeing/default.nix
index ef0026f870f0..182f33138b95 100644
--- a/pkgs/tools/security/trueseeing/default.nix
+++ b/pkgs/tools/security/trueseeing/default.nix
@@ -44,6 +44,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Non-decompiling Android vulnerability scanner";
+    mainProgram = "trueseeing";
     homepage = "https://github.com/alterakey/trueseeing";
     changelog = "https://github.com/alterakey/trueseeing/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/trufflehog/default.nix b/pkgs/tools/security/trufflehog/default.nix
index 3188bca3486a..c40f80b0caa5 100644
--- a/pkgs/tools/security/trufflehog/default.nix
+++ b/pkgs/tools/security/trufflehog/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "trufflehog";
-  version = "3.70.1";
+  version = "3.70.3";
 
   src = fetchFromGitHub {
     owner = "trufflesecurity";
     repo = "trufflehog";
     rev = "refs/tags/v${version}";
-    hash = "sha256-02sBzWMzpSUx1wFpKapP93JVLSlPmnXMwLAYhOVqiYE=";
+    hash = "sha256-eTxqNsTcdYqflY5i6tV/4uL9jV2MPwVeWspXfjX8Xmc=";
   };
 
-  vendorHash = "sha256-oJ5aPffmBDCJ6cD2nG1Q5w+R6LV6oDf4v9hIWN9jNdc=";
+  vendorHash = "sha256-VYF9QIlshfFkNbfEQlJsp1SbGsGVTwnGLdKprKOeB74=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/security/trustymail/default.nix b/pkgs/tools/security/trustymail/default.nix
index 88d321708886..11133548bbd3 100644
--- a/pkgs/tools/security/trustymail/default.nix
+++ b/pkgs/tools/security/trustymail/default.nix
@@ -39,6 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan domains and return data based on trustworthy email best practices";
+    mainProgram = "trustymail";
     homepage = "https://github.com/cisagov/trustymail";
     changelog = "https://github.com/cisagov/trustymail/releases/tag/v${version}";
     license = with licenses; [ cc0 ];
diff --git a/pkgs/tools/security/uddup/default.nix b/pkgs/tools/security/uddup/default.nix
index 3516b4dcff8d..4d850b016f9f 100644
--- a/pkgs/tools/security/uddup/default.nix
+++ b/pkgs/tools/security/uddup/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for de-duplication URLs";
+    mainProgram = "uddup";
     homepage = "https://github.com/rotemreiss/uddup";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/udpx/default.nix b/pkgs/tools/security/udpx/default.nix
index 081c002a09e5..f240057a2b6d 100644
--- a/pkgs/tools/security/udpx/default.nix
+++ b/pkgs/tools/security/udpx/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Single-packet UDP scanner";
+    mainProgram = "udpx";
     homepage = "https://github.com/nullt3r/udpx";
     changelog = "https://github.com/nullt3r/udpx/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/urlhunter/default.nix b/pkgs/tools/security/urlhunter/default.nix
index c70c43027a25..9f3f6b5a09b0 100644
--- a/pkgs/tools/security/urlhunter/default.nix
+++ b/pkgs/tools/security/urlhunter/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Recon tool that allows searching shortened URLs";
+    mainProgram = "urlhunter";
     longDescription = ''
       urlhunter is a recon tool that allows searching on URLs that are
       exposed via shortener services such as bit.ly and goo.gl.
diff --git a/pkgs/tools/security/usbrip/default.nix b/pkgs/tools/security/usbrip/default.nix
index aa09d759b8e4..219a4315fd14 100644
--- a/pkgs/tools/security/usbrip/default.nix
+++ b/pkgs/tools/security/usbrip/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to track the history of USB events";
+    mainProgram = "usbrip";
     homepage = "https://github.com/snovvcrash/usbrip";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/vals/default.nix b/pkgs/tools/security/vals/default.nix
index 5000615b4eab..0c43a0204bbb 100644
--- a/pkgs/tools/security/vals/default.nix
+++ b/pkgs/tools/security/vals/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "vals";
-  version = "0.33.1";
+  version = "0.35.0";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "variantdev";
     repo = pname;
-    sha256 = "sha256-5+yaDcHqOt+bOdQIv4rDJuiR7acbkQvHJEfvc058+b8=";
+    sha256 = "sha256-PH2R39bI357ND3Gf//Fe+xtMGVuqwggT9zZyy/OimmY=";
   };
 
-  vendorHash = "sha256-Lt6OPA6k+zXIahZR8F36YWruCtUsoQKb/LgzJ5NIcx8=";
+  vendorHash = "sha256-oesPCwDZyJ1Q8LdyEnvAU5sdXFFHdxUP4jXltww8vuk=";
 
   ldflags = [
     "-s"
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Helm-like configuration values loader with support for various sources";
+    mainProgram = "vals";
     license = licenses.asl20;
     homepage = "https://github.com/variantdev/vals";
     changelog = "https://github.com/variantdev/vals/releases/v${version}";
diff --git a/pkgs/tools/security/vault-medusa/default.nix b/pkgs/tools/security/vault-medusa/default.nix
index 382a732cf6b5..cd7cf537de58 100644
--- a/pkgs/tools/security/vault-medusa/default.nix
+++ b/pkgs/tools/security/vault-medusa/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A cli tool for importing and exporting Hashicorp Vault secrets";
+    mainProgram = "medusa";
     homepage = "https://github.com/jonasvinther/medusa";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/tools/security/vault-ssh-plus/default.nix b/pkgs/tools/security/vault-ssh-plus/default.nix
index a1c77e5d0a29..80cfa8674cb2 100644
--- a/pkgs/tools/security/vault-ssh-plus/default.nix
+++ b/pkgs/tools/security/vault-ssh-plus/default.nix
@@ -42,6 +42,7 @@ buildGoModule rec {
     homepage = "https://github.com/isometry/vault-ssh-plus";
     changelog = "https://github.com/isometry/vault-ssh-plus/releases/tag/v${version}";
     description = "Automatically use HashiCorp Vault SSH Client Key Signing with ssh(1)";
+    mainProgram = "vssh";
     license = licenses.mit;
     maintainers = with maintainers; [ lesuisse ];
   };
diff --git a/pkgs/tools/security/vault/default.nix b/pkgs/tools/security/vault/default.nix
index bec13959dc43..6b5b0d595809 100644
--- a/pkgs/tools/security/vault/default.nix
+++ b/pkgs/tools/security/vault/default.nix
@@ -15,7 +15,7 @@ buildGoModule rec {
     hash = "sha256-XqPuikUUm8C02Uv6qZHPz/KEmrvBrr8gOznQ7qbMKnU=";
   };
 
-  vendorHash = "sha256-SYGqlLCA7T4MhRlOVBSYnZdZ2+WuJvmmHw3MdnfoezM=";
+  vendorHash = "sha256-97/nNRwTJnoW1gRvWhdsO36TuLdGTX67o0oTiGMotrs=";
 
   proxyVendor = true;
 
diff --git a/pkgs/tools/security/verifpal/default.nix b/pkgs/tools/security/verifpal/default.nix
index 3d47dfa3abc5..378bd4731a41 100644
--- a/pkgs/tools/security/verifpal/default.nix
+++ b/pkgs/tools/security/verifpal/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
   meta = {
     homepage = "https://verifpal.com/";
     description = "Cryptographic protocol analysis for students and engineers";
+    mainProgram = "verifpal";
     maintainers = with lib.maintainers; [ zimbatm ];
     license = with lib.licenses; [ gpl3 ];
   };
diff --git a/pkgs/tools/security/vexctl/default.nix b/pkgs/tools/security/vexctl/default.nix
index 335da7f93acf..1bb56dbb0547 100644
--- a/pkgs/tools/security/vexctl/default.nix
+++ b/pkgs/tools/security/vexctl/default.nix
@@ -63,6 +63,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/chainguard-dev/vex/";
     description = "A tool to attest VEX impact statements";
+    mainProgram = "vexctl";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk ];
   };
diff --git a/pkgs/tools/security/vulnix/default.nix b/pkgs/tools/security/vulnix/default.nix
index 7f6d29891f0c..305c3dc2f9a9 100644
--- a/pkgs/tools/security/vulnix/default.nix
+++ b/pkgs/tools/security/vulnix/default.nix
@@ -55,6 +55,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "NixOS vulnerability scanner";
+    mainProgram = "vulnix";
     homepage = "https://github.com/flyingcircusio/vulnix";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ckauhaus ];
diff --git a/pkgs/tools/security/wad/default.nix b/pkgs/tools/security/wad/default.nix
index 5dc81a7f56df..348a35ccbe10 100644
--- a/pkgs/tools/security/wad/default.nix
+++ b/pkgs/tools/security/wad/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for detecting technologies used by web applications";
+    mainProgram = "wad";
     longDescription = ''
       WAD lets you analyze given URL(s) and detect technologies used by web
       application behind that URL, from the OS and web server level, to the
diff --git a/pkgs/tools/security/waf-tester/default.nix b/pkgs/tools/security/waf-tester/default.nix
index b8dd01ed19b8..47e5c2fbb5fb 100644
--- a/pkgs/tools/security/waf-tester/default.nix
+++ b/pkgs/tools/security/waf-tester/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to test Web Application Firewalls (WAFs)";
+    mainProgram = "waf-tester";
     homepage = "https://github.com/jreisinger/waf-tester";
     changelog = "https://github.com/jreisinger/waf-tester/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/wafw00f/default.nix b/pkgs/tools/security/wafw00f/default.nix
index 55d4b7591e38..d8d89a3e325a 100644
--- a/pkgs/tools/security/wafw00f/default.nix
+++ b/pkgs/tools/security/wafw00f/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to identify and fingerprint Web Application Firewalls (WAF)";
+    mainProgram = "wafw00f";
     homepage = "https://github.com/EnableSecurity/wafw00f";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/web-eid-app/default.nix b/pkgs/tools/security/web-eid-app/default.nix
index fd9c4cc319e7..067963e1aaff 100644
--- a/pkgs/tools/security/web-eid-app/default.nix
+++ b/pkgs/tools/security/web-eid-app/default.nix
@@ -33,6 +33,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "signing and authentication operations with smart cards for the Web eID browser extension";
+    mainProgram = "web-eid";
     longDescription = ''
       The Web eID application performs cryptographic digital signing and
       authentication operations with electronic ID smart cards for the Web eID
diff --git a/pkgs/tools/security/whatweb/default.nix b/pkgs/tools/security/whatweb/default.nix
index 30d866da869a..fbe78834c826 100644
--- a/pkgs/tools/security/whatweb/default.nix
+++ b/pkgs/tools/security/whatweb/default.nix
@@ -42,6 +42,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Next generation web scanner";
+    mainProgram = "whatweb";
     homepage = "https://github.com/urbanadventurer/whatweb";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ wolfangaukang ];
diff --git a/pkgs/tools/security/wipe/default.nix b/pkgs/tools/security/wipe/default.nix
index 5ced99060fb7..0d9653f27918 100644
--- a/pkgs/tools/security/wipe/default.nix
+++ b/pkgs/tools/security/wipe/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Secure file wiping utility";
+    mainProgram = "wipe";
     homepage    = "https://wipe.sourceforge.net/";
     license     = licenses.gpl2;
     platforms   = platforms.all;
diff --git a/pkgs/tools/security/xcat/default.nix b/pkgs/tools/security/xcat/default.nix
index ea3390b38c74..bb5fc62831e7 100644
--- a/pkgs/tools/security/xcat/default.nix
+++ b/pkgs/tools/security/xcat/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "XPath injection tool";
+    mainProgram = "xcat";
     longDescription = ''
       xcat is an advanced tool for exploiting XPath injection vulnerabilities,
       featuring a comprehensive set of features to read the entire file being
diff --git a/pkgs/tools/security/xorex/default.nix b/pkgs/tools/security/xorex/default.nix
index a1a6e655996a..933ab05b6382 100644
--- a/pkgs/tools/security/xorex/default.nix
+++ b/pkgs/tools/security/xorex/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "XOR Key Extractor";
+    mainProgram = "xorex";
     homepage = "https://github.com/Neo23x0/xorex";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/tools/security/xsser/default.nix b/pkgs/tools/security/xsser/default.nix
index 6c75f2e733f2..c5fab523166e 100644
--- a/pkgs/tools/security/xsser/default.nix
+++ b/pkgs/tools/security/xsser/default.nix
@@ -53,6 +53,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Automatic framework to detect, exploit and report XSS vulnerabilities in web-based applications";
+    mainProgram = "xsser";
     homepage = "https://xsser.03c8.net/";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/xsubfind3r/default.nix b/pkgs/tools/security/xsubfind3r/default.nix
index 7c5470a0715a..976624c16b60 100644
--- a/pkgs/tools/security/xsubfind3r/default.nix
+++ b/pkgs/tools/security/xsubfind3r/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI utility to find subdomains from curated passive online sources";
+    mainProgram = "xsubfind3r";
     homepage = "https://github.com/hueristiq/xsubfind3r";
     changelog = "https://github.com/hueristiq/xsubfind3r/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/yarGen/default.nix b/pkgs/tools/security/yarGen/default.nix
index 4003c7e996ec..12b2567f340e 100644
--- a/pkgs/tools/security/yarGen/default.nix
+++ b/pkgs/tools/security/yarGen/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A generator for YARA rules";
+    mainProgram = "yarGen.py";
     homepage = "https://github.com/Neo23x0/yarGen";
     license = licenses.bsd3;
     maintainers = [ ];
diff --git a/pkgs/tools/security/yersinia/default.nix b/pkgs/tools/security/yersinia/default.nix
index a913835743aa..ae2ca9babff2 100644
--- a/pkgs/tools/security/yersinia/default.nix
+++ b/pkgs/tools/security/yersinia/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A framework for layer 2 attacks";
+    mainProgram = "yersinia";
     homepage = "https://github.com/tomac/yersinia";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ vdot0x23 ];
diff --git a/pkgs/tools/security/yubikey-agent/default.nix b/pkgs/tools/security/yubikey-agent/default.nix
index 01e512e49bdd..24cd2d764267 100644
--- a/pkgs/tools/security/yubikey-agent/default.nix
+++ b/pkgs/tools/security/yubikey-agent/default.nix
@@ -37,6 +37,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A seamless ssh-agent for YubiKeys";
+    mainProgram = "yubikey-agent";
     license = licenses.bsd3;
     homepage = "https://filippo.io/yubikey-agent";
     maintainers = with lib.maintainers; [ philandstuff rawkode ];
diff --git a/pkgs/tools/security/yubikey-touch-detector/default.nix b/pkgs/tools/security/yubikey-touch-detector/default.nix
index a8474a1a5b3f..36822b6728e6 100644
--- a/pkgs/tools/security/yubikey-touch-detector/default.nix
+++ b/pkgs/tools/security/yubikey-touch-detector/default.nix
@@ -1,41 +1,27 @@
-{ lib, libnotify, buildGoModule, fetchFromGitHub, fetchurl, pkg-config, iconColor ? "#84bd00" }:
+{ lib, libnotify, gpgme, buildGoModule, fetchFromGitHub, fetchurl, pkg-config }:
 
 buildGoModule rec {
   pname = "yubikey-touch-detector";
-  version = "1.10.1";
+  version = "1.11.0";
 
   src = fetchFromGitHub {
     owner = "maximbaz";
     repo = "yubikey-touch-detector";
     rev = version;
-    sha256 = "sha256-y/iDmxlhu2Q6Zas0jsv07HQPkNdMrOQaXWy/cuWvpMk=";
-  };
-  vendorHash = "sha256-OitI9Yp4/mRMrNH4yrWSL785+3mykPkvzarrc6ipOeg=";
-
-  iconSrc = fetchurl {
-    url = "https://github.com/Yubico/yubioath-flutter/raw/yubioath-desktop-5.0.0/images/touch.svg";
-    hash = "sha256-+jC9RKjl1uMBaNqLX5WXN+E4CuOcIEx5IGXWxgxzA/k=";
+    hash = "sha256-XpaCKNQpQD9dNj4EOGJ6PdjfSAxxG5dC8mIzYr7t/+I=";
   };
+  vendorHash = "sha256-mhmYTicj/ihGNzeCZd1ZijWPkvxQZjBxaC5dyAU1O7U=";
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ libnotify ];
-
-  postPatch = ''
-    cp $iconSrc yubikey-touch-detector.svg
-    substituteInPlace yubikey-touch-detector.svg \
-      --replace '#284c61' ${lib.escapeShellArg iconColor}
-
-    substituteInPlace notifier/libnotify.go \
-      --replace \
-        'AppIcon: "yubikey-touch-detector"' \
-        "AppIcon: \"$out/share/icons/yubikey-touch-detector.svg\""
-  '';
+  buildInputs = [ libnotify gpgme ];
 
   postInstall = ''
-    install -Dm444 -t $out/share/doc/${pname} *.md
+    install -Dm444 -t $out/share/doc/${pname} *.{md,example}
+
+    install -Dm444 -t $out/share/licenses/${pname} LICENSE
 
-    install -Dm444 -t $out/share/icons yubikey-touch-detector.svg
+    install -Dm444 -t $out/share/icons/hicolor/128x128/apps yubikey-touch-detector.png
 
     install -Dm444 -t $out/lib/systemd/user *.{service,socket}
 
diff --git a/pkgs/tools/security/zdns/default.nix b/pkgs/tools/security/zdns/default.nix
index 9b0c33f2802e..d67bb6d8e4c7 100644
--- a/pkgs/tools/security/zdns/default.nix
+++ b/pkgs/tools/security/zdns/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI DNS lookup tool";
+    mainProgram = "zdns";
     homepage = "https://github.com/zmap/zdns";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/zgrab2/default.nix b/pkgs/tools/security/zgrab2/default.nix
index c91c1b876099..155a6a28e721 100644
--- a/pkgs/tools/security/zgrab2/default.nix
+++ b/pkgs/tools/security/zgrab2/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Web application scanner";
+    mainProgram = "zgrab2";
     homepage = "https://github.com/zmap/zgrab2";
     license = with licenses; [ asl20 isc ];
     maintainers = with maintainers; [ fab juliusrickert ];
diff --git a/pkgs/tools/system/automatic-timezoned/default.nix b/pkgs/tools/system/automatic-timezoned/default.nix
index 2e65b6c7e5f4..c25decf1ae24 100644
--- a/pkgs/tools/system/automatic-timezoned/default.nix
+++ b/pkgs/tools/system/automatic-timezoned/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "automatic-timezoned";
-  version = "2.0.7";
+  version = "2.0.9";
 
   src = fetchFromGitHub {
     owner = "maxbrunet";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-MMxLy7clzvE5LyrpvKCffBpyV0eiOn7aHMH929aT+KM=";
+    sha256 = "sha256-v8oPKjMG3IRZoXSw349ftcQmjk4zojgmPoLBR6x1+9E=";
   };
 
-  cargoHash = "sha256-dKcghpc2aaXOtcRpABqTzwtlRM2RBGzAnXZMFbMbdlk=";
+  cargoHash = "sha256-M7OWLPmHwG+Vt/agkq0YqKiefXsVdmeMdXI5CkxQrwg=";
 
   meta = with lib; {
     description = "Automatically update system timezone based on location";
diff --git a/pkgs/tools/system/btop/default.nix b/pkgs/tools/system/btop/default.nix
index 9b6956fb5780..ba5f01b843bb 100644
--- a/pkgs/tools/system/btop/default.nix
+++ b/pkgs/tools/system/btop/default.nix
@@ -9,6 +9,8 @@
 , testers
 , cudaSupport ? config.cudaSupport
 , cudaPackages
+, rocmSupport ? config.rocmSupport
+, rocmPackages
 }:
 
 stdenv.mkDerivation rec {
@@ -23,7 +25,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ cmake ] ++ lib.optionals cudaSupport [
-    cudaPackages.autoAddOpenGLRunpathHook
+    cudaPackages.autoAddDriverRunpath
   ];
 
   buildInputs = lib.optionals stdenv.isDarwin [
@@ -37,6 +39,11 @@ stdenv.mkDerivation rec {
     ${removeReferencesTo}/bin/remove-references-to -t ${stdenv.cc.cc} $(readlink -f $out/bin/btop)
   '';
 
+  postPhases = lib.optionals rocmSupport [ "postPatchelf" ];
+  postPatchelf = lib.optionalString rocmSupport ''
+    patchelf --add-rpath ${lib.getLib rocmPackages.rocm-smi}/lib $out/bin/btop
+  '';
+
   passthru.tests.version = testers.testVersion {
     package = btop;
   };
diff --git a/pkgs/tools/system/confd/default.nix b/pkgs/tools/system/confd/default.nix
index bdbba9bc9f21..5d4ebbed7d74 100644
--- a/pkgs/tools/system/confd/default.nix
+++ b/pkgs/tools/system/confd/default.nix
@@ -1,20 +1,23 @@
-{ lib, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
-buildGoPackage rec {
+buildGoModule {
   pname = "confd";
-  version = "0.16.0";
-  rev = "v${version}";
+  version = "0.16-unstable-2023-12-09";
 
-  goPackagePath = "github.com/kelseyhightower/confd";
-  subPackages = [ "./" ];
 
   src = fetchFromGitHub {
-    inherit rev;
     owner = "kelseyhightower";
     repo = "confd";
-    sha256 = "0q7r6dkgirnmqi3rhqdaai88jqzw52l6jdrrwsf2qq0hva09961p";
+    rev = "919444eb6cf721d198b2bb18581d0f0b3734d107";
+    hash = "sha256-/HlL+vxERSOUKIxdtlZDZrpYjGXon3KMwoYUcp8iOug=";
   };
 
+  vendorHash = null;
+
+  subPackages = [ "." ];
+
+  ldflags = [ "-s" "-w" ];
+
   meta = {
     description = "Manage local application configuration files using templates and data from etcd or consul";
     homepage = "https://github.com/kelseyhightower/confd";
diff --git a/pkgs/tools/system/freeipmi/default.nix b/pkgs/tools/system/freeipmi/default.nix
index f61e455268b7..9fe830aa4d51 100644
--- a/pkgs/tools/system/freeipmi/default.nix
+++ b/pkgs/tools/system/freeipmi/default.nix
@@ -1,12 +1,12 @@
 { buildPackages, fetchurl, lib, stdenv, libgcrypt, readline, libgpg-error }:
 
 stdenv.mkDerivation rec {
-  version = "1.6.11";
+  version = "1.6.14";
   pname = "freeipmi";
 
   src = fetchurl {
     url = "mirror://gnu/freeipmi/${pname}-${version}.tar.gz";
-    sha256 = "sha256-ZfvWkQ/AEEV3SGlUFPJ8V1W06NdXNCISIfOFjGIwqJc=";
+    sha256 = "sha256-Gj2sXHa3zMTU+GqhK475shK673SJvwXombiau34U7bU=";
   };
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
diff --git a/pkgs/tools/system/goreman/default.nix b/pkgs/tools/system/goreman/default.nix
index 57d7b46f54cf..5b83b1885bc7 100644
--- a/pkgs/tools/system/goreman/default.nix
+++ b/pkgs/tools/system/goreman/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "foreman clone written in go language";
+    mainProgram = "goreman";
     homepage = "https://github.com/mattn/goreman";
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/tools/system/illum/default.nix b/pkgs/tools/system/illum/default.nix
index 3d33be9ed635..81d8bbee7b8d 100644
--- a/pkgs/tools/system/illum/default.nix
+++ b/pkgs/tools/system/illum/default.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
     description = "Daemon that wires button presses to screen backlight level";
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.dancek ];
-    license = lib.licenses.agpl3;
+    license = lib.licenses.agpl3Plus;
     mainProgram = "illum-d";
   };
 }
diff --git a/pkgs/tools/system/journalwatch/default.nix b/pkgs/tools/system/journalwatch/default.nix
index b732af477169..8bb9b605a8f4 100644
--- a/pkgs/tools/system/journalwatch/default.nix
+++ b/pkgs/tools/system/journalwatch/default.nix
@@ -32,6 +32,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "A tool to find error messages in the systemd journal";
+    mainProgram = "journalwatch";
     homepage = "https://github.com/The-Compiler/journalwatch";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ florianjacob ];
diff --git a/pkgs/tools/system/kanata/default.nix b/pkgs/tools/system/kanata/default.nix
index eab7fb3d4b17..32ea4ce04cbb 100644
--- a/pkgs/tools/system/kanata/default.nix
+++ b/pkgs/tools/system/kanata/default.nix
@@ -23,11 +23,6 @@ rustPlatform.buildRustPackage rec {
 
   buildFeatures = lib.optional withCmd "cmd";
 
-  # Workaround for https://github.com/nixos/nixpkgs/issues/166205
-  env = lib.optionalAttrs stdenv.cc.isClang {
-    NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
-  };
-
   postInstall = ''
     install -Dm 444 assets/kanata-icon.svg $out/share/icons/hicolor/scalable/apps/kanata.svg
   '';
diff --git a/pkgs/tools/system/monit/default.nix b/pkgs/tools/system/monit/default.nix
index bd36d6fa400e..319d3492b48e 100644
--- a/pkgs/tools/system/monit/default.nix
+++ b/pkgs/tools/system/monit/default.nix
@@ -47,7 +47,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://mmonit.com/monit/";
     description = "Monitoring system";
-    license = lib.licenses.agpl3;
+    license = lib.licenses.agpl3Plus;
     maintainers = with lib.maintainers; [ raskin wmertens ryantm ];
     platforms = with lib; platforms.linux ++ platforms.darwin;
     mainProgram = "monit";
diff --git a/pkgs/tools/system/netdata/go.d.plugin.nix b/pkgs/tools/system/netdata/go.d.plugin.nix
index ce53b278a9bd..910ad29c13fa 100644
--- a/pkgs/tools/system/netdata/go.d.plugin.nix
+++ b/pkgs/tools/system/netdata/go.d.plugin.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Netdata orchestrator for data collection modules written in go";
+    mainProgram = "godplugin";
     homepage = "https://github.com/netdata/go.d.plugin";
     changelog = "https://github.com/netdata/go.d.plugin/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/system/nvtop/build-nvtop.nix b/pkgs/tools/system/nvtop/build-nvtop.nix
new file mode 100644
index 000000000000..a72ab1ce0dfd
--- /dev/null
+++ b/pkgs/tools/system/nvtop/build-nvtop.nix
@@ -0,0 +1,90 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, gtest
+, cudatoolkit
+, libdrm
+, ncurses
+, testers
+, udev
+, addOpenGLRunpath
+, amd ? false
+, intel ? false
+, msm ? false
+, nvidia ? false
+, apple ? false
+, panfrost ? false
+, panthor ? false
+, ascend ? false
+}:
+
+let
+  drm-postFixup = ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${lib.makeLibraryPath [ libdrm ncurses udev ]}" \
+      $out/bin/nvtop
+  '';
+  needDrm = (amd || msm || panfrost || panthor);
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "nvtop";
+  version = "3.1.0";
+
+  src = fetchFromGitHub {
+    owner = "Syllo";
+    repo = "nvtop";
+    rev = finalAttrs.version;
+    hash = "sha256-MkkBY2PR6FZnmRMqv9MWqwPWRgixfkUQW5TWJtHEzwA=";
+  };
+
+  cmakeFlags = with lib.strings; [
+    (cmakeBool "BUILD_TESTING" true)
+    (cmakeBool "USE_LIBUDEV_OVER_LIBSYSTEMD" true)
+    (cmakeBool "AMDGPU_SUPPORT" amd)
+    (cmakeBool "NVIDIA_SUPPORT" nvidia)
+    (cmakeBool "INTEL_SUPPORT" intel)
+    (cmakeBool "APPLE_SUPPORT" apple)
+    (cmakeBool "MSM_SUPPORT" msm)
+    (cmakeBool "PANFROST_SUPPORT" panfrost)
+    (cmakeBool "PANTHOR_SUPPORT" panthor)
+    (cmakeBool "ASCEND_SUPPORT" ascend)
+  ];
+  nativeBuildInputs = [ cmake gtest ] ++ lib.optional nvidia addOpenGLRunpath;
+
+  buildInputs = with lib; [ ncurses udev ]
+    ++ optional nvidia cudatoolkit
+    ++ optional needDrm libdrm
+  ;
+
+  # this helps cmake to find <drm.h>
+  env.NIX_CFLAGS_COMPILE = lib.optionalString needDrm "-isystem ${lib.getDev libdrm}/include/libdrm";
+
+  # ordering of fixups is important
+  postFixup = (lib.optionalString needDrm drm-postFixup) + (lib.optionalString nvidia "addOpenGLRunpath $out/bin/nvtop");
+
+  doCheck = true;
+
+  passthru = {
+    tests.version = testers.testVersion {
+      inherit (finalAttrs) version;
+      package = finalAttrs.finalPackage;
+      command = "nvtop --version";
+    };
+  };
+
+  meta = with lib; {
+    description = "A (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs";
+    longDescription = ''
+      Nvtop stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs.
+      It can handle multiple GPUs and print information about them in a htop familiar way.
+    '';
+    homepage = "https://github.com/Syllo/nvtop";
+    changelog = "https://github.com/Syllo/nvtop/releases/tag/${finalAttrs.version}";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ willibutz gbtb anthonyroussel ];
+    mainProgram = "nvtop";
+  };
+})
diff --git a/pkgs/tools/system/nvtop/default.nix b/pkgs/tools/system/nvtop/default.nix
index e47291207f08..f6e679b6ffef 100644
--- a/pkgs/tools/system/nvtop/default.nix
+++ b/pkgs/tools/system/nvtop/default.nix
@@ -1,83 +1,18 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, cmake
-, gtest
-, cudatoolkit
-, libdrm
-, ncurses
-, nvtop
-, testers
-, udev
-, addOpenGLRunpath
-, amd ? true
-, intel ? true
-, msm ? true
-, nvidia ? true
-}:
-
+{ callPackage }:
 let
-  nvidia-postFixup = "addOpenGLRunpath $out/bin/nvtop";
-  libPath = lib.makeLibraryPath [ libdrm ncurses udev ];
-  drm-postFixup = ''
-    patchelf \
-      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      --set-rpath "${libPath}" \
-      $out/bin/nvtop
-  '';
+  # this GPU families are supported "by-default" upstream (see https://github.com/Syllo/nvtop/blob/3a69c2d060298cd6f92cb09db944eded98be1c23/CMakeLists.txt#L81)
+  # coincidentally, these families are also easy to build in nixpkgs at the moment
+  defaultGPUFamilies = [ "amd" "intel" "msm" "nvidia" "panfrost" "panthor" ];
+  # these GPU families are partially supported upstream, they are also tricky to build in nixpkgs
+  # volunteers with specific hardware needed to build and test these package variants
+  additionalGPUFamilies = [ "apple" "ascend" ];
+  defaultSupport = builtins.listToAttrs (builtins.map (gpu: { name = gpu; value = true; }) defaultGPUFamilies);
 in
-stdenv.mkDerivation rec {
-  pname = "nvtop";
-  version = "3.0.2";
-
-  src = fetchFromGitHub {
-    owner = "Syllo";
-    repo = "nvtop";
-    rev = version;
-    hash = "sha256-SHKdjzbc3ZZfOW2p8RLFRKKBfLnO+Z8/bKVxcdLLqxw=";
-  };
-
-  cmakeFlags = with lib; [
-    "-DBUILD_TESTING=ON"
-    "-DUSE_LIBUDEV_OVER_LIBSYSTEMD=ON"
-  ] ++ optional nvidia "-DNVML_INCLUDE_DIRS=${cudatoolkit}/include"
-  ++ optional nvidia "-DNVML_LIBRARIES=${cudatoolkit}/targets/x86_64-linux/lib/stubs/libnvidia-ml.so"
-  ++ optional (!amd) "-DAMDGPU_SUPPORT=OFF"
-  ++ optional (!intel) "-DINTEL_SUPPORT=OFF"
-  ++ optional (!msm) "-DMSM_SUPPORT=OFF"
-  ++ optional (!nvidia) "-DNVIDIA_SUPPORT=OFF"
-  ++ optional (amd || msm) "-DLibdrm_INCLUDE_DIRS=${libdrm}/lib/stubs/libdrm.so.2"
-  ;
-  nativeBuildInputs = [ cmake gtest ] ++ lib.optional nvidia addOpenGLRunpath;
-  buildInputs = with lib; [ ncurses udev ]
-    ++ optional nvidia cudatoolkit
-    ++ optional (amd || msm) libdrm
-  ;
-
-  # ordering of fixups is important
-  postFixup = (lib.optionalString (amd || msm) drm-postFixup) + (lib.optionalString nvidia nvidia-postFixup);
+{
+  full = callPackage ./build-nvtop.nix defaultSupport; #this package supports all default GPU families
+}
+# additional packages with only one specific GPU family support
+// builtins.listToAttrs (builtins.map (gpu: { name = gpu; value = (callPackage ./build-nvtop.nix { "${gpu}" = true; }); }) defaultGPUFamilies)
 
-  doCheck = true;
 
-  passthru = {
-    tests.version = testers.testVersion {
-      inherit version;
-      package = nvtop;
-      command = "nvtop --version";
-    };
-  };
 
-  meta = with lib; {
-    description = "A (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs";
-    longDescription = ''
-      Nvtop stands for Neat Videocard TOP, a (h)top like task monitor for AMD, Adreno, Intel and NVIDIA GPUs.
-      It can handle multiple GPUs and print information about them in a htop familiar way.
-    '';
-    homepage = "https://github.com/Syllo/nvtop";
-    changelog = "https://github.com/Syllo/nvtop/releases/tag/${version}";
-    license = licenses.gpl3Only;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ willibutz gbtb anthonyroussel ];
-    mainProgram = "nvtop";
-  };
-}
diff --git a/pkgs/tools/system/rsyslog/default.nix b/pkgs/tools/system/rsyslog/default.nix
index 37af3d87fefc..865c66926259 100644
--- a/pkgs/tools/system/rsyslog/default.nix
+++ b/pkgs/tools/system/rsyslog/default.nix
@@ -185,6 +185,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.rsyslog.com/";
     description = "Enhanced syslog implementation";
+    mainProgram = "rsyslogd";
     changelog = "https://raw.githubusercontent.com/rsyslog/rsyslog/v${version}/ChangeLog";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
diff --git a/pkgs/tools/system/sleuthkit/default.nix b/pkgs/tools/system/sleuthkit/default.nix
index 175ec98fe220..934a81724446 100644
--- a/pkgs/tools/system/sleuthkit/default.nix
+++ b/pkgs/tools/system/sleuthkit/default.nix
@@ -2,37 +2,33 @@
 , stdenv
 , fetchFromGitHub
 , autoreconfHook
-, libewf
+, ant
+, jdk
+, perl
+, stripJavaArchivesHook
 , afflib
+, libewf
 , openssl
 , zlib
-, openjdk
-, perl
-, ant
 }:
 
-stdenv.mkDerivation rec {
-  version = "4.12.1";
+stdenv.mkDerivation (finalAttrs: {
   pname = "sleuthkit";
+  version = "4.12.1"; # Note: when updating don't forget to also update the rdeps outputHash
 
-  sleuthsrc = fetchFromGitHub {
+  src = fetchFromGitHub {
     owner = "sleuthkit";
     repo = "sleuthkit";
-    rev = "${pname}-${version}";
+    rev = "sleuthkit-${finalAttrs.version}";
     hash = "sha256-q51UY2lIcLijycNaq9oQIwUXpp/1mfc3oPN4syOPF44=";
   };
 
   # Fetch libraries using a fixed output derivation
-  rdeps = stdenv.mkDerivation rec {
-
-    version = "1.0";
-    pname = "sleuthkit-deps";
-    nativeBuildInputs = [
-      openjdk
-      ant
-    ];
+  rdeps = stdenv.mkDerivation {
+    name = "sleuthkit-${finalAttrs.version}-deps";
+    inherit (finalAttrs) src;
 
-    src = sleuthsrc;
+    nativeBuildInputs = [ ant jdk ];
 
     # unpack, build, install
     dontConfigure = true;
@@ -48,7 +44,6 @@ stdenv.mkDerivation rec {
     '';
 
     installPhase = ''
-      export IVY_HOME=$NIX_BUILD_TOP/.ant
       mkdir -m 755 -p $out/bindings/java
       cp -r bindings/java/lib $out/bindings/java
       mkdir -m 755 -p $out/case-uco/java
@@ -58,11 +53,23 @@ stdenv.mkDerivation rec {
     '';
 
     outputHashMode = "recursive";
-    outputHash = "0fq7v6zlgybg4v6k9wqjlk4gaqgjrpihbnr182vaqriihflav2s8";
     outputHashAlgo = "sha256";
+    outputHash = "sha256-mc/KQrwn3xpPI0ngOLcpoQDaJJm/rM8XgaX//5PiRZk=";
   };
 
-  src = sleuthsrc;
+  postUnpack = ''
+    export IVY_HOME="$NIX_BUILD_TOP/.ant"
+    export ANT_ARGS="-Doffline=true -Ddefault-jar-location=$IVY_HOME/lib"
+
+    # pre-positioning these jar files allows -Doffline=true to work
+    mkdir -p source/{bindings,case-uco}/java $IVY_HOME
+    cp -r ${finalAttrs.rdeps}/bindings/java/lib source/bindings/java
+    chmod -R 755 source/bindings/java
+    cp -r ${finalAttrs.rdeps}/case-uco/java/lib source/case-uco/java
+    chmod -R 755 source/case-uco/java
+    cp -r ${finalAttrs.rdeps}/lib $IVY_HOME
+    chmod -R 755 $IVY_HOME
+  '';
 
   postPatch = ''
     substituteInPlace tsk/img/ewf.cpp --replace libewf_handle_read_random libewf_handle_read_buffer_at_offset
@@ -72,15 +79,15 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     autoreconfHook
-    openjdk
-    perl
     ant
-    rdeps
+    jdk
+    perl
+    stripJavaArchivesHook
   ];
 
   buildInputs = [
-    libewf
     afflib
+    libewf
     openssl
     zlib
   ];
@@ -90,31 +97,16 @@ stdenv.mkDerivation rec {
     rm -rf */.libs
   '';
 
-  postUnpack = ''
-    export IVY_HOME="$NIX_BUILD_TOP/.ant"
-    export JAVA_HOME="${openjdk}"
-    export ant_args="-Doffline=true -Ddefault-jar-location=$IVY_HOME/lib"
-
-    # pre-positioning these jar files allows -Doffline=true to work
-    mkdir -p source/{bindings,case-uco}/java $IVY_HOME
-    cp -r ${rdeps}/bindings/java/lib source/bindings/java
-    chmod -R 755 source/bindings/java
-    cp -r ${rdeps}/case-uco/java/lib source/case-uco/java
-    chmod -R 755 source/case-uco/java
-    cp -r ${rdeps}/lib $IVY_HOME
-    chmod -R 755 $IVY_HOME
-  '';
-
   meta = with lib; {
     description = "A forensic/data recovery tool";
     homepage = "https://www.sleuthkit.org/";
-    changelog = "https://github.com/sleuthkit/sleuthkit/releases/tag/sleuthkit-${version}";
+    changelog = "https://github.com/sleuthkit/sleuthkit/blob/${finalAttrs.src.rev}/NEWS.txt";
     maintainers = with maintainers; [ raskin gfrascadorio ];
     platforms = platforms.linux;
     sourceProvenance = with sourceTypes; [
       fromSource
-      binaryBytecode  # dependencies
+      binaryBytecode # dependencies
     ];
     license = licenses.ipl10;
   };
-}
+})
diff --git a/pkgs/tools/system/zenith/default.nix b/pkgs/tools/system/zenith/default.nix
index af8231e96c6d..7beaab4713a5 100644
--- a/pkgs/tools/system/zenith/default.nix
+++ b/pkgs/tools/system/zenith/default.nix
@@ -46,6 +46,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "Sort of like top or htop but with zoom-able charts, network, and disk usage"
       + lib.optionalString nvidiaSupport ", and NVIDIA GPU usage";
+    mainProgram = "zenith";
     homepage = "https://github.com/bvaisvil/zenith";
     license = licenses.mit;
     maintainers = with maintainers; [ wegank ];
diff --git a/pkgs/tools/text/a2ps/default.nix b/pkgs/tools/text/a2ps/default.nix
index dd4b7b2ca979..c275ee7d967c 100644
--- a/pkgs/tools/text/a2ps/default.nix
+++ b/pkgs/tools/text/a2ps/default.nix
@@ -13,11 +13,11 @@
 
 stdenv.mkDerivation rec {
   pname = "a2ps";
-  version = "4.15.5";
+  version = "4.15.6";
 
   src = fetchurl {
     url = "mirror://gnu/a2ps/a2ps-${version}.tar.gz";
-    hash = "sha256-gbsbQQTnwmOXYkUe3JeG2vPf6ziErfx9xqydII8w2n8=";
+    hash = "sha256-h/+dgByxGWkYHVuM+LZeZeWyS7DHahuCXoCY8pBvvfQ=";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/text/abbreviate/default.nix b/pkgs/tools/text/abbreviate/default.nix
index aedf4d173006..2f1e5bc812ab 100644
--- a/pkgs/tools/text/abbreviate/default.nix
+++ b/pkgs/tools/text/abbreviate/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Shorten your strings using common abbreviations";
+    mainProgram = "abbreviate";
     homepage = "https://github.com/dnnrly/abbreviate";
     changelog = "https://github.com/dnnrly/abbreviate/releases/tag/${src.rev}";
     license = licenses.asl20;
diff --git a/pkgs/tools/text/agrep/default.nix b/pkgs/tools/text/agrep/default.nix
index 9fe158b426ae..39de33badd77 100644
--- a/pkgs/tools/text/agrep/default.nix
+++ b/pkgs/tools/text/agrep/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Approximate grep for fast fuzzy string searching";
+    mainProgram = "agrep";
     homepage = "https://www.tgries.de/agrep/";
     license = licenses.isc;
     platforms = with platforms; linux ++ darwin;
diff --git a/pkgs/tools/text/aha/default.nix b/pkgs/tools/text/aha/default.nix
index 4ac07cef7eed..2344602a276c 100644
--- a/pkgs/tools/text/aha/default.nix
+++ b/pkgs/tools/text/aha/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "ANSI HTML Adapter";
+    mainProgram = "aha";
     longDescription = ''
       aha takes ANSI SGR-coloured input and produces W3C-conformant HTML code.
     '';
diff --git a/pkgs/tools/text/align/default.nix b/pkgs/tools/text/align/default.nix
index e3287b762e34..844b03b2c8c1 100644
--- a/pkgs/tools/text/align/default.nix
+++ b/pkgs/tools/text/align/default.nix
@@ -16,6 +16,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/Guitarbum722/align";
     description = "A general purpose application and library for aligning text";
+    mainProgram = "align";
     maintainers = with maintainers; [ hrhino ];
     license = licenses.mit;
   };
diff --git a/pkgs/tools/text/anew/default.nix b/pkgs/tools/text/anew/default.nix
index 2312d1dc69bf..58b6059a252c 100644
--- a/pkgs/tools/text/anew/default.nix
+++ b/pkgs/tools/text/anew/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for adding new lines to files, skipping duplicates";
+    mainProgram = "anew";
     homepage = "https://github.com/tomnomnom/anew";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/anewer/default.nix b/pkgs/tools/text/anewer/default.nix
index e41b12cee447..69c4eb39b351 100644
--- a/pkgs/tools/text/anewer/default.nix
+++ b/pkgs/tools/text/anewer/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Append lines from stdin to a file if they don't already exist in the file";
+    mainProgram = "anewer";
     homepage = "https://github.com/ysf/anewer";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/ansifilter/default.nix b/pkgs/tools/text/ansifilter/default.nix
index 3a4751c63f9f..e2fd695d41ec 100644
--- a/pkgs/tools/text/ansifilter/default.nix
+++ b/pkgs/tools/text/ansifilter/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool to convert ANSI to other formats";
+    mainProgram = "ansifilter";
     longDescription = ''
       Tool to remove ANSI or convert them to another format
       (HTML, TeX, LaTeX, RTF, Pango or BBCode)
diff --git a/pkgs/tools/text/ascii/default.nix b/pkgs/tools/text/ascii/default.nix
index 613288079d34..ad9884faa17d 100644
--- a/pkgs/tools/text/ascii/default.nix
+++ b/pkgs/tools/text/ascii/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Interactive ASCII name and synonym chart";
+    mainProgram = "ascii";
     homepage = "http://www.catb.org/~esr/ascii/";
     license = licenses.bsd3;
     platforms = platforms.all;
diff --git a/pkgs/tools/text/asciigraph/default.nix b/pkgs/tools/text/asciigraph/default.nix
index 17c25874f54d..518d7ce549c7 100644
--- a/pkgs/tools/text/asciigraph/default.nix
+++ b/pkgs/tools/text/asciigraph/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/guptarohit/asciigraph";
     description = "Lightweight ASCII line graph ╭┈╯ command line app";
+    mainProgram = "asciigraph";
     license = licenses.bsd3;
     maintainers = with maintainers; [ mmahut ];
   };
diff --git a/pkgs/tools/text/autocorrect/default.nix b/pkgs/tools/text/autocorrect/default.nix
index 676eec70076c..2e51672363f4 100644
--- a/pkgs/tools/text/autocorrect/default.nix
+++ b/pkgs/tools/text/autocorrect/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A linter and formatter for help you improve copywriting, to correct spaces, punctuations between CJK (Chinese, Japanese, Korean)";
+    mainProgram = "autocorrect";
     homepage = "https://huacnlee.github.io/autocorrect";
     changelog = "https://github.com/huacnlee/autocorrect/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/text/base16384/default.nix b/pkgs/tools/text/base16384/default.nix
index c9937fa5cd69..7111eece4295 100644
--- a/pkgs/tools/text/base16384/default.nix
+++ b/pkgs/tools/text/base16384/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Encode binary files to printable utf16be";
+    mainProgram = "base16384";
     homepage = "https://github.com/fumiama/base16384";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ aleksana ];
diff --git a/pkgs/tools/text/bashblog/default.nix b/pkgs/tools/text/bashblog/default.nix
index 0080ed0f7e1c..0159e20de99a 100644
--- a/pkgs/tools/text/bashblog/default.nix
+++ b/pkgs/tools/text/bashblog/default.nix
@@ -54,6 +54,7 @@ in stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A single Bash script to create blogs";
+    mainProgram = "bashblog";
     homepage = "https://github.com/cfenollosa/bashblog";
     license = licenses.gpl3Only;
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/book-summary/default.nix b/pkgs/tools/text/book-summary/default.nix
index a1bbe710273c..374c107f9a3d 100644
--- a/pkgs/tools/text/book-summary/default.nix
+++ b/pkgs/tools/text/book-summary/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Book auto-summary for gitbook and mdBook";
+    mainProgram = "book-summary";
     homepage = "https://github.com/dvogt23/book-summary";
     license = licenses.mit;
     maintainers = with teams; iog.members;
diff --git a/pkgs/tools/text/boxes/default.nix b/pkgs/tools/text/boxes/default.nix
index 5340c5eccff9..fe78492b36a0 100644
--- a/pkgs/tools/text/boxes/default.nix
+++ b/pkgs/tools/text/boxes/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A command line program which draws, removes, and repairs ASCII art boxes";
+    mainProgram = "boxes";
     homepage = "https://boxes.thomasjensen.com";
     license = licenses.gpl2;
     maintainers = with maintainers; [ waiting-for-dev ];
diff --git a/pkgs/tools/text/catdocx/default.nix b/pkgs/tools/text/catdocx/default.nix
index c762e15c80e2..27eb964eb3c2 100644
--- a/pkgs/tools/text/catdocx/default.nix
+++ b/pkgs/tools/text/catdocx/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Extracts plain text from docx files";
+    mainProgram = "catdocx";
     homepage = "https://github.com/jncraton/catdocx";
     license = with licenses; [ bsd3 ];
     maintainers = [ maintainers.michalrus ];
diff --git a/pkgs/tools/text/cconv/default.nix b/pkgs/tools/text/cconv/default.nix
index de8405aed43b..86aaf2d5f7c6 100644
--- a/pkgs/tools/text/cconv/default.nix
+++ b/pkgs/tools/text/cconv/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A iconv based simplified-traditional chinese conversion tool";
+    mainProgram = "cconv";
     homepage = "https://github.com/xiaoyjy/cconv";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/tools/text/chars/default.nix b/pkgs/tools/text/chars/default.nix
index 74083feb68f5..509953e8059b 100644
--- a/pkgs/tools/text/chars/default.nix
+++ b/pkgs/tools/text/chars/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Commandline tool to display information about unicode characters";
+    mainProgram = "chars";
     homepage = "https://github.com/antifuchs/chars";
     license = licenses.mit;
     maintainers = with maintainers; [ bbigras ];
diff --git a/pkgs/tools/text/choose/default.nix b/pkgs/tools/text/choose/default.nix
index f40fcd1e3b6d..b765a40f5496 100644
--- a/pkgs/tools/text/choose/default.nix
+++ b/pkgs/tools/text/choose/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A human-friendly and fast alternative to cut and (sometimes) awk";
+    mainProgram = "choose";
     homepage = "https://github.com/theryangeary/choose";
     license = licenses.gpl3;
     maintainers = with maintainers; [ sohalt ];
diff --git a/pkgs/tools/text/cidrgrep/default.nix b/pkgs/tools/text/cidrgrep/default.nix
index 0117374dadef..ddc67097fb28 100644
--- a/pkgs/tools/text/cidrgrep/default.nix
+++ b/pkgs/tools/text/cidrgrep/default.nix
@@ -19,6 +19,7 @@ buildGoModule {
 
   meta = {
     description = "Like grep but for IPv4 CIDRs";
+    mainProgram = "cidrgrep";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ das_j ];
   };
diff --git a/pkgs/tools/text/cmigemo/default.nix b/pkgs/tools/text/cmigemo/default.nix
index 179db9c337dd..09810f1e0836 100644
--- a/pkgs/tools/text/cmigemo/default.nix
+++ b/pkgs/tools/text/cmigemo/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A tool that supports Japanese incremental search with Romaji";
+    mainProgram = "cmigemo";
     homepage = "https://www.kaoriya.net/software/cmigemo";
     license = licenses.mit;
     maintainers = [ maintainers.cohei ];
diff --git a/pkgs/tools/text/coloursum/default.nix b/pkgs/tools/text/coloursum/default.nix
index 93ebf6c309e4..78f583e3f73d 100644
--- a/pkgs/tools/text/coloursum/default.nix
+++ b/pkgs/tools/text/coloursum/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Colourise your checksum output";
+    mainProgram = "coloursum";
     homepage = "https://github.com/ticky/coloursum";
     license = licenses.mit;
     maintainers = with maintainers; [ fgaz ];
diff --git a/pkgs/tools/text/comrak/default.nix b/pkgs/tools/text/comrak/default.nix
index 3b9af32c2833..e2a9633aa15a 100644
--- a/pkgs/tools/text/comrak/default.nix
+++ b/pkgs/tools/text/comrak/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CommonMark-compatible GitHub Flavored Markdown parser and formatter";
+    mainProgram = "comrak";
     homepage = "https://github.com/kivikakk/comrak";
     changelog = "https://github.com/kivikakk/comrak/blob/${version}/changelog.txt";
     license = licenses.bsd2;
diff --git a/pkgs/tools/text/convertlit/default.nix b/pkgs/tools/text/convertlit/default.nix
index 4225934d2d4e..23112e83b8c8 100644
--- a/pkgs/tools/text/convertlit/default.nix
+++ b/pkgs/tools/text/convertlit/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://www.convertlit.com/";
     description = "A tool for converting Microsoft Reader ebooks to more open formats";
+    mainProgram = "clit";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
   };
diff --git a/pkgs/tools/text/copyright-update/default.nix b/pkgs/tools/text/copyright-update/default.nix
index e0318c20a0e6..72cecf1e9246 100644
--- a/pkgs/tools/text/copyright-update/default.nix
+++ b/pkgs/tools/text/copyright-update/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/jaalto/project--copyright-update";
     description = "Updates the copyright information in a set of files";
+    mainProgram = "copyright-update";
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.rycee ];
diff --git a/pkgs/tools/text/crowdin-cli/default.nix b/pkgs/tools/text/crowdin-cli/default.nix
index 61543001aefd..a640b11d3808 100644
--- a/pkgs/tools/text/crowdin-cli/default.nix
+++ b/pkgs/tools/text/crowdin-cli/default.nix
@@ -14,11 +14,11 @@
 
 stdenv.mkDerivation rec {
   pname = "crowdin-cli";
-  version = "3.18.0";
+  version = "3.19.0";
 
   src = fetchurl {
     url = "https://github.com/crowdin/${pname}/releases/download/${version}/${pname}.zip";
-    hash = "sha256-wktEg9JPokKeyEOdK9j55XSefj4rleU1ig5exP83j/g=";
+    hash = "sha256-E8I5yWOEGZwiM3oHhmZhvppuCAWLDFx7X7DVfo29W+U=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper unzip ];
diff --git a/pkgs/tools/text/csvdiff/default.nix b/pkgs/tools/text/csvdiff/default.nix
index 236993b2dd25..b7e68a709122 100644
--- a/pkgs/tools/text/csvdiff/default.nix
+++ b/pkgs/tools/text/csvdiff/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://aswinkarthik.github.io/csvdiff/";
     description = "A fast diff tool for comparing csv files";
+    mainProgram = "csvdiff";
     license = licenses.mit;
     maintainers = with maintainers; [ turion ];
   };
diff --git a/pkgs/tools/text/csview/default.nix b/pkgs/tools/text/csview/default.nix
index 8f5ed7989f47..49bd81c7e01e 100644
--- a/pkgs/tools/text/csview/default.nix
+++ b/pkgs/tools/text/csview/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A high performance csv viewer with cjk/emoji support";
+    mainProgram = "csview";
     homepage = "https://github.com/wfxr/csview";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/dadadodo/default.nix b/pkgs/tools/text/dadadodo/default.nix
index a70a7efda72e..dc1a18ae23f2 100644
--- a/pkgs/tools/text/dadadodo/default.nix
+++ b/pkgs/tools/text/dadadodo/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Markov chain-based text generator";
+    mainProgram = "dadadodo";
     homepage = "http://www.jwz.org/dadadodo";
     maintainers = with maintainers; [ pSub ];
     platforms = platforms.all;
diff --git a/pkgs/tools/text/dfmt/default.nix b/pkgs/tools/text/dfmt/default.nix
index f09ce0b45256..c31335e560f1 100644
--- a/pkgs/tools/text/dfmt/default.nix
+++ b/pkgs/tools/text/dfmt/default.nix
@@ -20,6 +20,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Format paragraphs, comments and doc strings";
+    mainProgram = "dfmt";
     homepage = "https://github.com/dmerejkowsky/dfmt";
     license = licenses.bsd3;
     maintainers = with maintainers; [ cole-h ];
diff --git a/pkgs/tools/text/diffr/default.nix b/pkgs/tools/text/diffr/default.nix
index ee12b39c3ec3..9abc2fac5150 100644
--- a/pkgs/tools/text/diffr/default.nix
+++ b/pkgs/tools/text/diffr/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Yet another diff highlighting tool";
+    mainProgram = "diffr";
     homepage = "https://github.com/mookid/diffr";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ davidtwco ];
diff --git a/pkgs/tools/text/diffstat/default.nix b/pkgs/tools/text/diffstat/default.nix
index 0b10014e0e6e..0e5b8d9a7174 100644
--- a/pkgs/tools/text/diffstat/default.nix
+++ b/pkgs/tools/text/diffstat/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Read output of diff and display a histogram of the changes";
+    mainProgram = "diffstat";
     longDescription = ''
       diffstat reads the output of diff and displays a histogram of the
       insertions, deletions, and modifications per-file. It is useful for
diff --git a/pkgs/tools/text/difftastic/default.nix b/pkgs/tools/text/difftastic/default.nix
index e1733800cdfe..01f62462fdd8 100644
--- a/pkgs/tools/text/difftastic/default.nix
+++ b/pkgs/tools/text/difftastic/default.nix
@@ -38,11 +38,6 @@ rustPlatform.buildRustPackage rec {
     "--skip=options::tests::test_detect_display_width"
   ];
 
-  # Work around https://github.com/NixOS/nixpkgs/issues/166205.
-  env = lib.optionalAttrs stdenv.cc.isClang {
-    NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
-  };
-
   postPatch = ''
     patch -d $cargoDepsCopy/libmimalloc-sys-0.1.24/c_src/mimalloc \
       -p1 < ${mimallocPatch}
diff --git a/pkgs/tools/text/dirdiff/default.nix b/pkgs/tools/text/dirdiff/default.nix
index 437743e66ef6..c0347aface09 100644
--- a/pkgs/tools/text/dirdiff/default.nix
+++ b/pkgs/tools/text/dirdiff/default.nix
@@ -52,6 +52,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Graphical directory tree diff and merge tool";
+    mainProgram = "dirdiff";
     longDescription = ''
       Dirdiff is a graphical tool for displaying the differences between
       directory trees and for merging changes from one tree into another.
diff --git a/pkgs/tools/text/each/default.nix b/pkgs/tools/text/each/default.nix
index 02974030b269..6f24ee66fe40 100644
--- a/pkgs/tools/text/each/default.nix
+++ b/pkgs/tools/text/each/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = " A better way of working with structured data on the command line";
+    mainProgram = "each";
     homepage = "https://github.com/arraypad/each";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ thiagokokada ];
diff --git a/pkgs/tools/text/epubcheck/default.nix b/pkgs/tools/text/epubcheck/default.nix
index fd84abb0ef06..abd2803508bb 100644
--- a/pkgs/tools/text/epubcheck/default.nix
+++ b/pkgs/tools/text/epubcheck/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/w3c/epubcheck";
     description = "Validation tool for EPUB";
+    mainProgram = "epubcheck";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = with licenses; [ asl20 bsd3 mpl10 w3c ];
     platforms = platforms.all;
diff --git a/pkgs/tools/text/esh/default.nix b/pkgs/tools/text/esh/default.nix
index a1d6db2a7c2d..abbeb29234da 100644
--- a/pkgs/tools/text/esh/default.nix
+++ b/pkgs/tools/text/esh/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Simple templating engine based on shell";
+    mainProgram = "esh";
     homepage = "https://github.com/jirutka/esh";
     license = licenses.mit;
     maintainers = with maintainers; [ mnacamura ];
diff --git a/pkgs/tools/text/fanficfare/default.nix b/pkgs/tools/text/fanficfare/default.nix
index 149082cc995f..adf141514038 100644
--- a/pkgs/tools/text/fanficfare/default.nix
+++ b/pkgs/tools/text/fanficfare/default.nix
@@ -30,6 +30,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for making eBooks from fanfiction web sites";
+    mainProgram = "fanficfare";
     homepage = "https://github.com/JimmXinu/FanFicFare";
     license = licenses.gpl3;
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/fastmod/default.nix b/pkgs/tools/text/fastmod/default.nix
index f8317d70d778..53d68a7723a6 100644
--- a/pkgs/tools/text/fastmod/default.nix
+++ b/pkgs/tools/text/fastmod/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A utility that makes sweeping changes to large, shared code bases";
+    mainProgram = "fastmod";
     homepage = "https://github.com/facebookincubator/fastmod";
     license = licenses.asl20;
     maintainers = with maintainers; [ jduan ];
diff --git a/pkgs/tools/text/frangipanni/default.nix b/pkgs/tools/text/frangipanni/default.nix
index bb144b8f43e1..f95c6b4f1636 100644
--- a/pkgs/tools/text/frangipanni/default.nix
+++ b/pkgs/tools/text/frangipanni/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert lines of text into a tree structure";
+    mainProgram = "frangipanni";
     homepage = "https://github.com/birchb1024/frangipanni";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/tools/text/frawk/default.nix b/pkgs/tools/text/frawk/default.nix
index 230d1328d457..46f73ebd0b9c 100644
--- a/pkgs/tools/text/frawk/default.nix
+++ b/pkgs/tools/text/frawk/default.nix
@@ -31,16 +31,12 @@ rustPlatform.buildRustPackage rec {
     export RUSTC_BOOTSTRAP=1
   '';
 
-  # Work around https://github.com/NixOS/nixpkgs/issues/166205.
-  env = lib.optionalAttrs stdenv.cc.isClang {
-    NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
-  };
-
   # depends on cpu instructions that may not be available on builders
   doCheck = false;
 
   meta = with lib; {
     description = "A small programming language for writing short programs processing textual data";
+    mainProgram = "frawk";
     homepage = "https://github.com/ezrosent/frawk";
     changelog = "https://github.com/ezrosent/frawk/releases/tag/v${version}";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/tools/text/frogmouth/default.nix b/pkgs/tools/text/frogmouth/default.nix
index 68d63dc7aa5f..e7c9916c1339 100644
--- a/pkgs/tools/text/frogmouth/default.nix
+++ b/pkgs/tools/text/frogmouth/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A Markdown browser for your terminal";
+    mainProgram = "frogmouth";
     homepage = "https://github.com/Textualize/frogmouth";
     changelog = "https://github.com/Textualize/frogmouth/blob/${src.rev}/ChangeLog.md";
     license = licenses.mit;
diff --git a/pkgs/tools/text/fst/default.nix b/pkgs/tools/text/fst/default.nix
index d08d29376b74..0ad2075de08f 100644
--- a/pkgs/tools/text/fst/default.nix
+++ b/pkgs/tools/text/fst/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Represent large sets and maps compactly with finite state transducers";
+    mainProgram = "fst";
     homepage = "https://github.com/BurntSushi/fst";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = with maintainers; [ rmcgibbo ];
diff --git a/pkgs/tools/text/gawk/gawkextlib.nix b/pkgs/tools/text/gawk/gawkextlib.nix
index be50b93a7e2f..86bf2beaa91d 100644
--- a/pkgs/tools/text/gawk/gawkextlib.nix
+++ b/pkgs/tools/text/gawk/gawkextlib.nix
@@ -45,6 +45,7 @@ let
         meta = with lib; {
           homepage = "https://sourceforge.net/projects/gawkextlib/";
           description = "Dynamically loaded extension libraries for GNU AWK";
+          mainProgram = "xmlgawk";
           longDescription = ''
             The gawkextlib project provides several extension libraries for
             gawk (GNU AWK), as well as libgawkextlib containing some APIs that
diff --git a/pkgs/tools/text/gjo/default.nix b/pkgs/tools/text/gjo/default.nix
index 99d988797bfc..d7fcd3a0845a 100644
--- a/pkgs/tools/text/gjo/default.nix
+++ b/pkgs/tools/text/gjo/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Small utility to create JSON objects";
+    mainProgram = "gjo";
     homepage = "https://github.com/skanehira/gjo";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
diff --git a/pkgs/tools/text/glogg/default.nix b/pkgs/tools/text/glogg/default.nix
index 855490df4ab4..a83baf4aa761 100644
--- a/pkgs/tools/text/glogg/default.nix
+++ b/pkgs/tools/text/glogg/default.nix
@@ -29,6 +29,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "The fast, smart log explorer";
+    mainProgram = "glogg";
     longDescription = ''
       A multi-platform GUI application to browse and search through long or complex log files. It is designed with programmers and system administrators in mind. glogg can be seen as a graphical, interactive combination of grep and less.
     '';
diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix
index f4cb20202f0b..c19e087ea547 100644
--- a/pkgs/tools/text/gnupatch/default.nix
+++ b/pkgs/tools/text/gnupatch/default.nix
@@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "GNU Patch, a program to apply differences to files";
+    mainProgram = "patch";
 
     longDescription =
       '' GNU Patch takes a patch file containing a difference listing
diff --git a/pkgs/tools/text/gtranslator/default.nix b/pkgs/tools/text/gtranslator/default.nix
index 5c9c7c868738..8795ff33806a 100644
--- a/pkgs/tools/text/gtranslator/default.nix
+++ b/pkgs/tools/text/gtranslator/default.nix
@@ -60,6 +60,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GNOME translation making program";
+    mainProgram = "gtranslator";
     homepage = "https://wiki.gnome.org/Apps/Gtranslator";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/text/gtree/default.nix b/pkgs/tools/text/gtree/default.nix
index 266b807c3f60..e9710ae7a654 100644
--- a/pkgs/tools/text/gtree/default.nix
+++ b/pkgs/tools/text/gtree/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "gtree";
-  version = "1.10.9";
+  version = "1.10.10";
 
   src = fetchFromGitHub {
     owner = "ddddddO";
     repo = "gtree";
     rev = "v${version}";
-    hash = "sha256-3OXrKt3rM166JXqFuB+S0BJJkmkHPzJaWDDFeClmdM8=";
+    hash = "sha256-sljqO1aYVD7l3ngAeShqzAXKSannBHY7Cx19Kf1xPa0=";
   };
 
-  vendorHash = "sha256-5biKUOzYaVY+52f0ewvHslAnb+BM0BuqGrU8wwA3t+E=";
+  vendorHash = "sha256-yxbnASN3vUpRdsxfVsN/zigfpPJKcJaLfFBTtUUW2t0=";
 
   subPackages = [
     "cmd/gtree"
@@ -37,6 +37,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Generate directory trees and directories using Markdown or programmatically";
+    mainProgram = "gtree";
     homepage = "https://github.com/ddddddO/gtree";
     changelog = "https://github.com/ddddddO/gtree/releases/tag/${src.rev}";
     license = licenses.bsd2;
diff --git a/pkgs/tools/text/gucci/default.nix b/pkgs/tools/text/gucci/default.nix
index f866f74710a9..324dc56ca264 100644
--- a/pkgs/tools/text/gucci/default.nix
+++ b/pkgs/tools/text/gucci/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A simple CLI templating tool written in golang";
+    mainProgram = "gucci";
     homepage = "https://github.com/noqcks/gucci";
     license = licenses.mit;
     maintainers = with maintainers; [ braydenjw ];
diff --git a/pkgs/tools/text/hcledit/default.nix b/pkgs/tools/text/hcledit/default.nix
index d5b2fb0cc0a2..a39802d02822 100644
--- a/pkgs/tools/text/hcledit/default.nix
+++ b/pkgs/tools/text/hcledit/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A command line editor for HCL";
+    mainProgram = "hcledit";
     homepage = "https://github.com/minamijoyo/hcledit";
     license = licenses.mit;
     maintainers = with maintainers; [ aleksana ];
diff --git a/pkgs/tools/text/highlight/default.nix b/pkgs/tools/text/highlight/default.nix
index 7e02f3f60ceb..fc6b12fa6b16 100644
--- a/pkgs/tools/text/highlight/default.nix
+++ b/pkgs/tools/text/highlight/default.nix
@@ -51,6 +51,7 @@ let
 
     meta = with lib; {
       description = "Source code highlighting tool";
+      mainProgram = "highlight";
       homepage = "http://www.andre-simon.de/doku/highlight/en/highlight.php";
       platforms = platforms.unix;
       maintainers = with maintainers; [ willibutz ];
diff --git a/pkgs/tools/text/html2text/default.nix b/pkgs/tools/text/html2text/default.nix
index 7ef802e925fb..4bcf02b5c848 100644
--- a/pkgs/tools/text/html2text/default.nix
+++ b/pkgs/tools/text/html2text/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Convert HTML to plain text";
+    mainProgram = "html2text";
     homepage = "http://www.mbayer.de/html2text/";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.unix;
diff --git a/pkgs/tools/text/huniq/default.nix b/pkgs/tools/text/huniq/default.nix
index a1d30d2fb11d..3bb1252ae0c6 100644
--- a/pkgs/tools/text/huniq/default.nix
+++ b/pkgs/tools/text/huniq/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Command line utility to remove duplicates from the given input";
+    mainProgram = "huniq";
     homepage = "https://github.com/koraa/huniq";
     license = licenses.bsd3;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/hyx/default.nix b/pkgs/tools/text/hyx/default.nix
index f599d067f094..3cbcac20966a 100644
--- a/pkgs/tools/text/hyx/default.nix
+++ b/pkgs/tools/text/hyx/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "minimalistic but powerful Linux console hex editor";
+    mainProgram = "hyx";
     homepage = "https://yx7.cc/code/";
     license = licenses.mit;
     maintainers = with maintainers; [ fpletz ];
diff --git a/pkgs/tools/text/invoice2data/default.nix b/pkgs/tools/text/invoice2data/default.nix
index aed1bd2afd50..b2179d3f63b2 100644
--- a/pkgs/tools/text/invoice2data/default.nix
+++ b/pkgs/tools/text/invoice2data/default.nix
@@ -57,6 +57,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Data extractor for PDF invoices";
+    mainProgram = "invoice2data";
     homepage = "https://github.com/invoice-x/invoice2data";
     license = licenses.mit;
     maintainers = with maintainers; [ psyanticy ];
diff --git a/pkgs/tools/text/jen/default.nix b/pkgs/tools/text/jen/default.nix
index 2361c1aafc1b..0ed0548c0d50 100644
--- a/pkgs/tools/text/jen/default.nix
+++ b/pkgs/tools/text/jen/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple CLI generation tool for creating large datasets";
+    mainProgram = "jen";
     homepage = "https://github.com/whitfin/jen";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/jotdown/default.nix b/pkgs/tools/text/jotdown/default.nix
index e39209cfe106..769b5e296887 100644
--- a/pkgs/tools/text/jotdown/default.nix
+++ b/pkgs/tools/text/jotdown/default.nix
@@ -5,19 +5,20 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jotdown";
-  version = "0.3.2";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "hellux";
     repo = "jotdown";
     rev = version;
-    hash = "sha256-XouI3PHKPtX+3GkhMvdRfwJkCoofMgCY/NXB0tnLyUc=";
+    hash = "sha256-Q1BjmcA5otOkeEe8KQiqKGKHSeGntj+ktcNMrdbGHZI=";
   };
 
-  cargoHash = "sha256-PvKXVP90GOAgz4Sc37B4hli7rbNHVZbksVAo+uy2yEU=";
+  cargoHash = "sha256-bkMJ7ApM+GsshwIFuYsH19CnU6ebq0GfwQvVp9QD46A=";
 
   meta = with lib; {
     description = "A minimal Djot CLI";
+    mainProgram = "jotdown";
     homepage = "https://github.com/hellux/jotdown";
     changelog = "https://github.com/hellux/jotdown/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/text/jsawk/default.nix b/pkgs/tools/text/jsawk/default.nix
index 2f21900b8d01..9547e65dc43d 100644
--- a/pkgs/tools/text/jsawk/default.nix
+++ b/pkgs/tools/text/jsawk/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "Like awk, but for JSON";
+    mainProgram = "jsawk";
     homepage = "https://github.com/micha/jsawk";
     license = lib.licenses.publicDomain;
     maintainers = with lib.maintainers; [ puffnfresh ];
diff --git a/pkgs/tools/text/jumanpp/default.nix b/pkgs/tools/text/jumanpp/default.nix
index 348c785ab28d..af141c873b3b 100644
--- a/pkgs/tools/text/jumanpp/default.nix
+++ b/pkgs/tools/text/jumanpp/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A Japanese morphological analyser using a recurrent neural network language model (RNNLM)";
+    mainProgram = "jumanpp";
     longDescription = ''
       JUMAN++ is a new morphological analyser that considers semantic
       plausibility of word sequences by using a recurrent neural network
diff --git a/pkgs/tools/text/kdiff3/default.nix b/pkgs/tools/text/kdiff3/default.nix
index f9f55bc28851..73fa2ed1baea 100644
--- a/pkgs/tools/text/kdiff3/default.nix
+++ b/pkgs/tools/text/kdiff3/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Compares and merges 2 or 3 files or directories";
+    mainProgram = "kdiff3";
     homepage = "https://invent.kde.org/sdk/kdiff3";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/tools/text/l2md/default.nix b/pkgs/tools/text/l2md/default.nix
index 08ec219690f6..d8bb04378f07 100644
--- a/pkgs/tools/text/l2md/default.nix
+++ b/pkgs/tools/text/l2md/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Convert public-inbox archives to maildir messages";
+    mainProgram = "l2md";
     longDescription = ''
       Quick and dirty hack to import lore.kernel.org list archives via git,
       to export them in maildir format or through a pipe, and to keep them
diff --git a/pkgs/tools/text/mairix/default.nix b/pkgs/tools/text/mairix/default.nix
index aa58ecdd35a9..3528a054b291 100644
--- a/pkgs/tools/text/mairix/default.nix
+++ b/pkgs/tools/text/mairix/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
     homepage = "http://www.rc0.org.uk/mairix";
     license = lib.licenses.gpl2Plus;
     description = "Program for indexing and searching email messages stored in maildir, MH or mbox";
+    mainProgram = "mairix";
     maintainers = with lib.maintainers; [viric];
     platforms = with lib.platforms; all;
   };
diff --git a/pkgs/tools/text/mark/default.nix b/pkgs/tools/text/mark/default.nix
index 33d6072c8c81..ca42b2687edc 100644
--- a/pkgs/tools/text/mark/default.nix
+++ b/pkgs/tools/text/mark/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for syncing your markdown documentation with Atlassian Confluence pages";
+    mainProgram = "mark";
     homepage = "https://github.com/kovetskiy/mark";
     license = licenses.asl20;
     maintainers = with maintainers; [ rguevara84 ];
diff --git a/pkgs/tools/text/markscribe/default.nix b/pkgs/tools/text/markscribe/default.nix
index d542fe281107..c2ee3a596e97 100644
--- a/pkgs/tools/text/markscribe/default.nix
+++ b/pkgs/tools/text/markscribe/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Your personal markdown scribe with template-engine and Git(Hub) & RSS powers";
+    mainProgram = "markscribe";
     homepage = "https://github.com/muesli/markscribe";
     changelog = "https://github.com/muesli/markscribe/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/tools/text/math-review/default.nix b/pkgs/tools/text/math-review/default.nix
index 3592aad8bec7..6206c67bf1c1 100644
--- a/pkgs/tools/text/math-review/default.nix
+++ b/pkgs/tools/text/math-review/default.nix
@@ -25,6 +25,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Emacs preview math inline";
+    mainProgram = "math-preview";
     license = licenses.gpl3Plus;
     homepage = "https://gitlab.com/matsievskiysv/math-preview";
     maintainers = with maintainers; [ renesat ];
diff --git a/pkgs/tools/text/mawk/default.nix b/pkgs/tools/text/mawk/default.nix
index 54e1e303fd4c..06dcdcd8a9ba 100644
--- a/pkgs/tools/text/mawk/default.nix
+++ b/pkgs/tools/text/mawk/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Interpreter for the AWK Programming Language";
+    mainProgram = "mawk";
     homepage = "https://invisible-island.net/mawk/mawk.html";
     license = licenses.gpl2;
     maintainers = with maintainers; [ ehmry ];
diff --git a/pkgs/tools/text/mb2md/default.nix b/pkgs/tools/text/mb2md/default.nix
index 78ce7f593974..3594d4753d85 100644
--- a/pkgs/tools/text/mb2md/default.nix
+++ b/pkgs/tools/text/mb2md/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "mbox to maildir tool";
+    mainProgram = "mb2md";
     license = licenses.publicDomain;
     platforms = platforms.all;
     maintainers = [ maintainers.jb55 ];
diff --git a/pkgs/tools/text/mdbook-admonish/default.nix b/pkgs/tools/text/mdbook-admonish/default.nix
index 1fc72d16c3ce..1deaf9bc7c2b 100644
--- a/pkgs/tools/text/mdbook-admonish/default.nix
+++ b/pkgs/tools/text/mdbook-admonish/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A preprocessor for mdbook to add Material Design admonishments";
+    mainProgram = "mdbook-admonish";
     license = licenses.mit;
     maintainers = with maintainers; [ jmgilman Frostman ];
     homepage = "https://github.com/tommilligan/mdbook-admonish";
diff --git a/pkgs/tools/text/mdbook-cmdrun/default.nix b/pkgs/tools/text/mdbook-cmdrun/default.nix
index 07252461336c..05d27d3e3ad5 100644
--- a/pkgs/tools/text/mdbook-cmdrun/default.nix
+++ b/pkgs/tools/text/mdbook-cmdrun/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "mdbook preprocessor to run arbitrary commands";
+    mainProgram = "mdbook-cmdrun";
     homepage = "https://github.com/FauconFan/mdbook-cmdrun";
     license = licenses.mit;
     maintainers = with maintainers; [ pinpox ];
diff --git a/pkgs/tools/text/mdbook-d2/default.nix b/pkgs/tools/text/mdbook-d2/default.nix
index e8a5f169399e..afff44b9f473 100644
--- a/pkgs/tools/text/mdbook-d2/default.nix
+++ b/pkgs/tools/text/mdbook-d2/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "D2 diagram generator plugin for MdBook";
+    mainProgram = "mdbook-d2";
     homepage = "https://github.com/danieleades/mdbook-d2";
     changelog = "https://github.com/danieleades/mdbook-d2/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/text/mdbook-emojicodes/default.nix b/pkgs/tools/text/mdbook-emojicodes/default.nix
index 0bbcffd28fe2..21c8e48468a2 100644
--- a/pkgs/tools/text/mdbook-emojicodes/default.nix
+++ b/pkgs/tools/text/mdbook-emojicodes/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "MDBook preprocessor for converting emojicodes (e.g. `: cat :`) into emojis 🐱";
+    mainProgram = "mdbook-emojicodes";
     homepage = "https://github.com/blyxyas/mdbook-emojicodes";
     changelog = "https://github.com/blyxyas/mdbook-emojicodes/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/text/mdbook-epub/default.nix b/pkgs/tools/text/mdbook-epub/default.nix
index 47c118afa43a..16e3bff73443 100644
--- a/pkgs/tools/text/mdbook-epub/default.nix
+++ b/pkgs/tools/text/mdbook-epub/default.nix
@@ -34,6 +34,7 @@ in rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "mdbook backend for generating an e-book in the EPUB format";
+    mainProgram = "mdbook-epub";
     homepage = "https://michael-f-bryan.github.io/mdbook-epub";
     license = licenses.mpl20;
     maintainers = with maintainers; [ yuu ];
diff --git a/pkgs/tools/text/mdbook-footnote/default.nix b/pkgs/tools/text/mdbook-footnote/default.nix
index d69c7e4fdd86..cc140a5b5d83 100644
--- a/pkgs/tools/text/mdbook-footnote/default.nix
+++ b/pkgs/tools/text/mdbook-footnote/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A preprocessor for mdbook to support the inclusion of automatically numbered footnotes";
+    mainProgram = "mdbook-footnote";
     homepage = "https://github.com/daviddrysdale/mdbook-footnote";
     license = licenses.asl20;
     maintainers = with maintainers; [ brianmcgillion ];
diff --git a/pkgs/tools/text/mdbook-graphviz/default.nix b/pkgs/tools/text/mdbook-graphviz/default.nix
index ddb4f48fd2f7..c854d4be35a0 100644
--- a/pkgs/tools/text/mdbook-graphviz/default.nix
+++ b/pkgs/tools/text/mdbook-graphviz/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A preprocessor for mdbook, rendering Graphviz graphs to HTML at build time";
+    mainProgram = "mdbook-graphviz";
     homepage = "https://github.com/dylanowen/mdbook-graphviz";
     changelog = "https://github.com/dylanowen/mdbook-graphviz/releases/tag/v${version}";
     license = [ licenses.mpl20 ];
diff --git a/pkgs/tools/text/mdbook-katex/default.nix b/pkgs/tools/text/mdbook-katex/default.nix
index ad4e07f14729..8d27976c346b 100644
--- a/pkgs/tools/text/mdbook-katex/default.nix
+++ b/pkgs/tools/text/mdbook-katex/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A preprocessor for mdbook, rendering LaTeX equations to HTML at build time";
+    mainProgram = "mdbook-katex";
     homepage = "https://github.com/lzanini/${pname}";
     license = [ licenses.mit ];
     maintainers = with maintainers; [ lovesegfault ];
diff --git a/pkgs/tools/text/mdbook-kroki-preprocessor/default.nix b/pkgs/tools/text/mdbook-kroki-preprocessor/default.nix
index 07fd2cd634dd..d419d8b0c116 100644
--- a/pkgs/tools/text/mdbook-kroki-preprocessor/default.nix
+++ b/pkgs/tools/text/mdbook-kroki-preprocessor/default.nix
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Render Kroki diagrams from files or code blocks in mdbook";
+    mainProgram = "mdbook-kroki-preprocessor";
     homepage = "https://github.com/joelcourtney/mdbook-kroki-preprocessor";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ blaggacao ];
diff --git a/pkgs/tools/text/mdbook-linkcheck/default.nix b/pkgs/tools/text/mdbook-linkcheck/default.nix
index c144ea4be954..d90b536edc86 100644
--- a/pkgs/tools/text/mdbook-linkcheck/default.nix
+++ b/pkgs/tools/text/mdbook-linkcheck/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A backend for `mdbook` which will check your links for you";
+    mainProgram = "mdbook-linkcheck";
     homepage = "https://github.com/Michael-F-Bryan/mdbook-linkcheck";
     license = licenses.mit;
     maintainers = with maintainers; [ zhaofengli ];
diff --git a/pkgs/tools/text/mdbook-man/default.nix b/pkgs/tools/text/mdbook-man/default.nix
index 541e27eb7e06..904a4d29112e 100644
--- a/pkgs/tools/text/mdbook-man/default.nix
+++ b/pkgs/tools/text/mdbook-man/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Generate manual pages from mdBooks";
+    mainProgram = "mdbook-man";
     homepage = "https://github.com/vv9k/mdbook-man";
     license = licenses.mit;
     maintainers = with maintainers; [ matthiasbeyer ];
diff --git a/pkgs/tools/text/mdbook-mermaid/default.nix b/pkgs/tools/text/mdbook-mermaid/default.nix
index f5bf827cfd7f..b69dd103917d 100644
--- a/pkgs/tools/text/mdbook-mermaid/default.nix
+++ b/pkgs/tools/text/mdbook-mermaid/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A preprocessor for mdbook to add mermaid.js support";
+    mainProgram = "mdbook-mermaid";
     homepage = "https://github.com/badboy/mdbook-mermaid";
     changelog = "https://github.com/badboy/mdbook-mermaid/blob/v${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/tools/text/mdbook-open-on-gh/default.nix b/pkgs/tools/text/mdbook-open-on-gh/default.nix
index 8ce422340ed0..68a7c504345c 100644
--- a/pkgs/tools/text/mdbook-open-on-gh/default.nix
+++ b/pkgs/tools/text/mdbook-open-on-gh/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "mdbook preprocessor to add a open-on-github link on every page";
+    mainProgram = "mdbook-open-on-gh";
     homepage = "https://github.com/badboy/mdbook-open-on-gh";
     license = [ licenses.mpl20 ];
     maintainers = with maintainers; [ matthiasbeyer ];
diff --git a/pkgs/tools/text/mdbook-pagetoc/default.nix b/pkgs/tools/text/mdbook-pagetoc/default.nix
index acfec960829a..2cd4afee9616 100644
--- a/pkgs/tools/text/mdbook-pagetoc/default.nix
+++ b/pkgs/tools/text/mdbook-pagetoc/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Table of contents for mdbook (in sidebar)";
+    mainProgram = "mdbook-pagetoc";
     homepage = "https://github.com/slowsage/mdbook-pagetoc";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
diff --git a/pkgs/tools/text/mdbook-pdf/default.nix b/pkgs/tools/text/mdbook-pdf/default.nix
index 18b234a4ec08..e0c63f595db1 100644
--- a/pkgs/tools/text/mdbook-pdf/default.nix
+++ b/pkgs/tools/text/mdbook-pdf/default.nix
@@ -44,6 +44,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A backend for mdBook written in Rust for generating PDF";
+    mainProgram = "mdbook-pdf";
     homepage = "https://github.com/HollowMan6/mdbook-pdf";
     changelog = "https://github.com/HollowMan6/mdbook-pdf/releases/tag/v${version}";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/text/mdbook-plantuml/default.nix b/pkgs/tools/text/mdbook-plantuml/default.nix
index 3e6d13d24489..e07bd812cec9 100644
--- a/pkgs/tools/text/mdbook-plantuml/default.nix
+++ b/pkgs/tools/text/mdbook-plantuml/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "mdBook preprocessor to render PlantUML diagrams to png images in the book output directory";
+    mainProgram = "mdbook-plantuml";
     homepage = "https://github.com/sytsereitsma/mdbook-plantuml";
     license = [ licenses.mit ];
     maintainers = with maintainers; [ jcouyang ];
diff --git a/pkgs/tools/text/mdbook-toc/default.nix b/pkgs/tools/text/mdbook-toc/default.nix
index b9bf0ca208c8..3ee6fb6e814f 100644
--- a/pkgs/tools/text/mdbook-toc/default.nix
+++ b/pkgs/tools/text/mdbook-toc/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A preprocessor for mdbook to add inline Table of Contents support";
+    mainProgram = "mdbook-toc";
     homepage = "https://github.com/badboy/mdbook-toc";
     license = [ licenses.mpl20 ];
     maintainers = with maintainers; [ matthiasbeyer ];
diff --git a/pkgs/tools/text/mdbook/default.nix b/pkgs/tools/text/mdbook/default.nix
index 2a875f23287f..4939cfc62623 100644
--- a/pkgs/tools/text/mdbook/default.nix
+++ b/pkgs/tools/text/mdbook/default.nix
@@ -32,6 +32,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Create books from MarkDown";
+    mainProgram = "mdbook";
     homepage = "https://github.com/rust-lang/mdBook";
     changelog = "https://github.com/rust-lang/mdBook/blob/v${version}/CHANGELOG.md";
     license = [ licenses.mpl20 ];
diff --git a/pkgs/tools/text/mir-qualia/default.nix b/pkgs/tools/text/mir-qualia/default.nix
index f532daf8c442..0ded2f1757b2 100644
--- a/pkgs/tools/text/mir-qualia/default.nix
+++ b/pkgs/tools/text/mir-qualia/default.nix
@@ -14,6 +14,7 @@ pythonPackages.buildPythonApplication rec {
 
   meta = {
     description = "Dynamically enable sections of config files";
+    mainProgram = "qualia";
     homepage = "https://github.com/darkfeline/mir.qualia";
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.srhb ] ;
diff --git a/pkgs/tools/text/mmdoc/default.nix b/pkgs/tools/text/mmdoc/default.nix
index 50b7f6dcb9df..e7bf45dbb4c8 100644
--- a/pkgs/tools/text/mmdoc/default.nix
+++ b/pkgs/tools/text/mmdoc/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Minimal Markdown Documentation";
+    mainProgram = "mmdoc";
     homepage = "https://github.com/ryantm/mmdoc";
     license = licenses.cc0;
     maintainers = with maintainers; [ ryantm ];
diff --git a/pkgs/tools/text/morsel/default.nix b/pkgs/tools/text/morsel/default.nix
index b761b03e83d0..416f2e65782f 100644
--- a/pkgs/tools/text/morsel/default.nix
+++ b/pkgs/tools/text/morsel/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Command line tool to translate morse code input to text in real time";
+    mainProgram = "morsel";
     homepage = "https://github.com/SamLee514/morsel";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/tools/text/mpage/default.nix b/pkgs/tools/text/mpage/default.nix
index 5033d53fedaa..e7a114ec6577 100644
--- a/pkgs/tools/text/mpage/default.nix
+++ b/pkgs/tools/text/mpage/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Many-to-one page printing utility";
+    mainProgram = "mpage";
 
     longDescription = ''
       Mpage reads plain text files or PostScript documents and prints
diff --git a/pkgs/tools/text/multitran/mtutils/default.nix b/pkgs/tools/text/multitran/mtutils/default.nix
index 625f06734b2e..9a9ecf0b2675 100644
--- a/pkgs/tools/text/multitran/mtutils/default.nix
+++ b/pkgs/tools/text/multitran/mtutils/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://multitran.sourceforge.net/";
     description = "Multitran: simple command line utilities for dictionary maintenance";
+    mainProgram = "mtquery";
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [viric];
     platforms = with lib.platforms; linux;
diff --git a/pkgs/tools/text/nerdfix/default.nix b/pkgs/tools/text/nerdfix/default.nix
index 8bb9113f013a..fdad3094bbec 100644
--- a/pkgs/tools/text/nerdfix/default.nix
+++ b/pkgs/tools/text/nerdfix/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Nerdfix helps you to find/fix obsolete nerd font icons in your project";
+    mainProgram = "nerdfix";
     homepage = "https://github.com/loichyan/nerdfix";
     changelog = "https://github.com/loichyan/nerdfix/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/tools/text/nkf/default.nix b/pkgs/tools/text/nkf/default.nix
index 9a70ea9461af..ae51ad37243b 100644
--- a/pkgs/tools/text/nkf/default.nix
+++ b/pkgs/tools/text/nkf/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Tool for converting encoding of Japanese text";
+    mainProgram = "nkf";
     homepage = "https://nkf.osdn.jp/";
     license = lib.licenses.zlib;
     platforms = lib.platforms.unix;
diff --git a/pkgs/tools/text/odt2txt/default.nix b/pkgs/tools/text/odt2txt/default.nix
index 0eb18e8435d4..3f8338d6ae08 100644
--- a/pkgs/tools/text/odt2txt/default.nix
+++ b/pkgs/tools/text/odt2txt/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Simple .odt to .txt converter";
+    mainProgram = "odt2txt";
     homepage = "https://github.com/dstosberg/odt2txt";
     platforms = lib.platforms.all;
     license = lib.licenses.gpl2;
diff --git a/pkgs/tools/text/papeer/default.nix b/pkgs/tools/text/papeer/default.nix
index 4084d49373fd..b8cbc477b174 100644
--- a/pkgs/tools/text/papeer/default.nix
+++ b/pkgs/tools/text/papeer/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = {
     description = "Convert websites into ebooks and markdown";
+    mainProgram = "papeer";
     homepage = "https://papeer.tech/";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ ehmry ];
diff --git a/pkgs/tools/text/paperoni/default.nix b/pkgs/tools/text/paperoni/default.nix
index 346ce515b64f..203e5b21689f 100644
--- a/pkgs/tools/text/paperoni/default.nix
+++ b/pkgs/tools/text/paperoni/default.nix
@@ -43,6 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An article extractor in Rust";
+    mainProgram = "paperoni";
     homepage = "https://github.com/hipstermojo/paperoni";
     changelog = "https://github.com/hipstermojo/paperoni/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/tools/text/papertrail/default.nix b/pkgs/tools/text/papertrail/default.nix
index afc9d2d89e7a..5e2b080f9852 100644
--- a/pkgs/tools/text/papertrail/default.nix
+++ b/pkgs/tools/text/papertrail/default.nix
@@ -23,6 +23,7 @@ in stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Command-line client for Papertrail log management service";
+    mainProgram = "papertrail";
     homepage    = "https://github.com/papertrail/papertrail-cli/";
     license     = licenses.mit;
     maintainers = with maintainers; [ nicknovitski ];
diff --git a/pkgs/tools/text/par/default.nix b/pkgs/tools/text/par/default.nix
index e64dbd367be5..c62df86835c0 100644
--- a/pkgs/tools/text/par/default.nix
+++ b/pkgs/tools/text/par/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://www.nicemice.net/par/";
     description = "Paragraph reflow for email";
+    mainProgram = "par";
     platforms = platforms.unix;
     # See https://fedoraproject.org/wiki/Licensing/Par for license details
     license = licenses.free;
diff --git a/pkgs/tools/text/pbgopy/default.nix b/pkgs/tools/text/pbgopy/default.nix
index dad688f1dfb5..0e1e766456a8 100644
--- a/pkgs/tools/text/pbgopy/default.nix
+++ b/pkgs/tools/text/pbgopy/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Copy and paste between devices";
+    mainProgram = "pbgopy";
     homepage = "https://github.com/nakabonne/pbgopy";
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
diff --git a/pkgs/tools/text/peco/default.nix b/pkgs/tools/text/peco/default.nix
index 7c026f06292e..774b2f5a0d1e 100644
--- a/pkgs/tools/text/peco/default.nix
+++ b/pkgs/tools/text/peco/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Simplistic interactive filtering tool";
+    mainProgram = "peco";
     homepage = "https://github.com/peco/peco";
     changelog = "https://github.com/peco/peco/blob/v${version}/Changes";
     license = licenses.mit;
diff --git a/pkgs/tools/text/pinyin-tool/default.nix b/pkgs/tools/text/pinyin-tool/default.nix
index 9d98385933b1..40ca31fe53a7 100644
--- a/pkgs/tools/text/pinyin-tool/default.nix
+++ b/pkgs/tools/text/pinyin-tool/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple command line tool for converting Chinese characters to space-separate pinyin words";
+    mainProgram = "pinyin-tool";
     homepage = "https://github.com/briankung/pinyin-tool";
     license = licenses.mit;
     maintainers = with maintainers; [ neonfuz ];
diff --git a/pkgs/tools/text/platinum-searcher/default.nix b/pkgs/tools/text/platinum-searcher/default.nix
index 4271fe131dac..d0128fcfd0e4 100644
--- a/pkgs/tools/text/platinum-searcher/default.nix
+++ b/pkgs/tools/text/platinum-searcher/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/monochromegane/the_platinum_searcher";
     description = "A code search tool similar to ack and the_silver_searcher(ag)";
+    mainProgram = "pt";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/tools/text/pn/default.nix b/pkgs/tools/text/pn/default.nix
index d77b36651d62..a228f093c346 100644
--- a/pkgs/tools/text/pn/default.nix
+++ b/pkgs/tools/text/pn/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A libphonenumber command-line wrapper";
+    mainProgram = "pn";
     homepage = "https://github.com/Orange-OpenSource/pn";
     license = licenses.asl20;
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/podiff/default.nix b/pkgs/tools/text/podiff/default.nix
index eec0eb351636..b59aba6c4615 100644
--- a/pkgs/tools/text/podiff/default.nix
+++ b/pkgs/tools/text/podiff/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Finds differences in translations between two PO files, or revisions";
+    mainProgram = "podiff";
     homepage = "http://puszcza.gnu.org.ua/software/podiff";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.goibhniu ];
diff --git a/pkgs/tools/text/poedit/default.nix b/pkgs/tools/text/poedit/default.nix
index 7e8b78fda19f..48368e64dc43 100644
--- a/pkgs/tools/text/poedit/default.nix
+++ b/pkgs/tools/text/poedit/default.nix
@@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Cross-platform gettext catalogs (.po files) editor";
+    mainProgram = "poedit";
     homepage = "https://www.poedit.net/";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/pomsky/default.nix b/pkgs/tools/text/pomsky/default.nix
index 474ea404c937..65b67b58fa40 100644
--- a/pkgs/tools/text/pomsky/default.nix
+++ b/pkgs/tools/text/pomsky/default.nix
@@ -36,6 +36,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A portable, modern regular expression language";
+    mainProgram = "pomsky";
     homepage = "https://pomsky-lang.org";
     changelog = "https://github.com/pomsky-lang/pomsky/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/tools/text/proselint/default.nix b/pkgs/tools/text/proselint/default.nix
index 3f1b79c3e015..2f62484d980a 100644
--- a/pkgs/tools/text/proselint/default.nix
+++ b/pkgs/tools/text/proselint/default.nix
@@ -15,6 +15,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A linter for prose";
+    mainProgram = "proselint";
     homepage = "http://proselint.com";
     license = licenses.bsd3;
     maintainers = with maintainers; [ alibabzo ];
diff --git a/pkgs/tools/text/qprint/default.nix b/pkgs/tools/text/qprint/default.nix
index 56f5b5becbd6..c0953f69a7f9 100644
--- a/pkgs/tools/text/qprint/default.nix
+++ b/pkgs/tools/text/qprint/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.fourmilab.ch/webtools/qprint/";
     license = lib.licenses.publicDomain;
     description = "Encode and decode Quoted-Printable files";
+    mainProgram = "qprint";
     maintainers = [ lib.maintainers.tv ];
     platforms = lib.platforms.all;
   };
diff --git a/pkgs/tools/text/reckon/default.nix b/pkgs/tools/text/reckon/default.nix
index 91233dfe97b4..55c6b3cf9556 100644
--- a/pkgs/tools/text/reckon/default.nix
+++ b/pkgs/tools/text/reckon/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Flexibly import bank account CSV files into Ledger for command line accounting";
+    mainProgram = "reckon";
     license = licenses.mit;
     maintainers = with maintainers; [ nicknovitski ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/recode/default.nix b/pkgs/tools/text/recode/default.nix
index 9f215f41feaa..68cd034b8ee4 100644
--- a/pkgs/tools/text/recode/default.nix
+++ b/pkgs/tools/text/recode/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://github.com/rrthomas/recode";
     description = "Converts files between various character sets and usages";
+    mainProgram = "recode";
     changelog = "https://github.com/rrthomas/recode/raw/v${version}/NEWS";
     platforms = lib.platforms.unix;
     license = with lib.licenses; [ lgpl3Plus gpl3Plus ];
diff --git a/pkgs/tools/text/reveal-md/default.nix b/pkgs/tools/text/reveal-md/default.nix
index 0cddbf34093a..9da86f2a61c8 100644
--- a/pkgs/tools/text/reveal-md/default.nix
+++ b/pkgs/tools/text/reveal-md/default.nix
@@ -34,6 +34,7 @@ buildNpmPackage rec {
 
   meta = {
     description = "Get beautiful reveal.js presentations from your Markdown files";
+    mainProgram = "reveal-md";
     homepage = "https://github.com/webpro/reveal-md";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ sagikazarmark ];
diff --git a/pkgs/tools/text/rgxg/default.nix b/pkgs/tools/text/rgxg/default.nix
index 8e4d991e7bf0..f2f4870d8adf 100644
--- a/pkgs/tools/text/rgxg/default.nix
+++ b/pkgs/tools/text/rgxg/default.nix
@@ -11,6 +11,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A C library and a command-line tool to generate (extended) regular expressions";
+    mainProgram = "rgxg";
     license = licenses.zlib;
     maintainers = with maintainers; [ hloeffler ];
     homepage = "https://rgxg.github.io/";
diff --git a/pkgs/tools/text/riffdiff/default.nix b/pkgs/tools/text/riffdiff/default.nix
index a15644d59111..1db7967d0f57 100644
--- a/pkgs/tools/text/riffdiff/default.nix
+++ b/pkgs/tools/text/riffdiff/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "riffdiff";
-  version = "3.0.1";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "walles";
     repo = "riff";
     rev = version;
-    hash = "sha256-MHsbwtoiaMBWZi/UHbuhG3VuSSvuQtvxPB9EMMti80A=";
+    hash = "sha256-ASIB7+ZyvMsaRdvJcWT/sR0JLyt4v/gytAIi8Yajlzg=";
   };
 
-  cargoHash = "sha256-pEXGUIrWZGJoYdNoufXEJ+eeIEhm5JhIUlHRisD4qWc=";
+  cargoHash = "sha256-NGTWBlg5xvodK02RtFuCe7KsFm4z2aEpbcx3UqH9G/o=";
 
   meta = with lib; {
     description = "A diff filter highlighting which line parts have changed";
diff --git a/pkgs/tools/text/rnr/default.nix b/pkgs/tools/text/rnr/default.nix
index 834ecfddee77..b2d38832a4d5 100644
--- a/pkgs/tools/text/rnr/default.nix
+++ b/pkgs/tools/text/rnr/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line tool to batch rename files and directories";
+    mainProgram = "rnr";
     homepage = "https://github.com/ismaelgv/rnr";
     changelog = "https://github.com/ismaelgv/rnr/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/text/rosie/default.nix b/pkgs/tools/text/rosie/default.nix
index 190fd4944d15..e9923586b2da 100644
--- a/pkgs/tools/text/rosie/default.nix
+++ b/pkgs/tools/text/rosie/default.nix
@@ -55,6 +55,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://rosie-lang.org";
     description = "Tools for searching using parsing expression grammars";
+    mainProgram = "rosie";
     license = licenses.mit;
     maintainers = with maintainers; [ kovirobi ];
     platforms = with platforms; linux ++ darwin;
diff --git a/pkgs/tools/text/rpl/default.nix b/pkgs/tools/text/rpl/default.nix
index 2097b94b6e3e..1b4e89408dc8 100644
--- a/pkgs/tools/text/rpl/default.nix
+++ b/pkgs/tools/text/rpl/default.nix
@@ -29,6 +29,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Replace strings in files";
+    mainProgram = "rpl";
     homepage = "https://github.com/rrthomas/rpl";
     license = licenses.gpl2;
     maintainers = with maintainers; [ cbley ];
diff --git a/pkgs/tools/text/runiq/default.nix b/pkgs/tools/text/runiq/default.nix
index 42b9e2aef395..52386bb0f24a 100644
--- a/pkgs/tools/text/runiq/default.nix
+++ b/pkgs/tools/text/runiq/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An efficient way to filter duplicate lines from input, à la uniq";
+    mainProgram = "runiq";
     homepage = "https://github.com/whitfin/runiq";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/ruplacer/default.nix b/pkgs/tools/text/ruplacer/default.nix
index 43253041b279..bb1d7dfc9904 100644
--- a/pkgs/tools/text/ruplacer/default.nix
+++ b/pkgs/tools/text/ruplacer/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Find and replace text in source files";
+    mainProgram = "ruplacer";
     homepage = "https://github.com/TankerHQ/ruplacer";
     license = [ licenses.bsd3 ];
     maintainers = with maintainers; [ Br1ght0ne ];
diff --git a/pkgs/tools/text/sad/default.nix b/pkgs/tools/text/sad/default.nix
index da4ff0804b11..9c04667abc54 100644
--- a/pkgs/tools/text/sad/default.nix
+++ b/pkgs/tools/text/sad/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sad";
-  version = "0.4.23";
+  version = "0.4.25";
 
   src = fetchFromGitHub {
     owner = "ms-jpq";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-LNMc+3pXx7VyNq0dws+s13ZA3+f8aJzgbAxzI71NKx0=";
+    repo = "sad";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-G+Mkyw7TNx5+fhnaOe3Fsb1JuafqckcZ83BTnuWUZBU=";
   };
 
-  cargoHash = "sha256-UjXJmH4UI5Vey2rBy57CI1r13bpGYhIozEoOoyoRDLQ=";
+  cargoHash = "sha256-PTldq13csCmQ3u+M+BTftmxpRh32Bw9ds6yx+pE7HRc=";
 
   nativeBuildInputs = [ python3 ];
 
@@ -28,7 +28,9 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "CLI tool to search and replace";
     homepage = "https://github.com/ms-jpq/sad";
+    changelog = "https://github.com/ms-jpq/sad/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "sad";
   };
 }
diff --git a/pkgs/tools/text/scraper/default.nix b/pkgs/tools/text/scraper/default.nix
index c148f1e57f3f..42b8c91effe0 100644
--- a/pkgs/tools/text/scraper/default.nix
+++ b/pkgs/tools/text/scraper/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to query HTML files with CSS selectors";
+    mainProgram = "scraper";
     homepage = "https://github.com/causal-agent/scraper";
     changelog = "https://github.com/causal-agent/scraper/releases/tag/v${version}";
     license = licenses.isc;
diff --git a/pkgs/tools/text/sd/default.nix b/pkgs/tools/text/sd/default.nix
index 8dc160cd014d..e5bde420000d 100644
--- a/pkgs/tools/text/sd/default.nix
+++ b/pkgs/tools/text/sd/default.nix
@@ -32,6 +32,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Intuitive find & replace CLI (sed alternative)";
+    mainProgram = "sd";
     homepage = "https://github.com/chmln/sd";
     license = licenses.mit;
     maintainers = with maintainers; [ amar1729 Br1ght0ne ];
diff --git a/pkgs/tools/text/sgml/openjade/default.nix b/pkgs/tools/text/sgml/openjade/default.nix
index 5e175518b692..87bc8e7a8aed 100644
--- a/pkgs/tools/text/sgml/openjade/default.nix
+++ b/pkgs/tools/text/sgml/openjade/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "An implementation of DSSSL, an ISO standard for formatting SGML (and XML) documents";
+    mainProgram = "openjade";
     license = lib.licenses.mit;
     homepage = "https://openjade.sourceforge.net/";
     platforms = lib.platforms.linux;
diff --git a/pkgs/tools/text/sgrep/default.nix b/pkgs/tools/text/sgrep/default.nix
index f3d23d166696..3e82ce9afc60 100644
--- a/pkgs/tools/text/sgrep/default.nix
+++ b/pkgs/tools/text/sgrep/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.cs.helsinki.fi/u/jjaakkol/sgrep.html";
     description = "A grep for structured text formats such as XML";
+    mainProgram = "sgrep";
     longDescription = ''
       sgrep (structured grep) is a tool for searching and indexing text,
       SGML, XML and HTML files and filtering text streams using
diff --git a/pkgs/tools/text/shab/default.nix b/pkgs/tools/text/shab/default.nix
index b5bb98e5f4d2..733ba4f80cf5 100644
--- a/pkgs/tools/text/shab/default.nix
+++ b/pkgs/tools/text/shab/default.nix
@@ -41,6 +41,7 @@ let
 
     meta = with lib; {
       description = "The bash templating language";
+      mainProgram = "shab";
       homepage = "https://github.com/zimbatm/shab";
       license = licenses.unlicense;
       maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/tools/text/shocco/default.nix b/pkgs/tools/text/shocco/default.nix
index 1359db98978c..75f218f213e6 100644
--- a/pkgs/tools/text/shocco/default.nix
+++ b/pkgs/tools/text/shocco/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A quick-and-dirty, literate-programming-style documentation generator for / in POSIX shell";
+    mainProgram = "shocco";
     homepage = "https://rtomayko.github.io/shocco/";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/tools/text/sift/default.nix b/pkgs/tools/text/sift/default.nix
index 25dd61a3e4a0..1aecb3ac8909 100644
--- a/pkgs/tools/text/sift/default.nix
+++ b/pkgs/tools/text/sift/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A fast and powerful alternative to grep";
+    mainProgram = "sift";
     homepage = "https://sift-tool.org";
     maintainers = with maintainers; [ viraptor ];
     license = licenses.gpl3;
diff --git a/pkgs/tools/text/smu/default.nix b/pkgs/tools/text/smu/default.nix
index 85e593982e85..63c9bb8d024f 100644
--- a/pkgs/tools/text/smu/default.nix
+++ b/pkgs/tools/text/smu/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "simple markup - markdown like syntax";
+    mainProgram = "smu";
     homepage = "https://github.com/Gottox/smu";
     license = licenses.mit;
     maintainers = with maintainers; [ oxzi ];
diff --git a/pkgs/tools/text/sorted-grep/default.nix b/pkgs/tools/text/sorted-grep/default.nix
index 60bc0bee676f..f0225d8a2444 100644
--- a/pkgs/tools/text/sorted-grep/default.nix
+++ b/pkgs/tools/text/sorted-grep/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://sgrep.sourceforge.net/";
     description = "Sgrep (sorted grep) searches sorted input files for lines that match a search key";
+    mainProgram = "sgrep";
     longDescription = ''
       Sgrep (sorted grep) searches sorted input files for lines that match a search
       key and outputs the matching lines. When searching large files sgrep is much
diff --git a/pkgs/tools/text/subedit/default.nix b/pkgs/tools/text/subedit/default.nix
index 0ae48901cd96..fede6583e788 100644
--- a/pkgs/tools/text/subedit/default.nix
+++ b/pkgs/tools/text/subedit/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/helixarch/subedit";
     description = "Command-line subtitle editor written in BASH";
+    mainProgram = "subedit";
     license = licenses.gpl2;
     maintainers = with maintainers; [ ppom ];
   };
diff --git a/pkgs/tools/text/tab/default.nix b/pkgs/tools/text/tab/default.nix
index 3f8ef799a6bf..431b046471a4 100644
--- a/pkgs/tools/text/tab/default.nix
+++ b/pkgs/tools/text/tab/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Programming language/shell calculator";
+    mainProgram = "tab";
     homepage    = "https://tab-lang.xyz";
     license     = licenses.boost;
     maintainers = with maintainers; [ mstarzyk ];
diff --git a/pkgs/tools/text/teip/default.nix b/pkgs/tools/text/teip/default.nix
index c0ac20a28149..caa665fc3c93 100644
--- a/pkgs/tools/text/teip/default.nix
+++ b/pkgs/tools/text/teip/default.nix
@@ -43,6 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to bypass a partial range of standard input to any command";
+    mainProgram = "teip";
     homepage = "https://github.com/greymd/teip";
     changelog = "https://github.com/greymd/teip/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/text/termbook/default.nix b/pkgs/tools/text/termbook/default.nix
index ee9367038f63..a68f0ce416f4 100644
--- a/pkgs/tools/text/termbook/default.nix
+++ b/pkgs/tools/text/termbook/default.nix
@@ -52,6 +52,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A runner for `mdbooks` to keep your documentation tested";
+    mainProgram = "termbook";
     homepage = "https://github.com/Byron/termbook/";
     changelog = "https://github.com/Byron/termbook/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/tools/text/tidy-viewer/default.nix b/pkgs/tools/text/tidy-viewer/default.nix
index 6c38007b3f26..cbeb97214893 100644
--- a/pkgs/tools/text/tidy-viewer/default.nix
+++ b/pkgs/tools/text/tidy-viewer/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cross-platform CLI csv pretty printer that uses column styling to maximize viewer enjoyment";
+    mainProgram = "tidy-viewer";
     homepage = "https://github.com/alexhallam/tv";
     changelog = "https://github.com/alexhallam/tv/blob/${version}/CHANGELOG.md";
     license = licenses.unlicense;
diff --git a/pkgs/tools/text/tml/default.nix b/pkgs/tools/text/tml/default.nix
index 3f1a6477851c..5a083bfc4d60 100644
--- a/pkgs/tools/text/tml/default.nix
+++ b/pkgs/tools/text/tml/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tiny markup language for terminal output";
+    mainProgram = "tml";
     homepage = "https://github.com/liamg/tml";
     changelog = "https://github.com/liamg/tml/releases/tag/v${version}";
     license = licenses.unlicense;
diff --git a/pkgs/tools/text/to-html/default.nix b/pkgs/tools/text/to-html/default.nix
index 9e176a5ad19c..5ddba61276d4 100644
--- a/pkgs/tools/text/to-html/default.nix
+++ b/pkgs/tools/text/to-html/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "Terminal wrapper for rendering a terminal on a website by converting ANSI escape sequences to HTML";
+    mainProgram = "to-html";
     homepage = "https://github.com/Aloso/to-html";
     changelog = "https://github.com/Aloso/to-html/blob/${src.rev}/CHANGELOG.md";
     license = lib.licenses.mit;
diff --git a/pkgs/tools/text/tuc/default.nix b/pkgs/tools/text/tuc/default.nix
index b7b5afbdf3a3..46e9bb86e57c 100644
--- a/pkgs/tools/text/tuc/default.nix
+++ b/pkgs/tools/text/tuc/default.nix
@@ -14,6 +14,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "When cut doesn't cut it";
+    mainProgram = "tuc";
     homepage = "https://github.com/riquito/tuc";
     license = licenses.gpl3;
     maintainers = with maintainers; [ dit7ya ];
diff --git a/pkgs/tools/text/tv/default.nix b/pkgs/tools/text/tv/default.nix
index 686433ff4290..9cf6e2e243e8 100644
--- a/pkgs/tools/text/tv/default.nix
+++ b/pkgs/tools/text/tv/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Format json into table view";
+    mainProgram = "tv";
     homepage = "https://github.com/uzimaru0000/tv";
     changelog = "https://github.com/uzimaru0000/tv/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/text/txt2tags/default.nix b/pkgs/tools/text/txt2tags/default.nix
index 8ff39ac1ebfe..1e48d4c6f3d6 100644
--- a/pkgs/tools/text/txt2tags/default.nix
+++ b/pkgs/tools/text/txt2tags/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = {
     changelog = "https://github.com/txt2tags/txt2tags/blob/${src.rev}/CHANGELOG.md";
     description = "Convert between markup languages";
+    mainProgram = "txt2tags";
     homepage = "https://txt2tags.org/";
     license  = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ dotlambda kovirobi ];
diff --git a/pkgs/tools/text/unfurl/default.nix b/pkgs/tools/text/unfurl/default.nix
index 35a43ea2fdbd..0d9ae3b01992 100644
--- a/pkgs/tools/text/unfurl/default.nix
+++ b/pkgs/tools/text/unfurl/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Pull out bits of URLs provided on stdin";
+    mainProgram = "unfurl";
     homepage = "https://github.com/tomnomnom/unfurl";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/text/uniscribe/default.nix b/pkgs/tools/text/uniscribe/default.nix
index e7b9cedd2b8c..98b164a9d58d 100644
--- a/pkgs/tools/text/uniscribe/default.nix
+++ b/pkgs/tools/text/uniscribe/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Explains Unicode characters/code points: Displays their name, category, and shows compositions";
+    mainProgram = "uniscribe";
     homepage = "https://github.com/janlelis/uniscribe";
     license = licenses.mit;
     maintainers = with maintainers; [ kjeremy ];
diff --git a/pkgs/tools/text/unrtf/default.nix b/pkgs/tools/text/unrtf/default.nix
index 3357404a7d3c..4395c0f6e941 100644
--- a/pkgs/tools/text/unrtf/default.nix
+++ b/pkgs/tools/text/unrtf/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A converter from Rich Text Format to other formats";
+    mainProgram = "unrtf";
     longDescription = ''
       UnRTF converts documents in Rich Text Format to other
       formats, including HTML, LaTeX, and RTF itself.
diff --git a/pkgs/tools/text/untex/default.nix b/pkgs/tools/text/untex/default.nix
index 63108a923782..c6f833049650 100644
--- a/pkgs/tools/text/untex/default.nix
+++ b/pkgs/tools/text/untex/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A utility which removes LaTeX commands from input";
+    mainProgram = "untex";
     homepage = "https://www.ctan.org/pkg/untex";
     license = licenses.gpl1Only;
     maintainers = with maintainers; [ joachifm ];
diff --git a/pkgs/tools/text/uwc/default.nix b/pkgs/tools/text/uwc/default.nix
index dc34ecfacff2..42777accb826 100644
--- a/pkgs/tools/text/uwc/default.nix
+++ b/pkgs/tools/text/uwc/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Like wc, but unicode-aware, and with per-line mode";
+    mainProgram = "uwc";
     homepage = "https://gitlab.com/dead10ck/uwc";
     license = licenses.mit;
     maintainers = with maintainers; [ ShamrockLee ];
diff --git a/pkgs/tools/text/vale/default.nix b/pkgs/tools/text/vale/default.nix
index cbc2893b1304..861b3e6b899e 100644
--- a/pkgs/tools/text/vale/default.nix
+++ b/pkgs/tools/text/vale/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "vale";
-  version = "3.3.0";
+  version = "3.3.1";
 
   subPackages = [ "cmd/vale" ];
   outputs = [ "out" "data" ];
@@ -11,7 +11,7 @@ buildGoModule rec {
     owner = "errata-ai";
     repo = "vale";
     rev = "v${version}";
-    hash = "sha256-Mh0JKbQrsP45Bn9EdTJCuSPC13vCsnuOtoi68Z6fttc=";
+    hash = "sha256-6hj8fm2eCGQeWY3+eaJlKeZglJUSMY4/Yz2ySGp6m58=";
   };
 
   vendorHash = "sha256-HMzFLSmO6sBDNU89UoIvHcPPd3ubpti2ii4sFMKUDmI=";
diff --git a/pkgs/tools/text/vgrep/default.nix b/pkgs/tools/text/vgrep/default.nix
index 9022c5f5c03b..942188730387 100644
--- a/pkgs/tools/text/vgrep/default.nix
+++ b/pkgs/tools/text/vgrep/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "User-friendly pager for grep/git-grep/ripgrep";
+    mainProgram = "vgrep";
     homepage = "https://github.com/vrothberg/vgrep";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ SuperSandro2000 ];
diff --git a/pkgs/tools/text/wdiff/default.nix b/pkgs/tools/text/wdiff/default.nix
index d6ed960cce1e..d358dcdd0c4e 100644
--- a/pkgs/tools/text/wdiff/default.nix
+++ b/pkgs/tools/text/wdiff/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.gnu.org/software/wdiff/";
     description = "Comparing files on a word by word basis";
+    mainProgram = "wdiff";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ eelco SuperSandro2000 ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/wgetpaste/default.nix b/pkgs/tools/text/wgetpaste/default.nix
index 465e19883b30..8ca014e0d5f5 100644
--- a/pkgs/tools/text/wgetpaste/default.nix
+++ b/pkgs/tools/text/wgetpaste/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Command-line interface to various pastebins";
+    mainProgram = "wgetpaste";
     homepage = "https://github.com/zlin/wgetpaste";
     license = lib.licenses.publicDomain;
     maintainers = with lib.maintainers; [ qknight domenkozar ];
diff --git a/pkgs/tools/text/xidel/default.nix b/pkgs/tools/text/xidel/default.nix
index 479cc0ff1115..d7fefa2d495d 100644
--- a/pkgs/tools/text/xidel/default.nix
+++ b/pkgs/tools/text/xidel/default.nix
@@ -87,6 +87,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command line tool to download and extract data from HTML/XML pages as well as JSON APIs";
+    mainProgram = "xidel";
     homepage = "https://www.videlibri.de/xidel.html";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/tools/text/xml/xmlformat/default.nix b/pkgs/tools/text/xml/xmlformat/default.nix
index 380baa906c27..ea0e90502dc2 100644
--- a/pkgs/tools/text/xml/xmlformat/default.nix
+++ b/pkgs/tools/text/xml/xmlformat/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "a configurable formatter (or 'pretty-printer') for XML documents";
+    mainProgram = "xmlformat";
     homepage = "http://www.kitebird.com/software/xmlformat/";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.all;
diff --git a/pkgs/tools/text/xml/xmloscopy/default.nix b/pkgs/tools/text/xml/xmloscopy/default.nix
index c915e2c7fc5b..32162849c41d 100644
--- a/pkgs/tools/text/xml/xmloscopy/default.nix
+++ b/pkgs/tools/text/xml/xmloscopy/default.nix
@@ -45,6 +45,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "wtf is my docbook broken?";
+    mainProgram = "xmloscopy";
     homepage = "https://github.com/grahamc/xmloscopy";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/tools/text/xml/xq/default.nix b/pkgs/tools/text/xml/xq/default.nix
index 6fae10b25357..7b55d5d28d35 100644
--- a/pkgs/tools/text/xml/xq/default.nix
+++ b/pkgs/tools/text/xml/xq/default.nix
@@ -33,6 +33,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command-line XML and HTML beautifier and content extractor";
+    mainProgram = "xq";
     homepage = "https://github.com/sibprogrammer/xq";
     changelog = "https://github.com/sibprogrammer/xq/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/tools/text/xpaste/default.nix b/pkgs/tools/text/xpaste/default.nix
index 88666fd25adc..7bbe658b6b5a 100644
--- a/pkgs/tools/text/xpaste/default.nix
+++ b/pkgs/tools/text/xpaste/default.nix
@@ -24,6 +24,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Paste text into X windows that don't work with selections";
+    mainProgram = "xpaste";
     homepage = "https://github.com/ossobv/xpaste";
     license = licenses.gpl3;
     maintainers = with maintainers; [ gador ];
diff --git a/pkgs/tools/text/xsv/default.nix b/pkgs/tools/text/xsv/default.nix
index 303b38d65c2d..3e617a621e33 100644
--- a/pkgs/tools/text/xsv/default.nix
+++ b/pkgs/tools/text/xsv/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A fast CSV toolkit written in Rust";
+    mainProgram = "xsv";
     homepage = "https://github.com/BurntSushi/xsv";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = [ maintainers.jgertm ];
diff --git a/pkgs/tools/text/yaml-merge/default.nix b/pkgs/tools/text/yaml-merge/default.nix
index 85ea3cd360da..a5113a92f702 100644
--- a/pkgs/tools/text/yaml-merge/default.nix
+++ b/pkgs/tools/text/yaml-merge/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Merge YAML data files";
+    mainProgram = "yaml-merge";
     homepage = "https://github.com/abbradar/yaml-merge";
     license = licenses.bsd2;
     platforms = platforms.unix;
diff --git a/pkgs/tools/text/zet/default.nix b/pkgs/tools/text/zet/default.nix
index 50d149f4e655..af04b5fdc203 100644
--- a/pkgs/tools/text/zet/default.nix
+++ b/pkgs/tools/text/zet/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "CLI utility to find the union, intersection, set difference, etc of files considered as sets of lines";
+    mainProgram = "zet";
     homepage = "https://github.com/yarrow/zet";
     changelog = "https://github.com/yarrow/zet/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/tools/typesetting/bibtex-tidy/default.nix b/pkgs/tools/typesetting/bibtex-tidy/default.nix
index 7aeaf13fb02a..6fa64d653736 100644
--- a/pkgs/tools/typesetting/bibtex-tidy/default.nix
+++ b/pkgs/tools/typesetting/bibtex-tidy/default.nix
@@ -28,6 +28,7 @@ buildNpmPackage rec {
   meta = {
     changelog = "https://github.com/FlamingTempura/bibtex-tidy/blob/${src.rev}/CHANGELOG.md";
     description = "Cleaner and Formatter for BibTeX files";
+    mainProgram = "bibtex-tidy";
     homepage = "https://github.com/FlamingTempura/bibtex-tidy";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ bertof ];
diff --git a/pkgs/tools/typesetting/fop/default.nix b/pkgs/tools/typesetting/fop/default.nix
index e31ea73f0096..94a24211f9a3 100644
--- a/pkgs/tools/typesetting/fop/default.nix
+++ b/pkgs/tools/typesetting/fop/default.nix
@@ -5,6 +5,7 @@
 , jdk
 , jre
 , makeWrapper
+, stripJavaArchivesHook
 }:
 
 stdenv.mkDerivation (finalAttrs: {
@@ -16,16 +17,11 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-b7Av17wu6Ar/npKOiwYqzlvBFSIuXTpqTacM1sxtBvc=";
   };
 
-  postPatch = ''
-    # Fix jar timestamps for reproducibility
-    substituteInPlace fop/build.xml \
-        --replace-fail '<jar ' '<jar modificationtime="0" '
-  '';
-
   nativeBuildInputs = [
     ant
     jdk
     makeWrapper
+    stripJavaArchivesHook
   ];
 
   # Note: not sure if this is needed anymore
diff --git a/pkgs/tools/typesetting/soupault/default.nix b/pkgs/tools/typesetting/soupault/default.nix
deleted file mode 100644
index 82ea1e6f5979..000000000000
--- a/pkgs/tools/typesetting/soupault/default.nix
+++ /dev/null
@@ -1,61 +0,0 @@
-{ lib
-, fetchFromGitea
-, ocamlPackages
-, soupault
-, testers
-}:
-
-let
-  pname = "soupault";
-
-  version = "4.8.0";
-in
-ocamlPackages.buildDunePackage {
-  inherit pname version;
-
-  minimalOCamlVersion = "4.13";
-
-  src = fetchFromGitea {
-    domain = "codeberg.org";
-    owner = "PataphysicalSociety";
-    repo = pname;
-    rev = version;
-    hash = "sha256-/QpT0zgrfMgRKjHyLHugaAlICpPkqaQ7f8fFAL0P02Y=";
-  };
-
-  buildInputs = with ocamlPackages; [
-    base64
-    camomile
-    containers
-    csv
-    digestif
-    ezjsonm
-    fileutils
-    fmt
-    jingoo
-    lambdasoup
-    lua-ml
-    logs
-    markup
-    odate
-    otoml
-    re
-    spelll
-    tsort
-    yaml
-  ];
-
-  passthru.tests.version = testers.testVersion {
-    package = soupault;
-    command = "soupault --version-number";
-  };
-
-  meta = {
-    description = "A tool that helps you create and manage static websites";
-    homepage = "https://soupault.app/";
-    changelog = "https://codeberg.org/PataphysicalSociety/soupault/src/branch/main/CHANGELOG.md";
-    license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ toastal ];
-    mainProgram = "soupault";
-  };
-}
diff --git a/pkgs/tools/typesetting/tectonic/default.nix b/pkgs/tools/typesetting/tectonic/default.nix
index 1e2c58d60356..3320e91e51b9 100644
--- a/pkgs/tools/typesetting/tectonic/default.nix
+++ b/pkgs/tools/typesetting/tectonic/default.nix
@@ -38,9 +38,6 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [ icu fontconfig harfbuzz openssl ]
     ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ ApplicationServices Cocoa Foundation ]);
 
-  # workaround for https://github.com/NixOS/nixpkgs/issues/166205
-  NIX_LDFLAGS = lib.optionalString (stdenv.cc.isClang && stdenv.cc.libcxx != null) " -l${stdenv.cc.libcxx.cxxabi.libName}";
-
   postInstall = ''
     # Makes it possible to automatically use the V2 CLI API
     ln -s $out/bin/tectonic $out/bin/nextonic
diff --git a/pkgs/tools/typesetting/tex/dblatex/default.nix b/pkgs/tools/typesetting/tex/dblatex/default.nix
index 1f3fd13d2863..d615cefd77c3 100644
--- a/pkgs/tools/typesetting/tex/dblatex/default.nix
+++ b/pkgs/tools/typesetting/tex/dblatex/default.nix
@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A program to convert DocBook to DVI, PostScript or PDF via LaTeX or ConTeXt";
+    mainProgram = "dblatex";
     homepage = "https://dblatex.sourceforge.net/";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.unix;
diff --git a/pkgs/tools/typesetting/tex/gladtex/default.nix b/pkgs/tools/typesetting/tex/gladtex/default.nix
index 2d2cd37442f7..bf64f400d2b8 100644
--- a/pkgs/tools/typesetting/tex/gladtex/default.nix
+++ b/pkgs/tools/typesetting/tex/gladtex/default.nix
@@ -16,6 +16,7 @@ python3Packages.buildPythonPackage rec {
 
   meta = with lib; {
     description = "Embed LaTeX formulas into HTML documents as SVG images";
+    mainProgram = "gladtex";
     homepage = "https://humenda.github.io/GladTeX";
     license = licenses.lgpl3Plus;
     platforms = platforms.all;
diff --git a/pkgs/tools/typesetting/tex/latexrun/default.nix b/pkgs/tools/typesetting/tex/latexrun/default.nix
index 3a163a5682d6..ea2c630e7960 100644
--- a/pkgs/tools/typesetting/tex/latexrun/default.nix
+++ b/pkgs/tools/typesetting/tex/latexrun/default.nix
@@ -21,6 +21,7 @@ stdenvNoCC.mkDerivation {
 
   meta = with lib; {
     description = "A 21st century LaTeX wrapper";
+    mainProgram = "latexrun";
     homepage = "https://github.com/aclements/latexrun";
     license = licenses.mit;
     maintainers = [ maintainers.lucus16 ];
diff --git a/pkgs/tools/typesetting/tex/pplatex/default.nix b/pkgs/tools/typesetting/tex/pplatex/default.nix
index 89d08b43e845..367daa9450fc 100644
--- a/pkgs/tools/typesetting/tex/pplatex/default.nix
+++ b/pkgs/tools/typesetting/tex/pplatex/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     description =
       "A tool to reformat the output of latex and friends into readable messages";
+    mainProgram = "pplatex";
     homepage = "https://github.com/stefanhepp/pplatex";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.srgom maintainers.doronbehar ];
diff --git a/pkgs/tools/typesetting/tex/tex-match/default.nix b/pkgs/tools/typesetting/tex/tex-match/default.nix
index 65bfcd02d78c..c7d961d21fc1 100644
--- a/pkgs/tools/typesetting/tex/tex-match/default.nix
+++ b/pkgs/tools/typesetting/tex/tex-match/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Search through over 1000 different LaTeX symbols by sketching. A desktop version of detexify";
+    mainProgram = "tex-match";
     homepage = "https://tex-match.zoey.fyi/";
     license = licenses.mit;
     maintainers = [ maintainers.bootstrap-prime ];
diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix
index 7aa75106a611..9641fa728a98 100644
--- a/pkgs/tools/typesetting/tex/texlive/bin.nix
+++ b/pkgs/tools/typesetting/tex/texlive/bin.nix
@@ -212,14 +212,18 @@ core-big = stdenv.mkDerivation {
       url = "https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=1009196;filename=lua_fixed_hash.patch;msg=45";
       sha256 = "sha256-FTu1eRd3AUU7IRs2/7e7uwHuvZsrzTBPypbcEZkU7y4=";
     })
-    # fixes a security-issue in luatex that allows arbitrary code execution even with shell-escape disabled, see https://tug.org/~mseven/luatex.html
-    # fixed in LuaTeX 1.17.0, remove patch when upgrading to TL 2024
+    # update to LuaTeX 1.16.1 to prepare for 1.17.0 below
     (fetchpatch {
-      name = "CVE-2023-32700.patch";
-      url = "https://tug.org/~mseven/luatex-files/2023/patch";
-      hash = "sha256-AvMedFkZJAFsCJ51eQqBQM4MpzLzn+GeBrzuTzISVkk=";
-      excludes = [  "build.sh" ];
-      stripLen = 1;
+      name = "luatex-1.16.1.patch";
+      url = "https://github.com/TeX-Live/texlive-source/commit/ad8702a45e317fa9d396ef4d50467c37964a9543.patch";
+      hash = "sha256-qfzUfkJUfW285w+fnbpO8JLArM7/uj3yb9PONgZrJLE=";
+    })
+    # fixes security issues in luatex that allows arbitrary code execution even with shell-escape disabled and network requests, see https://tug.org/~mseven/luatex.html
+    # fixed in LuaTeX 1.17.0, shipped as a rare binary update in TL 2023
+    (fetchpatch {
+      name = "luatex-1.17.0.patch";
+      url = "https://github.com/TeX-Live/texlive-source/commit/6ace460233115bd42b36e63c7ddce11cc92a1ebd.patch";
+      hash = "sha256-2fbIdwnw/XQXci9OqRrb6B5tHiSR0co08NyFgMyXCvc=";
     })
     # Fixes texluajitc crashes on aarch64, backport of the upstream fix
     # https://github.com/LuaJIT/LuaJIT/commit/e9af1abec542e6f9851ff2368e7f196b6382a44c
@@ -324,11 +328,11 @@ context = stdenv.mkDerivation rec {
 
 dvisvgm = stdenv.mkDerivation rec {
   pname = "dvisvgm";
-  version = "3.1.2";
+  version = "3.2.2";
 
   src = assert lib.assertMsg (version == texlive.pkgs.dvisvgm.version) "dvisvgm: TeX Live version (${texlive.pkgs.dvisvgm.version}) different from source (${version}), please update dvisvgm"; fetchurl {
     url = "https://github.com/mgieseki/dvisvgm/releases/download/${version}/dvisvgm-${version}.tar.gz";
-    hash = "sha256-vqeDrf6TG3eUoMMNeQK4Kw1NmtaBbc2KCVqTHNM+rPY=";
+    hash = "sha256-8GKL6lqjMUXXWwpqbdGPrYibdSc4y8AcGUGPNUc6HQA=";
   };
 
   configureFlags = [
@@ -449,7 +453,7 @@ xdvi = stdenv.mkDerivation {
 
   postInstall = ''
     substituteInPlace "$out/bin/xdvi" \
-      --replace "exec xdvi-xaw" "exec '$out/bin/xdvi-xaw'"
+      --replace-fail "exec xdvi-xaw" "exec '$out/bin/xdvi-xaw'"
   '';
   # TODO: it's suspicious that mktexpk generates fonts into ~/.texlive2014
 };
@@ -485,8 +489,8 @@ xindy = stdenv.mkDerivation {
   # hardcode clisp location
   postPatch = ''
     substituteInPlace xindy-*/user-commands/xindy.in \
-      --replace "our \$clisp = ( \$is_windows ? 'clisp.exe' : 'clisp' ) ;" \
-                "our \$clisp = '$(type -P clisp)';"
+      --replace-fail "our \$clisp = ( \$is_windows ? 'clisp.exe' : 'clisp' ) ;" \
+                     "our \$clisp = '$(type -P clisp)';"
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix b/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix
index 85be581a3066..73e69578dc9f 100644
--- a/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix
+++ b/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix
@@ -172,7 +172,6 @@ let
 
   # emulate split output derivation
   splitOutputs = {
-    out = out // { outputSpecified = true; };
     texmfdist = texmfdist // { outputSpecified = true; };
     texmfroot = texmfroot // { outputSpecified = true; };
   } // (lib.genAttrs pkgList.nonEnvOutputs (outName: (buildEnv {
@@ -186,9 +185,9 @@ let
     inherit meta passthru;
   }).overrideAttrs { outputs = [ outName ]; } // { outputSpecified = true; }));
 
-  passthru = lib.optionalAttrs (! __combine) (splitOutputs // {
-    all = builtins.attrValues splitOutputs;
-  }) // {
+  passthru = {
+    # these are not part of pkgList.nonEnvOutputs and must be exported in passthru
+    inherit (splitOutputs) texmfdist texmfroot;
     # This is set primarily to help find-tarballs.nix to do its job
     requiredTeXPackages = builtins.filter lib.isDerivation (pkgList.bin ++ pkgList.nonbin
       ++ lib.optionals (! __fromCombineWrapper)
@@ -378,7 +377,7 @@ let
     if [[ -e "$out/bin/mtxrun" ]]; then
       mv "$out"/bin/mtxrun.lua{,.orig}
       substitute "$TEXMFDIST"/scripts/context/lua/mtxrun.lua "$out"/bin/mtxrun.lua \
-        --replace 'randomseed(math.initialseed)' "randomseed($SOURCE_DATE_EPOCH)"
+        --replace-fail 'randomseed(math.initialseed)' "randomseed($SOURCE_DATE_EPOCH)"
     fi
   '' +
   # texlive postactions (see TeXLive::TLUtils::_do_postaction_script)
@@ -409,7 +408,7 @@ let
     # note that calling faketime and fmtutil is fragile (faketime uses LD_PRELOAD, fmtutil calls /bin/sh, causing potential glibc issues on non-NixOS)
     # so we patch fmtutil to use faketime, rather than calling faketime fmtutil
     substitute "$TEXMFDIST"/scripts/texlive/fmtutil.pl fmtutil \
-      --replace 'my $cmdline = "$eng -ini ' 'my $cmdline = "faketime -f '"'"'\@1980-01-01 00:00:00 x0.001'"'"' $eng -ini '
+      --replace-fail 'my $cmdline = "$eng -ini ' 'my $cmdline = "faketime -f '"'"'\@1980-01-01 00:00:00 x0.001'"'"' $eng -ini '
     FORCE_SOURCE_DATE=1 TZ= perl fmtutil --sys --all | grep '^fmtutil' # too verbose
 
     # Disable unavailable map files
diff --git a/pkgs/tools/typesetting/tex/texlive/default.nix b/pkgs/tools/typesetting/tex/texlive/default.nix
index 5611760ce66c..cab889f5f8b3 100644
--- a/pkgs/tools/typesetting/tex/texlive/default.nix
+++ b/pkgs/tools/typesetting/tex/texlive/default.nix
@@ -44,12 +44,12 @@ let
   version = {
     # day of the snapshot being taken
     year = "2024";
-    month = "01";
-    day = "14";
+    month = "03";
+    day = "16";
     # TeX Live version
     texliveYear = 2023;
     # final (historic) release or snapshot
-    final = false;
+    final = true;
   };
 
   # The tarballs on CTAN mirrors for the current release are constantly
@@ -79,7 +79,7 @@ let
       # use last mirror for daily snapshots as texlive.tlpdb.xz changes every day
       # TODO make this less hacky
       (if version.final then mirrors else [ (lib.last mirrors) ]);
-    hash = "sha256-eUG0KVfFPkjOczCsu2GAPRQcvcPrEIGqIsJNRc+AHDs=";
+    hash = "sha256-w+04GBFDk/P/XvW7T9PotGD0nQslMkV9codca2urNK4=";
   };
 
   tlpdbNix = runCommand "tlpdb.nix" {
diff --git a/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix b/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix
index b01e8423e265..33f4bf942bfa 100644
--- a/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix
+++ b/pkgs/tools/typesetting/tex/texlive/fixed-hashes.nix
@@ -24,8 +24,8 @@ accents-51497={run="1xl7fkm5gc36mm0bhx7rm9v4g2d9j22gr5fjxjbzmr6byjfgw71k";doc="0
 accessibility-55777={run="0d7xrsdanx7wnnmc983rfy00r4290rigwx5ils6pfm0br2g5kfsr";doc="17gxz1lm39wh2a235wk0s03jc7jxd4bl0iqj04v02m994gz43y3x";source="14av24zcjqxq8v92yni6aj66cblnfzb1f07hbcd3ljbycw14ii44";};
 accfonts-18835={run="10z7c7cgwm62dyzxfnj0jiy328zj3wccqjick37lz641vqifrd4v";doc="17mbr2ydbkc4md6zd34km3d4s2vjmqzfwb2l01n4y30vjz2lzsn1";};
 accsupp-53052={run="156yax2q84naj394xzr8m7hfyl1j7pziw8d6rzkrjjgxs9p9az1j";doc="1ak7xv0hhghgbwmcviirhh1x5y9pb4is8h0a32kdd4hdxjdm7c92";source="0spz8640bdzmirlnc3rwynzvgy5fi58vfs802jzbqxb0ypdg14s7";};
-achemso-65103={run="1chl9nny4lm75qjhv9pbjbgzsm54vj7dlpfdm0gc5yansb70ghcv";doc="1fhszmzl99l2nvp3m95hf44mgqkg2mvfp2sw2nk12k8a7b2n33a4";source="1kd9dhmjp0n0y0cv7437194yhjdsd0ac6qbvx060sw72mb2dbj6j";};
-acmart-69242={run="1qyzb19sj7s9q05zqb295pl2424ip4w8pspy1hl5d0kja6vcp0kp";doc="0rvi2yz91460ja4r25p2ka79rw3gzji2qplyjrww2sl78k5xa6cy";source="1hcmzbfh7app6w9fvmj29v1qwc7x76w3szjhgx94p9lr9gkja8hk";};
+achemso-69638={run="16si3krcn64nz383y2cpv77fka9xlc5bb568inr3xi0sckwnvd6f";doc="1n7kznrriac60pn7wnlnpm82fxj07gbnrxf7zfv4f8b9vj2x706v";source="1h07bjmbnkk0sr60qd5ml6j78g5hbzvw0pwin2npsd2fxx8q8hfa";};
+acmart-69721={run="1b47751cahm4cphlxa0vnvax69zrxcj1c5i8bmx61s183l7gvw18";doc="0757g2yzqikgfb997m8wd0w9rcqaar872qi7gz3j3sp0dayg6c3w";source="09ly6vm7kjqqqqqk00n843h6pns8bv57za7g95yz0x9s4jqdk774";};
 acmconf-15878={run="17l1kcwv6wk5p752lmanlx0bmh2py4hfxranapgbdrhjpis4jm9i";doc="1vyhkwqg0v3pxjnlwzwnmiffh6b3d9nrwnpaqjm24j9d2sc6cxcx";source="1n8cf6n2fdb88xmnj2m5r3cjz3jlp9n7bn1yr717fsp2ks81pr3f";};
 acro-62925={run="1hzavaicandq6sqz3sy8hj5n3kvkbic34p8id2mslizcw3rmlhhz";doc="05iwf21y45l61fsask04pphxzzjn7h1al8n2wv59jkxyh8vy8dbv";};
 acronym-54758={run="1gq7j83gjzlfbnrnz1cl0lihpdalsn6ww6hqxdfxikm28vynk88g";doc="0zscjwg22s81awq27lhqs14davwbhf5y4zsl9dsq2135rppmmyvv";source="16dds23mj3ha1b64fxz2dnxk7wsrcmhpmpz0zgqda46vaab9qiw9";};
@@ -41,7 +41,7 @@ adfathesis-26048={run="0j60iq9nzk5kbs12dqx5jk84n14kdlx93mcypwi9b2gn7kyqzn5i";doc
 adforn-54512={run="1cb6w50xb9wkl6x384dhldrhpjbk5l73x5gzpbm8za4gmh1pc94v";doc="0a1f1rrii1zvd58h2slk2zj032vjqpi480d38rgi2k2j9wlbbyyg";};
 adfsymbols-54512={run="19rr3zdgqlmnrvd61g9bjiqiyn2gpn82fhj4219gqb1l06nqa0ka";doc="059fjvdmd1jgr1flv5181ac3wvby93hyykfshcmr1j06zs8j9kyx";};
 adhocfilelist-29349={run="08fnrvnbrp7534b56hn8w0nm8pbgjli62v34mkalp4qkfb559kh7";doc="1n7nah8vr691k56z0jkgyav4lc8w45rlg8k9shhqhnnpqi8zxv1m";source="1xl0f33yhmbsrnmy9pby092js83vxcdaq2gfny08pjlq57arphr4";};
-adigraph-49862={run="077iqsmfa1fpgmnppb7bcnskpa9ap4wa53ip67b4d21pa1arzszq";doc="11z48jaj6xcwrzv8y2byjcs88mdvqi2fqk0nqw3cy5pq7b5m7rap";};
+adigraph-70427={run="19wzsa84y7a5jbgbyj69frfqd0ahi9ha7sszppsr5bmh88gbnfby";doc="0rr6sbb34d9nd1ni86s5mll5bjx0hinwm52gqiqrwqwkr068djcn";};
 adjmulticol-63320={run="0wjqjg46gbf44f2x0xf58b3f9bxfkrh21m85mh1xsd5pxdy116fl";doc="01r00mf8skd54xgzqjicl4djjzgnf5fdw5hcbf9p5ixx1zw1jq7l";source="1zyq1r0y3amkqch1lif0dygif0sgwhypscqdsqml6ik2ziv2alzi";};
 adjustbox-64967={run="03fqxxhpc41zkj8g7dwd4p3vs9c0qg95c6bdwwgvn3xkaqn6amjm";doc="11mldsmmp1mcd5kya8bh2zmkgl01ysswcia1lips3vjfiqjp8vp8";source="0qzjxslq3bni6iancxix471sl6455syp1pglnn7xa5lxlfl43ccs";};
 adobemapping-66552={run="1yvf74mlmxmnq9m0wvda9xcna8xnn382bbrzizzjm5w7bk8c4g98";};
@@ -63,7 +63,7 @@ ajl-34016={run="1xkrvy06lw4ngj94zybs14ysal2pg7g71h864gq9bjw0zwq2yjzs";};
 akktex-26055={run="1npcfjjg9nwrb392g8pa4yq6i76aq4ys67zil4qgkf4jyzrixln9";doc="10ma4ic5bazlmizxvwks6w3qqxbbir0rrhzj1yw2j68p0600nmvn";};
 akletter-15878={run="0gigzlxkqmiqz4nwpxj98rcrxmi6yfipf5bifg1mywchnw7a1f2h";doc="0ngj7d4vdnvh99inw2vggqdgx6h2hv5z77glxjcpx8kmxf8h47sv";};
 akshar-56277={run="0g1pbihbpl3b7k7c19qiq7lcgx3zrfn15065dyan85bs8h85c2cw";doc="11a18b7a592sx3wha1lpy659hgh1wnka16zf8m0cbc99f867xfln";source="0g8j0015dm3mhphg06ma9dkgc28ywlihr6pcbi254qaxgk7kdn9g";};
-albatross-65647={run="18bcgycdzzhw47ci9lqyrbrahzax9ajfi5w9vjs35j294b0mk963";doc="1bwg2gq1fdpjlgjflfzfijabx8m6nfraak684ak6qdhvjfzx1aha";source="00w3byrzw0lwzjqsq0r7h81daqs2sg3ywwk3nsdbz0q4j6lkpv82";};
+albatross-69879={run="1qmhrbw7vq1gwd0xg50v384r3bkic4xy32i7sqv1lwrs4fw8aj8x";doc="10wamhwcfh0smmw6q8yf0fh6xms52ckrd45axb56dc4jchdhnpdy";source="11winakpjawrifjxkyfsxa9i1d0k0h4jcchnp61isvl7hy2n2fw5";};
 alchemist-66924={run="14gd0gb86p247bz2x2kcqqj2b0r2lz12gpssfz84kgvrwx5nxkvr";doc="0d8kirmkd1shkbckv32i8yxdrpwzss7qgdn2i06b6mwakisy93v1";};
 alegreya-64384={run="06hrvi0dssva2r253k9ma1vd6ij3bi2d0wsrk2n6fnxvxbl5xc02";doc="04wx39xdvhq0rfl4mz8k70kfv74w6kpyhja5879g0hp3pjfzxbcl";};
 aleph-66203={doc="0b7dihilh2v8qcp4m8fblyc10jc5i4fhpj3pspzinag0pk66b7nb";};
@@ -90,6 +90,7 @@ altfont-15878={run="1nrcjmf59r672gmqks8spqwz3vn4jrwc272zvx7ncylphsjmip70";doc="0
 altsubsup-62738={run="00yva44w281zlba1c1m1jz0c1j5bwynfxf37k4sw5am7asxzizvs";doc="0nzc10vbf16bk8v60d97nw02ryl7bd5b6dv26g6rjwfpfdic08pn";source="0kdsv62j78ypa6z9098d60rilk9p0n72628cwihzyp8kv1g05049";};
 amiri-65191={run="1r5zic8x2iny7g2qam8wv640hmxdjyb8694zck5xv65mg1aq2ckx";doc="0sfxafi6qvihr70vspyfqqcdzpfjb8i0m43rlfkgnwfwcgschpxc";};
 amiweb2c-guide-56878={doc="0cxwsx49p3c162ysv0ydyxdncfg8ij9sx2x7c4pvzb0yidvad01c";};
+amnestyreport-69439={run="0hfjwmhhs1whc9i7vr8i1nxqdxvh6bqsylq9sd3cvk4jbbqzbgdr";doc="0p0jmg2mdkc5ada3wsnkbm15an20lgfh27g205q2acr08c0d2zwz";source="0plydqkmzdjyjid35az71baym73zhkyj14514p7n1jh3hmpkvbif";};
 amsaddr-64357={run="1mbbs7r8yf7fnaaizccff12k8valncym1plwik07ajj78vhgfy5h";doc="15abzspjcy683xgmplnr5yxl20phr6176i5hcz0lmnk8d9i5fmza";source="1rcid86j4vjmm54bn6yj09kjyz3v6kfaxv27w0ajndrl60fm826q";};
 amscdx-51532={run="0ncbf7ss4iwyjzp6lgzgzn3azy5iasl03565kgsm1pcbgprqibgy";doc="0nfpbma3cawyy7gw6v0w81maz1jgicb2r4cm5gmlipzxwzl747if";source="0jg2qk0a9y15hl4w753yhjff28w9wc2vbmd564lkikvg60b9yiqi";};
 amscls-55378={run="0k3di45cn0g6v5j7ccgl0nys6ni1h17dkhmkz5b5lsz4zzbi05fi";doc="1lb1q967zwgqn21ix4gxbzw8a8649p9hky4ckd61l0bxxil3mhjd";source="0g1i4nj0y32sihf7hnb8jwyh3d3qmff394xgw8v8x5jp8q0rh2bh";};
@@ -114,7 +115,7 @@ anonymouspro-51631={run="1qk10w52722yzlyvk2k733sp1h2vic3rjcswkhx8j21a2g9xgmjh";d
 answers-35032={run="18s0c7hdk5qnj3svni93m9lpj81dhla9v7nsmcgh0jabhwy8n3v2";doc="02pfg28dz10w21ap4pi2csvy32pcvmp0baiciavp354ky4avjbdd";source="0mcczai8da24jvmakc7glr2c56yhq2jv58y1xqv6ny9hg4ph8v61";};
 antanilipsum-55250={run="0xz42icnw36dvkxlh31g8hvy37mrbafgihm7l3ivh1z4hg6gabrh";doc="1rfx3aqdvl4gvcrpsqzjh9dglk34ll6qc1a889yz0np93psnwmkh";source="02qpjks29b4fmma6qm43p3w1k8h28wv1blpwjnnsfq4ii6xrkn5s";};
 antiqua-24266={run="16pb6v297iqx09lb6w6zfcyzhwidd1cln14rqc3fblbmdaggpays";doc="0pwyp1j02zh51crp46rlhbdnwc2m0blcrg0yk43yfc687q3jx91y";};
-antique-spanish-units-68998={doc="16jk9srxf9ya7h80v77f58xdg7dpxhpcs35lv6hwv4g0yas71ab7";};
+antique-spanish-units-69568={doc="09w95jv60qy5fc8b121f69b2bj8gj9cqz77x4rgp68xpnm125y0z";};
 antomega-21933={run="08if5plzpj7g8m1afhq8ci6m4yba4nnsgglngq94ka3ga8czfk6g";doc="1mrr1vqkyic5nyzyxkw7zq67yz4njx9x68cqr3vjd9d77qv85i00";source="0s0dzmb00hqbp71nhl94w0ns1dqj5fmfqw63z789iihqznyxkii0";};
 antt-18651={run="1clzmvpglsirsvm8nsc3m4dkz2va90877gmsrm7jfkhm62xv9mpi";doc="0kpiba7awkrjr2rdgxilni1yi8p4ycmqyy09c1p9j1ld82idsjcm";};
 anufinalexam-26053={doc="1v1k74vxidgxn5zzqz6v9zga468kcf7hwdrnvw44cd318221y396";};
@@ -145,7 +146,7 @@ arabluatex-67201={run="1s66v0qns84vhpwvb9if07b9s7957jmxxd643g1mddg36z6pkqfj";doc
 arabtex-64260={run="0xd2apd35zn1c4narj2gyla154nzd9ghhgc3fkk6y06d8dzgawv3";doc="1zyyk778384mhma5q7ra75fwykk23i63q4jzamq4zard0y7gp4k0";};
 arabxetex-38299={run="15c8nmmv87x87dbjwm1q0acf7pbbh8w9gpiw77fs2i51gab592xy";doc="1ns1y2lf87gspaablh4lm3kj33ggpfp7hcxbdv4vxf8hhfc4pp7d";source="077r71723zlzfjmc471a8hbxs1v2g6j2xpiim3g2klxsj589bxfn";};
 aramaic-serto-30042={run="0j1i5snrgj579zx3cn7z7dhi9rrq0ssl392r2vxykcxalcc8cmg2";doc="025nkiqh91laaj3yx2qkl5z0jcm2w0qwgqm545dd98i5y1a78lfx";};
-arara-68431={run="13cvwhaxr6a8xbi5kdm6s310zy6q6fmfynbj4hkjlh97ij42scl5";doc="0mnanld6pmgnimylksz34fx9gjmcbm4qwfajkisx6h5f3qg5419g";source="1k2grs77d2pqybvnnkk3xy7rxzm1vk03rcfgzas92v4h8r6f50dn";};
+arara-69878={run="1vcvhpb6wd8k9fzyq2pxxyd23p15w6n57rmw09f745l0kg9gcd48";doc="1ln5z77slqmlks5507n5cg5d6pw1vnghapjwagw1bsc8cirw9z3a";source="0109zb2h6r00d9849sdm1k138j2a6z81s4bcap0llz7qq7qs8swd";};
 archaeologie-68476={run="0r2j9n7vbdj7virnmasqi9md81wbc5b53h0xwf4d6azh0isy0505";doc="1xhlp6x1ixqn5xj0k9xz5149jwf9zgp3nlv0ncyjn5nzqkky0jyr";source="13wmghwrc89g8kmsdsqjfcklbindkrc63by2zlgig29rvidzn4lj";};
 archaic-38005={run="030a281kl48ixl4vh378bf0341lrrpvh73ws5pjxyhvs6cvyxp7i";doc="0m64lsmx3sryzdmbsmz7biwmndpn66x9is8apqn7w64y4b1jjcpk";source="1231mqascj96yi4jj11p4zcxgkpzxi3p0zxnjq8x5fpajz386kq5";};
 archivo-57283={run="19hr6vc7x9csjjd3i6mz9z27cyq4pz1qvhmiwbql2xhvmbcd871q";doc="00cs206zp27vpw06wqg7adwj73124zbp8zwfvgqsh9n544npvfmg";};
@@ -153,7 +154,7 @@ arcs-15878={run="0qahab6a041wn6s6isnjn93yrs6zk82g90x5aqpv742b2y8cj5ix";doc="05wg
 arev-15878={run="1nx33blp0nfqfmv2akj7w79qg1rhds40k7b58v5yvyrkx0hpn0hm";doc="1vscwahxzdcb6879pbrxdlfpgapc0bia2fl3jwilrm1has0ffjz3";source="1k524nfr5zb0nmhhq8dfaha4kv9f2ika192scllnn1bywhbpn2x5";};
 argumentation-69023={run="0pnr7z8by62zi1d8qbjmmddlykrkhhisqx4n8lhwbvi3qcrj48gi";doc="0mms537p669wa0v301g51sgigzxdg49rj3kg8i3rva22hm3b7fj1";};
 arimo-68950={run="0idfg33qcggv0cmh1hzpvzz690yikpmi76xpfh19py168my01mnm";doc="1yx6lp3w6s6zz31cd8hvhk4vdg2whzh62cdlhyglnb90a8hjyis4";};
-armtex-64182={run="1b347npswdail6q3lryxi1y8ac13dxvajzz6xzfglgpy2a10ykc7";doc="0v4wfw869d143idxnb19avak8gpsg0n3cyf70xa7zq6hljpq49vy";};
+armtex-69418={run="0cj112jisym4zyrjb1g4y9ryyiaj6smsglmmq8zj9xkr2hfpw46g";doc="1xdl1alazbmma8sddkfl1vcm1qpk0agg1dbkimnbniiw2xdx5swp";};
 around-the-bend-15878={doc="00nc6kx4ylz9g6vmjlgyjvmy1ls86pjblbcpm5z40wh5xl7l184f";};
 arphic-15878={run="04a15kip51zp4bhrbpiv4m5pm587xbia792ckj17gj281ysd4817";doc="1z1z7nnncp4dpb91bajxf3li47k011jn5jbxzgdaspa5mjvw32k8";};
 arphic-ttf-42675={run="1z8fa90baasp8j8539a4kzilah602lik012az7i3pc0dnm4m2w1h";doc="0nfbjnprd71dwp2dxmkmdggfipa36w4qbps82czn506xpzh07lav";};
@@ -175,8 +176,8 @@ asciilist-49060={run="0ni7182xwr3ns1dk8i75kf1cw9wpfagrf1y7w20hk8fpfymx2669";doc=
 ascmac-53411={run="18hw5yyqbr8ji39y39293z7a70czipzw00fzfsqcrhgdlid79sc0";doc="0xzwc7kw7hqpcmisw5wm3n508n4zr4s207pizdhfm2q9mjij0jvr";source="1rd5qmy9miximwv1n96h6djjmd3mdgn4b0955marf2k457bb71d2";};
 askinclude-54725={run="0s1938harm9sgna3cggllpa1g85yl9jv2wy4b4c5v6fksiivxzs1";doc="0gkbk6j2wv05kgfbjd4mqx5k7rc22bmqn47vk7pvr5z60dr4nay5";source="067dpl3v0ipspfm5f2fmcmg5cb6lhqg6n8216id9j1blir1ys3mg";};
 askmaps-56730={run="1r6lk9szs7jm57b4hl9w4ngb9dqcsi6pvp37rcnwnznj5m2daj50";doc="1ryw8yy59mfi13rrwgrfg5y5dy3cafz2a3f8zmq5fbl7zhbylq6p";};
-asmeconf-69228={run="02a0jvq0m73rq2cmmdkcsdbb62ysbx0fjrdrvczh7viml3l0q2z2";doc="0xr99yy8mr4759wfhp4n238v1jx0fggj7y2fsiwmgbqv9s7igi4r";};
-asmejour-68629={run="0svphwvm50pqzr8d4rh3dpsz19y6lmk3dmq4sfyhzm8ph3fh05s6";doc="1qmvcj1m2wv74ywawsz2cs5d4g54zw8caia2675wz4sv6vxc4mjq";};
+asmeconf-69742={run="155l5aw8lg2krmpvhb0vl7y8lf7n1mgd2x4vpbx8dhji5laxdxl8";doc="16dwxl3ay2p1vnqh9z946aypapb2r984p5g861rhxm511wm3h2hk";};
+asmejour-69722={run="0km4df99jkm270frhsf11zwrsv2h0c7sbfkyikfvjvr5pxvsdhga";doc="1br007g5m7wsrrk6xn2b03kfpmlcxzazyijghsnqx1sfn4hxf84l";};
 aspectratio-25243={run="17y22131b9nzzq1skfdyr7cfcq823nqn3ssqrbc3bglggdfibf2p";doc="0mw7v1m9afyk462rjcimvwwikdpj0f4gjw5pbw2g9c60vbjhz61j";};
 assignment-20431={run="1nxgpadadzf3d30ydc9rndwm4v53s4v10a6sbqf6yfqds7ry13vz";doc="1wyyvay22r68hfspaqv0a43s9icg8a3pj8wii3snn90svbsjfajn";};
 assoccnt-38497={run="0im3x8im6kkjmvibh57hkn8nljcfc4mzp0hpimiqn29ys1yrhj98";doc="11p081b0b6mcigqsmvgf6kc9ik2480c74madjli19rw9i5nzf0vf";};
@@ -184,7 +185,7 @@ association-matrix-64845={run="0pa2js62lrqvh9ghhv5gylaz7jxbh6qwkfymr3z99w1isl2ia
 asternote-63838={run="0a3a5jjhsbvi7kdkp98kwa0q8j9chrq5azfg9vbb4m9kfkbafafh";doc="1xz9p6g5bl3qa957icsyjknni7bvglfhvxfvxg83x8bd7hvh7ylh";};
 astro-15878={run="0cjf53gbin9z10g63x2kingsclgnwr6idc4x0m473hf4fvakk34x";doc="07kad1fzv7p6inh7nkrq6b34c1792h4v49rxaaxqyldmf4pwjr84";};
 asyfig-17512={run="0zy0vxxmzg7nzwzw8z84sym5wdfbs7kyf06r6vnn05ga06wwn603";doc="03nby6d7cjczj3irqql5wpxs4fx9z77bb03lys5j1kg63ccq5msp";source="1rzicq0w7byrxqvv8pympxkwq575zqs01s02z205azaqdgrzdhss";};
-asymptote-67300={run="0x9zb9jgxc31xj5a5gb3s2ba7348zni3p1pwwd1lp7ldilq76lca";doc="0hcv17l67pv91fc3nrhx06s7z2g0imrljx0lxi4k6lgnj47dmnhg";};
+asymptote-70583={run="0x9zb9jgxc31xj5a5gb3s2ba7348zni3p1pwwd1lp7ldilq76lca";doc="0hcv17l67pv91fc3nrhx06s7z2g0imrljx0lxi4k6lgnj47dmnhg";};
 asymptote-by-example-zh-cn-15878={doc="0854pbh3rm21rzzbhai7xijzw26qawffj4wd3mrwbva1406106ff";};
 asymptote-faq-zh-cn-15878={doc="0z09f5as68dz66dlj370xfx593bv50ihxx10zxmm9lk27ymr52hb";};
 asymptote-manual-zh-cn-15878={doc="047l3bh8vvk185wkazyfw4dm6893xpa2ksn5vfc57r5rv4x16wmb";};
@@ -194,7 +195,7 @@ atenddvi-56922={run="1lw42kgkviwh5gl0fnc4kp8x578bss6fj4d3jqp3jh0iqj53wwf4";doc="
 atendofenv-62164={run="0r5y45wzyhynl6f1bsk11ha50rhzidjgqynpz0qqx55pwj1lvqg8";doc="15s783gvnj5vd7vhgvzvvxpszsy065x20ag5i3kmhd20rdm8sy6y";source="1j1z580b9v2w8b1zqjan8fi5smnyyagnhak262cx5fi212dzivnl";};
 atkinson-64385={run="1gcvnnj9f7vrf96lb6yyv8036xjd52099h4sbs3lhprbdb8gznrf";doc="1k994x0xmc4kl69qabrwh3x5rwipz77c730834bnv98annnbjrwq";};
 attachfile-42099={run="0akvm9al5rz67b81bsl0k92gjqwxjrd6dwxj9qmwrb9c6pd311n8";doc="169kh9zrf5ykal633zn8n3i41dqbyv7jdrm905a7q47icvd4ar03";source="1b9s69vvclpvdm02gi9x7zv5mf77q68xv7zd784cldns8h1a553l";};
-attachfile2-57959={run="17kxgd9f4q7qwciayq465wm1akrc4a5c3lwswhria540lim2sn8c";doc="1p66kvz1k17hvkkh5n1ygj9fcfygipsdqlpi4fpllc2q04w79y4r";source="0k1j5yiz71zzwpnm37pklmr4h8bavyfjay396pkqvjwrmpxbxfkz";};
+attachfile2-69505={run="0gljjngawrnb2825490clcvj84gx0vlxk3g7i6qxnrafbzx4b8g3";doc="0kcn77x16pa0kchcygviy3if7qqzqx5w6qq3p91b3zz39cxcxn09";source="0rhh83mjva074c3q2rqjc67r6z1any4ffxkd1y0mbhx879j9wn78";};
 atveryend-53108={run="06q5b28q5m9i29yqqx1l1y0vjc20i0n6p2k47z66jf3s6abrqnrj";doc="1nn08cfh3n63xd45rkmzvdmf5580lm7kfd08z9gawgaibh6nii80";source="0fgzxwc6jlijf0mzjh7pm2afd85np1rwy4xziz26s0gi6i5pdmvp";};
 aucklandthesis-51323={run="1zlsa80vbby0jp46jicygq2fn64f1mgppbw6bq4qm9ncsapdz92j";doc="09n2pdviw6xvh9ymka32pyscn16vgcxbij79nq0hxn6b6msxnlq1";};
 augie-61719={run="08m2n7wqqj1pvvrw6q8j514mgr1168brckm1dl44yp78afgm6vra";doc="0ygmvlk1h6n071lq8jnlpdqaxhcxvwrzf1kgvacj78kijaqd0lix";};
@@ -224,7 +225,7 @@ awesomebox-57349={run="0bjnvgqj4g1i6djzzzdjdrnlvli3dm1v2w2mi59s5s8pyc5pag60";doc
 axessibility-57105={run="001z3ra1zgsrvhlnvg9lmvc56s72b3kip71c1cnpl6qzqcc2y6s1";doc="0s77mr42dli8vfc9h6gslq5g103rp5vk94hx9cw3w3shxazib73r";source="1bh92wig3grw2bkkdd3fxwlky7rrfabzis1rwwdzgk3bmmrl9554";};
 axodraw2-58155={run="0dcls4qqm7pl0iyg7mkflqa2rd86wsafshx41xlg62din6fmybwa";doc="1l1kwxd8zq5xxhw7zyig0b8nna4fwr6615h4jjwpywcaqsnms6if";source="00nq53ahf63lazavijry572yii3jix1df9c604xnqpga9z22bbq2";};
 b1encoding-21271={run="104n1g3qnx2dj91zylj5byz7yaai6dw6v0pl9240mgk1h8i0xr2p";doc="0sdr25vv9svm3r6yqyalqza4awr8k26g7fmh8078bbxkddycchkm";source="0mbzrasvppl17965dmkp2f9cbi03539p83989d40kl5p11ih6dgy";};
-babel-69343={run="1hhidzf5gyjvrb0ws3rfs93gsqjpls9riq6ykxzx4ky984hvpg6f";doc="0wd1c774rirgcs9gn2qm7m2bg3xiiwf7wkvimwh7jlrg19xr5ir7";source="1wfz029f2rwv11rbgc9w64k36q2ifq5hzh9jhlpxz3nn884pvv47";};
+babel-69742={run="140xr7w35pgsd7sgj3sg7ar2dpdn2nsqg0idkz30psxp1j6h4k71";doc="0z6798rpjhxnxzh4756flb50m1q5431gl26q94szmav83pipgn61";source="04cqlnixmvnhz22lsn7f5jfpr2r1vhw1m27sda02q3nswhzxvxxw";};
 babel-albanian-57005={run="170mxpwnnsc1g9s7qnlhjcryw79cy72d8c4m8bhr36i5c78my0zg";doc="0x5z4gfi6m9h5gml6wxq3531i1k0sfqrd4hxrzbz68ijzyjnzk5j";source="1w8bassqn35bxyhpw6cg65ya64x1dn9h35p4fxclcjjhmv53xgg8";};
 babel-azerbaijani-44197={run="15siklcjg7wmpzgy059d8r6ivg6cib5by9a4l6n31c9pxncj7xka";doc="0dncpgvjqqa41rk80n6wif8nzdqw7vkxp2056l6sblzxgh87fvz0";source="176r483598gd2dfmfc2qhmknj913n3k6rk58mpfq69af72jq5rjw";};
 babel-basque-30256={run="11a26db60bwfhbx6zj42yrzzvf8nn8a96nq5mpw29xhxlpbhrcp0";doc="04jf1brw3ljipdyxv3d001slc0iggjmq6hkr4b5jsa3z8gcivzvw";source="17mz3bqi50ayia4nb2ikf60vgpnwl3i90gfbaq4692y354yvlnfy";};
@@ -241,11 +242,11 @@ babel-english-44495={run="1nb3c0yikcfhlpfsqgx2c6549ra7wcbcjs614d7gvk5fyh0cds8y";
 babel-esperanto-30265={run="0p11qa0d496xb6hpj6qc2lisr3xk3k1rbnj7b88wcivfjwf5ypmp";doc="0ra2iyai9vyjksfsdcv5b9ifvqmhlc4aikyzf3wq073sh9crhxh7";source="0i1hzj701rii0hbp05h25633vs2cbmqgyc113m3g78i24vh2rkbx";};
 babel-estonian-38064={run="0j7z04mcvjk72cad5l3np0x862nvgh7jxha8mll55cf18k9aj64j";doc="1nmjvvms0zijpc15rs0fkzli3pmidc4v4kzfp9sswvh43622p1b1";source="0x2a379m1b1ll16dr62dg5ai353p362dw9js4n0dn3x2wjbndmzg";};
 babel-finnish-57643={run="1z49ix8w96walkq5p915amii7n73ahzhy4ijxa1b2bb0wzz4b1l7";doc="00aij1bdybgcg69995mjrdddzlr3hqbhmg8q9nq86cd29y1gx029";source="1930zxk4l6k5q4wcbvpvijv4s0gxp2mkxvblczn4gcbar10vfd4x";};
-babel-french-69205={run="17k1cnb37qxsmakb5lfr52arfrs9b4skjq2z3b0j4isvg0gag0pq";doc="1x77mw4wbb6s5y44s8lwmzv83ykjxvayz6gdwvhana6a9na4s4h0";source="0l8lx80qfbdn9q44j39ai0b0m0z4cq1r8npihz009rxvqg9c7xfg";};
+babel-french-70261={run="0pqcsbcndlvjvgzafnbcf01qk4vs2yj01lz18wj54g6bv2wfkpkb";doc="1by7z9c91zisvznivmsw1n5xiqm4373kjzjhvg8jyf6w4ispx0xh";source="042nk3n8pjbinp3i167zdqjf623ln6pnyafn8czyg9xyman90c74";};
 babel-friulan-39861={run="0gfq4gyi720kp45vcbial0yrn9i2jyx1lzh39lci0ga77y01j3mp";doc="0hnj5scfsvisf9k6iwh4awzqccm96apxrbwzlknpxn7x3zv93l0k";source="09bzwmc1jnal4ikxciwas8y342rix0xksd7qcp39nwajyg8njdmc";};
 babel-galician-30270={run="0mk67w9lhp4nfbhrzyb1ngm3rmdknvv8nlqb8601hrglj4hzmrda";doc="0pzpk8d8hhvgsjssy67hpgvjb6sh3lfbn6f5cbpqbhxrgllhpgva";source="1awy39dlr086hc807zc57l7xk6zqbkwrayvzfv8ch1mqnl0d3a6c";};
 babel-georgian-45864={run="1mdsi9mq6ka6ahrgnasik0sxkhq97qa223q5iy4fkfccan30kb07";doc="1iw1hbn5i0c7xhvcmap4hgiaar9rznr76h2mrgya8xj0czppxwv0";};
-babel-german-57978={run="120912c0nk3zdvnrxp7pv78vnywbw68d0xc9iv8x2cwdl2hfwzrj";doc="0nkblrxgckb1kxrxvj02v0mx18f3cmv905xpd56i3lsp7rhi2wjm";source="05nwdy9ly2cdl2aayf573hc8v380avxlw568np9kfvf7nag3p7al";};
+babel-german-69506={run="0k82lr91vdc5kfq7wbhl9sw5sl78mg4kpql81ga048rwf5plhj4b";doc="08ghl1hgndjh6pj2c0j78ypd055hjn0mkqdw29727qmbxs14irwq";source="1l0qqnmajg4v1zkmc3gvyhbpvzcmwbx6lr8j8pbmhh6g9fdnmbli";};
 babel-greek-68532={run="1gii2nbgnixdysn2li0xw5acsvimq2r04rpkyhy16hnz50cm4shz";doc="07l23ycdm79ci76zkfijpdz5mlcgd8qcbq5s4rl041c8d4nnfi5n";source="17n58ldkgsqadbd1agsaf0bwv0pg73ybfql5bkw3ky9k9ck9z24c";};
 babel-hebrew-68016={run="112c7lk1xihspknd146hgp9nbc7wfxz36d3b887f6q0mq6hf03qq";doc="0w80r70w90szg4rlzzj2132yfx8wbhxranq8zk49far863sn658i";source="1srid6v4s1r5w02148wgfzhs9jmmwzj23fhx9zn606rxxkgakajf";};
 babel-hungarian-49701={run="18hc7z7gki6jyglywmljlf37aff3cndszywa32kmprbn2qlfc87k";doc="1imn8zlk18fcs2nsy4ml20xzkhpmv5lzzh28i2c2zv6klm1kmfba";};
@@ -261,7 +262,7 @@ babel-latvian-46681={run="127649mzw9jp35mq1yqpavlvkvcvxvp61sn0yl4nvhn30d0dws68";
 babel-lithuanian-66513={run="1akp69n8i19kyx0x247i4nw66wmlj3d3lkm0pmqz6c4zv34r9fii";doc="1fr3m5b0dcrnrqdb0sm184czgkya8xbx0zbj9wlsnlh5y2pnvyds";source="1dchvyy3zwa18x2dsz4ww9hjnkhca0cg65q85jw09l5cz5v005jy";};
 babel-macedonian-39587={run="11wiv5aw0k77rvqwcgh4xdiwcr67q42rwq0mq5vcpfz2hb0v8i6n";doc="0nsvnmjx8397xb02h2l00nd7ynz11f9qiqrpim2f18r55qmr0hb3";source="08z4ca7kja5kb2azf3whgh0w7fabxs3jcijihm0vnzhb1809napi";};
 babel-malay-43234={run="1h4n9m38s560iw86cr88xzflizkd37nhgyl51xvniyvkz6nkhrxr";doc="0c0jriwwkrll6sknd1c90bhipcjr3inc7vdn6cd2szlbx72ir12a";source="0r1gzyi40yx8ikxkrdqa1hg33vciz1qbvibd8dv3qbia7mm11hqv";};
-babel-norsk-65093={run="0n173mskrn15pz6pnxyysavwc93w5cz57wywdnn2xvb574ka8jhf";doc="0a3ka4hfvjv7w2s90y7rk2vb4jsaqz85sfbnlmkfxlhamr937c0d";source="1d5h7zm7d3d58lmkn3qy8aazx4a93fxmziz68cckrxa7izni7s1f";};
+babel-norsk-69603={run="0v660l9s3nc6h2mc8mlhz6jhvzf85s3qva7nldmnv9fw90f64s10";doc="0i4938n2ax9p78glxrsam2fbqfgsxk87ywhs9kci51ph6n70irds";source="0rz3rvib2rbbmwar474f0n20ywpn6hl50h2w4np0djx2kyn5hlls";};
 babel-occitan-39608={run="0s13mw7w48zq91kcx3pk5rzfg7d9dcjr8n8bvqsk5dvs0k4hk1dk";doc="132kk66ya2j6d7cwzd3p21qvjqm96dvb83ny4yj5q7vjqiflkn0z";source="1slny81jf77g32nxkvbwr429yi51gfpia6d1qllni978ivc9lagx";};
 babel-piedmontese-30282={run="0kcb4h1xsm8qcgqmqpgkqqxii5xvzpa2dvx6l41g3025ybbp558w";doc="0c6ql4g2i43zxx2ffnvg2rwac5hshvwngj7999g371fndhfzs31n";source="1xqfd8s659plyijsc13014zjhd9ndpi82jwgd597lw5d9jzwxf6a";};
 babel-polish-62680={run="1n1cz0jixlyw2zbcgz2ik03s5qarsh4bl12krsqjk2knqk1r456n";doc="1yydj18aiaa90n7g7c6widczi5kpslhcy3l1bxnq1dpx0g8wi94p";source="0wjkcbs2ghwg8x6mp6blihfrygc4ssy7nb1adj4vz3wx63li5j04";};
@@ -269,12 +270,12 @@ babel-portuges-59883={run="0n4sz1mdwrwq5864dca367w15mzln7my995sm57pps1b0r8l21jb"
 babel-romanian-58776={run="0pmjpy2p30299a10njvnpl954kdazir149b3aggcljaq0j4zdnzz";doc="1wgimmy2vwg66kjm0kx0lcx3zvvhdczxc19nnwqfbwchbpfhflyb";source="1qq1j0hb6vp8cdiigc425m6k8wpf7rxzdcgq14p064xlxnmqrbp1";};
 babel-romansh-30286={run="1hh4ashx2fban828gj37y46rm0q7w2j18785in1fwpir3cjcab8b";doc="0w4x7c9vws6k799ilw2w1p5d4qv2z9wb3bkaixb0p4gxmp6khamb";source="08v3db9g43pviw7fi87gcgj5xb5b2f07sll1slcvy94ffnmwlpww";};
 babel-russian-57376={run="02zvg65m1g15a1fbin635gvx2mxw2ljv4srd0wjjfcpdyfg53sl6";doc="1bs2q9xxqyjvpqxr3zfbmk0lkf58jg1ksi5a9mp07vznzplz01i2";source="12ik2dwkih2g0gqpbg83j0kcfwsb5grccx27grgi0wjazk0nicq6";};
-babel-samin-30288={run="07h531h0n7lyi8jhc3v9clcn66nwg8x50k2absmqzlq4adpgdqmc";doc="0rjzia85w9jz8hj6d6kvapcm1y74gq5wxirrlyqqs7ar7i11yp2l";source="1p6br0ki7xpzrs4cpsak9n4mn39fzxja93dxb6dl00rv8f9snj3f";};
-babel-scottish-30289={run="0qkki9838204xy9ac4rm5v72615iz63wclgpw49srwwzf698z3nj";doc="0vag7zmwsmp6pc6xd4p7i55na39nhmmkcg2mlg4xp81hgladi3rq";source="0k3dj8awj55azynbdbray872pigjs8m9l86imdx5hj7dvl6svdjj";};
+babel-samin-69604={run="0sm3288n25a5fvz05h5n39vvbpfp3kzwsw23qc3ijxj68y6xfbyq";doc="15v9732002svqd2s63wxf00wsn390xh683v0kzi7fyw5xnh8s9yv";source="16i3icn2kbkpyhij67mqdnqrx64jcjg75gkyrjgqj8kdg9kysx6q";};
+babel-scottish-69610={run="17xqq3526a7f0xkzdyp8phvf3a39b0pxzsxvxjm84b4yh28yfhyg";doc="07krdfp181jhc7vn3w15qny38vnhhbkkmygdkh0kv6xdycd9096d";source="0i26k9qlpv0qgzkxjs87k9ph91gbkqnm2w2wiyqaai77adp15dlp";};
 babel-serbian-64571={run="18vr5230h0x8hz9zizpsnaj56v6aciaa34p2jb2ykp59r709iwiz";doc="0daab33jd26smid0m38fh1m5yarl1vnc7qi64am6x3rl9zy55a2h";source="0jqj3bjip522w7swsqnpqls1mgrx304xrz91kz4dlqzvqw72f2l7";};
 babel-serbianc-64588={run="0pqy5s7pgbanlgcw9sgbig57mcs4i2yfydlbwz8xrrd6ysc160by";doc="0pw76idmc004nbzb2ax3shv35fzy44fiw7j1jp4cgaw64adr1a5k";source="1b4yc7y7d6asrx7lsmgg7wsdx6wfw1kvfdnc2xls7q6naja8xcws";};
 babel-slovak-30292={run="0724h8hnc4z0l0kkafjczzc69rh6h825wn0srfpy1zmqimybvaff";doc="15v2hdmpbivcdwrm3mlyb3bb3p1298swq7vwxqb9b5ylv8907sd9";source="1k4w34wq8n06ck9z81wa490fy52a1dcgi98pcvdmfggkalwr7ml2";};
-babel-slovenian-57666={run="1zpw0zp4f5wggaqb5wb9r3hjsxx8b4f892z5w7wirazqwgmxzn2j";doc="1lmjr0cs0j48d0l2qflg8hxcaqfbqfxlqsl5fj4g5icpha4nji96";source="1brwg8sr19048wgn0fdbi2y1rn5ls99kij8i71i789qf32hb1jvh";};
+babel-slovenian-69742={run="1zpw0zp4f5wggaqb5wb9r3hjsxx8b4f892z5w7wirazqwgmxzn2j";doc="1lmjr0cs0j48d0l2qflg8hxcaqfbqfxlqsl5fj4g5icpha4nji96";source="1brwg8sr19048wgn0fdbi2y1rn5ls99kij8i71i789qf32hb1jvh";};
 babel-sorbian-60975={run="1g2m2ydy6rlb6bv1p3myfwnyr8kk1l7jpq60m655x8hqk32119fv";doc="010v5sxqjx15nvgsycacx0lwf4py7frqppr897a89wzmj0fv4svd";source="06vyg6dh3yxqmvy02ps4b5kgxlcg1225llc6mqbrnwm54548xwrr";};
 babel-spanish-59367={run="1d38lmr5wiv03w6hzpfzyq2pdl845mcx0db5wcvwm6132vmnh6dp";doc="1wphssp001lg7blrv6wh11ppv5c18pan2kb49s8s94w2jh4jmwy6";source="0vgyqldgji8fraj5c7na6zplip4c6bc41x346rvzjj3l76q6xzvd";};
 babel-swedish-57647={run="0h6p32rjvsqzy8kdhr0f1zi301xnrsvb8l9k7g6gfwv26fpdcnzr";doc="11kshqcqn2187q8h1hc7ifjnf8cz774wdnd9m2ncfvhf52h2l6mj";source="03rp4n9wkqyckman765r8v8j2pg5fg9frbfxsnhq0i2mr0yhbr6v";};
@@ -314,7 +315,7 @@ bbold-17187={run="14dz70qh8kawzlb1h8lrm0a4dpqkn9b03czd51s74z01a3cdmn7z";doc="0pf
 bbold-type1-33143={run="0zvkzp43awkf5vbnrvhibkw185zg7h1rcfqav38z720cls2vgd7w";doc="1dj0vqnhmk8n383y426ma1y89r8y69y1lc2vkg58gaffjfrpxwxs";};
 bboldx-65424={run="0r6ds8wkf1qrv4mank08pzkwz4qk2pfyb6pvqazbf4jn4a46bjcl";doc="1b79xnpss9s1c7lmqlpznk4vvxzgp7dd248ipkq6n4dlpv0s2y4n";};
 bchart-43928={run="0knv4byfxfalyhmsqiq4wjcin0q0hyj9gs7f167cddjyzcg4z23i";doc="0zyiw3f37i3shf8ihhzxagvzwnsdaymbkpcizdm2ryziglahh1jy";};
-bclogo-39364={run="1lnfpy6fvw51cfy7zc1bpqhgca8mcgnhyvh5l1s3712xl91hsvwq";doc="0vf9fvm607fzw3rvc93crxjg9ilm6d7x7q5n1qrfmkzmkm5mjj89";};
+bclogo-69578={run="1rx0z4f23l22vs9lk246kff3cqznp7rzc2k6xn0nwphqxfap6965";doc="0xcq3ypmsjzbkxivak1j48mzmiixxfgf6v5fnwk22z09c5x67j6i";};
 beamer-69316={run="1igp0jcs2w20k94fr84s1af5q8mw0mrvraslaxsxcnxmh65dk9kz";doc="0y07zc3zvawaph7pwk8z9429463i99y9b6lzv9v8cacnhqk48426";};
 beamer-fuberlin-63161={run="0w4asfzmjrzqqc8dsan461fvmkjn21181lij46rhissz273d9vph";doc="0hw0cp32k2gqv9y1ai733sj8f08hdn3pj60qh2ykmcqg818q4clv";};
 beamer-rl-69254={run="0dq7p1zpgv3sdbncric180slinfxk1vdskzvfzsivxzhh2z1adkz";doc="0qq209gc6ssz3kz180dnd6kl2zv3qj9iwq5nzcbd50ypmm483dg9";};
@@ -329,11 +330,11 @@ beamerdarkthemes-55117={run="07zg346brdpckcfr1vnmvqcahjmp87cb2sizvyx4jvxv19qqwpk
 beamerposter-54512={run="19h0zh583chawpzm59xv7243vzkz597df68yy0zmn3r6ha8k0qz7";doc="0xspyywk813ndrd5xps7fxwggkmdl078fmn1cvxfx3cxpnmdf822";};
 beamersubframe-23510={run="06csqdbh272jbh3zpi0f8zblbmi0sp5iiz1r1qa9qc0lw81mdh7m";doc="1g29xay21yr8aap2fzklkg8q3ybz0xmz22xx5cd9md93c8k9kg7l";source="1zb42dsisab4234s79xvva74rlicd1gg4pbh867rxd15ajgy14k5";};
 beamerswitch-64182={run="0hl3c2ircmxp8bywx871w9b7rdblzn28f0mqfr0pdaz3gijbw7ms";doc="00gxw3mdrpdziixnjam8swq1gm01nw5hg6yzs4ijdpxh5d911c49";source="1pnr2hrvz58c5i0848hcdjw85jybz4q7lpb3xwfkmx84wjx99945";};
-beamertheme-arguelles-68659={run="1rg7bp3kvghb8qhsqax73mbh6pahlf16dyiybqbn8jwwapgmy9kb";doc="18f5ww68w9hiq0pkpf0lgmksf5lc2hc2kh0067h9ls3zy91md3xz";};
+beamertheme-arguelles-70209={run="147ldkcd2iyf9xs6g5vcbgdj7dh4iib6d8r2k5mmb8bgcgj0fg9f";doc="0p8bg89v8spv6lzlp4wl29jw2k6jxjbc65sxml8bzvlqba0asq9j";};
 beamertheme-cuerna-42161={run="1r6c3ar29s06b0yfn85wssxccayxn2706y9jxdx2pxsr85ndc4js";doc="0a8mmg184chg2lljv1k7ffydg4sgcjpjbnfjzqcg43cqd01v5dmx";source="1avywir51zks1hygqypsfi6lkrba9ld6x5mkr8lln7b2s4ijnysw";};
 beamertheme-detlevcm-39048={run="149ya5raar4xfkb910lk85pqpm6mrc5n5ghh6350knbmaa6bdwg3";doc="1wfq3wc7b3516s81sbp6md6mx9szbzq5ycqvsr50y3s2wfvvj2lv";};
 beamertheme-epyt-41404={run="07pjgzgkjmr4hdf16m7kx2cf1448253jwgc522akfvvnmx9fi26p";doc="1a987h1cg48bw05zjh79ga23qb37s82dkqhhgvp7gsnwz10pax2j";};
-beamertheme-focus-62551={run="0v151kp4fjglck75sykyms8j2i96syb8bn0y8abg3q8hpsfg222c";doc="0q9bcn6k35gwc8g1rscqfmp8vn1psra5hynhy2pxs9xa8ys43fbp";};
+beamertheme-focus-69742={run="0jsjj0rq8267yj70398bcn4yziyi6kmm406q1wjklydnclj8pi7r";doc="19qn37248i97z2pdxksm4z9a1zdkqi5p3fn8rk52y6v35w2xkgyr";};
 beamertheme-light-49867={run="133mvm4cayp49l8xvh33q0jp4qzhmvd3q2kq2aij3sh6i0bzh5aj";doc="15s2s3b10w0czq513mm2y7qrczm7y91qhghd0zsfvmy129mwfarv";};
 beamertheme-metropolis-43031={run="1pmvcyjn04pgcmvanj369hxqjha0s7lh1z4b6fbhaj2aj32l52r7";doc="195jhmhzr4gbi04zmss5nl0lm9rkg8spynwz5vqlgbci1xc2cw15";source="1smxiqwdvz4bj5rk9cmsqmy3kwa722ab5fhns67jllvzrkzy8zcd";};
 beamertheme-npbt-54512={run="0m1mpavq8p4pswibgfhsbnvg59kn4sxz0m4p2w6zjkmy80s3naq2";doc="15kc24d21d1r34hd07zr65rp1k55fwrxr59h0ayiiwgc9fkjjsd9";};
@@ -346,15 +347,17 @@ beamertheme-simpleplus-64770={run="0ip3imjc2gz4d04k8lx9vpd4an9sqmw3gbb25rmfpyy0q
 beamertheme-tcolorbox-67000={run="06yri18aw8bb6l69njavl3mj38rmiy9aabjyfvy3nam2mc7ivhk0";doc="0v1h8smnlfic4r5j8dlixn03ihxy8ciwgc839zy739908g8wix58";};
 beamertheme-trigon-65985={run="1fdray7kncwsb166awwr4jwnk27jxnp3824yf298pp4ikg7iw6b0";doc="1l8iqyq8ib1v0d4k7bd35hb9lpdmpzplnv0fqb1ngzdn0jfx6c6q";source="1s3da6z3sshhndpaxmi3rh7zphh7g1qn4b3cxbzkifx2xqmz8xvv";};
 beamertheme-upenn-bc-29937={run="09a7da5ghgf5q4qp0djp3pya35zsm45wkiy5srz8p9q8pwg04bdx";doc="1m1bc9mxdwfdm0v2lb0i3pfxgf5as1lpm8a05icrm7bdvii0vsiv";};
-beamerthemeamurmaple-65698={run="1amknxp5vladf2slqjn9a6inkcgicha6fb3c6pc36f92q3n62csk";doc="08y0q7qq78fgghfnbxy2vsbqmqrqdnj5p8y682mc285qpqwncj6f";};
+beamerthemeamurmaple-69742={run="1ghhmr1b5riskhqyr7x8kqjg76kqshmykw4iji95ibhnz2ywj43w";doc="1s4zb71fp3lss2wj72f92w1gzj4wlb1161cp7s1cc76nzacl00ya";};
+beamerthemeconcrete-69528={run="0661r339w4473i6d1dj1wyg2pc6b0539pqpq5zwqq7sk2c1y5dmi";doc="0g8xbg6ln71im7a6yp3hg8xpa1k0wy813zwvyha9yxj2fbqfrys4";};
 beamerthemejltree-21977={run="02ccd8qqyjkvqqyxr94p1gc6qjryl83vpa72wcm5ywr8gmxci0pi";};
 beamerthemelalic-58777={run="10wv3820avgviic0mcxn38yycyxqfvmf7qhb5ybz1x84jrw8k9hm";doc="1wz984il1z42ck69xn6rnxww3x4xx127syyx37wdy246i1ji75vw";};
 beamerthemenirma-20765={run="0ivhbhybc99hacnrfw1fb9412f6614an1955rglkcbwxwkji6nyn";doc="04155wbw6ix7an8sblw4a8q9hbn7vzwffady4vc23vzccc2i2f4a";};
 beamerthemenord-56180={run="1kb3485dv7kcj04bkgz8cv15kv7jmdjy0jcilvi5zc1vn690cyba";doc="0ls5ivdcgayz9pqm6j1wd5f45s063kfknzxf594rdipz1jnmvj4q";};
 bearwear-54826={run="1xaq0bmv8jv1zss6lwx2ccx8inrmyw1r9bjv3sbqfhp2x4d5xjrl";doc="0vm9lm6389jnmcgzx0ffmay2bw4d0h1wfmsfbj3x1s1vrfl62r8j";source="0dzmlcrc4izb63862dcafshzsaglq5m88z3cxmwivmwpikhh0gb5";};
-beaulivre-68376={run="1iph69jij9ryms2njy2mi0vd81cfb3rq3y78was44lbdw3fdxmhz";doc="0ksjl6rn4s6s301bfac22y91q60mljn96vh90bbgbbbjxs50060r";};
+beaulivre-70050={run="1246j8vf4s1sa718g5y1rqigkh06j589f5sgkg3qvascsbacv9n4";doc="15dzb9slhisin5mm020jvaj02dz4hw2frm9zywv74lyx31akra50";};
 beautybook-68438={run="1s0snxw87d8f1chj6ghbl2x8byq11piw5s95v5pla9k60559qnvh";doc="1ddqd3k2mdj0psqlbgkjpdy0ayjcxh54bqgih71lwsw73hc6gd6i";};
-beebe-69012={run="009g1m0f5d5vpajjvkhfcjqb98srz5jd5m47fa18y10nfbwrbwl5";};
+beautynote-70166={run="1xg2y2x69ghz8dy5mr1wqpdbjv7hsg2801ln9yr17zd7wgcip5lz";doc="13b2bblzg7bfyxv7agc31ijgaifjxn1hx2jhfg9gzg8d2qk5h1pm";};
+beebe-70064={run="1w6n6112mq82gz8mmyfjs1wgqfpy1dln2s49r8dmxzqjakws1486";};
 begingreek-63255={run="0dl4ap6r3xdwi0kypp6mq171jp4hl9hrjlhfrw9i6pd31qh2bp85";doc="1lmrl3iqgspi6hd86mwssr2bjqg59dykgwl4kzjfrbqa1637df9s";source="0nyd2kqsmkz6rvsfcymbbl2kvs220rk2fi2wajv46w0px81bxch7";};
 begriff-15878={run="1hl6jb8gg3acsj6rs1z0w5v0i6ivvas87hij4n64jdwgf1lf02ja";doc="0bd8gwf3ifqkjpr8wnrp0xx78169b8yc1ppdnyg9v6n4l1b0x0s9";};
 beilstein-56193={run="1xh2955zfnss2n9g8rsa0m1kad4b4xpsdrjj891kj97hhgd9hpdf";doc="0k78mwjqqib6hx7c6lcxkzrbg3gfw64a68fj32g0wpvdyj406ssf";source="120gcmpz53l2pzagh40nsji9g86fq4xvahzhwqqw7p01r03wc0cl";};
@@ -375,9 +378,9 @@ bgteubner-54080={run="0a8zhnl1nxzg5r525sn8sz44crjdm5fmy09glp8cjj7nic5xj32g";doc=
 bguq-27401={run="1spl6qnixrb6vcdgaaxx0fk740kkxv7y73xamlkprdnrsmqrswwm";doc="10za9hbwigcbxyjwyy5cd760hqabyyj3g74w355akhfpyd20m55v";source="1vaw8sa12c94ia6fknnpbj7xxng3q3lj3h61akm590riffklw2kv";};
 bhcexam-64093={run="13r8z9wj4v07zjfv7fxy4kq26jflywbvj8p61g7r6rgj5v4pqay4";doc="0gvf2hr60iyymwq8alkyyya4vilsczqc5zhg3j7ydsz9hpvbkdp7";};
 bib-fr-15878={run="0csd9a4j3hvgyczgnfnhp8n49j4baym7nw8sck38m86r3kn8n7ar";doc="1inpqvmf6c5zb091q5fxg0r2w87kacvg1yy1lyai7wq3ll0axvp7";};
-bib2gls-68534={run="0n0wdd4gihv6p004bb4knif4k5mg93hvg2kfhy6326ijdc61nnnh";doc="1abirvm0ifp4f8h28abidbr8wds3mjr8fbml97gaj2qv5qm87nby";source="09f2pfzirhjc5xf0waga3ga9l81cj0nzj45ghi5r68blb3r4d33i";};
+bib2gls-69635={run="0aakzv28qlygmn39xs1r432m1yx6rpwgqdpfw4yi8b3c1gyr1592";doc="0v1q2xx6i5fpfcbqqy905n6mab55f6nicgfkkc89dgyqb1pdfgds";source="0apw4dajid7cpgnnsa8c96370mrra73vm0pzb1kk9h49d3zcb2g1";};
 bibarts-67407={run="0yqpdj8fnh5lafc9amvmnam50sgxhwsaw6fr49k2bzxcz5bx1qv6";doc="0di7fqxkaddpq3iqxf9nplz0vy4qzspala5hyh6l8zc9wdcjr0db";source="07664c9cgf85k2c096r2aahkl1ddawhcdqgf7wfrr806qi67mbz1";};
-bibcop-69395={run="1nvmpqv6krjm2g5kfs7fyc7hqywkiwp4l18rw9llyic9kddpvn3y";doc="0hblnmbssn5lz1vsr0ncx6c5i75f7vlsi7wxn7gg7sxfcr0bqbrh";source="1s1zslgccaws2wqlxrr0yd9wijir4a40qx8469lq92349m3rwnzp";};
+bibcop-69467={run="0scvb7s5j4if7vviyvgr3sqkbksq7k62n4sri837jnri2d27cdhr";doc="15jszlsxckl9mfzhvjghipkirv9fa2fa81am8hla0g5b5k0b3kwh";source="0y87681xvr8a3m3l7a16qaxir2s3afm4lhy5rw9yvn3bdr96nfrr";};
 biber-68188={doc="1kwhxk6kzfjg62ygsyvxqj12pgw4bippxq7qdlgi2961n61jaj32";source="12jl5fyb802yrfj0fdajksrli1yyi2apf5kckgh6k0cri265bmxa";};
 biber-ms-66478={doc="0h0hxs4a7r8sr5w573d6m002zdpzgs0gghwbasdi9j2hfb2wv6b4";source="1mw39ra48y7gqhh8860544wvzxpciaka5c38873vvnbdnng44mh7";};
 bibexport-50677={run="1zbsilzaz68zvmbf2xw7jqw4l66clcplz3l46ggxw95gns8mgqlg";doc="17a5w095vkpp7j54h8m7f74l7vycsqbv6zzschdb3dd34scq1s5w";source="1pqs7j4xdhx3pqsc8i0wqnz9jkyg891dzl7g3cv19a6wv82k0xjv";};
@@ -394,7 +397,7 @@ biblatex-bath-63401={run="1v5hbvaxcqc8ccg3ydpzj5979nf7aqm6r6ax82b9v27sf9zmr2cw";
 biblatex-bookinarticle-40323={run="1gas58hi5ycchbpamm0z9mn5jc2hbry682i4wmba242wm55digyq";doc="1s39gixpryiqf44riq5bk3hnp6nc8pdqbdylh594k9xk3770p77z";};
 biblatex-bookinother-54015={run="1vb9m88z3cck9gi8d41lsv4ckqli4wjdgwkklfds2z189vbncc4k";doc="0zzmlsikzv5zxvd5xh12fzynmkl0bzzvl2s2y2r4kfn6s08xncja";};
 biblatex-bwl-26556={run="1ii8jacddlj15sm45g5rnk7yqbsd7i8c6a1pxy34vpb6bgsfb69m";doc="11cspr9i8q1da0x23bplsy88nfmn1x87zvrqdc28gbk4ybi6fc4s";};
-biblatex-caspervector-64866={run="04s0dghqdj0x4q4yc3q5pima7qpbjf615amzwc22yd0pfw8h5hrc";doc="197ksjjv5nwil7faxd6ahfsxv5r1jii2j4z66qbifsnwxg92fhmj";};
+biblatex-caspervector-70496={run="0y7ad07hs9ywkaz4i7m9vkka9c16sm6fgzjjlpk7hx7j2dvlifrj";doc="01cdlyq8an235qrvqazni1rgxw6dsgpnc8xnj4mwdlb5ajwcnphk";};
 biblatex-cheatsheet-44685={doc="0y2ry2q1kvpy8dqglqdfq3rc849hmbni0k78wr1xnjbpd102l3k9";};
 biblatex-chem-57904={run="0kv44yng5wff1xkgw8nya64jizfcf1ipxrgnf46pd1dak5vlsiq0";doc="0amx09qlk78kw6iam8b83xx0kw12k5p7q6wn267imr2rsibbs3l7";};
 biblatex-chicago-65037={run="1ik86b38bc59qyj68fajcbskbmlz6vsg6nzwv6pm1fxnmhnnfd0l";doc="19sy3fi70kmvqknbfa0wxvn563l4s3m59f3jx75n29vxrdljscp4";};
@@ -404,7 +407,7 @@ biblatex-dw-66579={run="1kjvqx9yqqzhwin4zwkp9qcgh6nk7bad5nlhx63mkwp37izwlcrc";do
 biblatex-enc-44627={run="0kvya1xzxpcmvwgacb726jqzmgr944y9ljai45f0gdkw855ylmb8";doc="0mmc5sd1jjnj42aa2q1g1zaps1hla6yayl769i4bya6i1w9r99yf";};
 biblatex-ext-66641={run="15fq6q1rxx8ca8p8g84m21v0l5pnibzsvlrw7abl8v3zs9bbncqv";doc="1pl04di1qmkf03i3l7ccszf1xab5bjpg6vjrfxj4n5gaw71k3jmz";};
 biblatex-fiwi-45876={run="16grb6hqmrhvzryijg6p4q4vf47a0lxa8bw59avlib5j7mqpg0wc";doc="10skq20bmpqymbgxs47z8ac0q5nckyph7s4xwqmpfd7pi2sksb4a";};
-biblatex-gb7714-2015-68240={run="17ri6cmqp478z15bsbnfmmshfbp25ng070irk7i1qwig4fgvmlnc";doc="0k5shfxnw0kdbplw5fsdf3bybd98dgsshmwqrnpllklhnc30zhbf";};
+biblatex-gb7714-2015-69775={run="12rpbsjr66wjxi8ncng5wir59j7mmc2j905ikgi3p81ld11401r1";doc="1j3phn1l9xi4xawd964w2828i2jwapn7qc53a0r4lrkw5r830vsd";};
 biblatex-german-legal-66461={run="05wf0z91b7yhw73xz70nfznic6x4iy0ir5savldd1ai67iv6h569";doc="04xrqwnsai24xh1apw4vl5gqhjd06vri33cxp0z96sp806s6hb4z";};
 biblatex-gost-66935={run="0d7fcvjv4100ws9p14qvp4dvv5wzp6xc8qhaqrxnrzkrzd6w7x81";doc="1zzxb2hqi4gc42jcf21pw79h56yxwq0c0wv7z45lq0m6vc45lzic";};
 biblatex-historian-19787={run="14p27qb8rdx479pj7zdvl00ir1zg8f0bzp107zfwv61ypq8zrvbl";doc="0hcghqxbjah4lyjzlrkixs6iqbkjx4d8r3hv16lgnddkndbgq663";};
@@ -430,7 +433,7 @@ biblatex-opcit-booktitle-48983={run="1xciw0zxkp2034lccvhr6irkr333s0qqqacxqx20v51
 biblatex-oxref-68950={run="0c5ijpv8r0wwk8pnd8q0zg3xmkfdn1dkqncdzqjzqql8vm0hh8x7";doc="054anh0z6z0yvxxqd4gsy2sk8yqwvsxgclazgpmqvfhr7xvjjl1r";source="083wrmqr3j28756z4f235kjyq739hnkg0qnjnxs9vdw3hzwijry1";};
 biblatex-philosophy-64414={run="1fdqbfia3k8zldsyy7bf6rhkscf97v84m5c0xjnk0s0xb134d7hc";doc="11pxds41wzdsfgikcyx84d98pp3sz5625kzim7bxp58vn5rkrd95";source="0fhp5lh4g7m07cfpr03ca0vrn12lks8lsq3w4vbvkhh2in5w7z43";};
 biblatex-phys-55643={run="1vj1rrhzh7ncvi2dap2cjk88vdj0dmlpakjiz953rvb7szx0h40r";doc="0z3y7gmcmp2p5g25jha6kwkd7ma4pzgqybxra4402p6aid823fws";};
-biblatex-publist-68476={run="15fwzc0splkfpvhrnpwh2yvfb9yy1zrmf5wvzg7knafqjpw8i05p";doc="0rv17kq27n9npagpv2x2fdww1rzvqvcvxq22yv2yqwcy3np1gmfk";};
+biblatex-publist-70515={run="0l6kwaqkj94ycmk2nb9vq61cv471ibrifhpv099x9qg4cx8g68n8";doc="18x8yxillm7kjpwy7v16lwy1fz3m50ypwr756an83bv9ppay4ymm";};
 biblatex-readbbl-61549={run="0byz95nahaassfx1gpl80p4vgc2bhs9wfw9w7xxwan6b1kkkz9p2";doc="1cp3r5j8b7zrl0k7zzhyjcrw9nypmr6gd7mn1q5whn7n1dn5js5c";};
 biblatex-realauthor-45865={run="1xv65ic8ywf18fdb246sr8pvq60hv4wmg7ris1glr5104g5yhg7p";doc="06nvybm142cd1shgpcabddbrfyvzcc3yxk9zyq9hr3rfhzcqf05q";};
 biblatex-sbl-63639={run="0947b4lszjbhs0k2p6a31mzc4bci9pvh4awq6k6d4qzvpr51yz9g";doc="06rqhkxpmlql5hvw31yx0mwkdjwnrh9jk4xazqq9bxilgx4y7q85";};
@@ -480,7 +483,7 @@ biochemistry-colors-54512={run="0d4bbm1p3j6q28ckkl7ilkywrjx6iqvmx0qb27rpldw3jabf
 biocon-15878={run="0g6r8rh12pbnbhddcv6sz9h8wnv31q6jqs2xbj5fjj7vcb46z694";doc="15wd9arkdxsh8aral3zgl83627yl4f0wdx2r8b6xb5ivvrbwaslj";};
 biolett-bst-66115={run="1ap5arz0s65bqqfllzwxisp3wa327kgivw1jh1gkc4wljq7v4jq1";doc="03hj647j6b7y43djqvb28rkjixpr0y7i02420piskp3cg90hn5dj";};
 bitelist-25779={run="1vbz2c27jjc94i23s1dzl9j0zf0n2935sgxgc5hq3bpaz1qxvm7h";doc="19p9f9bzn60nf5163rdlw166zpk7qlfwhnc51bpkppb0w4rni2ai";source="0r3lccpampra8dardrr7sb0swbx72aasaras43q4nx4jv6z2561k";};
-bithesis-68634={run="1s0hd2af4ab6y8bvkxjhiagj8d52z9knamrj71smfw8b2x3419rb";doc="19zjrhqa8wn6vicaa8yrr4pf4fblacjn69rw4r9ia9r7v7fbvxp3";source="0w74w2g8ccvbsj1apv86aa3fr7ald4vkj9k8gvqdc76yzdfj1vvv";};
+bithesis-70136={run="1jj98myh3x52w6r7wyv605r97jybid91yyx5ix5p9iycrqhq61x8";doc="09c7jsipdrl7jv6jx55s750la39gwdj8fcprphvbxaf2bx16600w";source="043bw2harjb5cddrkd7rcw66xg7lmiyhwpwdmh8i7jnjh0nf2b64";};
 bitpattern-39073={run="1j01vh1jy41714k3hms4nkk8j5c5d4nizgrm5syi20n8pcn3l9pi";doc="0a9120z9rsq8pqi33iv7f4j79gimjgxfqf5jhnrnmz0hgqdpl2mi";source="16bjmxm11kh0ww6ymk82qs947zgavm100nsfnjl60hxwjl3yknzn";};
 bitset-53837={run="0ynyw8fyb5cidlz00f42cf21gakm2ir9ilddaaz12s7qq99lhj65";doc="135dcx0b51br6lf9dxd66jq2xa21bpb1mi4y4kk5z6ngsd1imdag";source="0yds3rhgq52sxvwn5kc32iizapbs5g21cw6avbppiip0s5x0b538";};
 bitter-67598={run="0x3xnz8fvhwhixabr05rmxw8j0l03v2j5ylj7jq4gni519n3g60q";doc="1x8zzl2890c44jqk69ncsgj7xhchysbwkf66nnw0dsk2qfahc6xx";};
@@ -500,7 +503,7 @@ bmstu-65897={run="1x89sc4grkk3b9mhi4y1gkxm9pcbhg54j8v11mq2bx4nyl0bgrll";doc="009
 bmstu-iu8-61937={run="0xvxli6na2nc03qwn4x68sq4jdr2x830yvfb507j1990pni1y01v";doc="0kimc29vl79ib5xmrlb1ipfslq2y4i3hnabxcaisrb54z0y3rp1p";};
 bnumexpr-59244={run="06achk9z1waxr6ndcfplnvhvd7k4z1l9mw9plh92qpj1dn48ncbj";doc="1abhn0hyps7azg4fipnyxihhzmk5fdnklb4gxxsjvnnr1grka38y";source="0arhv81y8993498qkrnlnsa8fiw88s389q6ybvndrmf85js5nwlb";};
 bodegraph-68785={run="11y62cwwjkxpr7xnpc20aw37lwcs83177w2gnxz7f3lr8192b28z";doc="1k428jlknm973v64wj1ljw470q3939kxns7xkxcfn5r3hjnqhmry";};
-bodeplot-69397={run="1s7jccfsd86db9zfrbqi7890jfsznsa0fyj2ks0s99d8hbbzp2pz";doc="193cah3bgy8blxgjaa6gvg62yyv4ccf0zwbiway96xk617c4r9cf";source="1bg8svs2ylxxdd4if9z09lvpwypvp3s8mr8568spdq8k2vcg6lag";};
+bodeplot-69742={run="0fril19wxykb3mqq26mzmbqhdsh81qfnprkx7dyd4d2s3alf8fm9";doc="0czy2qkj6ss5m5flz3bj6j9b5k5gaxgz64xaq93al446sjr5cymq";source="1r1glsjb3kpi95lprz3d8vqlbhx6l22nf7arczqh169rz3v8y5xb";};
 bohr-62977={run="1fbrgfp1xnxa5cf5yqk9735wp0qwkjkpf8sv8gdjg6a06mpixn6m";doc="1jbmck8ld3rg0nw5rs9lbnr0i34gi2sxncri2fmcdpl8pp3xnw55";};
 boisik-15878={run="0xqr3sgmzklqsvd26f2800ifs674lf0a4kgr44na2l0lf5msww2c";doc="0l0hi4n5cfm1zdkr68c6ks3gxkda5bgwlnf62y7x96q5jkscdyxg";};
 boites-32235={run="1176j9ikh36s0cgvsflayik1xp0zycbp8m9hg0c7jmzkm5haqw41";doc="0visqy0qg18sa4mxszdl601yy0ilfgglv872dhzy8bnqqs8x7zzp";source="1zirqghkw8kk8fa3xahd27dh60phxg3blp98iavh6bdhj0rm7iar";};
@@ -563,7 +566,7 @@ bxjaholiday-60636={run="0qxc2s07rqnyi0a8a050h2qri4kaqfcwc26c2dz0x8ypg18s6nhq";do
 bxjalipsum-67620={run="11gg3r67rs7j3f4by1irz3sfnwlz88i8w3kzf0bdxb52sfrh57hr";doc="0wxw7dlm8rwgz321cdfpx14vcx3hf2skg61ngr5bbmcmc389apk3";};
 bxjaprnind-59641={run="16rdpkqlsx301zvrr2nyykpjqf0wj1xhqqk72a5jajyjpcqsvki4";doc="1x3wh73nga2l8f7l24pyabpz0b8g2k6hkszwl5dijrppicl875ym";};
 bxjatoucs-52509={run="19n1wr7i1mfrabmrsgnmvk5wgdqhbc9lfpz3s5qhnsqsz69rzi00";doc="0icd5zj0cabkvwjgncsjmqwx79d2rqsm7ddp54ahczfl6mfg7fwj";};
-bxjscls-67657={run="1gwrylkxz9h0szcy4jvsmyyix6640ncqiflsm9z82nxvm0zglasv";doc="1qy0as1kff7vlwq2vq9zl3sb8wy590ryfh4ax040d52wvz7x3619";source="0gpkk2h4ak6ivdjfjdjq52qj6vn5n49c292i3icx43r0gifhwns0";};
+bxjscls-69637={run="1dzcq6mx0agsflkbpmhna8yz8r0qkzvxsav2l8syk5v0dfr7jzih";doc="16v08rhy39bf4p8r23va2xsfyvjwqzjf0v711hbg558nyxgdjaxv";source="101larbrpv6lgynlj28amqv7wlk0m5ydzkbwq7cxgcqqnmrlwviv";};
 bxnewfont-44173={run="0mc8akfajlyl6vfh620h8rcyfv02gdg4ycqx18lhb9vfivi3j4py";doc="18na6f8nqlagfszk9miy5bbx2bylgspck3pgglbkqb9cgkdf4qq7";};
 bxorigcapt-64072={run="12bc2pv884wi9z97ih1sm5r8x67vrlqhd19f6m1naz9rs7jcdxxv";doc="13gp6632pn7kvl12rpbz99n5imcsnwf43xx4iq9wq6xj4qnlf7cw";};
 bxpapersize-63174={run="01gv55dv9676m7rkfrmz31aql5xb69drl1wvwh7k1s3xrywik35j";doc="1xsg1nvr7i1smrg94110pz4my0vvi1imqkhksc9daki52iv1jyx2";};
@@ -647,7 +650,7 @@ charissil-64998={run="05ysp0l1v2azbr1gjjkh8mh1qmd7rq2znns60p2ic7dsfvfr9kpp";doc=
 charter-15878={run="1z9145ri2g732bs4fb8i74gc0ymak33k7sclahln2bhdpxi286fm";doc="0gm9pwanxvzv0zmxq6pf54ygxaxvg56kh1ym6f5ij9akwvhf6nwb";};
 chbibref-17120={run="01gyfwsfrjy7fs160zxvzhr517wwbsgh381hk626kvf87wssz2nv";doc="0h5vlzfw5lfg7chqfmbisqydmjn513rjrvw8pax4xlm75c0p6drv";};
 cheatsheet-45069={run="1cqv885i4crrramly68wamd9fcx0lj96vzys39aplars3pjv0glz";doc="1ykadvnpwkyj701xwfpnlnqr313d33r0yigmsscshgr1dd52jjf0";source="01hd52i399c9nsk68ymr8hmllxq1vl6v01fvs1gpm90pgvgdc9gy";};
-checkcites-67201={run="137biq2rvvws5k7l5knzzhkgr1bnw562bkkps8xv2d57fnm2m86v";doc="0zi9ffn3f0kzf3iqf2940f9zvmz2s15pgka3wngy9bzw8f0snxbg";};
+checkcites-70398={run="1yysb7nhlkk260jsbslcqjxax78q3lwjkqrh8spfz2sjp97256m3";doc="10hy8ib9y7adld85w62nyi6im15frvi3ym9alk7bpqrm7853wazh";};
 checkend-51475={run="1g4kx83kkpdd4fbd70b29hv82gbf19avd04b3bcxy8d0r7zyyyad";doc="1hzllxf7pnp7kg2623i5yhl2xq6phifc4jc57f2zfgfvvw0hqihy";};
 checklistings-38300={run="0hs740rpar4jckxc2p8wwd8x39v8bghgc2jjrbca9m5zbr0prvpg";doc="1riyj6x57jb28sjswnnfyqf80jnkvyr2cvckav29j9ni8l970qp5";source="1ghb0pv2zmznyg12zqgljwd2pc5lbajgdnzr6zf2rrmvlrsgr38w";};
 chem-journal-15878={run="01s4sbmc4g96cmnbhx9a6bqjskkrr6saq91cly2pfy5gr256vmnq";};
@@ -658,6 +661,7 @@ chemcono-17119={run="08cch2gr35wclm1l0j05lfbjskqw43jzz3aj4wi1dhpm31b855q4";doc="
 chemexec-21632={run="0yj6sygdzs247fpajjl8gk3c6yhk52npbjahgngchqmblhmhlkc0";doc="0pqksv69yk7vf622x2p2ah735p0a93agfnfyg8hm2jadwjmhzikj";};
 chemfig-69227={run="06jp9cd9x404pz3fss77vhal0d3rlnwx1q6bnz6l5zcr7dg3n19q";doc="0g85rqfahdvb6xp56qgh8b9la2xjhsi1cv3q85dabxgbsqwq4m0i";};
 chemformula-61719={run="0q0vrz2agxw3g7cy5clya5hfsdv8s8qf18szhway3inzg5mfr895";doc="0h1nbyhj463zxj4d15cx88h9pwb2wxpq3r9dsbzdi63fb1mnr4bz";};
+chemformula-ru-70357={run="05b8rv1prv5fmwp0hssbr127vgxm02vm5d7s2x61yq0bl018x9jq";doc="1ia37z188y0i8dnah2fzg5pzgwd1an16zzmdfjaq4d1kf7qbsjjv";};
 chemgreek-53437={run="0di3w4yqnjs49im28g2a2qk31d6cqhrbwpq1jcxykk8am7g2sn1c";doc="065mwb7ah9h4qwqp36n0sdlkjv435bwrljz3yzsgym7a4xqvhfwh";};
 chemmacros-62655={run="1phw4kgp7h5mcrr66vb4kazzi3kw6abmxqhybn3amd4ishgbzd8q";doc="1rz1a7nc2c0cf78axch98zsaxah84hzr7h8rpvz3zz1vfa4bmk5s";};
 chemnum-57490={run="05z6i3cva4cq45z280ls3y5hrqk9m3a1v5yq51rdj1ilk3yh1a4g";doc="0g0q6a845xgpfwkhi31dg6w2rrza8cgxj925rm5m6mg026rd7v03";};
@@ -677,6 +681,7 @@ chhaya-61719={run="13x83hzrqriwcsc1q1yl93jpmgy83fq44jq890q2vfqjl22afmbm";doc="03
 chicago-15878={run="0mwrphf2g7v5yc0qij76dkzalgm3fhcm8zs7akgaypyk98cvxw8k";};
 chicago-annote-15878={run="1fz95s0d48qb1pzmwy7cdnccvadwsqj3pyvx02bkip5l0mg54kgg";doc="1lwrlb5axxqzrj1azyw6bsy9f3lq2n5acwnzmx8z7aw5sj19ls07";};
 chicagoa-52567={run="1za4fqlpirbr3qs894abnlwmrhsqbahniyyimy1dxal0cp61cfil";};
+chicagolinks-70566={run="1c7jy4z231rz2b2p76kp3v127vxdkv110ah06cn59mcwyjx8ncad";doc="0za32nk2wgj3x2vyx762wkq5yscbbjydi6iwdmx2gqybpcr10b7b";};
 chickenize-57325={run="08qxlyxghdzsbrqk9zhj6wr2ffbzd3nq7299z3q7s39z9azrr1z7";doc="1k4pqd8paq4zqygws1ihpsklxrmsxlqvi3y60zvaghq0r3iiqqqs";source="1j4sgh23sai4qzhpxibz2zl4a82nfiq7asgcz42ab5qdlz5vnh8n";};
 chifoot-57312={run="05p6x3l0vpzgxqw4pkl5b8hhkfg4jqv83435z8db140gsk2sz2p0";doc="02x1z9dbnzvbvwfyqk8axkqhzchd1dfjdqsf4xkajxvjc13dhcwy";};
 childdoc-49543={run="0vvf825w9081qcibwgyjdm57rs6083axqnr3lz9g8hd5s1h26s78";doc="0hh51g80vlr0malbfqbfb0m5nln84bvnqa2d847khncxh0azlr2f";source="1gaisc49xfpk37nrnm33wazihv61b61yhi40wwyblmhvwimmx6qy";};
@@ -688,7 +693,7 @@ chklref-52649={run="1045jsyhp39js54xmyr1wxh7qp3z5hzasyqi33nvrc4g7rb9126j";doc="0
 chktex-64797={run="0ij96wg5j3grphp71f3casa8nlkfia7hz34njvi007pzy00kgvr8";doc="0ln3in6f2j0bbk1n2lha7s6mv31cqjchbg1ck0cq10aabhvx9fz9";};
 chletter-20060={run="01gvs00kjr313a09y65hif15vqvxidi6ri11ypsbnsc0man6dhwd";doc="0mc8nlph24bh90l4x5bfc9dyldd4jjn46y08xgf194482dz2q8gy";source="03s40qmlbnlslcv8na5vwz67fad1chagal1pjq6lk0glhn5211dq";};
 chngcntr-47577={run="1a61sdmfbbryqd2gj87bm4qsva0xjmf9mkxhxnjixpqmr4gixq8r";doc="1rrkyvwbgfxxrnsdjybjqxqg15xyzr4s7qydx1ky2k7d2yxhiy41";};
-chordbars-49569={run="0n7ycv6wkkd4nr7d6w55375c0ym1pinqjyxx92dwllkmi5w2wr1w";doc="1hg3kzyyw3ra6qqf9fh2rvv5rn2jaglzjvf10hwkv84a21hlfvq9";};
+chordbars-70402={run="1l8m2yxqrscsnwp6cgny978l4qz4gg08bicfs386rgsfyz43qhcv";doc="1y0zr4hxcqbdm1r6yrsnkx2gsbcjagacpp119gg98h9y80y5ipp5";};
 chordbox-51000={run="09sghgyq6mv3w0m1vlcf82vjbdkb00gpiqr6iwlimpqjrv09bp3l";doc="1fykwcz8d0ja7f5px60qf7pfzfcw447mrfpbq8awymr1ilwgmz05";};
 chronology-67973={run="0jbczd5y58a6bjlk812ncb1ckcsq1d7j8ghmivx4pr5pfcx5lsqk";doc="0g5r3by58srdydm0gps4ybsmihayir3qf2lra569ywgxy06hqpn4";};
 chronosys-26700={run="0ii3r31dii1252bg0xfh4818az1snrzfx7h4ibr6rd5q3a83yisx";doc="1c120hcadb7xpkspmixhfrdlcmhl79jrf1wc0vsjqbq3wxjq1p55";};
@@ -701,9 +706,9 @@ circ-62977={run="1m6siikjprch991sqbchbrmhvh2knjh3895w48wjp9par050cbgr";doc="1zmy
 circledsteps-67889={run="0ybaz7hl9v8g0kx8v7j8llgxvvhaj40afk5fi9733iv8m0w3mz47";doc="03426fkcxcjszpm852qv1y4kb581gdkk109cyfy7bjyx8ihrxq0g";};
 circledtext-63166={run="0c4gas41ddivlam1hsfzxlyqzicclfd91arpa0s8kinlnz27bnq5";doc="0ia4m8ss2idvzhgp88cbaybrzld0cg5gijl7nzd9fc5xsmybdjsi";};
 circuit-macros-69263={run="07cbpxyawy44ds1vy6kpp9cxgv2mlh78i1wakzw30q0bj4rksw7b";doc="183785rmygpffw0gb7mddjvswy3dbgp5yimd5ckxn193429il7p3";};
-circuitikz-69077={run="0hvm3zv86839bl98zcpakgx86za8ij46iayr7ajlr7dxncfyisk1";doc="1mxgja72j4fc0a6w7g9317asbgfj67l98fxfv1jz3a02cahyw1z8";};
+circuitikz-69757={run="0k28z89mdl40q9q4x07p9m9w744yfbc3ylpj5khbz7w9l8s232p5";doc="03fsxa3q22mhwzdz5sh06l5glhvfql9304c9pm7kzwah6xryj9r4";};
 circularglyphs-68476={run="0d8hr1lns0973y61qmmz1hg9pc99j3w4x3iaqi0f0jlyzxc5j1m8";doc="12s7fkjlbbiica7svrha74zh3va390ay87bajjs0lgx6smqfx85n";};
-citation-style-language-68454={run="0kgq9yrwrzj5kv91wsiq050rx78a8q5879bq8lcskzv1wqkhi18l";doc="0s0c46516ljx0csllvvw84vxipwnhssyvkzyrrkiwzmxka9pw3zf";};
+citation-style-language-70583={run="0baaznwvbml9ymvibfdmzwcyaf0rjkfa5zp0nyr7fr9zc7gvdig7";doc="1lpjflagpgbilcljcwwnbkq0xw56vjblnnlznsaprdiqivlfqhbm";};
 cite-36428={run="07nw7axvgir19ayi3zy0b2sp8bb9pq1nl36x0wv3nrqjilvgrwr5";doc="0pg5fc41iwqc1y9m9b47nh48fqp5dpnjbx14ny7ch9irxblg5d31";};
 citeall-45975={run="05nb6pywcrhqi1c9xfzkv46j2fq9y1lqmqawi75v3z56h2v6c136";doc="1p54cr0khq72z396r3vl0p9qqn2k82pmx4pjaszlzhni5v54hbdr";};
 citeref-47407={run="05bxlkylmilyzvbl99nsw16saqjsqb4bcaa68qkz8m59wz1ji4rj";doc="064c9zg2rhnym0wy2kxj0617mwb3mxpc1rr13lqpwb1f1qhghm6f";};
@@ -711,7 +716,7 @@ cje-68656={run="0v0pya3nyj3phrgy0vrh9psbgawp823li0gvhw84pp9jg0lss6vc";doc="0w5lr
 cjhebrew-43444={run="0my3jp6pi5lbbhn24jn07gx95laq2p7fqk88pwic7wwyji097vxw";doc="09ldma056ipsamrd558z24k63p187ziw2bh8qgy4na20pp22wj0g";};
 cjk-60865={run="0qdvr0sq8v0vi1vy8aybhrk7fnvlyxz9x9m63npa3nfcffypdv0n";doc="0liy56875383hjdada5bc1ni6w6ikmzkf5k8qg91l0hbkxxnqfiz";source="02bnfl8hydbb8wn2d54nrd6v4p9yrr4f6hkinyil5jnfkq9mryyc";};
 cjk-gs-integrate-59705={run="0w396gn4s8jlaz95cc3dzh9xsjiywsxjf87qwaniyaihssssl4pn";doc="0a4m7r52czkxp7j2zd389f5illw18dngdj3rkd8b9qlp9c4bq907";source="1h788aq405c44alpj85lyhmlnvdslc21n6h89vx5dggdfypbq18r";};
-cjk-ko-67252={run="0kzah0dkaqrm5l9n4792sgmiwv5l42518q8hsxcq4big90va6j8c";doc="1pgz1x55knbhf5xqajcjqfkj1a0bfl1v4dvvgdlfac7s0z46pxwk";};
+cjk-ko-70332={run="15rl516bdcr5b60564f5sz3ab77hvx7yb1m56fkz5ap17j02d2ra";doc="03kirb8bdh693r6r421psa580an6hwdmf8lkvascgf2iwd6rayn9";};
 cjkpunct-41119={run="0wvqmf60gjm5m7fcc2qqz14lfzxcrqci3lrla96hxkqnqraiyb84";doc="1ja16xaqfg5158155flfvayr39k7grij13r1r89g59va53mpsgrk";source="1pn85n7n4fp2p5pq3w66kb5zlnjk1bdz7fz4xsa6z31d5216j39b";};
 cjkutils-60833={run="0wl33vh7pcrbyvxy6bfcjfv0xnawp4gb76cmq2304n9mp2w8dg2h";doc="1kkb1lkni0d7mb5hcnwkpwbyz7y9w5iy0z6rgm38lnkkm2wjhf7b";};
 cjs-rcs-article-69006={run="0lg0d2igpd1dbm2cd9irrb5702mvpscqf12bmxn68y778wym6gnr";doc="1vvm9nzrw9gidvzg1ab7riyxs98nxwm50kd0ih2zls8q6xxzy6bf";source="06wqrj29gf376mxpknzb6j7aqnnx9b9gacdq1bgd462spz7p8za0";};
@@ -723,7 +728,8 @@ cleanthesis-51472={run="0wsib3c130m19r4z3ghipvgqvmfhi1cx86670ad3ama3rdmc3zpn";do
 clearsans-64400={run="0wd2lhl02svzxl099zfflqk94nhs84qb3b7wzb8adh2b8z9489c3";doc="1nrlrx6chgk1ysxcpvd1hb1qpagl3n7x9h0gzfjf0431bc3fxc83";};
 clefval-55985={run="1wdxl93z0svgg6h7vdhzqp74clcldxqh95yimqb190cbm6v5ll05";doc="1d1pw87hszspsfrl5c14q3c2iy1fkbh77dzldhajx71iqjfza634";source="1x7dvg6q0hy6pg05qpi2qaxw7y7a2dcfa4khddvbfcngp1dirrzi";};
 cleveref-61719={run="1d4qp3jl9mgv4afgdgcns5rr7agn5smiwqkmrasqchj4hqzwxhwd";doc="10wy2zndm51fy3d80cqnwsjxyczqjjffx61ir6ky3nkmiikiyypn";source="1qyyvn226dj4yq25cf5f7yzc3gx9qmxmnlnjijydgmmwam71s3xl";};
-cleveref-usedon-66915={run="0j2i293c13knmpv82g2b85a1y9003dxvizk073617qf312jb8bpa";doc="0kprww9mxfr45y311zky7gfhxvg5lrkxfg0mdkfgway0j2ljyw9x";source="093ydvc1mzkz0dds9fl107bj5mghdfjwb9kcfx8hw9ss9yg6bv9y";};
+cleveref-forward-70181={run="1wphc3dm1kbn9fw5svsxggplg9bf22qfjcf7k08r39fwk6s50pfk";doc="1548hwvsbwyhb9sx2xj4kqali3sfb6imr5c9dp9n4lvw8p395ksy";};
+cleveref-usedon-70496={run="0j2i293c13knmpv82g2b85a1y9003dxvizk073617qf312jb8bpa";doc="0kprww9mxfr45y311zky7gfhxvg5lrkxfg0mdkfgway0j2ljyw9x";source="093ydvc1mzkz0dds9fl107bj5mghdfjwb9kcfx8hw9ss9yg6bv9y";};
 clicks-64602={run="15v0yjrsnf4hqvmriffdq7x24cxk9l54a5s967nl4pqn1iavsqd7";doc="1givgqvm29fa1kvj556hfda3z1hhfzba2b7jfj46f8zsifi17s3q";source="18dpkhvhc2i7m2r5q0sp5m0zhzn1706zlknybcv3zxsnpcs1rar9";};
 clipboard-47747={run="1i9facsdigll3rzl8xv1i85cqyvlc54xhia69cv5cv0gly00p1dl";doc="1b6wvadihwglj0653bn8fnnq18whx2hymigvyknw00fyn3xjgvgk";};
 clistmap-61811={run="0xl0310x3wrk9lhwhbqnzi3gsvmbvk5smd4wq50wj691vmag9ivh";doc="116n1w0zfc6ad3nnq2wvjibpl4ywcfbgffax43vml5aixkpdlcq7";source="1cr6hbvln8mvrs6g8831153l62b4h1k5731s2d0xdm46wwmq4m3q";};
@@ -756,15 +762,15 @@ cmsd-18787={run="0zykh9s50cgsxsv2958qyvwck5lw9s2a6fdx7yb14b95wkryqssd";doc="1mp1
 cmsrb-54706={run="077f185vcrklhnchlw694113fpgaxy8paxms37rp2br8mbhczy00";doc="13nd3vhxim71kcl2n02fcrm5vwakkrn0f5nfw8irl9i9r9bgy6ll";};
 cmtiup-39728={run="16wg8nw15f1pfcrm49xnna6finbvl0jr0wyapqg9i2jh39c1gizw";doc="0rr69cqg5pblx5h8xyw1zkap1fj3pmdznycplxx0kd4wqzbdd47z";};
 cmupint-54735={run="0y3pf2mbhxhn67skzy89850fhn17xr0b0ghcxn1ayq19qr66yrj7";doc="0v180y0j3md4iyx54fvjr7g00mavmkw6b99bsm07nncfq0anajms";};
-cnbwp-32550={run="1xn9s2scd7x714c178p3p8bmv5bjdqzpbyz75nmn50d8irjg1zk6";doc="0cs6jp079acnjj0292xba0gjkykva6grviwnm36vhxy93732cls8";};
+cnbwp-69931={run="02anv8g5zcsvxi3yqf5jl8061awszqh3gv7br7gjg4c9c8brj8y3";doc="035zm4hk84vn98fgxji8vrmpq7qih5771j6l54ij7ff4gxdal0nq";};
 cnltx-55265={run="09czgnx6jqn856sr0hg5j9azaxc4i22yp1dz95nn4s331khl3z2a";doc="1ly2cl3srazzynhikk6myzsfhffz3k63ddw2x9sbnvw6j7syd545";};
 cns-45677={run="1b9hs7svh6zm22vw5zv6nqmdnmw453xv15gl5bgm4n3f1pz757wv";doc="0zdjgg2njgcf35jvbhkfgiv3b9cccf7ds8d50ga3v1ia9i4h9xq3";};
 cntformats-34668={run="0mx4rgzk4av74s906andw0h9ga5zl2c3ip0vi4q9349yj643k2q1";doc="0015ynn7mw1y8v14qckbqkvb1fn5xqaz7rcs6gid1n19f1qsbh6f";};
 cntperchap-37572={run="0g7211nljimm9a5fvry89ch4nf49xhad9ka7prdmlpj87h9ygas4";doc="1fmq2r8ssvp99ykil3aak8w301qvh4nldsph389m7qar2pviy1sk";};
-cochineal-68904={run="1b93yb0p4mzazs1m68bmv89ynlxikji27p91sxaf1d4r732nfrlj";doc="1qzzc9l27ymsyws1im8siada65xw411rbvkqaxps7qr7zwbrxn4k";};
+cochineal-70537={run="09bhgl11ps6zw62y0jvh2pfddxcgdc92scv9irpxf2nvjlyy3wg4";doc="1lg1z4nlw3w5hw1ivhbbk44qg42m8s9470d64pgzgbgfsalyx4fp";};
 codeanatomy-65648={run="0pi4w20k4qcm3sbzpd2dsdpq6r0nblgjm2s3m2gclpmsybzmflp2";doc="1z9w6llgjnlmiwkz6ghv1cf2ilrfvj0r1k2c6kilsz4jcc457y3z";source="1vag4qaphfw0xrdl7b082iwj4z89x77sh62y05xs0f2bib9qlcn7";};
 codebox-61771={run="0s0145rdpqbbagc2klx2w5h6mlx4ns0qlllws31qbvy6byh65ngk";doc="1pj5qnzfa7725v6cixkznrs7yybc2v0ik9q2pxa4d25rpfxap524";};
-codedescribe-69343={run="0swllicbxmaswi1v5ks25rd8bv8isibbkkzsi78ibcbc52rg2vqm";doc="0adbg2kfhyd2l19dhbab0fa49spgqk44bga9wgnn8n8g7da6zvmx";};
+codedescribe-69944={run="06pvhd7v4p58hdi9x0ipmwjy84x70c65phvcbayfr0d5n0hrjvi9";doc="1ybanfz0zrbflrwdpzrpxk61g2j4zwimfvjlkkh2xrjvsmb95x6r";};
 codedoc-17630={run="1zz70vp8ssblnacrqdsq9nwvf1lw69mlk9d94cfjc818szcgi9v6";doc="1f3i3vw1cmdvgp05xckr748kzbairhvdpfvr844y7wnmxzr4rfzg";};
 codehigh-65787={run="0nls47d5md0b46xi1nxydzwf79xrqh6ijj06h5n5mb4sw7w5qylp";doc="08d7vyn1s4gqhnbz7f935n96ay9hk7k41w8msg8j9s937qh7fb64";};
 codepage-51502={run="0kxf5zr3mhn5pd8pzmzslgnngk8gms27ax6cqn1z0n35zvh0p17h";doc="1sd01q8lzrzgk9v1dyhf4m7a4fspjll3w8wwkbzp7gc693xg3lm6";source="0b38lcswx2x1jl6ydmvs6yr1y0kiv6gdicnbrx5qs8xhwd93bcag";};
@@ -783,12 +789,12 @@ coloredbelts-68747={run="1y4ds4n6b6avqaqbnj5yh369bnp1f0w4mhnzkjvibhipis7n11sg";d
 colorframed-64551={run="1kys1kcq1j3c4d8mv22fgdw5l2c9ar3il8cc65w0lx4avbldw28r";doc="1xg0gbyh0ay38yk00in78q7mysnmlr4maxzv5lw3s88l0adykr8h";};
 colorinfo-15878={run="0ip7py03xrsrn40cgkl4dnj3q9g0f9fbw71c9rsg9j7vl82fdn46";doc="1185m34382n9rk6w81ppb414vl77kikkhwvn78aahlyli4il51l8";};
 coloring-41042={run="1ld6gknb8a59pkz50wlil5p11mnv6ss0zsjbajbw63dg0zlwaglb";doc="18y8apbkh7yqzxrzpraqhd76k93xnvgq5rana8lq4xh5z3f7skjq";};
-colorist-68440={run="0wk7gllr4qmvmb3fsf9basi922ss6wvbnx44yxs0wladnzkyfdhg";doc="1kpv619xbwd23lm6i4dy90plnn6yh288alyz771qfzhmj1a7bvy8";};
+colorist-70101={run="1j4fpnxpi081ar0732dqgg2lyn7dic1lfs7nxhfg1xbhkxnv2ms4";doc="1zrx4vlp4w4k58rrnpvi7m4l0llwmml844yvj26wzap7l7zj2pn5";};
 colorprofiles-49086={run="05nf7y425f8ric57c3afq7ymc7ndxcdahbx9n32jnaz9j3qq2ypl";doc="152vrbm5km4ymj5h41x8cjyypj06g4xq3vyvmgakai9qz270dvyz";};
 colorsep-13293={run="0nf72pf2bjn8pcps45sn5dcjf1dkrww9wlpp1xbzl1h9i68p3h3h";};
 colorspace-50585={run="17pahq2wh9vqwpkaqkzc3ypcz90i9qpmw7867qz4k8a87sp7wgji";doc="0g766c50w7xpfvqpp6lxjc6lm2cyr8yl28g7n357j1d1lxgnv0x7";};
 colortab-22155={run="0hiq8wgqiwxnw1gsrymshkldspdnizcci56ihn22h0hcwz76hgzv";doc="1cj84k7cl6cww25yy2lynjrbicn0qy4y09rh6dx2zq19972fggi3";};
-colortbl-64015={run="1zcxbq0sjmlixjg5vpp8s21acfnxwmip6xsr127jqdhl27mfn1f6";doc="0myxh9h2riwnbg8n1r5690w7rpvfry5n7brrnarpwrhc42hykcz5";source="1hwks6bpk5x9z4vqj63fwg2lzj7h8mgy3kk6601vynv5ck0af1gn";};
+colortbl-70034={run="1dv46n3r700khx38d9xxx0i4fj07zgvf5lkhr6jfihw9sjxda4jy";doc="1gmbqf9mignz5qprv94qh9rn4ywqx0kpwi1aagqp4h1wdvqr0h7d";source="01w0n3hl5m7gymcvf0w5ph2vla2k9b8z7y9k9xfnchc1xn4kid4k";};
 colorwav-67012={run="1dlh3ipf98nq5m34rj7naafnw9hhrbljij721mw57rbhbpcyazgr";doc="05f91rmf1kpdkfl0dgjag5cq5xvcflihfi9xj5y49nh65mq01w99";source="0rxiqp1q49l1dlr2npbb45jygp487zhhzjx850f68bw5vq8wz9j9";};
 colorweb-31490={run="1rz9ay86z5bf8m4j5w5prvvk1nmlaakj3g0qfsrl0cdqk7hwsfsf";doc="0vzcwhbq1a6pczvrv21z0q3y1akfwm45fclf0857c8jvpikkzb1m";source="1z0h3l9gdxsg6lbw7j6nqhafxq8b8smcn4nmq7ywdzryp8b6fbw2";};
 colourchange-21741={run="0y8r7789xaj16cdmsz4q0zyq9l09ihgzzgk4alnggsyx1ny45ybv";doc="0zj9b8xcnjlvadams6a2z3pvnzjci5l10kran8mg79ncvzq386cj";};
@@ -810,32 +816,32 @@ compare-54265={run="0isr7gmskv55cr4f1fa7s478v6fh65q9ijxkmbpxj0448g9817w4";};
 competences-47573={run="0hijar81j2jpwk5j2hrgaxb1fnbk6qh2qb0qbbmhsqrdrfcl6xdl";doc="0ywq9f2a1fb584kpvzwg8b16qc7bpcn3dzsscs6ndqbgcy0zc2yf";source="01dccp2wqdy52kp79n099v9lh1vfambg0b63amq37ac68pwn3qp9";};
 complexity-45322={run="062xi5wlg3axhrzc9a6nj068z7nskb7qwwk2wr0fzvsflqa9cp0i";doc="0yzdyn9j1jk0nsw0l4r06cr4brhz1f3lfxc918zalx6h9wnkxi2b";};
 components-63184={doc="04yg9hq0wcyi1ag9y9m2fnf5h3n4fdykiwljgpw0kyc73bfyhq1m";};
-comprehensive-69282={doc="0f1w8bxqapw3l0nywdd36lj0y10miqvzzwchxs2swgjlyxjzbspj";};
+comprehensive-69619={doc="0cmw36bn6pjb6ajlrg2yz5imkrxihzzdkh56xwdk2abwzaqn09q6";};
 computational-complexity-44847={run="10as8msnqa06dp3hp945m42rgbaqsja8z4sc79x7n77z6qzmznvl";doc="0dq56zzw1xzzpm1rdjkqwhr6v93xiv00c1g2rmlmfj5dnbzng7wq";source="02mapvsz8j1979gy7pmwkdr6wq55v0al71ffl9bi2bl7f5nsz0vc";};
 concepts-29020={run="18vjncdrbp7m7m08dnfmk6sgv79jx83bc4yvvcqb0j9mn9niy1f0";doc="1bq82dgsl6gqnrs88dzg07dn4rmc4y5by8122zqaqpdrpjxhnvax";};
 concmath-17219={run="0m98kyji3v4gg1a30phmn7fwssnnbdvyjxvfpl36lnljnicpg28l";doc="1392wq35zidk71vxybrwjq79p2gf4spcv0qqb07dsgapbhr2g0aw";source="1zn35da4jlplqg7fb5ibzaah2yh1cwjqvzmx45jxg0hnsc7xmlfd";};
 concmath-fonts-17218={run="061kfzds7clbxyq62ilxwcrdkfghi2lx8afik7vi9gg0hysbki7y";doc="1x6wb92k4da01sv8b35p3bly9hj46hh8k9wr22m7lj3rxnndnpcq";};
-concmath-otf-69005={run="1ja0j5i4alkw45z0gyw61vk3hx2lkrhcgfnmy8l2nm4kibif04k8";doc="0ynz1mzciljg3jiz6wpdwda8xrpnimdfpbrf00pm4m786cdz1hnc";};
+concmath-otf-70337={run="0qb0j7rxb0h8ym7iflmdhlnncbjkck2b13h2zwanik593npgjgg6";doc="0sysisasrln5lx9783bp0aa8vq5b3crlr40lpnm4hgvcwrr0007p";};
 concprog-18791={run="08yr8yk9gp35d0nvh54ysgv61s062vj446fyb87n8jipfm49mj2x";doc="197p2bdn1rqmxva56sagvb1z7kc8gwxr9zf612r6g8yb07xg5riq";};
 concrete-57963={run="06m8d6z5z3dpj9i0nvp50g6pn9j0m4n0n1j3w94nml137qghawyg";doc="06z5hh9ksr9jpkfchyh2zp8b827klb4v282ipizrm1dvlv2r1603";};
 conditext-55387={run="0g6clck3v75yvg7gv42w24zv18vi5jcg1q9k663cxldix77lkgbc";doc="1qc7w7xfpxarb82hf66f3i63v7ypdybqwg5g3j8qswj1a39cy1wm";};
 confproc-29349={run="1s4mv0g2x5mfxnkp0i29wa3ncbx9fa05qqf734fjppdzsgic079i";doc="021kbis3c73gnavrjhqa34fsbq5c94lmjym2d4ny2wpk9xagh994";source="0dpghxh9mq2sr7aqgcj15h6b4xh7x5hvdzph6606izpff8ac7h8c";};
 constants-15878={run="11naj0z8ppb6h07r7cff0lcmr8zgc29kp3x7spi60zi6cq2546gk";doc="1wgvq0x1kjgd0bs0024fkh7wis9aw9qryd7y0igrbgdgc722pjnp";source="01skagh044v62vw12kmibgd6y42z5r1glrsvi9y0h76vs52jz7hr";};
 conteq-37868={run="1h7b98qw9hl73gh4zidy59z4rly9afnvmah75jgvh0k1v1hm09df";doc="0kgdggc8gpd1h7kdbh3ala5kz8rs56bgmwgv9wvxsqx4sn19q2fy";source="1y0g7sj696d6qhcw8vrpxr8gwik54slp7lijbxz64ksqbw5xjqv8";};
-context-69131={run="1r8gkrrrq1ps1cp058m1jv8922zsx3hw6c5vsmxpbwckrp5sirwh";doc="1nh2yf7vb800cnnmzic5hmy4w5kxd38y1py1xjg7madphb9zdc60";tlpkg="0vcs8ffry2jpxad68sk0mnc8p0mnxifbimsj227lkn3d5cxkrp9j";};
+context-69665={run="1r8gkrrrq1ps1cp058m1jv8922zsx3hw6c5vsmxpbwckrp5sirwh";doc="1nh2yf7vb800cnnmzic5hmy4w5kxd38y1py1xjg7madphb9zdc60";};
 context-calendar-examples-66947={run="0asc49mn24ql4fk73089viy3s6wff865xk8af7h67ffsb5qjnld8";doc="0wza057wz18yf2zl1j77hddzimwnraw5wg1579ncksywvhnmx3rp";};
 context-collating-marks-68696={run="12vqvbp7ns9r5nc7p7nrlsll3jp3hc4xi9wjyjq8lrmd8ly3v26w";doc="0nawd3x4rl73s4mhpq2wd1sqa8i6k2n0a39sqcaf21zx99mpiqp0";};
 context-cyrillicnumbers-47085={run="1gk4ncbfzilj98s7k7s43k6vb3il511k434aj34fsvqh5x9x4aw2";doc="0f7r9qgfc8h92jprjqa24q4vpz4bqrrns3glhmwh3qmk1f2gyw73";};
 context-filter-62070={run="1vj8kimqsmn9xhkh22pywqbn4sal5gxpxjbcbv8xmxcrby02gsfn";doc="1f6phdqxgvdg9c6f37m654ha6i226d88i81147h9x6sh01i7qd0b";};
 context-gnuplot-47085={run="1pahxhbliz6fsj2va5pgwcs55b3rhsmfnjb9qjxkz3gqzrzdkfdp";doc="0l0qp9c0yvdrf8398wyac98ghrdc86lxgzr5l327gmgnk8572gxn";};
-context-handlecsv-69186={run="17sn4nq1fn3868xwnlg71fqx8cjfq92dsiar091635cl72f4fra7";doc="05svrhaz23sb11pp6kk7lchcykx5b9b9399368k7pyq7a1p4w2sk";};
+context-handlecsv-70074={run="17sn4nq1fn3868xwnlg71fqx8cjfq92dsiar091635cl72f4fra7";doc="1fgi9sg2392syill14msv8hib1k349pcvbldiq1a8g72giqkf5w8";};
 context-legacy-69173={run="0j18agzfhwwzbdnqavphvrp0lpji2bv21qh28kcvzl269mgjgbc2";doc="17wsgg5zfx0s96wm2l9zca060z6p3mj88hcrw07vy44imxv3gyiy";};
 context-letter-60787={run="0bnd56v120h3c235n9v2h6mzvmd6fy1g837gjim5fkkqd7jyzp2q";doc="0l4vgrpha5kx2990kdk4pdfljznlczlji0fxqsxs292yb3yy5a4m";};
 context-mathsets-47085={run="11r30c6lpcvkx7awgm70cb5darl90fvpnf37hj2mb7h69d281hv6";doc="16qckniq5v52m36m05bpnqypfz2jn4430n5x5zazx54j8makv827";};
 context-notes-zh-cn-66725={doc="0pdizaybvxvzh19451x90mj81ql98q91f6cj8mfxwxa0mci1b9p4";};
 context-pocketdiary-66953={run="1pm8zaypfm575ryq0jzpnwf5p9zjg7hzb6lnc636cf16y97a1vkw";doc="1yy38pa4m7bqfb0r1wxj1g3zdmwzgdil35g2lw63ww15y03k7w0j";};
 context-simpleslides-67070={run="0dgmix9w576vxmffbm4digcp00vvdgmdxmxwjzrrkici4rq31w79";doc="17djxi04rhg61fjcmsz4yjp7mnc7g1fbfb9mmkcf7gk8dwzrvigf";};
-context-squares-68545={run="0x0f2f3mwqyxaw49yjkyql8hk2mck2kq2mm842vpl9sgmrgjb8d7";doc="1d8z2l8r29c5yklfjm60bvdm8lchp17w60qr38gjdpx334bshyy7";};
+context-squares-70141={run="0l56p7zf7f9ywb66v6cppnqh4k6zlsvwj37vxcwshwjwl9z3cfmj";doc="1qxcy1qhk77p63h97qad3jvvfcmsgjm6b81cn10aakvl3sniy7g3";};
 context-sudoku-67289={run="0fnzvzpn2d24hdi5g18f1mpaqkyrcf8kvkprqdz1jvlkqld82kd7";doc="0dqzxcljl1mn7qs7hk2pahvc5791m4c911j5dv85fwaladhjv9xb";};
 context-texlive-66924={run="1fg95ihx4wbm38j4rm4p6vdaiib6n7lcf43m444r4nb5flbrbv8q";};
 context-transliterator-61127={run="137wjy0whfbwp95h4grypwxld7kxlx9h6l3bkd5bpfnqhg70j05d";doc="1snnrk0h6pwg83qzsv6mk3n5fmirk6rxjih43rcs290amkx8i49z";};
@@ -845,6 +851,7 @@ context-visualcounter-47085={run="0n20r8315py52ghivwy9kh7g7yj4ixakmkn97phw1fxgz2
 continue-49449={run="0vwz01gmbid6b2aj32qnz1xrlk9h0nicjv9ix1rvqdad20m1i4wa";doc="1mzsj70v9f6srmc8ja62pph9j67p644hl54fx6nyahvr2h9vdik2";source="1q835904qai3r49yi8hrfxkh4bjf6913qs5fd2dv7myp1w93j5ir";};
 contour-18950={run="0xb8a0y3jazrq5gxfnxjl7qkyaqjnmyhjshgngqcsrw2sq4j4li5";doc="03rxkl9vhhqa7gpigar8w2h78qvx4k68chhf0881ws3bm6lg15sy";source="17sfl4npipzgc7jwqx740nny7fnd8bv8k4vav9ds765ky1xcs521";};
 contracard-67201={run="1qvpz8ybjc7yx8zx4kzcpjchvxrb949rqb3905rhl61shpqv22hm";doc="1jg8kgp9wvxksjz9kxyh3qqxhgjmalkpj8y004qvrxna2r2idj50";source="1v6ffg84czajnl6p6a1j8khnfmzssjkhbndz5ajkww64iiw060i4";};
+contract-69759={run="1z0rp9xb9xpxjrdq2ww4ggai4lvfag28s3cmsk1c5w2kb5jqdjc2";doc="1piy96g4vplzqrsvczhm7fp4wmq7wb15l4hplqlgnis3k9a4aj6j";source="1dg8zqbbpdaawwa1dh3vbh1q0qlgid6ib13cbynan4sxf4h8f386";};
 conv-xkv-43558={run="13clac7dhg2p69ccv2yjzdh64yjx02y0fb0imx9lsd0knnb1j3aa";doc="12dln1r2qyadxr4cy3xbwn18s5y8yxgxid22wpb2i42n5qc8j1fy";source="02hz64vbcy7vg363vb86vydaa29g5cgji2mfpn640dgmqq0s91vb";};
 convbkmk-49252={run="1hb4ahbgihnzqmcszxlq67bsiqprrxa9vf25q8yz31j70sg7s18r";doc="1h1iqcc1rjcvwg9p7xg5zq6sj5bi68s2cknsbwr6dbkx25ihwi4i";};
 cooking-15878={run="053wbmf3xrhwjxp77f1myfvz3f474kpk626p8gds939yx50jqzvs";doc="1db5wxixparr81vanwkvg097ll58fqpp3qkh0wz7mbqjkansp6km";source="1gka18njp7ipa0jp1527mhig43hhvz5bcdpvs95c61cvjrmwcdm3";};
@@ -880,16 +887,16 @@ cprotectinside-63833={run="021581zdl2c4j6crp9cnrnvxpwdx0jhhx5ab2ax7016hzsxff8la"
 cqubeamer-54512={run="1r63ahd6m6ll0phqaxc02hnbrf3f6xjdghrhn7wdqxnf8n9k34ff";doc="0rgfjw69is9i06blv1dr2ki6d8lgfwg3w57r3620r7yffj7z9hpy";};
 cquthesis-55643={run="143w42d3xw31dy8wdpqx01r8q9vs2an1ixnyil8n0q0af29j49bs";doc="1b7k2s3ils5s5yb3fdd6h0is494pss7s76awfn3dj6yxiaps5zvn";source="05gypg8zsdpfhp11rk7nii2vdw4rand5lw6ijkm23lbq2b5nwvwj";};
 crbox-29803={run="0ni16ldwni2gyzlivd5ii2fdq15h6np4mv73raa5g76i5rw42sbb";doc="1yk96bajna3ihvyhx482jrwiccbmqdr9852w11x00xkcvvc6azfp";};
-create-theorem-67712={run="05daimn1g2v9i0qxp46nq23m7a9hsrpsqfgx6f3z4c6jbcwnmqj7";doc="0bsff7sa7d12a7lbv3aqhkj6mia3gln8zvpc291d9kvb3fnnzy9p";};
+create-theorem-70180={run="0lrky9yb0y301w5m2qc67x8adrkd6p9l5wwjamwdslb59cy8qn05";doc="0p3xkfxnvmn4l6fwp1nmzix5vvqjwbskpdncd19s1grymhyxay2x";};
 creationboites-68087={run="1mmj4xavpaqrim5w3cqs0nkrfvg23578nas2ndnfvy3zgjywwxxw";doc="0xsr0nvs95awhdjbhfd9baj7cchf3fx83f4cv5r6sb0l4lcwg14p";};
-crefthe-68813={run="044lg08mg5d91l25la181x4l449mgx8cv47k4nww9yivhzqv6nlh";doc="1i891qa4lyhzhpnsfz1hswn3fh7i1045qiysynnkcbfai45f6y1v";};
+crefthe-70165={run="1kwl01gnfr8xwk2zra14faqq4in4wijc03g5sdvgh2c7a9j3zm00";doc="02ddnb2399bps1qm8m63laixbrx6jmjnw7x2ivnjwlm2jg7zvhj1";};
 crimson-64559={run="1k6ff9fb5isv2mfm7zvnqziw1rlbs8qmqrlbixq33nrab24kb1zi";doc="1fmfghyxbihw6ggf4x2scx2g7464bwqy0yql38m4r0vmmjmzi34s";};
 crimsonpro-64565={run="16jz8i749gk7s87h2b78nz6cclmgvfn35kh3869rsf299y4dbkx2";doc="1y8qngb1v6paqr643kh8sdipnp57lkbqwbk62r8nrxps2cvw06g0";};
 crop-55424={run="1hnf65q6mg5fq75l4g81zvp4qqdb092zb41m6nl3zw2cvp8gal23";doc="1w6ql3bnghj633ar1zwbv580py4f1fmdm4vk7pa3q7vpnrwrgh5n";source="15fxivp8d1xww6j5nbfkmsb0b2c2ldmkdy3ikw3m6jjk269nwy4h";};
 crossrefenum-66014={run="04zx8gwgzc76fsq6kmqy08gak2fqjl5h7d0d80lr5yvmq6aj5a4f";doc="1lsymlry86jnzjifjsnwz0swmksbv9hfdvjhy2i476i2ayvpdv7k";};
 crossreference-15878={run="0xc8d3g8j86dzpfxzfcildiyk8zi2apc9af88v2zg6zjra6vra1x";doc="1iahzjwns9zapa5y7z6yy2wjdcy6qiqrqvp9q9v4ky2zgsf7n5pi";source="0yajk2dxnsfy74r6a50zs4lc064aha0lzfqp26gpgnsx2h0bvpix";};
 crossreftools-55879={run="0pdhi9yij4n6bwcwbk077sdvwi1v8ww51g2r9ssfnmvmxs4zjw27";doc="0q80k648b967q9gcy7c3lb8ywk257zbsw04kc2gazlc61scviy49";};
-crossrefware-64754={run="1zhh89bwj8cc38p08878mmp8kl0pyr4121nhqssva9jixjckbbs7";doc="146zijsczba11hbks8j0dxygv998hhjqmcchq3ckgc08zrwvd9di";};
+crossrefware-69700={run="1gjqw69rlyk85qi3hj9gdd94gx7vfb307i4bjkp1p3mqlx17vkas";doc="0iq9cjlv29990vjwgravv7bw28fxs5sz0krpa3ffwh2hmk76yh63";};
 crossword-64375={run="1jx01w062yn2bpnpmq29rwgxll00x05rb2i0prz7gnhfv7g4iwj6";doc="012h0rf49rlx7kjjv5i86jz5v36ln437ifmzv0hh1ww6lg60phpz";source="02sbn4clwrccqkr41azpzng7ck4q74lhbqzcd75zdv59gll9z3r9";};
 crosswrd-16896={run="1c85733q3x56s1fvag4kw39r6lnx4hr1wmhsrjs0jnyf5j6lf38w";doc="1abqbdfk7c7cx1ij56q8dhz87bc8ppb3hkfmc2z5r6zv94l34n2i";source="16didvmnjfbd103skc6i9qbim4kav9vw76954yfqijz1q74c880s";};
 crumbs-64602={run="0cka3j6aaxbgxvv3z7010myr7kdiva7jv7m1l4b7svq6j4md38vi";doc="0rxkzcmgvbm4mk26fwiw1wzng5bkf7byh43zdp4dh0mx82zn8qq6";source="0z88phhr4a0gdd3i4b5mvhcfxc1cy5sqpx7nvf1plmz34amiwcz4";};
@@ -906,7 +913,7 @@ css-colors-54512={run="1q3vmcppk86v2y72g47ifp129fj4rgdq3rvzgkzdzwhs1q06ipfr";doc
 cstex-64149={doc="1vsbq9a31ymvrj0bx48n93chyqmma3q7b49k7dmhb0hkic6h73aj";};
 cstypo-41986={run="0lfg2c985h1xlnx1fa3kx1jjrhw7kmgwvalqh5127w20r0lrh8c5";doc="18yx6l49qk1ayaz13qqw72r8l8z348d20yqdm305nalhqyksv1bb";};
 csvmerge-51857={run="0fyrqx85mklws5zny7gmmyscnsivjfvwmgwi52k3jk2c97nvsy8z";doc="18pmc5h44jmlh583cg0hjr24k2pj369l6ya4hqm9kwka0bhg29nm";source="0mggp5xankhif93firc5g01c6b160bkwqwbhc04wcm4ndlamvip1";};
-csvsimple-68566={run="0sq37wdvwd9m3c53wqai4vx80r6r3qn31s5r51gv1k8d3q67z49h";doc="100lbrliv5jg52xkgn18l53yxv2rcfsjj16qaj1hlc6paxwq5xcr";};
+csvsimple-69494={run="0yc6lr52yhrha4f70g6g4dmx0gb9hb6xrnj971xms29rbs2azpdg";doc="0l6k9r646qs87ps0fd6hpy3xj4kv1442gmm50b1sqcg5w1hm0sbx";};
 ctable-38672={run="1xqhq2ww64h8vpqqzg3zbhh0z7xpjbcqcvxxm4a6kyasyhc9iyr2";doc="1nfdrjjb3j1n8w3x4v92v9l1k0smnygwj47ry717qgf2sq7f2b8n";source="0smcvvlq8n9ahx0z1kmf37p8zi5bjsh5q4x5mk7npay96s87z9s8";};
 ctablestack-38514={run="0b739h1ndkisr49d8y4q0vnbl9j3diqwl9r1ah8wk2za1ww2mi54";doc="0qmshnvbyfjhi8bb989hbffwn3447r91jp46z1yhhmcbjpr7clk9";source="0133xxb7470lyfssi1kp81yr1zsz4d8ai3qjy72wki0p7ijkypw9";};
 ctan-o-mat-51578={run="1iya9r04n18i8jdzqkn2i1rxfxxmpzcpga03rp0i6ykjj65v4q4r";doc="1j053gvvcznrk0fhg21ddyx1b1m1xj743b3w8z01lpjihihzq0l8";};
@@ -936,7 +943,7 @@ cutwin-60901={run="0camjay52m2fbg4df7rrswfn30an4s40bvyvssdcmhmqlbvsh46f";doc="16
 cv-15878={run="1w9gx9mhg9wp47rhb6kf1w03mypydp01rxmypv6yvcrk551b5jm0";doc="1b16zaypfphbn9x2fwh2v0i212jx3pn84vj513lkxzzfh0if78iz";};
 cv4tw-34577={run="0nli9s73cns9x44vr2npb7zgfinnywgwajlr1k2hf9jldzm09dm0";doc="1b9zd0ky6h8mlcigfwj49c4chsznvbycsphs9lkpdhxv8mx9wgyq";};
 cvss-65169={run="1ja7j01vbzm16ms6hj0013q9f4wymzmn5fwdmly2mipgnfir79dg";doc="0a664wp1c11sdyhjgz5l561ngsnws5bgr78smswf2akj89637lnw";source="0ig8igf03vsi6mqb9a6cikqqipm7ja3ipm30c1gfinqvkmdsz0jh";};
-cweb-68702={run="14gn6rm4a01y6zl8qq23q46xaj50jj2ybpff14xg8pvir89b7g9r";doc="1bqzd57l1kw91dwl2l85760578jqpynicx2qly92a8xp92w5y9vm";};
+cweb-69586={run="1frjx2vsa7sdz6kvczkq6wkpvq8i59l66i3s8w2b3ikp76cmqnkx";doc="1bqzd57l1kw91dwl2l85760578jqpynicx2qly92a8xp92w5y9vm";};
 cweb-latex-28878={run="0cd2rgn25s02p2ga3509pnbc70iad936qznr2yl5q6wnlvd78lbr";doc="0vc5f0h9mq7p9040ksql4clcb9y1dxq7s1a4gzgpsjyla05ps3qd";};
 cweb-old-49271={run="0vx235zpflqpnrfa9kqq7wmc1rylg5bw1r26knfzvh3w1swbp4ai";};
 cyber-46776={run="0vlx0r57ay6jpybs6wlc1w1qpbd62cjq3snaqplaj6dkah98kcbq";doc="007g12qa9v04z3b11cdrd9z7pc7iba0aa2g7z460i0hi2fg4gv3l";source="1kivc83wjpm2rf2myk4079f1l8pyw1pm9a2j0iqbwshic2qfm86q";};
@@ -1015,7 +1022,7 @@ decision-table-60673={run="0v1654g69lsvcvky0yh977kz7s1b5bjihh6bfc4lqrzbpg92qijn"
 decorule-55230={run="0r5pxcpx29l8x1bw4hj4xp66zgkjgm0qn2ryvxy1d30dyjgp34zb";doc="0a3qvnknhcx0jx8x9gk7bh4sbnzv1mnqvdr8l03nzjcbmysvc3hy";source="1lj47s4k44pjnr0n06xdcb37625hkjclrsj4ccmkgcr61d85vkwk";};
 defoldfonts-68234={run="00h2hk4vhqn54sczns7nlgsiymccwikdpl702y9m9hvhdw2misak";doc="1xl8nw3p9jhb530m7sxkrsg3qpd497q4678al524b3gz85ps1m0w";source="0ssc58p013kjdh0p56jhw7cx734ngnkm9mvf1cslcar5pyh6s88r";};
 dehyph-48599={run="0fkqlsknrlxk8zazcqy4q3nisxr3a4x21aiwqhz8s237rdf3w39g";};
-dehyph-exptl-66390={run="1lk9jl0h46xi2bg724j8jg6i54jqdch7ncz1a3yk6xwfpjgmj9ig";doc="160z9xiqdi9x3wmmipnlarrhlj8r6885541vl23hlj61xd17y9xz";};
+dehyph-exptl-70496={run="1lk9jl0h46xi2bg724j8jg6i54jqdch7ncz1a3yk6xwfpjgmj9ig";doc="160z9xiqdi9x3wmmipnlarrhlj8r6885541vl23hlj61xd17y9xz";};
 dejavu-31771={run="1pxcrv98xgy9hkqhclyp0q5dgpgc80bvjzs378f0dqzc1037lghn";doc="1f42z94n6dpdq481n5wmsx5hx000klmbklghz77x8pc9shgvlka8";};
 dejavu-otf-45991={run="06cdqjqj0vcxrr2nlqs2qszssiibzr0pbimhvqjpqfdv2hhdxd0d";doc="0x9j42zm6dagn4wv8hz34x7cgybi6bb86whxvmmwx5slsbb6yqfy";};
 delim-23974={run="0k5h5wk4fn4qzhjcgraqjzf6ggq7rvr8d4c1j2vwxi37fa83642b";doc="167hklrsm9dh68nvl6inqck07zfg8w4gr9p5c2n8i6y6v9xlj3q5";source="1xh63b78kxngcc3qgzmcfrf4pw2saipw054pzq47vp2ajppp1sq3";};
@@ -1023,8 +1030,8 @@ delimseasy-39589={run="013r0cgz7ivrjfhmpcf5rdfl2573q35qmw0bhprnamij2jpvggzr";doc
 delimset-49544={run="126ax3z4c36z83479zk56jcvdj5r95y182rv42wkm4lm6sy8v24j";doc="1mb85h29fp7nxrkfylfg59jbvjva7lmr7vvgd8nz7k09w1gf4x0b";source="00hp5f5pfad36n4lkmra8mc2n0ynnq9ynnspqfb9378cx3m81cxq";};
 delimtxt-16549={run="0s2bbxhbfvq0jm4i90sh6krcik8yk2nl0c39lzr1nrakal0k5lkh";doc="1wswrw94n5l1azs2aczv6vf56ksbagniry4rwq9b16bmvdy7slyz";source="0sfwmd0mj359qkchqgm8zc80ayqp0p8ppdgfn3cmayhf2pml6gyj";};
 democodetools-64314={run="0ih11kxlvnskrdbvxrakbljh1n08n1mb6hbmf08475557bp0nchg";doc="0kcn368yzx0jf04srh2lzbxj9n76ph0idfjcqs2am3cjp2mjis17";};
-denisbdoc-66137={run="0sl953nrm7iy4jxadmwhq2x6hglspyzxwzi7wcaqjnb3vqgzb726";doc="1p5b5xpiqhla4pmx0kw3xl0qwy419qscr8q3z4l1id4sqj7vy6b6";source="0idsm5fbq3k93jphv569yw7cgpckzn1npk1wczvji0zvd937pih2";};
-derivative-68787={run="0qqzrhm1x2n5xv633dmd3pw8p9i5a7fmnqp26wcwhy08dipmq441";doc="1ld2kpn6l7dy73wws4pw0a75cwjkpl402bddxghz1svxmpfnnn4x";};
+denisbdoc-70611={run="04y9dwkap94nyfn4cfcpm9jk2y0891dg7jg21c0ca9b3kckrcgjg";doc="11m50x8lc0694wjx06p9raj871gr9hmssblm3gnx3phl0vfrmyd7";source="0gipwjskg2p78r2z4j839yxfar227mvv294bjnl0j16w33d8k4cy";};
+derivative-69746={run="0n29fjh59wkpigk1759b0m231zcmli6rcsplj0zhhaf4jwxk2apj";doc="09mv84hz56l3ihccl5cln8avw4137c8kwykh9s0j3y1r19iw7x1v";};
 detex-66186={doc="08d017wn7a67pmp9b5yhnfg1x2q6f48qaa5ma4bplz9a782icwjy";};
 dhua-24035={run="16gq48zlsfk9llafs8379797v908khv954q8lw2dvzk0v69d0qki";doc="16l76rvba4fz3vfw8mzkmks7b7206h2dva5dgw3m0j30ds8d6vm2";source="06vws91qfar1h87d57c9f9cw04isjk0szhg2aiw7sc8ligs0v907";};
 diabetes-logbook-54810={run="0rmahxnjnjd677z42ra1mcp86na41sz9ir4chkpmaikhdvnbi4qa";doc="0qb2nyjc7fpc7yc632bblbjryxdx39xr64c4kxncdisi34am82z9";};
@@ -1036,7 +1043,8 @@ dialogl-28946={run="0vdx7qnpp5s6j5c96207px2fdhylj2kv3ph9mr3jcb6jyrsiyi0q";doc="1
 dice-28501={run="12j86mgn8zph5w1gd1lmmz0dcka36b187vld6r2srnj9f398h7ac";doc="068pzhi6a4mnq8bj5xvg4pdgqb4kvdggybs16hpk8jla03ny18zp";};
 dichokey-17192={run="0bvv3893jxpblddqi75hppb9s0rxaiqbq70jns2x7d79afl7xkwj";doc="0m5zc521shp00wld4kyhp9xipsqfq00q1dqd3qp9ki1b2kmr5w7j";};
 dickimaw-32925={doc="1mxjqn4lblnpbmad3jk453lyx1qzcmrddis59j3jsgc5sp929w4k";};
-dictsym-20031={run="1ipmlwgma06nd1rk4y38r40y01csq1myqavmpd1f3c53k1n0v42s";doc="0rljzx70rbvlcirxr2kf0fmrks6g04zc1mz5hzfkjcn6xivpawh3";};
+dictsym-69720={run="1n55cpkm687y6p6fs98d81ivvryr06fahh9nf5bvg3vvmd3rq0v7";doc="00l1ivnslfhlvyyd070d4vk2s7h9qn3vp6z49rm6g05zrx52954q";};
+didec-70237={run="1fqcc7jb45w4x13689llhm2rcqfjclrw5inp770q4sj2xsdgfsnb";doc="1vldv0j555zyk27n37y8p8n9l4xzp0fv060xbnq1hjsy8sjjwm57";};
 diffcoeff-68838={run="19rrh9zzjxyd7hxfawi65y0cnr1ps5vzypk60jfki8s1bbk8l2jv";doc="1ximrhl7m5in95mxlmk7dpvja39sjvxz4awzr3vwn9w11qkhw0p9";};
 digestif-65223={run="01hym4d6vqja4hwnjyvs0zs0l2fzhdap0pir7cz7wxqnlcip6hl2";doc="0220wkv0w6zp4ggnqkcfcq388f42scywzn2ah0h9yhccgdikd52h";};
 digiconfigs-15878={run="1irv3jc87bpnc289r5zh7pgfdgk4bvfwbyv6666kyq8f8yl7m1kh";doc="0fnibq45xgwrha5vfav8lylnb6p2i0brd2k1yp8jm8id6xdsxmq8";};
@@ -1061,8 +1069,8 @@ docbytex-34294={run="19f8kxa8pb7ai7npxxavcw8hbsskmnchi7vynzkbd0imcjvay476";doc="
 doclicense-68441={run="1qb8r4lwjqzwv46fsqjff8l5zb1scjkq34pwnsxbymz1sl3iw1ls";doc="0isk98wcs93labxiygbf6hg2794l7m2wr8ck71jafd6by8x7l1mb";source="04sq9wrsfgg3s51k853yy7vn5yp292d2ii0ww3msrqnlpknvim7j";};
 docmfp-15878={run="13cxjhbafm0xvnng6gc9g03p4j79sia7jvygxmphgnf7wfndv4sz";doc="1j2b530wcpr8252lcpmy0c5w83kqbi9xzsrfbdngi1jmkfy4nlgv";source="1w8g6m2whza3w62ngsaslv7h2x7asijznwb9glx6g2vjv456sgf8";};
 docmute-25741={run="15ad8274dwgzk7fzs7i5g3ss02ld8in8f86339rb314zmraj5kv3";doc="1mrwispvif8nwjbq12jgzpwjn9xf7mr91pwg5bfdcnpwwy8l1bh3";source="1nfv31h23mp7alrm9saz5abakjsvs7rqva3q9zvxlczix7yn63qw";};
-docshots-69410={run="0c43i1x2va0a4g0a262qsk5dqig6ic4kkmgg18y7s78xi0ymj8m4";doc="0l55vpqsbwr7pln791lql2s325ljphy5gf5glwjjmf90cgx498ir";source="1hr4y4rqwbx3kbdy90myi666b2jb1iy6bw5y219xl3dyq575fj15";};
-docsurvey-69343={doc="1s14cdm4174mf5x77gr0gp59hsklbq2nrh486j3x9vgc6jv00wv7";};
+docshots-69676={run="02wcsd0ccyh9lmv6mi5g7igk42xcdmzwvp0j10128yw71znmwr29";doc="0ff6hklr8g0497p81bir02z837y3iiicd7g3cjws75sm88isxxj7";source="0qjcc0vkz7vpylh7cqlkyxh8fx2gyjjkm1w6q62bi97j0mnnb58g";};
+docsurvey-70449={doc="1pf5h9fy9akgc2cznvx32nzhxfx5c22dzr4ki23h4w7v7iivsw68";};
 doctools-34474={run="1rdwmdah8rb2yiicd9mbqz0mmf56rpgnp5vwyjhax7m0zqjgqkgm";doc="02jrr4wbkdx8r44dpfn4g83j03n6yrska79ljnwigs77p5jqlyl8";source="03y13bijva11hqil84l2p4cap7fcm8wk6ds53nx1qizh66h8g9vr";};
 documentation-34521={run="088imchmqchi1ilwfzlhk8d4am2xjjgacnyw5w4mb6sirbckhi3d";doc="103rpywyl1h30c7jamp3cfi1rg89y48krdjbxc0calz8iq5n0460";source="1fzk62clv9ij07cfjcrwn94cqvz2piysij09y2wlkcs06lgk2m69";};
 docutils-56594={run="1pxswkjs901clnd8l3n13ghqypv6l8gxr3pnwn9i0zakvxz6gdh3";doc="11fzx9kyxgxr20hnyqy9nvl5rczdfyb43j1bjwxnim68kmy5bjyz";};
@@ -1087,7 +1095,7 @@ dprogress-15878={run="1sz7msvh7wyf5k8ag857lr11dqwf12p1wzi6kdkwma05i8wwni88";doc=
 drac-15878={run="0p8li8cln7674zd40w8x6izn2kf63wsxpwg3dpbjnp5jccifvsnr";doc="1lhibs5s6h0a97ggjkp1i8j02ry9p0zdq6pzjxm4ijx3fqj1p3rq";source="1478yizwfvzrpi50k3fxbs9vq7g39170jdh7l3ynkbq0fkbssxhd";};
 draftcopy-15878={run="0fxh7h37akz0s33vjmnzxjp04m7ynb0z6650p5wd399lfg5bi11k";doc="1z7cjzk75d3gwcb4dgvg7a8jl9bvzqnc7zn0ginqcl0aih37yg5j";source="11gswnpz0azxb2d1clmpk9bis9cijsd1hajll7jxm5fhnk6vigfn";};
 draftfigure-44854={run="0dhjlykc6p6jm6p0s0h0d74097ny29w84ns1pxbb7f8iwr8hhkvf";doc="0gnazf3bmbgnygn3pv0lzrlrcic3j2yfqxq1kaijkkhsr9w57jy9";};
-draftwatermark-57099={run="1xrsh755whbaxizzljcpk5an5k9s09f6hcndp1lhw2z9mfnl2na7";doc="0cnzbj2wg5kifqg08i081d0043462vswbxr68spnnxp2y3b5ysdj";source="1k66347n1cf3ap8406dw2qa21k6mazwhv6brr569i0khsxypfw0a";};
+draftwatermark-70401={run="1v0100dlj6y6kbcyvnslsi7a688jdm813w6752bxbv6xsxrgrvkg";doc="040xj41s6xgbxz1gnd11m58dv7q30qdki4sn88vjg00n2i0afxqj";source="10lm27jk24p2d5pg964l9mwj4gkn1xfqxw301lyyibq6wz921qcx";};
 dramatist-35866={run="0zrkdhvx7f1261r5b2d08bd6a3pzldvpi69iym5k6f79ziz0602q";doc="0vwk6zfvf89773bwcxnpsd8crbkmq4lr6hksp4dn0hn6rf4smyyf";source="1xy8fm9h9qgjna6z5gz28rj0cq65wpxpxcs4vsfr4vr1p3vmig05";};
 dratex-15878={run="02nyg30awmpp2yi4m6r9gbgz04irjzpbjhpp72j0qxzly8c8frqn";doc="1a5knp5hylpb1i7hkd9160bah7pps9b0hm00zgn9fk33g5xrvhbz";};
 drawing-with-metapost-66846={doc="0r1fqikx9iix0xm2w78s80knfwc7w0kf2k7fb3k25l1cj3ym14mq";};
@@ -1100,13 +1108,13 @@ drs-19232={run="17jp9fvj86sp4ywgc6j1dp3pnvgllilbq75298qamnnj3f403vlr";doc="158wk
 drv-29349={run="10dqig3wmp340m9h3n4yl6scg1p2a7ccazsqp7p8a4fkfw0cziiz";doc="04kgfqhilxpcc0h6rhpw55s1j14wsb5v8b6ykq7ajmacrpmyi50h";};
 dsptricks-68753={run="13hvyb7qapfby45z2cikqwaj4bcf6lvhaf3b6gq7d9831gxfwjhk";doc="0jjwa6rh39qp2659ijb3fg3cqz0lbpjpwmvj6zpxv0xhnjzrnidm";};
 dsserif-60898={run="0w1kihzrmk48hpl36a20fkz4nwp9z27in9xsi0fc3d6mhgdx35db";doc="0bwnnxypyc97jfcam0vdvpyxphd1zn31mc6lvl661jy10cpqf6b4";source="00hf5icf1n0rwxr2ms34z7r62g98dqkx5v26m3k7w1wd1jfnjzi6";};
-dtk-68849={run="1j92bv10qjb1p9ryqg6yc55l4cj52q25133mq021jq3b148j5v70";doc="133y8gcdk0mgp6nrwg2pfslxjm1jl94d8frfyxm7ml0dy18g4adw";};
-dtk-bibliography-69155={run="18i5n2jiy5znaf80rxrr9f376j9f52gr3557g8idkc2g97vxpx8i";doc="152r014y7y20h19hr44c0vifwpc2s1rafilnxknhx01zz7ln2hq0";};
+dtk-70117={run="0mzd39bczl4xllw2asnwrzjp0jnvldd5ldh940qcrkp9rgj9nrg0";doc="0bm35iwckkx93shilww367pr34h4wdkr1zwb3c9xsnjz66nj1iig";};
+dtk-bibliography-70517={run="1j395ffwbmps5al16rqfn4r1mm3m4pm21jy74czr26cmfd75d6jy";doc="0zcc3mr1p5c1nd1dl4hqdr8m6d6lccgx6zyxjf2569x805qs4mrd";};
 dtl-62387={doc="0kvnsr8nxrys99rp74wlxnisfripx6jpjjkqy38d3d4gw13cvb5g";};
-dtxdescribe-69348={run="0m959fczn0gyc9p96932l1jzfyyf426sva72fjhy23yjgcv333w2";doc="05sa7capgs7lpqw1qdcr28k9f3cdkyps8ia8vz74jm8nm2gigirb";source="0bm90l8zb6vkk05vrvpjm13xpfaymw4g6ycbc57984djpkmk22bv";};
+dtxdescribe-69507={run="1k73gikms6ymcjprphzzrw6nlhm8sdg62w5ngb2g38p0hyxi0r86";doc="0fsl1kp8ls9dkzqjs5gd3s4f6cvi3dqd5mcz46dns3v6qfsn39my";source="1vdvvgf7knmqhz1qbqgs17a0m0dljnx2lwz4d9j5q8dds2i48jk5";};
 dtxgallery-49504={doc="07c403zbx7sxkhhrwrfw3np20xlqhdk893b4bd6r8lqb0zipp5b5";};
 dtxgen-51663={run="19c9w97wjyrq6g1j8n8qgaclx141lv2j6z6l5h13gmkmyw08vwhh";doc="04z9dy0aada8zsp8ckz3agqcsm29dnlx770xyl51rsvk2qwsxgka";};
-dtxtut-38375={doc="1szg0xvwm0jbzs8waillijzrff4kv04a73gsqh9c12ap427xfryr";};
+dtxtut-69587={doc="0zk09qdz661g1lnn2qr1s23h3x4mi7q8mdcl13p19k7qmnlc8v5d";};
 ducksay-64655={run="17ihjvzz7rx5zra8lwb72vyq5i27psvmlg22sihy2lxkxzy3krx0";doc="0ydhgp11hc7hl3ikwf9pgfwf5p7q5g6m1rmfcy2h6svv398zcg67";source="124lwhv0bfc6h34q93hjxpa5ypdiibmibx1ksn9x8892blg7dxnp";};
 duckuments-52271={run="17fz5mkr812ig337m2q40dcsj98qpczw53vjrsqk1skmknk0q4g8";doc="1pbq66k699v3b6c02qx89dvzsh45knr4y9s6a45gkm4a7mkk5nkx";source="0xcdlvm247d3hl7bvb981fv07nb5g24c0n0171vsk3hacxpshcsk";};
 duerer-20741={run="1v6ja2q8bi0w0jkyl3j960gkvv2m5b7n9lg6ql9rxz7sfjcxa3ih";doc="020q5ln31smf228xx27gbbw0xdcx9f5zh6qjriakxa9mhixksjjb";};
@@ -1128,7 +1136,7 @@ dvipng-66203={doc="0r001q4p5569dagayds1c56y10ls6f6v7mmywiw81l995q16apxi";};
 dvipos-66186={doc="0dmaas4m9y4px53vlg0jr73xviki338fm2n176l8ldwqj0vvq1b8";};
 dvips-66203={run="0k89qqz9zx5zh13azpjndfzszgl85hq4513kaayf4k3spy9fn5yw";doc="0acfsqbpnws8m5y66fkgcgxf4sdr9sjha067735scn75wmwi9y01";};
 dvipsconfig-13293={run="02vgk91y80ch4pkj83vbiz1b2ccigf152hm83p607y4n4qn2xzsf";};
-dvisvgm-68950={doc="1fz3sa7p9wk2g1v0bpy87vz7nxwrh5bsfl4m734n6lhsh1bkj6fb";};
+dvisvgm-70496={doc="1fz3sa7p9wk2g1v0bpy87vz7nxwrh5bsfl4m734n6lhsh1bkj6fb";};
 dynamicnumber-38726={run="0y779azvla68n692x0gybg74cp3dk32219v67qfamfzz389nbs7s";doc="1appm3ddbv9ll0mbnid4xa459w9q89swmdlvdzy1fxdps4y0vpz9";source="0ydmlz697c46fx0xpnvcdcfm9sm0j3jmk47xz8znd2ghzg395fgk";};
 dynblocks-35193={run="1zb7vk34k3z0cvw6kz74s7831fz17mg3j9hw60diabc0q47pwyr0";doc="1m69hys2b7fvwn9h6q3whkpcnvi04hnhx7811s5fqhdfi76v4zk4";};
 dynkin-diagrams-67267={run="0iprylvg36fs9rk44a4yj6xn2q5vy6jy2104m3j9jkyfafy2qsy4";doc="1f54q909b3qgbgqgbxpi4xr4f06dkq7z0wh49q29b1gh2zvvdxms";};
@@ -1139,7 +1147,7 @@ ean13isbn-57514={run="0bzvkzpi10d9sjlsc4df5v3y7qycbz1qkn7ngy97prq58wg047gc";doc=
 easing-59975={run="0zdyvkqydl713p61izpcp2yz6n2rfsf853pblh6xgsjj1vlhrr0b";doc="1f8151jb5nzd8hj3sii4ca274iaxscv5w8fxp758ncshr3bv0avy";source="1hha1qs4wy6s2162w61gpik2hrx73r83gja1llbq80gyvyfgdssj";};
 easy-19440={run="0jrza9lf3yf4d1wm6nzwv5iyfia6625fjvflfmxsscbmwqickjhx";doc="0f72bawmxrxqk60xb61y079bqpxj8kmvn167plbq5whq5b1fsxfl";};
 easy-todo-32677={run="0fkwlzgx20lj44cvwv8hqv79v528k1gghx30lvqhg44wqirkmy86";doc="1yj3c25mhkp16n49riza4qchr2pqycqmb2k80syn5w3dzrj021s2";};
-easybook-69411={run="03sd459lv6k8v1kss8j62pq4fnd45rylxa6w229sh54xmzpfpq92";doc="1ac88h085rmcm3r25dq4abdnb46pksr3m9kx8hw62jcf3vvvdc31";source="1a3cxpm0hwcy7bf1mrsgw77rl5sgi9g6ckv6scsmlycr0bw4an98";};
+easybook-70236={run="1kdx1wkmcpwyyrgrhjadwnncal469b2i5f3drh78i2gk9b6ajy97";doc="1cal6qmb16xpq16gs9xnprf8yaa6xhhqvd9n40gbwv28nz1wdh8n";source="1w9bhy6rzn0yfb4xi3mprzggm1fm0x0l5pc4c9ajnncnix1vzly7";};
 easydtx-68514={run="0pfd66n156hw6g2s2p8v35gjykacci9kpyx75zcl1sw95ry9407g";doc="01qw09bkafjmkmhg3wqqgw8javrar7zxrf9hr3c8xy14rc36qkyx";};
 easyfig-64967={run="164ncaq1l6hdrjp0zinynf825hwsky1xam2yqxphhk90438n5hzk";doc="0hc63z5456f00a2x70ckvf3r54zld4d3r63a8d4ra7502kk8s9n6";source="18f4bb9yf3f7q96w79rhx8h4svlxnv0xc6xwcawav63zsk40mk7q";};
 easyfloats-57204={run="0vbg5dz6wxzk20rn51xv7v526qg8m0ih3wikabdf1bfb4n093k2k";doc="1ncmmmf2w313cpsc9s4w0c3gzvx09r26gwlxhr9rszksvd4y7fay";source="1ih161wrkxf8sfm0zyl2m9xgmff4qs6qvsz7mzxbjl1j2zxzhhf3";};
@@ -1182,10 +1190,10 @@ ehhline-54676={run="11db4dh948g744bynf1ydlg6jk562picrzfbh5pszxvfdag91kar";doc="1
 eiad-15878={run="15l4wi5hfbx8lp91jddxwg073z0r42qf93kvrqv7bwhqisk36x2g";doc="074iirkf7fzdxik5yq4jjk2p8c5k9jj8a6n178aw767j18h4n2n1";};
 eiad-ltx-15878={run="1ifiigww9nk6hw342qj1rxzl2b94f54cm4vvrpffxy9qggwkd2zx";doc="1h4cm5b0mllqflsgfcjdh97zn3nn3d9gwa55w5kyimmxgz516mng";source="1bpy6f6d81n95x81rgpz2r1vzg9gw04309shnx8a9jsx17fnm4nk";};
 eijkhout-15878={run="00y3y01jpgzww1x6zjh748hpvizlrbgrv04p8aq3cm2pzs0g17qk";};
-einfart-68376={run="1xqwx5b9fj88p10mh8hwjqs7p2j4p62cj5c5lq23l48i53359wcd";doc="1cb85l2pvgw6qf3lln7dw6n5wlvvr4pk9l4yb6ajrdl6lyylzifc";};
+einfart-70318={run="0nkp5ixkdcl46mnr4kny7cnwrpy3zi1hmiaqymcgxgg368dx88cd";doc="0bvfhvxy4jlx2f4nzy5a7civ8qkbk57h3fskhnczyyxq4ricvhin";};
 ejpecp-60950={run="111sr2lnp3b8hh0hyvdf3zv6nr3m2ghl8j2zklq0fdimm7ndmqcw";doc="14ww6ilq1l8f8i4fcafl4v0im39gajkr5189180lbrim6wk8gys9";source="14223kfrwhi1hby3lqadp70pn9ykagf1cwgqhapm5856iai4ravi";};
 ekaia-49594={run="009wk5qyv26rdi9gjbaqxcpsyzz6l5w8b0wrg9avspq81hrjkg9h";doc="1rbcnilarzap8kdsvypjwin1d13xskqq33wg6p0p02b8gaxzf3a8";source="15fl2jhhv01vl7ggwmddpldkmwdj6gj99851aczv47lj24w093bc";};
-ekdosis-61113={run="0drs97iqw8018m15hls6kg222r0jiyqg4n9ksrgrl9g2sd25h65d";doc="1x177sag8ki0pqsbvs6vjk07zf45wg8fmq9s50v8y4qc0pn5xa4v";source="1l6d4a4smjmily8mf6rlx4j5354jrpax15iggzqm1ncspygj0mfd";};
+ekdosis-69568={run="0drs97iqw8018m15hls6kg222r0jiyqg4n9ksrgrl9g2sd25h65d";doc="1x177sag8ki0pqsbvs6vjk07zf45wg8fmq9s50v8y4qc0pn5xa4v";source="1l6d4a4smjmily8mf6rlx4j5354jrpax15iggzqm1ncspygj0mfd";};
 ektype-tanka-63255={run="0qnkc2i6zxhx0i5mqx57qf7792ffg246yxcm14g1fa1nlryhdqwd";doc="1cmsd75pzv0bfr9y868cbpxx39ixs64pc2i8dsi6k90wfzq2bq55";};
 elbioimp-21758={run="1vfg29q8b20zi9lhn9nsr55hgx710ysk0dvfqpipqjf53fjsp0gs";doc="066g7g84fna6wy1slyh2sp9hmwjhp57hc3qf59gj5mwqvaaym8bc";source="1ysvjlmik0kclmcdf738vhl7xigsq8c6lqpgl3z2daarlqx6b8c1";};
 electrum-19705={run="0ckfb8xq10bx44zfdjy1p1hfcw18mlfli8zgjks81kfsgv7hzfxj";doc="12mq0mn56xi4h8dwnfnlhg0bn7qn6b6wxx20nqd73qgm0p1h945s";source="12ys4fdn1kyml62rcwpb424l86kspnzb5xq850ppbb82ng4146js";};
@@ -1213,6 +1221,7 @@ emisa-60068={run="120aa7a4m1psqx3wclwzghq0fcyxs8djlf79mp2ds56y0mpsqx5m";doc="132
 emo-66944={run="07df21ziq1ajpmff74w5vcsvh0kd2dx7vc7q61syqr2yqvj635cq";doc="130zqvzv94hi0h5m742kn7vc8110cwjd3b59dxdpihm76gqpa9zh";source="0hy6pvyxg0k478lpdfirb92mx28w27dxzms5al3pjq1mhr04bmf7";};
 emoji-59961={run="1pzx221zrczj26pdw6ijai6m73zgbz6z14d5wlhv7albrh4ppxgs";doc="1531y2a3dfmv2y2xa7xi0dpdkh61skk5makiyzs8mz3zl19n8nkg";};
 emojicite-55131={run="08y8qg37m8b3qf2wkbg802kmx359i6ki445ljjnxybs7apvxjpn5";doc="1iwlxc5ygq7l4qag7yxxas0rpcywmjcv5pcayrk5mz34xr06x5f8";};
+emotion-69881={run="14rnlr65ilyf9mirbddf9vkm30333yyyyd53fjynpq9h0hqrlgxy";doc="026yggkjkkvsq04k232a6p31wvj2zxravn13l5ijxs5z66hh3svp";};
 emp-23483={run="13iaipg8n1njzbnd8s622irizd4cc1cbkyc735mplvwq10q2jxqq";doc="148l1xq42avnf5gz1sqjcdprnkcbgsii3fm1jiamx18175zygsdc";source="023jc6v2l580x2d480x11z6rlknjjvx8g3qkcrvdi778h5m5bb94";};
 emptypage-18064={run="10h1mlhk0841wgc70hp51jnah14si7rf2mwpkp8lfc1xr7jwwvi8";doc="00l43lhrr246hiwa717b72rc4ignqd3kljkw6ka3l8z1nzbcbni6";source="16nzgkvl9gqsnhx38dp71c3cz5rrgm73n99g2vg7rapg0vb623xi";};
 emulateapj-28469={run="11yv57sv6ys3g8h2ix5xjnjrbnyfvcma4i7vzdsj160rzi12n06v";doc="15zm7jqpk917l1r2qfkqdkbsxa2q7w4640h9115v4jis0zwgj0s9";};
@@ -1235,7 +1244,7 @@ enumitem-zref-21472={run="1isvqbp7wvib81r0yn7sngxa2dygkfm4jn4rdvw0kp8rknam91qh";
 envbig-15878={run="1szn3ngy2iwzbc9y5fpchr5vpx5alr908q8bfg94lylmb8lx2kb2";doc="1y778gc6wl11afjjv2szypc8jf1g7gg2s0lvhv2skl1n3wpb3x7a";};
 environ-56615={run="0in2a7ar0c6ji7qhrbgp4bglcr2cmb9imxch8fcrwkims4g3vjp3";doc="1pb6nmprhz3j9dx2h7sw0y66y1qlvhkjl3ip28bxa133fgqab148";source="1jkbi2g2s13rngwqvr435i9n94ycnzp9xa8szik0nnmj482ah2hn";};
 envlab-61937={run="0q84vy7zbjqrrvy0r2j2hpbg9b5vwbwk860q24azms2zxy50a8vd";doc="16fnyfvvixp6lfgvz32w92q35s21c92556qxbgpcd94fd1pw2bki";source="1fygp7wpyzhzh070sa61qk17h05rqr4m1wqp78vpp0awgkmdji56";};
-eolang-69391={run="0iiaj4hc14b0ln84pb3yb3rk655hxx5w2gjgkpa7mlw4p53lc7dk";doc="0r1vffb9mi9p5zf26jaimd68k9yvlnr00xz2j318hg4chda9v78w";source="15z7pa7992c18r0n7y0rlaqn1id6gyqgxqwgv9g4yaj169crm7p8";};
+eolang-69868={run="0hwp6yq1zw4hilh8zygcm8dc74mnr5hhn2x4gi6q2b6p43pqkip1";doc="193rv7lfnmfhbfpaw8ayz0di2iq83i5479wgca12zdcin54hhi97";source="1gqsl2b3aw485d2g7sblr9wi28sfq7by3y0kcj0pf9rpzzw6m7nn";};
 epigrafica-17210={run="1kawqgy9kbr535q1v84kk29q2fwhg6yzmgjd5i7dyg06cy0g6rci";doc="06ichmfivx1v2y67f5nxx02v75wzci6m3hhg87kc4qik61yp8lgw";};
 epigram-20513={run="1zps5067mgi7xq3fpjvjln8i0rz53j7qn660khraq8ribv4glnpf";};
 epigraph-54857={run="1lb4wzjcag59dcfvizvng9s47v3x2af6v62hc1x3ck3fqzx9haa4";doc="1h13sgi2bxknx2m5kxxlv9p4fxf1pxh1zdwm98h3kamzb4a4gm81";source="0kqfrmx732m0a6k21iiq1ar47ff50ri3f5wy8ib6ssbbvd9agx4l";};
@@ -1262,7 +1271,7 @@ eqnnumwarn-45511={run="1mv50r9g43si8kmdmf3kgcjmw10kzipq67ssd3vllja4pn9yzmz6";doc
 eqparbox-45215={run="1bg49m7nzw20g2g51g07d7sgq0sjiisrbaq4ca31qbybr2rxcp12";doc="0z86nwj06zn55gk32wwlxbqfb12a1fcgqizrpagm7yp0xr99b8wm";source="1ny9mcnb76yds4l7q35wdm0x2vzia80aaqr12idybkzi75a7b2yp";};
 erdc-15878={run="02sf80cadhv7if8arbjcsgqkb0hhdrlpq6izqgcai6vb7xsc6niy";doc="0nv1yqxjmp4mfksmxm373pmy3zzbfcfvi683dalpslzq2qyz20yv";source="1vpghcpm9a2pvi3plh7pjki7sna3hkzvq2xj9gzmhqxcpw3jskwx";};
 erewhon-63312={run="1nw8y88z39wm0f312a8r0hwmdy85nynrpq8k78l1iabq9i03316h";doc="0wp19ficxpgay4bbs1hg3yrxmy2hlslgyawa03naaxpy1jysx8pw";};
-erewhon-math-68990={run="0ianrz91a3wc11s3jixilkzmrhjj6cw4h88ic12v1njg48d7sl3g";doc="15k7gzyrwqn3lr092sbcxfq639cy58vwgm8sqpnqhrbbzzm56304";};
+erewhon-math-70336={run="15yd3rjhv52kplikvmp6fax8im2250lb15s9hh61c4f4a7i79pia";doc="1yxzf17irczchn6chiyp0hkllq849ivlb7b7g17g61b6gwz0jd1j";};
 errata-42428={run="0hp8pls350swslim7m3cpnw23v94vnqj9avfvx9hq0bgl99szc5c";doc="0h30iip57km31074cya5fyhlmyamix8anpk19rqbsfb43h3988g8";source="00bdq20dwwmq0nw3c271ah0bclzkzkwbr5ak4y9asnab1g6fl5yw";};
 erw-l3-61799={run="0klwkq6x58bhqgc849yv68vg7w8ivvzib8rl84ipf3gl1hk42761";doc="0qkg31gi4jhgvc3i42cbj00ccavwrxfmygngn8qxfgmsphx3a41z";source="08lh56xzj3wjh1dp72ky8ckga8k73d3alf0vxjkwb6b6krzz4gm9";};
 es-tex-faq-15878={doc="0wp5jx1qs4yp3y4qpwqhpw7rnilw3vb2z5xb4lzwph6zw27jf6sd";};
@@ -1283,7 +1292,7 @@ esvect-32098={run="0fgcy91ypllj3i706znwwzri36ja2ca2inx838q08zbs8gqq4zah";doc="00
 etaremune-15878={run="1l3xz9zh5f3wj3v3mvq9xk4q6vc7k01pq3ivsvm0qlkni4bffyja";doc="16v4vsd7dzihnx72bdz99994kpw6r5im659hm51w5wyh8gf8mp29";source="18rcvjpyks01d6qkq61rmngmwwyxksh4i5dmnvq8ihx4vj3zlgqx";};
 etbb-69098={run="14rrzb8c1i58iypi7f1wsj9xp2x93s37s030zbl7xj8aw9j5w4mf";doc="0vqrl9i8mr02qb12czy09x9vrch6nbng04618h9ampxs1m40sha3";};
 etdipa-36354={doc="1jp35apalaa1lh44dbn1zayavv1n3wkm0v69hgy8vdz73yp5yvhz";};
-etex-66203={run="1zk4dp55r1yjwy1bpigyzbfm9nh3np544hfmzzfhdg4i4yps87k8";doc="1377j3czf6s21f7dr4qswzqvsh7xzzqcyjw771cswzgg7z8k66nn";};
+etex-70496={run="1zk4dp55r1yjwy1bpigyzbfm9nh3np544hfmzzfhdg4i4yps87k8";doc="1377j3czf6s21f7dr4qswzqvsh7xzzqcyjw771cswzgg7z8k66nn";};
 etex-pkg-41784={run="01aa6bn8d46ql8aw8kg9k2c3x611jpd5hx3h6g2fqb2lvjqnr1zp";doc="1hcir648vyypvqa8r710mj9qldir9yp2lq7biv3s9w1vl2ssw18d";};
 etexcmds-53171={run="0m0kf57wcmy50qcca2v5jb8z4h7z82pja82igmf6gsm7fksm3wrb";doc="0grl3svqzjh5bdg4jwzmqaxz7chkqka0vn0hnjwpyvm52ngmckyk";source="1s7avnnlr4g8xjdfmkm82aanz0k0cnhv2dyar30439x2indyw68c";};
 etextools-20694={run="04x0a0wy3avac8cgjgq7npiy06b0vrkxa0hizpn4vkzv7xbq79yd";doc="0z04a5f4c1xygqsgkss4bh0s41aqv0i61sh6x9h0isrqlhbvrzs5";source="1f0jr38lbsrdjxhihxks57y6xw37ghgmydcq48ll14nywx07qa2l";};
@@ -1300,16 +1309,16 @@ euenc-19795={run="0lh0k5g6icbbzl1xzzcj4sw7vjhqpn59y9xbc6cn58klpww8ywdh";doc="0li
 euflag-55265={run="168c6y6rivahj6cw377l54jsykpxaxvv3nbmr80w19d90h4sqa5l";doc="1a65rasxx88bkz3bg51bmzdbq67yphljaa8mgkp2b69fjsifm229";source="09g2gn9ci11dca9s8bgdrjaprzb66vb47ssfnj6n061glz9a244z";};
 eukdate-15878={run="17r61096angayvbdi9r3d7ljb1a5z9q9r093kpgdsi11ahcgsr26";doc="0071bi5m6v5ak6g5pxjxzq5y5353mpdjx4f2dbznkmfd23wp8j7d";source="1p6vg8nj8qipj59jwvp4izf2dv0l8490773h6j87wlclnnnlh2gq";};
 euler-42428={run="0f63sy9zs0myb76wqgzww48g7clq6ni9kwnrfjkyyc4lacvd36in";doc="1rl4bxzlmw95pgcf7va9gsrgz89602a9pqvhiym15b5hdwc5cb07";source="0fy3dx3bf8idddxsj29yqd7bsv7cyyg8q9njmb3p0mw7laqrkjxl";};
-euler-math-68991={run="060m4cizj9gh729yxx70vnj7rw660r7ka2gqpsd3r5jmgcpybppn";doc="0bkz8biyz0mzjfai4n4iy0xjslhyvigchnrargz10zxiyb5a7p5z";};
+euler-math-70335={run="0iyn5pmk031v5z21l2mmrl2c6fs4g2dcp5zrs5h3cv285jrpa1dn";doc="12w9inmaxw5skyw2jmhhxqfxvzsf6z7dfajifj5lj9388890pdgk";};
 eulerpx-63967={run="1ls9b076rc73cbc160ms7df3w5m0x840y7s2mg3wk22vgc461ail";doc="0qwhb6wxm8fviqi5kdy1lcplarijhca0ymrqnxfnrz38z3v4xycs";};
 eulervm-15878={run="1x0zgqw15r5z9mf4pcpnf1bdbwbpwbc49ij7gjrhf9jzzlkwraf8";doc="1bbd7f4dz3xp7ylgpi2wh9jf8nz4z6i2cvphfx53xvg555ln5v1m";source="1if22m5h8ma3bvrlp4jzzhjm410r5r7r2ij17prycj3cpj4r2nl7";};
 euro-22191={run="02kkwf4psrmp7n5mqyrc3745kj82p3nxswad9x8rw1hd7a278y3n";doc="1ajqx7axgqpmbq4kl2gmk97ibwbijqsq6z8ln71qla61j0mkgj32";source="1hkzjy4vmvh06pk8bhkpz09ln5jygvyhwzyznqkrzffay3i89cll";};
 euro-ce-25714={run="00ypq57ri9vkmc85c5l5qzq098has90qllm9lnv4jd73l1my7pmc";doc="03pcwrjrjp74s2xl7pahpr76dls17x76xvhck9izgsr29j6kny4d";};
 europasscv-56829={run="06vqrnfzcq04mjk38q75n1k1dw3ap7z5xnzpjmgss8rl6mjn4v3d";doc="032298ir415l36gakqalg5n1nk70c47xbm2svvg1ygb32sgn4afp";};
-europecv-64037={run="18yrsk65jpgqx1lma8n0r8ya3izhmp2z6z534i46386858hm9x7w";doc="1mc4bch2jp1nkxsqg80g403r84brv81fn807hn5jq27fbi93py6b";};
+europecv-69661={run="1d6p38swfpphw04zzf6a0rdr6xmz3rrc2gsy2gbd06hjmcymc7jb";doc="0s133vzwnp6jxbpmk0mdiaycr4q8x0xh6ismm38qhfb2zy62pp9a";};
 eurosym-17265={run="1bf4vwygyakr999k95ki53fykknizakz9npz2i1h3r5ci805l7z4";doc="0vmh23f3ksc3b3hym7iv7m8rsddk8vdbqr5ib49bjqylppvxrsnz";};
 euxm-54074={run="10dqknqlqrga9m2lgd74zx5hk4qcbkfvlzjgr304p94w3k7pclqc";};
-evangelion-jfm-68059={run="0vrr3md73dj51rch8yz71fpr39q7adq1ds6jmcfly3ccp9n4wcil";doc="1d2lcdjwl3hd4hl1arbf9dc9jgn2b13l4hkmpxc7g6cd2ishbxwd";source="1kvwwhv5a9ai57bw22pvg5q79cyi4kf35yyyz5yzb8f6mwaj29v5";};
+evangelion-jfm-69751={run="1gp0j3ysa05fhlfblaf1fznmirfvkbzdy9wc158vs1lsbs0dc1lc";doc="050bczdbp45i4qv0wp1qjvl53q10zwdz6av2v518mmg2qxrcvmwq";source="1fdq93a124am4l6bl35zb8804fhi7p263fwsd73lpyfvvh95rz7y";};
 everyhook-35675={run="11r4932kly5zmksmicapqxndqw4cdq1sg2x9hgffms6v8m5cwkfs";doc="1g9p36ki26vqdfiwnr77jxk1bna7733dml5k4s8nxq1drsklwqwn";source="0hv04cn2j7sf6032jxv18py368zbpp4ya15wv18qymbk6yv5najs";};
 everypage-56694={run="1i8fjcbk3flywzd55y0cbsdmzymvkynvgc5cvv6yh5y6nr514rjd";doc="13drphjv7gzgdzzwd6fxlngm2rprhls60gj4lz1v69sqifymnn4h";source="0vdi8yd0r33ajnym0f3j42ajkc2xs8b5yn3kmklmgx19kpc93ln5";};
 everysel-57489={run="090nizak865w2mgrflmz91kc0b2zmc6fq0xxrlpz68xwb214lzwx";doc="0bhqpzw5dpgq3842jbba9y21yj1808nxrg50339lx7b8vc5d2i8y";source="0aibvqmg2n26dici3adi849a5k20ck68v25vx1bz2f15q4gggd6g";};
@@ -1318,7 +1327,7 @@ exam-67600={run="027v4pscys8rmrrrz7m2plc9blf0bif3rjykfhw597rmnmgmhxcz";doc="1cwc
 exam-lite-65754={run="092wb5wjk452i252g4chnjzxysmbhy30q4cxir32mx54z41yf0dj";doc="197mlnayyzgr9v4yf3w6m72k8fqavdy4k2q1c0v7slsvqad320f6";};
 exam-n-64674={run="0j4bi7j167fkaz57wfav9ybv5b5f18ql0gscvdxyf9vh1czk83n9";doc="17jj5s75fs0sxpak8ywd6lmss3iq290316mr5gyxm3v7r26ji8ii";source="1lvcxbdwy7xxjwzbxzrykym96j1qa7caqkdqhhx4qxdry9czpl43";};
 exam-randomizechoices-61719={run="13dqgkh1isrg0z97z7bfd2b952sc2xr7w7ykllhvmzicr9gcml1y";doc="078cryxhlnwk0k01pwypmdkkjlna0fn70kj1xia17jq2xvc2fpcd";};
-exam-zh-67505={run="0k6wfbz76j0lz3abcbj53pc37psnn0wvzq5bzhx24igmwx0wlawh";doc="04q7r7pcjwz3qni7yg18c2jcp1ir8lb35dw6rkf63z2928f6hdnp";};
+exam-zh-69920={run="0a2w0swarm2lav45w9v72bv7gakqnz2h5fp8895sg7jmbm53bzvr";doc="1ia5nrldj26rcjhypvyqmqqz9fs9bni3birx24qdng652s11k48l";};
 examdesign-15878={run="0y9kqiihidv24553zlijr6fspbayvram1mqgy9kmd1wwskvbza3w";doc="0ddgn0f086qdsyssg4gm6ynlcnnsd16qpvn2g3wzija7ai5sqkig";source="0z5539hv1li9vw0d3jx7q9s844f29wi9xr5z30hvzl3721rnkvzg";};
 example-33398={run="06ld0b9gi8s7y6igijylfvj2qvj3d45z2ml9wd1zfzkpf32pghmy";};
 examplep-55265={run="1a3pdaqzc9jx2yf66vmjg9r4w07b8afyqijl21np6sf7rrsn7zg8";doc="06jqa848zzswd5pbfrvr9lh3i4l5h8wf3v9g179g3q2yb4dmvjwv";};
@@ -1329,13 +1338,13 @@ exercise-35417={run="18f7mgc2lmm1lg13dm858nqsqzga52sw0r6zlz7f0pv5hpc0mgak";doc="
 exercisebank-50448={run="1algypm3nhkbccd9k1w5qr6y75hqiinw5dj1h4fbmripmhdwircs";doc="0szpxkmx8qi3zpcrjzd1nzn7jcp30wf9nv8rp77x7rd2yd0sw0dy";};
 exercisepoints-49590={run="0vr2yxqx2ng1f9qybapz61146lvsniv6mjwl1yfxk10qyvdw3pnv";doc="17kz9fyd7cc4pa4j6dsm8h5zpwfr68wg3ndbswgh2pgwwvf63777";};
 exercises-55188={run="1yvdj03hr40732swfsg2br9f4wx9855n7a3whlqjdnczp6545lvi";doc="137g1gvwfxm3gid5xvikrqk0iw75csrkqgrwmh0hda28dd4zbdwg";source="1lryxm36phhp7p269zzf9a200k9k0v8zw8qyqvyk784vmvyilv7z";};
-exesheet-69252={run="1qrh0a36x68fs7xkp2grhqz94v49180v8aj95v3w08xcmx5jvwjf";doc="17dxhrsknh9fx9g75dkw56c11wpvc4xyzv7rgx2dm29szg7qvrnd";source="1hdkh6zbmsmc1aqzglihjr9xz6dhfxcijmyd1wvhb8cxh8swr4dw";};
+exesheet-69885={run="1fsavlg9j9xi2j81djhg77k10a1ag7aq8k3ykv53v8yn4s8n2gym";doc="0awa3sb3wxspvd3mvyvva92iwgrsb1qydh3sdafmnd5b4m0nncys";source="09zhns0ndza7jgmjgzmr4a3h3rrh5wshi2ssb8sfkr10bf1xl2v1";};
 exframe-53911={run="0sc11jk94l0nmjjd69k6nl7j68szdkihim194pdxlyiybwqf9bbh";doc="02s61k5lpjw121cyxkkhlbm5d6wv0gl009abkjbidpgxbnd5yl4z";source="19y20l5g814cvn9z0axpkynxp0vwkay782dmn05g6a6qzjb49i0j";};
 exp-testopt-15878={run="0g7q4ccfamsd7sr7wb0qsw74dnwiyz0rjrniaxm5jvgaadiinc7q";doc="18i2ym0da8vp3xxy5q2gaykvja3dga4l64q9zjxknkm50vj6dj23";source="1xfp15q94icdq773ivdvk4n47i2k3g3y9smdvmxw5m9f35nayypl";};
 expdlist-15878={run="09yhcdbx3n7gj3g2v2yh4navgdf5ik4x281h51kd1lzdzbbnf3aa";doc="1qgwn2ignri6wh67wwjsqpbk28jch01m8fn0nw6lpc6kfa4a9g6v";source="1m8dww4i5w0hivs904v8ls1dhs35vp3qpbb44ihwha0zsbvghabk";};
 expex-44499={run="1vdbsxn85gkg24rx3qhkwcc658zjyhkymfspysxkxmmb8rn42y8n";doc="1mgq1knfx1lf0vr32wa2r6v0sr49m0xjnsdy0y42zngfi1mizp20";};
 expex-acro-68046={run="0hdbjdkqsi6nw99g3rqvpd242mag8k7ggl6bb0wj99nzfq9f43sl";doc="0ilsi8ddsn7crc19qf22vwff2xc4lhpqhxpk6mb7id5fd7xpp0pm";source="03addcn3axfzl3i502clngi1bc5b4l5ndq335xh6x5h2566kjclc";};
-expex-glossonly-68860={run="1qwcib3flc06b1l4fl9knqb6xjwhq59h9i5gfniq602znndjsc21";doc="0k740yz8fjxkcmjvxd83234arq375xg8gcahyh2iwzqs9k8cvi4c";};
+expex-glossonly-69923={run="1505m6spzvhxmyg5hv7wncd1izl1qzkn5sysfjpdykwwg2prjp4s";doc="138yihm7vp0m25l00i9q9gn85cpssnfn2n53v876bvlkss7kz765";};
 expkv-bundle-65623={run="1mw1cdl4phkm29yxb747whkkd81g9a3sbbnkhzgskbna2zcjj0l4";doc="0cwydrq8k5z6j62wizgg6n1n8r0h0vi4ijky59vvz8f7b95j2xz0";source="0cv1r3daz5lscdqyjgmy6xj00b4i280bg1c93b2kd9x3svv179mg";};
 export-27206={run="0la9v2m3n15hgds8mmp1c56dz0a7iqygjk2qnd99n5924n187wyd";doc="0ipbs7rdwjp6jrr4drgcs73mc8fy6bav24qfda1an7byglgcf2nm";source="1q3xbj3zicbizadihwb6b75c4d95b6wq0adi45wbqf6hzj05bd5x";};
 expose-expl3-dunkerque-2019-54451={doc="0xij1ycxnc3hfzkl0bfs03s0zzzv6xsj3myvykb6n836j1g66g2y";};
@@ -1351,6 +1360,7 @@ facsimile-21328={run="0mfzqrn76b2nhz60rqjdr55s6i9fzw96ya74nncvdjjcvaqpjrjk";doc=
 factura-61697={run="18p09q5r4n04r3pr636zxbq2jp027knlzphd4zpns3d2szgw2j05";doc="19d5nsjxzghmk56l1v9ppr237ykdrgk7bql4cdr4d2rdvqbk4r19";source="0l77127yc8r4n0iyv4q3ilcs9hrfjn0y56rc805av4gdrgil9xgq";};
 facture-67538={run="1vfaj6hsjnd1cmgwrlj08bn9zr52zc1z9h1dpjq742gf8n2f9qfb";doc="1my5nlwdik253073yhcjbvqkgwcw5kvmg2fm2wladlgcq8qav96d";source="11nr4df4dywqaq1bk3vzjc6s9gd5kxdksicij2fmiqx4a5309ijc";};
 facture-belge-simple-sans-tva-67573={run="0n8wwl82w7hn11l3c3fg7nr088v2mv4s2d3ynwahgy18k6953pxm";doc="10yh7528nms60ypc2zh9viamk9cihi0a67jcvwzb2i8f88sx4cfq";};
+fadingimage-70610={run="0hyprvgg3f1bdm747v2c9aa7j1vcaxvawazs4srvmxqabyi05jbs";doc="1x8bgam221vspx8ikdmnx5qvfwv0jgfda05b5r16jajxirhbnvxq";};
 fail-fast-67543={run="069rv6yv525b9f0igkaax17kr3qyy1n82v018yidc57ig75h4vlh";doc="15qydfbhbdvkzrys4x3g3k2zpzjzah8yx7q1xxnc9p90rmlj6ch8";source="0ybn1365n7mkaf73sc667pw826n1pndrizn5svnx89ckzhni6s3h";};
 faktor-15878={run="078fxihxiy9bnszy2nj5ca8ys9hhhazkawwi7x2hzwfh3n4dyqz0";doc="1hj13l2g7za8n3bkxmg04npi5fnp4jv8viyym1076wify7hrwc73";source="1r8wksjr0q1nm118fzkn527lak31j3sjrbsahpdmvxfir7936njx";};
 familytree-63739={run="1a6hvncnjzrjb3bpikkjlmamnrsas5221hhxmlvfb8x05qxjxx7x";doc="05m6n4lzz0fc2hm011kyvnxnv93gl39jd1lx404xz0kjs0l94cp8";source="0g6i47agywjpqi2if893jpm045kwda3bhlm2afd6gpjynybpmhmp";};
@@ -1366,7 +1376,7 @@ fancyref-15878={run="1ns9b3viqg45w3pmnh69fdrjc9p39pfnqwwsfl9nnx04pf8b0p8i";doc="
 fancyslides-36263={run="0hfa5jklvybgx9rji032rdmyh2qr63fkyanvvs0jmg1bkpqw7s03";doc="0nqqvkv9gsl3jp22rjkxrzklpz6dfmm3wy3mc9f15jv9iy2zlrr9";};
 fancytabs-41549={run="0yxr24fnjabfzhyvfj7nhn26cc7hi08byw7zzmky3nnynxnxc2p6";doc="0f9b7rvnz5syq5dghj426k9ypppjg4q9wzs8v3jl8af94xy7zrig";source="10p8hb18qrwp2dxsjybrawnlryl97k854l11c0327r39qiya61ns";};
 fancytooltips-68931={run="03b31bifjnl75hscp908x58r90zrp9hy8r4kf3lkygqvikh8f5bm";doc="1l6mp725xjmy6azgx2zwcqlp3vfvk7gvyhr0wwrnnklfcscyr1rz";source="0nhmjrivw8a2xhblhxnjbyvmz4hp68sjxnnfzmqyrf1agjgwz8m0";};
-fancyvrb-68772={run="19kr6cgk83fmdhs7360gvi2p1q94jnl5r9vbm54zzhy114wvhiwz";doc="0jr5baqc56iyz0bifhrl6k3ragdaj267yl3hc71symhdi6sld4if";};
+fancyvrb-69536={run="1xsazrr8rw8rwxq2bra6ypsv217r5rrzxhqrblncm5g2blp8x815";doc="025sy2x32w7h2dih36iza9v0lrbwpr9q2idiifdxjhs1clwx01rm";};
 fandol-37889={run="1l6h2brl2d6bnam6p6j0p1d2s13jnva5zkr1xr4sarzzxj6zlz2r";doc="01ax7za7wcr644ncpv3rpfvl2ndqlppqnjzbjp8y2d0hawc3k5m0";};
 fascicules-54080={run="0zlkjn8kg6vb58xp2xh7jwjk6dmk6knzqh8v7lrdbmzhw9j28vwb";doc="1jkhj04gpwcckp9zqanaa9zhplgs2a5xqnn2xf6ir6qifiv3403y";source="0d7crimrdcxlh8hd24qfwqnadxfjsfrfnjr4hx5rrj75mm946zmj";};
 fast-diagram-29264={run="13c2r5prb7dg05j0r4lkdz36v51zj6v5p2c7q22gfkbz1lj1s6s2";doc="1f3ghs0l6mj2q3iw74rjjb12y8151cccvhww13h4kzc30vacr3r2";};
@@ -1391,7 +1401,7 @@ fewerfloatpages-58058={run="04903zr0lk50i88vywpbzpg908zkmy0w8vcfks55cmbfb2ja37qd
 feyn-63945={run="1pd608v8wl7007rjmsykwabr1h8jjk1s78nbmq4a0541rj06yd0p";doc="1dkfi17i6lz464bwmr5r5295y1avvsn5rpdw4cv80rd20lvhnyyp";source="1vh6kz22gpmch2rdlvhplvqqd03vd0mn5m0a123i3xfbka1myza7";};
 feynmf-17259={run="14bl9c8yz1z596281kysyyjbf727pi6mdnwag6gfqs1nsinq0a2i";doc="1ql099wrlddb4fyfrsirx0vnhcbh0wgwp9yixhvgxfk5pbah8v8n";source="0f9ghmp0hcmzadsfljfq7pinn69251dwhcdk4n62jrd07qdgqsyl";};
 feynmp-auto-30223={run="1yhvcxiq6ajjmlsvnznzvp35sap1qsnj54zv70dwpl29rkrgrmsp";doc="1y1pwlplkz2z7lqz84ay7ch1lw4plh4n69isqzsvhilnr31fkf0a";source="0ja5yqs9szyk4s2mk9cbjf6p98dagwk7pycma84y48kinkl96s0s";};
-ffcode-69383={run="0lrhl343ffn2pvffkf34kdins8b97vq1shaianzlsbr30slliy77";doc="17jxqsa16xkrmq88kd0ydn4kwfr313m8ppl7g7wabnaldnwxi9ga";source="04vb3sanfnzsyg8zg53r9ksrfj03lh08yq1r0wxpz82gcdbg4zhh";};
+ffcode-69706={run="1i06si85nn49yj64nkcja4r2zfnli29wi3z6rm4cd2j6zaljj41m";doc="1rcjnxrzmg3vpdwg3fxf7r6w8cagh2v7ll49r0y3i0jxaiyyv10r";source="1cxg43iaaz6czqf4wmfxh3hdbpl8v2v94c2wggbfx993v6awil7r";};
 ffslides-38895={run="1mpfpawdhh16rl6pnvxnkj95gf9hjs49gj7cwfyngmqkjc2idi8j";doc="0z5kpim798zxj20p70dpcgmwg4vx9mb0zrmq620sprxxdr2gd059";};
 fge-68353={run="1f6ibw87kbhpf3qxjh17jr1lsh9kk9ynf1rngzyjwbq2rk2id94f";doc="1c8nnpdvkxcm6218mrs18ipjf9mrl1cqyvv3p31x41ii8wxkvjm3";source="119d70668gw3za0mksr93wcq9gpzjn4gyv8vmizlabi0ip1ycgy8";};
 fgruler-63721={run="1x0pqrwwbwf7qi64wlcg8d73sf5r59jcqhhm3l30qk1ymfwirzvm";doc="0mva3jv63prks2la2g9sqza2ng59bg9g5xkgg4flamk0409bmd4p";source="1if9sbrln3jsc965xn9njllnn56dl5y4v2krn76hyxsk1vyza45k";};
@@ -1418,11 +1428,11 @@ fira-64422={run="182wpm6dkhs41y6kr4bjc4rpy0b62d17r0j60a23znfgglpriy3f";doc="07wm
 firamath-56672={run="1d9l5nsx0qswn1hcalzsrxkvc7mvpdqk3h72bfk50h91lfm2i567";doc="1w6zlskvs54x192nyxa83qnlqhvq98g64k5fv6ch406nkivifmgz";};
 firamath-otf-68233={run="0680qh4drixmrvhv3klkflz0jml06x8k9inl2c8ym6a8adqx43nj";doc="10ynw2ckqc7vsv5hq9kv78cvn6yd23qfbyv5060sjxl91w6qxs63";};
 first-latex-doc-15878={doc="13ngk5pia5vbrbb4jrrlq1lmyja08m7cy4ydcjasxha8kns001ss";};
-firstaid-68720={run="0jfrn4vx45aqlw8n5ipicl12y5r62vsyr6dl9vzf6yld4dn5zvvr";doc="0ad36d5bjlj6y5x7aixgn5sl5ra31hqif5yz0j7n5v32hxhhjqi0";source="01pf1jpxgq7j9s720xagjalhyzxr49i8kaw9mrab7fvx693cw9dj";};
+firstaid-70324={run="0sfar5v1pflaazw7yl9i43f6cd9bz8manmgynlww5wnw2chh2yxj";doc="0fmigcz19xazkxkqii0lghfy8clp8m880gg7lgm6bv6kfn5hsz4q";source="0kaf6555c3f9cy1fb5clm1ziw0kwgjqcysxnbmbzfhq23j41c370";};
 fistrum-66461={run="1ypzwh9a7lkb5b6d9796hwzarlsm06nyndl4clk5ss7nh9jdia3f";doc="1zyyrvm4vmd1fy35clf4aizb810mhr2xzsyzwmpcgsbm3nf7i2ng";source="048g8x5q882668lbzz0ji1hndfkd2bd777s2zyyq59bcw0gmavbl";};
 fitbox-50088={run="0jk46rrq01bbqkwfqf1rdrzwv475mdmz4hqvbffkivnbwj1vz18g";doc="0gb5gpdrdagilxsklq1aijr5zfl5n82nwal1h9qls0iqzjvgizka";source="039q5as7939zc5nby6m6piz5h0zphm19hqjkdyrgzw1q4r9ypzc6";};
 fitch-69160={run="1c6myhpv9ix6cr6snn5f9ky2z5caam1sqjgg0bq1bj8df3acdv80";doc="1gdgmviy8pqqwwsvinrb8qsgsd4gw6bx6xci56w4nmfal729r6g4";};
-fithesis-64135={run="06r4qkkgmvak5z624vhk2gl7vnq538ixjq6v2v4h1zz2863kicck";doc="15dnysdjas5a2a53g295f5g4fvi4rii10w72w5z9libxp6h93nmr";source="1a35viafyrxh8aqx9n6gy4j3kk4yjz5cjgwrfyskbpvk014y84n6";};
+fithesis-70536={run="0giyqhz2r2dnxxnvliwcj2mlm53ll452zqg18hisyq8z9yv7v0as";doc="10i2mp1ijf8q3dzgpva0b6b3h8025i2h5hl0vv6rmvv4yn7hnpay";source="1bazgc6p24ahsiv68g104qglahivx5s42gva0xhqnzcmimnazk7b";};
 fix2col-38770={run="14n020dmfn2s54h5xvc9lrynijcwnj3d2w4kg2w52v0kf037hmln";doc="089pdfpk0bi23yb7grjv4w1agkssfczwvv2vhk3piy43qpk9h09v";source="0wi711gb3bc5pc2kb7q2hz8y09g4phjxggrqjbl6i432z42fc061";};
 fixcmex-51825={run="063a2mwh75mdbh8syvrdldb7cj4iyvqkbkda4jm6cq3nwbq9kly0";doc="1c9q5srhfil0wnk84k072ridssgwbmzpskk6pwpaq8id36dydvlm";source="1h3xrdz9anb2cxr8p175rrcjvaawv80cj3bp9l6bcpli6yb6fdfr";};
 fixdif-66606={run="1gxz7bv0h2485pwrs7b0zhjcafkgzd1r0ikpjjw0gh4iqc3bcqd0";doc="06f5mkpp6aar6c569pwd9952xgzjdy3zx8n8y6y9a6wfflyh3cis";source="166zj8nmapwqkd06ksvjbjajq649amjrfji9z9j9mbcg865pgwa2";};
@@ -1481,14 +1491,15 @@ fontname-64477={run="0ylpryn5wnjnf6acjl6kp67i0vl1dz59xk2xbxb0fqhx5ib1gdgy";doc="
 fontools-69241={run="0smka2cr5al8f00hfcwpbwkddl7g2zcgg2jrak2j8p2ycibvfgaa";doc="1avxm73plf2p0xk0gh11311bfqbwlxdyvgx9hpg623ngyw90wkaq";};
 fonts-churchslavonic-67473={run="1s8y5kri1sjhsbz2mdszwy12vz8k0b5ad0rp383jrgcd710n3949";doc="05kgbvjj4w3sblsjprgq1gg0inrgrx0hpim8pmbgqj6w8xc1n9kq";};
 fonts-tlwg-60817={run="03fs5l62fbkz9rinnraz9zfz1byjd74xwvlfqcv4cvbxg02dpgmm";doc="0l4p30am56bblp120lcs81idahw3wrgmbrvi0jzfnvzsyd7xh068";source="06zw6amxdkmb9cdjvkvwgah5x33ksa9iigb4dcw6b9d3a0q8c8ya";};
-fontsetup-69390={run="0cwklm2jzf9rhn717y7s2x3wf4z098djd6zg57rz76xrr48hgzfs";doc="1mil076kr9r2a3wpn9gdkax96dzi9fg36ycqcl9h3an4zn2x0b1m";};
+fontscale-70541={run="1cq9xb7gpg43cjcz4cnwg7ggj08rnfrkbz8w3gfsg4ayp6rjasgz";doc="1vbsymgcvq8qhf1dhk864zwaszv3ai1hqmyiwfcl832m86cd2w5z";};
+fontsetup-70135={run="0f9173hyb427v4dvimfs450rav3383c6s5v4gr3jfkmz9l5nxla9";doc="1lkw61hfd435dqcv44rczacci3fmmwbvkg99lhihbxjx51y4pbrn";};
 fontsize-60161={run="0614lcl1cxc7a6irrjinp5x1rx2cbzns0al7d9f3njyyayp13qhq";doc="1c6p4yz000rdcmjkn7pgz3ckw3p42xkz4clk5dz01fnxifmmlf1l";source="0lvywzrc56rfkkwipwhqahkm8a70cnff0r01rpl92d6n6znl278d";};
-fontspec-63386={run="1lskffvb9a3jmzq4m0kgq0v4jhl39aa70zkz8ha1i5zhljwg4r6r";doc="12rxb0f61jgh9xbgzq0479zxzqwahsx57s9nl5ygrwcigwzglk0a";source="1zxfi2adixnk7fcy3j4iixr86clv9gckgwimycrmsf4wvvaf031m";};
+fontspec-69880={run="175j2zf33y5lh44x87mgp2hhpw609131k99df4fqzq9qn2zxfmr9";doc="1qysx336dixj5m4wvjdjn196jmdp6ll1r2hp2kc7jfqwzi4qpjkl";source="0b5yambwga3fqlhbfjv6jk3lkxxj9c9fyxm3hxm8nzywhwlrncd8";};
 fonttable-44799={run="1vz99pfw4akid9hjf7dcqf1fx5h30sr25i1f9q6a9frk0wpwff72";doc="1inb0ai6q8rjsrcwgv8ns6as60ifdidqzqb8x9ygaw3j5ykzr02q";source="1qjilvy77072jpbdc4p4qfy5d4n2ww2wcm5drwvai6p2aclqf29x";};
 fontware-66186={doc="0ng27m6cz92aa52z99gnw5i8s8fbkxq4354mygwnchchgxndcba0";};
 fontwrap-15878={run="185mzghp8xckdq7z6cdwznrg1pswflvfy61bhsnpaxx8wagny1zk";doc="01knmxqj88g87ljvxmf8rr72i2gh9qdmx7zsbwyjmibiw71l6pcm";};
 footbib-17115={run="1vr72sl8q1ccql2p42v3a9qw01a50v1c1rxpgmz39pp65w4z8s1n";doc="1xyq88jcg6p7lc44n2ky7538r23d4n0nhfkq25q7xg0dh8whbm34";source="0ps56l6ah0i398f38bxy4yg2i1p0ajcwczxq222hl5176g2z28jb";};
-footmisc-67556={run="1xyx6fj56vj49m9848i83jbq7k3hycx9pd5nvc3cd6md99bmx9pn";doc="0ik4rl9nmad0f9zjx600sxvlig6j3v0gw2lhxmkbs37v18p0xqy1";source="193ki23hrlnw0vkh2r54m3y2h54kzh989pk6iwjnfgf91d8nijzf";};
+footmisc-69729={run="1xyx6fj56vj49m9848i83jbq7k3hycx9pd5nvc3cd6md99bmx9pn";doc="0ik4rl9nmad0f9zjx600sxvlig6j3v0gw2lhxmkbs37v18p0xqy1";source="193ki23hrlnw0vkh2r54m3y2h54kzh989pk6iwjnfgf91d8nijzf";};
 footmisx-42621={run="0f6csxzkwbf4nlw6z9rfyys1f7fc0vpdi2m36g7y3k9l3j6wb3mq";doc="1962sivh4jipsxd0z0cpzpd0jdw8v4afbpzfinklivnla2c9hp4g";source="09w5bfx94533q36z3k0a1sf9jx6acz85qgqypgn6b0b5mkhjsmar";};
 footnotebackref-27034={run="12vxch1i8x0k8d760vgq61i7j3kkylgbcxj6ggdv8wzd20h4izyc";doc="09dvvnjvika3617zx438ca8z3fmdkqbxx9y73pdhn6gaggfmzr72";};
 footnotehyper-60374={run="088mh736125609bliars0scv7v7bx315ajk801yj28vskg0ki5d0";doc="1dj6kpqar8bh0qk0qma2ckp68cll2ncllqfda4ffmc5ljmjp98m9";source="11dg59x87a8yjq8j413gk4p0bmpq8awwh50c6vs9rrcgv67mbycs";};
@@ -1500,7 +1511,7 @@ forest-57398={run="0q1xd07z1ccqrrfl3x0fg35sdv2kcyl6vgps7f6gpk5yp8j7d392";doc="1s
 forest-quickstart-55688={doc="1bjy0bfkb90nv2dbdw8hdrm3dvm1v0r0m7a0l44ckw48vnc6amvk";};
 forloop-67017={run="0mqlc65g0khj1izxpgm7yya2klazsqggz2xx61ni38z7kqhqs58s";doc="11y7afy69dkp9rabj1186aw1d8vfwk3vp9raj0brknka6wlgcijc";source="0k0skv10m7z44d20v17yfdvg6vpn6m9ajn973d6da9cshxvszyiz";};
 formal-grammar-61955={run="044fz33qawb2s81c8walxiz0qjam7vsvsnsvqchmf4izd0svw998";doc="11rj5pbampim79ffipm7asn8q7nf8yy7l96j0j8xjyfxcqqld6ca";source="0xy21vgswxjr80q1qcx633g09qivgkd3i9gf0fwjmykva23q603z";};
-formation-latex-ul-68791={doc="1mphwdmz61p473y2skv3xw7r7dkqfqr1qygnbg7ih1ai371f7hdz";source="0c4a6hgyvmfav048pifdczscd4cpd6pv0fbaixsaflkrpfwkn78l";};
+formation-latex-ul-70516={doc="1jpw01lsl5lialhk0n46v47ddb66wn6h8s3crrp06m0fldaaq84x";source="1vcchlg0dv2cmkjx16hbbzkvppva3mqxn03h6m38gg7q9w092bc9";};
 formlett-21480={run="1gjdgl26ma0sh15yrgi8kpy4sq268jkz9jmyw66iy3d4k9ybggsm";doc="1mm2m4qgiz0aplbyf3rwzhpfzhyg3mfmzc00z35kv6s5phcmlnf1";};
 forms16be-51305={run="140xh5578cpjn6mfwnghy38alz4av25gha09gl7c7qxljgpc2a7i";doc="0wa6pyn8l8d14d47kqvwvsnkv2s9mxfhmzan7jgzfrmkb74h7xlx";source="1l3ci86wl6an48a68vfh4ynajq6j3br8wbafm8w8c0x810hb141w";};
 formular-15878={run="16h5hf50ngqarcxk4gjs9x9mcycmj5cqwy5pb6ffpj9xbsxn4r8i";doc="19aq7sbghvrif72x7vzvabrhwj7lgsddsbdqbkv9vhmp82452vyy";source="1s8ngbw6s163dzj9mi629yd4fisxr1gl8w8i618my426szc1vrcx";};
@@ -1514,13 +1525,13 @@ fragmaster-26313={run="1d59sjzlvygwq9b02gbrfra4cnvmygza80b5rkghhhpa0n3xnx9p";doc
 fragments-15878={run="02m23bx1p090m6w1frb2k6m0cv6jk8d9fdbmjscwa7c9c55qh5gd";doc="11kj5gczbhb0imfsf30hc74s50iwq4zfs79j6kv62ib6v3p32mm5";};
 frame-18312={run="17r35x914f3h72drsszy74ir5phcxmkrcvwlrfd11li0lsmiyj62";doc="0888jcccsnlpzkynpg8mvxy2mnb2d3xz41bi341q9fdbbzs5lmnn";};
 framed-26789={run="0fp0zbq3bjfqx87zb01m5ffn8kw8044vkz8b9cfndz1ki64d9x4r";doc="1pjnqy8zl5zkadpkvwa35khwjk1nxg9pq0h1wqwgrdvqk6gj0cbi";};
-francais-bst-68686={run="0irbq10fv35k09a5jdyxa9c1x56k1adxhs3rmdzs061a3j0pp1g1";doc="0c39ya4kdhl5hialq3fggf6vkphg2nb166avfzs5708hc119ys6k";source="1rlq3j5xwci45gb0mx8p4zqp4fsdyck4qzdmz4j8p25mx7hybcif";};
+francais-bst-69866={run="13zc3d8ppb9p53gfdssqcswz5bp3pfacxdk0w3jznfznkwpz40pi";doc="07ya7r02x7vj1n7q5d9z520vdnlrq2384p0rk826g3mhi9372jna";source="0zbk98667mz8lpv89c31q8cblsqs54cjn8i3kg49pi9avb92848f";};
 frankenstein-15878={run="0zj1gcl4gab78qcs2rv5i9y4q234iz731x2hnab169ygql4d95i8";doc="0x1fp5xc2qlx0pac2vqm8567fdh8i97k25ixr28w7fzwl9xnm91x";source="0ag37z3klcy0jvcvvj7v14clx2dvv6q43lh6gw83rpsx51v9wza4";};
 frcursive-24559={run="063909r7iga0cirxq8qx538407qly4p2a440xq7c603fmgcb8n6k";doc="147sa2wcixanwrhdh3ns8fg447zh5f42z8x0aw41xhk7pxncqrml";};
 frederika2016-42157={run="1pi2bhbxw9xg78w6d6k4l6p1qnm4nh6m8k3bn76kv4ascydc9hfg";doc="1vyy278j376swl2sjwxygqm6mi6s51aa6qypgpw3w2g5kpsqqxqb";};
 freealign-69267={run="0b1b3laxjjjr45cagwakv8c50c3cmw5iycd76k94d9nxhgm346vf";doc="0pz47rbacyyqyh075fz6pfvjpi32fl859mckpi4v0kwr9yk6k5aa";};
 frege-27417={run="1n0qak8xsi8wlg7r2daszdvi3hv9gmp7i04phcnx4hnlr68842d9";doc="0hb7a6c0i0jk8cvv2vfr743ysqn2vh1y6amy7arc4zafi097nwly";};
-frenchmath-69211={run="1lf7g6kqv9bv6g21c99mj2i0g2v6x740rspibr6jxic6s5q4n3s9";doc="1znx1d2cwa29nic7jcwx1kacfhpig03xj1gn0ap94nz2q5rr1rhn";source="06a65spj8avshffjfp4p08051mxgagaw38i0i8qlk0jp5x89f8ml";};
+frenchmath-70163={run="03a7mq7qb0sv27ly8qaxm1fjmrc1z646las5f85rzp3hdzam6vvs";doc="1d1j2wq15kv8bsjbm5p4im6ixbdj3f24vh1a3b3a8419bsqq60hc";source="0vdh3g4dm3za19wjfbgy84pz3i33k3h17028nwa1wsgpnlnxn8i7";};
 frimurer-56704={run="0d2534172sqpzg4zj2fz0k1qa2m627jzqdnpgcak4fxighvx1733";doc="15g0293xz99w400l3rj99849va3swi2j8hcj522qiyzfcx5j7k74";source="0qxpdybwz0rp748rqfs026jvps026sffq3c7zi7bdy8a34mqmgsb";};
 frletter-15878={run="11gxmdwwzwwdlrmycdxi0y123hfikhp9jv1jjmhgsmsmmxsx13ly";doc="1pzpz0q1hplni18m6wkwrhknw15h555qfdxfnnfrnrmsa7n2q2bl";};
 frontespizio-24054={run="1rdgh6wvxk0rhkadcrb1f3ymgxn81vbx489z16k88wkk1p0r4749";doc="0mwdqry0h2f65vrki3kvqpjnf1nm5n9v3ljmn77nlvkarqp2kb57";source="1p2c8sdrm0ay9nz0dqrcjigzsjki15fry6mmhqcm3gqrcscsk5x2";};
@@ -1533,7 +1544,7 @@ fullblck-25434={run="1bxnzkidpszq5l2kfilrn8ny1gw680gcx9gz9975vylh5kissrmh";doc="
 fullminipage-34545={run="0zy9vk5a0bljq3my17fw4jl8rhd7vdzcmw550ps8zbjbhxphssrc";doc="1n9lzacq920lmc18rhavz17xnm92lm964pglf6j8i7yyj5aib61c";source="16q6f9nss1jx3pw1xq0j82y4gn70hdjaj9m7pq3947m6bkyz92vd";};
 fullwidth-24684={run="1kis1p158phkwxdfhpb4ihfs2w7wywj1lighc44sfkpima9c4nmx";doc="056k7w66rh0z1kxf1m91sbjhg8kdy9jvfkwm3jmi5mkclil5ihi9";};
 functan-15878={run="0vxwabhbnw3dlxzlqz4yi4l4iw17a0w7lj3gh2q4l3p9lhzr9qmp";doc="1jxx1inlzrbzm784zwkz55ykdqhn9ncz6cixs2wqh2sx1dih7cwn";source="1a2x71qhjdr2ayii65qivjmwmxzw6id3vljd8nv3l04xnp6p5dnq";};
-functional-65485={run="1nzjb56bngv2h36vlww234fndanfi5dbmbz3y1vjxxwvahhqn0cg";doc="0iny1h6fd23zws5r53kqbb126rcphdkns6w7afzwb7n5hk414jq6";};
+functional-69929={run="08j53y7lbrimnydmh5svmd3v4qs4sh7ir9ng8g7rzpl0rakzy2bd";doc="1wsqln5346ivbcpwzjhfilsgc90la1is2r159bqipg51jnlicg1b";};
 fundus-calligra-26018={run="1rnrqblg06qkwcy7f460pd1hnh4bwl47zyswa1iv4iknx00rd8a2";doc="0jvbvalqyj0kyf6cwr6zf18ylckh3fwpshwhmnv7ldg5r1ylia9j";source="14a0d7d8mlsw7qwpspqc2rmcdyhnfy6l7f57bk9v9jc8pg9fxb6m";};
 fundus-cyr-26019={run="02zz37h71nqq0f4sf00fiw80pq1q3yadnhqm2j3niz13gms9ydl2";};
 fundus-sueterlin-26030={run="1zpcss3lzhc9zkh8b91138ycwj8pihch318zr9pc6bl3ifq37wq1";doc="1pjka7j1378bqa32h0b2dcinf6ayjmzcbm4c1sdw6dsvrzbnda3f";source="1y4bg8r2hmpa38hdgkrk99v87cphikdb7sq5x9aczbmwwgmgw8fp";};
@@ -1549,7 +1560,7 @@ garamond-libre-64412={run="0cj6sla634vcp3ih7x4fg4iirckiizdggw8y5ddxyhszf1ygkz5q"
 garamond-math-61481={run="1bjskvaqq4glba1vmcksfx69p6r025sl8aynlbk46kh7x5fa6vj8";doc="1jb0kcy715fmxhbzg95qwilwnmp45znh37iisiny1dzy8919nlbh";};
 garrigues-15878={run="0qr2ak20416p5zlavcbihxkjvifzwj3cf03ipsnxlp4a0r3m0hgy";doc="03cx077kcvny07dkg9dpgvdb5vh4z7v0c80rn82vqj1l3i0qrxkn";};
 garuda-c90-60832={run="1yz7zpwdvvhzcsfcz4dc40nnaagwrsxvskc5bymmdxv1zf6m3npf";source="0palvrkdf8c8xhx9d2sxvch0lgycvn10bfszzwlbxw6qrbnpspr3";};
-gastex-58505={run="08xba3pqif87wn23vacj7amqi97yk2qgsmmawpm3r3iirir2l1d9";doc="1b5qvkpvdlsq85yllixs638p1bwv9xfqy2mkzyckqcwfcdcv7i21";};
+gastex-69877={run="02mz7znvwjsxf6n1q1lfx1wgqvl0zlfq32a4xkcad7gjr87v16bl";doc="02ihbradpmzz8h7mm21nqvmma0qqsa4sp3yzf4ll09pp19i9zhh6";};
 gates-29803={run="1vxn3j957za9j6ryf3nhy5r744gr63m78xzvlh0z10sr0bpw46v9";doc="0igxfdxyiz280ryivffq6c7y84c16ip1av8wn11j6x62dcsrm58x";};
 gatherenum-67201={run="1b5j4106mjdswm519nb9sswnpnna5v6wcy4p8xbccv01044iqlk1";doc="0afd1c352075ix46y0jrhfwlbsaibchvz3xs916qi3hd8a90hbpx";source="05dri0sgr8h29q3zxcsyhplhrkj1wllfb42d8scy6hp4mkmbsr06";};
 gauss-32934={run="0jsbvm7sh7bhs5yfl17fj1gbdqgpm7qchf07y3p7k0rxxg0f482z";doc="1f6ycdq3lpylkdwja4f89plz7wpnz73wzgjz74far6r9wr026443";};
@@ -1563,6 +1574,7 @@ gelasio-66805={run="05rr0vdiw9jd2qzasq22zfpg901l9jvighlhsgcpl2n3cfwa96i9";doc="1
 gender-36464={run="0skwbiclrpl1n55dr3lkw86dvqy3f1n0b271ygsz6rr3qa43478r";doc="1gamaakkqqf37cwwzxjbyfhz25gdzayzdkqk60xls9flp7227hbr";source="1l5p8ib5lbvq2b8pizpwpbcv8aslmi8dd554win7ssd6vhgb68j1";};
 gene-logic-15878={run="0fxddiswkvfzbmcckl6mhyipxjlr0yf0579i792c6rvrqs5avyak";doc="1nd4bxrq1g1gxcrs9lvnakaivla37p218pa4ns6jyjmimfl31gxi";};
 genealogy-25112={run="0w15jrd6aycdjh8qznvm549kzwl15v2zvs7awgk96380nzcsmhqf";doc="08fxhib7wydjbd3bf24kw6zbbz2sv6fhgmg4q2c1lgxddmm8mpzy";};
+genealogy-profiles-69580={run="13371cbcx7lg3lkzzybp7vdlrkw5nd9v052d749jygsplqby8f9m";doc="1pvh2s76kpxs98l4yv59clijinjg5agmniaibl8srpwpgcdx5ni8";};
 genealogytree-66513={run="0947fmawi8xzmv9c4k4355fkgjivkkjrjglklk6ar7jky2xsg62b";doc="0wvqkdhk1lmvk79qla34l14hvcjmw318vddz1dhl21g0cri7fl60";};
 genmpage-15878={run="0fr4m2y3vfymlwk7ik7rymifyam2jhbxn3qr2sj40zbcr9wbah6n";doc="12fxwrz5gpswyf523wm1pg99zilkgrpq8z3ls5gw9j7bdb71nj1l";source="0q7acjs7g1xh5kcmrg20k9jayaf5vxz5p5amjjd4xj4rnb1wdlj1";};
 gensymb-64740={run="0rsck4ysx86d4gfr5a1w9kam98zzclb78v5hgdmhag74a0qs1n0l";doc="0826rq87q35knzmwkhz6ipigx3s3hkzcypy977qa0r3ibcbdr7ap";source="1na3aqqjfp9p9zb7hyzz6wdd0biiigih9fq6bxygcwflbwbhks6z";};
@@ -1602,7 +1614,7 @@ ginpenc-24980={run="1brakvxxrm1gahl609psp4na8ylkggfs534nysnrijq6vf4r1ryc";doc="0
 git-latexdiff-54732={run="0b7hafll82widr8vibaqqavwwzi7m488ypm5wx14y6jncfl8py9y";doc="1cbny4qkr8dg8vnxjnjawq9cjb0h3816ad66q8b5652rpxn3zqcl";};
 gitfile-info-51928={run="0qk6r9fiv44hamlqvsgpm75nd68sgj81sgy93zsylypp15283z2b";doc="053x23sq6657lddjyk9bzadwydfh4zxl78gxl1payxmbl9pj925i";source="0fnrwcjfji5pbkh4kdsishfy85gqcvcmfqxwr5s1n3bm3prgfc8b";};
 gitinfo-34049={run="1n8mm4g7bmiawd7l7xhx9fcxv7z3l629bj21i6j9s0rfd6c7mzz2";doc="1ip59qxlqzrn8y211691cv4bg8d0yxkyvbpxw8xpzg99fpp3isqx";};
-gitinfo-lua-68808={run="1brd5rqdx2s7s21lddkkl4ymvi7zcq364qffi3wzb55c87q5s4x9";doc="19c8bavrs6jqk0760b7j608xj1mrr2nrabzw3kdvgxy2azww70ld";};
+gitinfo-lua-70117={run="1qn7f0fnbgawhm037x1lrc36mgmq43mlcsx9rb3nl9ga4jlk0mqg";doc="02my81hc89i32gsvxp9zfqs2gzbkjqn2cbijwjwa578p45cz6a4z";};
 gitinfo2-38913={run="0k3vw12yh13q1v21bz7i3m32s1w49pk13rg3c0d0l1pcx0wwz20i";doc="0586h9c1kp5cg7gk67xhy5fbshpskrmfb81m4xncaxg6ajaljk7n";};
 gitlog-38932={run="1v0zpfry2rz6xvm92gzhabc9sa157kylvp6jg298kdsbr2limn3k";doc="0pd1f42qmka0wh9b8m15nk69p6isqp74b5qkjg6ymwbabqxbcbl0";};
 gitstatus-64662={run="0kn4q6c6379qs34hmvzixvwkzhwbn3bnrn1pjwsp8lp66fv1wpv2";doc="192g75hfxg3nkaf0x8b142jzgmjzv97mpiravxfwpgfv25fayz0f";source="03kz49szcrpa6ij859a44ham0gbr1w2bd7z7p68vhwg2pcg8gq5r";};
@@ -1698,7 +1710,7 @@ guitartabs-48102={run="1akm3sbrwnbg9mzlm98zpgh187w61g74zdyq6lb21w7bw30jkxbk";doc
 guitlogo-55741={run="1zjlfd49hkq9qc1l3g974wxzw200qyiy9vbiai0v9gs627hxckwj";doc="0awpik3x75rky5w6rk9zg3cy83dgxs2l57wfg8sq9h35zmni875w";source="1hi4rb31mc3820fafyhk2158y67b90xp5wl6xxd0b5fqz2z28qnj";};
 gustlib-54074={run="1kqlqxwlx12hyyhsxyn470rgpzg6xw25ix1v5j4sski6nwspvn9c";doc="13yx3bzmbm1b1p5rbjdfsdlwxdpzdhhmm2xd05hi79wdfxbbby7p";};
 gustprog-54074={doc="07qx4xvyqb4p0cx0macjgyg0pcxgcmdxmzfsx9ah5s0dqvminwrc";};
-gzt-63591={run="01fn1j0blpinnm9hsq5wxsm30b3bggapd3q63yk2wzzlchyca98s";doc="0xncazgwps1140w7x4mhf8i8bn664dnfm5k62hihpq54vpwv6g6z";source="1ffji9j3lc6sd013d7ilkm595j6k6f5n64db57969p4mhdf4lskz";};
+gzt-70535={run="0z5n3ybgd2bwz3d0i6bl20bgyzjhfsfpl5b72y4g3mbap2d7yk41";doc="0jahxyvmgzzpxqr6lil6ll47biyipw402scn8agppqsyqrbjm3lz";source="0rkk1i5kx75gjrqsdrxljkv9bs7kc1wadl2kpr9krrmyz4wbq5l5";};
 h2020proposal-38428={run="1yz8bz4nmccv0v700zz7x11fjdqhs4hgkz8cd6bnqr3v0n8k4xrf";doc="0yd0iffrvahaci04bmnd20bszgshx28apsij1i35l1wjr1hlnfcz";};
 ha-prosper-59651={run="030zapbv83x0x1vh9px6klqnivygjhzi48fz40jb2cl17b38xnx1";doc="0i9714nqgv3ywxfybg3m9lcrng6v7ydxgfvxva7zpjpmsm3mjfvl";source="0ljl3szba1p1jj7fyw6qzm5h673d63hqwpsn1jzapk013rnxsfmp";};
 hackthefootline-46494={run="1l2iq2k1bil4l5nzxrfi4pg831kxn22ld7402y285hlhv7cj6qfc";doc="0w10yipva3ixyp91iy2y15n312gk5fw90960p3adla2w1p4qhs4c";};
@@ -1755,7 +1767,7 @@ hereapplies-68638={run="0h43apcwi4mdag2kpv9js9g8a6x83chskli7lxqzr8zqcwj97905";do
 heria-69058={run="0kqvcx9b3bg661i3mqdjxf8m8wx5cz223ifdniwkclr6h7nwrx9x";doc="0rn3ng7c8jyg438yl8i4l2zl1cwf62izfyis889py9axz4kc4i66";source="0dwcnmnlh5xp6rlhhgc70p8p6saz59chh2k7w0hvnr2p7768hfdq";};
 heros-otf-64695={run="10q1g30vma4fnqyga8279hqy2aq5wq6fv8d8nw22i9mm8ms2wwga";doc="07k4k2rrkj4wx8i018jfccs4gf2pvx8grcmz88lmw52im9ga002q";};
 hershey-mp-64878={run="1mnqsqsc99by1r80b6y4rfb3kzb0r10jsfpfgy7yragr8rr9xzjj";doc="0xh4a41lfds3yrj1am613c4629kvgvd9dfdfzmss9li3j5pa6jwp";};
-heuristica-51362={run="1sxpr7f4s5a1q2r76r7rj43drsmljmd32wxwgwj1x97a5k7x3jxf";doc="1ws9r2hhcqdgcdplhgvwhhl7c834i4rkk0xrsf14c3gwxg0x1ip6";};
+heuristica-69649={run="0k2ii054dq1hh8xj3n28mn0lg54r3xxcyzq7s3g782c11dg9l5kg";doc="1ccivk54m07h744dzl2162x82bbvz0vjvrnbxmmvrc3sk26fh2s5";};
 hexboard-62102={run="1rbyaspfnvcms41rakzrchjrkggd0m5nshpzyhcf36gv6vxcz8ix";doc="18fmqz39xwns749klira00vlm779gxja0i8g0rrpy6f1pfch93by";source="0c6a9q1yj2dam3892m6105r737fn9ygiksd4fhmbmqpz9rxlm5zg";};
 hexgame-15878={run="0s68961p0dsaila2a3symqswvgdhh4ah08aphqjfs7licn50yy4d";doc="1bfrm8mz98l8nrxgnvp8q54pr09ixm81wy1ds1ww4syczpw7jypm";};
 hf-tikz-34733={run="13232m6hybqv16f6v0bmgiyfqdfj407mn0h4m9wgh9pzwy3g1rmz";doc="070h5rdgfffjs8sb2gaximsqjzby2vcf9ffvpljkd3jzc8rznlbm";source="1df36m347jl9640jig0qrk445s0gxyk6rl74i19xxv567bxh9n69";};
@@ -1784,7 +1796,7 @@ hobby-68137={run="0ndhwgldn1na83jzdk1ab03asbbp090a2czyxipm5s82zmfa7bm7";doc="1yz
 hobete-27036={run="0825ng1xcpdmjihiffzjrvcvx2fqdz9mryq2bwffas22kf0zlx46";doc="0il6kl26r8wmm6jzii7gmr61af84bl9dn4szlnw34dgsdg0an5hh";};
 hobsub-52810={run="11j0fxsxmyd93px9j5fdarz1231nczdkfpf1qf33kcdpyb44jrs3";doc="0hdidvz42acsgy021c1dzlvshcmw6fz3pkqrwpk66qk2nnh30dal";};
 hologo-61719={run="1jhzw2bxl0nvspr0blkglm6zbmrab13fs601h54gnrhcw10mxqwi";doc="1af7406hbdvb2fb735i6y7wi4bhnq7x7sijf63zl0klpf9pii8l3";source="04d83z1pw6scg4cd1616ix291zi9dz5nnvw9xc8hd4lfxf15nx1c";};
-homework-68773={run="0h590xk9dd1vc8a5bffwy10lfidz1gb20zrrahqv4c3w3fy6qp79";doc="0q218128c6f9fnbrjinxcxql0gvlgycnr687k0nfrid96mwqm9f6";};
+homework-70050={run="1iqf2x1sl8cd58174gr6ksj2p7nj1pw5478j5aaszwsc3lg5kbm8";doc="0bc5yqhd1qj0jn17ciz44xxihwkp7xh6qjjq133y7ijmik1blli6";};
 hook-pre-commit-pkg-41378={doc="0mikg4p9wxb28vgwh1acgdhwa2fqnc8rw3jg355d6s137m40awc6";};
 hopatch-65491={run="0r294p098z0qykrh9r4yxmc0w72mz1nmxqbv418pmbn15wgj031v";doc="0qxa6maigbzx7hc3nss3wmvcpyc9wvhq0pbzni7j0hqyzzsz3vv9";source="1kbk80432fpq30zgix8waxq87kjd2bpcv72idaly8yjbj4pa1l1x";};
 horoscop-56021={run="02kazmk5sa40x0a4zb30gk9lkky0ak825gczbr5z8wchwpy4i1ac";doc="0w9sgk2j1fzkcfzn76zpygrlyi9fnimp92mygsq2z6rpblzd1qyv";source="0c6zkcb2057y9x7mz4q3nwin8h8ax71yaam21m91gk6ad9k8l4ij";};
@@ -1793,18 +1805,18 @@ href-ul-69359={run="1gf2kcqh60ilzkd2i1fc782db4nxqgrizz6h2p0i2lvc4qplj95i";doc="0
 hrefhide-66189={run="1lbfx61xyvnm1r24h6vrp3pnmci4j5abxlaanhni19j8gvqkri3c";doc="1sf697hjryz1l82ag8h2kpxgmwa4fzmwb6ki1wsnl0y1qkl9m1k0";source="0p4vqr3cjnbdsrkv049jdd6yr54xz40lvgdyx6z2wf79k5fj4z1q";};
 hrlatex-18020={run="0klc0pb2b2dcixaqhgxinhy18rp0lwck7129zi5qnpygzfslpdws";doc="1dlxj4rv9gaxd6i4ns4zmhykhxwsacw6m3m2jmk2lkc3sw68hsyh";source="14cw35brx8mqv05zbgrvfmmjhxyryx7dmj8dk0fkimqbyvhvv9sj";};
 hu-berlin-bundle-67128={run="109hjfg6p3g54pz7n6i64ggqjmvjqzmjp6ipddji0mnhkhjfww6b";doc="1j2vjhk6rnsj86a59cd081vfcqnb93lz6szis05cs53k8pa7yh52";source="05x8cwvh5xkjjw069lpw7pbsnb5swvf9k2c6l2s1v0w1wrpwg7b9";};
-huawei-68336={run="1byjwc6yjfv8ynmbdjbljgm4592aaz0dscb4plwy5qaxiiffsjxl";doc="03hicqi8j2mzc6x1ay0blwjl1aj7n5j590nf0qc900zad7r8jlm9";source="1sfm0vbsrm7a8xa4jn3ncnmyn6wipc4pr34gk9x71hxyj0hq3qm8";};
+huawei-69871={run="129xaknawlcr97mfw5dz0ipy7hnhgifl6xkb0fcf558s7gbpaxpp";doc="0cy8wfqpbl4cryndsah2l6bp50l5qzgvgwh8fm3543q1v9s4z0rg";source="04k4an9bsf58jkwzwis4blc4dmphgqb9fg9mx5pj4hj8y5gaijhy";};
 huaz-64723={run="1vjfx3c2hdv2jzqz09v3ki59dlmgnw0ff6m394nq6gx0qqk7xl6m";doc="05xsh7jvy9y5v9vl25br8ixxbyfd754p0hihflrymkv97f1b0nlf";};
 huffman-67071={run="17pgzpbhah5m0gljhkqymv5lxpl5bxxgif9m7rnad20x4nmyzz68";doc="1r6a1i3j8s4843gdvii740dl5rbilgahcrs2xw1zcqpq8z4xbfnp";};
 hulipsum-56848={run="1wfcsaff7rja3n0151ddzbfl9b3gkfkwq0vp35zcrd80xsqlw935";doc="0994kin6fvbk4j9rp53vjp6ci050zxsf6z3qi7zdfxifd269fhx5";source="1a5mkkl36dk60baffj3an2sa382p39j2sdrgadczj5r9pm9q0am2";};
 hustthesis-42547={run="0c5akc97v3fh3skxpgmffywca8kyswmaypkyxdzwrqb1k2z4xknp";doc="1llsyhbgdz9k6swry84q539yjsvcxj6hgirqcw4vbvsdxxxsbyn1";source="0nqs1ifkhhzspdwg5nbqgpd2309aw9r65cav51vxpn2abss1q6a1";};
 hvarabic-59423={run="1cagm9zxkhrck5svckh7i0c3zx48vy0h6f2nhishm40g9q9r5qay";doc="06g6wmxqgfj9zz2ph7gwgndgkm2kzpd4ci7pkwl5qm41ik96l7a3";};
-hvextern-69064={run="0f7c63yr0fn1zf5a5kidxz07gyd1nphms1cdsmxkf490f7xh6xxd";doc="1ynd6m5zw9fgh4r3f49p2cp0d5409qmavyd5c9ykzagzbc39f0r2";};
-hvfloat-68586={run="16h12i3s0n4cjlh9pcfy1s4q03ln010dyma8myqpjqwaqb6wlcmk";doc="0cmlhq6pab92qg2bslk4q4hkb1sczyqxknplm687zp527fzklasj";};
+hvextern-69651={run="03wma227maj0j0f38l03vnm9hvqavs70i17nczsi1bj9kyfbm7a7";doc="1qh92gavgygisd02hvbnp675mpv75mb3w98zhb67q37dy80v7s4c";};
+hvfloat-70400={run="1xs6y5cryvsqbwc1cv43lk5jslmi03xi4z24658w09yxbi99lzhq";doc="1ahmy559jzha5jack3h1hnafq27lp7zl5wsd67m9vj1gny7zcsqb";};
 hvindex-46051={run="1wk4q29iyqrk83kafwhah5gvvj2ywpnqzvnza6cwrkb85fd1q2i8";doc="0vcdmn3xc4cm3rkdkzi0qvqakgkc3hrgy8nycr5c8vcb6xaiw0gr";};
-hvlogos-68568={run="1skfin78zfp4wlggm0b1bn1vjmf94nia0spg5kg4y781b85lyjw6";doc="02lwid7nznnll5mfpykxi2w6gwn5rmsg2ycm88p2hrbjihz34fbz";};
+hvlogos-69581={run="0g53pwri6xrqa4a1x277iqivhy7gsb2khj87b3r3vgxkbrpn5aqj";doc="17iph0xsl5snqp9xmnylwr3cp5z0f1f9bh6m91scw79p5nl6rlyb";};
 hvpygmentex-62405={run="1rnra0v65wmz8yqwfa6zqqswx0m7j54z6wpzvbrp2d5gx8azsdv8";doc="16r1sqsaw8ij5jxf0ygm2kgdhxpzsq5g61jhj9rq0zhpjma7fhdx";};
-hvqrurl-68693={run="1lxpmj84cmfrxw456cm9dfcw1zxb5p915h3jp1x3h7w3a2dnnyfm";doc="0gfsjs5q90cip5z0dz4qz0lb2d3kvm5jja6drknh3lddslak1lqm";};
+hvqrurl-69723={run="0kyzp9m2spgzyz5swrrm8xizim2mbjpi8w8xax0c1llj34k1m7vp";doc="14939z9p5f3h54n0kn34p29fz2smbqdchxakqx7g52gf7gqmx25d";};
 hwemoji-65001={run="1vkflwxx8c0ckx7kz9mkh2qkpyxjjx9zmp940p9w93x4c09bs6l2";doc="0i18fcfbvyv4k578bn00w7ngk5lxp29n1j1i52vjwc4cp25lfgys";};
 hycolor-53584={run="1dfd149g2k8cq3lw95z6r4knyq1mgirdqnk9c4lmd7ip4rcs0vi5";doc="1pc12vbn1yak6l6c1fgpnj0s88fg94nagj4b95mvclad6b546g71";source="1f5jv91vsib5vk4byr0481a8j5pvbwmhfqz2qd14ck2vw8laz4ap";};
 hypdestopt-56253={run="1753c7vjx3smnhl1iylg4x0sdcqfg6gb0wdbwqmlass4qdn494w1";doc="07a2dpvvyj2r2691v8izjnqjksna1nm00za4sva1npcrhkc2qq1q";};
@@ -1813,7 +1825,7 @@ hypdvips-53197={run="0ax6n7ki47jyzp5g8781c7rv54hwrl0fg7d1bwzbj9bmqi39df4v";doc="
 hyper-17357={run="12737gd2nmnalkgl4d2sh45r4d621zl6g2zcih98m7dw8qr38w2v";doc="0hzl3fzgmn6kyl6p4d98l9ycisfhb9v50a1m6n8q1k6jpvr10z9f";source="09m0kdcs4kqksqwxf29yq4l52kb2mj5pxkry010ibwqw64cs5p74";};
 hyperbar-48147={run="1bj0v54k85isn3p48vmiygcvd3n06r4mqcp75hf96mmp0wvmczg5";doc="0fmrz4hlzd8clxx150fk4zbkdgbnhg3b7ck10225b0n1lqgnlh0h";source="19x81f6bki5mnx1nblrl0ji663q0pzkacy5lbjsqyr7krdc33fyh";};
 hypernat-17358={run="09lnsw7ycwkk71fyjk8zwgzdjv8ff3k028q7hr27dqsiyg4hjg7a";doc="150ayv12ym9h68a09h1xakdfzccpix1pff9blkzjq6iz5imzzpr1";};
-hyperref-68972={run="0jmgr56a42db36625s7yxv9n46qjmrhcs3s9p91l86xm6g32nzlq";doc="1s6ykvsm30z8nds9w3vnj7k7h2gb4fajkchkigaliyv5p0bx5q58";source="0gfdzfyclccssg4yc2mj1brwk7lm70jcsklcxzmxyarchsnrx7jl";};
+hyperref-69523={run="05yj1g5g4dr53i1v95x95pk6q70p7nr92k4iqcm948km567q2ar4";doc="1kbcilml3wbw2rpmvn85hmr3wss907n0h521d20kgbjvpancg0p0";source="0vm5ma9xz5bi59g92dxwn7aahwdkcprx0kb346s3l15pw9qhm1i0";};
 hyperxmp-68251={run="1bgizrwr5wpr8qprjwyf9z3f8jw0m1sq8qzw886j6lwxlfg6fp9k";doc="0srwvld1grn4smw2pnr0fp2082vvz3x2bj4lycvx036991mmnr6h";source="10ll53lhsqz20cp80mvwy1z9qna1sswappy2ifz71m6v304a1q9v";};
 hyph-utf8-61719={run="14jj24fr6v74vj8wi2a9k9zk9vnrvmy1ni4zn24dl5fdfw75n5ik";doc="11n1blnx9i7q2dlhyhf1dxs2vnldc9r8f3k6diix0i1np8hpz05q";source="1cff5ijmpxc752n6cmpfzn1a10ihrkz7n9l55gz2k2q0a00m2ssh";};
 hyphen-afrikaans-58609={run="1kn57mzrbk0qhz69b1ysdqjv8xirsb40yz61jx146kqc4p1y96lf";};
@@ -1892,7 +1904,7 @@ ieeepes-17359={run="0nipchw9hdlc7am3n052bszilwj192pfcnc9p5alqnffrd8c4rdj";doc="0
 ieeetran-59672={run="09j24j6kpgjx58yghh902bdpkns025v9av6ym2xwslmv1ya31pka";doc="0y3bw20f1sa7dacqwrwc43masap5sz23vna8bbkf4p74rdgl3bkn";};
 ieejtran-65641={run="07y254kl5wanv7d2jyzhwlf5z6n542217f5n7gdyrm4jryzhb0ly";doc="1l5cyqlsamkn3yjdia1zbv7lianq8jcjl83pkywimxnybw0kvdbl";};
 ietfbibs-41332={doc="18ypa96z1gclq4amka28sv26pm7lycak68zf4b3sf1bx4ldnzmxq";};
-iexec-69230={run="0fy58y8g2l6p1xziajsf5g1pvs8nplj5ml5jwakl7czjvmxylsaa";doc="07r3jc1wsfkbl0himc4ihzshj3n3hlmyb3js1885n279n6hn63vq";source="1afja904bpr4a753khpd4vhafw5gyspmzl9rj79q31pnqjhnacqg";};
+iexec-69420={run="1fn85bszr8ryaykafms3y0yfgm469vmikfg2mpajyn5bc7pmhnb8";doc="11j9lf6akvgsqjb9h9i69qxxkwa8h2092v4znf8yjrdcasd4fwbs";source="0254awws0vimn7vlx4gjxn03dfahdzwzvmxrj6x5mmmw32xvfhhh";};
 ifallfalse-60027={run="0pn37mzlkpswyykciwgfkw981098gccqmp7wllffr39qxhcj6gdl";doc="1583p9f3lv7kkjygqv368ag70jq2b184j47v32aqpgnwlmyn55jr";source="11636chvmy2icfq6f7mvdq0fpcn36yl15g9ffpp0flqdq7c8nd14";};
 iffont-38823={run="1a4zx0mysk6i7awvcjv2y1yid1k160icrkqkvw34qsgs35qnqbbq";doc="1iqchl5nra5ldmv5ddpwjcm84whpsxym34vphj2zxvzl0hqwrc2n";source="1x187pafzgg7h2vvy5dfc44y37q45lkzqfkxh8b52pysxxl23014";};
 ifmslide-20727={run="1n4dmmslpsx9fv9wqiipcg04lasym2fbgsqkvvffqmx5rszgdpha";doc="0n7hsymjs1zfjc5gbn26z2wdl5qicc7pd251s0h4qnfigq3nhr08";};
@@ -1981,7 +1993,7 @@ iwona-19611={run="1gf8kmpmp2cjz5sg0lx8j0kr67a5xshjkghpiy70jnaz7k8fbrgb";doc="1sk
 iwonamath-68144={run="10nr9phqmjvbg9hg7fz11dap8ncnxx0pbpbz56pna5kj37znmh7a";doc="0550vjbv8b0z4v0zwgkiw68fg02aj8nznfsf0qpf3isqyl9d94cy";source="11f6m9969lcvp3cw2gbdv4gg4ggisb3c9p090v7nzzyadx4i2kcy";};
 jablantile-16364={run="07f298cfha42q2d12xihaqkga2iv1id2wa5ph8a61z6ckhchzz69";doc="1lp90rbrji8nld0wzry2nn0m2zb2nrqnqyy85p9sh9rmrplhj8f5";};
 jacow-63060={run="1gqjsdzfspnpps2p5qmxbgrkc8bxihmag0w2xrvm26afmh376djf";doc="0p6xpz5n961hyfzjf7crgciig5rl95wkylikmr6gb95bskdcybkg";};
-jadetex-67493={run="0gsmhql8p421dyyv1b021sv0hsnl2y4m8wj3vkcabhpiql76yfyf";doc="18ljn0p607hm9655v6z6xs2apkai20l2mlxwyb2asqa72s6x79yb";source="0vrqpjn64qlyszf7d2vwkbd1y2lj5lld6w9zz1jqz1f0arhq33lj";};
+jadetex-69742={run="0gsmhql8p421dyyv1b021sv0hsnl2y4m8wj3vkcabhpiql76yfyf";doc="18ljn0p607hm9655v6z6xs2apkai20l2mlxwyb2asqa72s6x79yb";source="0vrqpjn64qlyszf7d2vwkbd1y2lj5lld6w9zz1jqz1f0arhq33lj";};
 jamtimes-20408={run="1sn588j6v6gxfgk31r861s7cpfk2ir7ip75hm31rxi8s8hv8s7s7";doc="1n91f0b0bjwbkm1rq5w2vwy6wlaizlp7qb8pxm2wn08b5a825hvs";};
 japanese-mathformulas-64678={run="0x9k23g95j4wqf02ibj4zpfgxa3vlhgckax80lwm5flvr34bbgdv";doc="1iy8q3906bl7j2ciw8l3162pjw067qkbkdadj9v727x3lg29aay2";};
 japanese-otf-68492={run="1zwjissgwzkjrmh82xixax57wf1ycz239yl9wmcsnn3wcz04jg89";doc="1xzwpyzw3f13ij6xnhdhmxxafiwqmbjbyvv6c6cfbzdw5cpkvayy";source="1cs0daf9dyx5z397lak5qmanwvkbh49nflfaq6ikiqhm22hg3w1r";};
@@ -1993,14 +2005,14 @@ jigsaw-66009={run="0h5g4vrbwpbxbw9dwscw2bqg7sanh0a30bbhw48ff9ic94bs2407";doc="0a
 jkmath-47109={run="00nh8cf002lysvn6qiyy5mcs2n2z5ppr0x5vp1akbz0wwhkhw9h8";doc="07n2xxfwk0krbiaphfkkfnc8mgc8iqmmmdiz0cj6s7688rlwij0h";};
 jknapltx-19440={run="1jw24izfsw3l8bn27qci3mblmhpkal9wcldhjll7h84fgjb9q396";doc="0m3blfj4ninra6zn501x17q6b2qzckzcavgihgqmk9q51yibd5aw";};
 jlabels-24858={run="03fpym9q84g1b0pns6sdsb4jx78aq7sclr5fkm05ckvkk4v3wmsj";doc="09qa8y6axg9pvma507b9w63dwd2jrxnmd64f5rfd7wpznamhbc0w";};
-jlreq-67400={run="0sjgbc6x16psaa50bfzwq1fr6vlmgjwai5qzmf8jcyask21j9jxs";doc="1y5yajzvsy9lvy79q0ma9j48qbmif0nx9wpmi2p2nysfzafrlsy8";source="16mjb1rnr4vnc14na947aivcap1wr33bhb3w82y5nj5x4vfpycrg";};
-jlreq-deluxe-66115={run="1gmbc65qilf6im9xl26440kmvyn56ywc9r5sjbpfd4aknfpwsx55";doc="1nka16c0wyh7zqvqdn836ygxg642vzhsb3kpzwr2j3xkg4kmklsv";};
+jlreq-69932={run="1inm5smaynfsdqbcv8xiva8krsz7q37g832qmj93pqfpm1yjxw4y";doc="0m4mf81dd38l6lxff46lxjizlif1lhs8pxr30r67f27drvyb5r89";source="1hv7xsrkikimbcmd9qbhs963fbl3xi0syw6mr82mg1hnl72fkps8";};
+jlreq-deluxe-69971={run="0sshiy8iqhmsjp9srg24lkqpzyy49wglacy1qjg1czq7al27p8hp";doc="0bp2yh9996dr289azjhyj16syjp3h1p47cb57qdgqmig0s4xiwyj";};
 jmb-52718={run="1a5nz825jppq3pl1263w2sbm0a48kmmndppfpp7vi69n5j2248dy";};
 jmlr-61957={run="1vliagbbyy5nzfs8pkl71gy0zvjzgqibrh7c480aampwf5qi1gq8";doc="0mv7yxa1rn0qaz3qkzxh705ia27gqrjzpcqi5gpp340hvi8hm09g";source="15p4dsbn25gpsm7avswx8vw3ljfvwmwbp91qlzm4cabsb54kbnhs";};
 jmn-45751={run="0iq5ky3llx50smw80lpylv11jmqc51m5yrhlslz3sakmgdqgg1yi";};
 jmsdelim-62630={run="1087jag55rnf02r9s5v7brfqhqncibq1xr0xjq680lvb62f65ln1";doc="12k6m7i81d6sblgqijpizssnpkghq5snf6bq44lkxv1l39flzjrr";source="06kp4zsdzi2m26h9m99x6kqc0lfic96cidzb63mvmdfqcf2plba9";};
 jneurosci-17346={run="0ywl1nlysc5fk7v5cdmy5g5hylz4ll20nnqxsvymsxnayjm4civ7";doc="0a8almw0x4b7v3dsdi9cjv8vzg518fl90zyyxn24p614w3zr01sj";};
-jnuexam-69161={run="0w1jrrfbaa7wiffic6r2s6kr79zva1l9lkl5dyq9lmwsrkh1mn8j";doc="0x33wpwxriiirmsqk0a6jd8lm73vybcz1wn3lg29bywpa5h7hgl2";};
+jnuexam-70117={run="0w1jrrfbaa7wiffic6r2s6kr79zva1l9lkl5dyq9lmwsrkh1mn8j";doc="0x33wpwxriiirmsqk0a6jd8lm73vybcz1wn3lg29bywpa5h7hgl2";};
 jobname-suffix-64797={run="095881x3s3hyj6kzhymnzp8xcw89c94qrz5654kzs9mqc2iy28ss";doc="0ng9dzmx53p525c0kppl33i13xwdsamv0d6k1j8plfvjy86z3ay3";};
 joinbox-68003={run="0xbbbpw0yvm0hrll0yxcg46bd8gl77nb63lljk1pfak64b055clw";doc="1mr5h8ydiv0rh3a9s61ksmbvq9kd3wjaa4zx2hbg501dwmyx42li";};
 josefin-64569={run="1f93l4f6gvsnnzr0f3gpvl9y9i034rhxcdz8c282bn5jdzg93j7r";doc="04sva62hzfphzcmk4jhmp4yiahg7kzjcskviq31lhy83d3600aa2";};
@@ -2011,7 +2023,7 @@ jpnedumathsymbols-63864={run="1x9jdzl2hljcm8ia7w6b2rb8zbb41y7vyi88rvlvy3y6i5v3wk
 jpsj-66115={run="0yv7lkv7sr7qhqv0rmyislf0a5rcd125kqwbnfj3696cwhm5aqf4";doc="1bmms10hgyl4gs91i2kpds2mn9x41ks8fjrislj2zl8y3vqdkc81";};
 js-misc-16211={run="1b26v330702mbd9bviq6sr7pg0338hddzc84z55fsqjd85fp7zcz";doc="0bs30a1m8cbv2824xhj6k3jiv6dmdp6jjzsinhfdwiizc2kzriwv";};
 jsclasses-66093={run="0g59rxplv04jkjzy4x62lldf62glsr9dwgr550cpw91ws2izcx16";doc="0r3a8z11g2ngk97bd79610l6wnjy4rdgqv2prn3xcmqhrzg3xf00";source="0x8laaf3rw2z1587qx6ghvcmga3gykvahrjma7x9m8mg6ljh3jpj";};
-jslectureplanner-57095={run="1kciz53cg9p1f710j5rw8pilfmbiz755a24dqxckam98jy5g4b8s";doc="0lcq9dygfjrs63yjwdkjkssxyfx6phmbydh6c8lcfpkg984pfg5c";};
+jslectureplanner-70448={run="1wz5kd7q9735qc47ga89f47f4c2g5lf34pm05ck4y1yqlazzl11b";doc="0gbd35lgbv4z4s64sxqnwfk09c1pf69qh1839lwn4j5nayd5aavs";};
 jumplines-37553={run="1d5w5nh0pkmhjjjq9x2n4r72ygjh2mrbdr23vsrh8cyvj3xym4w1";doc="1q0mzjyfj8vfp42f8m11g6fyx60mb33g5n4i7pw9r0dfx8y4jvpd";};
 junicode-69355={run="1vxnwzvcikwrvx9wpvrvwn4k7jh3ndamri0y5a4wjc8m74l30f7h";doc="14w0dcn43s9mdgpcz0vhwh2w56n90saljnvkg4wad7aq7pxvnbln";};
 junicodevf-69374={run="0cch871h5l90pfjfqw6x27dslwh60yg95y2g1hyi9q8y36cjrs73";doc="14xl1837jbawj2lj16ym7yi4z8mp8zvzdz6rbkcyd1rbsfkbvfm3";};
@@ -2031,7 +2043,7 @@ karnaugh-21338={run="0a8bbdd8khib2bfk4n6527d5ggx31gva1fkqbfw2jwc5194rk360";doc="
 karnaugh-map-61614={run="1q4xrsxjmzvfhivg2xycfpfsbcb51nq1cq255slpc06q4ycyxbnm";doc="1mnwkmkf4lx3cd11rzgqq2rlfc42728zi6xj67x38wqqpi9ak15x";source="0vphzrj1y5r6zmlqg4wxykqqww0ihgh6rw3z59c23f1v3j83jj4r";};
 karnaughmap-36989={run="01b0ndcd6vcg4y6v4zbi6cymfprv0s4vhh20hwlghh3wy5aknwvl";doc="1xk80qqqpxagvwp1vfh9vgrqihakp7bkd89alb3j9bqaikgdiqdf";source="11b5bjdccy4p3w65268c8im3c6bam9ql60mik8pifwfbn36bhpqd";};
 kastrup-15878={run="139ynj6jr5iniwg4ry57b61bpalchwmk2lvxpzi6rzhp42ifv1j1";doc="1bzjky4plcl24fg5rwbjizixwfn7nkbzb6wwydxd7s2053zba07a";source="1c4ijjifc4lwimzrhp7ym5804fz5afmccn4bnfayypmjqpc8x6jw";};
-kaytannollista-latexia-69265={doc="0rhjjazj6rgm1paxv2qvspcab49s4swq6gg1gkx0vd0105r7mi3p";};
+kaytannollista-latexia-69876={doc="0w45gqrvbjfzqsx84flyf150zj8jw1wcd1zfhd361nzazqz7b0xw";};
 kblocks-57617={run="001mn33pf532iwp3d8likhbc5a4nsgq72dirbilbdgaxqxndmx12";doc="14qyg0sqrr5b04j2ramw9zcfhbgmc9qfyy5im9la4id4b4zxrk25";};
 kdgdocs-24498={run="1p1rcb0lzcsmgyqz5750pl2r73fd18k76gry45zfsr7750kwx7x9";doc="0b2j3mw8z0f3d4pffqw2r9zxpmyvykd36sskkhfg7wa4q521nf3d";source="0sipsvbi9254zpg0bmcfin60szx9q0vnx07a9bdm9ma11qb1djpb";};
 kdpcover-65150={run="1a4w58r6krjg4aqpkg9r0pk7553nd6fqx22jqk37vd08scgh72ls";doc="0lvzbr63skkx12d6nwci537zvqcpp563qlf29id2mki80gqsx29w";source="0crbr3xrv0yfd64qjx72yz55py9h7by4rkl09l06sfwpn5ysdzgk";};
@@ -2054,26 +2066,26 @@ kixfont-18488={run="02zwdm6zja38n41pvzay09f38cam28rr9ag6yy1m5kmw8421xp11";doc="1
 kluwer-54074={run="15av38sb3pzffxvrxlbwxzgvhnxhsjhkr3qwrlqswwq1sy4a2ssc";doc="1cx0xya0s27mybl37gw3yx1rmcyvrxnrp8c4012gvmqiyqyx4sjx";source="17w0ybfzs9x8yixzl8cfldqi42sq2jpkyap8i08mvp8krqgviz1n";};
 knitting-50782={run="10x5yxlrnj67gzd5kz7fvnz0nykvvi26sdm7i3n3d0si1vjzvczs";doc="1zm6s0rd3zkir9vxvbc37big9ygnyhcqpr4p306vqavvmf5g7p57";};
 knittingpattern-17205={run="1ydq16bmviqkbf9zkrlxsh33bfn8nmyzbbi1xwfd7nsg1bhdf6d1";doc="1x1bswn2sd1w19g1szc573zayk43zi3718a9yqfzqnxa0qxvxsqd";};
-knowledge-61991={run="0459xp20v02awl3h9ada0j9p0nasaz4fwv4whc6p4hwzzw86052j";doc="190gy5kj2fypvqa7b2s3p0j25drx6rd665yqq9s2gjsqzar18ql3";source="16xspjjic7vydd310ldxjjipzwl53dw726693q7kckbfv0vmpd7m";};
+knowledge-70609={run="1s4flnxixjw6z9w7sdhpfnpfj7lvzmjycnpzb2j3rxfafvzw8029";doc="151gvwqzkl2yxdzx2b2mcvfwb7w13s9m3c2y5vv4yrfy7wfkx0py";source="0r95p5vqxd6x9hbcflfq8d00kjvwk41r9harslzh9i3i5lfimalp";};
 knuth-errata-58682={doc="0rcyw7dqcwlnf9q421k017hrx5c0d9rra6rcr3n6wqmhxmdy5mn9";};
 knuth-hint-67373={doc="1fl3nyzsf9jifccw75grhdgyh5qhj4akkkyaa7mp6kpfznipqbmc";};
 knuth-lib-57963={run="0dl8z340n6m6xn7wari4hir0syxqi0kl2fhnf0bvnmkqhqwyzpca";};
 knuth-local-57963={run="02cf32f57fr6bngiv9xiw8bh4sq53p9br034ap74s80h3bgcmn1f";};
 knuth-pdf-67332={doc="0ig3ml88gqks5j9ly73qsx0kdii5m2i46f9d9bnh7nr9bjbpmd38";};
 koma-moderncvclassic-25025={run="0kgsbg4is158j1ssjwabicw38mh2cd4n1ggxinflb8i18xsmlgh0";doc="0f070dxww75g36il70gmrx9bn0f0d3mmh26fmzqb5zmf93hyhcsf";};
-koma-script-67573={run="1r2li64g7fk7qg4gb215z2q86by2f2ah9hjlqf0wcv8985qshnif";};
+koma-script-69755={run="1r2li64g7fk7qg4gb215z2q86by2f2ah9hjlqf0wcv8985qshnif";};
 koma-script-examples-63833={doc="1s95a3vgjxrn34cpcinkyr1yw2rj8s2973np71yxrwzi9dqdjpn1";};
 koma-script-sfs-26137={run="14qhq2h6pfjy878nkglbif7yjc12g6q32kl4xfc7kk3kf9syp0kf";doc="1cjraqcc13bcq451a36i5x2sbwj97zy4srrpaxybmlisvnza7vz9";};
 komacv-57721={run="06df0hx1rm87vgsb1g8b00ak77n6zs34c7mb76k22fis41qmm3a2";doc="07sxwgrrik3vadlp9a4lk3jmcqnvfzz5ir8l33zi7sjrapr7mxxa";source="0vd6ha60dz9ddmf3rkbbw5h602fkch3zifcjip9nyfs7wgnkg3r2";};
 komacv-rg-49064={run="0hcf3aw9r3hr01f9109rid9c1c36gmg9z0258zlqgq9l8qs0bryz";doc="1g985pnkhlhyf1285w9g1zx86vldyg45r4dyp1dq02pka5nf33fs";source="15v5y47jj0393vkikpv5mqdrrygs66b20gsmp03j6v6iih52w7fk";};
 korigamik-68204={run="0napq587a4j4z0fw0ddhal0h02aymjj92cbxmqrrw19j8k8g0b2f";doc="1lxkyaqcan6jxbvi1zavbavlycp8amz6qmah258y87yl08m8c475";};
-kotex-oblivoir-66513={run="1np1zib9alvhsz8q3pk1zg8dfd7n8gvcjk55c2vb3lp9bi8581x6";doc="1pmilc2sav4ncddm4zq279708f72wjf55z51g6slqc9mmykmb4f1";};
+kotex-oblivoir-70496={run="16fs5k3n326amyf1i1bnk6bai8m9nhg8n22ij3rbpa69q0639r0b";doc="0nphzrlnya0mcqx878v8zmqaq0cw9ky2qi8ci37nx3rrzmxlv0qr";};
 kotex-plain-63689={run="0nri3fagwj6mgkcx97750khsyqf94dx5kxkf5ny0jiswnv192v0j";doc="16376wpncchxpsl57g7rgzl96w9hl3qyn3i4qw901y00smr450hk";};
 kotex-utf-63690={run="0gpdg9c7dqcg0jfq05i5gkvycskipzyk4cmfrncd8mm7axv9qd23";doc="0x0y67bn28fy32awnjyq2zy4gqnafyvbjkhs7hipghxf87p6snrz";};
 kotex-utils-38727={run="021hgi7iw47b3c637mk0g4v52h5ygx5w1060bpcknjlbg0qb09aw";doc="0l7dby446xxjwk7vl1h3w4xsid4dqd8zdspj1f457jy4qwjaqf88";};
 kpathsea-69121={run="15dldviayvv84gmc25nwnpc99d7z28yarzzwcbrqm9w9w7v68v24";doc="0gfnyniykcdvyn20fbwfvkx7i7lwf7kdn6117rkcjsw9qrspfc3q";};
 kpfonts-65583={run="0i8c7agc9zs1vzjq8w0ghkwk81hrc2qghzn7hs1wq3vdbc3wk4r5";doc="1q8h8208z0k19nw7idq45hmzhvsrnf7g3708ch3kjwaj7r9y5lij";};
-kpfonts-otf-68970={run="1sq0p6d6q189liyf5kxmq4fgmwazj05mncsjkb1gz135c9acrq70";doc="1m9iz3llhzwaqfjp101ghpzy7yca497wnxjmf17n28rd6sy8kblp";};
+kpfonts-otf-69636={run="017zn7m936190pyzqnpwjzp3miw53ksrncdj4ib2d8czxi15491a";doc="1rmhcdb26i2nsbsj3r2v75ispg9w6hkfcnbvkg946d5wjy1x46jn";};
 ksfh_nat-24825={run="1qzn0n19lslf2qg8fvm844xx5k7s8a275a77z2ynbb0vs1w4prpw";};
 ksp-thesis-39080={run="0hcsni8p92pm3l7mi56jj7mlcv5rvdpzwbv1jv5f1hb6xyx2pn4i";doc="01pbmmwwjzd5cq4xxmx3fknk8d4q3fda3680g344g5s6ra5i45nj";};
 ktv-texdata-27369={run="1md2iv0csmr5f2mcdlb3lacccwifd6iv7yp6123gra5xcp06k4y0";doc="14sk7x2va8ja65a65fpksj2nd16v6rc1f0828gmm8j81d13cci6y";source="1ws256l59plnhmw1rycfznwpndni5i47liqhazddwbg2hragfahh";};
@@ -2090,11 +2102,11 @@ l2tabu-english-15878={doc="0dqmdr3lffhiaq7pg5pn6ia46miwq4nh5vimhd0qbf936amiv1mm"
 l2tabu-french-31315={doc="0c6fbmgwv2adlxbhl1shvpa1w6xd36gmrwvkjgdp9xc3q999l4dj";};
 l2tabu-italian-25218={doc="0bgfmn5v80rdhs9wmjj6mki29p28ip1d29rmgbw4jh4z6gd4sf22";};
 l2tabu-spanish-15878={doc="1p83xflgv8x7nq9mylh468zn3hz5pv3zxprc63q51fwx0ylxfdbk";};
-l3backend-69310={run="1cwjy3r6dq601z20kd7fdsyig980v50z857hdq46b2znh0x7fqra";doc="13rszdyiffb0jy3j38c14xijpssv0pp2xd5il1g2nm92rcihfyx7";source="0wix411kis8z2lybbr7kwr8i8azxiaik78850vvsiwljy3512inw";};
-l3build-69360={run="1s3p19ncp5m7yrn5f2qalb36bqpapdc3fyajgs8185z26j5dip7v";doc="05m9182znq4dymj10qpxfncf095vsdmfcqkym17i0dgan8dakmqx";source="1x9227kx0b9x7i7rymxwlccwip7hy8rhwy1xjvn9wqad7sy08n5v";};
-l3experimental-69310={run="0fy07favznm88ww65mjswrlvbcqw594kf31lki1wbvjw7n8pp0wc";doc="1yw6l043j6xjki5wfqjls0400ybjdjxhkq3bzvgvy3x1rpysl5qh";source="0ng9df42sf2zjiy11b25mzm7ww3sw7vllr7rx385y452lb80cz1i";};
-l3kernel-69310={run="1d3wnk8zlhpkqkcgrfx0wqcq8nwa8cibpwm9i1fchmmn6ap8i2rs";doc="0d07aknkq2pxvgqpf4lbfa8qrc2mdsf5jdsq792j4mjl2gc1dbis";source="0vv8sjg15ykcjc70mcrqnz7mmnbj5lskssvh1f5if0j9xdc5b1ka";};
-l3packages-68507={run="0x158f74pmqp8dj8z68pl6sr55caijig35sqgi98s25p4v8npka7";doc="0ylfm3s3b1zqpv933n05rc9pp2zs4ra19xwashrqr31h9sc7655r";source="1cdzi56yp7fr6hdp4v4nwlbgxk1q5kafb0wxans7m8ihsv6g9v2r";};
+l3backend-70027={run="0nbamj2m9ahk3y1j1a8p4n153fzczi82cw8i9kg45ki9gnmq91xp";doc="19s2pdih2pn41hrq51g6dhsds25w4vpynjr3bb4gb1ay2gp7c0hd";source="0cm1n5xqv2rlvr74fhnim8q70sfwqx8r930w3i8nrpaiivgnq38w";};
+l3build-69748={run="13sx0gjgdrnznd8h3gr3r28rmhvwgrmzpfl821p68sw91jphqdp9";doc="0miw9dxmd9d6j1w267ibxsf8k954aq8qsbfmyay1434s36aydgql";source="012grp1nkysm6i87y31zl2m0w01j85hb9c12059phjdrmmnp9x5x";};
+l3experimental-70027={run="1bh5xj7fxb89nizm2j1bb924p0ki7dsp3kx8h8wfzsdp1xr2b5k5";doc="110vv5yflnh873rcm75fbz3cy3p2arq162665h0vm07any65xwsq";source="183n75j6hk8kvj1xs0dy9br8ysvg457q1pxlhwvwjswykmf3arj5";};
+l3kernel-70027={run="1z4l5yvl59m3jpjgnpfn8vg7phpv49wy8mfy3z0jaq7la3c920ng";doc="0mzhz15fpdn7li11fpvyjxqi16kp07f5slmj6anpf0qrzp910zq1";source="1f02ay226bivygx4l01r8xz8ws2cn84fnlmgk2gf9l4irhd5dhg1";};
+l3packages-69992={run="045z2abw3333gcr4kxdg65s3fg4dyazc3spfhwbgsif8kzgzcl40";doc="11nkrl9iafxlwz9jriq16z75rwbhpyd69gmx5j8b79vc5vy0w6pm";source="0xirdyjf3cl30mr4kizxd9sl80cdfjrqww420hc4c5qaamcdq7dg";};
 labbook-15878={run="1qh16jjmpyqdfndfs91nmbfhwxif5ygk35zlsailngpgnp1r2x7s";doc="0za4mp2zq9s1z90sgqcvf6zac7w0wqbf8y5w1qrwmlv6r6kg3s1s";source="0w7nff8c2ffrn2ywz1dahd8n4cb959b6zf3ka0s913nv04ifdkgi";};
 labels-15878={run="1d1lxzif4f3qxkall0qzsn4lh55ljr45zba0xwzyvfbwighp1vvm";doc="0fl3as2lwdga814fdlg2pwyw600cvrii9hd0f4vscfzq7lmw01k9";source="0y6mkg18jqsbqj14h52317d1vvzvn3mv89q2gl4i3i89ka3dfajh";};
 labels4easylist-51124={run="10pfzxw0d856ki2krsdpidnfsk27mg4k0vj3jx7pry5cfirx6m0m";doc="145n7vy3d0vk3cq3qd44l3a6hjmazipm7wmr4aa2knxvs4nyvw2l";};
@@ -2107,14 +2119,15 @@ lambda-lists-31402={run="17srvv0v10mczvvmxr6sfhlr8zks589c86v472g4rnmf4bl4my88";d
 lambdax-60278={run="0sr5im1ag7lzz0rkvnj0biik9z5ww6yr03ykn2w64dg1nf42chf4";doc="07fgh2x639fj8wb21rygj7yc0c7bcq4sm1bhdrsxzgrwjxn9rbw0";source="0sarj3dsqm18zx176p6hq3xv717fzdpvipvdlv8l5y5pcvasz73x";};
 langcode-27764={run="1hj7zyjxh64fax5rv32558sp2ss986fxx0fqd5xb9c07s189cs3d";doc="06bygnvh4sdv7mp17c94wx9v1lj4zgih1db6mknc3wiifi5jcx8m";source="1bi25gqx2yi8f6g8hpnqp9f52qnfpyafi0r16scap8w0sbnwrib1";};
 langnames-69101={run="1rg0hn4addzi72qgrx303skf35c03lslrlf8ry790kwr27i7lna4";doc="0ix2gk1gzvsk1w0r1whr2imdml3a6f9avw6yfkf54n5hnaxm7i6n";source="002rmwkvm5b4ay1cbxc51ibcb27sg571l2r5czfilbavh0000piz";};
-langsci-65793={run="1hf6q716lasc30d72z60ry74xz0gwabp34vm9vk33kaf705b3hxh";doc="15cp4ab6rr0zxggrdray06yj8szpdjr6fc613j27wpbjmqjzbb67";};
+langsci-70028={run="1va10za9qfhdmb9c652rh2n3qyp1v6pyjc8aia7hndik3j3p22f5";doc="1imd2wlkd8k4wfjangq43mvr4m3xj295vrwmqjya4p0jhilh13ya";};
 langsci-avm-66016={run="0xnprm5fcy8knxhldl54c5vhir4klgsmmy8l9306hmlykmphwifx";doc="1s5bjwhdz1fwnkvnrx7f4789cy0f2l0qkixdd6va6zjvylihzl4l";source="0ifsjndp9lf06anqcl79kp7rhx9gc56yw5xsr4lb4fshzzg6jwnr";};
 lapdf-23806={run="1lfmn6axzbfk03j6f12yqa0vy3gzvw1ylpq7k2ki4prb3zwhx9sx";doc="0h9wy3amir9wdqv0b8678mfmcd172zll9p5v7sf1l0w3zlbw5msy";};
+lastbib-70377={run="0ml8h5s22lp4bbf9prjjdgrvsahwaksv1kpnln696gj1g3hqh63q";doc="125h4563c5rny3rbizb6imdp1r8mc1203jkdzzw0p9113lmwliq6";};
 lastpackage-34481={run="0wjpjd3b48fj4mqqdx38sqalbaa9ab3c6rywyjqhvrd1pxfap2g0";doc="1123lz0ki4kww93952wqrhrw9l2cnk4wrrwyi0dxc5w1yfn2gg87";source="176fk84mbb6w5ql94381kz05lh8q8im7ri6rfjff7f4ymfjnh2jk";};
 lastpage-68557={run="0xds81j9i3dqbsfw9084f0cqmscyapcndd6ssk0njgj2isjxb43s";doc="1agaxsy82b8nq5kn6kpjc4g59xzvalxpim6rqzl8j13ywvxv6vhr";source="17zk90069n9nc2j4jhqwzkm9kfhvp7wlq7akvwsny9fk9vrgp62v";};
-latex-68720={run="0jx9qmvwjy0i4p5a6lnyzfcj43x79ba5gj67qz83fmxyp5x8lbi5";doc="1p86iz7wcncsibsr5dyaa7lqh173r1891pj9ygs7p0d403spd24n";source="17w073p61jl2i4w02gvs3pyvi7dcmzzng8gwc1d5kaqcnf7y7gi5";};
+latex-69443={run="0l26rd0xasdx0lyzzkigpzv9i786fk2xysa1y9jv3k62lv7g7xy0";doc="1hylcd91igvaf4h9z9djlmfy87r8mkgs75slh3clay0fhhyjdmyx";source="1jb6is6qh5q3pd0shizizn0czk48ggrw7n27ddpakxcmi1s73aa4";};
 latex-amsmath-dev-68730={run="173gm8vkn4dgwys9h7yq3zv0pcazxvgrj40ax8msmmffq2r8cgzc";doc="1ch147w7ak3al37ivkq46capg7zpc5c10inwkcmqxhk1bqa0cgis";source="1ffzh866cdx9r8b5z8vyiccxvramahskv7an1jpi6flg0b9vv4i9";};
-latex-base-dev-68730={run="19jfbx01c8wq15anrdcyz4d6bvbl0cchimjy7lirvqmj78wvkqc6";doc="0ddyhlspmiz039f8cn1qf35yi36dg6g55rbf7r6czkppykf3hhia";source="1wk7fk4ip97qnn88l34w1xwrqc4y4lahf0v1w0qxlskgmjmsjlv0";};
+latex-base-dev-69872={run="1sflchwpbx8g410b4jpb5i8x7ca0x5kgsa9h910ljfaivwwxs82y";doc="1l0sam4iqndyycsbim6lii8cj9mx465vk4f0jc698c5lrb9y57vi";source="1h579yskldcwyxp0r4xdh8k3s99qhy141gblrw1lracfyj8f44rm";};
 latex-bin-66186={doc="1mhdc8a37b9j64kc8c8171s8p7ixklbf1ijr4vfh7af2k416qf8d";};
 latex-bin-dev-66186={doc="0dwjlwaf8pxfjgby6dwr8ijnhm85rvprapm8m85avq7mnfmrp4kr";};
 latex-brochure-40612={doc="0xba20sy8q10ac9hxwnz9axh853hrj06vp7mfn12ajax31miznmy";};
@@ -2123,18 +2136,18 @@ latex-course-68681={doc="00s521wrc5gqqs5jvd1ljl04nighy8q79r0ama783ic27a3k0qhi";}
 latex-doc-ptr-57311={doc="0mamlfnxzi4lwh5cpss8zcfr64jdnf6vnj9fp48accrqdj2rpfs2";};
 latex-firstaid-dev-68730={run="04rcdqd7461r54qhn3v13517clirbim4lnghli6yn31zzyf83zif";doc="0m4jx0qiscxszpk3c6i4r7pcr9x8xdq30q1ixj4b3l2jn88mvhlx";source="0m7xdjy67arisi0l2wgjvc9i89g2xdp5gk5cjqshb8hwxjw21mg0";};
 latex-fonts-28888={run="0dh4kgy4mfarlsrgqw4dm5zgfhcfg9qzh8s2wjk6w2g0jfc8rf3v";doc="0243qbrs2w7qh17nh8m4ivj35gfgxsnqxza281cvhh7g2fv47f5l";};
-latex-for-undergraduates-64647={doc="0krj27gmra2mpriircasv32snk80z9ap85h76n0bgy4wjqyblyp0";};
+latex-for-undergraduates-70210={doc="03s686vbzpjv71vlp5931vxyx8lckvl5819agh4688h9m98w54s9";};
 latex-git-log-54010={run="015f1jrfnwr7i7jn6g0cfl3zs73xw30h14fr2pyjhn9pr8kd3mgi";doc="0pj2834ax404f0nnlfbg75f2h80wvnz23s8nr9vxr24vr745xpf6";};
 latex-graphics-companion-29235={doc="01zs32gck1sl9zlbhghyjmjwxyvw0jha5vl2hd10knyrb3z4dhxc";};
 latex-graphics-dev-68730={run="0gh26h6lpv14ywhpcbw9zkzn00jqrxbfwsq61cpvb6in1f7q95bh";doc="1cyx9l48nc60qdaqny9mi076cch9cc4f3qpnp9hxr1rm7x712vp2";source="0ng5gd50c7rg7pv09ry62j8plpn4vigc0rjy0xg4bzfyqhpax86d";};
 latex-lab-68720={run="0hdzvh1affhjy4r80x53gbhi1pqsjikvyxrr985pl1slzfrlhjbg";doc="1aqwxllsrwijw6rc98cplkxw46s61dj8gz2q07djjmx137irvkcm";source="0zj723bpg0ik95sjm97kmvjp3ygsf29lshpzgljyqnzz6z8ppb0l";};
-latex-lab-dev-68730={run="1maxr2mi0j3ccq4gc2zhpp5acjnv90pa1srxd8yyann1q02cqng6";doc="1k0vld6c5zb8llriv57aj29w4vzzflk86hd6547ybjcnyz77i53x";source="0bdpdjrzghj1mx78jna3p1f4b9rzb7j6cxy0gpx1a4pslxzihshq";};
+latex-lab-dev-69872={run="0pqamivil6qcl3sxp7zr4h2m4sdk92mwri5jvz5ab0l8w89i6xjl";doc="0vrfpsm359zfmqini6s4m9cj97d30xl5vnj63nkzxk6nz3pzgk9s";source="11fdf8f71mdwx1lrj8j5vj2ha4xjmi8mpw0aa2ii0rad5iwr8wyr";};
 latex-make-60874={run="1dgw31znxh3ch6xyg7y0ngnkjmpny7fbq9nhapd3am4l6qb0598j";doc="0jmms953klgv8z4k5d8rj2l5barwxx02pmzk6ihpp1wdggfjxrfy";source="0a5jqry52x11iga5ky89b57l1ww0hbl8z0mkkv6nvvc7bg5gg6w4";};
 latex-mr-55475={doc="1zd948d9y63js7980g2bvxpf67hshh2xa3n2ihbzwhpw6l9cbh1w";};
 latex-notes-zh-cn-15878={doc="0w9rmd7b5fnfvix653n9vbnn1k8yxlaaak79ipvm8p53dx75xfxd";};
 latex-papersize-53131={run="0axx2lkwi1xq3qdaazhb6i7dssx8q2k0nm5vf4b9p5ldl1ky0dzl";doc="1dkra9b0wv8s4f7xn36j1x1p849ziwlm4chf5mrayp0wmx8qshc0";};
 latex-refsheet-45076={doc="169h1syday30qiw032k14fhxikdwszggvqz8b9ga4i9wwxf1vh4m";};
-latex-tools-dev-68730={run="0zhy09mxg97693fk4d3mbghy2w82gdnmvpavkajdyzzmlxlmxcna";doc="0gz1vizf2xax6pmgxk4bpxqg4p7xlpnyhxv0a57l6mjcn606d2f6";source="042f25jnpms3crn2q5fd7l0gay48yc5hy71frvgqkdfr25wdd2pw";};
+latex-tools-dev-69872={run="14jwblfzdf6wp3gncild8qxw6nfdx5a44nb7ngbwnkxr43kq2cx4";doc="05gwzix6l3mgwm9qwjkk8slrjbvnbzpllv75kxbnrf768jjy35px";source="0s2bh7shlafm3fq608gggfxm9ma48bkcq6kamqfii7iizw3wsyb2";};
 latex-uni8-49729={run="1sv4n2v0m3lck7x320cwbay23k7r9fh4wm1vxg9m4grphc72n2b0";doc="1y3p08mni1ng6dyp0g98in7hh3mbzqq42249idy90vjhc177rjc1";};
 latex-veryshortguide-55228={doc="17i8zmr7mjfrx911psdy9cbn05c5inn4ixqmnjkpr9sbgsninyc4";};
 latex-via-exemplos-68627={doc="11nhv72ixwr0g19nr7dir5awgdapxq0l295hm1pcggr62wqh67l1";};
@@ -2162,11 +2175,11 @@ latexdiff-64980={run="1z0x59j9g2cmbfwfmc87fpbjy4hp827ic7y9z8q3j7kfh2s3j8dp";doc=
 latexfileinfo-pkgs-26760={run="0lf6pkxjqdilg10i3fwmlb1nvvag6c5bm6pbcd50jjbd1q39iih0";doc="0qh84r86pszscg96gri652y6p5xx245lfzvx50qvzw77xn4iv6ra";source="1x1sj91sd5bb0jihvp0qg52q8ybak4flvijj5hdq84jf0bw3gryi";};
 latexfileversion-29349={run="1yy159skv29hp0qxpghmq5zmay9yi0ndkgz7lbllj1ymkgxs5138";doc="0k20c2kw0xarjlkdhjyx9h9kvjm2f3rd98lz097xj8xvk0fs0zp6";};
 latexgit-54811={run="1kg9cbz6h70496snqqa2h9xfknm70qf96xyvnc829k5v34jskmi1";doc="09rlc9nprx6590snfg7gakycsam37wmmscybvm48vdn271vvla9l";source="1pn4gv4prwsnnr377xg2x3kf3kmi8pxgczbi9knzavkd53653akx";};
-latexindent-69269={run="07qrhrcq570907kcafq3v7xbif0c3gfrnybg2ibi9rsic4bmf5qh";doc="0psnkncasbascn0jr5p7li8nbwd3sv6a3pp7dmh99092h66wa9pw";};
-latexmk-69373={run="1pdm5p4vvchn535cckwa1kk739ihpllmg1a30b5f74zf6np1nwp7";doc="0wl7d19zsf465d7pb0i88hx71jh9ln1bk6y90z4p0d7y744jlfpn";};
+latexindent-69472={run="0s5idc6p7agbmhm3qq86lb4p357vacp4js6fbqszyfwd1wqp86sf";doc="0y102g945jyr2cg145wkpmz68m62cjdpv8r7356lr2pvmp4pbqky";};
+latexmk-69657={run="0dcbl9bay800kvbp3jl88d6y6w0cxlqrvx0y8qq8dqznd082dh3d";doc="1aljwadz6jhi42axj5ma467pihz5xdp1w3s86r2wdqc1n8l0rm6x";};
 latexmp-55643={run="03rgabck8mcxnbg1avl638nhxdk6smvyd21v2ns61hx3jn09cpv5";doc="1ad9axqv8h2s2xckrdxcnl8kazpgijrgpxmbwsb3h0hqb3liznsg";};
 latexpand-66226={run="1ky0z3k9lwd2815kn3hxpdhcc92spp4wadc5s4hhjdjah50b6zpk";doc="1za2s4qvkfpqg2s86z33y85lw4vbi5ll52if58dndbg47mf26939";};
-latino-sine-flexione-53485={run="1k8inj0rl7mhsjyzc39w789jlafqshh9sgy99szxqbs0jilgfb78";doc="1wccb0ksrrysqjp68l3wnf6l4n3s64ny3cvxiqgalrf0mlfipxmi";};
+latino-sine-flexione-69568={run="1k8inj0rl7mhsjyzc39w789jlafqshh9sgy99szxqbs0jilgfb78";doc="1wccb0ksrrysqjp68l3wnf6l4n3s64ny3cvxiqgalrf0mlfipxmi";};
 lato-54512={run="1w70dgmvcwm9jff2ap7s78qgqs9ip4a6dx5wz8iyd7hn2mwf1v80";doc="1fj4n1y16x7hxyd63myk902iwm6lr074rkdybv03qwxl12p9ykxs";};
 layaureo-19087={run="0ggab1drpspvqwkijlj2d7k1iwacd8bihgrj9qvrmsvdlswdjsd1";doc="0vxa87pk0fq67zlnbzbpnig221isp1fy6qp30fphk7igvnjw8v70";source="0mdibdz7hawfmc6bzvk3qfhs22pnmsnvkvvag31p3b4n25zshmry";};
 layouts-42428={run="1ab9azs06k1p0s3n5zjhrykpqac9fi3kr3w31xmh698zpsg3jq4c";doc="0ydpj4mbjyg6qy2wmj90rqfpkcq30pws5d11kdr1gcwbzqqkgbbh";source="10mfwi1wv5v0qdwqj1mh5q8izgavlhclnz2aj8h02ijy4kzgfg5w";};
@@ -2179,21 +2192,21 @@ lcyw-15878={run="1c0js52z8mgfbr3lgbvnhc646ggvsvgr7w1mq83lyx0pvnlqm3aq";doc="02h2
 leading-15878={run="1ky6c51dcx0gsj8f6zrwb242d940cjml0gb258ags5xi5iaq40yk";doc="1l31zpglr1bz0gif3w7kqzhd37zpcgjig2ly84fcyk805sf7nncd";source="0f4ayaz2m0y87ifddl4622rpf858zmh13xafp53nh96b8pyvcip0";};
 leadsheets-61504={run="07w8h1wv322dy0b69d13b9k59m6iid53rlpn20ps5ss2j20b62z3";doc="17xbqxhmxc39gxd5ckvzsmhiabsi2afh2r2jv91im8inqfqi8j1l";};
 leaflet-56878={run="04fvi31wwpsnkpsni3r6f9m3vr8b6h71f2znb79aban9g1qvnyh6";doc="0f82hm37i7w547jpmxkl8a2k4f92bw29vdzq4ywwllk2hdcq3sv6";source="0igkl1rjl14raf3xv631c7sn0mc1smyc44mldwgzgnzxxkv5kzzf";};
-lebhart-68376={run="1234ihmzv9fmhrb5s0c1ria1pzd2qz5vi96v2p4faabksxp2qi2n";doc="066d7m6w4i6gmqmgxdhsvq779mabqai0ix83c97gc32jlhhv1lsh";};
+lebhart-70050={run="0y9lrkscmfjsg3rbcwbfvzj3g40nyb6a297myyzmm2n0lpq11j6b";doc="0nypg814pxlcpkd0y3vdhjk6vpj4j1ka08kkkk00nmdyyy714f3q";};
 lecturer-23916={run="0alcmds4ds3m0rpq6r46ff56x78kv0nbdnfn80s9q638pf1vvnvb";doc="0ksqm6ibcakjf2dir19hr066gg2dxa5blfiikr1j8x966lfdjb09";};
 lectures-53642={run="0qdhkf7z1rnxm2ql0ywfk11y3aqp8yr1p9202d4ha6729n5pyima";doc="1xakcm4mmhl4ahnvcpn7k748v4j2m8p6d4p455claqhf7xg4jz15";};
 lectureslides-62292={run="1x61bpgp5ddgld0v05qb5sg2lwb7lzqn6r65imshvcjz1xbwpvdb";doc="1awy6zgj393q0lm195hh8ky51fczm5s19d46fc7mivxyh03w3wk6";};
 ledmac-41811={run="0ipf7h58bylrfwg8yzarqvpkl0kr4k3z9hl6cjzxwlh16s5fs76i";doc="0pgkv08nsq0rmcpck9vq1hfb4gnfqh274hclq4grk182fpn4ggiv";source="07fl3lypnxz7sa4kjf3xllwqakhrwgx8z8r7l6x8id96n48zri9n";};
 leftidx-15878={run="05fi4rp3s0s9ank7pphdwxnlnanc2r88dxhyxbz64fb26sja25gy";doc="047a5clwf0r43r1j87k2zfv0pa3nrii213y0zhv5r3zkmwvm1qky";source="0a8rzkycppx8qayqw3s7ndzz2xp4zqgx3qd8dp9s5ynlm10020nv";};
-leftindex-56182={run="16p8n98cw5kxah37wv263mq0jg4jq9f2dfzjyy06sadjwsbf4psp";doc="1g5ykrfix8d6k2cg3nsh6fp5ibpgfajxgf9qgff4s99ir2fgyhrw";};
+leftindex-69660={run="1hc88b88fs7247n9q36idpdsh1jb39d92sp5qr2dky27fgvnz2mr";doc="13lfzvsai75nyb1xykvd8bd0q7dpwb5na4afb7bikqw6iz3dyhwa";};
 leipzig-52450={run="0wml5k749fgx3vq10v4vc970h6nqm6qflg2z4jajph1h38kj2ryf";doc="0znm18pkrf592jfgshmr0d7vk4d4yq4wvj9hqsfg9nrjd4l6a66x";source="1sxqsgahdr0srk52iqdacsqn7sc73iv0n70nsnpvgfsczmxa2djj";};
 lengthconvert-55064={run="0zjyynjlq48sywr5gyi6nhryrp8hcl41q1djjp73ingi2h2svz47";doc="1id32l1ipcilhkk4w9w2q8rfjlk99f5jphvq1hjvqdnhz4q1rk69";source="1zy9bnibswz834k24fk5srl0ahx4i4hlrqv6vnvwb3h8z71izc3b";};
-letgut-67192={run="0b1vjlh97ra46c906kxxh4a9z9ff17s5kii5488ppmk3fmjnvfwp";doc="1q8hcsqj92w808hbmqk006zd106rvhl48jc8qknk51qixz74yvsb";source="1w4ini5k56qik0yx0b0f0g7n6558w3yqidjsysiap4mn07mcpic2";};
+letgut-70496={run="1xf5ac4vmmfrqgla5ap33fr24f38wiyppi3388zwzbn0rlky7s1r";doc="15z5g69vwdlk77hbkh8vsk07zazapjr17dicmz2wkhgrlcs5r296";source="003213728r08bl0nh5yplm02sp6671zb7l54al8bqqq7hyjybnlv";};
 letltxmacro-53022={run="0p16zmxngzzp9hbg7bxrh087gxj7hg4avf4a9akjkg56834hna5h";doc="1gxldiflxvhy6ca87f8z3a3zzisrwz6f9vrx2r9gsfw72jyfa99y";source="00ykjx412119jxwf1zaz5bismfr0i52psf5fagdiybbshs5ac88x";};
 letterspacing-54266={run="0ry7rri76dgbrkzr6na2kkh7bn0jpwkhh9b5qw0cl5xwyp81rddg";};
 letterswitharrows-59993={run="1b7d512g9gma07n7np7f92qqxijxs2df4h0izq5xffd5jf438m56";doc="04hrchgbm25b8g8d6ywchyijngk42lh7z5gq2g2hnddl7wp79kv3";source="1jabbydsy0xn79p2c9dg605kfrc6g3c25jz72hnq1ilpny9zbihv";};
 lettre-54722={run="13h1jsgjp5k82cq4rpx8gd114l49m1pzplksrwjylx0bzimlzgwn";doc="1w82fhhcdgsxwsnprx2p61ygsyh525im8j1zalcw0bji3i6pm06i";};
-lettrine-67923={run="1w18c4z4a6scy1d3sap8hwfdivi3lidndg5szjjlc0xxnkrc3iis";doc="0afwbjyqj173n78bjpzn3pb05vbx9ggrafgnv5djvm4f37i6iy4a";source="0ky4fljrf95wlj2yzqnfg34k5cwydvl558f5axwrlb0id8v29jf9";};
+lettrine-69508={run="0lmnac32n8ip27yvwxk072k1wk9v768gsm6v06bfjhr2kdpd52v8";doc="04369v85mznfrfqv6mkcfa7vp9s4m2953qb6zdv5flfp8paj3fx8";source="0zr1csklrxxs26641g5jnhshj10igxyf79qrq5qky7cvlli8v6xq";};
 levy-21750={run="184jkjwm17ms75j86njpkr17ipcamca3r5l1fcg8vfv00ffj9fp0";doc="1wbxdyfxm80w3h8bq8z5yavdwdbgccvhf4hm697ss5yshp7l8gfs";};
 lewis-15878={run="0ws9vk38j3m0sprl9lak2sjlq13nalcysk95gv68h90x04jj5zdl";doc="043kmzddal693kl6fds0xl2wwmyzvd9cqs8dmy1jzp0mdi6qw6vn";};
 lexend-57564={run="1lqqn007dpp24jcgpn9fdf7ysb99lgrz9zxjw27qm2439wrzhc1w";doc="1h7s17x7grhdb1hxxg6wql3pwy1w08iywpynymrqn8748s93yy4m";};
@@ -2211,7 +2224,7 @@ libertinus-61719={run="00f4wjqqz4hqh2ic8g162mnn95s0p2v1qshbm0zrnzjy2gr51hi6";doc
 libertinus-fonts-57948={run="0izp1qihx1arqkgbdp18ks0xz7jlyd5cc4r3d5nhdnpph1nry9r7";doc="1zn6nlpr95syxmijr7w0cljq21qfv09b2rp8j6n0rvyzm50gc4fg";};
 libertinus-otf-68333={run="1gxgz9lgiyw9n00ss64bb5zghzb5hzli6s8znkaq6fcgnvaf5ra5";doc="08xig7pz9322x5kz8l4dgqc74hsdzrhnxp8kz577gbkg8mi5rsf9";};
 libertinus-type1-67450={run="1brcmv3j109909q5975zaaf7slnzqcflfqzfmxvbaxychwm56nds";doc="0v352ny2961inklzfc2jn797f443dmp7hk0wn7s9dzqnim8rsr60";};
-libertinust1math-69062={run="19yyzlslc3qqk80fdk42ibyb6q07w3qp6ax0pn7gqmw44zlr95pi";doc="0nmg81gcll8z7mr5ryxp93gvja60ayynb1s135l7l0h73s461lxs";};
+libertinust1math-69440={run="1hq3fidq0yl8ahr80alj0r66zw1ampgxs3j963jmhcdh1jby7ih8";doc="1vlpfnmv0d8bafmh0b4szmrcyrcjdx527ik6n0lvqvqh768jwlxh";};
 libgreek-65004={run="1wazhir2i0bwh8744867akraid5cz629yjj6aiipxm6gjj913gy3";doc="19wbh1vjycvplflzkb79dr3ha2115jc8lf0vjrxx7qvnjprygs8q";source="0d8x32jq6fcni0g5qa0hcd3vyxj5fcqa9yg3m2bfb049p5ms7s40";};
 librarian-19880={run="1rri0fb9ssj413w1g8c7p79hn72gqzncihhhg3ws3ldl9s3nm54d";doc="1i4m0gp38f64y59zcsyg2j7bb6zycyf9z5yr5wf86l6kh40cc2fq";};
 librebaskerville-64421={run="1d98h5gyymci1vny8877pdq7nr0vvv8878kcbahvkijyn5gwwdx3";doc="08rds9g231kqmka2dzv03sj9dwnrh89rhsbfqffpzrwsfc4fqld8";};
@@ -2239,19 +2252,20 @@ lipsum-60561={run="1rfz9f6gaha6ccx1s5kij2zkwdkm6i2laxv5r9jyjvsawqwr0lam";doc="07
 lisp-on-tex-38722={run="0g33w5hwgpw7hd62lij0h5n89n9r9ynlxswb34j0aqf3x7nsdh8m";doc="0rgjcldb2rg330cp8m5vxbi380xla73jb36nn94b2awl4g34bpvd";};
 listbib-29349={run="09rs3zkymlnn9fgsclnfpn1mrmxnqy8kd5pmdiphlga1iwfj5z11";doc="1nz6p8z4yvh91hvk02y184xl6fd8pyjlpjmlv5zpmcjillv176yj";source="14jrkykx2myp5fghh9qj66i5g291azm6cihi12c53bv1ijcyl1ik";};
 listing-17373={run="0kpf5svycd71r8p61y83wx1k99fwxm95qz5fbnqkfrq3c0113h3p";doc="1zd0mxh0gxlvqrwxvycqr5yzs5fns0hrkn6g6b4m1v6njv2f9lna";};
-listings-68476={run="123agzj0xmm4gprrdyj5223129qd360z5vw57s93d187hp29byrh";doc="1r3yl3z8hpdqsin2xld6xs6ywdk0k7ykc62l68bbdasc1bw22ccm";source="1wffwc76c8xvc95yg72j7z1iqzij8jzq2yz5mqc70mivl0amqcip";};
+listings-70052={run="1khzz7im183pyynl8mhk8by91p06p1xy7nrlpq2g457zp02svxx3";doc="13aw7xcra3r9p35iwhjh6wbkf7n615bz0wffxi0sjxcqcsrcqvc8";source="0l0s0i1kvb37n1wgahz1q2261npbs112f6jxc031r41rhyzmgqfh";};
 listings-ext-29349={run="1r5nq62k8rwllcpxwpkh2z0gcb1rlydp9nry8wx7r0h93hbmm2z7";doc="0jyk8z0nsdx2yljly8nd4g8wnw7ggi6mdjw0wb7y0mb5wq47sbpp";source="0hd117168f5s1cb2iim6y198lnh05ph4ib7p666yxvv48wr0mfpc";};
 listingsutf8-53097={run="0scs9dnkl2hj95zgjiggn2ikq2nf62q97nnml3hbvmwdargassmh";doc="1s7k2gr69xlxln2yi5wyvd69l2qa8v33d92b6ahgxxpid3437prz";source="1bq197100f74sal26w0r4iv6ys2qa1ylbwbyw3hm9dlpb6kmdmgq";};
 listlbls-67215={run="0r5ns594dxmq7r9pkk2hk482caapfdar1gwbdi6fw396pcnpw8p7";doc="0gnc00jv99rvf892q0sncr7l5pxpndrmw6qsxfbnyb38yr675fk7";source="0s77rh3480i9w06a0nnc7l8gm3w1s6bik4nl15idb27h5a5fq302";};
 listliketab-15878={run="088f2lm5lfbns7hd1m06f3zn1cjcbaw427z7zl5n47ahrvcz9p94";doc="1llrdgxp9mghs51sz4jjhbdllzlr1xgnfskask532zwn1cm6f4vd";source="04xfgaqpcskx5m8byysvd2rji31km9c6cbkfzf3ybj4a5bmbnq58";};
-listofitems-66655={run="19qh891v470h4617fj9ajddpf119qh087ng7ay9q73qhk90fhs62";doc="1s7gl5ai3xdpj05lxhj80hc1i48x2lhcanwh4v3w10yyzf13axyc";};
+listofitems-70583={run="0kpq0ac0v5yk4gvwrzdkp262npralqbdvsx0ln3zqgis025z4kzb";doc="0dgmc69d5wxj5dx7liq08vkw58fm3vg41j261xxw49hlacjl43z0";};
 listofsymbols-16134={run="1qp5y4rbnlpaa3nghlxjn5yzhskvan9rg0g45wqmg6yk9sdll5b2";doc="15sr2n0bsvwz6jqgyspj6kxg511jy3fr18705pyp815hg4maxizp";source="1sjg64imcxxqq8bsqm98954g47nfambr6vsyizkz8zqzmnr5vd80";};
-litesolution-69115={run="0wl8z1zzxakbr6ackc2izfzwkqacfznvm5n96gk56fnqjlz3d378";doc="1d9ciidasiqw45m9iha7j0vnr4wmi7gq7mdm2g6lj17q5dick3i6";};
-litetable-68782={run="1bil3n27ajahpd8zmwjz6xab1ibc28slg5bicb6x5yzs5jppqi4m";doc="1qv6b6qjrxvv7sbsggky3mylnnp1fzjvbbk32vvmnk4gi1cnm264";};
+litebook-70583={run="0xz899hy8yhwsphzz8kz6h41ck1p649lqhzcjsag839j9fwflvpd";doc="00cqvwhvl2r884j0nm1gb02agsz8yss2shn8bjkm3gpb1gic4wy1";};
+litesolution-70608={run="1bc1wd867a88axcf2ydm8alxw9pkd3ycwqgvwy7fbs70v5wzccz2";doc="0yrqa5qs4zh6vscb5xagmich4hgjsfm8xj9f7wzklb5vaphcgm3m";};
+litetable-70355={run="1m8c9gp8lsbf4i0ng62fvc1f490dg2fhhlm7gyh3b6bpfysxcdlb";doc="17gm57g2n5i0s2apldjs2z9xib8cdwz7zmlyr6g763d5aibs7bz1";};
 lithuanian-66461={run="1jjbj39d4idfsx86lmpj0w1k6gr6mwr7sxvcm8wag47rgd05czcf";doc="01r1wraa7jgvblc3wrdvkhccp4ba8ps112ip1v31vn4wbnlvdyax";};
 liturg-15878={run="11l8ccpq2mcnpsfxry6zzjihj3s7s76p9plh7afprd7j2nnq1a79";doc="0rhyz3162nzh43nrxwkynr45i4w5pqb5ip53x5j2k2a4cb4k1z86";source="1hn89rf3xi66bfc3kzwbvllfzrxr62gx60ywbh8gkrw813n18lll";};
 lkproof-20021={run="12bj60lfqlqvyk020lv1l6iinvqx4cvd6lfz4vhblfx3gs3xmcqf";doc="05sppy6q0c2iangbzmxv5qxla8slc2k0fx62f6n2fg1ncgvfl7qh";};
-llncs-68731={run="0mnfvhnq8wwsaz9yzw3a9mkc4xnmq8ihkzhp1md0v2pwlzsvdzlr";doc="0bpbvp85v3qqmpakyp7yvm1vbibj9bbca72v98jr9f544kd97qzx";};
+llncs-69629={run="0x86jmqa7rni1bj43vg6rjr6vnffwz8l0pyrq571s0506jf10y3k";doc="09dg7g9mk7fhp7l81572xxa5b12fb27bbsmvmrj48j7jic9qxvnh";};
 llncsconf-63136={run="17x1sjs86vl03dxcz3qbwm7r21hmzvsvsr9qa0xii8fvp1yb5pxz";doc="1dq0v5wczbhk1ir8fl97c53sinpqnvv9v1hff1hzc3rhbwh5smh2";};
 lm-67718={run="1b4lc6ipij5iws4rgpv3sjjwrdbaxnwiqdbyyj62jzc3yk999m4y";doc="0wdnpnsbg4gvahqq8lv8ny36xwxgph04sjn64pl34srn2pk1jsxd";};
 lm-math-67718={run="0vsmzr71d5iqhr9bwjnp7khzlg939mvfnbg846854cxk8wfm9hzn";doc="1j6jcki1hxdr17njy8sfpb82mxh6bpllccf3hnjvylvpjf45nxm3";};
@@ -2268,7 +2282,7 @@ logix-63688={run="0syvhp2zn6rpmg1v92k9df0q4kv79flvj93m7761675fb8jcki0h";doc="1l7
 logoetalab-68916={run="1qmw240mqsh2s7l2r8nvw9xh3zwa99g01szjaxn94d92hnqmb4r0";doc="0rkj5gcp01xcw6d3vascvp3nw2ng5gxi9znj81yasgw09w2qyb43";};
 logpap-15878={run="0xrv4x46m54b4gfa805naab6fgpd72fwqnyjjxw0idy9kb3s3x5v";doc="1zb6qyxrqy07m65i18dcli30gb42y6c3ffr22cpxa7r8xmaprcg4";source="07cm2gcnv6d7pzc9d2v3bdvsmykqf00bbw177mqyjaq1chc0xpna";};
 logreq-53003={run="1zj1vn0yfklngvfvcr0p8hchar220lwfrznsq73jbw9zzjx47v4f";doc="143b5bb1jkc9j1gd46c28q4zq8jlh9wrngjw8q4prw5dkfnf1s8m";};
-lollipop-67930={run="170q59wqy0x5zhziaycmfglv1wnc5kf252ni1r4vgrrs3rlwiirr";doc="1wj858kqp27amx3jpndsqma152r40agfymh9ah8s42pn6kfl4dkq";};
+lollipop-69742={run="170q59wqy0x5zhziaycmfglv1wnc5kf252ni1r4vgrrs3rlwiirr";doc="1wj858kqp27amx3jpndsqma152r40agfymh9ah8s42pn6kfl4dkq";};
 longdivision-68609={run="1rnbw3y9vzs0nqyjw1qdj7mbiy1mk9l3ccygnn65495smgg7h7b2";doc="091b1v1hwbifv426w1gglg273c9ck0n3bzj3xl9hhl27x1qzxjcy";};
 longfbox-39028={run="1cm2zp8sina312n72bd1xza75yi38n1s2ach2f9sjxdx0m5c3ywx";doc="1wd6hdarh4nm6x4qn789flnq69gq5p2r2pgybsynbna7ywar0l5x";};
 longfigure-34302={run="09pnqp0jfhsg7i8z241ggnx04j452zsg1zqmwy0i40fp2s36a61c";doc="08y2a2922zk61iirlw24kdsf473sx0b44pjzxihmpcrf19vg2c12";source="1p10y4nwz9wj321mf36avl3w6zwvspnb9cc92h9jf4iawnqyp8p8";};
@@ -2309,7 +2323,7 @@ lstaddons-64967={run="1yyfgn2bdlb5gjb2qicx837wl03djpi2cwxzds3bp3n37h52k48c";doc=
 lstbayes-48160={run="1kpkr8xd1k1iinrp1ljj1wjphn0c58l8f6hci0axvxdklr02s3h3";doc="0x288aij80j9vy6bscj3w257nj0y3z1hf0rf9yncs13jsxr8rz05";source="1hcgcvnki1xkh4ni6jqcazl0rjbhfmm6gbgsp9n5qavdgnv7qzmk";};
 lstfiracode-49503={run="07fdzwb4k0dv2mf6yl31h58i61hmw0gfpgrjdnz3v2rnw1ip8kgq";doc="17a8sg0srw7096r3h7qa23msi6pq0dagap3a0rcpclp73z3gh3wh";};
 lt3graph-45913={run="1w5n9y7pqy5zmn6w9bx58nnawvhp5467d150qxnj3c92gh0qbj5i";doc="157y7a7gpgm6dc7hawdhxr0v3ns5kibykhkg3wfb5r5fay47jj4n";};
-lt3luabridge-64801={run="12j7x3r286rsj54h6l0nz3ilnf5fnnpw51dbis20bsgnabpia55m";doc="04k331s04qgh5hg007fs5rhvg9cq0bm7l9dcmkg1yj60h4rpcnim";source="0hyv4jk59l7b1lrxcvkxjqbp1sjpkdig5926lj3nlx0ih39zbwpa";};
+lt3luabridge-69867={run="10ip1css2g1qn9p26xzc9gkdjicd35m6jzdyxd7675zl0h9prvbm";doc="12gch4b6x7mfia5mgglld7zaad2f7w1bybxl689vjc0gfb46v55x";source="0n54m4pawnmpqrbb7m7182d8wbjs150rad4kqqx9h8w9ymwwjrc7";};
 lt3rawobjects-66619={run="1k65hvwwqqw26mqm248fd23xk4bgm864bqnyc759faya84ib8n0q";doc="00l496344la7q8jz0nr895cxir6zn5pcjsn16mc3cd7lpiclxs69";source="005iwxrraxmirspq3881mc2pb8iikc71p4g0dwxbqp38c8v8djb0";};
 ltablex-34923={run="11gazci0c064iav6124v4szdbj38anqwnfgh8pfpdq9zff0h9g5n";doc="0jjd5f3r67lrbl4vyxjakm8l8pdrw9vm1dzhl5305ga8vvwb7gn2";};
 ltabptch-17533={run="06ww90fh24s6lmzyvmqjh5gcr7vp3lq6cg9q6k6194g4kay6yx5i";doc="0yb41cgqpgcxk27259gfz14v9bpndjg51i9nmwr1qwyvaqd6jvjw";};
@@ -2326,14 +2340,14 @@ ltxtools-24897={run="0ldvvkvyw1khfvg80ana7wj20917sjzf0lsp4699hf4jvw71w6x9";doc="
 lua-alt-getopt-56414={run="17czrz46xlbj3xkh4jwdq269mqaq7165kpkhhqa498hrkcgdgaak";doc="1zfwvs979c7s16vpv2k9l81mcmm9y4qdjk46l8ik3123dalchv6f";};
 lua-check-hyphen-47527={run="01q4j9bb19lf838pd7l26rkz1xr7mxcx4fsgf5xd4sdif18h56qk";doc="0iaihbrppn1ap7bqvn37rk8b6m4lwdi8w4zkshiqya1mphhsfjg2";};
 lua-physical-59138={run="1rkf3cgzw6lyld82p8crv8h3swk4acq7b0i9c20q5dksrxcr7vmh";doc="10kzyj9k5fqi0jjkah3xx2cgn1ssvc3byihvs66qpavd2gz25vg3";};
-lua-placeholders-69404={run="135njnv5czy2fqyjchkibxnfav5m0lbg35z3k9f0ag39qf7z1ci0";doc="0m9rivk3gcbf84z8jp5pj58r88nmjmcm1w122z18q92m7kmb55f0";};
+lua-placeholders-70055={run="1i2x0vv8xaadh7klx1airmfshk49a2ldyknn1xzn7iz882lwwrh6";doc="15qvirq2kidifkgd5pi6cdpaafj8z76qjx7n3x6v9bvpp3ybwqi5";};
 lua-tinyyaml-66776={run="0wm23v7rm1mr2l10cariiyzv8f64aq0ms154md2ww9ad4qmsf3km";doc="16990nj13x5452c5mb8ha4hy6n1iyv2xsjqgipv27dhz2g176qy6";};
 lua-typo-69403={run="11g42k7431rh9ih81sl6q331k09l8cy1qw2w5n687736hvv65wak";doc="14rs9ds0mw796rawi4vwq73apyswvy6zlml36866pzy2w8mdcfv5";source="0kcjlddqjvfpjqrj690dwkzjf6b2qqjc7ccix96hzhb37sxmm2qf";};
 lua-uca-61023={run="1klxyb2iw6mccm2dlnpk947kim6ysvkykz69z7crf6lyzcy6lmvb";doc="1605lw450b64xx1a6lxjh9w4jda0n3d0b3sfvxl4wngd5y2jckzg";source="0z7fgyp7dh4zkz48mkh49pngaiyd58ckm0ipd3z626alz4k2jspq";};
-lua-ul-63469={run="1yj9044y9xk5kswl7vb1h5fl55pfmjrq2qnb2caym405pw0pn8pq";doc="0757s68bdvbaqjs0a9wds4x1sxrdabgi7s6jx1ibljb2wndxvw60";source="12x006v3z95ygpldh5x394h2igfn0d67bgmqqh40b5zall17achy";};
+lua-ul-70206={run="1w4prgdq4xmx85gq3hgklxhsxq69spvsqnl4g51wxs2l1pi3dk4w";doc="08kjlrjicm93cp32kssvcjp2j23k0wgcly88xxpkzl6x67nw8qw4";source="1hfld2d2qppvbk0w7cjj9ng888jwi3jqlak4cbnngcijvwaw3hj4";};
 lua-uni-algos-62204={run="0msiywf33b5jpdzc66wyvnklvmvs4cpfq3f6bsplgi22x8nvdrvp";doc="1sfswdkhbjrjd4cjj95lbc1sq30j9y5xi35lg3mjfpdinq43wfr9";};
 lua-visual-debug-65464={run="1yby9rmhq63md8cb58qvi4dzlvw7hnfqicmkrap0c4qamva1aal7";doc="1g48dm1is12zj2ncp5lxf9cv9anq31wm3n99kjw9m1fsygjfsz1k";};
-lua-widow-control-65084={run="022g3aff6xj47wk9kgmc7l07n66milxyxdjpxhp0a5s1wcppf3y9";doc="1az40nki14y88hxk44lfl7czvfhz9lkr3lfikyf2bnjwl2pdmc13";source="1cdpa5h4qd6dc03pjyisib6hndgbr6rxy2ngicfaqwkk25ybrf1r";};
+lua-widow-control-70602={run="1qagxphvc273asxvg77sxrcfv51kzcc6dkz1bszbzzy9sv2f3xs6";doc="1zr31yn7xrxgzj2lnvw8f3sb784xcis63ggd1wylxfnar62mawr7";source="0w7b34afjik8ka9njdh7lfjn565gs8ns9n90phgyj8xpafy09jdk";};
 luaaddplot-62842={run="024k6k9iyqiw29l614n0rj0k32y50fgisd2g1abfis7lihc1nlv0";doc="044yp2522hns6hshlph91c990lh43bwvf40cgkfid47mi4zr79l8";source="0x09ac3qlz7p27nm478lcawdrj98622527ba4rz7004b5p2d8w8v";};
 luabibentry-55777={run="19rvhs12gw5vdq2vvcdzbz4qd3y87qjvl9x4bcqbncqcvwg82cyk";doc="1raq564ad633c0xbwx6r9hhwmx1r7vis283rfh67lixq3prl0nfl";source="0gqbmg1c4wm57ga8gx9g00dfbczfvhqsyl13q0ba451d3kmh6klg";};
 luabidi-68432={run="1kfyazn8v1ks5yvac4x5cvd42i8li0sgv00plj92c2m31hfxw2gl";doc="02387g70qsxs7km8dlgibyx080jwwjg668j0w12v3hz67jvg5ymk";};
@@ -2361,10 +2375,10 @@ luamathalign-63226={run="00j2vngg8sqbagyhmjv8lr8kzfsllllmm2gijhxbm8xgf8r7f01y";d
 luamaths-68883={run="0gcri65p0y9rmq19rgf79jw98i855cl30al9cpq3znp3jjyikfrr";doc="1sv4ygd6ypf0hhcbhydcr1ap7ig26z476i8z0gs5mzfs08rdq5mm";};
 luamesh-63875={run="09ldwjfa0dfhgqv2clyqzd8nzq596h9fz72b1jh7vqjwkn5774y7";doc="0xnk2mcw24v6002v523m7amj6qc4w3h655l1ss4rpwvv6virp3kj";};
 luamodulartables-68893={run="1f250s8836j4kgdzii56c0248j5sp64f5wbqkpd6p69wjz7pbrmx";doc="0pdk7x09gmdv0lnwkvdv3scmbgfgpyv069fa4s5hbyvwskbj7fmy";};
-luamplib-69069={run="055wa9l7bh6313x5dgr2x5idgd3dva994fq9ip9bxg9iv1bnxw1k";doc="15bwxh64cxqz1g6hpn8vphdd1z0f35ldiraadqqw1pf9gnf1fgxm";source="1w83x0yis4rddiqm9qdiqjm2ifg2d1ah7f4f14im9h4r5z37bck2";};
+luamplib-70583={run="014y8nq1za0f0x0hv0cf1s3dq8937a3vv277p66spaa6qaj813hz";doc="13z4pdlydnxswna8qh6ywbqi6k7c2bgxspwgghz3n6xc5nr9g95x";source="11fbzlvs6ra67ywpbq1qxlk26wk0fncphcl1nrdw6f3l8v9m4dml";};
 luanumint-68918={run="14z8vvxxivi2i61r1ydq1csbxlm3621y4j9hx3p0m9s1ngcy4ryv";doc="1iss948y9rhg7j6am6vyc5y0s1cmn43k1g8vgcjlzbp8x88mwlwx";};
 luaoptions-64870={run="1lkx7ynl6xci7klgi2h7qbyxny65nca74xz2bhnhch6zm38rgsa5";doc="02w3623ix7g67bz21262i95gn1m4gzvlvn08f7v0x0q5lm7x1f3x";};
-luaotfload-68143={run="0qxjljd7b0r1h6qxmcl9k7rkpkfmcmppg3yy60ids37cf8sgvjpn";doc="0zw66fxxd02h39dhadp1i53nyp50kgcclkp3fgz5pi0njdm02azc";source="1jmvglj1mv766cxzj6bnagrlby2z7w3gkpqls19ic2g9a154i62c";};
+luaotfload-70234={run="0zkj8hshfxxs9yq5gjmznafr88gz4vd551lh3pz8xskw0s1qh2cr";doc="15z1anhc699fb0k7v14s9xl9bgv0w0114zzz3ibwr37nj8hy6xdq";source="1jmvglj1mv766cxzj6bnagrlby2z7w3gkpqls19ic2g9a154i62c";};
 luapackageloader-54779={run="1ynqy88drl04ld2lycrpvjj3cxddmbycznfamhl1bmn01c1q9784";doc="1fn9kqab5hyvscjqmd34vxjkdcr7bapgw7w3ckwvlsslxrv22rfs";};
 luaplot-68918={run="1lsc02qnqw6p2qamx2754ywk95yilq8jvn3vzra425iy675gl7kg";doc="11xl1j11p52zxncgcmg1b8x7isixz4vissfxzppc6ndv5dvqk3aa";};
 luaprogtable-56113={run="16jmy3cvn7rmzf5i03x51yp5l90kmrdy0iqg8ji4z3xwrf0iq79x";doc="1d0k83dyiml9abnfc3b9l4n6w18lgm37bijr8xj3chyv04v85392";};
@@ -2376,15 +2390,15 @@ luasseq-65511={run="1cxp3x3d346k7j6kh1bch4d83xb5ihb6h9jv8l98jcg0fp6zvy74";doc="1
 luatex-69182={run="0z08r0hjkcp51qzffqgf80df9445xiagi08cs3lyjfjn578z813b";doc="0cgml9jqd905jnwml4bwaqawplqp9ga0qnc4swkcvjmq3fkij8nf";};
 luatex85-41456={run="0ss7c5x0x7sx6lsn1iq6lyyp6w0xb1iy01s1f7zf7mlb9n1yzffi";doc="126y3priwz6anp8sj0296bnxd53lz20nchpxw74zphfpwrv4hzih";source="15bc8g0pgrkqpb8q2dhb6zml2d4jwrripih9898mmalsjixy62x7";};
 luatexbase-52663={run="1zrwz661gilr4iizcfsxwmfr9dgx7v28lypaslmvp3zaf52zl2q1";doc="118azb2x20gyaj42r5w0749dx8rzhhri1nz3szy9vv64h0fig603";source="0vsg8q5k8l66sy3d0bskr6cv1f95lnhap3b9yl754x7ynv272xcd";};
-luatexja-69245={run="04vjkw2pbm31zanh19lp54pjq6a12advq8mnpimlimy292kqvfqy";doc="0vwy9fr0qzk8zwl603mv3lfv2md22syk10mv3fp3axyjpchvba1h";source="0y7vqwj3rpbhrr9z3if1p81k789sjgm5df973jsnbwd7mz4n53s9";};
+luatexja-69988={run="1d61fqb07flldrnzmdcbnqd6nia163qajahbmhcxqshcj86da4ah";doc="1xp8xnqxm7mw6zcqkzjhrad255bsql92q665b0nmhw03h5xvyy25";source="0y7vqwj3rpbhrr9z3if1p81k789sjgm5df973jsnbwd7mz4n53s9";};
 luatexko-68243={run="0kr9i78a3dw18rfws0xxc7kjd4n61xgzjkdlzb83yls4fyxncz1h";doc="0k69i41pjfqifqjcjw4962yvvgwb07a46igvwb70xsrm8cxgkm20";};
 luatextra-20747={run="1dx2hc1md8csvb37lckxj4987zaldfd73c86y0ni8fzd4zg55s7z";doc="02dl0skcr30hh9wgm7bkdv5zvx3czcdkxv3zdqnasdk0b7r7mqh7";source="1yq5i4v2dxayhfzn1yw987i3zjm6gy4fqckx5kybzh8f6jr9167b";};
 luatodonotes-53825={run="15syf4k00shgi159j6ja182k24xhfw71zk167wwmy57y7kwm5cam";doc="1jcybpcd500lzkwa33zdmsq3svb9hrh8f56j4qgwm9cq4wb721f3";source="01km6y8ajgaaab9j1bdp4s8gj3iw5b7cfdl1yngp41ph22888aw2";};
 luatruthtable-68893={run="0pkw1q5jw8id57mcz2sr1mb1lwafara5kzvq3yrkmqp8s9ml5ns4";doc="1i6nplzr640dik1rg668pai86vip0qgsfgizgbd7v4v7sjs24s76";};
 luavlna-67442={run="1hwbf0l2ydi2a5x05gcffw3p9yw8gvk4srihz7rsp6g7yf6qhzds";doc="0wirwf96b50m5wnhfiami8xiw9rr12mx20kp4wqc1bnihxg8l2si";};
-luaxml-60709={run="0w4c8sy0bjacrkfh3qb9rnv9ls5izzkma3fr6yd4zmwjzn09hh6j";doc="1giy76w9p3ribicsbwghh4ckrdijcfxnpyflv59ry0c9008xdrr8";};
+luaxml-70117={run="1cdrh3mhnclxb140x6xlggvwwzd5rwvdr7655zkvrbdq8byp3wxp";doc="1zv85256la5d98wklpgc27djazd4zpv5b7drd3zrf3a0l4mslvp1";};
 lutabulartools-67714={run="1vly69bgzq9pxapl7w1f7cppkx5yr5yyi1gxv0488m2z75522i8k";doc="0iyg0vqm675ak5j1ax46zwq9gcl58vr2r861085zzxicw4a1fh5i";};
-lwarp-69384={run="09zvwh3lk9lx3ah5ihv7n90898ahj054id6hyixj0ymcxmjibc14";doc="0dcqrgcyffj1rjf81fj4dc39syzr51ihkwlw41328i22rbaavkql";source="1605c281d4ap8wiyafvsi717yifksrbi9d3jcwrg75cvs9f9ayqa";};
+lwarp-70072={run="0bfvsw734380l5g7y0m6phyd99x28ib4s26mim5smwlx13sgzvh6";doc="00ix9xb95k3qqdaf5mcvkj99vz2p5mj76fg83hiw5pwbdv6p83j3";source="009jifl4fkx89157h5dmfa658wj0pvzhgxff4krpj16mlik3xarv";};
 lxfonts-32354={run="1hl703cxwldq4ams7044m02bmnvm8vkym7xyz9cb8xkaqfyqp8cp";doc="1lfrcfpn9a260bx47nw6msvksjzqjqms5d31nprc800wk2vb8sf6";source="17j1kys5hrvkymba91kp8f1kq5vshc8blv5pm0m6yk6p4kdnfkyh";};
 ly1-63565={run="04g9labqzn9c10asy6nn5s6clqq2cnbhps9jf683qx5di1pabgp1";doc="0l2dqyxd005y9k8xpca04vyzbjxx6vzr7by1yz4qm1dkccnjprh1";};
 lyluatex-66880={run="0zj0n5bgawhkw0c04crlkb2m8yabb0r49bysphgzabyl3rvd3i2s";doc="01x3xkqv2f8gvrsl0qj3d2y6bkzmzbphzxcqy6s0f4rp5yj3dw35";};
@@ -2400,7 +2414,7 @@ magra-57373={run="02zwkxc94lzi5wf29wws8ia863ljq9bq9swkh8k8318v5z4dv5ig";doc="0q6
 mahjong-58896={run="02dkqs06dgp74963awkyj7w3in66h91hx5rycix61d0qz4qwrvqw";doc="0cxzzcngiz7796xzf0k1njchhw2p2m47kpw2fhrf1cqijwhw3jxb";source="0ygvmg8c6yp2mwlffr52jf5shl0qh26p0xlfkj39zzabd8jv2ay3";};
 mailing-15878={run="0x2mgcmfmppzqlwkg5jd1zfyvfdjnrvnk8glby93s5nvp6i6g8c1";doc="1aif16654381jcczmfn44k8v8x60clq94z4hcwjsqhai6s441hbr";source="1cx0pq1qmkn6k09x1r8mx7dmpwvdvprmvwj45p1k7mmfcvq2834d";};
 mailmerge-15878={run="06z9cb353sl9q6a7jbvwwdd0zk3kw5xmww0r3sjiqampxib19i9j";doc="1dk2a71x04nbc0rcmd3axhz8yikzlw9ab1nd5k1ki7pmclwkscdr";source="1qkmlfc2dvjhrh2xcypnp9wansxrb9wzvniwfb7sll2bxjcfbs8c";};
-make4ht-66130={run="0jk9xamxgyvwy77jv9iyg0z8bj1cy4cmswf6a8ydhcbpc2yyhcsn";doc="1vhcrpxdf1pc7qn5y3jirq01qni2i1jb9cmvghyy92kzfj88c93m";};
+make4ht-70117={run="1akzga489x8acbb8hrjmc1i6v9wmbmi30rqjmgj32pcqqlgkp9r3";doc="18kqpslbz18hbai5rl6nbwhgf7mb39nhhmpdzfnmi9nc3k5ff51b";};
 makebarcode-15878={run="1ixhl4k89mng2dqfc0wa0fq52xpafp15gghnyx28d9j1163wxr7d";doc="088wkffs4b8y0clgcx1impzbxck8klm32dbf6p1jyc2vpi848irk";};
 makebase-41012={run="1nmlgv76zy1ajfzbdv7hizby3hhciw41s10hbnlbrfdl27w14dpp";doc="1vxwgjk3dj853qbvy2fyqzni2qkkjhslf17xvxskq97w8fcqr13j";source="1f8aliax01b9ir5wzk0bjhqzicl26xa63khx84s9haplh183qk2m";};
 makebox-15878={run="1v2xpiabjcgyi1d0ifpvzcll8y01lzs48bs19nalv37jw7hkrr4m";doc="078bz2pism9harcyb9lq8kkrkq984zx2ya47yhpqxnrd85kgcxfb";source="11gjpqmc6dzccv3yc539ki64hzpn8ns0zzjvanw7afbn5bkyrs91";};
@@ -2416,7 +2430,7 @@ makeplot-15878={run="0qp0qgcli40hd2dxgbd8fv9s03r81dlhh48pb8la9sh28qrb9i51";doc="
 maker-44823={run="1fymg22y0w2kghmqh5pgxkrncdcbbmhhxappc72g5q337hcky0xa";doc="1yz72c1ghqjs06nagngpp2q62gh67c3klwm73bcbc090vdfkw7mf";};
 makerobust-52811={run="0nm751w11p7cqg8ihckn338i6908kcn513644c6a1qc9rg847hlp";doc="0bidk4f0q6486vgwqvifzchkn0xi1l9j65yqwgcdnl3yg6vamqzw";};
 makeshape-28973={run="1fy1ccz3707f8wxilh95k8sc3a93gl93qcpvpxl833mbkamkx3kj";doc="17dnkldg0v2qp3hdy4bw1k48p8xx3v566pm088g8qb0df6kx4217";source="1yd3ssh3cpy54gm0nkp2ah0nqarbnk9hqw2kkwdf96dj8vjlsgwd";};
-mandi-68950={run="0rmrsk3i2zrf48zv76jbfv7a71z5688lnq0gdla1x0ka51zfp11m";doc="1rfhbg00vbd5dbz6fi9zj0m2cfxwwycdc78qamrpxb51y3bb9giw";source="0vlw1wm8kmqx3zg4hyqcyvfvrch3pv0abvp06y48dxw2zkhbdmf9";};
+mandi-70235={run="1v4npbn35qw9rs404d6s8ajyc9fn3blypr45bbp282wlgfdmg0vc";doc="0cvk0sx0dy4pnyh8r8rz83v95jkjx141kxmspkdyy9nxf9jixn6c";source="0nz6nmlrgwj99qsshcblx4rjb64gwdn4anjp85gvk5hc07vf2q9b";};
 manfnt-54684={run="1fzfcvifh013xs6dm6xq2gpvmf3v0qn8scrbjj3yak2ba98bcy18";doc="15rs74sfnyq2k27bs3dvjiachwamima3q4vp0dp0ic95as2n61gp";source="1v3j47xa7k66dadz8dyy9gm3k4s6465zgqpzb320isjpb77p7r48";};
 manfnt-font-45777={run="1cdd2a3xj00bwsby9z5iz5f2iy2iwsjl35gcack9q83hacbf3ssb";};
 manuscript-36110={run="12r1b0hqs1kqdxvyg8lv8yrsdycfxs03j0lwfmlhbg6lmgz32pss";doc="10dczs60ncdk5z76w5jxgis9m9qilxp8xi53gixki4i82yd4l9va";source="08fpv1i9vz6fbf9vy48k6y45xz67kbqb5f30c8pxbvyzlicixdjk";};
@@ -2427,7 +2441,7 @@ margbib-15878={run="114ifix2wa74ix9zz1ml9bpyd0pqzj2983h29n3h425yq98aiqs8";doc="0
 marginfit-48281={run="0x8ias8bv1zaavin929782cjvp7aw94r18lqvv10v3vgq20n7kjw";doc="1cj1fidjvvhhzn9fxbvyh75dfb78wxi83bdxnwbpc6rf3ax5bl03";source="0rrn2lrqg3a1yz6l88qkh8sljr18p1wx1vxyrzg04pzj21lw8kkh";};
 marginfix-55064={run="0arldbc20d1sncwanx3szam53yv1d5wxgihj8lm4jmda1858bmgy";doc="0kk9cghi0y1zfk6ya3pfs08npdy7v95i4db5a89v2177cd6z7a78";source="1k1384nxhiywlvyndnvhj6a35q433ddc019ckf8al2b1ngg13y0w";};
 marginnote-68204={run="1jg3f25jhdywqaxy4qimxr7x0kxjs279m7a3kf9lvyj6igcijml3";doc="1n1kswzhxdx7b47l4gf4cbihvzy54z24gg0sz4syvpy6nq23fs0b";source="15cl27n5q30i70ad91ajflrrcqb5wya1cb400jh82b9k7a6y8ych";};
-markdown-66954={run="1y6gqhcbp9z6wc39704x6mi69wlq3b9zkpbjf898545qi6l08s3a";doc="1y8l6y1wp72kjq4cymckyfywz8nz44rbyrw2bj81rp07i1vl3r3x";source="18s9206jpgwsg9b0k5gfnr9ighm882qcyc67ymardgb2v5hzpszz";};
+markdown-70583={run="1y6gqhcbp9z6wc39704x6mi69wlq3b9zkpbjf898545qi6l08s3a";doc="1y8l6y1wp72kjq4cymckyfywz8nz44rbyrw2bj81rp07i1vl3r3x";source="18s9206jpgwsg9b0k5gfnr9ighm882qcyc67ymardgb2v5hzpszz";};
 marvosym-29349={run="14i2alqxpz0imgdlx03gyg2nn56wrhlc0rziyx93h4ya9nz6xzbl";doc="0qyfyz8qfcchnf78r71fp5p16hmsrq6xf54g5mnwjb4p5ipbd9np";source="0vbiq807pazw2c1ck799w8sy3q8wcpb6smmq5qqw4nqcxzwsxk78";};
 matapli-62632={run="0r6xibqz726d68cli8izl20r4x2ncvrmlrjb711jz82qxbgs9kvg";doc="1cmyrnrijghjm15lhi2isza0dishbll3k4hpzq84jjjbcbs4gvyp";};
 matc3-29845={run="1mp6k50lm020xqrq2vwl9xyzr5jwp9p85c6ng3k22g4rqsxhrb3c";doc="17xh063gahp5m83vj6x8waqwvf4hrvg3wi80z70r94bag0nqqf2v";source="0pq4l1ays56ry5v3ig76h49kn7hdk1gi0wqx9b29vkdvzmzrmq02";};
@@ -2454,7 +2468,7 @@ maths-symbols-37763={doc="0z83qf1rz84cr0b1zvwlacf24pc5r8dn1cxiiyl0xrqncl3279ka";
 mathsemantics-63241={run="0vw14g42f9jhnb4k75qlighsngdl9kkwp921iblafs39zlx0fh7w";doc="1lkm8gysyim4kjggwm1dqc9158agxng3nd9kdksyxlna89xrgq96";};
 mathspec-42773={run="0gspy6kjnx7bs5dxap8ym8s0k9i8hczi6s4s97y7av7vc8j1fb5w";doc="07mmfcd0fvhrhafsfk4sb4dvs5x8x1rjk1a2xl20kwpfpp8l1rb6";};
 mathspic-31957={run="104vf0cbxhfbgabxjpypyx16fbpyi05k14dhw5ynmlh4rv3ck7li";doc="10j7z7yb5fjqlldf8w5sm5kic6v842dijd7f4v0b2q5h1gbhwyim";};
-mathtools-63767={run="0nxhvj69zj71hpx1f5y56asm8cgm6bmb0wnrbdq33xfhv1b6aw60";doc="0cc5rypff42yw5i0jkmh6d7byx3a3mc8wiyvwhbjx2z2l1kpjkhx";source="0kj4qf29cd1dp0wqmqn9bsv96dzqvs9h31v1fm4cadd1cc666589";};
+mathtools-70607={run="0qkjy4a44z63igdp5gvnb7y3kb22l1x6v70frcbiwmhyagyqa5ns";doc="1q4bnkpyhf050cwla2ns0scwxjnbfxdf5jy5z8l5s2dxm5qrhg99";source="1lrxhggn7k6hma49rpq8zkfqvd86m1c45mdh1n3cn5nk8b76lg7i";};
 matlab-prettifier-34323={run="1q7i44n15pvpc65k41nw6z8gxj0nwk39mhafnmsibxh41yyxz9ns";doc="15x6lbj54597f8wm0vgf0yy0iwh7g7xv7cnllnay651zwg3z7h9l";source="0vr8cll1v3hgikrng1rilqb5d3kbggcmdy92hsdnip7dr0hxc39y";};
 matrix-skeleton-65013={run="1ihjvzsxaj5282xc15a4fw6cqj159m9hpj4hblfmjgjra5p597gs";doc="0109ify7qqbdrgrw0a8svdaqk1amm0njvawgh1ch8z7qszlpg4c4";};
 mattens-62326={run="1az5ld75djha5949bl1wiqbm5mzff77cvcyyk11qjvg7pjwa3h1z";doc="0mqsr5a2bhgrllvcqp03aacvsp7wymqnvsk1zswwscsrjl9dh5ka";source="15ww1gl01yfaw7gcm66z8zd2yhhnj15pw53crj6ma6j94akn1zff";};
@@ -2463,10 +2477,10 @@ maze-65508={run="139hjw2asv21p0m7qrpi5liikgf68kmk9v214njh107gi3cjl59w";doc="0h1l
 mcaption-15878={run="0bfcl1swwgz83y4f80a1kydmxhdyqxld0d5cjfgxfhnn9dxp3wc9";doc="1afldwg6dghvkwd8gik8dmag4g2pb6ag3aks26qi0ygph05j9cwz";source="0i6sd9vm1pn9h570am4lkr2br81bhmqqwwvymb8r37xpmmp9yvsk";};
 mceinleger-15878={run="1a16g83g9wd5vdx70bq8zbr4hwm8fk46dpsna97r9fgh44n85pv9";doc="09z7srskh57mz055ywyxwg4zcx07vq36jdy8z9w6w74af4icpll9";};
 mcexam-60481={run="0ixgrxw0fzaqbkif05lvd3z6zlwhdlyhfb372b98ypyfp7f7v1mf";doc="0wi7zjiw93hv74scwz4w4prmy00x6n3ncwfrxjyxn2p7i2hkws6x";};
-mcf2graph-69281={doc="0v5pw5px77gnzfx5cbb818ql1gi2l48f62j0fk61iqav02svr4nn";};
+mcf2graph-70167={doc="15pcw5zy9ghrpw1q9b6sck9zvjdr6py8j822zvdq4ca9qg05rlml";};
 mcite-18173={run="18did9achsp32k7wq4q75a9q43jxdm8k40q41j242gndnkn8axw1";doc="1gdsa91a4snk3f22mh06mr811b1kb0vpi30ss84d3mrnsvd1p0ha";source="0q1bv5nx9xf6r1fvgnxb1x720dm0xqrqg3kya0504q8qb0kgxqfj";};
 mciteplus-31648={run="0xbk5zrd9mbk4xid03j7a0c96s311rb1vjawhvk5waqw9y6dn476";doc="15aldir7viryb2f8vi0a83vgbdwbp5gcdg0slhp6j6ka6xv7ayhs";};
-mcmthesis-57333={run="1pjllpvmqva7yk4zi4gl91blwbciw4f0fhq7rjc214iglyghl9fr";doc="0np4zsrlb5xxlwc37dldrcawd9ldmjqgq1qhbpdz639n3j4gmnq4";source="0acxvqka48id5fhr9p07qh01h44vhq3kapczr0i49pyn2ihibnyk";};
+mcmthesis-69538={run="1pz460nrypf05knd6lbk6sggpwsn6cssv71x7mpaz4557na9xg1j";doc="1mzfhkpahw0gc1q3b9yr4p4ya82y0y57ij3n12i1sqk7h4m3m1vq";source="1g7i751plyf1v4561z827xkk586zn8f364xapcfvky54lyw7v9ny";};
 mdframed-31075={run="073gcxy2s8mskf4mvvs1jr8fkijci1ayg0b5r5xzcjw0s5azny1m";doc="0m8k7h5c0h1fdrpdf2a4vhgr8saqspk81c0cdjm2cmbsfm8zlc3s";source="0p96sl69p5342yy9fgw5cnkfi2xabdwb74mw7i1gbxvj0vx1f2q6";};
 mdputu-20298={run="1ihwhdcmk3gd081yn4wimg7yadvxkygybr3bypqrvllwa92lay3j";doc="1hsd74svpxxmjps3fng679hq7dm35mz9glcwwhk1carzafmm2ppm";};
 mdsymbol-28399={run="1rckczggrdd977n7dr223zfvp7dl683p7d6wfija8ln4d1ll3lz8";doc="0v8d92kpka138yzy4a8hg5yf6zrz267hhsakpm2f0bamdzqkp4kc";source="0xh9d4xpdyacmb3kxmqh71qfx0b5qbrgxrw3fj2nh2rzh35smsy8";};
@@ -2474,14 +2488,15 @@ mdwtools-15878={run="0l40ydzljgydp8qfq1lm9v8nz0mrz4zxpjxicypn2hx7bxs2b9rq";doc="
 mecaso-60346={run="1hsgs52844fv3yfzhylb47hpgjdfkx5wvgx1ihslkg9xm432z18c";doc="066zg20m9hnm2h0bdbzfbxcjsgpbm52l6xwrszbl2ycinqf4rwdx";};
 media4svg-64686={run="1l8ncn14k3khzq4pvy0var7j7nr78vll42bfz1m3cxi5i144ygn9";doc="1ws9j415nkj68ypgmvsc3384dqzjrfab0bb8khz2rqq98sv6129l";};
 media9-64047={run="0891l6dfz89fqy35svnk1rl6vjwhza86km8vk85n9wp322vqnrha";doc="1v0fxv93qc6nj7rskf7gd8ra8i7sll2aznrgs7q2bml9xnggvq39";source="1h3p9v4p4kr35ixpwwv7g8fwgy3ky3haa2ypjlpzbci7jcb0ix5f";};
+medmath-69510={run="17i7sanjgagb303q608b86a77k1p6zc393mrvkcyrr8cjwviy9wx";doc="1306k93xy0sky7lkysikiz2zvd7a4lkpv99spifyi31y4jxzlqrp";};
 medstarbeamer-38828={run="1cndcpdvkdvjx07rfan5dd7yg6sv532b6vvd97cm7ag2g1aqcilq";doc="0i995yaqv91h4iv3h7r5m73vb7xvpjkzrh6nddcjjcsv2gvpjcxi";};
 meetingmins-31878={run="0za2aqj7gbmxxdm3hqkq2sqkhl3c1q8a3s778hw164dfpi8jx85r";doc="13kqp3561k9pcz7lmh7izmxw8iqq0s1jlhvq12dh00wvr7vwr8dr";source="0fkgaqldjdry08wl8al8d0kppbsqqhig83mgwfk20rzpji298b5x";};
 membranecomputing-64627={run="0k8kgr6rlrgpmmylf3vjjjiyis49lm1r1hnvb2m2k3481gfj7zfz";doc="14hk6rw8fj040vwpqhqajlbzlp7g3c7szprssxx148j816fgi95c";};
 memdesign-48664={doc="0aij1b7l1kb2x44qn33m39k0kbhdrclmr25nmvzfn6yw42lh9fz7";};
 memexsupp-15878={run="0h3n1bnvyxr0ylg05fm819lzhzd7kbip5p5mr9kc5af8pd6yci9k";doc="04zwmw6varldbg5cxzk4bv8mbh80i9gdysfxpn1i4xb1la38b0bf";};
-memoir-68004={run="175f2przjgmmqz7c08f5v7rrz4w54q594blddj4n1372dxgg9fhm";doc="092mqw22np2ynr7g20192c4k8pcsg8qg9g3qx3k8kgds640afzxn";source="0xvs80sm4i9nnjll2i62g8gn4lkkbvpbhwzw40cpsg6n08hkihdc";};
+memoir-69600={run="0zfab6dc435zy8cad1zi3f6d29vv02ns9cpgl3z14cx7qcm62c3g";doc="1bz0x9ph9l665rsmbhdwzgvfm1y1nxwm2mqbxlz4gjaqz7wf2k0l";source="09c78l1akvc3x98v47hwsky52wrx81y3dd6v765s14jjr1qahsx3";};
 memoirchapterstyles-59766={doc="0jxd7sbh5vc3j5d5jd3zmyg58kwhy550l5z8q14b4msm00fp6z0a";};
-memoize-69285={run="0q797wprlvapf4a4wiwbkivh4hb80iyy6mj7q5hlwqqvpw1gw3lj";doc="0g4fyf723zv3rbwkxddvsxh22pqljra0g6r1lf7iz645501y7q94";source="1vmhr1skp49yb13pi7lgqn89wlp8xv7w3cj9zcfbw27xvn3x6235";};
+memoize-69522={run="1qdq26cms38kjzws2712skwdxajc3qa9sw3zin0h5776lbbz6q7x";doc="192jsgypxlhldfn5if2zjs4gp2a4b4p3hwg80c0hpz3qlvxvi05q";source="0xw8207wn9h7yr6q378631695c5m2qars2adw23n6v0fxcm95izx";};
 memory-30452={run="1zgfjz995jbji8hycizbp614dn0g13rimh9csgrga86f1ivgcpmx";doc="164nnsi25jk25p3kh54w2l8zk0rri50p0s9g4r5f50c3wzxi1g4h";source="0mhxxhiqq5miqskb6c4hmjdjki280yyin2dh0md59ai1aprgd4p7";};
 memorygraphs-49631={run="1ph43wp3h3pz5hh6dp3n6dzmmbn0fw11w3v2fjf6d07a73jqh97j";doc="1k8gppgv5kkx7i799mwc9iclp2rv9hgdk2bwnqcyc3j3rmnpyiwa";};
 mendex-doc-62914={run="0ab3hrln124gwvgsszd4l4jjrc705x3wbnmrrf27rx8p6fcwwrmw";doc="00m35j5wkcsyrgp0h8mf6cx30bjlhv23szmclpls70af2shcmzba";source="0sqp5s98lzdjnvpvw3hkvclrz98xzx6v7zrlag9m1im7k2ljlcvy";};
@@ -2497,7 +2512,7 @@ metafont-66186={run="1kw37drhnk7qajmivvjwdrh5awns571wclv8b354zk71axf6cr35";doc="
 metafont-beginners-29803={doc="12hhvlnvh8dj1396242m6yi0341cina7sxrv7pwzqxzzahwdvmgm";};
 metago-15878={run="0km18bf69rf3rs42b0azc7i8bypy14201vk13yf5ahsypcjcgqns";doc="1bx240q75pq9v23gz82i26vrp7z4cb00f9nb3cvvknbndk8y7hy2";};
 metalogo-18611={run="03crm3sswv7mz5akghqvkq1zpiy9jdpy32ivwwmf14sfrrri2cz7";doc="08vgbmjhynb4ramaj68i27hpgijg51j80lm0qf1jrfpapz7lrzij";source="1ak8qbcbqgirljfwhq7ylxk1w2frxfkjvadjq00cclj007idr3x8";};
-metalogox-69401={run="01bz9kp73cyf89fjqq8dcyr4fi3n4h7m1gkwkhm78grxd2wghar3";doc="18vmy8xkxjm02jqnsza88z01n9qz28scm3mm4c00bd2y9a6ablzi";source="12cxqikvlk5vg7mgiisi97i4b4nwb49ymvrja43in89glh50ily7";};
+metalogox-70496={run="11q1i8cmfjw521xzqgw27vn8bds5var36nacik8ffflgb3f6j36g";doc="0d5zsshzj575y5ry0zvm39dhigcjf8mfh4ficj084ss5xgmf2qyr";source="0pkbi2f6zsx4c0wv501kkia2mz6cgbcnln9zbvlnrq9lk21jsd1d";};
 metanorma-55010={run="17vg55m4yj3xcfgvmm2kw8a81fblwykgnbcn65drll10b89wx6xp";doc="0z3mr4aw6gqdj4621dlghb4bsc5i44mlg81w81by98783fn4xdyl";};
 metaobj-15878={run="07p2r8975ps1ricqralyw2qz1zq5lmaaf50xqd68qwxmgrs3541z";doc="17kqa3h13p9vba6sa5s29v29gkm0zbm5wngb0zx1lxwkpkgqaqv5";};
 metaplot-15878={run="01blkf01b89a2f1c7fw6dbp49iw9qw94krv1hiqg7ckkj8j06sp8";doc="1fm27sy0zz3ppzz95bngipkq4m498g409igx4xcbkmqaghci1pin";};
@@ -2524,7 +2539,7 @@ mfpic4ode-17745={run="0jdqbdi2gqb1v4cqahwss1rj44iw0753cq262j8zmaarski351a0";doc=
 mftinc-15878={run="0yhw7zpmbc3780qm46p5sc2qq71s2vhmfmi3kqscck876h4935fy";doc="0yxpbp501d6vwsxpm83zjhypvz3xz51f91q414zxjvsy1cvvprr1";source="1zamx3658d8vaik5w30hvia5y0hp119vhvqhj4h5kkwnwmz8hs45";};
 mfware-66186={run="0kcz1gy17819w77sf0l9m5f6rw8dcapkdbvwaknnrmy50v0jfs1n";doc="0z3djvzs8l0w1j7h22hc19r2i49panw7m2lpp22lshxybsibr47y";};
 mgltex-63255={run="11xl6nw76hana2mdcq7m4h6kx6zx91apxcqkgjczcw9f7ip6m3cl";doc="1939pnggbc2vcvavilcssf6i9j36ysv8k93f0bz1rgn2krja2d22";source="1pdlxf2qfyzm3pjjpl0wir4sr255lqnspbsvxfy7wz78aii2ik5y";};
-mhchem-61456={run="07dnb38z8p5a46fp8rx3nqhqni0lwg48wzi2bc2nxb4yb0wlcfai";doc="13b1yc9zi2kblrmmlrg43arxg45g7y2l8kd2sq64jys2nw7sq17n";};
+mhchem-69639={run="1mvml2z30q09rw24laybbkacf57jav8459nb6qfj4z068r9bpifq";doc="1f4nmg09mg2nykrrynaaijkn7xjlk3szccw375kam6b7ps37srgv";};
 mhequ-64978={run="0zyp8x8qxjq3z6b8dm3pgls4z9cr03qiqxlf6d55ylnqmdd68w68";doc="081mavy3495k4ciqvxd3hzkb2bs7m0s5jm8lx01z85p568bw5268";};
 mi-solns-49651={run="1bv7gr2wa11cbsznz414x35n5yy5jw7q9kngnb2h5y73v8bnzvc6";doc="1byfb723572whq315zwybwm1bcvcn49km80gn5bi081gy81r75hw";source="12xrddxlrngjnk0yk35spk886yd9p3nnz6jrp51dfzw1xz6pkivr";};
 miama-54512={run="0138r1yrv1880nmcpgcgb80nzd29xchm09s8wxb53j71q0vvdswh";doc="0dd32q8clxgkd7cdk0699fzplnib4waydx9y9i33lxxwjkfnfsbl";source="14d7ryxz6q17jn94wlj5vf2hzif6i08yjbxh5z7pdcgrnl035gxj";};
@@ -2539,13 +2554,13 @@ mindflow-65236={run="1i5a3jnyi07sp6zz3cyyyyp8gbimy7ypvxsg9220cyws2z65d7zm";doc="
 minibox-30914={run="0r94l5sy4n97p895xk33ir3dli1ngy3p67w2d3i7f6hi6czvykm2";doc="0bzd55wkdxw8spw4706nj0sk478zbnvq9cnkpid638cwb6csb21c";source="1dm8p6rjivm0xxa7px5dvsnrqs48zwn2kiq3vr6gdqmiy0ld1v93";};
 minidocument-43752={run="1mrzcxa59kpmrkhnnv08z7h48bj74gk2b0q3bvhmvddd6047yxwy";doc="0dl4l8skhz7fm23mpmgmy593f34w78mm5qwab5bc41sg0xc0lyy3";source="1n0qf2r1mjp8vx3s750fw5h2q51pp3qxf90gds8bzq2cv6mi61sv";};
 minifp-32559={run="1vpq8mh443hhmnf5cgj37jm362m90zdhm55jzqh1x84dadqpmivf";doc="08f3hp3knyc37a2fy87i11q62dlb35ri197gxm3ghl5h28zvzpfb";source="1l837v8c70s8x1xn4xhag6nkfpayamgzk95fb23qw23xpf6zp2wv";};
-minim-69352={run="0ny85fr9921mdx8kprbq9q2w431g33yyi2zadbw1p19xsng4xy0v";doc="0lv17nf3lvll2bb777xkd5d0mpkrd2ixhqn32448ilczxqp71qcb";};
+minim-70320={run="0219g17q9nd7ga9lbg96wk5jqhw3i3cfxjv44b116gbnkrf57z9s";doc="082yk82nlcjq2cp5v692g4ph1q4p9ry51sfcdjpjx7874g03wvax";};
 minim-hatching-62395={run="0raih3zsaxpas4myf4m0bmdxqm1av62cldjs4z768nndkv6xl1iw";doc="0bngn9d24w77dxi1s7ad87gi27m48d4jr2j51cpmmagfdvlqnfsi";};
 minim-math-69352={run="1fa8a3jq51wm23ivmb5n6hrcbyxcmhb95x08n4lmhw6x6qsr0hj7";doc="1dpilbyr9hdik1lp5lm860hjk7ni9adwn3dw82pasiipqvy8qzcf";};
-minim-mp-69352={run="16cb8sqfw625nx2zw0qclskw30zp13c5hcgza80ghvvmmd4ixpvr";doc="0nmg25mmk30q15vpzzpmiwc0lwkk7qnx5dx57bp7wfq5w08jc8df";};
-minim-pdf-69352={run="03b8awx6kg2j49485arlzaz73kx1bp73iq9mp5fh0jj45hxvls5a";doc="0qjwpff43h3a02v4qsk4p2v995kqp049n4qg0nd0g4hx6y5gi2l5";};
+minim-mp-70322={run="0qjrp9xj5cra1v0j98ibsi0icr5if6267ipw43ff56q1haf774x6";doc="0rqf8mdhbz4yrka98n3swz3p3q96czjmndj4n3n68klzlpl45v1c";};
+minim-pdf-70321={run="14zl2sxajxs3qgb5bv7lrraww3ci4kdvnflhlnmgi4dca5vnfh61";doc="11wd9vir4ph5hlj2hfr49qf3w77piv7dccwnqm6w7c5w661b9i7z";};
 minim-xmp-69352={run="1pyf6qisnkh1600ha6605if690715qprhwrakygq71gl0ak9xl00";doc="0vyhvy71ajr2d4dii4kp2inyihra85xvmqjs1fzz1am5hbqqmc7l";};
-minimalist-68552={run="17fpzv3x25gkr9z62mycd1pnv7fqp5hj22ax1qy236ckc02abc5y";doc="11656mg8gcbj480sy5z4avrw95f2ihm4b5n1a1s9qdaq2i6y97rz";};
+minimalist-70329={run="15zd2zj5v97mpsczk7qw8nnk7fbnxscjwii1bf2ry0f7707n8if5";doc="0870smwh2sqs7qfkxpmwrbl2ahq916kq3cl0qfmjqlcsjmy2plmd";};
 minipage-marginpar-15878={run="1qpymibkrwdbyf2rlvfjj0g8agxisd2ym3xi7lzx3g953g5whg5r";doc="06rivjd4x8mdpzv9h1yzkjbs317jvxa78zbv1kzyia7fps74wi1b";source="13k27b7avz3v2jadjh84w74rsyh4gz2x22b8j5lv6yvrjnwv09f6";};
 miniplot-17483={run="1hl5nd6p9c1xhm1kpw9sh1s81ymdy8lxfn7wh1sdvildcvclvd4q";doc="068s76gnva6rsnd7gfwswxfam56dbiw9s9ymqr2hcqx7i4dl87x4";};
 minitoc-61719={run="0v80ga66rg4cgifmyfa5vq52v5wz48lj4js0ym9197x2w98ra6ry";doc="07dah8lz54ccvrgigrvgcmbj76ppxaismbllfwyxcgkrkvqzxqkj";};
@@ -2553,7 +2568,7 @@ minorrevision-32165={run="1mcgql832xmgpcwha6l0d282mhyva6xmyf75gbb6inwbgg6qkv9m";
 minted-69163={run="0ksd9lcaqvpncs236vczpsxq1ymx7xxhwpqix4n7yidzyypxnbix";doc="03305wk872gh9c3pish93spfxnvpawcbfjb1gbpbrnjvnkcq92jq";source="177whv7b60pmz0a2r178dw76s4bqixn0zpmr8g3c91gd3q07amdc";};
 mintspirit-64461={run="19jvqcydiwwq3kv5bq6524wsynj52b8mqm3j3wn108z7rhnampg5";doc="0mwrnf6q3h82qnxk9gy9ns12k9lr61z92vmlyx2x745i8ra7b551";};
 minutes-42186={run="0yc7dkvbn0g7gm07h9r62ma3aagbgparrlamh462a9ckdc7jzivp";doc="1m8blswmxhcm2ya966ajknx9arz3yh1sn62wnyxls220af3401ss";source="12qvfyiscs3y1wk3r2mdq7vgkmz1ldsbg3wz4agib97lc30qqmif";};
-mismath-69169={run="0ryb4s3gz7c7q6ya8k6jj3pcvj8x8nvvwzlqydf2lr3c7aj6k8ij";doc="12v70qldkhfachvs05mygq6hzpxyvkshwrncnd7s88r8hizbjlpk";source="1s1l6zr9n9c3g8a0icwd8rha5rpqrhqakmqfwj89z29drjiliwhh";};
+mismath-70260={run="0as70q31730lzyhwvmlk3g8rdri3lv17vhqk4sc1g035yi18xxpc";doc="1f6qnin00xqlx4q85n7r9sq75w3d1q9q8p7kgvxpcvis3b3w1q1i";source="0fjmmpcr76fcwdf5g2pbg72hjf42cx64pdkw6gj0ncs461llpify";};
 missaali-61719={run="13y2dm6phd9c77j3rajvz4qma2h2k4nwhb520j3mm98bgmbkphf7";doc="16487s0ijkk6va22rhhyhxdqik863n1i25p0f67gcb8xp1s5l1wk";};
 mitthesis-68732={run="15z072l5qzmnn09awr9gazikc60h9f3z061qh0fy3j15gr3sw81d";doc="02b0bi0kycfm5x7z2xnbphamzm0xrlfvqsk0c01ni0gjf65j9f9m";};
 mkgrkindex-26313={run="01db35xmg9583hkr9bpflr6rj8bmvidaqahpvkr38bks21466sxz";doc="04p2xaycwszq5dp8s2h6gdm36l800ipvigblkm8m58bgycm553fw";};
@@ -2569,6 +2584,7 @@ mlmodern-57458={run="16f5cpczawzx4p44svpzy205l9m9g06w8r0554cgdpqdbwr139fx";doc="
 mltex-62145={run="0j5282big4df396xvk2xaasl7cwnjn2sa14xj22xgzvrz3hr4dvj";doc="13c7a99jl0y75nkciir5zqdiz8dgjl8znbyrb485xrwlkzm6ygq2";};
 mluexercise-56927={run="1yhgp5cidpkh4ihz20d1p445q370bh25jwc8ikqdq6g1qnf8sdv8";doc="0xcifm779nln96bmx0kvkmnzc9yk2314yc6nn98wm7gqdw2bf21s";source="0mq8fa0vd762q2h981mj6is4d5vry2qgggbbmffvmfb4h76z5gh2";};
 mmap-15878={run="19hnkczxhxcr7pa7880mfgjfhjwiyl2yxhfz67dsrljqsfpi19nl";doc="1f861w6clfn3k8gc6piil6bq6admbyr4kxqnkw8hh29s63rdn76j";};
+mnhyphn-69727={run="16bwf5x7kzzqk7b8jm5p1pfsimgqk30drp918pnhpa6v2y2ssls4";doc="1ymja8ffh9310m41ibgahll7ry9jx6c1aqin0frxks43a0sqf1bv";};
 mnotes-63406={run="1jmkh3bpgqc1lw4q7s57n9p10wjhflck0lqrjxjni4qaqxhg02d0";doc="05kgkxjhizwpnz60r9kjlwqzv66lxc4fj1wh0199fkn1pyyjdrcg";source="1xpdyv0l87mb3af5iw06823iajk2dgv2dg0298nvzm8jj3ip6851";};
 mnras-68878={run="003pbz6wg81ymv082vxd7dzf37c08ym2s63c91yxvldn93p795n6";doc="19mgjg8yisia0jdgvwq0jdg0hj8qpzl393x0w0vkls8s82j2jc7y";};
 mnsymbol-18651={run="08b0ypa29zkbch5isk39bbakg76yp5g7w4caahphdljkqy4k27zd";doc="0pv7717qcjd5ps6vnlmxk1bqvkhi9lx6j92i6ggnak8i1izd75fw";source="15ksx2lxxyklg4dcckm82hysin9r2v7pa3v8gjns4wabj4hx7v4m";};
@@ -2582,6 +2598,7 @@ modref-15878={run="0pd0qd9yjhvdl3icrgl40lgyjsgahjw1jgc2ah75bfcwj02qm4v1";doc="0c
 modroman-29803={run="17ijrx7f87pbkwbyjwigz3jr85fwzq6rr0pz1591fk9i36jhjaal";doc="044v0nkz0h1c7xsb66kmpqvr5gg4lg1qkx1x2qm9ijdpsbc4zsng";source="15xy8jpp2ac07qq0nl3nskpv62c59xb8qkl51irvpb0m01d97y39";};
 modular-44142={run="0khqcm28cq8cr51wmyv954zy85k9dxvmiszz5w4izxvyk14d56sq";doc="08qhmna1mbra9395gvaqbaqi3rmyhhckx781x4zw5439z2bpmg39";};
 modulus-47599={run="03sssw7yg7pa7i3l29l049qavwxphih5jvc86nysdzzng4a4dd7n";doc="1ylrs9705mgb8ijj9fq5w1yyd2fi4ykx8gpf4ckdr78h6rvzkr1h";source="0gm8vwidnls0z31zxcd348xyc4rrvcffncnwmazi9p1zplhg9ggk";};
+moloch-70496={run="13fgpqq3l0qazx8mz2rdagz9mbz9q2rnllw6zcv4v582m7g3lyb4";doc="0jma5jbzz6zw3pzyp0p45m45i2y1b0cmxyk0k9pasma0ic0x8y1i";source="05wdka0qqp6g4n8r5f94m6yffx8pzvn5j272ybpzknvkqfscbzmh";};
 mongolian-babel-15878={run="0qv413sx05pz5ri4p9znb020nhb8m2ybapcdgnxvkdamgbfvi17s";doc="1zprq4x55rbd667ll7a1rcscbqvg3i4wafmxnv4bksdm8p512w5z";source="0qf83v7iphfavxh7kh1zav95r6q3k0aiilzwnc0mm607bkjzc2x5";};
 monofill-28140={run="0kpzszxph3bx34flvhz746xkdpcc9mj0srifki9y8fa6vgsk2rz1";doc="0czdlvrwav8n3p9afa40icddh37md6g39kmy02vcnwmn9k3izp4p";source="1x5raychfhcjibln59x01fay8r25fwxba4lwi0bnd51drvzs76pn";};
 montex-29349={run="0rgf1rflrf98jayyhj1gxz0mkw74qhd88b4i2ccf3mm0kzwlvw0a";doc="0w9izkjmb90d4x5j1azhlskhgfmxh67jq1awsdv2s52psgscpfm9";};
@@ -2592,7 +2609,7 @@ morefloats-37927={run="0zdlkd53zl0y69d3manicnd8ch8qls6jxgr4mncqg5r57lqp10kd";doc
 morehype-38815={run="1yssb0c3l0sqyv775mjnbba3wv1h6497x125li68q8iwjc529wdr";doc="14s0bvxj2fjrkcrdp576c0ka1appg9g4ri4mc2isfb73yc6bmgh0";source="1sljhzy05akipng9lfajapvdm8jf2jf50v1awl38ld0wfkdqvcdq";};
 moresize-17513={run="07vq0wf250ixhrg70vdvaz7zh33zaq5sm32ka8qh1ab590c8w7h8";doc="1qa9y7q1wi7f9klziwgj6dw9c7bh453srljsx9m106nbyd1cvnpr";source="1gzj5bh16afgl8dg5z44h7d4m79i5naj4wl09m17x6snvfz7ifah";};
 moreverb-22126={run="14srw73gbfr0c3miizzs1rml2ms504hkv970p4dhp1wpk8ywc5f3";doc="0bp2lmzbd3zxqhijfqc7im10476xc50yc8amh0vf017ll7prcmjh";source="1snpyn7bc4qbmamxybv1j1h407fp597m26v2jq6yzijszfanh3rq";};
-morewrites-69306={run="0ia2cklwyp7avg1sncr7qj60qmlhc4zvmmlp8xjb8xp5vgn6jgy0";doc="0xnbybiycp23g754ys39nmak8hfi30q10ga0liaghhykyap2nisy";source="0cx05ra3n66jgx21dkq3ixwf3vmyfb6kswvgg9m1rn6c2vi8902f";};
+morewrites-69679={run="18r8ja3xw77kn4jhhyyrcrfqhqwa7bzbsvmkllvlfpmrfziaxq3j";doc="08syrckx97a9y4ybmk85pn98ign1smqifj1p348s8rlam52r9sin";source="1vdnzzvxg13m1kpz08l3npsp68b0rjjy8w4y1d7laj1qxq69ph88";};
 morisawa-46946={run="19b8nzkwdnqk61p1fc7yygjlrdimawmbam18akphcm70qx2h01dj";doc="1y218bablhn06njs5zqmsl6jvvsgyihm4il1x9722pqvvyxxf9q0";source="1flrf2c2jxpq33g26i0m2h63yd5jfy9bdh80idpx1m6bi6hhq7ac";};
 movement-arrows-67270={run="01kbaxy2wyzxla01gbxlwj5i28ahak3xgm7f8myv5d6p0s6by0cz";doc="00v14fnh2crcmnnkdj7dxjidlxl16iq3nfygx8igas1nbyni7xfj";};
 movie15-26473={run="1x48h56mw1pzllzz5b8fx5ikhp08gx9jybdn7qk3jvfy13a4r5yr";doc="0bhyfgsjwmvvl7lnam0k254w2rzn01wf5gzn38ymmlcbw4ajkkxl";};
@@ -2607,7 +2624,7 @@ mpgraphics-29776={run="0ymwcn16n44y47ngdsyb0vvfp9vjnwixhxk67z6ni5d19f23jqli";doc
 mpman-ru-15878={doc="1x3drpi21zcmkhkscvl4l7805wskqa4zskydb33i0asss5p62396";};
 mpostinl-49559={run="01p16dzg5izjgd64l4qgrhx0dm99hp5lrn9v2rlghs8m249fwmv8";doc="1a1rhz5q1i69bi1blvwzz404h7mgjkjcp9c07dd8w6xri304gi1s";source="18rfna80lz3zrf7wynr8zdbiv36k2n6a8wd430r81ybr9233dhxp";};
 mptopdf-69363={run="1l2182idlbzci9kjpii0zg3c7fpmzf02dz5kg2zcv529mjwwv91f";doc="0q9jlvall8mf9j2zky41bhpz09yi061rfpkpd0arj346ah5w9nni";};
-mptrees-66952={run="0smqvznscn6a220syvg0cj4dbf65r2gy6fz0f4wmfh88l83fy0lv";doc="0sv029k1wi76hw4h3169m9mq1vd6wrjfvk0y9k7xb1zw5da1d83c";};
+mptrees-70117={run="1lrhpf67d0y42mh127ifv9z8xkfjhxn4mfzm5j4gbzz068864rkf";doc="1rjykadxwyqa78kpivdzncr9p156d01w79ygp095wwi7w0a3ll2c";};
 ms-57473={run="0km07va23z5vzx87ndrv9mj0fq4yw0kv7qygd59smhm4q71yspkl";doc="122xwapvjzv9qyh3p1884bzdpalvqzzkmzd18gqr3q3r4cmk2q20";source="1myxaybppzkdl14h4g12xcp57zqjzkzijryv9nd6hy6ggl9y8i99";};
 msc-67718={run="08rw5drivv1frf7c3r0pfy3slp1sz3hzw4gl55vcjyh2b58v9qz1";doc="1qwrg7gwmigwpf9mhmrv25r3785z3nf7i5fh2q4y2pyn2x8l3bp5";};
 msg-49578={run="1g418z3slb3cjf0wzgwgv0zkq0jnj647zqh6iqvlv42r7bil9001";doc="0miycfpf7s74jz831kqbh6qlkkzq31l1x0fkf9d04b8zp26mzilp";source="18djwd3g50ys4ckgzc3dp0y344qy86ni327jmyz3lpnqai8w1c8w";};
@@ -2638,9 +2655,9 @@ musical-54758={run="0rn4b1m1c58phyj9zzvyxdxbilma1bnncscwmxc8sdgb9iiwmlzm";doc="0
 musicography-68220={run="04vwhhd6mlk79bk5nblrdb6vlv2n2r1s9dfx752p3vj584w2mdmr";doc="1144kbjzybzfcxqbwlcfnk4wvqm7kw01slf9pzpb5jqagwrq12sv";};
 musikui-47472={run="0z2ya761bf0n7l45dqkc626s9d66qwr810fnwf34lr1876y3sfyi";doc="09sdb98m3j5wkl4p7hdpdrnrr0l25ni46nlhkhg1g54hdggcpjb9";};
 musixguit-21649={run="02cz225x5s3spj0wf9c51ka0i1ysmcrvlpa2b8vxd59f4pwz36am";doc="1g8hay5rdkpa4pjj0lj5gfs7xmqwzmzxnc8k023ahlz38gdczgnz";};
-musixtex-68484={run="06anc6izks564xxia4l67qazr25whyxq897762f7hk0a1pvfw9ha";doc="1xmnf612wfgxbf7rgm020jcvavqpnahad1sx4bnjcm1kapbxh19r";source="0ari7nwxlyj0lnqhzcpq4vh9xn0kdzqn9c1a5ih5hp1q2zwx2m7l";};
+musixtex-69742={run="06anc6izks564xxia4l67qazr25whyxq897762f7hk0a1pvfw9ha";doc="1xmnf612wfgxbf7rgm020jcvavqpnahad1sx4bnjcm1kapbxh19r";source="0ari7nwxlyj0lnqhzcpq4vh9xn0kdzqn9c1a5ih5hp1q2zwx2m7l";};
 musixtex-fonts-65517={run="1bq3nw6zig0grmmgnz7n84cvxasq61h2mmvm1j6mnyv69yhssm2s";doc="1pqr7h0r7cr2clzn5x74r2z78rlbczxmdwc7bkpb5a0k002cc9ga";};
-musixtnt-40307={run="0g2y52s0151br5vr7hjv5dfcyr96cjxp4n9ya3s1jj81q6q01jjq";doc="1y933975hv5vzwrgjizq315bkgnhlky21blv9kbnzf6kadic8ys7";};
+musixtnt-69742={run="0g2y52s0151br5vr7hjv5dfcyr96cjxp4n9ya3s1jj81q6q01jjq";doc="1y933975hv5vzwrgjizq315bkgnhlky21blv9kbnzf6kadic8ys7";};
 musuos-24857={run="0hfrgx3lk7mf9kzf6n8hswzh116pmllx0k3djbfinvvvhnqy972s";doc="0zxdnzd8x42z5fpvkarhsvdw3x4bz6qppn0iyjff1fjzwl8q8dzh";source="0igksc3i5ydqps0g172i2hkb854bnkf7xh4jqvwlimrlnhs7nnkk";};
 muthesis-23861={run="0bbv49nnngkpnzq7kq15spn4x67yigpyfk8ymcgv647z0bvbladf";doc="1nx1qbgp67n73k54ppyi4li4flnsyi8jmy1lil0gaza38m5y8aak";};
 mversion-29370={run="12mvnkij2q08j50ka3nngmcz0p07lmvqg3jl8fxrfdzyy0h7zhdd";doc="1z9d4bcylv4sk79hfzgy36bza0r9lkzw93mis2m6ypgdbsaa3n2a";source="01dbma0p4lhygs64aym66j3vp3c0hpbci4x42mpr0yvjnglymbj6";};
@@ -2656,7 +2673,7 @@ na-box-45130={run="08xixk2hl5w876x6hmp6h044spi0qw1qbgrqklwrmkxkgpa27i3s";doc="0i
 na-position-55559={run="1amvifgadhq73avh1dq9mj2v4s5r3hlr6a3z4wcbhw32jd31ncbx";doc="0pcn0r0p0z7lxyfsvcnl9skm5aa5xi6362vydpx9kv8m11gl7pjb";};
 nag-24741={run="1l31y7mr00s6md7a68cz51yv0qfd26xaj04ax1ph6dqc97r3fv1w";doc="0gc56zgva7kziny3ridswnp8rscqi1mg51d8x580pidb11mp7dw2";source="1fh9nfjbkvw907ra1crqfhm7hl4k703g80w3c8qvd18r86wmn2i4";};
 naive-ebnf-67892={run="0hw3ra8cmmr79ii1l57z68kqxqjfwq1szl4fg1wykrh9cnca1bn3";doc="1i3h4328sczm3hv5claypc0qfymdmbygr4w6zankb3x0nzrgk9sm";source="0z2df8frslvvaqjsl6js5pwwnhjqkj52dnrvgbygvdhnkpkp5yix";};
-nameauth-65738={run="1zahfi4vsv4s43p1bvrbcd330i4z6x4pf3yy7vwbjdfgzmq39nx8";doc="0map4kf3r0pydsllp1fggcj9z9rir3ipnx7dz2g5asw99dj4dlz0";source="1w3qladdlwhxx7yzsjl17p0ykswg4phri0wadni4s953s04l1i3j";};
+nameauth-69758={run="18p1ca2g164942p15znda23kgxsbfqpvwh8yb8g13m2sv2jr3nwh";doc="141c0575mm1hdik8xw9gzwswv4agj97rwvinpck9a9x2g6kxbwr8";source="1xq9hh74485ck93ifsyg3ci62j5cw89if3wqcd4bcvx2qqxw9lbd";};
 namedef-55881={run="06nr8bwymbc3ps7whpxnsnbnl1fayz36hlgcy5isg0gcx8bdspfh";doc="080m0d24cish4an6p4q7rcrqpr2r1yvwvzk431nszhm39h7d8z80";source="03kg4zv07ch01n0nc7qwk99n32ifwf89z2976wg5k12yq51prplh";};
 namedtensor-65346={run="0jvcqdqnvnjm9z1jcdsa86cvv4f4hq94yi6r688j2sny2700q7a4";doc="0cjbz9g2b8cg2wm97vdgwpqby0jbc5l2d7j2cwx0j571hchlijim";};
 namespc-15878={run="10sbvwc0r3lm90qdxds13iyfcddq1vjx2p8vvs4g3sav4fk8p02k";doc="1z34xb5s5fgl4rag0fmc5i5j3jb810f543096mxpq46j98rcp5mz";source="0xjcnrrrrw4032sd6wscxvar9y3kd4547rsd79dpkbb0ksmqbqrx";};
@@ -2688,12 +2705,12 @@ newfile-15878={run="0gah9qbkpib651rjfrakzldi4wd7gv74y8j455n1yi6wnr0yq570";doc="0
 newfloat-68434={run="1jhaccf7ppi5m5jycz77s5nldbmscydzbd2db8bmb0qx3z858m48";doc="11712zqy292xs7i4xvrrv948i6l1bwjxsgax7hph9hjfqs086rmq";source="018msda5vgamyn1lmq63rwv58h9z49q4rd09l7slij14djxwgdb6";};
 newlfm-15878={run="12mryj5w7dpn0mdv91grkrd24n2pn68p54bl70bg3pddvz5ab6gy";doc="0afpxw78vijnhx2rwv94ar6x4ivcrgz7873vdc5n4dafgg18z78s";source="0z081mn0zf92ana2v99sdyyqjz4lqnm2ymndp76xwih9p1z8233s";};
 newpax-68762={run="0dn36fqqwwa6jzcpznrjd7fk2mkzd37mpvyicif0dc7g125whndc";doc="0jcx3lvc1ay9b2dmj9f1kd7kxmyql95dn4xw4syp45ivqsag3p0a";source="0i7ilsx73lcifvzcffjp3n1swwv1af6l3qwn46mykxyv8c1ygjsr";};
-newpx-69380={run="0rcggz9vf7w0vvkba2d5dg2zmyq5px0wb5xzc0scvdn4bgn1cjnk";doc="04hsww1gwp04nwjq7ns08bi73yyy35l2k3dx4akr8kvr16inn6sr";source="0larcp5lk303p8bryaihfdvzacbkzmx4kldira7k42sg31p5hlbj";};
+newpx-69777={run="1n7374jxqmrhnjzbmqlx18l6yazn3n9b9phndfg40va5ig9q6fwl";doc="1ihz42aasyx306kwkfmidi0yhr8cxmfaz3sl42b1g36fyabp5h99";source="0larcp5lk303p8bryaihfdvzacbkzmx4kldira7k42sg31p5hlbj";};
 newsletr-15878={run="0hl73l6cv94g9k4qnldxad6nl56n9c1r9rkwh2c38sr31d6fn8z5";doc="15bd97zlny5p212naaig42li7ki3f9bfr9b5pqk0vhbf17pik9za";};
 newspaper-15878={run="1afj267dlvgcw8028b4c0v9rdj77w47zjgpk0grbapy7wjgpyjb2";doc="12hlji06sd7bvw7r664cg8ijxabc2q1rb7z516ph18ayjl5vca82";source="1h8abnmiai3c66cjndm6xawz00z1pfmgwlp6w43amjrk1rm4r5vm";};
-newtx-69381={run="1cwaaax209k8196h90q0n0blkb638047hqzprv5lrzjx5sa8xafy";doc="0zzqswva33n8d306g5znq4zyhppqqygc04krc4wzn2wm2jjh9sxp";};
-newtxsf-67051={run="1si13s0wcgb8smy9lb277y11iy8pwcngvlqann31f8znkp8rk1dh";doc="0f76vjwqa1c1bn7yzfcy47k1f8kp5y878mm9ry3m2glsscixr9bi";};
-newtxtt-54512={run="1rydma1iqcb7k8ihyhpgdbrq4vpsy2dwyij2pr5p3bbmsc60kc42";doc="12mvwqmpb1hyn3l98z74qhyqzkinzw4q4f4q0mx1z586238q4klj";};
+newtx-70496={run="1kqzr0z7vd930x3jyna531jp8qkbsvfjsgh8429ams8qqqjidah7";doc="0hdn9l5dl5jlqgylk7wxpdk200agvdmkl8yyj16ngvi6ljsgh6x1";};
+newtxsf-69597={run="0nwsbpmw7c96797bxvlmfrqibgnjsy9m8b8mzrbvasj3nlhfdxwf";doc="0zxkhsf5r9kffk2vz1n1nklk48i6x445dzs4swdz9hv6xkhrbmnq";};
+newtxtt-70403={run="1adxrl214c7gbqnpqx58j3myddf9qx2dm6kfzh83k2zs3h2wbv7z";doc="01s3qcqygqn941frsfyrkh2bs9ghz9db08khbg5gl9imkrjcmh6j";};
 newunicodechar-47382={run="1zr5w047xqg9bi6drl2rw414m9bzpa5r7n5270zr8k8jj74xcv7x";doc="11vk77c83xy40i9vclw4v1h5wnr03mb77fa8s2lhi0p4sq0c3vgr";source="060kbd07al8cwns5877ap7irpf3r3bkw0w62cwvl67y03gcmgr70";};
 newvbtm-23996={run="0d9q6mvczacdxykp381181mnra49qa0y0mngr0dnqp24hfw9j9l6";doc="0k6j4xpvjwwvz8cipgrqvrs2dj66n7yzlr9mcfsgd5w6rm1p1h4i";source="1p3g9qyq4x0ffv68501zlpf1w0ffm816pa0wqjpqf8pz2jmgcg5y";};
 newverbs-64833={run="06m58n02lx0cw6f9689863yqvlmzpaiarzhpslnywhvgfnks7aks";doc="1wny3zhid4981rlxm684p4pn315jdjmkwc002dbj9aq7lhax0dg7";source="15qivriqxgk1cfff6li172lxghcpgy9i1vjskki96pn68q2p0nw9";};
@@ -2702,7 +2719,7 @@ nfssext-cfr-43640={run="1qp85vnmzsn967iqvzsf7yzsq1a4zxvyim7r0xb8pncak805fs61";do
 nicefilelist-65842={run="1pjpffkhwfrayh6a5l57j0szaz63cn83mw53v17ibxk8dj4ls0d4";doc="0dqpx0kkgj4vcfvlyl96mllpn3kqz8qh2476kpfw0imrp8klsq7b";source="0q740bd8igcdy11nmpn61sb1yy1kfypvif2s62ym80p89qf8v74c";};
 niceframe-36086={run="047y9dh0p51lyrrq5fkvp4dpiszvf2nmx53hccl8hzgr2bs3kbwi";doc="14fapa38pffkj1hs58b7r1zkjn3dql9d98jzh13cybyfynd5crjp";source="095frb90nryk4m2iia4sq3kfrcfg2k3nq079770xlp720zqy07rc";};
 niceframe-type1-68091={run="0p219ccyqcpf51q71185manybxsxc89d1crxxwqs96n9ppn7xb0z";doc="0a3xh5akhxcrk440wa6zwm7cf4yd1smis4pf4gd3cjv3rlkli79s";};
-nicematrix-69275={run="0n3zif8inxfxvzm7g751439afyjcxqzca4p4gffxj5apw5ccjdf3";doc="1xrvwf25qffjjc8xkkqgrfzq1fl0hchqy9db28kps6l0xj1bdn23";source="1v5x3ry9n6954p8nmjnnmqsqipyrf17fmkd7yn7kahppwc431zr4";};
+nicematrix-69991={run="0639lzcv4xjhrc0y8a31v5q5apb1vqhmvasmrsq6cb41iwpg0zfk";doc="0ang6dibjjf0j6jnhnk9hqczhv8dyjva5fds3rkansndxbvh9viz";source="09sjwlnavchysygfm2c9ds349q42ybhydd7hcf9hbsgm2bn7jjmn";};
 nicetext-38914={run="0aqfg8phvhlgvyy71flqsaqwmmc6lsl9vsxpxd61v69hp2qhvggh";doc="0c078pfiw1nz11krcgwbdlp2brdy2xmq6rda9yahfjjg54xgdbg5";source="112ji0zwy54nqswil8lvvcrq0ai7jsmdagvf2786zg9n14h5kr75";};
 nidanfloat-48295={run="15l4rdj7bk1279xjjkgh9a7scfmm6w88civ48shh7gwx8gsvcscb";doc="06ccf5yhrqvshj3d8ic3pbnvmdpjxq54i57y3141wgqcj5h062dp";source="04q480lddynb2gqz8azmyik8170vl056fhfjsnq8ydqj0rchnnqi";};
 nih-15878={run="1rlhnhdz58qqjv563wjpp11ppyqa5smjpzjdzfcra0wd6cxv9384";doc="16klyjxzxj4mipql71admicnzlnasnv9hb5pl52wyk4ic8ggdgwh";};
@@ -2727,7 +2744,7 @@ noitcrul-15878={run="1whs120vlg4cdjmb1x363g92ira9nc8j2h65qnvwv8qrmh2hrwnp";doc="
 nolbreaks-26786={run="15qa4nf5c9gl3ha4prajqxl2p1ks6fpql03d52prm9vqkwphzgyy";doc="1h9n7ki3iznbzq519cliw03fcn2k40f2rldjkhnp5vlzma81inh3";};
 nomencl-61029={run="14225s3b27dmdgkjqyh4fqcwyyaahva0sk3k6nvffl6jjqdwsgkp";doc="0vqxxjlvgaa31mjfl6jv0azfh7qv0g341i27s6k9zz35a7dwqaq3";source="0fxfan0s0y1i30rg2mwxl21ymfknh4cnw8za13mx34wvaxmc4l9l";};
 nomentbl-16549={run="08jvfyn4vd8qwlnbsqhlxnwnl4qv5b8r32slcbfwshc4kyi2hn9a";doc="0g48qyrrj6npsjcnnzn3mgsmd5fq4v5vzzsgxvvx9x15446987cm";source="10b41ax3ynpdbn9bawkp43whqjkygh8f2p6qdjiwa47w1acca8zh";};
-non-decimal-units-68504={run="14ry0yyvs4d77vp3ghvfaw1vwc8j0jacn3p3vbb65pjzmgjxabdf";doc="1hkpmg9vg8gr6chb8qri06vfdnyw22abp11d1lap8l8xv40c3las";};
+non-decimal-units-69742={run="133cvqh4vxdsx35dr6vi0sqil75zv3dlrf977dwy5r1fvf14br2k";doc="0qwqzl7p6j9mynlqj2zvwdqrcr75ms4bn3v58jikvywqc0y61aib";};
 nonfloat-17598={run="1ay9s9xrf27sgan2gan86g68i91rwa8spmmj2l13pb3zl5qikw66";doc="0jjil5rbxzcpkyid8y5dahab2ca9r77sw2scgrc4mf2h4nhrjfyz";source="0vyvpxyrqjqmlw2fj4b9avy7sn79m4q8gcbgzdkzzp8d0rng5i8s";};
 nonumonpart-22114={run="0dyf0nl16j7vp955g64rbvvjyqq31x5iv7dbkh8cikwvgn9g85s5";doc="06j6sc8q18mnnnpbj57ykays69n78z0iz1r3vink7qaw4a8fbyba";source="0p3gicf0fzmk0f7lblydf31pi9x0f6x0k5rvdd2ia8hrjdaqv1dz";};
 nopageno-18128={run="098q0visa9g5lh3vp6bp484fglrq8g21v4cb71cnc30f7avkg1v7";doc="0n7p2f039vmd060ncc81yi2hnn7qyk6b7z2hpxh9pp78dwklgx98";};
@@ -2744,7 +2761,7 @@ noto-64351={run="1bq1ysvd9bxcbfql6lwcbx2878n3bjwb3akawm7z025igi7hnml8";doc="1pz1
 noto-emoji-62950={run="1d1mxl32brfyn3a8jpkby0kwv69gimj9wcl8y61jd2qdlfd0mx9z";doc="05rch3ybas6gds53g35gda10gia61v49kgxi3gzcxvn92595zv9a";};
 notoccite-18129={run="0cbvwvgh3rkms6akamnrmzwm6796ly5fa93qsb30bqafgmx56il9";doc="1h14fkdn5kvxagkjx8h6f6a06v7y9z48s87x52cblwykgfm70qxz";};
 notomath-68014={run="04ik99znmf5a97q474p8fj4rhmggzggn9kbdyxhpwxcd1s15w629";doc="0bwcf8s46i3gb79yns1y7crfhjsv32np496rhqq197cjd1c4lml9";};
-novel-68807={run="1k9kkgxsxp1b9fd5d82swypacp2icpp81dy5xnbc1y43wvg2z8r8";doc="08ayhlq5wx9hxn86imy893mamsskl7hk8ya409c6rpkn0y356g5n";};
+novel-69945={run="0q600v03yrs5by11c63idvsmfiaz3jpwkz778b7xydbnqbshvxzl";doc="0z0j6q4ssxfxlgdfs3vva5ahr93bbnryaqrbqn1p137pp6lamsw7";};
 nowidow-24066={run="1w18i36ynsyldb9gs0yhv6plyrjs4762y7bglncv7bhqjmyy7y3g";doc="1l2zq2ain8nhkaa8aagpm22nvg8p1vk2cdgs6pmrydk0hhmjh01h";source="01qjfpps7ahmrwvg142mspj8gsyx21l3nr75g0v7qsqxbfjjy6gk";};
 nox-30991={run="06036p9059x0lzliq9b2pqahnbp8jlkd1gnq300rq0syj37mjk5f";doc="1qfjlzczcnmf3pgqf4qr5v9c6ws6qba9hm28h3xwf2s3099drxjd";};
 nrc-29027={run="01pczvyzfc2vnrfsab180fg0nz13cmry0dvdxmq3lxzp75ji5aqj";doc="0l6lpvddg25k8dynqr26gj7fnaq7k6zbzp5p62684sz9351pvz6c";source="0lzfw45m3mw7yd9sx6lya6cvan696p74wrxgvmqa73prc2lhmbv8";};
@@ -2766,7 +2783,7 @@ numprint-27498={run="0wkijyxl1zzay8vqvsyhk6kf5247qr8k55rz91dn1ph7b597d952";doc="
 numspell-61132={run="10rqraqmnd3pybpih3fhk0068g448252hwcckxzd9vd33n7gfw1a";doc="1hlfb7b3hq9ps7l6z0qzymc8mg67kdipcshb1bpkindasx6dnkl3";};
 nunito-57429={run="08hnxivx7ixmvp7l6kxfr0vxy7c78i9jqkam0xxg5mkxs9ip481k";doc="0xhv3rws4kp5s4q4c10ykkf3yyl9i9ndxjavjx9xxxwm1iap9m3f";};
 nwafuthesis-66895={run="0vicfc3gnxf7cvj7lqa8sd5maxlkfqazc3wi8il553fw88dxvkcq";doc="10sln765phsv6rpxjhn6z431nwwkch3qbq0s3wjk0mc34302qykx";source="1xk78d8zaqbn82lsw0fi428ac9ybs0xnnva2lkb9k8zyijz5w04r";};
-nwejm-64462={run="0c3m871h5s86n61yappdbw42yws7nwk3z6fa7nwqx55nd145yhab";doc="041ksqcn7dz37rj6f3bb02mjai9xl58wbzkzpac4i2fnz3i7hclk";source="1y7a4yn0vkxg1r5fjbpdm3b9y2sn6bsg0f92qcv706siyyynkbmp";};
+nwejm-70606={run="1x96p32bb8xpcjr4831fc3217cr0is3lm81fpyhjp23kcdzjk56r";doc="02ii5nrj00mv7wvkn2bgzy9w2f5l11bxs9cllxz0wvbz17xflb6i";source="0rwm5c34ycklp031w42kbwjf75nibv7y1wa0vcl9av1xwi017nnq";};
 oberdiek-69038={run="1gp308z3xisg8qmg6bggddmmjdpcg074vv15jwhb6z8xfwyj3jvp";doc="1cxl8d26mclv7054s92c11s301gk9kv11zicx8ikv7mpa605ylrf";source="0xcdyy5v1a28zqyip8n8j8szj0bdircciww0a98w5wfxgl1d0dym";};
 objectz-61719={run="0s93jjwcmyjd126wmf2rw3776jgq0ldk40f269cp29968q00sfn3";doc="1qxqphnsgh412lizx6jij6qhnlx1d558bzd3klqf950bp2hy3cm6";source="1l8afdawrrcnbpqdhjls28ncksg8lzs7g59viqygwixwplha0fb9";};
 obnov-33355={run="14cz2rqp4sf4f880d49yhvqjkzm5aw91cdijmqwf283cqgzhdmlf";doc="0k20zh42vcm449dh662frdmspmycx0mi81ml8qkvnncy8h40jxr8";};
@@ -2779,13 +2796,14 @@ ocr-b-outline-20969={run="11lv3dba2g8mrnfh1y6agg8ipivhnppd3s7gqljlpdbdbk40zbyn";
 ocr-latex-15878={run="1l5s8wlqk4fc9i3fizhbm3c7nafq36w39693xm1x07giqqw8q8cl";doc="0ai4kr65ls66ywxncb63jr6gy6lcw6zjvlgsbp4wd6kfjxs27bh7";};
 octave-66115={run="0sw5r5gqvpmrn96rfz8y8hdbrwasv751p7ga5dary1v1kp4brcr0";doc="1r9wywnqhgrg2jjlzyafhdnyxd3fa17zjbbw1bj2a3r2jzd201h5";};
 octavo-15878={run="16pwz513a39630p51n84761asli9kba5z3pmbgfkcz7yfk9iiq22";doc="0rdb58jnyyp12i7ndd6qibs2jc1f0zcw42jh9j48aid6nwslvrbr";source="1f13rhvd2l3v7fdivk1ybw0gnacv9y2pzwnbw8ykmaq3x7m3x2j6";};
+odesandpdes-69485={run="0015ldwqcn6vwayrdljikhcrwif0dsfpj3hbkk47j3pbz38i42xz";doc="0l5fbi2r9g0nbs36bgh3c8fnc54qa24xy44yyw1bzdsnxgq80glk";source="17ffq9wg976f5dmny63zxzic58sldmnv2hvf4zm33lb3jgf67crc";};
 odsfile-68204={run="1k1rhixcwaqyzawpajbi3ljnmawc5l582vb0vzsnmq5dkry7ccsd";doc="1jrq1mp70vj3cncv1l4f8km7yrn2lbhjlcrk0qa716r5isqhawfq";};
 ofs-16991={run="0g2rxji8g1nafyg1nzpy18vzk20p4p6r754m89naygs1qn5n4h01";doc="1v1z08m2ha071kb8zia1wlgkflkzj4hjws8rqnq7asvhi1s2p1rj";};
 ogham-24876={run="0hl3xjmd2bagcn2wnmr2rs1hzmgvm421rkdaimplzdnwj0r64j49";doc="0phm6xdxl1a6nh6g17nyz6p7f2ymll39k42588dzw45z7zwan40i";};
 oinuit-28668={run="1wr3r06hbxrc0v9cwyp7ad6jimw05x3yn6vqpnzchk5l0ixnlkaf";doc="1919kmp5sxd9q49m6dd8zrnjx0cqgav1i87gag1rffd5hz9w4fys";source="1mymvxv4721nhmfdlbl9bgc76dainzykggf93jx6xfwlld0krgis";};
 old-arrows-42872={run="1immbai327l7vkq67nz6mcnyqmx3ajg3blrhbmffkbl92482bv4d";doc="01kdfgiqp5n74lipiviv2alzallba37gyzfp1sqrvwwvrp3a3z63";};
 oldlatin-17932={run="0cxpm5qvbn0a643x2h4dc0pf00kqqk1z540j6dp7mbiwv48qqzdb";doc="1my5h8wq241dm3d6czb1spznrxmrclwgn8i391pwmc11z2ijqgjk";};
-oldstandard-69185={run="01cfmbwlm3x7i331wkwgjq9l71wa2l490lqmjnr0n7dg5nk9kfk2";doc="0kbqi8vyz9rbb08yhy22ll65fq5i7xbxa9pwgfx6sxz6gsbdfin5";};
+oldstandard-70428={run="0zpj2g8skx2c4k4qwp45dv995zn2qf738jvwwa62zmlknpwm8laq";doc="0fqa1g80ipsbpbj77n9g1djs0prikfs4xi0f1m1vw1cp12bcbiv5";};
 oldstyle-15878={run="14lm3ghfgfqafqivam1dqf3gqgkchnbnc84z5i0whg2p18x9zns5";doc="1qj8nbcx1krpha49k4yzyix13vs9s41g96r7kpdmv52vlpfgs4lx";source="13c4dxvikdxx7qv7y9rfpgj4fgzp21q71xpmq1jzx7phwrsn6wcw";};
 olsak-misc-65631={run="1gm01jvlj8vcl9a3v53bcmg604dzf4immd39dj6n6c692r38hhzr";doc="1afxiazmp8pvgfym1i2bj8k5slfqi81d915d7lax59ib0p05w4mi";};
 omega-33046={run="047w29bij6g9k9fl7ymap4arhdmm9kvjfsikvjkf9nd7shd6k4kl";doc="0r686ck7z6vxcajrjihp4a4mh3z23xr8ic34dv9yp039dh0kbm71";};
@@ -2799,7 +2817,7 @@ opencolor-66363={run="18a6vha0n4mwgx9lnm3d4j4rkf72qx88fbzgs164arzpx4gp0ypy";doc=
 opensans-54512={run="0xj7v9lv1ni7mq175l29a039a2ifmdsy1wnv1h0gfni5c34knm1w";doc="178pa2kjvp15la857iblh9qc195z3byd1wxxyn7c5bzmndvypgxn";};
 oplotsymbl-44951={run="1x5wqngjdmc4751ci5qaivzgqynmmg00kg2clngxjqf48n4fakdd";doc="0bj6w6h4g991rfddmrxgc02090vay2h2qjx36cb0hfx55gwkmh3b";};
 opteng-27331={run="07a6dja6s7c1759i9afgacx4v0fli98s6mcq5zig689hpkw841fg";doc="1125aj55p7n6b03mn6p6845yvx2jbjkwwldgwiixypklndqsf6cm";};
-optex-68873={run="0bkp2k9yflmndvzxf071wr0i5rhx4r3rjwf1jz5mv24291k617qk";doc="0pnn7vsfa4yncak7885lc4lcg9viwcl7q80f4g8axil1ash1f0mi";};
+optex-69864={run="0p4gx46w18n6zkpligmd0ya9mam67rqkpdny8spiqfz423jdsnmf";doc="1wa2ypz7xza926fzc8lczrvqzx3b1kr1idxiqb5fakxwd0zyc7c3";};
 optexcount-59817={run="15i48ly8mbhhk0mq4gxwpwbvhpgvk1pb8bfbmfk83sp1liq7xijc";doc="1cvhzkl2lbz939y417ipi22n9alh9j7f06d2r1s0h294692m7bpv";source="0s51426ib070x23d92rgpj247qni42hzaw569z64i7zr3nyx16dh";};
 optidef-50941={run="1jvalzi2gid20wn253swvhil05m273x6685n0b5wbrz5kbvzk212";doc="0sdd6rsdfx1fcw1493b12ww5llww6mv0rij3f1ik290c6qbmyr3w";};
 optional-18131={run="1mv65cqcrjhykpl565z96s57z05635q513qr440crbh61rp93chs";doc="1ks001q2b1yw87q0frhqq6yv77mskng6v1sm6kd8r22cv5g49xbx";};
@@ -2833,7 +2851,7 @@ padcount-47621={run="15p8g5hjwlm80xnm9py3ss6afl6c8rdq8f92z7518hp0yp7d3zfw";doc="
 pagecolor-66885={run="0ycmswy7jghmnpkdv6b519yx7ga56aw7yxq6671nlg1iq1k045kx";doc="18xnh0588b95h7fmqwqzb0p2n9fclqy0hxv3a1cci8anpcr6xz0q";source="0qc662yig96f53wdbawgvsg4wx0dikcnf85b2cffwlkr8qzrwlsg";};
 pagecont-15878={run="1fh6bplg468dandbyvmwf13sh27r6x4dmrwslldlc9580h8jv02k";doc="1vrcr5l1facyyf9p8977q0i5m7cn7y40dbmiv99314iyawa3rr1g";source="1qc105f5v0jiahk8gpgr77lqfaladba4hmqnfizbblzbjhhgg05p";};
 pagegrid-64470={run="054yaxr2q8x82dii8bpy3y1nhc1drvwm98cd3asaddh4lzrpl9vl";doc="10rsrkdl9bp04kxxl2g3rfscf0hcw122py25x2jbq6lgz76780jm";source="0fbzd20z106cgzknj98ryzmwiixmbpvnx5p8v3ns6yjrwrcng3lj";};
-pagelayout-69188={run="04492pp3xcgg9hbz2vygqsfriljhjqg7nxivjhg5m7v9c4vvzj47";doc="1rw33vvag98q7mjdhvk954c1ady62xv20s8qd94b09caclkpdgzv";};
+pagelayout-69486={run="15k0gbynhgg56h48lwm14mchksj1hs1jd9l70g9b47sl8w8qv1w4";doc="0bxr4apcms8bjmz4zk7y0r7yqnvd5kx8wmg32fypds07hs7075vv";};
 pagella-otf-64705={run="1vrzz63la6i270bjqb1nd4rsqqgl13nrqrbmr0l58bmjj7qh95d1";doc="1dffy7z3cfyq2kzyvbarlqivfv4rs70qa7drii2arv2m1609ylz4";};
 pagenote-63708={run="0jd80dz0jl2gmfr74lw6jy1x2hj6zlji9az956gkj8bxxc6zir54";doc="1s7imj4fi08487xmcsicsa4cknpsgd10dbcyn6vkggm95qn6119w";source="07ngnfinv2mki203in54l4gx7r4qx9rm8k4x7856gr7jy1wkw16f";};
 pagerange-16915={run="1nixc1dn9cbdi3pa5yxajii6c9ljgc2jrnknsa7wb66kj5j1lqch";doc="1vy3c498j95miksm254a1sh7d8bp3g5p7lvncc1xad4g388q6hak";};
@@ -2866,7 +2884,7 @@ pas-crosswords-32313={run="0nq8wqxrsgpdnmi2yqcs45mb93gp2lad6p0b6ifqr744hycq4njm"
 pas-cv-32263={run="01aqcqyw0h459xq18gc0y00z2j13zwdn72qpfmajps7ppadlcbxw";doc="0mwgvj4hbq9b6ih6l6hg6gl5qrxyyf0mimwv50vpy1z7bhdq2l6a";};
 pas-tableur-66860={run="0i91nszaymzzwijjlw0f865qx6j7x7rzrxbrc51i02qlfgpaq9zm";doc="0199rpla518gv3rdbchfinfan826z5qs8zxfkgh7rgd7i0cid29s";};
 pascaltriangle-61774={run="06gbr5jgfbms6p7ghdkq2cs9d6p8yr3mvhb0h811y5rphrfzh36g";doc="0fch8y78vd7ykwn9qdgl6m787m89ff3h1fpj0vvzj5vbxmvw6cli";};
-passivetex-15878={run="1h49v6sqbm27isfwwcql9dzxn4vmcn2algkqh7f1pzj860xw3ygn";};
+passivetex-69742={run="1h49v6sqbm27isfwwcql9dzxn4vmcn2algkqh7f1pzj860xw3ygn";};
 patch-42428={source="02xfy1fs30nha0l03lqwl8xrpd81855kb5nb660ks83aj187dghy";};
 patchcmd-41379={run="0v0033zpp4w75lbxk8w2byhgy3s6qvm9281xc2c75bryp0ar5pfq";doc="0vw698r5q5ai4lx4vrb24x8j9dc7iwaml8scsh9c22cpqn2sn26s";source="1cb90y0i5k9s4jj3f9vnj6rhxphjc14p5nm6hllibww3h1khnrxr";};
 patgen-66186={doc="03y05mv0n04hyj0lcq54grx7w5wv95h61j6xlx2jc9v0ib9akq4y";};
@@ -2897,12 +2915,12 @@ pdfextra-65184={run="11r5ifc28fhngzj6ygzfjk4j03xwri683498gf6zhwq0j3km70jf";doc="
 pdfjam-68597={run="1bjq9nax4i940y43b2iw2i7xjzd1q87h58sp4y1dh1x1n5a7fw8k";doc="1kh8xlzcbhnkrwz3yryg8ai7m315yw52k1ydapy218zbvjzrai5r";};
 pdflatexpicscale-46617={run="1z19y34c0x05yp49jqn0z8i3ghv0sz8zm0arb576rz7mskpivjqz";doc="0d1zzym0mgsbicp92qf60fq8l2sdbdx47517k9pj3v8g91svxlpw";};
 pdflscape-64851={run="07bmajz9ggwkq7pz49qipy3nmaqd6ypwhpxilsj9qw4bk5asxclw";doc="0s7bv2v7hcs90fvgk12ff3q89nhxp0v8zjv38wc5inhvhk77jvbd";source="1cx870l68mch1hg0va4g3vdjw4d508bw1kw9f3x9b4wfi7dqfwrh";};
-pdfmanagement-testphase-69078={run="01ih6xxsmzp73h6v0wy9g10rwrmplyr8lpdaz99b5l0pyidh4p13";doc="1ghmz136p9pdg7yfv3g5zrlpwiv81l8p0syl43whdbkkmwky7y86";source="15rr5pli0zp8ziplpkyxzid1i0jjnwcl496pd2q460y07rdxhgbh";};
+pdfmanagement-testphase-70328={run="0qmdvdick06p7p8g9w40vwkgz7ls4kywq3paw362h86z0xz4adpb";doc="0vicksagmf2h5l2rz28wwwzny9wiirnqavwg16apycfcwayfays6";source="16rsxnrbs26q9s2qh7m3aapwxhjv122swhv2lmv5w4zgz275mjqc";};
 pdfmarginpar-23492={run="0mhf21dcz4ndhbh1g0h3kcqza4ni6iigrkif0iryyzg1zcx60d19";doc="0arfch7gb07grg0n8ij0wfzbfzc8bv5izvhp3vjz8hl8ha3wyzgd";};
 pdfmsym-66618={run="056w6dq5ymm0x71bcya5nq4iiflcmgw4fh6zv3yb8ihpjj3h00y5";doc="1vrgfpg21bzg8xcw6cf43bjc3gh0m3r0s0y8lqh2nmdl00pmybad";};
 pdfoverlay-64210={run="03cc0088b0iwjmx5wkcs48nnmygsg7w1xlvbi0pawgmhfvfivis9";doc="0702k1ckh9akj21xvbvn5s18x8s4nwk0m7jybkcl8f481qyhhv26";source="1z8n2a0kwp13iyja45l014jyl8aaw1hhnxgxfib6q8i0qd97xw73";};
 pdfpagediff-37946={run="1a4qmaypz1indb2pw4vz0hv8ihanhf9z0azs3zkv2ya6qkc0kphp";doc="12di5a3976bkilcyfg0imx3w8771ky0acgrag7xp9rpcggbi3r08";};
-pdfpages-65319={run="1ymrq5yhhjp5fg4sbbksyc44lqaz3jwx7lj0360xk14s6h53slyy";doc="1fn5sc8k4pfzsarq7j51iamyl3da7r1qv8jmr8mjafvrvzk6xbp0";source="10gilsm5b0qmfmacm2plhm1ivrvdnw0ikgmxapwdqi03qvizgyd2";};
+pdfpages-69524={run="02c11a7bvw5g9gq2xvgjk0i7mrfl14c7d7490nh1lajxhll81f4p";doc="1vwxmhffq7zlgmvh2x3pbg68x0dw3zwmqsa642r7kp57wc4ldad3";source="18p9wm6wnw6qjzxn77ibh33zwcpqhbz3zc2l4gwza1gpdsirqlcz";};
 pdfpc-68610={run="00zab5xlcqqvvwfxf1py7m6gslgv4drx8d419wl3zjmc6ww8156a";doc="1fm43d3q5gl8fg9p9n3z1nvcp6cykm271waphnjdkj29nbg7n9wv";};
 pdfpc-movie-67201={run="07d7d7h8zfap39dd3nks1bnpnfpgs8nrzzdsmchy6isqfmfrypgn";doc="1la9fvzrlik4ar3fdaxla5gbwpa2v49xrrwc4wy60i7h80vqv80d";source="07lw20wp5cqr0pvjsw3ds75n3hggxgcp9rbvw026lj5k54wik1bv";};
 pdfprivacy-45985={run="1l1nqf4ihwfycnb1x44l1dl2h9f3iy1ppvr0l4zb8qcjqhl4j63y";doc="15w8jwhksfiv0h2iixk07xvvmk1g2j322xqid753bcyks48xffjz";source="1nqjj51h0pcrjnybj3cqb8zwi0r1ipzzw8ic2clnf3in88pjzjhs";};
@@ -2923,7 +2941,7 @@ pdfxup-59001={run="1vvddbdg2l1s2m47w9whvjd1pfp28l6mnyk1m52wnspm3mi476fx";doc="0m
 pecha-15878={run="1ia3q7gygbg4scgja2qf5p7wbgd429cj78b8ffjcz68vgdg86jjy";doc="07b7kmf1if59nrqnsws5hklv0idjjxwp37a16dbjpcfdirb4s2m0";};
 pedigree-perl-64227={run="0a99nbm95pagcnww7wyxqwdycl1ags7arjnd9spahj1zn7xg1413";doc="0d13qx3al4qa7v9i4frii3vv3n52bln12d2dhp7wyjla3jz6673a";source="1xb778agh5vqbm6r14aff42wvipykjsw9yk3i0hj7ibz4ipcslr2";};
 penlight-67716={run="10lzsbz2ia477khfm43sx2qli46isf2z8pvsz23yvip32lmqznrb";doc="1hxj4i1zfbwbyl633wn9m4xvbagv7ljjjgil3cjfmdapxgr06n1m";};
-penlightplus-69070={run="0cbj9pg01nq7jz8qr5d3l0mh4rpad3jxjcd7j5rq3aqh8z5s9q7n";doc="13j9gb6h8mawihvg4gxlzwjfkwprsa9s5fv0bdlr5z33n8fknhxf";};
+penlightplus-70319={run="0na807958mkb1if5s5yfw5ml8gqb7ss1mi0r6dpm543ndypnhj2m";doc="094gn0avaaphzkrn6i6c8xdwkhr47bld57vgrpc2mvcp6pnr6jns";};
 perception-48861={run="1dqr68wkf70aj11g4ywr56si8g82bxi2xc9zdnw0nm0wbimy5zv3";doc="00g96wswsnpd0smv1s23hqiq4lg407m80nybmig4ibcrafjkrqrf";};
 perfectcut-67201={run="1hjppa3dv8a5740nr5jya445y5nb0nb2z1jlkqh386bnvgby8393";doc="1ly3zrrrfb3jihf02p2j5ym3m2gnr18pf2v5qg8rsj2l258xlark";};
 perltex-52162={run="09vc7pbfjl0zjmbra41p5lmr6l6r4gh2x5h9h5hg1i76n4mfkd8d";doc="0sndaglhb92b4jvp0jzpvdiwzc49ijh309aysahrw0pwkdl2lv5d";source="14rv37h9qwgba7dqq8zzvm0dc9y4hmyr6yvvkfbh2il5zs7m8nrn";};
@@ -2936,7 +2954,7 @@ pfdicons-60089={run="1pxw1mhm2lmggs67ql176f6csajabhylmlxaxp47irk6mlihiavk";doc="
 pgf-65553={run="1xai2x91jf241w03lndpa478dijfm52kyin1ci4s3pwvvqvwvcib";doc="059fvzbpq3nggjc3yddzgj1ci4xs5qrwkqvqshcnk0agn80zpcx2";};
 pgf-blur-54512={run="1w9p9l2nw9bf0rhn70y70h6lqqqx3qravgarmmz1z86ara26k49w";doc="0fq1w85wqqrml9jzi7s2n888165pg4ds8ysvgh56kbkd2zzahnw3";source="1pc8x23l6qcq356s843si16yc6yfrvdxg7v821271dndkg7d2vvh";};
 pgf-interference-61562={run="1l3gryb96av9zwxn4naxz5vy0y2245fv5zlm1dg31p88lflh2s5d";doc="09vvbnmcv8d6y75hxdln9gqspm35fada4g66w6z4kv1bg7z3vrlj";};
-pgf-periodictable-67250={run="0q5407piln8alj39g108sbkiir35f9zki3fhfmq7dfkd8910mbjv";doc="0mk48dzb8n4fisrifmwm3gbhrk4hmsma38nl5rpiwm7yy447ch5g";};
+pgf-periodictable-69924={run="0kicajyb144r2srizm2zmsf5a7bv8zx67xbgs3bjpiwpazz3pj3s";doc="18cxvb1prlcd398h3wvfd79iccb1sxv1j05llp17jas5q52y1is2";};
 pgf-pie-63603={run="0wr3r2997p8as08d172sr2hxspmi5bgsgvgwvkm27hg6kpi74zsi";doc="13xvia0zbgsrsy50rp3fr07hb1zfj7jfs95ai6cvy9522cw1zb0a";};
 pgf-soroban-32269={run="1y1c70a9v9zy8i58j19g5c8nc7f00zcdrdjmdcbm19r8vi2r09fr";doc="1r1rgd313fijmjqy468j25d55p76vxmcrgkp968riknych16y1pl";};
 pgf-spectra-66961={run="1zl4cmkd153yk99sm6cki1a0g5z1pfv5c1d8jskcxzrfxzzrd75b";doc="1iyny475v6h54crlfjm32lq37f2dg8mirgghs57cqrrcl2nv4qdg";};
@@ -2980,21 +2998,22 @@ pict2e-56504={run="02rhm6a26vgpscasrbz25vjimlnkh9s18pq6a9025k65iwp5f08z";doc="15
 pictex-59551={run="0yz4dfnmakv78bc7rlabh8582knr131mrx0rxjai640bdax8as2a";doc="037ljjsnmllkxgp800dj1k9pvabwg4gjsqci84jdmayjcwsjibl1";};
 pictex2-15878={run="1qqf08yharknq6csk01jdff62mg011bryqlq5mbmjwqwh7wxs0wy";};
 pictexsum-24965={doc="00yd0945qiss5jizkxncg8a9bdsld7mkhaipi92bbn1ghqicsw5a";};
+pictochrono-69865={run="136apjhvd031j0a1jaxwkdm6lhg4vi173wgcdkd61phahc4xzss1";doc="0sybhyczmjjhi47fxqz88y98qq7w8nibxij6ai6k3wzkhg9iy9hp";};
 picture-54867={run="1i2775x39n5vxspy555rwn86384yyapl70kcfir96prp1846rfjd";doc="09gid4bb2wbmaqday94qj4r44cpk57rxpzg6grdcjg4y1dkjph0b";source="150wv3jb6hspwhkjnbxff5izskvqfvhvqxbw773qikjjxsaidqgb";};
 piechartmp-19440={run="1sl8mz26cglbsqmpd8qz0l9yycxgcimi0yhkgnc04n2iik1xc6b3";doc="0g8sh91ki495mqv7zxxz2q40bk9dl150a9hi7yv0kbpiy45h3af4";};
 piff-21894={run="1q0xdl6ip1706wxprpd85vycyksbnn1ws091gvmpdhn6as4fxg9i";doc="1sa2l82yndb9pl8bfmnna20ackv9rxp7y6ljjyix3bpksqp20rwq";};
-pigpen-15878={run="0zd90dp5bx1l5d5ka8lzx83yprl1anh7r4qc0laa455dix3swfq7";doc="0z0a78akxkigpw7289692sr3z8g2vnyc6hwcznn2963vmsrayv6c";};
+pigpen-69687={run="1mij57v2cfj9v1mfhxlpb857ipydzffbdbzfw00qmh6iqc36cfn3";doc="0db3m9vv02d261kinx2hj70cqw7gpywr662amrmxznhhq3990wwk";};
 pinlabel-24769={run="0dlg15b6cjykp481xn03kg3p1zqwccwnm2la710xdwf87p1k4bp6";doc="0jw94fl3awpyla0flmw9f72j3ssrqh1scfrbx34mxlbmnl4z3pfc";};
 pinoutikz-55966={run="1kj24i32ql4jfhzfxyrcj0nmyyhf4ipic7zdzcz71za6njqv3gql";doc="15farzmd27gp8ms5vck6xcjs0cx7rp47nww0shs6r0b0l99946m1";};
 pitex-24731={run="1g91l1z71481hlwz8vmdac0g4vm5d6940gy1ly44qny626k9j079";doc="070qn9b6bq4szqa9wqfmb3qbfxcgif79dzbb3qqhvs7fh9bivqdv";};
-piton-69320={run="0r88g4c5rc2zg2vw49a7cswrnmqcynkhhck5w4f6rqm2iggbvwgl";doc="07d13hn6h1wszszzfrj8zib5vvm3kv3z0543c404587qm1s3b94p";source="1j0j70ap527g1czw9ca6gml6blfa0djmjvhvkqlvyv024msm32l6";};
+piton-70446={run="09dcrv4ss2zw3vnpqrpbx5v6gizw0zg05qbc6f1rk4l0vk5m5zad";doc="1gaxv75wbv8j1nxpg2gp30gnzk6vp7226nchs7hi1686xqngaa0v";source="1nf5lq7mcycj3nqc1bxbfc3gsk95f0k6xnyh4dsxma1kx3y2s0c6";};
 pittetd-15878={run="1s8865g4fv04ha7vls9frkkmx8dyn0l7z1rqvh3dkyy7fdgq4vff";doc="1jkdny3kqljfjnf9ywpz7xqvfka8kwi33jy3z2yiq1fvp8k60ar5";source="07k0ilmwkg3wvgfpqyqc60hn5mlsj8z5lsx8mq8h3igwm4j8krzi";};
 pixelart-66012={run="0d41qzn2gsqbgvgaxk9a7cj5r285ayn8amplzv57j5c5azyi6qlz";doc="05mcmy25mdl42wfdd3l64bkkxrvmcj6lw9zb9jypaf2rrdfnpq6l";};
 pixelarttikz-68520={run="1zn0cpmmdfvydizw1q9lhxdj185gyq2hpzl6rpjfxvx5wsm9piag";doc="1p5aa3mjv4g5qa3vi988v583d8h6237lq9bncnjaa5c1sd1l727l";};
 pkfix-26032={run="1sgss755cf1zrpv3x74x5qnqc6w81cvr1x0w7875ijh4c1xxkn9v";doc="0bxijxbbj9v4c5p1rg4gkqnm75rq516vxln6s6174ph7abqrhvys";};
 pkfix-helper-56061={run="0hf9hnjw7ws0mx9w5s6ik17zlq27fyc3p9bgya1wxbh8lcvrygn2";doc="0fh59nzzl58fgpkkfzvi603sfsfnqrj8s39k4nn97567gpv4a22a";};
 pkgloader-47486={run="1vmpxv6x2dq9b4ddj3xxqzkxz213bvz7qn24jlx04svdrq0cnpjn";doc="064qsri65nyy25sz8y9avpxyg3rzcspjr1cfc5jp0vfd07905zix";};
-pkuthss-64869={run="0p2hs886j54waxl9kk0gjimhylj08z1jy7c4pryks5slchz8rmg7";doc="09hz5qm3d6wh1v6bcl2sadlnm79sfvp35g8jhqz6xps13jsfj9dp";};
+pkuthss-70496={run="06xj3isz2c7pgw4czi5yj8i1v8ydwwvfwrrszvdfd9wrcpkds7qs";doc="07k7xssd23as7ck2068wv7gxcrvijq459fr5sya8g040pv65cq1k";};
 pl-58661={run="1j2a3vz3wabv3ai0k9xvf8brwljr5r2bi57nk0bba476vkvxbrbd";doc="08qkn286bx6akfrxrlbj52xylbvv00bvmmpin1sbpy342ij57lrq";};
 placeat-45145={run="0vmvw0k1s023siwsrl4hr32wyla5xmkvz449p7vlfv1n63383c1g";doc="0j9xm75xv0lqkqzm4g8aqxy6cs8vxydmm50vsjj4g4aah7n8jygk";source="0118s2p8vfam65fwynf3vabqj4kz0kkw9kbq49k7akwwj1wpyd7f";};
 placeins-19848={run="1mlx2wlm5j7qhhz8q1fvxd4zvjmjpzhk2aajql3wqvamrawba6k4";doc="0libqvl13md069fjbx3gl17fyzpn6v4jk4vk5086szbi93dr692m";};
@@ -3036,7 +3055,7 @@ poiretone-64856={run="0dc8ll3xk7yrf3irrgl5bh4dwvi6mvgp3iqvzfi26jv12m3fwr8f";doc=
 polexpr-63337={run="1dml5b7zb2w4cawqgvqld63wlny45vnz7p8y2pc7b5h86p51a0cr";doc="198dhv2wlclrs5sqdiqk26llyhjk4l4zr0hlcr1cw56dnhdh2j75";};
 polski-60322={run="0y66zqxb87i8wymryd19hjws7y9snks73030r287lbifb77kyx4c";doc="169z3y419d3afhmhk22d0h045pysdrkhyvsgrs951ah3vgf8n5cv";source="1m8pysaiynxb64n81b8zj3cly6g81w2fa1nrknqnxm27bjzn2jrf";};
 poltawski-67718={run="018iqwz4apkj8pwc3ws7k00zldnz4k02h1hv0ry9d83z34xswfsn";doc="1kx83mgwkxd0sv2xjzvn6wdsbdng6skw71z2xc3xk16lk356q8hc";};
-polyglossia-69093={run="04mn94vq8fkg3a06ivgfvpwgdykac5di2ibi316brz9ypsglvfjs";doc="05b84cypv1ifzip7dvzjbq4xx3hn23qy2430faw527nv8zsz30a4";source="1cjbwqk3r91l1pl68jnyk1gl192gfadfqy3jg9a7cmrnpkyihsnv";};
+polyglossia-70496={run="0rwdpn2q7h2kcdnal03zj2km1rw5pvj08qvw90y27m3ps1bj6w0h";doc="0wycqg4g2xyakabgsd5a44p693g96r551nrzfb1v49m9hb9qswji";source="03s1is2254s34xipffbriiyd6gfwwqib83msbrwj5z95vv3ibazj";};
 polyhedra-68770={run="034zv3j4ga0xqkqn504fdwrcbzjh63v8zzfchjwcsbb2qn1x2rix";doc="1a01r85nliax7zll3qz212pkz2yix2xzh15hlbpqgqslh564fkxr";};
 polynom-44832={run="0vn9k3vci15lq0f6r2354ag4bs55jcq6571wvz3k4daym5ka57s1";doc="1cxsw0b5vxy191xy5clf15hb2cpyyqj5ipvgcw9n0hm8ka3g9l1i";source="0qh4w6q9qch3r41ps38yzlv850wcqvf6b0b6vqirk9lq978k387i";};
 polynomial-15878={run="10w1vq7101hnp2ifaa0j9mfccg9y4s3cyms4m63sx54lbpj6rc1r";doc="1vn0i77hzr72xkj6ka4r8n0g0nbz382z729v269x6p5j9qqmiz21";source="0hsb8yyk6ssih7fpc6qiwaf40cwn8xx4jgwqgpmfgkc0x1qkpri2";};
@@ -3050,8 +3069,9 @@ postnotes-69102={run="0m9izldvlngj81c6nx9ig5civvvxkf9mh3cjj8xh0r70pf3i35yq";doc=
 powerdot-59272={run="18ii2qxz7c0wal5xqddyzd2j933lg4z7xglxsxn3vgp8ffq5kr3n";doc="0zpwjmvlckp46ycdldf049s7qvgbpx8cx5zlvzh81qhgdlgximhl";source="1v7pxr134kndndk542f7bs34c5kj85xy0cwvwlhnav89ff2mh5hg";};
 powerdot-fuberlin-52922={run="1gx04y9ysvwzghy38k6izhs9gm1hzssnb5zh8qjjh8v99mk6cqwa";doc="03ci0lcgw777kfmnzas13q75n03z8v2im1wzrd8hpbcwq18mmn2v";};
 powerdot-tuliplab-47963={run="08f25qa5fdacsd8i0bs8y0p3k0zjgja0qp4ak0x3bixz7yivg5nx";doc="04b546i32k1cs6armmnvr8aqbfvs0ysarlsjmsci9xdrz3clm5w5";};
+ppmcheckpdf-69527={run="04xr6c4niy53s63d7dw7fvd00j9i6k0fjfg19knai2l9bnqji5nf";doc="0l0q4qswcijs94pk8qgb74b96df1l8l980bvrrqhp8d071b19xdw";};
 ppr-prv-15878={run="05xs41xfm5hjpx9dzrngaj824rr8cpwcpvzxsyp1xpzlsv3gk1m4";doc="0rfrxzfm34kn4sgj1dzvdyjx7s7nkyjc785j7pgb609svld6jvyk";source="0miijdgcsn709kpp0zjyqxyxfgk0f798v748brmqshb6mfxbryzn";};
-ppt-slides-68764={run="15x2rzkbc43mh39wrmf8fi2vdn4jxq2cmysl39slq2wj7blblhwa";doc="1lkkvn5giyp6l0mz7q0va9p1rvwikr6b1kw4ry1qlq2jpa4zjhfd";source="1jzvqvy0838h3md6i9j4pk43r7z2h2ignbcap9lg6cmwwkril6bd";};
+ppt-slides-69568={run="1zbfmwmzq53dm8pr8kzhhgrx0i83s67vgkyb2krlssjsrmycyrjw";doc="058pg4005wb84iv6rr3pjyqfrabl29110rkq8vgq42dqcyr66c99";source="04b7ysvrxyg5x7m7x87gw6fn06h582xqk6gab69mwn24za9286ay";};
 pracjourn-61719={run="1idcncspb2dcmrfsr8bf1ar413mc51lliq9xgpv0ybsiv91yd4lj";doc="1hks8p9vksn88daqyn7rnsaza4i05dgfb3ngd5yrvvw0v40s3acj";source="1jbicfqvvyi4nnmpqafzlzlx459v5cyv62wmq67c2692am8a04v8";};
 practicalreports-52312={run="0rv5rsba1xdwcv89fl640yyqqk8c8vf2w647yqz8xawm358la42n";doc="1a7p22pkmb365haizgg3ainxlr2626mg6p9962cy0933hb59llcv";};
 precattl-63967={run="1lq5f5fx93a79q144980balnmnkvcn92gi85df14iyj96c1zpiij";doc="12gmnd4fafkgrffh9smd8grv2bsq1dajajh3s6rqnf2l8xr1wqkx";};
@@ -3062,7 +3082,7 @@ present-50048={run="0irxkzfg19h5pn0drgl5dlpz34j1p5jpyii05b2xjz4810gnl79h";doc="0
 pressrelease-35147={run="0hrx80i1nfwyhhda415v67qxkgj6fqbg4bicirdn749bwc0anhar";doc="05spvrh6dfq16z9jlswzqrwnscnywp482cv3bhak4vavbxs8bf35";source="1c7nhvaxs4xlycsx2n6bkyy6rhnzc9ddcnw6cccpgilds546ns4v";};
 prettyref-15878={run="0akbp6wsxn4swk0kwxw27x3lpf5anwk49bb8pvssaj4xy68hyq1h";doc="1wmvvsz7y0idwfki553qkfhg8j7k5h79nlhmaz6ln448x8gym8y8";source="1w9qckaw403a8nyqyx8qyqdn3zfkxzgfzj1hdw5vwi2805bbfy1f";};
 prettytok-66884={run="09lrfza86v4haac2h4pg68vqjdx60h79f3p7my59mwdk67sgbxwj";doc="0n6w3d8fbm7pidh7iga8vmlvx8qvql90k14hahy4q0i2b8dpg2bv";};
-preview-66924={run="021bb1l1k1qpwj35v81s26cw599nk9vmv6q9wk03x9b46ir0mzxc";doc="0rdk8vjlps3q1b91xk2lrfy14wcnfkbdr7zng88wjw6iacp0rgfn";source="0k7nla9s1dd0afmash82izyb4va1wfh3ip4wry2zmgbqjkpjg0bp";};
+preview-69470={run="026s7kb0adrr1nf6lvy5l511xb47j51pf1vgpm7gvn4sk9hnm3fs";doc="1hcvagf9gv18695d3pxh4a3dyb7ykv2ib7jaicmvr9whzvhlqx46";source="0fhn4fprb3w34kvbwymxdjj8arqchalg90idzzgarika4mlpxa4h";};
 prftree-54080={run="1sdb56cvlfrys3f884hg6qpv1nwd6ywfyiq8168bs78g4q2ah4by";doc="137f5nbcm6p428an3v20j5cx5djvdri12ph07czj13877pjy9ccf";};
 principia-66625={run="17vkriwbkwjb2ksxbv9glz11i3dczj8hh4a4mfb3signj2dwyaf8";doc="1d7fbkmjbi6ym7kik631219fa4c1cs80k7f3kzzzsrwkmnhrq6qv";};
 printlen-19847={run="1h6q95dvpldmrfbpdv9v19p34iwq3jzz7vs0z7b6fnijyybjxnpm";doc="08p9zwkgjpkh7ip3i54qjdazgnwq79v15hvz4j4y2dvh294nmrgn";};
@@ -3071,16 +3091,16 @@ probsoln-44783={run="15zsh16v5rs0baqvy9jwn59d95qj6glvc5h054ldb8sy5nwkl3sk";doc="
 prociagssymp-63242={run="1vs5xs701gkm4zl6x1qkzbqssffdhg4i3cabqx3s8hp07nw8h7fb";doc="009kqv5n4m5ci39bck5s3h5kwcim5dfjpa6y0xad46syj9mgjgvq";};
 prodint-21893={run="06s9qbfy0rkfby9ff3dylykl81yb3fxpwxrwa8hn1aa2gd9bj2n9";doc="0z8ibz668zjjjypcn0kiy488wzgwzxqackz5z996r3sq5x5zzgh5";};
 productbox-20886={run="1idarj7sxqkqzlnwaqv9f192r228fclilz01fjy444ly765k0cbk";doc="1pzba2ymna70gflrnw6hs35dgkv17qfjs8gh4g6van44wjykhfvg";source="1fnqp2sx0wmyd9130j5zbqw2dk1nkajp4qs46qm47b90wga8pkkj";};
-profcollege-69343={run="0f88f1q817s8r3skm097hp5k5qbjfnfh2lp26c2vc66bpmpkjzi7";doc="0qp55z9d1x30gs8h51rfyzci1hia8jah9mk6s7z1xlxmy9yvawrr";};
+profcollege-69539={run="0xkbjg54jkxplz5jgrhs2vdxb6rn9idwzzknjw4wgf0ps5c8b4zh";doc="0h52b9p6gag9ss7h9jr8c0b0hjym7jlan1n28s10lhhf3l6rdpwz";};
 proflabo-63147={run="0rj7x6s9afn5yid3pqd2vz9qn21z6n6m5cahq92ygn1ix5xbw3dg";doc="0z56g41bw3lwi32z0imja6a4nls406ck3ic4pibyi5ajcb8317w4";};
-proflycee-69386={run="0apwy75hr9b4kirl2f94wz9fxlm6pvndn8ppi88mdplfwhykhvs2";doc="1qwpl2vgi6sxd4p9bqyqag342zzacfvq59nwbd28hcnnyqrr9az1";};
-profmaquette-69287={run="1q10iqq390lkb10xz5x8fjcxic9x15d70k472s9z8nwqw2sdg540";doc="1xhajdlhh24fzdnhq9qqi3r01s5icdii3vgxy6wb0dx2ndkw8k5b";};
-profsio-69125={run="1gj53aqxmmy2h2xxg2hr53baxckwgm5r116iiz7mhlfpd413s77f";doc="1pk0ihk58s346xqfmi7xygismr07pzb4rsx4z2dbras2cwq8r0z5";};
+proflycee-70513={run="0qcl9dh1433kgkamvr08mdxpfzs56jbppll784fyzhlpfbbqay1v";doc="10vyp8jqi7mwmvk71x3jnkl9nrxajip9cmsqb62v56ry00jy8cc1";};
+profmaquette-70496={run="0jz4cpln3lh5mv23igg9rk837kd53ms7s7mvy4m51y35hal27dmv";doc="1kpjw4vm8wlq2d35wfy3cs08gvhadgl2lxq6z4qhwzkpdp24dar9";};
+profsio-70211={run="1gqjdmsigddwmv3vfafabxqfnbcb437q9glsy6fa6a5f7kmia060";doc="1wyw0lvpggp0ryhzvi3z7ygjlfpb0kp0fi92yfq8ww6sjjr06x3a";};
 program-44214={run="0ay2z8ga10zr5p453ss0w5qqqyknsgqd2hifa7lq0gih4rml14pa";doc="102c9fir3hn0m7y3lkj9j0vwf0srbv6inq87lcxwfkvc7yw0rr2m";};
 progress-19519={run="0wgkyvyf24666kg79h7wq1piq6yq2nkw6k5g0ydk3y4gwzzkfhlz";doc="0r303dr6yf1r5kk38c1njjra7vgvp9qrblxj7zd8fw1vlq2sc7fg";};
 progressbar-33822={run="1d0d6dy9ssiij19s259d2ns2k5v2ccc45anhz1qm7iqli12ij0m3";doc="0bxsgvql8hqv4qw1pv18vdxcshphdpbb29mqp3pbbsd4crp4qb5z";};
-projlib-68784={run="1hp39wzk117dc0f9xjbm4hhirn9myi81pzzrppc30vzjsy6c899y";doc="1ics502bv7k4yp1is445gid0av88n0y2d9rqi5sw4plp23hxa4k0";source="16zz56y218gan7x8gmrhd5bfcn44zlxaajyvxx2w7id0ii3kxb6w";};
-proof-at-the-end-64188={run="1bl6s055slsn8y7cvg7jagbaycfm79rfic1pl25v93bpxhrx45gi";doc="0bqjhqcvrhmh0ay7f59shnyvn815pqjzkph067yay9l5jr1s9xcg";source="0x04lrwhhbnm511rbbccmf3p0wzp7h1rxd1kcf8xb03pdhvq1adz";};
+projlib-70327={run="0ld45nn6sal1fyrfdahadvsb3jyrb5ylglva3rh5fcxr6fl1ywih";doc="1l2dbwqhpc18nq8xkwg5f8l9mcg59f9isvqd53kx3avr903wggf7";source="1667xlm00573al2aqrfmfhlksw4hvdcfzr5qa0mz17ci5fcy47rm";};
+proof-at-the-end-69602={run="0nxba2ck41yhjl5cfjhjj34l5srkh1y47h0byx61wqzphdr2y9zg";doc="0k1zfg59sdknh6az19821n5qvpcxvlr1wr4qz0wrghah8h6zjggg";source="0y5r6vzzvi7my8qs90kg8pvb267z6ly3nf4ski14yxa2fgr6ab1l";};
 proofread-61719={run="0gnn7zkzrszglcqcwz8c4i13apildg7s93rkp1z3h5m2gr9w9v42";doc="05g3k77vczdqk19gigs9b6w8rccvcr0d382ysqn0yg6cgd70bi43";source="1mggrm4cfji364ylra3ffdhwbx6phcxwfzw2mwls00msk7jdzpsg";};
 prooftrees-67399={run="0sk49q7vavqlcn6rgpzzjjwldss4rlqkvds78jyfm79ky9vdgiz0";doc="0jajcbq3mv8lmixygc7i4nhwiywq5qp9w8hbiqxi16kpqql37n52";};
 properties-15878={run="1pxl101mc318ivzszyycwb79rqghx4x8xr9fvq216ambs7gq4sji";doc="1arkdafwmhg0hm11as4mb75pjz2mnah1l5msy5xnlk4asbwfc4sb";};
@@ -3099,7 +3119,7 @@ psfrag-15878={run="0m5dlnjf7gmikg4nyxzzfz999gphkg41qm2sksq9ly2rspbdcs8s";doc="13
 psfrag-italian-15878={doc="0ssx8rw7fwln02zzscywivnhizgrb6w05awscvv9gf9n1qj6avsf";};
 psfragx-26243={run="1kb769ai57d7zg3bp0r0mspz0a2l87qiyg04a87iqk7vxrwv0bd7";doc="110n7a7jgfmzps5ng4gibxigmm3dpkqlz6jpbnphrw1pnlskwjsv";source="180yrq0rnsb9cd8j70jym06k543q211fzzswzg0dq8fzn3hk2wwh";};
 psgo-15878={run="18h614dasdg19jnwwl5swih2dxp4wis66fkscq8jjmpvjnckpck2";doc="0naza2kxcgm9wdcyibs36qnwwgwpsbj2m9qkk3l9d54kml3wiznp";};
-psizzl-15878={run="0pzbip08246id09mm0chi0gjjgdc7yzj0bd7q8qh5yfdbhjn8yc8";doc="03slfkyrb0pil00n55n6yp5vxxxl8adjbxxmg1c2zl261lci107v";source="1h2hrjxc3ck75cigh82rmi3558dmpliwxzzsaabb178bh76m2n3a";};
+psizzl-69742={run="0pzbip08246id09mm0chi0gjjgdc7yzj0bd7q8qh5yfdbhjn8yc8";doc="03slfkyrb0pil00n55n6yp5vxxxl8adjbxxmg1c2zl261lci107v";source="1h2hrjxc3ck75cigh82rmi3558dmpliwxzzsaabb178bh76m2n3a";};
 pslatex-67469={run="1wfk27qb4x8aafph0lgnkq3bkz5fy4cmaiivd924mk92l1wfg6dp";source="11gykawqw4fi453s1bp2r0pfm0az2k8gr3rcrygzfqqzgrhxvi8f";};
 psnfss-54694={run="0ng5pkk6m2l8yqd58wggbakbs4hp4400r4ihyi9akf8j4kmq2s5y";doc="0vfv9x1qsivwi6c6hi23vw0jcjz9dclx0vxnifslyzlrh7592dzc";source="0cqpzra8jwdn9d6w4mhmfrfw2zia2nbpyxjfrcz8m1disd10lhsf";};
 pspicture-15878={run="0i41lg0nw9xya0gfiwjd3xgbk0w723g90gnsvnfg764s2dl371b8";doc="1p27zx0svlcm4p12xjq35g2lgj1j485c3x363gciqb4aswmlsl65";source="1f8lhyhfcywn5y78354r37bgalyq57bm1fill5vzny3l7cyqxxn4";};
@@ -3155,7 +3175,7 @@ pst-layout-29803={run="0199jrw7b58x6qby4k48n8sd2rffxlkhrp334q2dmalqsi701l89";doc
 pst-lens-15878={run="0220idbrzzslcmlyxxzj52mj9iai0p2ya10ykgkssyd8nfbl2jin";doc="02hbbhdnaz6cc5zkp2zmm92kbk0ppzwljivr1grx4g0jqqw8c2h4";source="1pwn8wx5w65xdz46qf5mzjkg74q296bkmzwsxw2aml406iksy890";};
 pst-light3d-15878={run="0glqibq1h8ynfkgn9r2p0yvgplydsigg5chj5gl2vq2hsb38sqg3";doc="1njiml3v4vb7jxpnai69b08pdikasjk30g3xp31vixqrzr56i4am";source="0rrgfxsbvfbyc1g1xsakmiiy7f8skmv2bkgq6vbji9y1f5s3b4zl";};
 pst-lsystem-49556={run="02m2g6kjs8fxifsdxld6ivjxch7vj137828xpax8s7abr9f4dyiq";doc="1apcp1ms40xhypxr4fq6xrh91ff15gplzllh3zs5b1w153xq3w8l";};
-pst-magneticfield-63821={run="01as8f6dm5yy7bqfm1yw0dm1w0jx74vhpbh4kp55br6f48fs480q";doc="1mc60dryqsmz2i4jspixg7m6rf97ai2zr4f59wf59140wlca7c2k";};
+pst-magneticfield-69493={run="0zpzn1ci4bkisy4v5mng3ywl0601ppfmky8il3ji1fw3l6g6i183";doc="0pbhh33238l79zk2fz2a87yhxk8ax81kgk2xh60rdq5vb8md3z0k";};
 pst-marble-50925={run="0d7xlygws5f1hipyc2ba7spr2y8h3rprigbrryny3mw2ycdh1yqv";doc="18jzc9fpjcrhya1knqsxxmaix8sglfbcsiszxc949pf4zdpm50ym";};
 pst-math-67535={run="070vvvcynfaa7mmfmqkkn7va3jvpmwxphm2w8j4k74indii282ry";doc="1w5rhcaggrjn9hmkx4h2h31470fpj8d3v3gk4w8ph35zhds5vl9c";};
 pst-mirror-60506={run="06qvndipn0i69b5jk8fxhp465sqjz79vlwr0j01ria3m91vygyqc";doc="0bfzs55sj49y3lznll477bag80yf06pcv0hh0xfg3zzvhmpcpiky";};
@@ -3182,7 +3202,7 @@ pst-rubans-23464={run="09lmil6ishwjaybj5nqabxm20xwx8nw1l9dj9bbjxg42h1wz26mi";doc
 pst-shell-56070={run="1j97kcw8w52q1ispkpbwblxza7q8v25288pzxkyc4yf7802a3zj1";doc="1i5dbbnzadhc47mg7bdv6vas7ynkx2c4qpz0khcvrz393kszjkdm";source="0rc6j6cy5kwh9sq2gp5scxpb58ycjqdycnmnqpy67xha62fnhcsp";};
 pst-sigsys-21667={run="1v3yz2vhazp04xjd0bp4pyyiz0v4yq7hbr9mq0m2s8pg3hisfbwr";doc="08m72w1jxrafcbr19fp0yvii9aama1rfl9czys6gr3sii9ks6qxa";};
 pst-slpe-24391={run="18f99ravk128r2cg84yxv3cjx2df8fgzq1f054z5g5ig1s5ginws";doc="0g8dhw27n2vf73289y8rah5xakb60cy23993vl3ygz1cgrn356i5";source="1mxninpgycpbakvmc9qc6032mncz890k5ggsfm507jzyfxrdp5lg";};
-pst-solarsystem-45097={run="0n6w3fyggf7favnr90239b6dp2j7q31qi5yjilxdw35s001m1ghj";doc="1bm77lqaqbjnhwv6fra0g05ij4l9vj9hh7gs3sljgdmwy4syqq24";};
+pst-solarsystem-69675={run="0wyascz2z4ydqpmgmy23l95b388qp6z4p589dy3f0sz7v5cbjxx1";doc="1z8kbqvi0c0pk3hc85xd03alqwghgnqqn11k5f2wqhgv6vbrif5h";};
 pst-solides3d-68786={run="0miw5r3sp58x5q9rdcaa2qp7kvsv6f8pnkjklljm8gy171ddvvav";doc="09ymz8vb5hinmcnnc8x92qkaq6zjhy3gyj0m5rgljrs15ks38vx4";};
 pst-soroban-15878={run="0fygllzq9gp37nkffgk3am2vygl5d5dwyr4avf1gvh0s698jj8by";doc="16a1w9ci7ivqf30hvr23fv6j6clqjb4y7nmjgcbfz20xzxk3aa1c";source="1h6srvvl3s1prswlj608y7pj5l4zzn13yqrhdv41956ikd1wbb14";};
 pst-spectra-15878={run="0nd87bnxf8giakadg457p10idbnn0m982l0pgyx23495qfxywax5";doc="1y40d08nwnpkmrm0jdj69drpip1gwkd8n9hqmairl1wccs6r6dhk";};
@@ -3202,7 +3222,7 @@ pst-venn-49316={run="1i9frqc6b4wg3pb0ks4v0xxsfzs348ddhncr31mhfs39nbj6029d";doc="
 pst-vowel-25228={run="1p1adlrg62jsqzkjkl8avb79w26kkd5jdssmkcsd65dg5qfa9x50";doc="0wyl0mvx2d0zd8q0sdmyrqgr72i2igv0669ajv0gz8miv04vr41k";};
 pst2pdf-56172={run="1rm0frzi52i3irfy5703kw38d3f1grby27nryjpb4ziiw6n5yizb";doc="1sll10kps82b47npv2g2r1l3kkm5y75mp2p2pzqsnxxivgl5kp2l";};
 pstool-46393={run="1g8pmd13f73v8bsrcpf4a6hh00pww6isz00gj8cxnj0xnd4p9xwf";doc="0vwxrcm29w8fiw4mmr5jcxrlc122k4s1wg1sqvmzqypwpvyls59c";};
-pstricks-68767={run="07gapdjvqfqj9ca54kqy3wla8pnmnrys4l04bjawg60574qslq5l";doc="04732mndj1lhkpb4k17i8h3mjc8iphv2dayzqrb9ykw54gsb51p4";};
+pstricks-69674={run="10ihzmpabwnc8y6h391ic8hcijb7nlwcay73z17d11pdy5c0wl3k";doc="0hss51yw2ahaicyv0xdbqyxqqhc74hd2f28pj2sgn6c4yr00v6xw";};
 pstricks-add-66887={run="1h1y2r0y3vypygcczkqi8xpxc0mdcgqm1xfscspqw9ifndx0rwrm";doc="0bd3rwcdmxnazq86c6wwbjkajzd75knja1fc7s3svhn0hxy4jcza";};
 pstricks_calcnotes-34363={doc="00vgcdf73p4143dfjcvs4b5v4phvisv76ink3iiijl6s6f9zbmy3";};
 pstring-42857={run="1f7a26xxxzwfgprhzxq4ay597sln18hjk8cmlzjy342jy45g6dpj";doc="0ngxd95s8lzpsgirgrq4dg0p1dwh4l0gs99nhich12v6l19jd29b";};
@@ -3238,9 +3258,10 @@ pxtxalfa-60847={run="0fanfh1gb1fmp7binmhks4l90s6925pki6gwyzlaa7vy7za1l3ck";doc="
 pxufont-67573={run="0vvnhghcdlyqhl8244c76wd411cd9cjmjsrhic47rjs9sis1ilci";doc="088a02dfk2n6lgyfri74p2lnbp7mp4vn96qqkby0qjfnj6956hb7";};
 pygmentex-64131={run="1kd9jqmbxhkd7gijghd8wi0q5sxqf5dpf22z96wwr29kvv7jxm64";doc="1ppayblsdpmrd9sxfpf0kqhbsxfd1fgq69g48zj9jzbhncwx0lhp";};
 pyluatex-69372={run="171ahvh5ii2gimcx0a2g0dn7s87a58yff7g2dwbw5hi8vyqksfi5";doc="14sxmfsk3lrzcv0k8rkrq7d5dirxmy58i3km6bkahigk5iryq38p";};
+pynotebook-69990={run="1k0sazzzab5a12lf7dl25f8a2fbqjyz56l0pcjwplki53f9x3isr";doc="117lnmjqnw23j187sdyyxcb6422ilbkxrv3axq66apf1ip4jrp2a";};
 python-60162={run="0brs0hydf9vqwlvxipfrfxqjblazgb8ziy4brp2bi16bnsz59ykm";doc="0x1nfbv7fmyhzhgy6xsndhd9nja8xbip436kg7ygscjxml6gibgh";};
 pythonhighlight-43191={run="1bf3jf05zyggcbz5c6hr06wd8dhf0q5m1i4i7p026s1b7dxxq1qk";doc="0qw1rnyg5pawmp7hd3b0dyjzmbrlxa0hzg7bxnmvrz1akn1cas3q";};
-pythonimmediate-66461={run="02p0gnlbkfb2x0d502d2bmi5c4hz3ibmimns7r2bdzqfvx7ynkhn";doc="1v2h95ixg3fdpql2c5sk71g76j8v9244gcjfzsilwl77fxd125xg";};
+pythonimmediate-69487={run="0qml1nlmkqq4gj4cmhx2bpy3105wv56r5z4an1dvxkh6xpi8xbz9";doc="184lkbmyfm3rw0zhl79pk62sdnaashihvbhkar1pbnjv5jsl7646";};
 pythontex-59514={run="0hgbhdrzxvkc8szvkq2vi8v4xxn9k05zpa95vrmdlgw76ms33wvi";doc="0pxafbrr7mclvn2zdwirqbfa0b03cm4l4wbcgh1ag75skghmh745";source="03a3qj72hzczf4dz282vqq6w263zk1zhgm69h1rk5ibdyasmv8xh";};
 q-and-a-69164={run="15gmr65sq78id1l8nljgppbv85q3pjswwfgylc2msa7pk7vyiwzp";doc="0c8wbw0ia433sg8j9py7ivd1libjx43ys2fqi14m0m766sfrdigp";};
 qcircuit-48400={run="0vxsppwbmhh03mq9k3zb2hgl3628q4i51dz98j2s73z19693266a";doc="0571vlvpvmpjhjbbrd1ybzckhfy7ymralr017d09kf9p5gk0y677";};
@@ -3277,6 +3298,7 @@ ragged2e-67441={run="0wvvlhbmj1j4gp66l9p1hq526r3izywyf8ddggj316q2pg4db53d";doc="
 raleway-42629={run="1d8zv0x1j2c996ql8g7zc38s7fpc61ibk5zdixhj7kbfrz5cbc1b";doc="1i8hja5817kzy894j25hy5cjnw31y4kcahcymx5hrbi0aplhizx0";};
 ran_toks-59515={run="1k31qcvbdfx5xknykv9zlsijgzxcw53amb03avwbqm3kly5d30r4";doc="1jri3cb862m8984awdshlqc9wwcq0hbjw6cf2yqgb9wn186gjfyd";source="04ix834glql0yprygm5s2354q62cwsz39lfk871n8s9mxjd2f1c2";};
 randbild-15878={run="07ix44c2zm185byn868bmm6fcbwq9q37h31brfa4839hpklg41pp";doc="1cpyzrmswxawxk6x2vfjy7y8qj3mjrxgmr9lgjvz11f5fvvdb0i0";source="0yzz5awhhw52zg877nl76410a4q6gy7mrri0hccicj529kk0d1x5";};
+randexam-69965={run="179wji9ss598rx7hsagj76jsm57v9cqladxjc4r690mzvadv1irm";doc="023y72ya8b6vcnkizsnx83d9d3z5y7lgmkbbn6saffj3ln671xdx";};
 random-54723={run="1y4dn1i3kmd99b5br7a2j6ppf0ikzp744si5p6m5rmvg4vh1jh69";doc="1gfcswp2krrfswyjbyhck4pb0lq03jh2mfwzm2iwvd3zlndvccbz";};
 randomlist-45281={run="1kwbg73d8hk4wh69fajl1zqyvkfyfxzyv5xykknpa5s67pxkh9c5";doc="0r8i0ywq21c1h317b3yx5ixr4b1fllgwams4yy5z13alda4wxqdx";source="1s86m5hcncfqkwlr8mwdyh3fsnyzisiw5dlg52r499wr77r5z56j";};
 randomwalk-49513={run="10ivivbyrxm50svqdhv9lm623pvmnifpwpnbhpmx2nvf4crxxbcm";doc="1lvff00h8c2fxyf7if1d2xqkk87lb6396w6mb4yfxwsk0j8j2jhf";source="169x0wy0k91kmfbisqh4ciz8n4knhkxmz2d227gzwbf80sr2a80y";};
@@ -3305,12 +3327,13 @@ refcount-53164={run="1r4lv6yhybqb8wkqyaysimb79kbdgvv393kn7dkjqr46b5w4fzcf";doc="
 refenums-44131={run="1dlfd5dx3mqfhn73y04lafcbiprqicv9kfz2ylnd4fhhm62svb7a";doc="03d3p9d1f0pr6gk918qiq7p5p6k0cf1zh209akl6a35042a6nms9";};
 reflectgraphics-40612={run="11kcq0dijnwwxf6d3s0fhk7nfhvn3v36lly2wf21vgsl387dkkaf";doc="0iwcljjlk1741kw6cayrbjhqalv74apppw612gh3nhh242nn9bwi";source="0hy76c57w4lw0v77qaf064j7xz327fprdijljd7myy02idlszbmv";};
 refman-15878={run="1adim1622bngp214hsdzjgjkjcv7b24a6aaqzihlms76vfq0hklj";doc="1jpx3yka29lpssvhjl12h1bxj0k996x7a7rf1742wph6w1n5ymmy";source="134hq9c9kdr7rgzmp5jkjccqgfw10zwv33zmj25b91xljn5afc6w";};
-refstyle-20318={run="0nx762gng6bmlrala884r4mjh2vjh4r20yy00bpjzq0il98hs2lh";doc="16dm6n9mh488li57ighbd3badiavxlmy1ffz2hln6lkd9qp2y6i7";source="09mxinjwbidd8sr6g8hb4gdq81ifzp67jbw24xc69x82kh48r8pq";};
+refstyle-69680={run="1jfnb5vcsdj5wxbl8cpiv0bym8n62pqhqz96vy6hd7cnib85k3c5";doc="077h83hngpdv7bk5cvbw9w351dfkiwbbinalp7xgw2x0p240d9lh";source="0c4ip2pri9y5hziwr3p7xlrv6dnj6g2h7cjnlff77zq1bvyzj70y";};
 regcount-19979={run="19n0gwvh87pb2fanw52rc5j540v9yw10h2r8svczim9sdginy56r";doc="0qnxcyh2vhkylaav056lc2vg24y5h11svzy6hrk6rr3sza9k6z2k";source="1xfk7qs4x302lfi93a1n8nzpsmzmypyb34d8hd7h8y6nm7q2g4y3";};
 regexpatch-58668={run="0i8dfsr32f4w3lfh88z45sdhvwzqgh52xqfqgj53fvynblpz9msw";doc="0qh2g9sdj971a75dv3jfxi3ga3mf6fmb4azphkdgxmm690dblx35";source="1iq45q093v1n421r37w42815yxjb7iby426a48mvgzyc1c82rd37";};
 register-54485={run="0i084dij80m292c9f57hb0y3gs870520l8awl3wb21ss76vs5501";doc="0zi950xii9qbscbv5030aw02arc77c8inwxmzkslcmapdqxq5wr4";source="1jz02c2c5xpinxninb1a2bkgan21gijs48rks4xv17y7k6z9h00v";};
 regstats-66795={run="022l63bc3g31479byh1350fl4wpfw9pq9jbqy3xzhrrl35psvqpm";doc="1l54lb8g97gib5al38k98gnahrpl4sc0kr6wrabagq70cbbpnc50";source="1px681bkciakl41cyblk72v5kh83hyqf7bn3s0hjax9alszk29pa";};
-reledmac-68411={run="0kchw0r9irziabbpjbf405f8rp2n7xvijipbyx7isnzadhrkyp04";doc="0gbx77a5k22393yw7c8s8w6pakal4q3sfq8021mhcl2qcmpvc574";source="1vxxgm7wy47gwhg9wax31fm02klrviwadvik5863hikrinfl3im7";};
+regulatory-69611={run="0daspgycq6ghpv0kr75ww3axijfy21694pn1alic75fn61nhpxcw";doc="1z6hh4rgkzh01yprsc2a2xshbayy5qfdh7198jwwkbn6kvhcxmf5";};
+reledmac-70207={run="0xxzyrsrk3bq9pjx4iv0bh1k3li0rbwbdz1g3gdyir15kz9dwz3d";doc="10lzmpibqa3l8wh4hhl306ry6wi39a6y0hzzj9xanr9iaz2c2gbr";source="0m29yfjvi4x7klhr4p9rx8f4i8h250gzrwb3iy6ykrx7qhffwgrg";};
 relenc-22050={run="13ym795q37rmxhmr0d8834y272si11f0qh7lmhffrpsf4d3bhf74";doc="1hb2sdm9lgzfkj2kkbrlb3alnfjq4rw3islgdzkqbcgqp9s06f67";source="1gk7nbczw9b897idmsgqx6i8xdmi7wizhb3dyc0hir7qmivaqv6s";};
 relsize-30707={run="06sy6v0jscrj2qs7axm770xv8fkiivvj5lwb8mkf58gd5jwc5bgb";doc="1sgv3x3dky3i7xivh6pzqh3lrqjhb62g0ji0hdgmy9blfrdf3api";};
 reotex-34924={run="113nfw6md0v4522n54q63smd2g2iwm89qsqld237f32r3rdkbcl0";doc="0lapzgfp019a7qihfhf1cp2szwq98j8kmcy80c3gf1fa1x0c3x1q";};
@@ -3341,7 +3364,7 @@ rmathbr-57173={run="1jlafpdjryj0sic2zpn5f90754ydnfbb74x8b3q19klm3n20bsr2";doc="1
 rmpage-54080={run="0y292gcfkj0nk8090iqnlrx9mhvh545im2xms080kz0l1847frpc";doc="0rq7xjizq8nwg9zk60gjd9vcjvxyc0xaldc4304nyihfjxfyd00b";};
 robotarm-63116={run="10xlswn7bkad45fyv9j70pd77319mynldwk530y23lc2874s3yn2";doc="00qwsv5vxidjzkm31v21sbzd6rp1pvz2vrs66gmlm1xbfsv4kd0p";source="18zffnyyhc3mp8xpw7bc52q29z3skqfxg6h6x4b18mi9jpyd2x6q";};
 roboto-64350={run="05ynyzlrnhn7q95ld1midxdccc7kv209p4x53bi2n8rsjmp9sp39";doc="13aqrvxs9vhy8bpm42fx1i47m0q80pc4zm5gh2bllrpgpqn9hbry";};
-robust-externalize-68842={run="04m5bnzwfpfqafcqavcwdmqzk1yi22hpq3wrh1kiy858dlcxwnmi";doc="1wq6m2z9q58340sgkf1gvns6n5wxb11a79kpmkwmh3zzz0mjkp9m";};
+robust-externalize-70605={run="0qyx3acc98kwwff531xf0d763zc41x1r716cnf9j3h8mcbm0wvmb";doc="1qgxnwfjfm18ss4lf3lhsvg1yql6mgvcjlzmdyq7nr8cgzp3mkxn";};
 robustcommand-15878={run="1vxsxdg6122psbplm22l7f193fv7rd3dadcg6ys4ngzy957acvig";doc="13d5rsj95yx81bfbansh964dig4hjp5raxagzws58f24l8imvfzn";source="1zgnyglhz8i6hgzxlj19kdw31z9kx44zj2vziwkhcpr9clxl8as8";};
 robustindex-49877={run="1fl9vr5mynjg8w74sk2jh8vgj5yjpmyhyr107iblmcicgwv1sd9y";doc="0xf592xvmh6xmw08zwwcsn9xyadd9637vicnz95fbfpp03p9qjnq";};
 roex-45818={run="06mry55hqrakkc7yb7b174cx45n0frk3isxw96p4v77n9pyvlffk";source="0fwcb1fgz4kxbgcqm34s5glswj43wzg5j56ak5an39lsw0wirs94";};
@@ -3370,7 +3393,7 @@ ruhyphen-21081={run="0pizl8szphgyq12sbpgsw25x88svj6vmf8j7ry23hvc9bvjibck7";sourc
 ruler-54251={run="1ikap9dkdw9lzpda0f2krizqbfkyjxvyddils7clim9nhg77aq71";};
 rulerbox-50984={run="0srxrij0sxvm04n6zk4vq4qqmxbjz3v425nx191z96fpjcssx2cn";doc="030wrw1ry800yixlgb11xbm5834njv3ad9gl4jv08x1pxkj29vcp";};
 rulercompass-32392={run="0ky611n65rvaii9b5ic498p7divfm71h843bv9h70v363mki9a0q";doc="0wqgnb9czbmymzmv7j48lgdv8s280id5sh8mwv6p0jqn69zcpdd8";source="19943zfp2rm3gdm6w5db01w6r1nl0kn4zkrnnxg4ic4n3gvv76px";};
-runcode-68223={run="1487x7a2b6wbsxmngln9yzyyd5a38ps069rmk95nxam936ijknjq";doc="0blns23ww5i2435sd6pd02dapqjbxq5vqn6dfwhy3bqnl199dl0r";};
+runcode-69471={run="14kg5vn2a3p75fqdz0qm1xjg1nyvhmyab6zp0dw57qxxnzbpf1sx";doc="1s421jdwwvpbi7qkgdv7y6y697d7wfg8d95y78113z2p2582zhrd";};
 runtexshebang-68882={run="0c4rsadkk9vxcax1r0c0mz30krw387da9ildvjnh88ll7zgxv7xx";doc="1j72plplkdlazbqhpnykwl5fbszr3lil3zg9a91aih9nzr662vrk";};
 russ-25209={run="0jr0x81xc1zi9vhgvqy0hcga48nhkj9z2n4rd5303b8h68n92yfd";doc="02dl5mh45z9n2b59clcqnaj9fsv79jw46ph3303mlx7plyvdqj8z";};
 rutitlepage-62143={run="0gslb7lkinbhlqdgp8pb60h9x6ajypb5991z17p4d0jwifz063jk";doc="11h7ppnimbf6znqla0r1vq8six0ri5ihzd82dj66hhh6ic5pq9bx";source="10k8l66sjzdfrg6cbslx19a8nrvw7w5xaicn78rkkf095pyh1qpy";};
@@ -3406,7 +3429,7 @@ schemabloc-68445={run="0vc9hfg5gn0xs9gjv3c4dlrxpsqwp370y1b9v9iqlncglmjcglfy";doc
 schemata-58020={run="1idrxgfzwcy31cdw07f1axv9qxiy2m2j039rj7m6gqqjwnzpdyfw";doc="0wc4vcn0gbwwgf5c7cxcb66w66yl4s815d6m1cj3dv2mcm83cjyd";source="1qblgn5msrnnaap7w1r6szdzphf7dgij48g0h7cyj12dxy8gm9a3";};
 schola-otf-64734={run="01i19k0xhha76zz34ccpq83lgnjw4x7p511ssrbdqmfgrx5q0gbq";doc="1znflqa3myy4x0m7ayg3sk4z7pja5df1jm7lkashrcrr1gjqcdbf";};
 scholax-61836={run="0is3py7zig7whp0hzga4d4a7kfs4h32w1irw4gmrjb3cqndg8w8s";doc="0m73qqh86cpgrrxw8v2nz5al0x850danniqyw8359bl26r8cj6wl";};
-schooldocs-69238={run="0nvywxnknaindq3lfdclyqhna4xczyhldm40g287d8kka7avbiy6";doc="092jvfgy71nl68ljh3xd17z86q03ghc8w7h6r2mzrx2n5rga7z3p";source="1wi1ya0kg1gn6v9wbj9c1f3mg70fjkfg3lwciy7vgmzskyfcragw";};
+schooldocs-69659={run="0b5cr9r7wsd00xih7ldgif98qxgw73swis6m4k8a7mx7xa94qll9";doc="0qk4iv7jd5ww6dk2n4wnwp7jg9s1ka0xfi3g9qc6y52f9h4blnkd";source="00w72nbz74plnbfkmhw08xwfxnkdxazr5vdrp61phh5vrk9lg9gw";};
 schule-68483={run="0ki63lqw2m5f4q5aal8qz6v8ldvlpbgc72pzw2rb58l56m1lc66i";doc="0xm09ndnhf93vyp3mwgns973dd4pff0jrkffjm2sfqfasc0lvk9y";};
 schulmathematik-69244={run="1dw6six3530vyb4ym05yzx1f7mh14kk9pd7187rlqzn9n28vzqy6";doc="04y8fyn8plnq1q01qg3l2i5hw1rdycsfhr6i170kxdishq7zavy1";};
 schulschriften-59388={run="08dsnba3p8nz3hnzh1sd5cd09ngg73vl8yq1h5l8qcnynwwbrcdc";doc="0vaqj4m0yxbbmqf51s107k28l2wms68w3km801lph4nfz8khaybs";};
@@ -3416,7 +3439,7 @@ scikgtex-66764={run="1hxldpgmp0k6ygry8pni0sz1bkz2mpcifnr7zrsabsx899np0rps";doc="
 sciposter-15878={run="1pihppjlynvdlsin8brrhl2mg2jif3fa1mvsard686m4ar6id25f";doc="0cpyz5n70hsp5hjdja3pl1lal1i2akn7xawwcp983mqfgnp8jm7c";};
 sclang-prettifier-35087={run="164sdqd7msilg6jk1ivjzvv49amji4hb5r6wg51vcxmg069apcr5";doc="07s0y5dfmp26j0ayz2bhksdybpqb4cn439cvyifxillkq277dqk2";source="1y67y73f2whg663hw56fwrn6jhhpdpm81w32kzwc7r6sk79bnq3a";};
 scontents-62902={run="0hl8sr63b1z8slq47z4spl0sikxdyr0im7zf0vllspaxqfb4nh6a";doc="1gapcq60n48byiv81czq8h93jhhmhx41iddynl1mq5j2icq5g6wr";source="09n4i1jqp8pjdr9qrk956vr335cc54kr5fjlcdavxxkrwdbzclhr";};
-scrabble-69024={run="1c25d2axdvz4j7n03dxk83bk9033ik4cqmw7026vjwvqwvp48mfx";doc="06jbihq6m7y7j6ivcl69kyd1jw1hkj1ixl2vsl17bgcp4la8i6hg";};
+scrabble-69599={run="1r5nb64rsc0fp0l0x813f5d1b88f3jm2n8mf0f5scxpgmqg5d5qr";doc="1ixmz4z7h2lin80yr2f8kdq3c7y40amflwbydy8459yk25m70pxj";};
 scrambledenvs-60615={run="1r6a2k4n1h8n8svp40yraxjxy8xbrrj8d5srgz081n2fb7g6qdqx";doc="0ql4avpcccx92n4mqb6cn8g6zbq73238c4ilr4jj5x18afsg5f98";source="04xrips1nk27apwgfgr0qzn29h5nzs1810q66vlfk1qlmka2gszy";};
 scratch-66655={run="1gd2yq2w2v7n3kfsid71qv2v5q1rvpfm49rsk4815pk4k16kxhg9";doc="0jhy08h2v2qf3p8dvh8mz5yqqrdzxnzlx1p50ng7xn88d9ihpqdb";};
 scratch3-61921={run="1in71jxpq9mljn7gvaslsnaji21d43yj6ckzim42fyd9zk48waz5";doc="0yr18cyzdfrdz6vs0slbgzgp82gklrmxh34k1p135g7255gw8k0w";};
@@ -3432,7 +3455,7 @@ scsnowman-66115={run="0xzi49kpfq3n37ryn8p0z8h86x1328az401pmv6iviyw3l4ri0ap";doc=
 sdaps-65345={run="1s9vs9ffjl5i8lax4i5ij7zjv28d75sm7z8frssm1cj0fb0wdq01";doc="18096xagndh28fkiy4sd6nw23vik781w4pybqnwjfy9hfm3h6c9l";source="1l3m01pggyxpnr2nvqnvzwl12lsv7m3lqh7h27l77wnwip7sjhz4";};
 sdrt-15878={run="15p0i40aa82f9lgdiy7wn5vbkbb4z5hzmmr4g52w6jisx8c1w45v";doc="0y1gxcyms3wprp47y2mlfcc68gijyvyc6h10ivif1yydmxq1b2ki";};
 sduthesis-41401={run="1i8rdk8m8bc5lk35p7qd4pqddi3knpq1ylbxv67ij7g8sgrl9xwg";doc="0i7f9zjxs297hx3hd6cm70hkkc50wb1pcr83xk54cy72yqiq119p";source="1j6asblirf0x4f5zp8zbmpm7ak5nsilqf4ksxr4bgrca70vfava3";};
-se2thesis-68255={run="0krn4a0r5vl4iaw0mwxh50h96qgwfwh25b26c82jhs4hdssv8gjz";doc="1sdg6kln5vz6misy8fs14abfvbsrb896gzf32a635qld3ayxb4k4";source="0hr40nj37s4civj4q62c29gdyp2w1yqi8n2ls7f77rfsk32w5czv";};
+se2thesis-70117={run="0qzdj8j9x2gplxjjdn6pwhrn0rrgxnr53pfmnjif76sfpcvb89x0";doc="0kzbyfaplwkbfnbizw2frsnpalkhzch2pm8m89d56fm4pgdxmrch";source="0jnfsjnhp0mf7q4w47ndr27qf9hn4v0djc7yy01vs6vybq9gjzag";};
 secdot-20208={run="0pnimi0vfgp5zsp0iwak0r0j562w59cl1fn3pnp1gwjz65q2229i";doc="1v8j3l2bh055b18zxl3287ardn0ns5qjgbqkj08qxz5ls912y2br";};
 secnum-61813={run="1zpxz6j5is9f2iaj53bqq2m73040lmzn60h9rwp9kzvlafciss7x";doc="0dabcwh85mvq73sqyi9zkbslzbhhns1sqrmvddvy1yjww0lf2q3k";source="1f8dfi9vrlh71bfb1mi2ll0gqcd6jbv5k96jpmvrpqy0pv1i2ckx";};
 section-20180={run="0rqlczfl443z7mjmnmndclbjy6qnqvla89s8yqwngzyms4z1h3v8";doc="14d7576idcbpxlw7hy3hsdd41gpiyksb9ajwnn0jm1mk2snzb51b";};
@@ -3509,7 +3532,7 @@ simple-thesis-dissertation-43058={run="16byfnhfd1j14911xs1448yampvvplxy8l54by4qw
 simplebnf-68959={run="1bcg213dww4ngpafy873ralbhp901c6xrsnvryzpgk5jrqw2d2bj";doc="1450ri57ci113csq9z54zj6284s8bn8rsl5y2xidl76rz9hdidgv";};
 simplecd-29260={run="0d6gw59xd1mqc991yy6k5jva88j66pd69k5sl5jrysl4rw1mxxng";doc="11fzk8p911v1myphghzpmkj7k62vk4sdicirys1jh8rd2cpnnwcl";source="16g6fcsr0nw7isqimjq29g0zyf72z11qx9xz36zq8z4khxsl09ln";};
 simplecv-35537={run="0b7p6d8y7xa8xs9i2qyljk2s992gprsr3a5pjalkkssa5kiz3371";doc="02x3nwmxdk9spx5crlaw1xdqlwah04m88zrrw4wdg0qjnhvv4mvr";source="05ikxmvflqz5m3qallwgyncda49dzq4fibllgc1j77pdh99cy3vq";};
-simpleicons-69396={run="0qb0mr7k1fypanyw0lhldmqnxynj7iymmyn40yy5j8nzfxz44c8p";doc="0h2qfijb12yslabq7yny5cmhlhjyglg7w1dwbn3gph2c5z7mlqq7";};
+simpleicons-70519={run="0cb898rxxv36nlycmc5njnkpf98mk05vimnhiq69bc30k43jjap0";doc="1z2alswv6c1qykmgbnbz5754sv99q7kf17i2m4z3djmf9mqb9j48";};
 simpleinvoice-45673={run="1mdc6aij1id1jxlbkwfdvdv87yh55v5qyazfciffpbf91qm87z0s";doc="0lvk87l3xafl4s303rhmksfajnw77qd90yvzhdk126dp1prh7i6p";};
 simplekv-68439={run="0cw7n0skxgxgar8ks5nlcn70pyi60zi7n2crdbamfw3kgzdqhqsl";doc="1hqyfflwjdxmq289ngc25gbjm2mcvwxzm9sbfp06xszk2vhbjd4i";};
 simplenodes-62888={run="0rdmcmj583i81349m2hwdf0wl4glsfkg5vkmhlvzndh0n55ivj3a";doc="0sg5xs96agly3r917fvbs8mxii7b3l9hsqf2cpfpx5gwdlmwf0d3";};
@@ -3518,12 +3541,13 @@ simpler-wick-39074={run="0lm22wdxiwasv4igfsyjfi338qc7m985da7a9a6q8cm63hks2alm";d
 simples-matrices-63802={run="09kmqq2si98yg3ddnlkddn5gjlvmwd8w78r9d2xvd7g28wm1hjbj";doc="0zbg9ppqj6af49braf4hd9b0fklxjmsr7yjgbla6ckbkwihkqssc";source="059wa3qyaxx7ha1xw98rwa9w7v5nyhq5rfmajhba1crnp155x73p";};
 simplewick-15878={run="07rzphj6ffla4qz9pa31xnn25d420lvsnmgj7l78ryxai5amdfvw";doc="1ch7yqh3bv2y6282cgvqzm4pf5hgpfvlmpg66zcp44wnkq1sw67d";source="070f0zrnrf2sh0dx5dlbz6072b76f8iw03pvywhyryfgghfdfv7d";};
 simplified-latex-20620={doc="1cgf1p7p2ikda1nb0c2vhhx7ai6rd973pz6a00pr9yanxsvghp6d";};
-simplivre-68376={run="09x9c7z98sdv7zw9kqysw4wcfg3x76rn2y4fjwqwqa63fwy9ky9x";doc="0m5bxr5gflag1kv1c34jk78lsv8d9hsyqw6i5yhfm3r7hb1z0ki4";};
+simplivre-70317={run="0wqzc5ab1pcv7vvs7n3ch5bcbpmgi791hr11axc94daglmjbprgw";doc="0isjnr5xqf5phv9ysqnr4mxc983k4vhgikb7gl1c6084b7kcnbc1";};
 simurgh-31719={run="1nhdmdi6qbvx1nd92hxl8vkly82a9nxi7ghj0zpm31c15z5pb7rq";doc="1cw434sxnbgq5dbaidn3zn8i9az4q35blcx9lr6yf3m0yy2rl8by";};
 sistyle-59682={run="146493bgh2ghbscq69bxsngjfkl3k8g68cy5j28v07lxi3ywr6n0";doc="05hs1wd3wj8szj16wnmjfiy0g0hxgy2cc9ai7q6ys77kgjb0dpfp";source="0sb6vbhnqlixrfy9484d8im3vmgk58y7nqad9hm2gkd4p560cxj9";};
 sitem-22136={run="19z6zmwriwrlcpgdgn5yl2bzbz0fkn3p8g5hrwd368bq7wyfc8mi";doc="1wwnqhl3ffqnp5qxddicqwsr7515g6j53rx1rgi9b5z3cv42f5qj";source="0y249krv2h241wy8xbi5xjrxypa56zipi8fbmqbziw9cjjnz993v";};
 siunits-59702={run="06x797504p5lzb3xlkri1sc9whyjjz6a95gk8kvpympglm8fmpxz";doc="06saapj9rh5gbrj0npb9rm60xrww8rl1y5brvx97gj4qvc3i2pic";source="1clhfsmydg2xjajak0ssa9v5sd3id957si5zvyq3njgl9cpjwi9r";};
-siunitx-68844={run="040pclva6m2300m4zrqqdd1jm608yw3rpldf63scmhkxgb981iil";doc="00j5b599s2wdizmhk8rr9k1894nffa6ynaz1wg6ccm8ndzsv6kp5";source="18a9xwb1zaay0mv8b3br6bg2dm016z1s9zbavalz6psr8wv59lj0";};
+siunitx-69922={run="0mv6ysgfhbjsn7zghm742jxxpc29q3zq6j1wnziq8mv6zgzcgyl7";doc="1wyw34vvbxmp4b54ld50kxhcgvs3my0j478kajr1x9swyr852s67";source="0y91wm6lykalibx10jcn4zm112f815ma3pxm8dz53mgrd8gbnb81";};
+sjtutex-69967={run="1l72xn9ylbv0syxbn53ymifb6m7h7bifh1s5bq654knxpqhql9dh";doc="1wbf0akvfzz8xi8g96bpf17b7xyjlbr61dwiwh5q127885gwlq03";source="12fw7j3h3fpn5x9cbr9aivldlgizqhkvwm2r995wlw6gsh8way66";};
 skak-61719={run="1lh97kc1hmz3ybb67zr7vr74z1zngwl2cppkhmp9cagm48j24am1";doc="0abiardppn7hx6l5h4zh92b9m2yf3w16y15rcvsspv1cb9sf4lfw";};
 skaknew-20031={run="14j42hifh60p6glfp24c2f5k9k34vcm0l3alqfqhvv68l31i05rx";doc="0i144akq7sgs6kwayl8c2yir0kc7czjs49vj6l5lwdcwbyryhh21";};
 skb-22781={run="0k441znw2bn13aiyc6b5hskl76hbhcpilc1xg4jw837dbj2v6qiv";doc="0qi7l9ky0y65cmcp32j93lhwlvflvz8didq9c77faq7ffgzz51s8";source="1rnraidwhkxlhk09ppa5k0ndqhrra4asbpjwv2j5dgf70wfm5vmh";};
@@ -3563,7 +3587,7 @@ spalign-42225={run="0wy2kliv3mrcqvandk3qbbqjbri6xq69d5jsi80l7qdiij86z3g2";doc="0
 spark-otf-62481={run="1z9k0dnahkq2nfqs3plpyb3fdj48x8vcav0ahykd554fygv5h4x3";doc="07pq90xx911rdjdyr0sxg4zqfg1yb5kn43xc5l6hn0y81m9j151d";};
 sparklines-42821={run="1mb6c3mial9ashhvmjhynczjpb462j18qyy2an4ckgwgc46pwhp3";doc="03j6xdkvsv5p71bifmggf69w3s1n7758yii1caz9p9bcqmqbnrk9";};
 spath3-64818={run="1w91n8mq9bzf7fwfwwhpqn8j5w7plc4366a5pw56x2212n75pzh5";doc="1gy8n6rhxbqf64gh4xbjvy0dz484vm53ld3i6graly3qzdrwkhdq";source="1gy5p59n76lh0k961cysc3qpnnhppbcd7dmspjijca4fx2v3ckkl";};
-spbmark-69350={run="1h76dvirbiqbn2z1cki5ya8psialnp2lhddxsyqxa6c2k4n128zk";doc="1k8bip2v32gwqyvsa6jrbgfkihv0g5sh27c34fgpz0g65cpzpxjz";};
+spbmark-69927={run="1izn0xfdc8gc3apn2z3f0593p036mrpcdq7vb53ygavx9qdyzfaj";doc="0mx9ggr9zirkb0ddqsb9xak32vyg987ddhkbkzhk7xjg2q62v0lf";};
 spectral-64528={run="1qjvxyjxm81j3cyajki6jv59k6y2m8nv9kzhj45d7i56za9klkf2";doc="1x6sixvjk4sk5r6x3pgppynsgp139jm3cc7bv83bk55757jjd8j5";};
 spectralsequences-65667={run="06v0sb1xa28biv5ak6nprdcjzjdm0106rmlgm4if0jgmax0hiqpb";doc="10limf15cp1bv933m45s3vdvxwzbpd5hard4lqff2x8ay1h0n1wd";};
 spelling-30715={run="08zkbw4fdfmfz1pxcr96xjhrs8lfbf6sydp8crp8110fikksjv9i";doc="1wm6r4rhkmxmc66zx9nvvdmjaarx789c33vzm26mbd6ylv5qs1is";};
@@ -3592,8 +3616,8 @@ stage-62929={run="1wdvq1izp0y8b7mzbqql3fc9q8j7jkrmm4ynnk3h2zlg24lgi3gv";doc="1ja
 standalone-64677={run="13bp2iyfnpyflps370mzrxk1vkrybamam1f47ws4cafpz99nvvyr";doc="0waw4vqxh6nclh6kp17nhb4i1hpckwraf5clksxvzgiv25cxkada";source="0a4k7lx74w035fvj5q6mnzpx18jzlghz3lavhsl9ssqjb3zqmar2";};
 stanli-54512={run="05mq6zhs6x5qjqk58gwws9lw3p876bd1f8a5c2jvb2azjl7d9r4f";doc="091knxhx7jsjiv4ip0z2jbazvv3xmbvandbraxbipp4zqqakb8bj";};
 starfont-19982={run="1bf89j0qqyzih5w9ban03k85v8ih0d16sil1sf7smzmqk3nhmrz8";doc="0rjx4wj021ri26zxdlhkh71q3d0ygf3hvcqghq9fwkbi0gnig1r1";};
-starray-69002={run="1dh1n0z8c1g9060mjr8qi7qcq4s6v86c61nfis61xxj9606q5xlc";doc="11d8y9yqvm7l5nbwxpakj3ybw5v8p7vm0ccsnvib9cyivy8vqvbb";};
-startex-35718={run="1d6c54hm9jdi882srj87drkcxm7lldb4g60lbic9wwzn9kpa0ynk";doc="0ikmb30ndmj0yhzxy9mba3kqxdc5f8i66sji51ihjcrlplj3jk73";source="0304dzv4nzlcqi5k1gbfnx823xaxq84ja4gwh7qg941q152y7w9n";};
+starray-70604={run="1gkqrf8k701pin6si2lmri0a0jml7hmkh2fhnpkn9vq54wkyjbwl";doc="10xza2ljipqp5cq8nv26dg5y5xw9g56s9r51ljpsxk0yxpi2pxwr";};
+startex-69742={run="1d6c54hm9jdi882srj87drkcxm7lldb4g60lbic9wwzn9kpa0ynk";doc="0ikmb30ndmj0yhzxy9mba3kqxdc5f8i66sji51ihjcrlplj3jk73";source="0304dzv4nzlcqi5k1gbfnx823xaxq84ja4gwh7qg941q152y7w9n";};
 statex-20306={run="11qpdrcszbsrasbasmk6h9wg5r2a11pm116i16h7mvw73vjaq76f";doc="0dkb7c7wavn3qgndl0g8jpkx1qr00c3iwp6d0r72znggl4cznhsd";};
 statex2-23961={run="1949zszdv000dw1dx1jjznbd79q73fjiqnkq2axdbxffh47ls1dp";doc="0fkzbs76yfyygscazn4dgphs8g1byzg9n3fbdg6pizzncirbgh6c";};
 statistics-67201={run="11szmc6f380si38il9vw78n30yyfmmvgxpp8f8p8kzb373d3hs9f";doc="0z8mx2gar2fn97n3x01dw23l7r4ckqwgfksgmfdj7vhgs51wsv16";source="1dkz9vdcnadd1xd4k9i37a3mpn1bwm4zf3c6bg6rvzxaarrrci4m";};
@@ -3627,7 +3651,7 @@ sttools-60736={run="1sxdf55j0g6gm2h486i023axk2m5ik37ndayjs5zxxkj6i3sh4vw";doc="1
 stubs-69128={run="1p454rfdp2v4zq3vx1716x2w1cr1a6dkcwnj2hx7w2jn8118vqkb";doc="03la45gxcy1l1qik7kgcb518n3yvzwgdi5x3ffzfpj4yp2rq994a";};
 studenthandouts-43516={run="1007rr5m0lbfib30bkb21nvpq1h7didqijg6jsbprmkgsz1xfdkm";doc="0sqfqxypkrcyp8fc60xsb1v9nbw7h1xrdai626dlpknhnm00kzmj";};
 sty2dtx-64967={run="1nrn2xv4r39qa2glfw4kalzdh5w2zlx4vaw0hplnrnxj8lwmpb9m";doc="16jpjskvsk51sz0j503z4dljwzd1ymi2b06z9lag8ab5iiyhm80j";};
-styledcmd-65262={run="1l1rg9456g7jk95kx5c7l1rz738b83vqf02kxq5n994rzxsmz0kx";doc="1fs253bda40z0cf23zz2330js8f0cg9f9rv5mrp09pf0f13shvxi";source="064czvwrkssjgw33v6lv70znbjb3q0shp2piwgia2p2lazimxrrg";};
+styledcmd-70496={run="1a3k6nxxdq1k2y5q60rq34iys8yf64c112gr9knl1yd7rza24cpm";doc="12z3l8psjbyraz0phjylnjl9ghdngnbid7427nffm9har6ppg0hr";source="1gwrrwfs80ssi9r2b39js9fnfy0kqsi1xs1mjjx7rj94zj014bb1";};
 suanpan-15878={run="18nzb8qbs7q233f68983q6988inwc0fm79clnpfpr37z2p7im95v";doc="0xria0g6qzx528dgwb2q23l5iqjzj8xix1215ciz5kmrp2h4fh7n";};
 subdepth-15878={run="1l79nf05yrvpzsbsjyrvyhsc4kx7dfbvx57qc1ymzk2zphnfw4fl";doc="0g8apcawmna380iwys0dvshrdi51k50gavh8wgwybcvfjib82h4w";source="0ac0l63sisx6ry7m3qlf0f98dn7gml3pfxlyiab8664cv43df2s7";};
 subdocs-51480={run="1mc1zqvqpw5ln494c6afx88gigkby4zlb5i4gbizs75irgyrs01y";doc="05m9pcg8dhk8rayald2mnzl0wa7z3w8znwzw2b9ifbxz3cp5k4d8";};
@@ -3696,12 +3720,12 @@ tabu-61719={run="1x22myjp1rpg0in3jgjj4wy0xyva8xd5hsy5c1rqqpy67wy83k0a";doc="076i
 tabularborder-17885={run="1p7iwpalamif71mrznbmsig5g9lxs3l16dcpwj2kzhiixsh78vfv";doc="0rd6k4b00aj398hy247x84jj9c3d0dm00xnaw69p7wvlprzricwc";source="1lrvp6128j70fzwqr61nnwiivgllbbkw7pd53l11sqzqwzxppgi5";};
 tabularcalc-15878={run="057720z8l7ss0kpkg7l16fc2v82xr0wqlxzxbcak5m3hl5k03g7a";doc="0539rar83mprammyilmclcbjxr657z6q2xmmwmlik990imf78lqc";};
 tabularew-15878={run="0g9pbr0vhhjj2lz9bbgwvm49wl8bdwvv1jjggq2dnwwqbr4vc4p8";doc="1ff62dxvnhi4q1gy8f7qhc0zz1jiayl6f8j96dp0rz38l2is7m86";source="0sfpx5w61xrmmgip0c746mghhj06r2mn2jmj56zingymm2djiad1";};
-tabularray-66276={run="1alrp56nra7pcxg1km7p8km679dkkqcsj7m85r5wm091qk7gxhf4";doc="1jkhrvq0xwr5qp88zxj888j0grj904vljvfahd5azys05n3ahv33";};
+tabularray-69926={run="1mh0f8klal4i4wcj2gq4zg7kfq61q3hhnd6myw1wfm4ig5gmx4sd";doc="1xz171qjrsb4dld25haa8l8phxv9rxfjplr8gbdi2ypch8v86g58";};
 tabulary-34368={run="0z57030pg4pfvghjii8bgqba589cabnj8qsr9w1abpwp3pfy4zbs";doc="08r21q2h7sjrk875x84lngcqgiy5ijik56ly7g7wyzhq3jyxds0f";source="0lsdypidawyhzj73c3yjs8k4xy2sds7gz8gazxfy460zndsz675m";};
 tabvar-63921={run="09pbsqa0a492j6ijvi25zdv4ic69wc8ngdxll2gr7wgh6m9hsrq8";doc="0iv8w8jvq05f6a1z7n29c9cldk499fd9igryv3c93g6bgq2hkzks";source="0bw2a9rgij2xvz3lhz6gya4vfsjn41cn7mg9mkg728q4vbhg19ms";};
 tagging-52064={run="0sws4x1h52cd313apfzydqpj6c8xrb8x5881cfhwir000n48crb6";doc="1pv7savkzm6jhaliw5ilb7qmhlj3iyiz2w6kxchanwrg4pnqabx7";};
 tagpair-42138={run="08qjcwyjs90sg8agmpmm3122h20898hy6dwkm0lk3dba1j3w5drj";doc="1dkn4gq6zxfqw9h64h7ggkbyrk9vzyax8gmnk9qk8dccdvf5n2sv";};
-tagpdf-69165={run="0lh32csbsl17wvp9nqfkh07sqb5kqrlgfgz8w6asndbsnna01wih";doc="1jksjkym9cj28bgv7bgl5i2dyng0ggzlnqxwr23gv739c749gxxj";source="09a16y2mgyj88b0dvvszv1d6lw9ji75c6rnq4wd1azjz0k397w64";};
+tagpdf-70259={run="1zf0py07f5zi85k9i5l2ac6j5igqzg304byvskcvx5qsmnz0xrjy";doc="0j0yvyp7djxiscq9x1kvlapgw399lcq17c45r3rpqy9xna2x3rxf";source="0xr5jjr7r650fvf4rahibr83h0ylnnmx04gpjq8z3xwk312cpqz8";};
 talk-42428={run="0i9whk49bahsm2kbj53pjdh3fpg1ixfyxmfvcp563ylr8j2ibimb";doc="0rgil00i39p2agz9fybg0h3xmpq0wxcpjcqpbpzjw5lcf4mpcni5";source="0kdrknwwivyxiyn8xqappf3k5l1brkwkkhjqa0l5n0abzafkjcy9";};
 talos-61820={run="0pffvqdkhmc0adl7g1sfckgwwjsfgbnf03jfry3yfq6za6mk05d0";doc="1narnqgf3221fpf66w2vlw95cr17swbap35lvb7dzviyad0ailcf";};
 tamefloats-27345={run="0mhiz5lxz0szi8ygmajjmldz1bjf6f1lpyxj3b9zb17h9aw8gr4x";doc="0s5cy9m8jpxh81c10fgdvn8wy7pnv7sa25hy8wbv6qkr1qwz8dss";};
@@ -3711,6 +3735,7 @@ tangramtikz-66183={run="1c9in9zdw7ixanhj7kgrdsrv6iwvjy02b12lgq0k3wwllnaakv24";do
 tap-31731={run="1ci65i2k6n0h9lklgk41sdq4acp5655mps77j9gcb65yk4mdl6c5";doc="0r8y4jzri83qypvnmgchnhrd0yi7j0k753zmnwhzxqg4bvki10gp";};
 tapir-20484={run="0ad1qkbvvswq7msx9889sz8n7wf8iszigd0vmk2yycykbf0axzii";doc="1m5g6bsijqris8r7z2dw3cj74ajcny2wjysq8ql26531z61hj9ss";};
 tasks-61541={run="1gwl8g4a2x3sbvqg91ry577hmpxdc4dgcj9ixhsla25h23jl414b";doc="1pavbpzm6z6najh72z52j089mdg6gqzsa8sb9qyfsql7mndnxznz";};
+tblr-extras-69776={run="0b7vfyzbgzgq961grf1gklpi5jdl24nzmnccvhryjg7jqm8pyyiq";doc="12gzcs7scxb3dg86nq38an5h86hhv9k5bbv65ixp5kkxl7rbjdn7";};
 tcldoc-22018={run="0gz5v5hi7r6wr8qas79lakwr7gnf8d5kypf7cp62qvrybp0ljgqs";doc="1vy7k0f6ri4kbjrhby0napsas9wwlq5by2q1dakbz7r80zr7dc3k";source="150p69vd9465icda6p0wp37gg9vl8y3c2ys3b8f9ij9a88x5775j";};
 tcolorbox-69370={run="16k26jwbhk466h8a09syzskljyg0x2h5fm5f6fmy65bcjgc8ai51";doc="0dal9wv4aryz1l20hbbg6njgy534540vqmyd2q9366a9ydgx1km1";};
 tdclock-33043={run="05w49l1kvs73sxchbwrlfs9n6mn7qshx102gkjk4jslhnw9lc48z";doc="1n0ir0l10p9fai1cssri11bpzpjabpsrpfji6w826l8i3xlqkdkg";};
@@ -3744,14 +3769,14 @@ tex-gyre-math-41264={run="0vqg04im4s6k1sjfclrn855liilgayh5kca774aicifzjgsigs1d";
 tex-ini-files-68920={run="1dzfn0v8v8pdg6lmgfs0q2c0695zndkf4rpl6dckn51gp2i1bgl5";doc="1l1yizfq9srfjxirdwb3hvlj31a72mnw4spwyjk58xwcsjxx3y00";};
 tex-label-16372={run="0flvmmh0lzkwvwksmnb8m4ix6pzw6f18flybkgidkyf9mf0gg8xc";doc="1ppvdq0cj62zk3b0i76lc35r9pizzli7mm4j2zvdabysn0prlyyb";source="0ysjsk73ksninqk2dyrw06arl692x66rsrr8vb4l2ri3m0lyivlf";};
 tex-locale-48500={run="05l4frsxpdmsrbn50q87db878bwpi076wagj5r8kdnmdwmcanr6l";doc="0j9m67n83f4h5yhfh3a51s9yhqh6kpjz8y5vlxhyabyf7rcpybd3";source="1x0wmqsrbgdgy67gln4jd0518cbd2cxp36gqrjrqgn574qsl5cx9";};
-tex-nutshell-67213={doc="1r5idg9ai3bpc1nxwj7jm7kr9i514gvnkz7wq3dh745y6ilqncsb";};
+tex-nutshell-70378={doc="01nmw2lj7dvylfypgyr7lsw1i2b4vlmhd56jyy1grv8hx1rfl0yh";};
 tex-overview-41403={doc="1agfya9rwvyjvip0alvibimz75jivpf19hp4jvlv7z0n9m26m9jd";};
 tex-ps-15878={run="0i35b4pp38d1l5rac059znlkazrcqa62qm8brhdmx7zzkbhyysi7";doc="0kgf7y3nxkw8x42wpc1g5mmmbz28n73vgwd9d6rf6fjpzrycc2zx";};
 tex-refs-57349={doc="1w7hcd3qsdhmb2siakjg2hm3h6kxa90ncsaif9spr4xkxs03ib6l";};
 tex-virtual-academy-pl-67718={doc="1kb86nn5vp1b0sy21aw9wlla1dwlaijppzq7728bmfs5nk1dnbjv";};
 tex-vpat-66758={doc="1y7f87prympxg8av128npsa43cri71jjl9gxq1p04pjlpdjjm0fv";};
-tex4ebook-66621={run="12daajbjblpxvfcsa1b63zz7kxcyaiwcpj0djfj1ycdmyhz53cqi";doc="0rx0wppzfdl7z6zmbvyva9yq6mj8gqhy8m62x0r9wa01c0jlm79a";};
-tex4ht-69412={run="0vy411zwfhgsfjbyj81pgihp3g4sqkmb6cssb8sc7ipi74ckjha1";doc="04z1bsgy3lisx7ifskxzna5jcbjkbwwjlqfwbfppnmjp5rwphxdv";source="0qdman4aan2m1wmsf9l9j9qkc5d0rq5v6ghi7zmflv7jj5v1yld9";};
+tex4ebook-70117={run="1c6bynhvlhil4a9kfqx1rwhh42rdcphi0jl8f6qj0k98xk5g6sjz";doc="0q3la7n6jmry2aw9a5hpi00f40r0i235zgk90qyw66h8qd1pnsf4";};
+tex4ht-69739={run="1al3sj190rcijhkvmrizrac5wy67v3n3fwjkq6lhm64nfc8j255m";doc="04z1bsgy3lisx7ifskxzna5jcbjkbwwjlqfwbfppnmjp5rwphxdv";source="1hvbqk1q6b0qvqvwr5fbvcfh5fklyjgw1yl0nmgar3ysrzz443h1";};
 texaccents-64447={run="0xai85qn9isnrvijw9shhljlkcnvmygni18kw02gsmij0dp9c1jp";doc="02185jla4hffra1wf3mgiaq8lyxh4gxgcjrb5dv3mkrw709iidcz";source="1wqbdmfly54sb8q1y6ms2wg8n62w34xpbfvxvwmg5i4as4a1ycmy";};
 texapi-54080={run="09cnhqn4gxf0alkx0276jkpcsd0myypbn94jzsavnjq8jknp6850";doc="0529cncxbw53km02pymj57iphgziri3d9cj54pqmjqjx9qmgwfmm";};
 texblend-68961={run="12lfkp9qykcvmrafwilyz2vj0yk0ghvkxmmnkhlac57q3hjy12k2";doc="1sahpz1bh883crlr4qicgmx96ncij5zz1dqrm23q4qlg88yn8y3k";};
@@ -3762,14 +3787,14 @@ texdef-64967={run="0wi60appvgs0h5690h8qqvcmsq2r6fcxais2jqps92ryy41s2v68";doc="12
 texdiff-29752={run="1jjzd4grr3ip6gd8xmhlawhdcjfj1sqfsa06rxrpziklwirw6bq4";doc="0f7q7cszy6ca6fmwzi7fn6p72szgzyj9fldvzz1rk3ywkhsnpakr";};
 texdimens-61070={run="0fny36zd88qkcz7k3hdxq2qr41dmk9j88skihls4vwf350fy8j98";doc="1qls1hqs6ypmsg4rqa26dp98m6h7zq18wdg9n6g6895jrmj10qdz";};
 texdirflatten-55064={run="0q2m138gpk9cvfp19jvsw746mkxa613c2204qfxw1bxw8b454d7m";doc="19iiznql82a34d2yhzqcp339zszbhfz9fh0h4mb11696mj8rx3v7";};
-texdoc-66227-tlpdb69413={run="012smkh6bm7rbdpaf0w38gakhqz0s7hr25gi2cf3592imk92qlxz";doc="1xh39n2iw8zlfncvwlw2a0lbxf90awf96z5cry47dvsz81k7r6si";};
+texdoc-70583-tlpdb70616={run="1fjaccq12gsax9ka0bkisrbwnflf91lrjfkw7l0j46gwwy5cfabn";doc="1xrh0kcwfflhbq206acljpcbla04pps01igdvqmzzfl6dyybgjgq";};
 texdoctk-62186={run="13j0c5m12if8jx8sp7hlirz33y6l2jk8lvnms7dalz52mxz8kq4h";doc="1k41z2lbfjsar5rl47xnk1adbcnnb4w97bzbgf2rnjhimd1gn9hq";};
 texdraw-64477={run="14vg45kci5pffvwdqnnb0dv3fznfaay3rg0fjiwfill24ifms14s";doc="0lw37yi82ir8zn2ii2x88f871843y2was3xwp7p06wjanr1jwc6h";};
 texfindpkg-67027={run="04igpv1y8gw945z4abb0wi959wq9y0xwzk7ymlr09qs8zcm0xv6q";doc="0gddmzndg4cc69173ssp4ncz0mmcw575fffanmdxp7y5w7ggrxb7";source="1vjbmin6jqv4k7qc0l8gd27z8gk6p87pw35rgqp0f3h0pf3r62b5";};
 texfot-68110={run="1yk59iwj4wylhagrlpasy5s8x24lvfab9xg8xz2hz8d3khai1qzd";doc="0rqhyyp6da4fkdfqa1c81jaryy29mdgm2rzml2hklp1mkxkw7k19";};
 texilikechaps-28553={run="1z9nvv2y2nzpkpxyf18p426wcl0g6gbg7qppq70b285kdbczbijd";};
 texilikecover-15878={run="04bljvhvmrxh1a4sfqw57yysaw03c5ldi1bq63mlqqvd9p3hmyck";};
-texinfo-68342={run="1wwzz52da923022bg9cqqcwny33qsspf9hfaz1zgrmxw5mi2p879";};
+texinfo-69818={run="1ds5vf98gzfqxafil4gsfqwyrxaha0cd1fx5mg76bw9y9xjzpzsl";};
 texlive-common-68510={doc="0l4yicbx7n787xczpg0lwsxlq2cavhswb0w469gc21va59lki3z5";};
 texlive-cz-62854={doc="0wkf0g47wj7yqngxmy5cvjic2gcgy31pry4810cgklljn7pqffxp";};
 texlive-de-67108={doc="13k76mqf535l8y0pk5vvzirnicxajnq5kpgywp2f35vks362a8pl";};
@@ -3778,19 +3803,19 @@ texlive-es-66059={doc="0crlg0madfm3gp54rh4jm0q1x1l7mvn3l82swhdxab3pl7zwmq34";};
 texlive-fr-66571={doc="1d48jxvrz3dxrbfzj5pygi2gd9bzjvrch8728pbc7fk7xbimkafx";};
 texlive-it-58653={doc="0vmwn6n8bxpzcfrzic5qg5k2vklbm6rhl9861zxsli0rd9396qn6";};
 texlive-ja-66482={doc="1sbv761vh7a25lpk1h4b2ar6w7cqjmafv1kbl8dwd47hnsjd7xk0";};
-texlive-msg-translations-69346={tlpkg="0l0w783z2zbb24jlqwxjjiwmfbqys3g634ymk5qhzck5w7wcwy6a";};
+texlive-msg-translations-69796={tlpkg="1v4s3zgxs1k0qsip474vv16vwcmqn5d99iw94jc5rf4cm6av2j81";};
 texlive-pl-66576={doc="1id4kngpwqs53zn3pqj0hp85yf6rvha17dyb4s0m8l66cj2rzyn0";};
 texlive-ru-58426={doc="0c77yyfj87fajran8jppj0x8krk6b5195iscpn8z2n94spz2fcc9";};
-texlive-scripts-69407={run="12y5mpwin93asvl0anqs170zixvb29vjakwgagvylhg1ns27lrdc";doc="12all49r6n1yc3jxpkc96gx17g5zfbimwfmb5d7s55vl1c88zmxp";tlpkg="12scd4svhgnvp65wkv3kd4iqppahcg3229s4qfkjwm3jb1zwslxr";};
+texlive-scripts-70585={run="0mgdiqqw47ydvyj47s4mb3bg5drm1x6ax47dk7hdc3ykgs1vz911";doc="12all49r6n1yc3jxpkc96gx17g5zfbimwfmb5d7s55vl1c88zmxp";tlpkg="16gyyx868k5qa2ymiyvb2gf94wxpnswymfbn1jd6y6wngwqfr3wx";};
 texlive-scripts-extra-62517={run="193v0r4i3p4psn5b4q0ggpgaazwn6jadjlzh5gjm3igg9k73i1wj";doc="1izzy295pmxrg0sf2szxxahxm6s8bfi960mbs9z6vy7m5j1szxwl";};
 texlive-sr-54594={doc="0icavs9jkcr5b5cx5kv202k95j0ydgby9lqrw8wm9h936mbn9bkj";};
 texlive-zh-cn-54490={doc="1r8n9k1cy7798g1rg1hyj6g945j9649c5hhqf8hm7a7abzx7w6ll";};
-"texlive.infra-68903.tlpdb69413"={run="1ig9nsyhhgv9vr5hhvzj3asqz75fdjrvgyj1s2z8rbng0y45x8nv";doc="0d6ij3bgna15i5fkg4xwi7155wz891625sy6qh4jfjmi9sda9p2n";tlpkg="141qqpf1kg65kr5rw2rrzspcyhgp9dgndz2md9snqpbspmd92jws";};
+"texlive.infra-69740.tlpdb70616"={run="1kg4k7g1gq51yv9h93jgpdlckfw4qgrxq9xgv4cwzjrf5sj58awp";doc="1w71146z54i79bhgz02m7z3gjg5zyrqhc1hmz9pvk5mynqpjwrji";tlpkg="1azilfqqz4wq82yjx8aqah1fvgmksw1v3v9pgbya2gqgdnr5i1c5";};
 texliveonfly-55777={run="03i9pzqv2dz4z9nlq60kzwiyfvzhhaalhczqa9146jp4wvcib9l3";doc="1fsabzkbcrk42rsp8ssx0kvap31y1rqnkq582129946q3njvmylx";};
 texloganalyser-54526={run="0icav63nll0lj85cqlbg1lx1r6ysjf1lyv5bydxr3flr1c7yqx2r";doc="1s7952n2brrz3s1qca9r5qk8fnjlmrmrn8b06dhjxdb7wdqis6g0";};
-texlogfilter-62792={run="19sxpfyfp2knv8q13sgka5kw74vplr0fnf5c9m599h5kb7v4pcys";doc="1wwhdm7b2rwp9qjpivj3wflwf6q4lcxbc3r52g9c68w7d492v7al";};
+texlogfilter-69919={run="0qyhmdvzly2y1xbgmi8i9fl50djv3apqmc2wiqgh5q8cn44z3gnb";doc="0khv1pcz0h75inldnmg91qx0pxmkfcz9dbdxljrvmw5b8ql8nv6v";};
 texlogos-19083={run="0rp4l8da3dn6djdjajavxqr5mmi3fsyadcqrpmd9cfggdvb9i8qz";};
-texlogsieve-69072={run="01l0i7naqyjf5nafk0bzx3i9zvcqphzg4wkbnb27ghhwarzibjs4";doc="04r1cj63s3rh97z42fysr27drximd1a27ksvm434aiiqz3niylld";};
+texlogsieve-69436={run="0sn9p9l89867mvwc5n9z4i3rxybm3dy5xws47q99563j1hvc1bnk";doc="0a87y350dxx22ll41i7y7wsdgabvdf0f6pgs08vr583jhzd6ks7r";};
 texmate-15878={run="06hnwj11ify60gx92zqky28spdhppgai5v08l73kiabrryzdn8w5";doc="13d6rlazx3qx9zwbb60z1f6dk64n6rph610s97hha5kpc0v2vkm9";source="0faabcm8lyfvzn5jb7vbpkpa31gjb1czkr0g391vbdmx9lrllxar";};
 texments-15878={run="0vhwraxncqx74akzmjcww4akisn3zjgi5b6ac8c350flhl0nsh5p";doc="0xn17gjnb7n3ryc28p8vg2hshcwa660482pzm9byq8k6s3a78yny";source="1kq5zw31sv0i87h30ahyasqy1qh4m36f0j37f8532s20n5llcq0z";};
 texnegar-57692={run="0qrnysss751vsbgd794gwh8lwrq6gq09p55qkkfngc5ly29icx9c";doc="0jidhqlklr8yd48san5iyy3i5pxg8lygf4xi0gcp3ps7xcb0m5g1";source="1bayaa5vffnkmvdmg64q5rsnh69grr8qirwd41mlfi9symh9gm2j";};
@@ -3800,7 +3825,7 @@ texplate-67201={run="0bh1yhs28wzagh7i3sraki8ygd1kikcmalqvksilmb7j4s5c0hhl";doc="
 texpower-29349={run="1w1yn4is019rjnj137ckmkas48xblmhpn0gvp8dac2hmsvqfl06f";doc="16j3xy98k9hb3p7bg9inzqmsl07csa6lx1lgym4h6rcjh247llqn";source="0nkbapkzq4knxhs63fiqg0rcxyp72vmd35jz46dha87s2v5w2km5";};
 texproposal-43151={doc="1yxb3yagljsdp4s07fzd6498889i7cscch68fb77jbfc2z4srvsy";};
 texshade-69371={run="0d5panq1z0fpi7rvwp9p2pahd7vlb3skgsw9zq4rhb9pirawv3v7";doc="0bvxfpc2v8hph04kn8a8rf5995awp8c3zc5r3ddnghcidn83xsny";source="0ib9fs5391pjxh8p0c6bzvxmgv03y73qgdpjdzyadbhkqj4kkdxw";};
-texsis-67930={run="08sn35x8wab41mdv67ra3hahrsf4v4brp9n5z0l4bk3k27rl4q0m";doc="1bgngwqj3kkr196sp8i59yrkqpambijr4a54jfrgxb6595hiadsj";};
+texsis-69742={run="08sn35x8wab41mdv67ra3hahrsf4v4brp9n5z0l4bk3k27rl4q0m";doc="1bgngwqj3kkr196sp8i59yrkqpambijr4a54jfrgxb6595hiadsj";};
 texsurgery-59885={run="1f2m8b4xjq38j6q86pfa4m8f7z4sqyfblxpkkljppiz66cq9gnpy";doc="1zpilg11flz7z6pk7zhpm5ck39avh24na2jpl4asnnznaf5bzfjz";};
 textcase-67755={run="0rkhw4rai08n52ak4acix224cwj9fzpl1m4qcxzql9cq0h51rn2f";doc="0hw7q77pn8nx80qqvfz333sn1dpx4srf5xsv8vpl6q1akhrk5f84";source="1bxkagbkl6pnlnf9ibs0ics3p5nm9dghyfq97bn32fv38jywlswl";};
 textcsc-67193={run="1zx7890vdwghxl7g9rm9fcj0v4h06sdbhsscwyp7wjmf35k6awm6";doc="04gh3w1a7pnw1zja7gg01xda0f15s1918v5m289ax22j4x9g472a";};
@@ -3927,12 +3952,12 @@ titlepic-43497={run="1pj4mavc06r5ghcvyjjhvn7x2xrccgdfjr3961al7420ymaqb726";doc="
 titleref-18729={run="1y2aw2m7jg7l9vcr35nd2qpbafyff1bc8acy2cm9k7fcjm4rcr17";doc="0rv9hsx5p460pa3ry50fnrcb0kf08rzdl7bq47n5nhm8frpmczad";};
 titlesec-68677={run="0y27npwraxaryl2z7mv0fzkdci8whq8jz7b2xlk2n31slbfvksb8";doc="1yz5s63bbpkiziwggqcal266444nm03fnr7kwan14gswmqqbkav5";};
 titling-15878={run="15iw3giwxg658pzb6basjkp4v92m3qvzk1fcarnzikc649bjcbch";doc="1r75nwakbkwf32qva6icp3pq3y8bgfl6cqw304lcw8p6bih74y5j";source="1jdgyn9zyf5rwbaz004g85rr2jpd5gi5iyn111s0r22ml41ci3hk";};
-tkz-base-66115={run="1hvk92fj8w5lnwi1g16mmgdkinjscpcxbhf0n37sn8l3kpl7m9p9";doc="1lhg3zrhxhzrzav52293jn764kyv0nzb47b97n4v60v3ajgqw5r1";};
+tkz-base-69460={run="0zp2020wa30yqk0b5iyzyjpm09kndnw7ng3lr547qcfgqr2q6iym";doc="0218bq4ma7dxshk4mvh3i40qdhh4b3i0i9yp034jjnn366wxk039";};
 tkz-berge-57485={run="1c9kgzsagh5ww0zlwywpddwn3mx0wrf8yc627gjap3f7nyyvixn4";doc="07bsfmh9qyn8q9z4brd4si1clmw7sn2vh2nr8idqnm1z1jqdnq40";};
 tkz-bernoulli-68780={run="0ifjig10clmd3402y9kdpyw1vlwk9vjakanjzkzablm5zzdr0qgs";doc="1iv94xglrk07kg3jkdci5nixrz96gwasgg5h0fl345ph9rdalwx1";};
 tkz-doc-68665={run="0gf3zjnqng90kn9341xdchm1diav93qlv2910mrl1cc7vqfp47wf";doc="10p4i3xnbpyhzj32j3mi59pzaisjhj066m9np4ankzizgwv9x5in";};
-tkz-elements-69213={run="1k2ypgil01w9d79fswb1mmckb6iznc0da8fhpqax1lp7pqxhhr6a";doc="0baqnqhlf4zc22d4qh8ikzimhrwqc26f7nwjwmxh4n5k6gwwfm3d";};
-tkz-euclide-68747={run="0jb3cs6yqngv2g30sp5xw69fmy620q40w0d0ny65q2d62s46nrw9";doc="0y7x17i9dc3yxa7amgl4a61kk8b0mbyrn1v7n1bsbhva150087mb";};
+tkz-elements-69715={run="1aas8q4kjf26ch0wpf1vvml8dawnwpw1gl6p9wy32f6jim3pckmh";doc="17jard6dv6qagrziafv29339ira4w53zd6p5gvl6mdpylj96bhab";};
+tkz-euclide-69702={run="0yfnc4zqf9nznim015qw335h8l8p8chhyl3ir85zaa2hblwc9ma4";doc="1xlyzr8sd86zrp48v1q54j8y9iw77wx13qf2rxlkjcklwn6zvs0q";};
 tkz-fct-61949={run="0hlcxnllmkhmxl5dwap1sb2jg822bz4glllqcv59dx7jqab5bv8k";doc="1bjkya9ssr6m4aw6rd64nniwffgz57ikz16ciba2x149f39pkcx3";};
 tkz-graph-57484={run="08kfjaniwrlw23vmz24yq9gbdks9fwcf0g4jyy98ikfqh9phhhs9";doc="1drk9va3bgq62qfkcvp5z30gvnscl7mbjz66m27wmgagb2ki2f0q";};
 tkz-orm-61719={run="020bi7dgjipd2ancqji6fa1zcf9lh9d8n4zbacy5l5nclxfiphcl";doc="1zgmsl11cf4fgkfilflw8c4wrcfwnvk1f88l90hwgclfj5q0ashr";};
@@ -3947,7 +3972,7 @@ tlmgrbasics-68999={doc="0yz7d8dw071nawgn2s38da6sp8zbrd03zzsgisfx7yx9jp0zzbpz";};
 tlshell-66771={run="17nrf6cwxapdkdccqr2sp5v7fayd00qcdczzznl7ppm98rsz9p36";doc="1h5mk09sakbmgsppl9fnry28xnzqya3bmp3r1nkzg44cv7kl98vz";tlpkg="1dvb7jjnmdh0k4dfkm4f89zapkjb31z2364m0vapmvfq4z84vpyq";};
 to-be-determined-64882={run="0yrs04ik67wj1wyn4cl3wfabczvz3ga3h7sfbhni9x4438br48gh";doc="1acxz8nala57gnc78r5aswiwhfvdckmvkv4xiwgcznb0c217wpl3";source="1fizh0inczp818vdwlvyawzvw8s0i48mkpgjydfcmwpsbf8rdm8c";};
 tocbibind-20085={run="1swxyai6gqlz8zjah2qnz9c5dkd1smpk163b56rba0kx7zcmvzc5";doc="189qi2qyp1nasg9w902ydk7rlzxl2qww9w3p5s3p9ywchvm1l9cf";source="08sr335sgs7hrhd6cbdc4dh3f8m9fpplv72fk54y57rx59l8wxbs";};
-tocdata-69402={run="0qf3w3021053akx5fzgia258qw25bi0z8aqi73wwsj1prli6mv10";doc="1zmgdlivs4jvhpr6iaqykdgac8v5lyfp3gy9zd72g9l3s0j86cna";source="1y3cg75lj5f6aana3hjicnrca38bq3nbql8sj51akz509a27yl4v";};
+tocdata-69512={run="0vj012pdzwbss6h96l8a539vdwihm9f58d6yazsfc74ia4k0x3yk";doc="14hy1z419gb6n4zw27xv1qi3gc3krg83xpnr5lw40yd92i99i8q2";source="0wg9d1nay4cr52g4ird3cgb7lndlyvmx6hcf6d29j5hfdaafkdg2";};
 tocloft-53364={run="1vp3s7q0fcyfj2ksk61gxdjjnwhd62dzfd94yp7y3qfy7x8hyqxq";doc="0zjs0ldib6hm3b9msb5x7r64ddknqwf6kkc9cc82hbla9wshq4qq";source="1764cq3d9ad5gy3qag6f6wxgnna0dhk3rx186jqjpqyqli8b4lgh";};
 tocvsec2-33146={run="157m17r777cfqjn5p4j1rbj10ysbyms87jrhk0wjkahag9rgny1b";doc="0dvzcynpfn9fvfkks5idncgbdqbhxj0vp1d3mfzymhiw4sds31xk";source="0gjpdjkl73ip3jkhr9sx94mwxz3rvxaacn553xwa9gvk3xh5rav9";};
 todo-17746={run="0chmi45gcs8y2zh24072y37g3z62ixpv8cg7ck7knmkzwfzv5i13";doc="0n6dy738cj08laf4cg4y0sadzzzrz9wa9m87hwkya6c95znl0091";source="06xpbraybhf1wbl979653waznvgq697jq61xcpz29gn159li0pdb";};
@@ -4017,6 +4042,7 @@ twemoji-colr-64854={run="10k7gl7jp9l41mj6jamz26wndf3casx1qyy1dz1rscgqyvgjgh9w";d
 twemojis-62930={run="1k58rnl12pj54g5r9rc7dcf1n33p0hw233wckrpn0dh287gf5ffy";doc="022i152bp2r8fnkwb0mpz1nhs54qxpy57f51j1mkb5rc1dqgcxqh";source="08jxkcjb95yb7pc7jlf2rcz9b2yibpi5ygi48d2ni79i5382mizh";};
 twoinone-17024={run="02na16ki3n7gcbzi45dk6nwna3dqzgxwc73aha1zncm05bnj3n4q";doc="15ldj27nb6pp90abilsybzg7hn0z8xfv7mmwrmwdq20qw8ss75ay";};
 twoup-15878={run="11zxz1wlnqia071kg3d70glp167k2c210gc4r2755sh6m23wp8p7";doc="02zg1rq2ylm9qvgwh530d5l0pq9a377z943s66apyf3jz8z55sj6";source="0lmqla1wrsrzq900c4fhjzbvg7iwbd3y05g40j0lmfrj8w8lqvng";};
+twoxtwogame-70426={run="1gr6wgvpzb9d07a416fngf499hk4pxvqpnq040jspnz9lsfnyd7v";doc="0d55npjzwpjm2bgsm6dc44n2mkycqglqy4nvkd9jqfajddk6l9nx";};
 txfonts-15878={run="1dfrd8dzrzj9y5qnz9c554xn2g9931slhj9ylan2i71k5asxmkiv";doc="13v5hhk0nzj38nfgyz9ijmz9gb9703izrgb617z274d744qwqx73";};
 txfontsb-54512={run="0g2hjxcqhgynzmvj44q9d1wpxwpwy52a6rbl3nhnq06w2v1lh637";doc="1yls8kb1bglfqa7yiqidanyjgj3xb1isc7z99ybw2j2kbmvvcjbn";source="07bapd1i9rwf3946pj54s0m0841ximmj60ic266mcmj5gipw2q1q";};
 txgreeks-21839={run="1872zrdb80wfkjh2bdblv31k6cm83cmsnqns8f3hwf3vr0ymvb62";doc="1gswhcdlf8n4wpnzy0fx4maxvy3n4dcbag9r0igrcvcbqnp9sfcm";source="0n4r3zn19z62qkd2njxqj74k60jr59704mnhrlvmmxi9x3b5g5sv";};
@@ -4040,15 +4066,16 @@ ucbthesis-51690={run="19g7wv3iypbkcxhlybizkis6yivgn6z0mvz4rgsi72zaahpxmg7y";doc=
 ucdavisthesis-40772={run="0kdrwdk7mg3yd7hm2xmq63kgikr2p2izibfgw1whai921za4wlm4";doc="1chajx1i2zmfh4ypnf8jspwr8kjwbfv7z07qrfasrf73r775yxnh";source="08525i86hrv1387jn9ayz3mpwnh4z8kvjvb590y7gqv3cdvrsa2b";};
 ucharcat-38907={run="0xiryrx3pjx2nq01f4f0x3anx3zvkdarp87103z9zvpf6aa27slw";doc="0k1aqic1ljafdk8xralygdyjapkqa0qiainrbf982233kjqclpvd";source="08xxmm2rrpyi9a601bzxka226fnhmyqfv8cfbc1qdivn8658785y";};
 ucharclasses-64782={run="0d5rr5w322pr4bsmcp09vsldydxxm69mcpvpaf9j7z5rwhic9biv";doc="1l6pv743lzdhnxpd8bv1y40xhfg82421jyri2c5h7j4ahlcnnvic";};
-ucph-revy-68224={run="0i0fzn556b07i46jq4mb43fhczvjh91asd71512lc2rsx12r7gvk";doc="03ab4kj1qnb9hp89kf9vvh8ca0l0k3jqzkkdxi9kycwzqm7x6bij";source="1b0v20k0ypkf7gcz0wmrbr5v4lzp97v1vvb2818bphrqj7bdksf2";};
+ucph-revy-69750={run="1pp8cqrvhwqc16nd60bd6kb76xxnsn671icsph6byx8xr7fc3hl8";doc="0rqj0b2a73wil9iy4sd83831nvbd0x3lqi5480ig2i01rq3lkpvs";source="0kr0k411gpnzvgjgiqnkbdw8nq3djp8107886igcw26s46ipwics";};
 ucs-68759={run="07xgqkjhks344r0d9c8rvw2gvy0kwhx5kvyzkf2ymw1hiix8w48s";doc="0icaq9irpb67mipfpv55kfbdy5m7dw83h5qqq98f5d1x14h3gxbn";source="07pasmgx62jjdq8wgqgk10wkykzljj7v52xhl1ncma4idmd7l97q";};
 ucsmonograph-52698={run="1jkcyhrh5zf8p205xgs10azhp69vrz613ln9ssrb4485b7a25b3d";doc="1hhr0z3sy8vn6cv2i7g8nfpnsdpyrsbqrclc8j8g6qidh83x2y5q";source="0x465kyz3chdcj705v9gc8s0w3pmawaza93pcm8nxy3k7dwx920j";};
 ucthesis-15878={run="1mqj65aps995issvi1vgn7f7pvxq39pwxaqqwh7pxnki26k8czrv";doc="1hv02nxak4laz9az2kr5lvd97l4mcnixdmpysiz6xqvc13ivkjl7";};
+udepcolor-69701={run="1i8vmd208l17r0w6lpzjymi73n6ci3p5izqqhbl2wgyxsq4090zr";doc="1zm3znyvkjpz5ilbbmkk0lq6qaavk9p55g5b67mqm9z1qh423gjd";};
 udes-genie-these-68141={run="1fj7qy5cbcs03pkpcv8ii539val5ps57pk0836srwgmgh418csiw";doc="0ikgr4zdxfi06ply66kp8v8h1p51m8fmzv87hlg490qaj8wmng5i";source="1rz05n7bvf0c8h8b278m9q4pj8vdc29i5xncr2374lyhkcx4r3xp";};
 udesoftec-57866={run="1lq0n05v6q0p78jnq1wf67pgzh214lllcas4jxlpz8hrwk9n9v1h";doc="1gd4qhdr4wxgjalxgqp0d404w65x7r3ipdkdq82lfcyclqyab8fh";source="16fgvdzlxrcaxbbk9m9yxviv8v3qhki2s5kq8j065xx88zd181aw";};
 uebungsblatt-15878={run="198bz1875qhh366ddvdxj72jpcdinfxsrb2mzirr17fq6liwbwhq";doc="0814xqw1iglvwn5y29fsvgbrm5clhgiz6ivbh8a8rayscbjwixmj";};
 uestcthesis-36371={run="0dsdzhf9pp2x4xbprii9rvl0h0jwwwd03va8mg7c3cjgr2nvy1dl";doc="11z3ac2pnxg8qqy4shmdks7h33257nbkgj4h1rq49gc2ssqmp8pc";};
-ufrgscca-69042={run="1jch6z0jvybza2fmd6mamc8kx4c5q9l8dhpk2r808a9zxdwhcx39";doc="1w4736vj2x3znz31qpfkmnh2aqc4khvz9zx2n3mda3ngl34cb1rf";};
+ufrgscca-70603={run="0vnibzq6ib2kdf3kdgk72aznshsnj1izq648l8f8l7sdzw9v0pm8";doc="13mil74klrh23af2as7s077ly4nc6v31qcxyp3v8rppff3jxml9m";};
 uhc-16791={run="1xvkp384p0xcba1lbi3b2najk6d2w1s78yi6vgppmcjrd5limif2";doc="0q1wxcn2zclpj4bsn47jgd78xmp82a6x8w068j4ihza9pfvbqacm";};
 uhhassignment-44026={run="0pb7hw9krpri3ky7hfshjkkbk36cilf31iv00l5iynsnrw70lwyy";doc="1106wbx02mbnkgzwwiypfz7fg1a3rmwyhlgnsxf4z081q891p3fm";source="1ck8c7jx3qkxnm0a82qfql92s05bg5p352fw1yv3y7v86z2kh6ad";};
 uhrzeit-39570={run="11ysijqpnm3b4z7pnyg7m7kpzp6fiw42dc36gxk1aq55wsv7kk7g";doc="0rln5amx6vkny0pm4yhgvnmmr9akwcrd93db7bifxdp07hjbvj83";};
@@ -4069,7 +4096,8 @@ umtypewriter-64443={run="1xn06vz5lxr58xi6y2qv5wa5h2r0g1xnba43x5qh5ag6bz5ym1wh";d
 unam-thesis-51207={run="05lb63wclgxqr7jn7c38plhg3r806b7888zyifcivv85q143j191";doc="0kxdr723xvg0lzhmzwpyik9vxy584y41pmwy8bi7197gz1hgdlzz";};
 unamth-template-68681={doc="1ydaxzcwxq1rjkawlapnfipjzlyzvbvijrx98pi9yd4zk2nnqjfv";};
 unamthesis-43639={run="0wqi46mdjsl06q7hyvy4wpihvrr040f5g23bgc6lm6lq11jadj6l";doc="1l71n80psc2hzjs1lnfgpfpg13355sk9ld86104dkyrl645qx07r";};
-unbtex-69307={run="03pmfjv9ssgk0g4344pnq15z28mgkjr5f4jgddqdbs23320zwd43";doc="0gy3r6mp4lr8k7z93i0dx0zrr0pn89lzaq9anjmc6wnwnb9bwvgf";};
+unbtex-70325={run="1djrj3ywcp9r9w3gj037vz2rw502j9vdz4pnb10zzsfc6v9wy55d";doc="1r202y3fh8bg9r39vfa0b565jlpxqfilwwfjh5w60ywh32ps5pqa";};
+undar-digitacion-69742={run="1bvfr0zb2jh0q75sr6lrkyxqkh15r15lrdsapy73vxcm1s34i96x";doc="100h0pzwawnv2c2f2q9f2incb8arl3jxrhaj5vra700c6i6lva1z";source="0z40wjd915w64zyazfj2bpykq6x6sq6c3xmfh4wc5m91qp45wd25";};
 undergradmath-57286={doc="1z8my3fwqc8rfc1843j7lcmfka2023z9k0js4ygh1m8kilc2nrr7";};
 underlin-15878={run="0gm9cikysz83sdkhhwd6x9zbs278gwfw8mxh7z22l3c0nvfkxbfa";doc="1rvryx13hyif7hw2wgb88n95qycip95xh92jdy1jm2l6pl3c5q3i";source="1mczvxrhlipisffdi9jv5m3d2i7h34jpm6vi4dbl58cg9sasc4a4";};
 underoverlap-29019={run="14cknh021b4qsymflf0mnv8q2vvhgsf2088s1g6pm8ckpx7diq0r";doc="1h1qvk9m04sp0nm4acj7kfib5cfpch1mkpvs55mnqqsgasgnymjn";};
@@ -4084,8 +4112,8 @@ unicode-alphabets-66225={run="10zmjmbrlxsvq7snzm3p89afj4xy4ad0ni06fi9dkqjmi9l5np
 unicode-bidi-42482={run="1prl0i2a9dg5yc2yl1x1k0zmz9lww051w1zwy8cbyvk3rd765a72";doc="0ab0gym9sjllmqdclkjfbc4fh9n20999mv7z2gylfybirm0n7i7c";};
 unicode-data-68311={run="1ra75819cglkd1gdv96wzflx65bc73v46k2hmn1bxjachz3cd7fr";doc="1b8zpwd0vr238may4wv68xj77w7fiq757jv3i45yz0gir1as9piz";};
 unicode-math-67919={run="12xc969s6x742a3aay28354cpvam2x9ack1396q2hk1wdhg846fl";doc="0y0sacc4rd4ilzjfw10v058wv626wlva1kzrbrbqxsclq3xcm2fy";source="1wr1hrxd63z5iisdw6k95qjknl3i917y2dmnrflyn0afvl2pxjg8";};
-unicode-math-input-67089={run="1gkamvcr38zh9yzvhbngi4lcbmxsrmbidg1rq3mfs51qnpwrkww1";doc="0p9k80mymz1dflsvjjb99pzrskwa21fmvrj3zmsxdmf8vzq2c88q";};
-unicodefonttable-67066={run="19idvgz9pmwsjrjc09z9njpnffyyaf963xcz89dhzxcc2k6v2wrp";doc="02jvkpcwhf5bxg6d6pxl9h1igx01wkhwm7rs3ycid8vf9ydsvl77";source="1lfjccv4h97vy34g8shh26rw9ai7h7f35xywri06ch3vx8gsmlrl";};
+unicode-math-input-69591={run="1bz4f905r178kkdbbx9c56d0l63a3gzaqia20qj0q0zhqvakln18";doc="1lh4qx0lz50j2j69m62330snq5wsg7vw5847z3jk4kpliqa9ybm9";};
+unicodefonttable-70354={run="0yvn44xyf0lh8p7r2kmdw15gwyjc9zcv46bc7bai5623shbk5xkf";doc="09al70k7rigadasi2i0rhza88wxnasd6j4b8mlyaz9pzyqc1dxsg";source="0wagy5wdim81c8yp9ssgbx8hgf5322hc2jwg3zwd5jsffvlv5jab";};
 unifith-60698={run="0plwq53cp9rsdsjd6db1g8b39k5czzdsmmrfki7ckbgiw317k7w4";doc="17q97073nni7x2d1zlplrwfvnxw9pkjgk79jwcvbgfjq09cq374z";};
 unifront-67054={run="04rm3pia1x68qm5kabay70fr1szrzvg4bzk674din4babl3nblal";doc="1d2kmwfa7cz009wfc713my93v3pgh1jcqz13jcy65f7py86qf2xp";};
 unigrazpub-64797={run="1rg5b9f3679qn8jaaqn29bfw3qgyxgx3p3zxi7vsr6kn6ada3j82";doc="0hpjzkdhrl64g00x7jb55wf5mz57gab432vxq3hd4igffrxvk88m";source="0mdcp3f8by29abbclsy9ndydgslpybcs5wqbiz5aiy5blp8d8abx";};
@@ -4109,7 +4137,7 @@ uothesis-25355={run="1wgs3fxg01cxcpnhk43ik12sjdip77fkxdaik6w4w926i8z0np7s";doc="
 uowthesis-19700={run="0iv9s5dfmbrhxbx4kqbhxjf23rln4ymcx4kkk5fmc67qi51i8jnq";doc="1xcqs2h6qs2lca74mg1jvqza77xrph53bk9dwkk0bprhkxn1all1";};
 uowthesistitlepage-54512={run="17xh2myc3xj2zwbc7jjdmnfqhmhzkqj3dwwn2q04hcyr4bm7vnfz";doc="1gm1clfvd0g45fpgf6h4nmyy2vrc0d9lqfy9h3nn2pnh0ki2z0ir";};
 upca-22511={run="1px88kyvr7jkzzcbd32pi7zlak9wwzf3b55yhnh9bi03pk0il33s";doc="07gsza0vhs52qjj8im4i1fg2v2lch9iwk424ik9c1xak1v7s9d23";};
-updatemarks-68163={run="08x63a7hg949dcszq5x03kwc1408bml78mfrd1p36vd99gsiakv1";doc="0lsdfdd6nkl21pblpax32gw96mgm8l34gp2m7h60fipj3garfb69";};
+updatemarks-69989={run="10shcyaanjg9dm3pb08li46q6hbksfd4kkkmj83fivqrm3f69l88";doc="1k4gkav2afnrwhg1469xhyypmrzkdq1zhvvwa4zmavky9lvwzghq";};
 uplatex-66186={run="0kmw51xvg44jrzn6r1w2biz2d0m3j533qadi4bfjhf2dzi4jdg61";doc="15b338kzdd0xbglihc5hf92mv3jwmyxp2pf1nb9l75cxnqfglzjl";source="01gpwxp81hz8824y1hffq6b035l0pxa8wyfkjm9kh5m58j52s50w";};
 upmendex-66381={doc="0mj8nmqr3z7b802kvjmnkckq89l694an7s639yghf3b9b5v7xihx";};
 upmethodology-64613={run="0r7k223ypavdbywq5fwffyysn68pg12dgp842jd22b866ffm13pj";doc="1vw9azpz8vwanfg60vr1a9bbx39k8v6jhvn505pvmf8fqgkqd9ch";};
@@ -4125,6 +4153,7 @@ url-32528={run="189lixyamvrcpds2i7nlh4w83mk5lnk73158kcw3qjanpncnnn1f";doc="1xrag
 urlbst-65694={run="0kq36hv6hmj82784c1cf815xgvpcdzgrv5ppniy921yxqxdxn4yv";doc="0c7i74iybjra6mmra82ny1bs09j3qrvqri485p4h1cz6195v3wln";source="14v0wynzshm4qcical4q1vnvmx34ds00fq1733ivl6hr0sj833mb";};
 urwchancal-21701={run="0hlaimb12imiv0h7khcaar4xi5dma11bqcrb2b6imd4srgg9b50g";doc="1mzfmfwny5mzag8wf1h3k4xbmbzphwqv6r74sql8wyqw53s337jf";};
 usebib-25969={run="1q38qzz87nh2hbmml3b0a4919dgk6d5rn0z5bhrc4ip27dscvw07";doc="0byl3xhiz3b4hqqmq2wi5fdbshh5prvqfnhjcgjk619bn99cijxm";source="0asby43xsd35aazh2sncg639x91f91shs25f6f1127rskx5fd7vp";};
+useclass-70447={run="0cdxhh52643g3p5rszasqrkmvbbvjj211qkhlhmb5xdq4jsvkmry";doc="017x003x7cqq2bmhwp426l5lqm1bp95sl9mz6l4izk94y5jsyi97";source="1cr238jqdamc4pyq4jrmsdzbihqkdgzlb5k8g12d72hywk1brlid";};
 ushort-32261={run="0235a399vqry1vdyfyva9anav8axs1pxwf9v4hhhazsf85m23qqn";doc="0r0jib3fclxjaczcbzkb8ywmnz0xkrj02blg0f5i065h2s1qa10b";source="1sp8z5jnb5qlihv2hz0j2gs4rfqpy0ka3npph1dvvjvi5520c94c";};
 uspace-63123={run="11kmx5y9kdklgpfwzzh8mq3r9ycn5zv0a1pkl6yxy2vsyg6wkfjz";doc="1bxvpm8j88cawv0cxl8h65q33bnid5sqv8gqia9z13h00jcgkjcg";};
 uspatent-27744={run="043az1c7bs194w7frr768pwaliiaikfibxh6zqiznc85ax6q3d94";doc="1q04i3q9693ykpgsx1fl11w0y0kxffqyljns1qy04935s5b8vskv";};
@@ -4163,9 +4192,9 @@ verbatimcopy-15878={run="07syldn58zwnwxwdsmq63qgr2nb0bkl9di09knska9jk0c50ql1j";d
 verbdef-17177={run="1dy1h0vcknnizm2f3zggga85slga5p77aw3ll5ca3kx5qxp1xqhl";doc="06zh9v72ywrg84wlb96p0y28sn9919pn2xjgqhaii6irdf3hmlma";};
 verbments-23670={run="1iv716hb41cy7bc7bk2420lwdykpccyg6wxvbxb8vk904fsgdk2a";doc="0hzrzb6m8iakip93in80x6k15b08z9xwjrbki12d28xdadqkpqcc";};
 verifica-56625={run="0i5bh8j5yjvql6mywfs617mh3pywnqd7z1m6158r3jpwyn6ki25g";doc="0sinc5ha8k3nk307q0piqwj56r2bh4pbxxyww29ygalfqjr755bb";source="1zn10fr9kv131w4id0djycy7492ch7gis27gbr5r02ydwm7nny1c";};
-verifiche-68023={run="1fzxa5aycqxnzvvhzwprvq0lcdgvchdn5gnwbzbfnsg1547l6kz2";doc="17f2r3l9252bijlips61naj0wzdsa5ghf0lkyni5xsiz0s2jc4a9";source="130hq5mzia4pj0cdqcj3w5fhgcsd0hhmv83s6an6ia5rzmb14kzi";};
+verifiche-69726={run="0c706gskzpr0a379a3liwad2d1bavpj2zpacdkdm5vw6vxnb2y4s";doc="0rahx5d5gkfq8vyshhknvfb410wc8kbmphmnm0h7b46c0f1r8x8h";source="0sgxdki79pm9933gp8zd8gbklfqa4574g1if48b3y4jh2ayb03g7";};
 verifycommand-69389={run="125r3ncvllap1vmnj1wz11ir10223fvbgsy233qmg0kdclnh4v54";doc="12j8v0r2jay5f1w20f7yi1kl4jdfqrv2ga5748xksds7jj0x7im3";source="179642vhwmgrmlvavl5naxnj1a3279clgjyc090gqw8vg8hbnccq";};
-verse-34017={run="19yp18fl88zcph3r53ajbnwcr8lbvgahs2kfdg733l5zw3k5pj16";doc="063lkcis5m4zs509hn4z1zg1faz1lsxvjak6c574xasspm45v559";source="1r9pn4dqpr42ng4xk899kxph5sci82dkdx834lyrhi8lsj32g9b4";};
+verse-69882={run="108qi1600f5q9im9vdbhnh0yalpjcx7qy90x7xqxnjyqh7116c3m";doc="0zqw1zrpm3hzv21gmscm9b3bfyxadw9svd6hxp0gf1virb5nlyhv";source="09rj2vkc7l4l79w97iycyw31lqwr946rdcrvwzv8nargpp0ynw8m";};
 version-21920={run="19b4h22lqvgzqqm0pivjjhmpxmijrr5rfy0xc9g9y7czsrp810hb";doc="17bsgyjvnna790nz3x94wbwslxkkz3958vj2l3jbyphm5vv92fxz";};
 versions-21921={run="07bxhbpsqgdbpwph2w7gam699605m181xmj8jhpcsf4rwcpnjik7";doc="0pjz8nk7dnf2jp6yixhi55zbrlmhv477qsx6p52dwkf74vxgv5ki";};
 versonotes-69249={run="0kcfa9j99jpw521sz1q0w9qfjs76138l1rdy9ha4gb61m5r95008";doc="0z0mpqrz3n8lp3wf1kfzfmm39n7rwv2xxfvy4x76a67qdjg2glbk";source="1h0qkcpps65a8qcbzskbghsdnqvhgg62yk7ihmv487a8lid68js0";};
@@ -4189,7 +4218,7 @@ vwcol-36254={run="1wfqcin8xmxrby5mxn9s5j32zmr4ka4k0h9ps4kdddpq238db89n";doc="1zy
 wadalab-42428={run="01lf8nlga2nycr23xpzl6xas2nlgajjmia4lk4zvjdgcxqnipfrq";doc="0m8x6plkry0p3jabvhgkccb2rvlsz941di4ihfc8schkq7iyjlxq";};
 wallcalendar-45568={run="04rck2mzvzpm2f934iz4nni9s5w9g7a0qcp3kvp3bsqa6nhhcf6v";doc="1b2nn4cwsb6vi29a49cnnazpzffwbpyw48wffklv11frbmk74dnj";};
 wallpaper-15878={run="00cixdnwr4vpfpqfdcbra4gwz0i36kddak8ywv8l4q4d4yd567c9";doc="0ngsn8an7gqzkw96sdxb4q24h7bvbjw0gsqk6dzrdphclvsjy8w4";};
-wargame-66713={run="0gck1xa19pqmccblad9lpgj2n4wvlka83grd1qgnkhvwam185r0k";doc="0swifh404yi2mya0xv1np8ga9m8bk0nwrc386bpzgq7s8i1mmlhv";source="16zz89n1z9wif54xs6140xn9rmi9dhaas9s6yjwy6z52gjinsaga";};
+wargame-69692={run="0v7mc3hfzjissd16f4l5fmv0gx5dsba9rmgmbsmn5ny0y0b5jkgl";doc="10nh98h13fip08k15wc1105cw7zi0ihb614nz12aynhligi667c2";source="0n6gg94s02c026ca13lmg36f5djdnn88xnf8yvv9k4h4v73qaxl3";};
 warning-66616={run="1rsqy10fghs5n2zb3g378csxykrlympd40g74wsz9v4aqb5a9xf1";doc="1fsqznifd2fj3czhhhii1j1z79f3vdkjhf46sdhc67y2izqmg8rj";};
 warpcol-15878={run="1dr0ic0pskvw6397q1yy1ibbpl1c1kndqaw5y72zzzy52x4l4j71";doc="1jc7rilhf61irh8kgc437mp45ryz0yr63z11r9ixbsj04dmfk2xr";source="1lnd9b42xyzfnrz94x10vxrmfy6r2l4wlxbfc1c02fmnchj2wq6c";};
 was-64691={run="18yszyvcv57im6qk8kyck21mzyzwmlzn4s64jlzz0pdzpjhn7sxa";doc="1dv6d27zlvpb1kc8qlj1jxbq08czxqrfq9l0ahqdcrl3fawdgiv2";source="0ylf9h95ig7vy64hai9skl7dxvkf0rj85syhcpf9a2p301hchs35";};
@@ -4199,14 +4228,15 @@ wasysym-54080={run="1i8pvf5yfw5j0rkcpy6v8czvr85p1yk18c8h18iljgsdvfj786h7";doc="0
 web-66186={doc="0iiyzzrgwakw7ipdnwmjwcrqayzq4yn4786zlr9zirmmj34hpamz";};
 webguide-25813={doc="0wid2sxrif3mm3lrs0s6pil949byviq4d7924yzvmf9hkrs5f03v";};
 webquiz-58808={run="1bl334im0jvsyx78g6jq9m8623xyr4xz0avzfaymhs39dv17wsyr";doc="0lwc3r3w2d7lzz39ilncbckmvx536z3wvz84jlnv3flm2dll2z7s";};
-wheelchart-69040={run="14m5nrs3iv6hdryi9xn3yral2pr5vbabwzxq882x8qfhm4c75ch9";doc="0dlffrsc1lyx56mhjnxla20mf7qh2blybdw2xnc1nkvw59yj4dc8";};
+weiqi-70179={run="0rwysz41acvsw8hjsxa5rb3nhq9cd096kgc05rf3zk6rdiy0smhr";doc="0s3g2ymfqz8acrqgb1d375bvxmb21sxw16j9a25xaap7wz27xry4";source="0fzj1cyxj505vf82kzjg7jy6ifk3m5pwsvmh5m6jvr2s7d2m079d";};
+wheelchart-70518={run="0z59dvngsyabg6ycmvj73nj23xaf2zkailm9p718mj8sp8nr72rj";doc="08zncid0bxyh5i1xigdk5kdnaplpa0jf90wlnd6srxfrshy4b7rw";};
 widetable-53409={run="1k1jnl3jbrbcc55cl34wj3znfay2wnf8k8sgdslicvnan2j717zm";doc="1giy0gvhngsmfwc87j9k2p820j6bm2mc2r1kbcl4ci0c3383mify";source="0krkcnxzjrn7lqd0qh8lgjixfpd3c5glvj1ilqhak9ifd3lq8r4s";};
 widows-and-orphans-66753={run="189ch6wprsw4xsyk79pm03kkn19h5rkqpfs0g0p6kj5jg39x78xv";doc="0vzcyzcf8fh83llravv0iz739ilr15qpjkgyjmb95r0a9zwx044i";source="0sf8picg17x58baw36s0z41p7ck26439wjra4mbc6kl6gh11jqmz";};
 williams-15878={run="0pbij6hwk82pmddl199sxin34fk22wzvgfj0dpjsg0i5qrsg0qcl";doc="0vvz6fsh4vlhwirz27gyni6xnqinhl6iymgmfhlcc808y7fawcvq";};
 willowtreebook-60638={run="1g8v5am9pzabiq5l5306q0s3a9zmyrdx5s7pjbpph08bhqfhxvvj";doc="1368jr8d6444bnalx4p0by1133liv7fl4zpvafdm0a6gz8b5n5pa";};
 windycity-67011={run="1r395672jacizgwyk2jlf1af1np4p8i54vf4g6lii5yv0yhx6pmb";doc="0f6c5pnm31bdanbcjn5p7icq9qbk7j07sam6g7daj670z385lx5f";};
 withargs-52641={run="1b49fag0ivb5srlsxcbmy8ssqsrcbgadkvcxd6xn9l9bk28wpfwr";doc="12n87c9181kskqvx7bzvqjimg7agcm8n2z7rxnh1g4kh9bjr57ms";};
-witharrows-68047={run="1z4v7vr44xd2c8b86am74xi41796bv4gql41hk1zldswz6gw8w35";doc="0ycg0p5a9vzz7nihcsb49vdcqnwzvz6za7dibbx7am0crb4y9a38";source="1vhdm893g8zk7aqqpx7wsy35phaffpfhd2cj359z6k3r4km548bz";};
+witharrows-69996={run="1mjy1hjy0piy7j3px4gnkvh0hfky837njlnsgr92f6nfp2fx8w6r";doc="1fjlnw4z9g9mkf3086nnh1jycclxb3xfhrnd1dyg03ncrwvx9wwc";source="1vhdm893g8zk7aqqpx7wsy35phaffpfhd2cj359z6k3r4km548bz";};
 wnri-22459={run="16hcapjdb5dx48gbcvk2bkpnp1w9knswni2vs8v1l9shxz03nnxa";doc="0wpf06is1vkaw4ivhrz4hfii3qrgs71cawgn1fnm8fdzalgb2frc";};
 wnri-latex-22338={run="06m6xwvm1pxz2bjf2xa7k3x6m70p1f5866wn5imipmhw4wjs2jp2";doc="15d9mcvdhs1jd574gm6a9ppxyy7avclvq54ikcmlf4vn20lygidx";source="02x8fdavhkxfnxhvr891adpn93yhqccs31w05h8f9hyg34jlnb30";};
 wordcloud-68209={run="1s3fpbd182zqi94kg59mpssdp51rh7gw5371xrp235g8ih50054a";doc="187ap98yaffx8nf935chvvgjalx0g8xk4gnaqbblxkz26qi8z3f0";};
@@ -4216,7 +4246,7 @@ wordlike-15878={run="1mdgcdiwnqcsrqrzbl27v56xpnzvxb7gg7a8vass31srk8n10ssq";doc="
 worksheet-48423={run="1rsh38fx4ayai0mlakqgpzxpnwp6ckzjcpiwy7aqlpia0504jgpc";doc="1hagdjrf472ip4jjkrjv6mgycwjlhbggval7kkk449i0xd9kiz39";};
 worldflags-68827={run="170wypqn7mmfj4s8gbm363l4hqmmjhsziv22z9hyfhrdh0lprip6";doc="165ny43vh389qqi7rzw7mhfyn04awr397i67kkc20jiqxl6v64r9";};
 wrapfig-61719={run="1axad52pzzsx9d32rivasl5d49dj51adk5kcnb1rr8mz59421rk3";doc="1c3xd0ja4063qzag0v07mxkk52yczlcwdbwn84gsfp5hdmd5cibr";};
-wrapfig2-68164={run="1vkp56jijwjivf0ml9crdsy4ga7763m6hh9kdw94s1zb60zh4zny";doc="0cjfllnqyj50v9jd7sdqbf7inic7jvrzd4nh3dhssgd5s2abfpnh";source="1zy26lvz2b35ywxxcgk5r6p8vqq92bbw33j39zzg4b739jrh842h";};
+wrapfig2-69513={run="0b34ppncrnrm4pd75l7gjpc1ci0q8r2667fwyfqggskkvlwmnm0s";doc="0v08c237ydmg9ss7vrwsb9sbzbp3acqv4ldfzrk63zc1mbp8qs7j";source="0avc8afvv3mmmxfkz3kq9lxgl5frny5z7w7zi9c9wblx2qagqb6x";};
 wrapstuff-64058={run="1w5bnl5w2shar2qg2lm7768n8h4qvgzhxaacphjhqbx9zb1r20w3";doc="14npfsqr8wp1bgq9az4x23rmkkgpn37w4cr6c43wyqs7cvizz0yl";source="1x34kkbv8n8c89x21ikv2lyzlk24qbwcpcxwgv13lqqlcqxfz2ix";};
 writeongrid-68863={run="0vkm3hfgc8a3a6x5sxyszbmhprqckpxy0ibz75g6dhf8wr30jrf6";doc="1dvxx2gqvip9wf80m67hb6w76bbwcy2nzk5rm4m8dj9fvpzfv2jr";};
 wsemclassic-31532={run="0zpqx8gi2yf8cm5rmvchz0jprfwcc0gjkwcrygrvlqhqqn7qmc07";doc="0h7vz6pza8bv8y8ihfplbsq8ip9ds2z63s7j7qh84vf325ci5chm";source="1522cvwkw0ryvhgdqqd7k8lrbrayrmm3h31c77v7x8a81cry2bj9";};
@@ -4226,7 +4256,7 @@ xargs-15878={run="1r4giz5gp4pcnxw12lr8hnsa45yv1lm1ddq6g33rkgs1qjzkhv02";doc="06k
 xassoccnt-61112={run="1z25b0dps2qf1lsvmbq462ljyyakkicg92d3l1pz254n2mqzvwjb";doc="0057kfclqs5n04ghsz6ad0pvgzwp4hlpk21c66922nscyl4qrfnv";};
 xbmks-53448={run="0pv35b38frgwbi4ijn1x8w5mx48fcy709adlrkzhy641bw4isv86";doc="1nr1m8mhqwkjl9l9pw72ls8xrvg8w2gi8rar4chk3xmh6kphi7ra";source="0waizijqrvg7qigh317vr56bi2b795p5k3h779p0kbl53k3f9f6i";};
 xcharter-67742={run="07c71gkxryhr6a1yjqyqypsmr4ns986g00nqi0ij823bz6q34hk2";doc="0mkgx4daalf59qrh0afd025r0p8nq2908f4fs1am0sy6svc1m16x";};
-xcharter-math-68992={run="1bys9mnl562jq8zr1zd98c3vyvpjw1xp7pblaxcwxwsy0zij8291";doc="1f9rm0ga8mdjkqj4qv75c73cc9jbkjj6bnm6s4ayf4lbqhirzjn7";};
+xcharter-math-70333={run="0gf3qz3wk6fg6p27wdkspg7saq8b8ji2dh0r66pjffkvj7vmj178";doc="1h9dsdyl225syhihzwkcj3v7lb55m4fhlbxwv5jq14wa46hsrafw";};
 xcite-53486={run="0zsfyaxs0w2xy6fa1s6hlrcnzw1q9n4n676bv6j80cwp5cw7nnhg";doc="1sfziwn05dii3gviiahvmg67kb04hzhz4cd1cwjsrrvnjii0dqb5";source="0j5blcycs86vgmi54z0b06il06zzyjp4v15lmdwfnx0amb9y8jr9";};
 xcjk2uni-54958={run="1x77gmg738r2zbyd0mc7q079hz5wbvabyszmwizfdj6vflm86w3y";doc="0xig1w251dsn2qd9iywcdc20plibadiw8hl1iwygpzfa3187djjf";source="12hbjjdypk0s5k5iaac80n2n4z1zlkg5lp59y58dwnn4y1dx6m6z";};
 xcntperchap-54080={run="0hqagjlxphvfqmslg91fpxngbm15i3kmawglszj8z585i0j570di";doc="0yf5ak4xr07jzlh8s087c7g8rfa71isziy1z13qy8ifv2882p9qa";};
@@ -4259,12 +4289,13 @@ xetex-pstricks-17055={run="0i37r4lk1l36cch6kjz12mfzgpg6hd7n903fzbj9h7mwmjwnrylk"
 xetex-tibetan-28847={run="0r8xgnagsqrkxr0ij0mcv30vhf7c3amyf9lk895lgwsvz6cysmma";doc="0p5l36zb8l3h4x8sjk8cwxj5psvfa4j0kg6jb93sj1ln3yfrwfr2";};
 xetexconfig-45845={run="1253njshiwdayzq0xir9cmbi8syhjb3sc4pyrw9p6kzyqvckkcxm";};
 xetexfontinfo-15878={run="1sc0lm5w94320f5abv2hw2bzqprhk73fjv2lkv380fgkpdfi7pdv";doc="14mc9snykdwzcmq013bs8vzn5w80lblpg05jk57g7fl2z9x6xl38";};
-xetexko-64894={run="03cqwgd87skkn9bxrmka5q0cfgz7wq7l2kln9apq35xhz6qr5hcl";doc="0iizxcn99c9qvm0l5d1724cw3x44w41rhhlb99kh16bjxs42xc2k";};
+xetexko-70316={run="0h689k5qdggf82pm3ccwpypgh25q7nk74m40h4cl3iywlqnixvy7";doc="1x5wc5sgf56j3cm825avjr2bwp54ncingq7qxc95x4w0qpxwwwvw";};
 xetexref-68072={doc="1gq31fz879pjzn1r0ksy9prhvh70wil785p5nsj2n5pa67hd1h5g";};
 xevlna-43864={run="16ayk70kxk2s23r6nxva1hkb1z7aw7zz1zhmcis1bsijx657kw25";doc="09aaf3mpbh07mix5xvr20zybbbrbgbwcmkd5q0rfsd0ac8cm72fh";};
 xfakebold-68929={run="1xmw5mm5r2r0bvqga95lvcyf5y0jf7hc40sgzdnc2dx9n8sizwgf";doc="06a3znvv53c3ymfh53f37anlgj8878n5mzcw0mdjszlg8q4bl914";};
 xfor-15878={run="0m4y0caa22fps0r6735kb9pr2f89z5a8wflzrvpbms4nh3a61zgc";doc="0c0qg60h631d3m9rqr0nwj9772zjv3ch0d2p1ksnqnjf30idydl1";source="16xp7hziirlnd507g9bjvszm90wk9iv6ankq8bx27qkyk1shhjfq";};
-xgreek-69268={run="13hvjamdswy98r0z19hgyq9nd4y7x4j1vq06garkpvq9r7x6v68r";doc="0dn65ndxdg10zfzr2s4ybsalcl3gymhygdbyl0cdzsqkcv4xj7d5";source="1g6vpqia7yffnkzdshhgly1c69fdrlphaziia2sgcp9zc7mdwlb1";};
+xfrac-69888={run="0pijfl77dmcxcjr52h3zg31qz4b7w43js0ydqp8glfakp27z7ibs";doc="1n2d59iii4in5nzayizcsj00f65jqla1v88sx4zxh0fba1fhwrpy";source="15gwlijdlsk85harpy40vd31zz613cd20rcx54xrkq5c15rm3pdd";};
+xgreek-69652={run="0gbhvh3rk466d81g9zw984bfx6mflzgd1wai8i0j2rgkghzm611g";doc="1507kgwd7509m5lyd9mzaj94rk6fcbi6cnngcndwynbrdmkd9l3p";source="1cpkh63qfk4m8766x8p6rq0bkc9nz7d7rldwynf8wzd6lkzyn9hl";};
 xhfill-22575={run="00lb01b27h1bg8h37rcm7wmqh5pc3gz7rkw0l6xrfai0mb8ypq2k";doc="0alaqaiz2dfk4sh4xgrxfrwxgisv2p0bfdz7ppiqmli10al1h2gd";};
 xifthen-38929={run="0ys8yq13vhval5jg9a4n4pv7b3v11w1yh63ssvyx3pnr767ay5r8";doc="1miqc1bfwi2ssl6yp9aqw7ygnars27vks0grpyfns494yimy8nc0";};
 xii-45804={doc="19jhzv5hqzj59wrfcr1dsj6z56qfckax694idgf8arri5lnbkdd8";};
@@ -4283,7 +4314,7 @@ xlop-56910={run="1clpl22vxgqjpzs0ypgak0d6z0sr6hw3gj18r7sgs2q0jf5m6715";doc="1acn
 xltabular-56855={run="12skn3ld5cjd8jvh32l1h86mcqmx03v2w04189rkxh2q90kyjmfw";doc="1lps5w6p2j0c1bszyrbwdfn9r7mii9k9k6ap9s2ssb2rrfzf291f";};
 xltxtra-56594={run="0zpvlsdsrn6pnlfd3aa23hcrjfnnrjivi7r61g25j9sqcx7cmkym";doc="12wp6zwqa5mi5i5ridd2amnr48xrkqmi92xdhh95ydijpzyslhli";source="0vwlj6f7z7fh1vx257v0gnxj29rp3xqjpxlnn156xp9i8i29v0hn";};
 xml2pmx-57972={doc="1d3ralqh0b71scd59b4hmm707yfrz1rj28ni2lzkhbb1ql73bvah";};
-xmltex-62145={run="06rhg0mgxsv4061w8k6parag7fkhrja81aj900mi65bdwmxqxxql";doc="0zjaf8nvsid88nrvzgprwjcm6nirs6glyy25xws57fa9yhza8di2";};
+xmltex-69742={run="06rhg0mgxsv4061w8k6parag7fkhrja81aj900mi65bdwmxqxxql";doc="0zjaf8nvsid88nrvzgprwjcm6nirs6glyy25xws57fa9yhza8di2";};
 xmpincl-60593={run="17p97mqcmy10hql3fvdkkjbmlnylhz852ckai0s45birpk6bvi8p";doc="1k532g5b8fm6ly9whah5133g6yngadb9w6cvf2apwm9hwx1pmnxj";source="14xwxsxfa8m8p2idzbkcjznh46np2fikn511bqw54k4k6991vmx1";};
 xmuthesis-56614={run="05z3pbc9gqfnzp4y4a5p6bmprsr1r63w9l442hgk3pshswc2dflp";doc="0dqmbdz0ydlq1hkz0s3lr12sia1qj7p912carwq4pjg9rrw98z7s";source="1c3a90gpb2siww65yc2l3kf91bf5xvxk9iq1s9cnx1ngxjbs7835";};
 xnewcommand-15878={run="1hqpc8p8bl56gzcmar6m670l6yq5arlh382s3m649lya35yydmms";doc="1r4wlg8368ax3p492qyh0nzxkfgkgvm5bzrbm0jhh9ayk9sp7ryf";};
@@ -4316,7 +4347,7 @@ yagusylo-29803={run="12p2kxrqa4479wrwcbbxsn5hknr1ai9rf1x76psfs43k9fh1pnn7";doc="
 yaletter-42830={run="13xizdiq8dj7iyjw7a9srhr24c1z6g50r44a7hjz0909z3b58j65";doc="1jgv50mssx6g94fh5fcysi884w1iah2qdwb0vrkg6952266gdkvw";source="0byfxy8h76m0jwgd4q0s1ar08sr9ys9jhvsz2l44id321w5276dj";};
 yamlvars-69071={run="05fjkphk70cqkgkd0gg3abnxdnnr4yyr6sd2pbkyh8jkc1pwadfx";doc="04cjg932c22v40fmka7baj17bs99awilgvmakdbcz4mqiaw9zmzb";};
 yannisgr-22613={run="0h61qn97l6k97zbgk0ghqgr4bf8fhbrb037gdskg2sgxb7zsl5wl";doc="1vw8p9xk3aj3lfsq8a2qv7qd00aqx22fs3427j31wnl1iymwycag";};
-yathesis-66146={run="1kbp66x3rh5mlfpakgfyfk34aq5wq7dbg3dqpy3g3cvlfjm5anwm";doc="0y1v78cy20i042fg02qq7ipqzrfn82hrgzfdxz6p68i10fmzpmi1";source="0q47z4k7k55n0wxabh3sjlfdd68nm8bmdy8hdkl0b5mfa5dh35z0";};
+yathesis-70512={run="010vlialskv4wsjx76d0z9d36g3qj185zs6raw0j8mgh3npqbr6n";doc="0hgs94kzl83h0c5971ga2iw30gkr6jhnv4p92lmcz7lp8wvjd12b";source="1zl69x9gy36ac5b73vrrdp084v7m3j8dqs8018grxq3jha6m03nz";};
 yax-54080={run="058i478l85ilq0asix6mkdn1kfzh2abqn9ngar6s339db4h81lxy";doc="06i376649jszpwgvb0bq8wxchjmhwjfvc78pl5q6q1ic2jpkq5pj";};
 yazd-thesis-61719={run="1bhjqd6k4lqk4sypssmrsjl9lqrbha9d0n42qbaq1mg5whpl2b8x";doc="0krsm9s3ym6f3d323scvxn8cf1wjqppglhmzbxwn0cpjq5nl01pg";};
 yb-book-67188={run="01ha50044ph7f19jrpkdlfa4idk71k21l28hwm67l4y1q6fyzrll";doc="0ckn24i29cqnlmvml5w77ws9rx9k380c470kv2b2d88709yzzqgf";source="1j29rgbdnlmi4a2px1y3xmq2lsdrwlmi9l3dqsac1lx45hpqmhby";};
@@ -4332,6 +4363,7 @@ york-thesis-23348={run="04c8g1wkl795caadm8kqfy6kdqqgwlk46lijpmyiiykbb8z54wq7";do
 youngtab-56500={run="18h6a4b4psbm0hjxq2xnk4bkmsa1wd2fvarrzfkhcj01hgn8bz17";doc="00jkdw02iary6s5szh7hf4qjlr7r8y9lfmvlnrpqkhh6pdhsy3jh";source="1hjqkj12jx9imfqm7y1mqdvp1knhf69kbixr88varbh09d6r9p66";};
 yplan-34398={run="1f2kxbb32hxwgin5bn7b78r8sqdj4v1q80sh1c87425zw8jyd73z";doc="1ls02mng1jwihz8s505brmaqcjn4abqys6bwl22dy855bw5rgr5k";};
 yquant-68997={run="0xlwjgc0lwls7zpgbd0v85cij3a66vsv2vwlr6a73s0bjyjy9akh";doc="043yq765f23rdhn3pmdwzy0q3x91hwaawfwakq93acwbx4mqjz8h";};
+ysabeau-69663={run="0gvy4jpi6p62fqa6hdqci7lwghv6a0lm0min20g9jp9h28kmlcwk";doc="04zmbl5vwgjq7w2189yxnad6cfnb5b6z2pkddd3bx8blg8g954vh";};
 ytableau-59580={run="0gfpxbvar3m21pj74j19qnj8qakbknhvssyvfyw61jwdd8ygdxkd";doc="00k10759qihk3330bwfpzmrm9bfb8513w3sak9jlfy5inay59rbd";source="05pxlbj3rdgr15cqfdxviyp2698b7l44rzgssx18yv2a8qnaxylh";};
 zapfchan-61719={run="1753lvv2bq29g43s4chc884n742695agvgal0b99gsrvlkyfp8gn";};
 zapfding-61719={run="17mls8wilz9api9ivsbcczpiqp1f39qy8wa6ajssi8zhnc5lq7zn";};
@@ -4355,7 +4387,7 @@ zref-clever-68846={run="0dgpx323gw46qi45wqvlyhsyw5d60i18bg7vk9ndkb6isvs9pdx4";do
 zref-vario-68846={run="0p7b9pqldlliwshm2xfm6c69is878nj52dgchx26dqhi8lx8l8dy";doc="0ck4h0wdm7rkhcb7bp0cksy2krpziyjykp15p0l02180c79mnp3z";source="12qsz4fn6d3gpxhi5ppfvzqcj04r9f88a5hj9691kqjwh0507zn4";};
 zwgetfdate-15878={run="1fgz3z1f9ifcbrwiq166hnff23gmlgp5vn0djm2znci26bcip4s9";doc="0gda7xd1sbiaaspb253xgl47jm6bcn8hj101m6ih69mxrka6sz60";};
 zwpagelayout-63074={run="0xl2qyq9037fjxwc6v9hz9gbb5fggqb2x93bibvhdb0bik6iw5md";doc="010120lcnx9d9jj116y6vskch3025jfi4v7xh6nyqlvirsjr4hk1";};
-zx-calculus-60838={run="12i0zskbwky4l81imz83aqi2g1jypy23nwv9fyc3rjlm6aarrzrj";doc="08clr1caznfygq0wqmi0w5955birqaiyvmvz5kjaq6qrzi9rwnns";};
+zx-calculus-70612={run="18yzx4q26yavj68j3v3iws35byqmsbc42w4awb0dbsg7cgdg5mk5";doc="1vc1sydsvn5vfra7d26c51kv81kkaqdgrk4fbq32gl5vj6ap2w0n";};
 zxjafbfont-28539={run="1zcyvwsqn2w9x9w79lvi736r2zwrsk2xdk6nrrmkiaq3cakd81p9";doc="0dfh592niw8s6zxmxj1sf8h02s2vz8s2ywd291946bb72xidb4gq";};
 zxjafont-62864={run="0p1zmf0bwd5fpyyz8cwdwc8pnxcqk31570p4722lzwqiplm0azfc";doc="16w7iqlb5zwz8qqyyscmyd0zdzb55n38gf10qd5cra6c161fi7b3";};
 zxjatype-53500={run="1ap4f0yq4cmkz5djy7mpgp32l24jr7xbxd9zc0nv1fvnywxpxfcq";doc="005rr69f433bllggj997rhbwlbmsglaywi55az5j02x0036aj2dd";};
diff --git a/pkgs/tools/typesetting/tex/texlive/tlpdb-overrides.nix b/pkgs/tools/typesetting/tex/texlive/tlpdb-overrides.nix
index 8ed3bb09c12f..5aab1cb95222 100644
--- a/pkgs/tools/typesetting/tex/texlive/tlpdb-overrides.nix
+++ b/pkgs/tools/typesetting/tex/texlive/tlpdb-overrides.nix
@@ -291,11 +291,6 @@ in lib.recursiveUpdate orig rec {
   '';
 
   #### other script fixes
-  # wrong $0 expectations
-  bibcop.postFixup = ''
-    substituteInPlace "$out"/bin/bibcop --replace "basename(\$0) eq 'bibcop.pl'" "basename(\$0) eq 'bibcop'"
-  '';
-
   # misc tab and python3 fixes
   ebong.postFixup = ''
     sed -Ei 's/import sre/import re/; s/file\(/open(/g; s/\t/        /g; s/print +(.*)$/print(\1)/g' "$out"/bin/ebong
@@ -305,12 +300,12 @@ in lib.recursiveUpdate orig rec {
   # add runtime dependencies to PATH
   epspdf.postFixup = ''
     sed -i '2ios.setenv("PATH","${lib.makeBinPath epspdf.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/epspdf
-    substituteInPlace "$out"/bin/epspdftk --replace '[info script]' "\"$scriptsFolder/epspdftk.tcl\""
+    substituteInPlace "$out"/bin/epspdftk --replace-fail '[info script]' "\"$scriptsFolder/epspdftk.tcl\""
   '';
 
   # find files in script directory, not in binary directory
   latexindent.postFixup = ''
-    substituteInPlace "$out"/bin/latexindent --replace 'use FindBin;' "BEGIN { \$0 = '$scriptsFolder' . '/latexindent.pl'; }; use FindBin;"
+    substituteInPlace "$out"/bin/latexindent --replace-fail 'use FindBin;' "BEGIN { \$0 = '$scriptsFolder' . '/latexindent.pl'; }; use FindBin;"
   '';
 
   # flag lua dependency
@@ -330,14 +325,14 @@ in lib.recursiveUpdate orig rec {
 
   # patch interpreter
   texosquery.postFixup = ''
-    substituteInPlace "$out"/bin/* --replace java "$interpJava"
+    substituteInPlace "$out"/bin/* --replace-fail java "$interpJava"
   '';
 
   # hardcode revision numbers (since texlive.infra, tlshell are not in either system or user texlive.tlpdb)
   tlshell.postFixup = ''
     substituteInPlace "$out"/bin/tlshell \
-      --replace '[dict get $::pkgs texlive.infra localrev]' '${toString orig."texlive.infra".revision}' \
-      --replace '[dict get $::pkgs tlshell localrev]' '${toString orig.tlshell.revision}'
+      --replace-fail '[dict get $::pkgs texlive.infra localrev]' '${toString orig."texlive.infra".revision}' \
+      --replace-fail '[dict get $::pkgs tlshell localrev]' '${toString orig.tlshell.revision}'
   '';
 
   #### dependency changes
@@ -389,9 +384,9 @@ in lib.recursiveUpdate orig rec {
       TEXMFCNF="${tl.kpathsea.tex}"/web2c TEXMF="$scriptsFolder/../.." \
         texlua "$out"/bin/texdoc --print-completion zsh > "$TMPDIR"/_texdoc
       substituteInPlace "$TMPDIR"/_texdoc \
-        --replace 'compdef __texdoc texdoc' '#compdef texdoc' \
-        --replace '$(kpsewhich -var-value TEXMFROOT)/tlpkg/texlive.tlpdb' '$(kpsewhich Data.tlpdb.lua)' \
-        --replace '/^name[^.]*$/ {print $2}' '/^  \["[^"]*"\] = {$/ { print substr($1,3,length($1)-4) }'
+        --replace-fail 'compdef __texdoc texdoc' '#compdef texdoc' \
+        --replace-fail '$(kpsewhich -var-value TEXMFROOT)/tlpkg/texlive.tlpdb' '$(kpsewhich Data.tlpdb.lua)' \
+        --replace-fail '/^name[^.]*$/ {print $2}' '/^  \["[^"]*"\] = {$/ { print substr($1,3,length($1)-4) }'
       echo '__texdoc' >> "$TMPDIR"/_texdoc
       installShellCompletion --zsh "$TMPDIR"/_texdoc
     '';
@@ -410,7 +405,7 @@ in lib.recursiveUpdate orig rec {
     # make tlmgr believe it can use kpsewhich to evaluate TEXMFROOT
     postFixup = ''
       substituteInPlace "$out"/bin/tlmgr \
-        --replace 'if (-r "$bindir/$kpsewhichname")' 'if (1)'
+        --replace-fail 'if (-r "$bindir/$kpsewhichname")' 'if (1)'
       sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath [ gnupg ]}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/tlmgr
       sed -i '2iPATH="${lib.makeBinPath [ coreutils gnused tl.kpathsea ]}''${PATH:+:$PATH}"' "$out"/bin/mktexlsr
     '';
diff --git a/pkgs/tools/typesetting/tex/texlive/tlpdb.nix b/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
index 7685359a3a23..9a69e03036c3 100644
--- a/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
+++ b/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
@@ -1,8 +1,8 @@
 { # no indentation
 "00texlive.config" = {
-  frozen = false;
+  frozen = true;
   year = 2023;
-  revision = 69413;
+  revision = 70616;
 };
 "12many" = {
   revision = 15878;
@@ -236,24 +236,24 @@ accsupp = {
   version = "0.6";
 };
 achemso = {
-  revision = 65103;
+  revision = 69638;
   stripPrefix = 0;
-  sha512.run = "c611a28933960c49f383ddad8dcc8486403eba1e84e981d2221a8e8b6db607dadd93e6b58ffab1c0bfc19ef423b639c673693b113d7e158136c5c30555f68508";
-  sha512.doc = "e03343efd2179c1fb094fc5b7f46e078949f3ac75c311aa0559e9c3364c3178f3e8452c9a87b4952a76982754e57d5668970f8fea9ac508756aec45b6e11db38";
-  sha512.source = "ce918746855be7450b253d7cda9dd112fa40314538167deec1b86a58ff6fd69b68d2712789632b332acb1ce92dfe431346b57fd51f92d04aeb2540f4a35cc0c2";
+  sha512.run = "1a073188cef886e2eb5c6090a2f887d5c58c04d535981d1926a1b389130092bccb614c22b8b5b675d6d2d49208e4d05ae560966db39443cd822c59bc41e6af8e";
+  sha512.doc = "b26169bc393110b3805c4dfdd0fbb1838a469b6dd9664914a55eb7f1c031a4cfbca7e96cdbdaaf67329a48e3225e104f5d6a46b0b52384b77835a049151f6cf1";
+  sha512.source = "94cab70cfba8492f44a09a3b94e411cbd5b32f3dd5b9a17ca8ae1ff5bb6c5ac6c8a882f4fc94278bb267556ccb43bc981f24e4b6b47b5c9df90c81cb44005029";
   hasRunfiles = true;
-  license = [ "lppl13c" ];
-  version = "3.13f";
+  license = [ "lppl13c" "free" ];
+  version = "3.13g";
 };
 acmart = {
-  revision = 69242;
+  revision = 69721;
   stripPrefix = 0;
-  sha512.run = "c51a10fb637e62857d723f103fa9c28e2d0257ebf8a5eaa9968c32446bebde6d49627cd1dee965d2e6832575fe54438ee62585ae1cf833af93537b7ed3521cd0";
-  sha512.doc = "fd0ad303a63510061e6e43c64f77f9bbc27dbfdd6011195f5ae64d5ca0e7263aed3261853652dab1576a614e94de677f37a5a4e165d8d4d525a61b86f023b2af";
-  sha512.source = "b8fff464e69e493152c1fbfd7feda02471f3e7a8ce3ed9dcdbc2b43d8fa30a587768d7c63754dab2a8b84969e5671f2426b748297ac98096fc323f9937dea963";
+  sha512.run = "e40a361687d217e3dd3bbf1998c4c478e14cc758d3ae3d96ca19433b5cca576dfb93a53324253a2a282935d4b2802a103d36bd8b6f507f151187493c4be0e56d";
+  sha512.doc = "1b6dd7a2c478a4476286ca897b13b4ac005af6eb6201e53a173dbbd11fbd23a95d7f3b33ec28a373ead62ecf8a45c351fd8521376b803e321ec02e7da1ac7f58";
+  sha512.source = "f24476dc2ef09aaba2ec078e0895f9e6f1411c9c19d9703ab318eccb16ee04ca7e97a60c1fdfad13e89d61899d2fbd4d06108651512ea75d060448c4e7064e61";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.01";
+  version = "2.03";
 };
 acmconf = {
   revision = 15878;
@@ -405,13 +405,13 @@ adhocfilelist.binfiles = [
   "adhocfilelist"
 ];
 adigraph = {
-  revision = 49862;
+  revision = 70427;
   stripPrefix = 0;
-  sha512.run = "6a4684925e542a6ab0e3b97280059dc47fc892efdb99858370dca9dff91074d98030a93f964a5172bfa95a6dbf41f7a639977b0559332178ab8e4ca9dcb20e10";
-  sha512.doc = "763f94d22e939c255cb0b920183403d7c753dd4d77483b79f82f4a302375bee4ea42357091866ddc392b554c6dfb707c624fabfc3f92fb6ae07853e3ddbc8594";
+  sha512.run = "38a89fee26ed097a2395e43a86ddeb8d9b652e758f72413ae0f3a35b3130a1a742a94c65324708112f3d27b7317e01c8da2cf0ff86fe56d7221b92a60e7ff809";
+  sha512.doc = "c154996a4370d31e2f596a0a463189ae64c7f1b829b5269b8bb6c229ebbea888e6153d43f12577df7ad9feca4af2d3dddb23af7e03a63e44dcb88693873f546b";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "1.7.1";
+  version = "1.7.2";
 };
 adjmulticol = {
   revision = 63320;
@@ -610,17 +610,17 @@ akshar = {
   version = "0.2";
 };
 albatross = {
-  revision = 65647;
-  sha512.run = "3ca4c3ff3fdbb1b865e62fa96e984f94761bbce1de24cf09d7e5bdee3b4361c6536cfbd2119aeb6aa5df842228004cb78a27e2aa9e5e957cff59ef82b9fb459e";
-  sha512.doc = "dfc9cb6a72ec80fe5f240a8c50c8c98167d069cf13e3502ba281991deadccd094e369a2ef2ae6b089064de77d937c45ad3a3dc70c06fe6fc5e39190b7d652189";
+  revision = 69879;
+  sha512.run = "6bb925eff84c6d3fc3ab1b81ae50cf5fcafbc8dcadd5ae6076bc1280c427ed03896e8dcc5ccefe05e911b513a5da470312128c488a694c602a2cd9b3a94148b2";
+  sha512.doc = "d78c18b44d3eb60d6e991df864aeafd97366023aac7a732bbf7c67d0d677a76e0a89fadfba515cdfae1f1f7705323413bfd27100a3c09dbefa41918c3e29fd57";
   hasManpages = true;
-  sha512.source = "93b72dbb855302d42faed5be48e2e4f11ba7b91212a296eac0cda3f13c0eb89e857decff834f7cf05b9164d2ee2ef8eb6174f077026b285dded75e10c1086a2e";
+  sha512.source = "49ef73f529b8484def315efb0f9bef230697f532fd8138b42404ab5e98a880ea3d7e4ab660a9b3e83be73690f0a762ca09b1b9c964f9d461a0022853006d76be";
   hasRunfiles = true;
   scriptExts = [
     "jar"
   ];
   license = [ "bsd3" ];
-  version = "0.5.0";
+  version = "0.5.1";
 };
 albatross.binfiles = [
   "albatross"
@@ -881,6 +881,16 @@ amiweb2c-guide = {
   license = [ "lppl13c" ];
   version = "1.0";
 };
+amnestyreport = {
+  revision = 69439;
+  stripPrefix = 0;
+  sha512.run = "9fb76037c976d48259609295b876a256e5b72e611c7ece52cbc39b7df607d58a90ce2b0a0ff33d816c08f869e911a2cf979b8635a044697af8331d8769382be5";
+  sha512.doc = "e3a3989cd630e3776bfc103d5ebd7fcdd39464e49338b638b165e1c486a7afb58ebc907e2fcaaf008be5463f3496e66aa36b0bebea87d1d945a0497469f36eb5";
+  sha512.source = "bacce1f1ab7f2c6220c1fb59ecd63a4dc93405e57654390f377c5b6b511a5f732198e869b955211a752e94aa8c1601c4ea13d3d0aea7324a3ae38e035ff3e43e";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.2";
+};
 amsaddr = {
   revision = 64357;
   stripPrefix = 0;
@@ -1113,12 +1123,12 @@ antiqua = {
   version = "001.003";
 };
 antique-spanish-units = {
-  revision = 68998;
+  revision = 69568;
   stripPrefix = 0;
-  sha512.run = "d5b6208afb1e098a66ecb7f4f536d4b4f2762705bfb142e66e4f83e38670b88db1be5f04ce3c8c1f1db7feea8ac3d92bcbf5a1ff099f87a01f05503c881c92d4";
-  sha512.doc = "b25eaf2cdbddf60950478c26874ff99e62f9ca8b726cf533958a723652c56e32e7279cba9c4a861d670a6933639618902dc914102af1dd8e672ea9a1b38ae67f";
+  sha512.run = "a1203a09f77e3753fc28d632abc1c7d686085cd016acbab38a767b85a815d0dd05006e49b11524deb85bb8a20a3a8f413917529842f850d4efbe80b38c216ee2";
+  sha512.doc = "4c4cd96889c2f1db9766099de6d149963579d27256f44d555023e205ca09617b570237e7eec2b5523c61af4d1124683ade9eeed4a5fb96f140423176ef163cad";
   license = [ "cc-by-40" ];
-  version = "1.5";
+  version = "1.6";
 };
 antomega = {
   revision = 21933;
@@ -1396,17 +1406,17 @@ aramaic-serto = {
   version = "1.0";
 };
 arara = {
-  revision = 68431;
-  sha512.run = "142cbad66e19afd1190d4ce76962a133b6340a72d6dc5c77b4ff6898223a00bbbf4d4a9f1d089e5256084e6a277314d904790f55e35143a07c217ea2453c2238";
-  sha512.doc = "cbac6e45e0a580887ea8da3fb1273152884590a7b4a3dadf03676e89f9af056eb1f276e74d0445b059382afc6a7239edf8f9dadce549d3a6b55b7aeb244f63f8";
+  revision = 69878;
+  sha512.run = "c18444518e8cb66b44e49cdcd944895b0667d934460d0146940c87813e0c9a372fb273882ea1de78d4fc869d69ffb2ec1a41d863cd977891ce7937134464df73";
+  sha512.doc = "372e1053717395e960e2447622d262ee2b07594823f39fb845f5640d730a3590441aa5dd509e1f61be00abaa6df3ad20e953c66b7c27829d25b9ac68d0aa4423";
   hasManpages = true;
-  sha512.source = "850f8dc8292d391940340db96b5d53efd145924848f575719503f7cbf7c3dd1b87d274fa31cefd9ff3107fd2424c65b47e79abe6fbe3798f5c57f14c7c0960f5";
+  sha512.source = "0cd47d01d950c9ab685264027ae92c978a5539dc67b937d25e36a60e2a1ae50760f1da73be7e39132d74e5e4ea751c0a7ad9e9e00097bdfe270d235d87b64502";
   hasRunfiles = true;
   scriptExts = [
     "jar"
   ];
   license = [ "bsd3" ];
-  version = "7.1.2";
+  version = "7.1.3";
 };
 arara.binfiles = [
   "arara"
@@ -1476,13 +1486,13 @@ arimo = {
   license = [ "asl20" ];
 };
 armtex = {
-  revision = 64182;
+  revision = 69418;
   stripPrefix = 0;
-  sha512.run = "853eceb3256407c75cf7d74a514ab8c76f44229c80e740072c3fe2cff17eb47a99b683d089a30c759e6ec5fd14451ee9c94a290cc2606248b6e396f6ca7de5b1";
-  sha512.doc = "f26c90f18e534735f910f8ea34bce63f21bcb029b6b621398109adb4d99e6ef4470e76037a16b6a86b8ef8e4331267adaf3779772aadb1009d4222d500e26114";
+  sha512.run = "7acac8416e424db754f1e02844e175dc76c694d46efa30e1e29d855cbe3ffff1a50b95c38e2de2e88944bb11920cdf2295254b3855b5d6e13bfb930665cda8c2";
+  sha512.doc = "83b050d9bcfd2d4b7ff54458a559401ecf5abfb020c39b7b7c29f3fe9cc656980a63354df549ff4b93ec4ffb382e60578d5657c268ffb7282dfa5e45fc66539f";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.0-beta4";
+  version = "3.0-beta5";
 };
 around-the-bend = {
   revision = 15878;
@@ -1676,22 +1686,22 @@ askmaps = {
   version = "0.2";
 };
 asmeconf = {
-  revision = 69228;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "1953dea9ef81dc53b06888b912a67de2427448d9d3b38ddc75ebf3714912ae0092d372f82e107b4bc312c0af032b73e6e056f4e64df29d76d01614ae339e9397";
-  sha512.doc = "fe442954eaa9726fbd7b1a1c58f799fb0c8fb0cff55dc0eeb7930a131c77470aa87db26c3178eda57d1fb3c3953178088a4fbc8d6e8260fdbb884b382c08883a";
+  sha512.run = "93b55a406a9b7b1e652babc788f9674ba27f29036aa16c25a3e531ff63077588807914d23c865eba55f73fbec04c3254eae837976591481534f773d72412833d";
+  sha512.doc = "2c70973dd40e2afab5bc777c6a7b64d3c86a09e15c62b2f719410de6d05925534071e91ebdc482928382602d49d54b3ca342a7886234a15ed3b54ae761f51208";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "1.36";
+  version = "1.37";
 };
 asmejour = {
-  revision = 68629;
+  revision = 69722;
   stripPrefix = 0;
-  sha512.run = "a2c37b69e147b7174335faa13522e00a2decf12f6a0fff45c6074c27299a5f71b80181d81265a1ddc7169e2f7652f60250e94222dcef1423de98ec30576aed62";
-  sha512.doc = "1a788cf31b7ef2a1cbf0a7d439b36ad80c786f4719a6d6138120d4fbf22208fc151300774da5718389fe22e0dea83fc8d9b41f0e96b1bb7426d0feab38b2e4ea";
+  sha512.run = "11e65ea5fa72880c52c63de1a7214de9322c26133722eed08bd54fba00f58f309f4d1a7fcb4a0112c1d66ca6be5fa3868f6779de8c47b660a143bc61855a47c6";
+  sha512.doc = "3af8026c3e0a77ca0f4ba99901577d253ac139fe049363994f56480cd6177524cb7a7dd5a4c59f436620a089ea08f2faf048957a2d2290800b71bf8a43d964bb";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "1.21";
+  version = "1.22";
 };
 aspectratio = {
   revision = 25243;
@@ -1757,14 +1767,14 @@ asyfig = {
   version = "0.1c";
 };
 asymptote = {
-  revision = 67300;
-  sha512.run = "327acc6f4d21a2babb4d10ce3e888e95027e11ab0466e5e98ef3fc8140f0553cb95e3f961534c614934522e7c995078ceeac10a7a62a64801edcbeb090e54bfa";
-  sha512.doc = "38c4adaaf073eee94398ea11e7b9fe671278dc8f326689500abdc1a5ddd34b5be438de6686f830928e2cf879c1dec6c332e9c7228ebca1fa0c31284593c2c619";
+  revision = 70583;
+  sha512.run = "8c147b714c3e57c569d9d93815ab6ebbabbd9be3a24b0dab724c32075d51e42f49f326de2babdfa6894056948e5904ed1b86cef88742d000e8b4e6244be868f9";
+  sha512.doc = "a81d20288e4c7b30c50fc32e5e28a30b5fa81ad01564c5935489c2b8e4749bc13871d7551927345452315d18f81102232ba35dc3de2a7415bbfb14d7fff12d83";
   hasManpages = true;
   hasInfo = true;
   hasRunfiles = true;
   license = [ "lgpl3" ];
-  version = "2.86";
+  version = "2.88";
 };
 asymptote-by-example-zh-cn = {
   revision = 15878;
@@ -1850,14 +1860,14 @@ attachfile = {
   version = "1.9";
 };
 attachfile2 = {
-  revision = 57959;
-  sha512.run = "57ef4d0c2de0cb854bb91b14a55921851a4abdd60221589f0655afc64a01d4bc672380fd572e0d451b6bac7ffd66f407b4ffab5f0fa1092dc8fcd809c81b23bc";
-  sha512.doc = "3033a58688a822f74712d072be3251c58b96e9e370859effc8a4ff7f8b9db98906c471a6472b7b9ab4b0d9725a9b53918e8b65d5bdbbed56e737addbe582737f";
+  revision = 69505;
+  sha512.run = "d741265618d75ab69a28983338276abb51382d797664bb9aae5876e054307e438b854b1981245a49b3b00052dfe6144993a465e56f1e9e1abc142d9dc78512de";
+  sha512.doc = "423718fc61b589d83da1cc0188667c8253b19d9a255f867a8c8a56e812d2fd04046aa5859657a0af88d5c377dc0b0f0fcb2ae8058e7e69ad9ef2099d0c8a7d5a";
   hasManpages = true;
-  sha512.source = "abd6284061c0f936df92479cd18c0440d654a8f6ca1d610f8763fc1af6668b3eb3d4efc2f4ff33a5b9192844083e55605fbeee2fe1bcaca8079fabf498a702fe";
+  sha512.source = "72f0f9292fe0588d4bb9577e42002576442d3ab19b3ba8eadadb6c874dbace9065a3e74a7818af1055bfa09bc9cd74d734152c95710e3951166eec385414aebf";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.11";
+  version = "2.12";
 };
 attachfile2.binfiles = [
   "pdfatfi"
@@ -2142,14 +2152,14 @@ b1encoding = {
   version = "1.0";
 };
 babel = {
-  revision = 69343;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "8c4b15316808e7de5c039082ecec99cb1d2ab72909cb5c85899180e55d7d425db4440fe6fa9b9f801345c34d55fcfaefba2296d424187bf6f809ca1dd96245dd";
-  sha512.doc = "5f6a02d13ca3e1104587595edffec7735d84ae5b4686692db04325a1bf3b82a45c08c8fb94d6cc79b0da02778e30f7eb8ff0473fcbb30e260022c647e4a8fdf3";
-  sha512.source = "fab559d1876e220830972bae45ffbc2f25c1ae0c0d16f0ba4b857bac5a6f92316bd45951b2fc4c718f0fe3947d88afa0aeaee813787b23040bfbffaf88018850";
+  sha512.run = "31b2c697f13df80472f5a209bb3b23ab7458e99c7329728ce767c1c116b7706465928541bb5b2f749b6e6d1ced4f43b92dd432e42c03660d18271a1bb243b2e9";
+  sha512.doc = "fbe053f25e6db1df9856c03813070842dac62bb9e4e541a8ee29e990ea52017824cb260d8fac4f8a9002d8d07b3dc0726795659b73e7c58db3c9f6b8b84c8b05";
+  sha512.source = "f71762c2f2062e92e74ad661bd3088b8e1102320c5e54e68be419b8f96561a1e93399204bb639e3416a081c651cd5cc198995d42556655772831766eca484da9";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "24.1";
+  version = "24.2";
 };
 babel-albanian = {
   revision = 57005;
@@ -2312,14 +2322,14 @@ babel-finnish = {
   version = "1.3s";
 };
 babel-french = {
-  revision = 69205;
+  revision = 70261;
   stripPrefix = 0;
-  sha512.run = "ed7e71eb62c61cdc41c23a0e351d7f34b3b90fc245fd56129325774d64755e1bf42e755a295eb99ff39ad300945c3b32c514eab53a338195854fd9eef2c2c347";
-  sha512.doc = "fb42614164d9231fd23672f9f548eaad2501d416c51c2a08c5aa47085111140f1fb1f3519322d17f1b13601238b6167dac92669af43cee67e0a8fef0934d2030";
-  sha512.source = "8ccfec652d691199d0e6f51be21e6b4f77f49bcfe83c168a072443f7c16f518aac34b3221efbf2bfe1f8e5ac30e6db22b556bf2a4708d232b077aa6c52d190cf";
+  sha512.run = "5a0ad21862209980813cf8b6a89884ca977bbd2036b3e9c6217d2ae0f69f4c0e9567bf07afa4c9e75cdc6959b3169f270de38c9307c531a44b5ba07707c2e1e0";
+  sha512.doc = "2af045bb96ec288d4c314da7a3ffe82c3bb3e82ca0919a272fc43cfd5946a379f951c4a019c93f0af07da647c852f25af2f026310a435a82c0888f96c84cc263";
+  sha512.source = "a03e25b8f02430e117584880e2ca29802459a98dde97b380b71ffd4d2eb4c6db92cff33aea9c2bced5823fb5ec4d06b5ea428c99da85fadf9f16f3a3e5793c8c";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.5r";
+  version = "3.5s";
 };
 babel-friulan = {
   revision = 39861;
@@ -2351,14 +2361,14 @@ babel-georgian = {
   version = "2.2";
 };
 babel-german = {
-  revision = 57978;
+  revision = 69506;
   stripPrefix = 0;
-  sha512.run = "0d7ee8aaf0b8df0040e3c7b6e41b999e21d79502dc084ef657392e2e4704101b49ef7b99d5b8059a6f271683c01a09ab19db3ec2a9c923a8bcdd14db819f6107";
-  sha512.doc = "59dbbb949ee4390c9891b0b2c44b93cf81c9b5da1be6c75ec6aa3b38a657aee6e28e7d02d0e188fa37c15647f40e553f13fd0f18845f4a8a3dfd9eb169886fb2";
-  sha512.source = "64880138c89fae929df6d7aea149ccfa79c7ec558ca307cd28218d891ae6f72e9042358ab0038b1850aa3d30b2d7d80eff2a60328ba37699f68c3d00cd341611";
+  sha512.run = "372ba15d67ae4a5299a8d193d4fbe1c01a89db686c4d152ce2fef05088be63e7d85a7cf4fb712629d1ec8b21517bf3881ad3de947e03e127af940714a6d059ec";
+  sha512.doc = "e4ca225a4fcb681c0b59d833fcc8a3781f1315adaf26e7db62f85aca145028f9f5f3bc7a19b7909220ebbbcbd25d2fdf2136d0f1ff5a5823e63c3362a24d9750";
+  sha512.source = "786bf7b892f48e09496c99b998c692f8cbcd40c2727700291fe1cc35518c3acd1caaeb0841bf3b1d05c3ed931aaa0d7ee6cd564f40b41e30fbec0f42eac48da1";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.13";
+  version = "2.14";
 };
 babel-greek = {
   revision = 68532;
@@ -2508,14 +2518,14 @@ babel-malay = {
   version = "1.0m";
 };
 babel-norsk = {
-  revision = 65093;
+  revision = 69603;
   stripPrefix = 0;
-  sha512.run = "e5ca8c827ddc30ca33b1fc3da98e6576938aef4041d56c77b329ba69851a6576f4315228bb5188dc09aa3180890f3545d0b24f31da89c868ea11e92263f2a9fb";
-  sha512.doc = "f67830ab2e6b46370ad0737b64149ee8e0c1c9ecd68920ecc0ff43518335e884941b4469d91d0202f6a7927c1e5eb44507a5e43308effd89e1f1846f80de5355";
-  sha512.source = "48506bcb93e7f8cb27b8c5e6257fc1e8247db04c94de6b9710438179647bdf6f1d9a0b5c811156bc79fb9ae301493df49536335a9b8fd939ae0852d4745843c8";
+  sha512.run = "cd5511b9ffa7a009cc9b330fadda4edbd431083a3301bd4722d19d9c9331cd160fbf79d0e246feb2d4bc69c6e2800931c4e697b9a052f92a424f5f59841840ee";
+  sha512.doc = "764700736d45202ac46553014d8382a26ac962d964bac3fbe9d1c90f341b99fb1dbd6a44348267d55f75228bd155aa70cd0080870b627910ebf0df0bf344e0cd";
+  sha512.source = "50e6bd75290194441785e04a4940c682f69896fb5e6d0e96492e0565f413bd6f306ce90b228f1a3abc9a88a2288e8db80a87c443a6fa1cae38f5b896c6fd7ad3";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.0i";
+  version = "2.0j";
 };
 babel-occitan = {
   revision = 39608;
@@ -2587,24 +2597,24 @@ babel-russian = {
   version = "1.3m";
 };
 babel-samin = {
-  revision = 30288;
+  revision = 69604;
   stripPrefix = 0;
-  sha512.run = "8a9e832e988da76ca26d87ab54438048d3d76cf02027ac9120d1277096d2495ece671607d32182cc5f9a61032b1ec33695f6592796680aaba0b65c142aa8a43a";
-  sha512.doc = "a8d43e73b4ab86378c5e3d2b402298580dfaf19afcce509ffa8ac747d68627c21b58020dd823528073240e1a28a2178157f9752d587286a0168fc3047cacd0cd";
-  sha512.source = "2e0fe9724a55daefdc3196fc2934d3551b4e738be4d6940a25a091c173f220f2853b077e5534ac20f868954e360e547fbc7d622507d227b8cb0bf7e074e57f48";
+  sha512.run = "bee2cb83522430ff8bc8e65513d2268a529a041b85b10315c4902749d840ee1716db45df56f259a7db726a94147fdebfa573e99b9e654c7ed4df87f5d574877e";
+  sha512.doc = "cf8a3c56fdc0474fbb3080743fa852dc22ea4f1c791f7d9b4779faa232442a22b46662c92e61bf84953c8312ae9fbea859282799b393701b0c176e4d23edfec9";
+  sha512.source = "85b57da2d3bf5dba4c9f02d10dedd4400696ba1827793e81f83343fbecc15e5d2fe507138c3c309c5c8b02f0e868606e344c05db9dc9c84b032e4132c65996b3";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0c";
+  version = "1.0d";
 };
 babel-scottish = {
-  revision = 30289;
+  revision = 69610;
   stripPrefix = 0;
-  sha512.run = "a2c708d9e116933fd00619fa8d89e30aecccbfe162c96eac22055bc442276863e8957481787d94a75507c2662ff4fcd13760b454d12b811dc4659205cdf5825b";
-  sha512.doc = "b32687935329933a733d239a58d7cbb7c4721c4fe37c703891547c2e6e82503235a0420890a9f025cb81a5c86148bd5ac2301da20d538781fa6f2831939c8009";
-  sha512.source = "8ec0b8a65d433f978db671a344ff22263929c96b742ab7c11c0b47eb2e2f2d652064fefb4a19cc3f91a95cf0abe3450574a3381917fbd239be1bc89d002f99e2";
+  sha512.run = "16632367173512a1ff0d678334071893efc91d9ca16279075a63b84acabaeaa8cd35263f56e6e3251cd57a77bdc9f0613c34e60f0acc8de14f4e0fafde751d81";
+  sha512.doc = "725a988893fa1cd3064136376de3475fc8da63993a40c0c63165b5c13fb4ae15a1ab856e2075e05d3a4e492d95d1aa12288b808ac3a1a15ce539a35edb289aed";
+  sha512.source = "cb640792dbfbe7733238aa67283b9ba954456246ad7ebfe0ba65bab08060e06a5dba7441fb2e6cb7c421584f8377273469477a5d1b6dbbe2c593f844aca80ae1";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0g";
+  version = "1.0h";
 };
 babel-serbian = {
   revision = 64571;
@@ -2637,14 +2647,14 @@ babel-slovak = {
   version = "3.1a";
 };
 babel-slovenian = {
-  revision = 57666;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "159e3fd820c39f64897dd26ab589cfb77a9d254cc75a0b1988d164cb9c989bc55ff2320d5d21b698928292a92ea6bd85b9a6cc489270ff13c2c13842d84b4c6a";
-  sha512.doc = "8df52574e61776f1d83301caad0f0a9e2042c88048034c6bcea23c4e08155fd1166de4c76584e3d462c5b1f914fcd38fd1eceb740a54e50dc2758ee892778098";
-  sha512.source = "3b630ef8368ba89c235930e9815350bc83331c82230bec549f86374e243c28bb0bb6615f55588245551add88d16284e90c6339ea548fc52b1236bd654b2a5d98";
+  sha512.run = "b17956aa2afda17c6ece09f372ed1777bfdecf358fee13260da6f73f971eecd5d315770d01e83def27edd2b06828065ba1f488bc3ee879539691424256c39ad1";
+  sha512.doc = "d50461bfd4b57dca583f53fb1afb1ac97382cfee1651d55538017d2990b331cbb471a060ad26fb86965f9d6b00f15da39011368bc9162120b188ad505d7620e1";
+  sha512.source = "e7ee24b9f25668e55a539bca4157b373303f36d4c79100e120e7f991f2cbd42efbd8d6c3c5be7a69f7468eee5c30330028175fce4efc06f779900da6ac3085cd";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.2n";
+  version = "1.2o";
 };
 babel-sorbian = {
   revision = 60975;
@@ -3015,13 +3025,13 @@ bchart = {
   version = "0.1.3";
 };
 bclogo = {
-  revision = 39364;
+  revision = 69578;
   stripPrefix = 0;
-  sha512.run = "9afc02338b4141607cfd50d7678832304339d0b532464ada6fbc22c58d06dbc5a0793098c9e24617ba5296c3f7b22bccf16062017701608a758e4a26c05f12a2";
-  sha512.doc = "8671f8095005a0abec84a316da59f914d19d8fe0f4d33b13e73d6ddabcefd3ec7fedcfc8ce9dcf2ed3380a129f58bec16f73694a5d2769a18618142de93be38b";
+  sha512.run = "d3f060c91f1ec7f8c836e22b21dd735895055873807690c4d8fd3b90652a7f6f1648decc23f66a6d51c4970a27817642ea6e66b74b2affcf5c938c4707568018";
+  sha512.doc = "e8ec77512bfbfa00de03585ac9b0b47a03d60ab27f7a10303efa3e37bd285c8c0d959f3a5a013a300022121da6bf4c07d603df63faaf0fb44013313f8369aa5f";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.1";
+  version = "3.15";
 };
 beamer = {
   revision = 69316;
@@ -3165,13 +3175,13 @@ beamerswitch = {
   version = "1.9";
 };
 beamertheme-arguelles = {
-  revision = 68659;
+  revision = 70209;
   stripPrefix = 0;
-  sha512.run = "e8b070e76ada96ff6a679c6c7d553d7ff67d4cc3fc792183bf68eee73fd9be3059eda0f0f7fe970655b6debef3af018b15b3a408bd494bdd506bf187d80055a5";
-  sha512.doc = "c9f34943ba6a1233f24be443a56abe9aabd51dfe7c4531ffbe793ddbcdeef637edf87686934b09e78bcf3213d4530165bf28646e86300ce790b94f0ad8fcc7b2";
+  sha512.run = "aac91e94a49c87b99e888542cb1d0ca043f6dd1513087daedd538d755989dc19f7c7201698573d3c3d9919a434b0d39d56ba6d33e22c240fd6579ecec6f215f6";
+  sha512.doc = "23219c4b8718a1d4c247ae2a733a3b371f3c96796ca0e020088fcb47b4d136670377a4f4b746e9ae260e6e32ef58e86edbea80f71716963272204df312072583";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "2.3.0";
+  version = "2.4.0";
 };
 beamertheme-cuerna = {
   revision = 42161;
@@ -3201,13 +3211,13 @@ beamertheme-epyt = {
   version = "1.0";
 };
 beamertheme-focus = {
-  revision = 62551;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "3716ecaa5471847bfd03dcc6b35fbd7d75497798cc289be1c3fd543d4bb063d8ee59955da47f91e5a8e8213c2ec0e5052df9dbbbce5bba702af4fe347a2c60f6";
-  sha512.doc = "b95f069cbf78cfac26bcd110de989a1609c891f3fde3e13f43c52b19e439a3915b034a25e3759b51bf5b98cbccd188f735cf8762453416d0350ad7fbdc652a9d";
+  sha512.run = "bb09ca551108dace02506987f246f1de4672444e8d6ca7f53bbf1cbfb573a7e07b3d2f937b4724821b30b60f1c63b360e200754957289c95379aab06dde14a8a";
+  sha512.doc = "5ca583264ee68cec6df53f5e4a32d4c3ce408372fd3ec4c8ec74f2757ac9f5e817a23ea875760994fd7e45a8cc2e45686251aa785adc960b5730c5059ab353e9";
   hasRunfiles = true;
   license = [ "gpl3" ];
-  version = "3.3.0";
+  version = "3.4.0";
 };
 beamertheme-light = {
   revision = 49867;
@@ -3319,13 +3329,22 @@ beamertheme-upenn-bc = {
   version = "1.0";
 };
 beamerthemeamurmaple = {
-  revision = 65698;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "d3ca653e4d21c08077e6957d2a2ea56f988100aee0c443428328506bd5cee2a739045c99c7373a8870693d76f844dc5ea192a1a69bae197c09eee4ac212501cc";
-  sha512.doc = "92c71d9ce3a124009ad3d72e4b46c8ccb3e49d4eeb193d53080a08f3917c065da44bbfe2ac1ec80fb9105cdf1e3a840e7df065a7b28151771fb5acd33ca66174";
+  sha512.run = "c325ebeec7588caaf8966e9b8a71069f1613d694537298afeeb8d01c6c83c7991e874bc5bd070e722e15ac83eb339581897a501dd187ea5ee4919ba9c14fb541";
+  sha512.doc = "371597bc1aeaa9c43fbef6b68234252535be41f442db6e6785605723b099b34e8cc01b1062ce1a831e62333f57673f49462eef082541c982b7bbfbac119a19be";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.2";
+  version = "1.3";
+};
+beamerthemeconcrete = {
+  revision = 69528;
+  stripPrefix = 0;
+  sha512.run = "84f2729d5f5197d2dae7fe422f535df1f2ed14f2ae936f7c080d93f7aec2b949290406f31309fc76b21a4a80de733aadc6319a0e54a63482ea97ebc4bff773d7";
+  sha512.doc = "bca6cbd0b51e52446fa179d216a3368b5bda75e6e99abf3204297be3335f2aa2b6efe51dbcd1bf0bb589070ce30c030b6ea2bed868277953a5d60210b6bc924d";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "2024B";
 };
 beamerthemejltree = {
   revision = 21977;
@@ -3373,13 +3392,13 @@ bearwear = {
   version = "0.2";
 };
 beaulivre = {
-  revision = 68376;
+  revision = 70050;
   stripPrefix = 0;
   deps = [
     "colorist"
   ];
-  sha512.run = "edef18ea01309678c4fd177b08cce8c5a59023cb521c9adab9cb88e096c3a4af3c2cbe035360f9310914252a9f0ca71a0bb4a8e220c75ea38fd2dfe8faf0d639";
-  sha512.doc = "8159204651670ac0ffb0d3d4b9121f573e86bdbaa5619ac461393d097f5d2a94dd547e3dfc83b6e8aad0b57dc2913bebaf77d41bd0355ac55ea4c74175a73922";
+  sha512.run = "e8566d352bb39bbe6256dabb57d6743db7dfc98e491683eab76ffa86ae9d6d0cf53726999620920b4845015bbbaa6cf48e8d4c82dbffd841d00d55bd2f2cb464";
+  sha512.doc = "efb52d0b4df908a4425fb9d5f2767c54dd7b2d614076374d81b15f53322528a24231feb9145de9bf1f0086a6ffcff37d529a925fca879984b4c5860b00b12a1d";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -3391,10 +3410,18 @@ beautybook = {
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
+beautynote = {
+  revision = 70166;
+  stripPrefix = 0;
+  sha512.run = "637e51a355d5f89c2e0241140780b221fabbb4685830c1ce9ccb5cb185c53f1cc4c3ffafe737df25445ef885958c1b5f6ba96a4a3de1169de7f2cf28095eea43";
+  sha512.doc = "36e71d750df5b5e5d8d05251a4be60214c09027a10c77551ff6261464729004fe0e3be586687af23db115b7cb4c99086dbe9278da0b8d6292b57005019628fc3";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+};
 beebe = {
-  revision = 69012;
+  revision = 70064;
   stripPrefix = 0;
-  sha512.run = "46ab5e24904f3a5f9fc3a548a13b78befed28d1d32aad38aa57a619313aeaaabcb5c131e14103c7c9c02b42297bc59e0a096872ecb3342cda92ec5e14e9c8c29";
+  sha512.run = "ff133e38a475bba0e8aea3a8a98d20ff1aa17eef7c0d0f5a6d404d51b1062c2a5957d3261e844d956f9a5e97fcc2d8a438beb5b724f84f8f3734091551e7aba0";
   hasRunfiles = true;
   license = [ "publicDomain" ];
 };
@@ -3611,20 +3638,20 @@ bib-fr = {
   version = "1.5";
 };
 bib2gls = {
-  revision = 68534;
+  revision = 69635;
   deps = [
     "glossaries-extra"
   ];
-  sha512.run = "98fa1d2a2af4c0bcb63aee20725206d015d9aeacae7291739d1b0e2a11acc2a0b447a6da8229bf1f09cbbedc4f5071401ec5f61a4a69e64658ad62e927e6618e";
-  sha512.doc = "6213d39c6029ce142232f077e65173b92b9eeb2c88b4d15431301687d4fcc16dbced3ab4817241a1f252c5e8eafd7f63f5bd71ce7d7dcd277b49bddbe351c93d";
+  sha512.run = "e73d6e0c7596252dade43291fb26ae02c0ed8f2650498294d2b1c36d69e777411fc1637619226f34f80c7e5cc06d3ae07f3b5d2eb144a2e69bde16a22c4aa449";
+  sha512.doc = "46d4a219969aaf897cb4c7705a00d1558b7b16cf0d4b16121672df8df2bdb0c0d0ee3350687b430f1d1d29eacee330aaee3206ef664c406c1d2b1c8c316de0ff";
   hasManpages = true;
-  sha512.source = "b029073dff63dd547fcb5f2359c0449e1d91c9eac243cc45a850fcce917db4fc22646bc45e47f5fee14b75ae67e75b13bf4677e0e76868c5a83e689411de28b4";
+  sha512.source = "662855e5579429694325042e0256385b9a5c40a4b54e6cf98712432469243de567cd5ea68f1ea93a593428eaeaf09d9d5a97e3e670dfe9ba90cd6f8c2383a3d4";
   hasRunfiles = true;
   scriptExts = [
     "jar"
   ];
   license = [ "gpl3Plus" ];
-  version = "3.8";
+  version = "3.9";
 };
 bib2gls.binfiles = [
   "bib2gls"
@@ -3641,18 +3668,18 @@ bibarts = {
   version = "2.6";
 };
 bibcop = {
-  revision = 69395;
+  revision = 69467;
   deps = [
     "iexec"
     "pgfopts"
   ];
-  sha512.run = "e4520627247c144f8fdaa3f3923f150297714171124f3e76e0d772ef0455d89c8229574a3e9bc8875c6902103465dace4eda81b0e30de3830152f3cd260bc794";
-  sha512.doc = "30ee2abd74da23ece25080c25c9c94bf44a54dea50088fa6a04109a7f67c9ddbd08973679499854cc4a29ed432a110283319cd2f8f53f6aed005a03218d0ab0c";
+  sha512.run = "e67e6471a9572f502db740cdac0540d3ce848a3cd36c976fb72a5bbe11626dfccd3c40ea75d86186d584c16d5809e99afd6cebe6fc27fb874685fdcb05da5341";
+  sha512.doc = "68d5b879566e871db328b92c8cd1d00c05698c07a140741d6584c5d3e2525725fe01e647938f396a505f6b28833d9df90b1984e334f7e781af2c9beb3f303209";
   hasManpages = true;
-  sha512.source = "e2bfecbc459f92887760ce2862874f05a392970c8d5dc5564a46128564f7da7d8dec4d4fa27ae4381efc79222760d76c74f19f5a6216fc234a377f83402ee0db";
+  sha512.source = "e7feec5a9ba4772e0d647d34782879c5c6b535f62df35382369f8b405f8b1c8e874db819b4c68f86e58f15fff938e7c37f4eb3476e8aff984890883a3e8e1924";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.0.17";
+  version = "0.0.19";
 };
 bibcop.binfiles = [
   "bibcop"
@@ -3818,13 +3845,13 @@ biblatex-bwl = {
   version = "0.02";
 };
 biblatex-caspervector = {
-  revision = 64866;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "803bb26a4abd4c735ea377c3ecf2b3906fb40f692529d54673ccb0cec3711c98563ccbe061a24025fcafb5b39c83a4d29f5e3d1bbd916380ce4396dd9f11a47a";
-  sha512.doc = "fca9d334178ceba7777055a3b9b98ccef673dc6d94812abde55d3d826db244eeff36dcc4e1b2157af10a0980e9f9f00a5c4d5b0c59a1d1e26f863708dd8cd6e4";
+  sha512.run = "74ece2007520241b51a8518613401ceb2c37da921126f78ccfc6bb3a81765e186793a94197138cc6e52610d87a5a81a3b5159370aedd32190da2fed22346b1aa";
+  sha512.doc = "f21b4c77c21f6a288bc7ea64e6959ae179117336e079ff4ef7ecf373b248ec2ad4b5c1499ecb39b18471ed33eec0fe11a0409e61761aff17ab73a7f01727ed11";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.3.6";
+  version = "0.3.7";
 };
 biblatex-cheatsheet = {
   revision = 44685;
@@ -3906,13 +3933,13 @@ biblatex-fiwi = {
   version = "1.7";
 };
 biblatex-gb7714-2015 = {
-  revision = 68240;
+  revision = 69775;
   stripPrefix = 0;
-  sha512.run = "6bfa18d733590bd1c361a47fef482285dc2357617e69f49edf0d398311ab038fac38d326515b840fbd46630171af004f4d66f1db3b4f77efed836e297c92dc66";
-  sha512.doc = "7aa9cea56196c395805b484e5f003a17215db968ee3e7fdd8aa1ff5976079be542adad8cbb25e0a874a1094f63a17efc4fba5a9ac70d22ac7bef739486ad9a68";
+  sha512.run = "1390d40d1a34caa69d4b25d18e0f01c81974ade6b778f6daa85bfccd17a4e749145640ea66a565e2919d61c642a1c0c24e6403b3e7a3b5622e1b644b559902ca";
+  sha512.doc = "18fd12ee1c680ba5e4fcbbfbe4e43f0d9163f7cf813ad20a0f264b37e252898b704a15c33c00559941d7b445b91b9652d97e46abf611ceee0885a96007279d69";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1o";
+  version = "1.1p";
 };
 biblatex-german-legal = {
   revision = 66461;
@@ -4150,13 +4177,13 @@ biblatex-phys = {
   version = "1.1b";
 };
 biblatex-publist = {
-  revision = 68476;
+  revision = 70515;
   stripPrefix = 0;
-  sha512.run = "b3a8bc7c370e1dd6f7545e878748ad7afbed934440ea37161f33350b8a277ec4ac4844ffb37273b282352eb543641ae77516d5bdc7c8245b97d2ff946d31dcba";
-  sha512.doc = "d5a3841a106272f32941d5a9f8e2d1544eaa431f60f630cffb1168d3e579412f5d867aff993d1f76fec7d1590248bdfdd5bce93a60f014c15f1275b800b7a1ac";
+  sha512.run = "6c93da7da5d847fedc4e383e759a8132053ba71bd3e5d33d300f1e31893b6f0c9e528e731e4973814cdaf597da2d22ba6ac4eaf9f75d82f47b46d41899e11906";
+  sha512.doc = "83c98481b654b9a905d4ff6b3ec0419dad60ef428fd2b5d8a4602b73f3b061864435be3f0259f5e74b14b7c5887c7a722c223baf519bc07ac46554de58746a60";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.7";
+  version = "2.8";
 };
 biblatex-readbbl = {
   revision = 61549;
@@ -4624,14 +4651,14 @@ bitelist = {
   version = "0.1";
 };
 bithesis = {
-  revision = 68634;
+  revision = 70136;
   stripPrefix = 0;
-  sha512.run = "617142849910c69e2986f1c685aa09f29375b83197dc6d964a887b50bc495f9501d578b6b7b3d2a6e78613a34b994a11f1160590e660a65e748c42504866ae1d";
-  sha512.doc = "6d5a915b04a096b1f5a9d9b9ed7bab9ae9e69886c3553778d5db07cbf8d2f0c183f2b86b1df0d2cb752368f192bf5e9252ad4c07071625659dca052c12ddcb25";
-  sha512.source = "8cef46e7e72dcc829ed8c9df27f6411b1b51a4fd3792a3d56479911ceb0e3197179a6e901beb49d4f91acdd5ac400881254c59a8162aaedded260b340cbb422f";
+  sha512.run = "d5b2a6bc2fc272a452a3e8f7e7c05244b701d77d409d026456826d63d11d7f5c0296f00980ab06326d0334c47fe1b2ba4f8397379e35ba3a8a64e7ca1071a3be";
+  sha512.doc = "8c31242c162f0d0927b95385cad88d9214294c270674ae5d1674f03e825e9d09cb93b26aa480ca7e38043038b9bfdfd7f50acd14e2f5644f038db451c2dc09a0";
+  sha512.source = "0d35711be0c9f09810429a72611892e2d0ee4d9bba4af3ea59379dec238509c057cc7ae1efdec4b531e78cfc7a96ef18309c374bc48408ff066ff7462253de4d";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.6.1";
+  version = "3.6.2";
 };
 bitpattern = {
   revision = 39073;
@@ -4817,14 +4844,14 @@ bodegraph = {
   version = "1.6";
 };
 bodeplot = {
-  revision = 69397;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "ce07cd6d21576123e5fcbefe15417f90a3c8bb65344a0700cb017bbcf76a27b2a3938e7d3f13e12a06398f6af739af69d4e09e614f1ca58850f2d74150bedb71";
-  sha512.doc = "478f633335f8fd55c712c37b11f54523c9d51a650d9025bd0f09b4ba77241710a6921fac8caac6ab0c4aeab252ba89886871c3887b327d1abc01771e6e9c5618";
-  sha512.source = "53c0f4825ad3323af7cb59ee07327d628a075e86dc880edffcac25dd0b3891d2f156085764cf0153c4b7bb9549f6e9253d090a4b08c0d12d195e872dbab02686";
+  sha512.run = "596a8cca1eeaf49acf1f24341601b4b7b1ff64f5df72a811738d57e2d0e5644cc9f6096b15825f208068446dfd825f9fa61406451234669df95683f746770d44";
+  sha512.doc = "d0eb443a98da30d66becca6e48e4e66b4efaf31d0405ff5d559738018f0c760a660175978f603f9c648af4ba20942a58b82c45f5a5446f39d7bfa05c944b4db4";
+  sha512.source = "84b487c782ccbc9f8a76331a7a01f3059d39052f440db82ba93ee40f82f420f2ebc25ab8a9351deb0a1261603d0866a7acf89a457bdb2c0b446d541a6bd78163";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1.5";
+  version = "1.1.7";
 };
 bohr = {
   revision = 62977;
@@ -5400,14 +5427,14 @@ bxjatoucs = {
   version = "0.2";
 };
 bxjscls = {
-  revision = 67657;
+  revision = 69637;
   stripPrefix = 0;
-  sha512.run = "83829f4785fbe8e283adc7c463bade1828f5bb3b401e0e3e632ca418754e76b8ab68f275e408cc779ee8644f4f90885257ac989e66982efe6b66d77ae2587d6e";
-  sha512.doc = "c5923edd13dee12f95611103de2926c03edad8cbe85259ac345d33ab164012e9cb4011381fd58a49f8a76ec1eb11653b6dc589b3c8a4dff2299b7140547e14f6";
-  sha512.source = "b111a7f4054086062db2f5686552b8b763f7617d5828a74b57462836c09284c7fae6666d2af2d4892b8a7fe2db9198f93ecefa38e1a152cea31c52ad35995583";
+  sha512.run = "bdcc01806c8379d02ebcb49c25bd497d11dcd3f0954dee7c1e1639c4cb3986a1bc54266e2f635c263058e1cdb34d540d52291cbe73502f02eb54d4b98ea3676b";
+  sha512.doc = "047fd7bca863ea5088d2e33d512a80879f72c32dd2e7bd3813fce6614d22f0285beb0adcd887f4528457db24472518663ea4e711d90e4fc0f36c8282db6672cf";
+  sha512.source = "5eecd3c63ba56bdae6a5a720aec1394649732db2acf7d25a6e3125ed742fb1033648edd7c45bd558f7dd3b9ea912617111b0846614546b89ab5f2aecdf770f00";
   hasRunfiles = true;
   license = [ "bsd2" ];
-  version = "2.9";
+  version = "2.9b";
 };
 bxnewfont = {
   revision = 44173;
@@ -6186,15 +6213,15 @@ cheatsheet = {
   version = "0.8";
 };
 checkcites = {
-  revision = 67201;
-  sha512.run = "f39c3d9dd2190ea9bd08ac323192197042d9a3899de22ca3a3fe05c0eaea0061f07fc3f53ea3c5f8c8b3bbad5ef4be0da7bf218238e660d28283bbf4edd02a31";
-  sha512.doc = "49760eb0be9ec54bb784f1b33ed5b86ce655b91b85e6f9a905342832aa4d4288138b82268a874f7b458ff87c8a94e4fc542dba3491b55a309915b6c3623e5de8";
+  revision = 70398;
+  sha512.run = "4782a9fb2223102492071b20efa40bdfaf9447165a108f680d2148c057507349a0c14f9274265ee2954b75e5f6fc8b1457115f60324e4b6598954babc565dedb";
+  sha512.doc = "dceee4bd22f760a6bc1a48fa49b0c68a0579123dbbb7422ce71db2eff910156425a0d90f62b9d62c4f4763d657c552f0cc5298a8627dbe98f0d5b6bca782b8db";
   hasRunfiles = true;
   scriptExts = [
     "lua"
   ];
   license = [ "lppl13c" ];
-  version = "2.6";
+  version = "2.7";
 };
 checkcites.binfiles = [
   "checkcites"
@@ -6295,6 +6322,14 @@ chemformula = {
   license = [ "lppl13c" ];
   version = "4.17";
 };
+chemformula-ru = {
+  revision = 70357;
+  stripPrefix = 0;
+  sha512.run = "ee12aadfaee03282e1cf9fcde69bf141abf0bcc5ed5a35ea78a54111494c5cb65f97a3bcdf8838a536128b05de1039a9caae7ef5078188811a54d12ec4f41855";
+  sha512.doc = "290b509e2eacd081d690f857ed2a2ba3f860ec25788150af8da5f3eedc5291bbfeea84e117d04959b1a30775ebe72e88f2c0a4a4dc89517ac81b239e3c001d39";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+};
 chemgreek = {
   revision = 53437;
   stripPrefix = 0;
@@ -6469,6 +6504,13 @@ chicagoa = {
   hasRunfiles = true;
   license = [ "free" ];
 };
+chicagolinks = {
+  revision = 70566;
+  stripPrefix = 0;
+  sha512.run = "191bdc3b9a732cf2153dd6d31a94dcf2a306cf1af9d1505bff28b47456a90c01a4d20717faa09b2a6875ba47852479c14e1de887a4f4b1165fa1aa9d648f3ccc";
+  sha512.doc = "9bd3e34a2d897859be082969ef65e8bbbff71e318ad5a1891b1b84334b80f29b1d16d29c318e7bccffd62121a62039cb89093e72163651d1ab84db0ddb279cef";
+  hasRunfiles = true;
+};
 chickenize = {
   revision = 57325;
   stripPrefix = 0;
@@ -6581,13 +6623,13 @@ chngcntr = {
   version = "1.1a";
 };
 chordbars = {
-  revision = 49569;
+  revision = 70402;
   stripPrefix = 0;
-  sha512.run = "1349aef2649fdd9b54751425d54cc9b0746dbcec9eebd1264c36867517c4f422d74d390a0e43d22fe81c5a36ff00e6cedc5e652183422e9408a2165486e79052";
-  sha512.doc = "ba8aae66430e2df58f01bb9860bfab9cdb3aa0636f77f657a1fe4405ec9397773b51b01d94201bb8dfc8660d05f2aa4ce9233ef985d3e4e35faf005c81759404";
+  sha512.run = "4049c18bc34bddb954779d2b534a84791967e6d9d5c246136a046e4358f3d2b7a0127705db5cb5ebcc0e822241dbb3c17dea23d194ea71ac6d7ca40d59b9b37e";
+  sha512.doc = "1a405a02e3fb813c7abd4c3925b0ccfe38129857ed5d23041ef2eab47f51206ac476727558cd50ac49b6eae3c8f67fdbfca6de252db0d95a951fc28add5a0a41";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1";
+  version = "1.3.2";
 };
 chordbox = {
   revision = 51000;
@@ -6706,13 +6748,13 @@ circuit-macros = {
   version = "10.5";
 };
 circuitikz = {
-  revision = 69077;
+  revision = 69757;
   stripPrefix = 0;
-  sha512.run = "82eda82916370e8c76c450d74ffc4a77770a00aa0c65c4b53e46b1d6c2262db83af3290d220be14db657ad80ddca202535428d6e34af5a0e7b6348c01d8fb59b";
-  sha512.doc = "8dbe6c341fa86da01fcb3122531f1dae59abd3e1927d065ea7904294dabdf45746c52fa9b25b8a32a6234984afd8566b914c9e5b7b29a05337fbaecb4321c506";
+  sha512.run = "5d2d8699c29a209f6f4eb1df363acfc1a7bcda8e7a1b110f50dfb65b97c8b09911a11528e7b1d8e5b64d9fdcf1f9fdf4feae40cf71df9a11b01cd13d64cde91e";
+  sha512.doc = "398f50f5b9d0e288a7cd91e0ab222aa20877138f4ddd1963c72caa5724539e1b37fbd54503a24f234270393c6c7f07667d6a39a05dbca6199e9a52785312beb1";
   hasRunfiles = true;
   license = [ "lppl13c" "gpl1Only" ];
-  version = "1.6.6";
+  version = "1.6.7";
 };
 circularglyphs = {
   revision = 68476;
@@ -6724,7 +6766,7 @@ circularglyphs = {
   version = "0.1.1";
 };
 citation-style-language = {
-  revision = 68454;
+  revision = 70583;
   deps = [
     "filehook"
     "l3kernel"
@@ -6735,15 +6777,15 @@ citation-style-language = {
     "luaxml"
     "url"
   ];
-  sha512.run = "da914f9a07a02453627546719a1df88d3cc5520bd1530876208b2cbf0acee4536f043bb34228a54afbb86a4fe5ea9fe178102f61828b66b1eecd610cae7c473e";
-  sha512.doc = "3af7adda2f2cf49b178680be6bd72f299d04f515d4f8711f6830227a43292229704dfb990ceee289ef9b46afd1f057d53215dbf226fa99c41a218542dda74a67";
+  sha512.run = "76f5e35db0ad1ad5a2bc01a6680fc27f5721bdca3f7fb2d10c19e77583947f5fbdd7ea79b8ac63d322418eff0f48b2d45384d0be195eb43b502548773f0da291";
+  sha512.doc = "3a432364b82ccbbe402e5aa10e2c17ff5a9d6e9e8611c8ac0e8385fbcc43418adf9a3d2237d10fe9f98e8b60336945fa5ade19583f35c9224a5ec3885932559b";
   hasManpages = true;
   hasRunfiles = true;
   scriptExts = [
     "lua"
   ];
   license = [ "mit" "cc-by-sa-30" ];
-  version = "0.4.5";
+  version = "0.4.7";
 };
 citation-style-language.binfiles = [
   "citeproc-lua"
@@ -6824,16 +6866,16 @@ cjk-gs-integrate.binfiles = [
   "cjk-gs-integrate"
 ];
 cjk-ko = {
-  revision = 67252;
+  revision = 70332;
   stripPrefix = 0;
   deps = [
     "cjk"
   ];
-  sha512.run = "8eb4ca863ffdcab233a353629f40b87264903d2cec2a79088a8f92a705b78e5172228ca46cf4f3ebb78ec5e8bca093917bf191baa7184f805003ea1f3019ea8b";
-  sha512.doc = "75c041a2fbaca6977a96efbe7f5c37729d85c2f0903faafcdd69eb1425037e8a045a394b6c65b8914e0d10c831a63c58bab111491e3670e5cdedbb4a73b2e3d3";
+  sha512.run = "e5b28f36f37e407cdcebf10dbbcc34b4a286b6bf04e6722c1821ca9cde7037893109a81e5195622b5c57de726c408371734aa69b0e1cebef25508794e86a1422";
+  sha512.doc = "cbd60b19403c80674b3d2954dbc2728529b81c38fdf84ad25607e188aec9aa14c5496b73d5c998773ebc9a4825748f85a5b6f37f53fcf8fdccd99f7288f6f426";
   hasRunfiles = true;
   license = [ "gpl1Only" "lppl13c" "publicDomain" ];
-  version = "2.4";
+  version = "2.5";
 };
 cjkpunct = {
   revision = 41119;
@@ -6960,12 +7002,20 @@ cleveref = {
   license = [ "lppl12" ];
   version = "0.21.4";
 };
+cleveref-forward = {
+  revision = 70181;
+  stripPrefix = 0;
+  sha512.run = "bf65342e8e5d0a1299e160611044f17a6f68df342ec9bdcfe64c09ed766a7fe72b39a4d1915011b077a42261686a066b8b435f36ec6d2e0b72324cc4bc9e1381";
+  sha512.doc = "b89360c16f6f77ed7386f51afcf4e46aacdb6d1f567fa5dbd4d05e46953d1a0cfba24af687abae59a72189ad84eb475d80ffb6c613ba8b3a88a91c9008a1ffea";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+};
 cleveref-usedon = {
-  revision = 66915;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "6004d6bb5fe8c93d2c48219c1c464ad26ee1ba4b31d15e0ca55b49df9218dc974e863f975e2d4f254c2e41197bb60c4722c126660919fe07d1f0e502f2bb13ea";
-  sha512.doc = "f8e2efa3de278d1ee600f844e0cbd7da73e105003b45f103fc0f1c3aed9df4dc622302cdfcbe77646322e29a0451856816ff9ecd908e1d882f7829f9aee5cf1d";
-  sha512.source = "acc43cbb720d9feb8b4535b60fe613583192b5c6907e00db495cc03432e1bfcbb99eaf99208213e1b29140766f16d2246f6232f3a3929e88d00ec581a39bec1a";
+  sha512.run = "2703d610437ab3f244f0e627310d4cb5b5a6a29e29d04458eb7a566bc97a62882e3a5e14bd4717baa77b9062338d91fcbb0b0b05fbc257579b94d8ff550c96e1";
+  sha512.doc = "7b967ed70196eca0537012c97dfe91613e9e54a387c0365acece66132cf513c2c1fb7ffd030e0f18c2ca079be4fd5f7ae8f47959ed1d127251febc3b4f422454";
+  sha512.source = "c082df105534c961fb1e28065aecebaec2a8d03f2d450d7ba96871f06c9eff232b61b5a4e2ea142f62a720f04d776b6a3ae21f11bdab77dc6c2a95f4db6ce4e6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "0.4.0";
@@ -7267,12 +7317,13 @@ cmupint = {
   version = "1.1";
 };
 cnbwp = {
-  revision = 32550;
+  revision = 69931;
   stripPrefix = 0;
-  sha512.run = "31c83774160e64dadc95afebe830ea1aa7c929e48f611cf5c9742cb66e12a3dd459928c85ed1378460247241fd4f007145b002ae7aabb88e773779124510c86f";
-  sha512.doc = "d41f72a3c5482b1ec50f1bacbaf8bed5f926c5d522ab5e3574d71d68b2d7c63e20fa1df65962f94e53b70f75aa7dee5337d064c212990c0f3351c30b05b567ac";
+  sha512.run = "1e52436349c9f43a04b40ded7f35092d644ea056b5be1f91ce9efc20a5c47211017cb000ba5b3734d29fcf0553e61193cfa141ea945367362c924a061392b2a8";
+  sha512.doc = "685c09924feb372af74ff578a74c4a4ed24a7b9ddbac65d8f8e2c17ba4b80e7f34d49d71ef9251b619b363a83dbbe12114aed547bff6e29d7053261cae169d22";
   hasRunfiles = true;
   license = [ "lppl13c" ];
+  version = "2024.02";
 };
 cnltx = {
   revision = 55265;
@@ -7311,13 +7362,13 @@ cntperchap = {
   version = "0.3";
 };
 cochineal = {
-  revision = 68904;
+  revision = 70537;
   stripPrefix = 0;
-  sha512.run = "43b896ccce0842cdc7ceb207932c1f112334b27fa11c8431c6d2561ab0b17ac6f841ef3d9ecdb27e8a7c3976c350edfa115bf927c205a4cb493f66b35eaea357";
-  sha512.doc = "16e0783a4a77d96c96d26bb7d04723dcd5fe882da39a9214b4c84bbcd5581aeba331c0c7994a56d6199385ab54ed5cd47bd9dfaab92dcc44f940c0c2d9afdf4f";
+  sha512.run = "c8468bf472552dbbcbb84a5134a5ddc84405aab0d3b98015aba60d6da0e02896d929582778bfecf3694a7a0174d31214c9231a1da11284af6fdf3362b95e179b";
+  sha512.doc = "43f7de109858a3e9a120b51022d3cab77dd0ae4ee2dd5e2d032ed3f9ba669ce2f5280bd359d8dbf158181727442e1e00ac8914d8cbe3edb93c40ab01362a2dbf";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "1.081";
+  version = "1.085";
 };
 codeanatomy = {
   revision = 65648;
@@ -7339,13 +7390,13 @@ codebox = {
   version = "1.0.4";
 };
 codedescribe = {
-  revision = 69343;
+  revision = 69944;
   stripPrefix = 0;
-  sha512.run = "9d1176a6934468658a99d00f862ff2554fda33ae7e458409c3dab3df42afcf093f3d28263f8f7b431024df1b67f969ac808806b222ba256d27793a4b1e7a2865";
-  sha512.doc = "2540adbdb84154d3fa96a74e716b3b7051f4687852f873b67a0a0bbe6bf9e932b3bb19eee07b0e4cf7299e3f1d06983b4faeec77182db0e8676f53b2aeaa2776";
+  sha512.run = "5c3fa3c2843820575d28e1c9adced0cabf0f19fc4ae8022eef4fe18f18cf9cffe8582cb4d8b2f5d064bb5f836641f2229a6f0b6976556a9bec4ae66739b48c00";
+  sha512.doc = "305c4b68a7011697c750789cbffcf09a45b3704ded67538efd6ef134c499cf42c50ff3a6503350b75cdac07574360941f66ccb67044a5f5db4ba6f050604c3f5";
   hasRunfiles = true;
   license = [ "lppl13c" "gpl1Only" ];
-  version = "1.3";
+  version = "1.4";
 };
 codedoc = {
   revision = 17630;
@@ -7490,7 +7541,7 @@ collection-basic = {
   sha512.run = "4241bc3a3ef21502faa9a2e0b16295126c357fc15813a625306552b40f9da804164abccce642f4ec1e677092f81d61381958b87fcf515120a12f9b7a19055370";
 };
 collection-bibtexextra = {
-  revision = 67386;
+  revision = 70566;
   stripPrefix = 0;
   deps = [
     "aaai-named"
@@ -7592,6 +7643,7 @@ collection-bibtexextra = {
     "chicago"
     "chicago-annote"
     "chicagoa"
+    "chicagolinks"
     "chscite"
     "citation-style-language"
     "citeall"
@@ -7659,10 +7711,10 @@ collection-bibtexextra = {
     "xcite"
     "zootaxa-bst"
   ];
-  sha512.run = "652554e2038407c987a3aaf73f206b228728ec7848c737de8c6267abb0b20054846fcc74400fbf4a802c8efa1dff2d4174e9d4725b41a7816e25c9c8d1cfd848";
+  sha512.run = "8a96e8a580846ea80c0be60ba037e761f5d695eb184c72da71709bf528368ac18464cbf955ba5fc6e6b574aa9ad76d2e26797907f141753716c0deccf625d6d8";
 };
 collection-binextra = {
-  revision = 69128;
+  revision = 69527;
   stripPrefix = 0;
   deps = [
     "a2ping"
@@ -7738,6 +7790,7 @@ collection-binextra = {
     "pfarrei"
     "pkfix"
     "pkfix-helper"
+    "ppmcheckpdf"
     "purifyeps"
     "pythontex"
     "runtexshebang"
@@ -7774,7 +7827,7 @@ collection-binextra = {
     "xindy"
     "xpdfopen"
   ];
-  sha512.run = "e397e1e30540ecdbefb7017348dde411b1287fb5c3a395d963747e74bd6e67fa5abd1f5137ea57e5f2eedcff1e89ca8fd1bcdc9aeafc2a969821953343e13620";
+  sha512.run = "2edd9aa26368452ebbd775da1d6223fa08141a55221594113b184243e05e1c4b841e7984de3df9ed6eff93f24b6391724eb454475cb774b693de6a3f901c8012";
 };
 collection-context = {
   revision = 69108;
@@ -7807,7 +7860,7 @@ collection-context = {
   sha512.run = "a8426893d3b9cfbddfffa383dc7898f7abe48271695dc6835abb2cda70ca1998d65eda2acd716a13ef4239c8ca8528c92b2c679510d6785ef38bf554b81a6cd6";
 };
 collection-fontsextra = {
-  revision = 69278;
+  revision = 69663;
   stripPrefix = 0;
   deps = [
     "aboensis"
@@ -8164,9 +8217,10 @@ collection-fontsextra = {
     "yfonts-otf"
     "yfonts-t1"
     "yinit-otf"
+    "ysabeau"
     "zlmtt"
   ];
-  sha512.run = "1a80dbc68b0a3a248fdc699013f7a23796ac9c6e2ae7e3135878f9d5fd6ee17ec1c809ac906804f1fbb3bc43451ee969d48247d9ab9125b681dbb29209892df2";
+  sha512.run = "307728e63dab6f629ac955def8049a9c513fed366ebbf6896bfe21adbe3379941a85ac01dce0647393801ed1d6e4a95d6831e476d4d9805e815ba197f006b99b";
 };
 collection-fontsrecommended = {
   revision = 54074;
@@ -8264,7 +8318,7 @@ collection-formatsextra = {
   sha512.run = "6c7f0a1829789edea6a42d45f13f482abc0aa1ecc66b0ba4b70197efff349df75c9a89a98f21537cf6f3751b608fc3ee10ac842613deaf2aa21005374a23bab2";
 };
 collection-games = {
-  revision = 69159;
+  revision = 70179;
   stripPrefix = 0;
   deps = [
     "bartel-chess-fonts"
@@ -8317,12 +8371,14 @@ collection-games = {
     "tangramtikz"
     "thematicpuzzle"
     "trivialpursuit"
+    "twoxtwogame"
     "wargame"
+    "weiqi"
     "wordle"
     "xq"
     "xskak"
   ];
-  sha512.run = "29cd464cc85a8632164c26468b441ddc97133e4e5ca291d9939e7c0c22c60c7a02df91d1e3cdf925b803976bd7f089d8c7e2b63cd32fb88f8760f546be921160";
+  sha512.run = "005e7e6ea5401369c09bdbb94a1bf6a2f8f35223d5a10ffee524481bfe4033c544aea2142a8af721ea62f6f0d37db84874c3214c857003b82a8ee2c191d0cb5c";
 };
 collection-humanities = {
   revision = 68465;
@@ -8494,7 +8550,7 @@ collection-langcjk = {
   sha512.run = "bee71f9df25db567c0930659e5037d1b6144d5c157e0870e9144f82c6dddbd9df156e580583c65f1bf5f54a70c9fcab108bd117e74af0e28d72a33f6b78207d1";
 };
 collection-langcyrillic = {
-  revision = 54074;
+  revision = 69727;
   stripPrefix = 0;
   deps = [
     "babel-belarusian"
@@ -8528,6 +8584,7 @@ collection-langcyrillic = {
     "lshort-mongol"
     "lshort-russian"
     "lshort-ukr"
+    "mnhyphn"
     "mongolian-babel"
     "montex"
     "mpman-ru"
@@ -8545,7 +8602,7 @@ collection-langcyrillic = {
     "ukrhyph"
     "xecyrmongolian"
   ];
-  sha512.run = "43ba5d0f21162fbdb6fd0e9dc7c990fa845918704020da8ca5c6770139370be55f4b707f98708c28b472f9500ee25ea734bdd96c5541a22e66b69c03ae777ad0";
+  sha512.run = "d20f02886419a9c65b665fec5a65aaf232a2ae51ccccd159b611278887d0349bbc2e66b7f2f5ade9b79b918cc6a4cae30268b3472ef3d5441e8922b9c28a1413";
 };
 collection-langczechslovak = {
   revision = 54074;
@@ -8895,7 +8952,7 @@ collection-langitalian = {
   sha512.run = "6ec5e8a62e3c1ed8e3c23542381091d38c77af507af7088a55e44f1e34b85d01ec19342db4541d9d6cd712c0929d54a3fc663e1d8fde3c53fef0d6fc43be4994";
 };
 collection-langjapanese = {
-  revision = 64603;
+  revision = 69967;
   stripPrefix = 0;
   deps = [
     "ascmac"
@@ -8954,6 +9011,7 @@ collection-langjapanese = {
     "pxjodel"
     "pxrubrica"
     "pxufont"
+    "sjtutex"
     "texlive-ja"
     "uplatex"
     "uptex"
@@ -8963,7 +9021,7 @@ collection-langjapanese = {
     "zxjafbfont"
     "zxjatype"
   ];
-  sha512.run = "d9f73ff10afe2c91f9f6ad0e92ddcf8425ed7f51c7f08d291451775bcfcf3421d8d2afd78c7dbdceef995ac5a4262df89afce2b35e6c2dd064e8a310e1025f67";
+  sha512.run = "18296a73452e8d346ba10b8241adfdb6b0a258dd443517a566e415f418e7c158c6d179f20c5818a36fcb12bce816571c0d317120f033ca1f20c5acfcfa00074d";
 };
 collection-langkorean = {
   revision = 54074;
@@ -9189,7 +9247,7 @@ collection-latex = {
   sha512.run = "889eae40b82f31c7c4b3a17740399c763dabec7986fcb39261b252afff69a03a16e660b114e358cd72e3fafa14a158849cf03aa2ad4d73a5bee4ca9abc4c24af";
 };
 collection-latexextra = {
-  revision = 69389;
+  revision = 70534;
   stripPrefix = 0;
   deps = [
     "2up"
@@ -9255,6 +9313,7 @@ collection-latexextra = {
     "autopdf"
     "autopuncitems"
     "avremu"
+    "awesomebox"
     "axessibility"
     "background"
     "bankstatement"
@@ -9288,6 +9347,7 @@ collection-latexextra = {
     "beamertheme-trigon"
     "beamertheme-upenn-bc"
     "beamerthemeamurmaple"
+    "beamerthemeconcrete"
     "beamerthemejltree"
     "beamerthemelalic"
     "beamerthemenirma"
@@ -9295,6 +9355,7 @@ collection-latexextra = {
     "bearwear"
     "beaulivre"
     "beautybook"
+    "beautynote"
     "beton"
     "bewerbung"
     "bez123"
@@ -9388,6 +9449,7 @@ collection-latexextra = {
     "classpack"
     "clefval"
     "cleveref"
+    "cleveref-forward"
     "cleveref-usedon"
     "clicks"
     "clipboard"
@@ -9551,6 +9613,7 @@ collection-latexextra = {
     "diagnose"
     "dialogl"
     "dichokey"
+    "didec"
     "dimnum"
     "dinbrief"
     "directory"
@@ -9616,6 +9679,7 @@ collection-latexextra = {
     "embedfile"
     "embrac"
     "emo"
+    "emotion"
     "emptypage"
     "emulateapj"
     "endfloat"
@@ -9739,6 +9803,7 @@ collection-latexextra = {
     "foilhtml"
     "foliono"
     "fontaxes"
+    "fontscale"
     "fontsetup"
     "fontsize"
     "fonttable"
@@ -9776,6 +9841,7 @@ collection-latexextra = {
     "gcard"
     "gcite"
     "gender"
+    "genealogy-profiles"
     "genmpage"
     "gensymb"
     "getfiledate"
@@ -9951,6 +10017,7 @@ collection-latexextra = {
     "labels4easylist"
     "labelschanged"
     "lambdax"
+    "lastbib"
     "lastpackage"
     "lastpage"
     "latex-amsmath-dev"
@@ -9995,6 +10062,7 @@ collection-latexextra = {
     "listlbls"
     "listliketab"
     "listofsymbols"
+    "litebook"
     "litesolution"
     "litetable"
     "lkproof"
@@ -10101,6 +10169,7 @@ collection-latexextra = {
     "modref"
     "modroman"
     "modular"
+    "moloch"
     "monofill"
     "moodle"
     "moreenum"
@@ -10311,6 +10380,7 @@ collection-latexextra = {
     "pstring"
     "pxgreeks"
     "pygmentex"
+    "pynotebook"
     "python"
     "pythonimmediate"
     "q-and-a"
@@ -10323,6 +10393,7 @@ collection-latexextra = {
     "quoting"
     "quotmark"
     "ran_toks"
+    "randexam"
     "randtext"
     "rccol"
     "rcs-multi"
@@ -10525,6 +10596,7 @@ collection-latexextra = {
     "tamefloats"
     "tangocolors"
     "tasks"
+    "tblr-extras"
     "tcldoc"
     "tcolorbox"
     "tdclock"
@@ -10620,6 +10692,7 @@ collection-latexextra = {
     "upmethodology"
     "upquote"
     "uri"
+    "useclass"
     "ushort"
     "uspace"
     "utf8add"
@@ -10718,10 +10791,10 @@ collection-latexextra = {
     "zwgetfdate"
     "zwpagelayout"
   ];
-  sha512.run = "9241966245fa9c875e458a781779f1ab00b615cfee8e5b4a591bd2fe71ed0ef148f7ed40559e7a54c6a46c63305838bb2e46634a2f434d550e80366af2f329a1";
+  sha512.run = "98a00a699b249cc95f5466322fff70b07b94a3e3941b10dbb2a052491e23e733f902c9281a76279363b55a5b59c0d5afb84017c4bba48459525e22c431876dd9";
 };
 collection-latexrecommended = {
-  revision = 69131;
+  revision = 69888;
   stripPrefix = 0;
   deps = [
     "anysize"
@@ -10793,11 +10866,12 @@ collection-latexrecommended = {
     "underscore"
     "unicode-math"
     "xcolor"
+    "xfrac"
     "xkeyval"
     "xltxtra"
     "xunicode"
   ];
-  sha512.run = "586232e420ea3c53c4c9532252681a8ef20185348deba9e1f37c1e0231203a8d4955dc27c067ab1491ffbaa8f267a34d09cb6c48536f871da3fba8ae15c1f910";
+  sha512.run = "edaa03608bca82f73cc7ac7114443536570bd6774cee90ba4058996096f3f461a2198cf89d90c3e749bc5305447f32b3facff5c26fa56a5ac5a3eee71cf30222";
 };
 collection-luatex = {
   revision = 69404;
@@ -10909,7 +10983,7 @@ collection-luatex = {
   sha512.run = "d03b9242340be7be8c32e87c2773bb8aecd4a6b7e1594fe755d9955f111dad4863e497bd3f374140c162b84c6c90379ff86c930267ab5c6d26c3cd0e3968c745";
 };
 collection-mathscience = {
-  revision = 69267;
+  revision = 70357;
   stripPrefix = 0;
   deps = [
     "12many"
@@ -10953,6 +11027,7 @@ collection-mathscience = {
     "chemcono"
     "chemexec"
     "chemformula"
+    "chemformula-ru"
     "chemgreek"
     "chemmacros"
     "chemnum"
@@ -11059,6 +11134,7 @@ collection-mathscience = {
     "matrix-skeleton"
     "mattens"
     "mecaso"
+    "medmath"
     "membranecomputing"
     "memorygraphs"
     "messagepassing"
@@ -11080,6 +11156,7 @@ collection-mathscience = {
     "numerica-plus"
     "numerica-tables"
     "objectz"
+    "odesandpdes"
     "oplotsymbl"
     "ot-tableau"
     "oubraces"
@@ -11172,7 +11249,7 @@ collection-mathscience = {
     "ytableau"
     "zx-calculus"
   ];
-  sha512.run = "bc4ca79e6057d48ac00b5f271d8e776fa1ee2080749a3e5761e13bfe0b3acaa08ff797b653ddb61bc9d168b28f4f29f234e64b51724773d0ac51cea7efa6ab9e";
+  sha512.run = "1fbc1238b2017d8c2a75c86a654308e02c004309d1c64b994b9f1dcc7dfb9bc62736c999773277288f0a6b391bd447252274f49d2168b70302b4ac2ca8a3c00c";
 };
 collection-metapost = {
   revision = 67071;
@@ -11231,7 +11308,7 @@ collection-metapost = {
   sha512.run = "c0bf45f69b1b11ef6e59e6dfa0bd690fcae8b1b06097eb99f06e7ffa954f1ebebf296f3245e6922d716688353e22b691092f8e6349b1f02b3234b49a3bfaf969";
 };
 collection-music = {
-  revision = 65862;
+  revision = 69613;
   stripPrefix = 0;
   deps = [
     "abc"
@@ -11268,13 +11345,14 @@ collection-music = {
     "songbook"
     "songproj"
     "songs"
+    "undar-digitacion"
     "xml2pmx"
     "xpiano"
   ];
-  sha512.run = "951e172129275fa2cb7ccea6bf23f27484503533ebee4c3bef7d2f4ddda5940c15713b104a584704a0b9ec710e2ae363b6ec130747a6e169a7c461e509714a77";
+  sha512.run = "26100feabd6d95d8b29f0160f7e9b86d06e5055387acc63fe6e47fa0e681567e2d6537043bfa9138d3f8bf27705f2117b719aeb77d72b2f35ff5e5ad220a6038";
 };
 collection-pictures = {
-  revision = 69409;
+  revision = 70538;
   stripPrefix = 0;
   deps = [
     "adigraph"
@@ -11330,6 +11408,7 @@ collection-pictures = {
     "epspdfconversion"
     "esk"
     "euflag"
+    "fadingimage"
     "fast-diagram"
     "fenetrecas"
     "fig4latex"
@@ -11404,6 +11483,7 @@ collection-pictures = {
     "pict2e"
     "pictex"
     "pictex2"
+    "pictochrono"
     "pinlabel"
     "pixelart"
     "pixelarttikz"
@@ -11536,7 +11616,7 @@ collection-pictures = {
     "xpicture"
     "xypic"
   ];
-  sha512.run = "1549c2635af7f0f8f2e06ccfc383a840b859b2f191351f3c42cc3ec9d7ddb8bee9be89e67139f8968e638aafc5630d9c30b4148fba5ee1d5eef1b41f0d879cbd";
+  sha512.run = "1851e3e460f1d5fc2c1f8e04e209f800f9ac27337fef200b3f200cee3580b4ff816784f00aa2dec1d7d7f36711d8cc043033ba2f512dce2933d078aa5c72d5b2";
 };
 collection-plaingeneric = {
   revision = 68675;
@@ -11782,7 +11862,7 @@ collection-pstricks = {
   sha512.run = "508276fe37018f3d9773fc7cda0cb37edcdd28e9cf8ab54ed5be16b07c2066de4626a561bbe387c7bba0fb82d4102be406efd721a4b5dc90110b8560083d2b07";
 };
 collection-publishers = {
-  revision = 69033;
+  revision = 69759;
   stripPrefix = 0;
   deps = [
     "aastex"
@@ -11797,6 +11877,7 @@ collection-publishers = {
     "afthesis"
     "aguplus"
     "aiaa"
+    "amnestyreport"
     "anonymous-acm"
     "anufinalexam"
     "aomart"
@@ -11840,6 +11921,7 @@ collection-publishers = {
     "cmpj"
     "collection-latex"
     "confproc"
+    "contract"
     "cquthesis"
     "dccpaper"
     "dithesis"
@@ -11964,6 +12046,7 @@ collection-publishers = {
     "ptptex"
     "qrbill"
     "quantumarticle"
+    "regulatory"
     "resphilosophica"
     "resumecls"
     "revtex"
@@ -12027,6 +12110,7 @@ collection-publishers = {
     "ucph-revy"
     "ucsmonograph"
     "ucthesis"
+    "udepcolor"
     "udes-genie-these"
     "uestcthesis"
     "ufrgscca"
@@ -12072,7 +12156,7 @@ collection-publishers = {
     "yb-book"
     "york-thesis"
   ];
-  sha512.run = "3bef1e82951ac3624c88c3f42e7d9dfdb4aaef71648852a0df777276139a1fa121f640420d5977a5eae99a590a53eb96854dc97b6637bbebf76e63a7c1248228";
+  sha512.run = "9a69b9b69cd17bb1fb8ef7ea4a5d870c3a5ee0241c9ca1bc1e4344a4708b9625d31332965ea33784d528d46bf0aefe9703784deee5e795107d5594b4a8517894";
 };
 collection-texworks = {
   revision = 54074;
@@ -12089,11 +12173,10 @@ collection-wintools = {
   sha512.run = "8af5c376990a7ed062588a0eb8695455936a92376b94f157d75a22f976f62017999aee8aeb692a07f98a64f05ac98bf4aba79c5f75688c54ad2196807471dc1b";
 };
 collection-xetex = {
-  revision = 64951;
+  revision = 69452;
   stripPrefix = 0;
   deps = [
     "arabxetex"
-    "awesomebox"
     "bidi-atbegshi"
     "bidicontour"
     "bidipagegrid"
@@ -12136,7 +12219,7 @@ collection-xetex = {
     "xevlna"
     "zbmath-review-template"
   ];
-  sha512.run = "457c4e7a3e2089adc69173950c5d3fa177c6e03c5936c49328bbd3c276d9940ba5aca974aea4b97c5dd51b6ec1ca9ebe28861e730aef63b1312589e0cb16df1e";
+  sha512.run = "5ec49133c1a9f43a8c025fc3b46d855d13f230f2885ed1d2cf57aa32f071a471a9c77c590e1269c885be045ea9c8cd36334a4b4fe647aa23454e91e42c229089";
 };
 collref = {
   revision = 46358;
@@ -12214,13 +12297,13 @@ coloring = {
   version = "0.2";
 };
 colorist = {
-  revision = 68440;
+  revision = 70101;
   stripPrefix = 0;
   deps = [
     "projlib"
   ];
-  sha512.run = "c3a49d415ec1133adfae9b8c5d8059dd0c41d2cc9637a0905494820a514dd6e466a1d114e8d26b7cc8b5a2b197f331a146b2f3dd6a5a4d478f2a71b62dba3f7c";
-  sha512.doc = "6f5abb6dfc10b4e4b952746f84caa489c06e84d0d9dfa7ce9a2cd1de29f19dc028ab4a42cb233310540d70b8862a797420aa9f383d05c3b672574b8a4870078a";
+  sha512.run = "5ff0c8affd4c3fe364bf9832811f5536316c383c212a85d78cbff62af4155092f6602b3a82d6a1bdadfa5bfb60c257a3b066658ec1704b31e24e1844c61f2a2d";
+  sha512.doc = "133f8e9e5e504aa069ed60e7549579064664bb375af27e9e6457bc0347201a5902c1a3c699c4eecec5485fa905c7f026af9fe8a2de3aa8d5d2daac8c95efac83";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -12259,14 +12342,14 @@ colortab = {
   version = "1.0";
 };
 colortbl = {
-  revision = 64015;
+  revision = 70034;
   stripPrefix = 0;
-  sha512.run = "f1c342fe4a90002959283b9b3ef5a2dcfd9b62e6d559f0838ed102546ba8fd55c2a2234ad2d2824b9141a055ba02a9bf2c4b5877c24f5b5dca87360067e94acc";
-  sha512.doc = "c037827d5624448807284af963c9fffc424e258852518f77b3d50792e63ecc26c361f6e504638689dfd589fb73b86f77be7c4519398994bd53c68c1d5dcf6c04";
-  sha512.source = "252a17abd3fccfe0f4fb7ec0f2f0ae79e60bd5e3ae015e85619a9cf9f362a213b7eff2a9fa45d199885f5ed09d990f9c26c22eba722f42b34cd75a0feb880404";
+  sha512.run = "3f1e703d76afea29b9cb9a2e1aed6e130b4be09982898260ef0e40f41eb99e9b948e89307c2d8b605777983bd8be46e874fd40080803d5b724f99f00c7b7a11f";
+  sha512.doc = "412e8399bc8aadaf131fdc07de0148c7fefa1e207788a8e9c4a82914bb99f75a3c352f60f958913ea351d31571a17c8e3b539917e72fd2b9b83b0c04f0e3675d";
+  sha512.source = "05de4cb9140c7abf6be215a1485e392cdf12108d64716407e6605ce87b946c062e568fa264d3e78934a685d91f5bee38ff737a86d9a4ba54c9c9f77c7418a349";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0f";
+  version = "1.0g";
 };
 colorwav = {
   revision = 67012;
@@ -12459,10 +12542,10 @@ components = {
   license = [ "gpl1Only" ];
 };
 comprehensive = {
-  revision = 69282;
+  revision = 69619;
   stripPrefix = 0;
-  sha512.run = "3a95484c972a27245694364364b16545069e677eba8e84bb1e3d743ec37ef4427dcdac4ea507df41d90c155bcac48b346ec3e0e985c5d447fce05be5a9a8e418";
-  sha512.doc = "0534af854d41a22af152ecc0eed7f0d835525d4508dc8cf7eed131a88958ec2024d35d80002a77fc09a2df4ea428514edfa751f889c1b90740344bf5025f4b59";
+  sha512.run = "57419ba4ccf74c6d01c7ac972e4f02bcb0e4f57c7a3eb790b8f6de10ff71318ae0b4dae2f836b4f36d3c63fc3b9c6594b628640f2dd850b97dc9dbc5d18266ee";
+  sha512.doc = "8d6e7b2de1d4a89e493d0ebc9b1e1a7e11e0839089d06a36f2cd8d0df47a66642edd8ab20e9688e18f6eac70d803da3edee1f8588fdfdb7bc3e46dd993523671";
   license = [ "lppl13c" ];
   version = "15.0";
 };
@@ -12503,13 +12586,13 @@ concmath-fonts = {
   license = [ "lppl13c" ];
 };
 concmath-otf = {
-  revision = 69005;
+  revision = 70337;
   stripPrefix = 0;
-  sha512.run = "3ad91e982f5a46ffde4a24c2c16233b671c4ce55f78afeba4a538e9437171a5936cdbcac56dcac357c17a188940150f70b475e37b4eb5f2416c9c00a970fd87d";
-  sha512.doc = "7ca90916cab639721f678b33d341c9ce253923ec4ef78d5a1246c9f79979aba9674579f2e8eeeca6b6fd2c0de3d70e3d44b8be572e5f738cafc408337432baf2";
+  sha512.run = "87b99735bef0cb6583b153794c64f9b4d76a65da57ca6bf7fcfd6f702bdb32c1cc690be32dbbf2247cb45ede15045d892121794ebc0887eb0f4804990be1172f";
+  sha512.doc = "6faa741f424a42088e336ff5300daa2dbd28cd71eed6d4047230c7ac7ecfad5e8de3e881216721f89f9b706397247c01abd99ea4d0a7ed097aa6d63c8e2a89dd";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "0.61";
+  version = "0.63";
 };
 concprog = {
   revision = 18791;
@@ -12567,7 +12650,7 @@ conteq = {
   version = "0.1.1";
 };
 context = {
-  revision = 69131;
+  revision = 69665;
   deps = [
     "amsfonts"
     "context-texlive"
@@ -12579,12 +12662,10 @@ context = {
     "mflogo-font"
     "stmaryrd"
   ];
-  postactionScript = "tlpkg/tlpostcode/cont-cache.sh   filew32=tlpkg/tlpostcode/cont-cache.cmd";
-  sha512.run = "5dc3ab5f5747a0d69684ad61ed86f508411357abeb52e01d1cba256024c370309d2f4ccad1076d1337eb35f7b10f8bb31f5a51219c4f8ad4795ddf4617b158d8";
-  sha512.doc = "7c440d9924d68a4abcd9e404b3516ff696ff215c44f2bc81542bcafb69b92bc73b4ee173c5e90dc2de7405b754fb1c452e76b7b71fe623c72d794dc0b966bff1";
+  sha512.run = "8951a79ae04a0bbcf7ec5f4d5f68e0f6ad3f79cfcce7379523b9bc74dc6ce3d0f07f628f3e182198ff37d313ca549b7b2512eeb28ce4a9c5460ec20ed7f2d2e7";
+  sha512.doc = "b2558db5417c5c1ca10dd80be258fca33d9e5fd1b16c3f1baa7c871bb4d65e42a75c95336ae988864e7c4dd350c722eaa96c446839ca6d147949b38fa78461d9";
   hasManpages = true;
   hasRunfiles = true;
-  hasTlpkg = true;
   scriptExts = [
     "lua"
   ];
@@ -12646,13 +12727,13 @@ context-gnuplot = {
   license = [ "gpl1Only" ];
 };
 context-handlecsv = {
-  revision = 69186;
+  revision = 70074;
   stripPrefix = 0;
   deps = [
     "context"
   ];
-  sha512.run = "7142f762e76a00a0ed7821ba67f09daa9900977dd643ab5249668d385896e87aff71b0dfe268389599ca75a22618638f4d873965bcba94f7fb4ec684d46986fc";
-  sha512.doc = "bf2a7b6498743fa148653e8634099f7597dc8a383f88e15a0605c6cc45247bc0521a1e57c879bf4212e22345f7482f734c741bfac739df1977f1f140b6be6928";
+  sha512.run = "b4a38aa0e04812e328e3d6225462078ddf45d8791d789e2730461630db55b397754ca192acf37b9ae7f1fc10c61d412022a9e56d3465d19ceca7f5875e3d580f";
+  sha512.doc = "763f75ab94a317788d9d96b88f1b7e25847ed316b4dcd84158719ef1c3cc48c90c884ec3158412d574839adf1ce8bcb12f9c0cefb6650338afa424fbd0213be3";
   hasRunfiles = true;
   license = [ "gpl3" ];
 };
@@ -12744,13 +12825,13 @@ context-simpleslides = {
   license = [ "gpl1Only" ];
 };
 context-squares = {
-  revision = 68545;
+  revision = 70141;
   stripPrefix = 0;
   deps = [
     "context"
   ];
-  sha512.run = "1f84f3131d67e831b31eaeb60939e467031fc080b32bb4c0d52439c1dd7ec7fe5768d2f2bb1f6dcdb25b1b1e4f9455aa83d5dcb3a0d1954aac41a79b0cb0dfae";
-  sha512.doc = "e55bcb462d1aa0aed9563d01dd53f9062f8463d7cd06a42720f3930656edd0fd818f891e43c622b753200ac2ed32f45d21900208f69999b35474f6e7789a7b5e";
+  sha512.run = "1ff4b50cf1bf75c6908b968c0fa35bdbd3571ef680ccf591ce5b0bd65370bc1dbd3bbb54b55c881d4d76ad09aa36a496248560874ad6e14e39b5f94cdec5ee23";
+  sha512.doc = "08b652e69c1719991daf36b9d9360b5736c25283ef10bdb5859bdfaecf1dd3a47d7417b9884d7bf51a32b073f99e08f35d8f172ff0d6a4817923c00f81dd6dfc";
   hasRunfiles = true;
   license = [ "mit" ];
 };
@@ -12857,6 +12938,16 @@ contracard = {
   license = [ "lppl13c" ];
   version = "2.0.0";
 };
+contract = {
+  revision = 69759;
+  stripPrefix = 0;
+  sha512.run = "bb37446d3eb0f736014ed0c589b1ae86d25cb6fe2374906f375047317b74e9d4a608a4ef32bf11776f37449d59063bc0973e9a2c7e83b747480b8b73efaaf133";
+  sha512.doc = "7681e863e95f295e0ec98d0aaa789b1089fdc023feb04eff3d028c4f0c19e9d6974e96350a25fcc7810e7dabb8cf43551ad0fc2d0cb1b9684c4bd60268082d32";
+  sha512.source = "3b9d2277c2e1248121bb27446dbcb8b66ba6b7264b7c9502f1ef0691c66050c32b0dd6975cce60cd6c0d70228a88fbc35433ac5dd62aa3aef9040b9292adf402";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.91";
+};
 conv-xkv = {
   revision = 43558;
   stripPrefix = 0;
@@ -13189,13 +13280,13 @@ crbox = {
   version = "0.1";
 };
 create-theorem = {
-  revision = 67712;
+  revision = 70180;
   stripPrefix = 0;
   deps = [
     "crefthe"
   ];
-  sha512.run = "4e33efc66887fda4505c7036444c7afbebd96594bcd326b8cdb149fb4a429f3cf05f87d6315dd6c207d5f55a9951ec6632ed63aa6f2d4320ac7fbee53d744680";
-  sha512.doc = "ee71cddaf790679dbc46044e5262f3b5db098f1b57291719bbba68b9e905e5daa20127d1a124b6f1e3d898fa081a3e7003f607ad0bc4191f5f63fca837ab2c7d";
+  sha512.run = "b65a610bb508fc169db8447d234e656fb3b63647ccc7a6656bb015fd871c762ed2b8bd59304808f5db1ce528f8227283a6172aafee9cb84f24c5fd41041acd9f";
+  sha512.doc = "4ce2d32999518c46478fb6563da42d073a04fcda76391ca722e20a4b0651819722fe62325c7bc858162368645c259de2407bf6b67681a7990e225195459c54af";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -13209,10 +13300,10 @@ creationboites = {
   version = "0.1.0";
 };
 crefthe = {
-  revision = 68813;
+  revision = 70165;
   stripPrefix = 0;
-  sha512.run = "4222df8d84b006df3641dd2fd976440401b83c40e9ef0b126be8ba9b459eadc084cda58798db596e5ceabcf4b4f0c821bcdd5b05be5a3ec9e3f65d98b4c6da3b";
-  sha512.doc = "48b2636dd969403d3f0511c8b959985da32243d5763d6d2837f57981ae2f548b2e92956c3fcc9349290e7b705ea8144ab2af9b74a5538ebae967693e82e6085c";
+  sha512.run = "e3d8ee83d5c8eeb35885ac852e64df8c3e0950855b1860fd1013358626aa5968e02175e0873dadeff69eafcf14dc85bddfbe78fccbe9c784748c5e09b599a27a";
+  sha512.doc = "35d45eb3ad323dc4699ee103a7efedbfb4fac371632d82e5e449a49e89ff6ee25ba9b7d86ee2ebe76c5094dbc24c0813d2a89328d28414b04ba2d20c513cdf3e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -13270,9 +13361,9 @@ crossreftools = {
   version = "1.0";
 };
 crossrefware = {
-  revision = 64754;
-  sha512.run = "7e8836c9c1cec51676a01e3e631cd3a0155f081909415e8ae2a4143b5eb611c5c843a0c700af98dc983ace1f9e3492da5a42bd54e74757ca68da7f106f7eb6b5";
-  sha512.doc = "7b7212f8a4b6f75d93ec573f9d7544f09df2e73e0b2a32e2f22866378f0d69e0b035511ee5cbc7eee4114b5540b3783d613aafd7508a41aa336195e49b070a78";
+  revision = 69700;
+  sha512.run = "8559fe8e71e27f8417923bd2c7a73a560c29d699ddb77e5b4ac464aecf794fe0cbd02d19abf75f7063994df9ffe6e761f98555a9411e9c5108b38e96db971f1d";
+  sha512.doc = "41ef79c5487826500fa9465d371c30a8ac513c94cf4852eb1bcbdf08759f5c7384189f91362efba921e9d7f3801a12d1c1968492640dd1c1cf2f1d6001cdb79e";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl1Only" ];
@@ -13519,13 +13610,13 @@ csvmerge = {
   version = "1.0";
 };
 csvsimple = {
-  revision = 68566;
+  revision = 69494;
   stripPrefix = 0;
-  sha512.run = "e98878933f2f4a7b5b41325f11deea34db380bfe7ae581cb7e78a738ce599ea7b325ae77d48af7a58705ec4e7b668751b371ddb0396a44e28b1af57ab21cb87b";
-  sha512.doc = "7d0a19509538818153357c485984abfe88b9a7e3c865a2184594155a9643dea61755a510e264a38d170f660fe502b9a37a0c353565d2518ccf621cd69ef3030c";
+  sha512.run = "ef7d09c254982998b009c4856b69b263e7ee5df3b54c7513aa5459651d12989f38b1593ca9e3d4d3de51ae6cf8b02c89a8a9298213c7872157712fb4c1c61900";
+  sha512.doc = "c6934e0bfc8448008c0fbe7ed06da871aa9a9073f7948551881e00dd8ca0d31f7da5132d14282a9b08564a2aa8e875f36cf67db900b94dcf4381530a2b6843c1";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.5.0";
+  version = "2.6.0";
 };
 ctable = {
   revision = 38672;
@@ -13851,9 +13942,9 @@ cvss = {
   version = "1.1.0";
 };
 cweb = {
-  revision = 68702;
-  sha512.run = "4c7a5bc2e7f347e29b625db12e9aa53c872e97c38adb08feba1fd8498aca39a2a83ba3707725757860353294541bcb29585e262404687f6f4939b8512c362765";
-  sha512.doc = "27ce2eb4a74a662eda15e5f72c1543b739c3b2eb918a07421781fcf62f0a4f1ae18c99ec836409175835ce56f3f3087e8b6bcf4deaf4f2282ecf9a2fc713a14d";
+  revision = 69586;
+  sha512.run = "6ba6d7e560abe642d30e4b9eab349eeb0135666a8f6f27d1e0e12d825048ec772305e0870edbe85dd3b977fb3e3ea0c7d3de84d9c6a02316be9691092c6b34bd";
+  sha512.doc = "306eb00fed91a6a7ec679b9ffa46a9f5a8747817cdb3230accc5f322505aa928bb670eac09c77b508186cb3e308ac347bea3107ea0a5dafa2aa6075555e0c61d";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "knuth" ];
@@ -14651,18 +14742,18 @@ dehyph = {
   license = [ "lppl1" ];
 };
 dehyph-exptl = {
-  revision = 66390;
+  revision = 70496;
   stripPrefix = 0;
   deps = [
     "hyph-utf8"
     "hyphen-base"
   ];
   hasHyphens = true;
-  sha512.run = "2dd98977dc31445cd981dda46f289a93b4340406801db929c21e8d08300b17745cda637f6b40ccbd2a02a0ebafa980fd9c1591b8f7beffe3fa029bf8c82d2eee";
-  sha512.doc = "c28f49469c8a2bad8fbe34ca1a0df6441649edb96c19d9482fd2140068447d86716911534cff181fddcf784c8e80a20eb1c952b2b9c323df7725b46d950c7b4c";
+  sha512.run = "3bf6178cdff605d289bd5b035416953b26911b636786340fb08eeedebc8a0a6ab45712547f6b6eb312751514216aadf36357b344e38fb3bf1dac84bdd6fe97a7";
+  sha512.doc = "3e41d2581f5b96afbea332529ee3d9523d935fec0e517a1a39ce04a405328241cc3bff97a00af3ac363a2a413c4dd70c9e38102d1ecd65ab8aae994abc46e4ca";
   hasRunfiles = true;
   license = [ "mit" "lppl13c" ];
-  version = "0.9";
+  version = "1.0";
 };
 dejavu = {
   revision = 31771;
@@ -14730,23 +14821,23 @@ democodetools = {
   version = "1.0.1beta";
 };
 denisbdoc = {
-  revision = 66137;
+  revision = 70611;
   stripPrefix = 0;
-  sha512.run = "43bbcb7f73c1ba704fef0754a4d79c99b45c99c7ff3b06f70db1c0c922734f9c3bc973841b6c1ffe6879324f935e936ab396aeb2d2fce1bce029b6b0379882d0";
-  sha512.doc = "4a0572e776d2b00d088bdcf5e65c94c15d644182a5ab8284a6b16e9ca795ad95ab89448954dfe5aeaacb986a012da0f1abccde7df35f4619a6ad5dc633facf96";
-  sha512.source = "f173f64219c4ab4194cbfb091273311da6963f09995fb2d751302c356613bee2bd4a874a35dbe1e99b995a5d50d9803025e8861947dedf77fa990a5f601f646f";
+  sha512.run = "ffae3c7f741d9a6c53ad3681d929d26d1ac7679477cb66d3bb3e7cb4bb81966137aa191810526b322f13c52aac31111ee4fc4bebdc49f8be78b40b26bb4f3e6e";
+  sha512.doc = "1bd19497dd7fcbc7df9416a43e09dd68a825fcff6411f81b9a19b100915296f094898a8b746ff7dce263a7facf5b776c08d93e4d70052b26e180a58079e62cf5";
+  sha512.source = "437387ebdf81424660fb88dbd758720ce709b1c771a979b83b462f08fe923b393cd6235f373aa20c91aca43e1cff850e19c6abb8dc34cfbcd42902fadd479754";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.9.4";
+  version = "0.9.5";
 };
 derivative = {
-  revision = 68787;
+  revision = 69746;
   stripPrefix = 0;
-  sha512.run = "64a219eb707e54c1c57715243e4bb5c676d495eec5c0095887f33f30591b7e90a7278ce6401c649f1902ded58c9fc890a23f0611dc8780e9a7bb6bd55a728083";
-  sha512.doc = "3f660b6b8c0c1da3d7434f3a0ecf19c51a8618ad660ac4a6518ca67a4bbdb788b36a457a6f52c544618e814a3bf2b73a5c84590125f3e1d55cd95bda01f6b9e8";
+  sha512.run = "a936429cc5b9933deaa349121fed565fd46e2d81f8d5a5be3b282f3a5107c13e2ff29e159759c10dad12bda9d5fefc5177fbba636dac0dd31aedb0074cb5ea3f";
+  sha512.doc = "8951a888d07fa9136a71c0b0fb25b7f3925e137100460fb41cae0766c56cbbadad6b58e0afd690a608306032f5c2d95c6d4bc8f07651a1354b184fc28b9fd2b9";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.31";
+  version = "1.4";
 };
 detex = {
   revision = 66186;
@@ -14851,12 +14942,21 @@ dickimaw = {
   license = [ "fdl13Only" ];
 };
 dictsym = {
-  revision = 20031;
+  revision = 69720;
+  stripPrefix = 0;
+  sha512.run = "1f1c145c9231616b8fd603604b252903938ced0d0a85f4ce2bf6775f123d47a153d0f1231fc78e965da56befd94b71901c5ae441253d0266fc984d47e9b113b3";
+  sha512.doc = "787f3d06b1239c95022c8dd64f07d98cca654250f9846e70f2e7571def724b0e316d66d60289ebbcef204088d6f603d7702af36b985cc640a4f963adb7d347aa";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+};
+didec = {
+  revision = 70237;
   stripPrefix = 0;
-  sha512.run = "6195ea914b422d5bb1c098e3a8f103d91aaa94520bdff1f5a04d7c952f84f16b1aa96287dac4a309d8d72eabac65a5dbaca275abc211d9290266cfb8f5fcce3a";
-  sha512.doc = "935e67c0be73969b572146ccfc92ca42c15b3b5cf2cdfb596cf3ecb9368463b793d530221d2a7e90df18edd54b7938dd27d1ee00757b580c543ea59ddce5d277";
+  sha512.run = "ed59a87d35b2ace9bf525634d1993400348a114669c9a358aa18836a152c5d973584a10f9514014336ca0a90a2050abd5cbf69d305cbae547d644f17c0873d64";
+  sha512.doc = "a6a46f0b9e57e3e3e124ec719026e75516722d32d9b0e29d49a736b57123c7d916551a5ddc26a60d972932a2134a236efce0147d13ce645ba5c198bee574ff39";
   hasRunfiles = true;
   license = [ "lppl13c" ];
+  version = "1.0.0";
 };
 diffcoeff = {
   revision = 68838;
@@ -15082,7 +15182,7 @@ docmute = {
   version = "1.4";
 };
 docshots = {
-  revision = 69410;
+  revision = 69676;
   stripPrefix = 0;
   deps = [
     "fancyvrb"
@@ -15091,18 +15191,18 @@ docshots = {
     "pgf"
     "pgf-blur"
   ];
-  sha512.run = "b25c70def3ad4e85aaa6f229362a7d4ca3b2cf20fc86c8682d3ddc36738868d3ba3f481634d0a9acf8366af102ba3a27b325f3282724f392e8e3d312abb60814";
-  sha512.doc = "81adc089c9572519c09a0e1472cf2aef9a52a51c84992c8a46fdf74bb81aa432417f58836eea621173c60ef9ef2367348643d161f661580d030c206fd88f478d";
-  sha512.source = "f7e7609765907f9ae15f000ab50afc4546660e01266431050fb16b59bb760ff154ca2efda4187452511c8cb4c47f253ac401225e33e261028ee5df2bbbf0687a";
+  sha512.run = "55d866be055e8ef97014bae75355f9a3de111527d96475b604154566b5d92b74788c1f6d250b3f58bb35e9133bef5d923b1aba309704375fe19d85559600b23c";
+  sha512.doc = "aef2d08ba7bab13a3ee496409601aa3cdb20612daa6866521bc70952032386f45fc64223ad5a2f188055053f372a0d70a21ea111901230f6dcb53f210a9c50ca";
+  sha512.source = "ddf9a609829d07da413738be5b22454f8079d9e8985a7d8305ce1c00ae41625f7f145f3b806b996947b4836793193735df57da831d81dcf37ca61521f32cb464";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.4.2";
+  version = "0.4.3";
 };
 docsurvey = {
-  revision = 69343;
+  revision = 70449;
   stripPrefix = 0;
-  sha512.run = "06d5844c96ba47de92459a20594f0f575e0ca2fb6471f7079274ff752a1ac631f0f0d2f4f76f01fd5b8fa8036fca57557b37fe8490571b49b46fca06ade0a4ed";
-  sha512.doc = "fbd223b5af17fd7e09d43f00d103ddd3e5730eee7fd86cb25a8d4568f00f0155a6aefa28d3addd507bc261ff57e99256f40b232781256744ff9634292b35fa87";
+  sha512.run = "ce94e7c797ec87694ab4df4ad3eba18586c0251d6cf4a5ef3d615062125a1cbd46ac2e9b7d822cfa07e44961d5354fec093cadbbd48cef403f9ac2c0ca665fed";
+  sha512.doc = "4edd65ee2c7c910fc8bcfec3f33bc1f390ab1bb67bd06a84e84eea8421775b28c519615b23d2c25fe4524f79e8e295778fef6868d741f4484f42b1265d49eef0";
   license = [ "lppl13c" ];
 };
 doctools = {
@@ -15336,14 +15436,14 @@ draftfigure = {
   version = "0.2";
 };
 draftwatermark = {
-  revision = 57099;
+  revision = 70401;
   stripPrefix = 0;
-  sha512.run = "c12311ce3723e6b93e8d21df2a50a3c1ab2326aa5cb6a1600fb848efd5309fa9a1c920e0ad27c785925387af5872570142aae61a2ffea0b3578d10209060e9dc";
-  sha512.doc = "bf3c28f78f03ebe43c84d722d668c14e0a751fb9e0d53ccb6a81cebf40b78f95b53fc3871ffa4919a94c260de861e93048b3adb590dee2bb8b600be1bbeaef3e";
-  sha512.source = "7f9eacb71dc803059f6d9951aa7958effb9e97bb2030884ed02f0fcd43ad554f860ccebc455ede5893d67c527915f8a7093a94b2f146e4884e23303fe882527e";
+  sha512.run = "39bff239cd08c6c57c445944ba3fca6af408b2ae32212555c9e9dd64c8d7fead3eebd35a48e6c68f139d65ac5404efb60182993ab751df8d8670e646f06cc97d";
+  sha512.doc = "1783cd72d65658df483c8c3f4b0b27b7a5e354e8686d08f08ece7cf6e15947bbab6ec9a07efa233144eca4ce3c015027093b4d502c39d2057555fab9ab07fd8d";
+  sha512.source = "7c58ad08143158711945af36d5d9b77a32cc4b800144a7cf55b777047c08f7267731344997354bce0fcafd9b3eae17cd39659660784c9a1a47b307708b6f45dc";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.0";
+  version = "3.3";
 };
 dramatist = {
   revision = 35866;
@@ -15454,22 +15554,22 @@ dsserif = {
   version = "1.031";
 };
 dtk = {
-  revision = 68849;
+  revision = 70117;
   stripPrefix = 0;
-  sha512.run = "fef5d494604434e725a79e2dc8165cc25bb01953e31bd64046af11ea6513314afc879c86dfb8aff814e25ea3d6eb3a64a4896c0e5992a87c44af3444eb1439c5";
-  sha512.doc = "5ef9df97097a35a4598ee8fd0fd5a506510479195a8dbb9c4bd221324b091f1d62da62a4f7ef8e422fc4a01ac494384882d24d102d1b7cd4b59d72f821e415a4";
+  sha512.run = "c9f59b7a80c40d4a1a9749ab3b5c48ab7dcbf213166454edcef30226f001d37724967e0306486892a64e1b16fcfd45f9d507f4e467642150ef90a75a5296471f";
+  sha512.doc = "2cbf434924fe1b7ce9ed50f647069ab8a278f4be1f65981e7d9f6027f6f0f6b7465e7f2f169e860314f84fe38032ce0cdb0d96b55f281a04b7f830216498b46b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.10b";
+  version = "2.10e";
 };
 dtk-bibliography = {
-  revision = 69155;
+  revision = 70517;
   stripPrefix = 0;
-  sha512.run = "57a04ffa623863f4413aaf8c78d1d9e6e2e3eac1ae71fae768cfc103680b0191306175a5534fabed4ac33381b9d1b0b2884ec9180d4fb92c8db8c095689bcbf6";
-  sha512.doc = "c43357d8f3b490840ca62f7f495d53bf13a187362d7caef89caaafcc2196b64b88ab093ba86d55e209ee3fc5d1c3ded0b2db6b1fdbf70a74d87233f1e54c703a";
+  sha512.run = "c6e8940feb04015e068e70a80b1b7058b451f324a2b7ad87644e011364077630b2fae6f8b292bd7cf426b3b4036279bc4ab449f182326b84016b39d66ae62f05";
+  sha512.doc = "9fbbf62c28b5dd4f561e3aef62c033b7cf11eb8276ee1137752d36bd0b018e40cb477f0ea0dabad277ca5c541ef2fe84a968affe606da0cc3fb9123c246ce337";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2023-04";
+  version = "2024-01";
 };
 dtl = {
   revision = 62387;
@@ -15484,14 +15584,14 @@ dtl.binfiles = [
   "dv2dt"
 ];
 dtxdescribe = {
-  revision = 69348;
+  revision = 69507;
   stripPrefix = 0;
-  sha512.run = "1fb81c09edb0bea837328d7518f1d1aa8f810aba84c78a08e1047aa3bebcc79e4a61a587f4453ef5875efe0019ace6f8303ed78fcb74b378eed6d153590b7d1a";
-  sha512.doc = "6ee725f86a622df46e1191f15d42fcfc2cd19440d837df9146a1e751a7e1770db406be647c7e30572341db5ac7da8fde24685be385830bd8527b5fdf6d74f483";
-  sha512.source = "13ebb0a68a33e646f2b2ef3b6f2fb92127c94ffe8123ed53bcebe95c9a13e1bfb167d0bb457ba1235de95c353ce2fbdcf396aa4af21eed2a9072ba5e42501a96";
+  sha512.run = "232d7cbd4d1d65740e97b608d3fca9da8ec4d06faea3fb39fdf49b829704fa269dc6bdaf4235d308fbd0f4027cf2b8fa48312320b4e972940118d69d17ec80ed";
+  sha512.doc = "96b2397398fb9a1a59de1ca97543c7bc84892d5eedc5935fedbed753577d77428f58587b42e55a5e69b5c03c68eaa176c51c037340eff4cf19596203051452a2";
+  sha512.source = "cfb804d222c7073b1cf4f143d2a98af9203623bc215b9747ffcfbf2e5b0935e56a9072027d8462f9c17e10a447c8bac7f3a30f93b6f692240ec3a472718493e4";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.08";
+  version = "1.09";
 };
 dtxgallery = {
   revision = 49504;
@@ -15513,12 +15613,12 @@ dtxgen.binfiles = [
   "dtxgen"
 ];
 dtxtut = {
-  revision = 38375;
+  revision = 69587;
   stripPrefix = 0;
-  sha512.run = "cc28ede4898b583a89df3efbfed45318be9034b3c2a92bff083e79007326d4d680177f1884aa506dbc9574a924687eb463f2d69c297906fcbddaa584ef9e52bf";
-  sha512.doc = "2c8a2ec4fc38aefa720bee29f24149837f985a54cc1b9cc9325887f5b7738d89ef38d8b60acbb4b5adf0e6c13e1677003e58adaaaf50e8949c33377ca29679a7";
+  sha512.run = "5b8dcf885fb0e3361154f6981efa3fa00c8ea9b11da7aa5f739f87b97b8a89226a4b150b97bfba33d0fcdebe11e7d900ee881203ea707cd8a3fcde16866ce54d";
+  sha512.doc = "f7d37f9d766175c816eaad931a7623c3a537d4d8d73c28b57802c417bbd954b1781cee8bcc7445ed09fac9a6f36b2336aa6a9b5b769bba877f72754bc713eb4f";
   license = [ "lppl13c" ];
-  version = "2.1";
+  version = "2.4";
 };
 ducksay = {
   revision = 64655;
@@ -15751,12 +15851,12 @@ dvipsconfig = {
   version = "1.6";
 };
 dvisvgm = {
-  revision = 68950;
-  sha512.run = "cab242a5b7fec4713015b2d3b57f36256ca9b10d606f4a11803d7c2beda9486a1839e69cf58248078d08a89a6e4513d0d4629901c828a1d154cc30f1f7059797";
-  sha512.doc = "fbd752b03b37d62e00e041104e547b1e862908f3ae74bcdffd17cb7bb74c6de3998ce8beaa32726f42aa31dfc1e4f9e85601a39b62f10d8c7381816d3c4c44db";
+  revision = 70496;
+  sha512.run = "94bcb0d873e30ca7d876eb28dc9951462fc28d6961beb11dd8b33fdb0c265614f506d27abfce6b8a540bee55bc489ce2243690341eaa509ba329c88ebcdc28ff";
+  sha512.doc = "eee54ef41b2962cad615be1b6082e99087a3790ac057d280481ab1fbc50f3c525c732cb038dd324b757c0cc738e0a26a0193faa79637125858ffea285be61196";
   hasManpages = true;
   license = [ "gpl3Plus" ];
-  version = "3.1.2";
+  version = "3.2.2";
 };
 dvisvgm.binfiles = [
   "dvisvgm"
@@ -15852,14 +15952,14 @@ easy-todo = {
   license = [ "asl20" ];
 };
 easybook = {
-  revision = 69411;
+  revision = 70236;
   stripPrefix = 0;
-  sha512.run = "384ca42bbf351ddcde2675f202c4fc8d8413b074415d55f80858e982d8cc487583b00618b8a9a0fa084305b0bc425438c5859a18e8b2127d7cc58976049148cb";
-  sha512.doc = "8a9ec5d3147540f5ebebc7c85a2c1413a86d96d5961d7dadf9f24179bdf546f7645dc157a7f1b3ec12daefe243dafec828380532e867958733fa554baea45dcf";
-  sha512.source = "aef472cd48badc742213b17cfad43b5c5b59b4bc185548a3332a733542301f6cb6f9de10b60d6b7d860f6e2e62c43b9338a14eb5683456563e38377d84bc08dd";
+  sha512.run = "b4abd45311a400ba7812dba5ff6ca299326b1e062c4dfc301ba5e5733fbaf6ab131cc285314396003dc616f40ffb98987279e80575326d4b3258023ec6a8e577";
+  sha512.doc = "01d8ce41bae5faa8f818b3a0f95c37827d6a7aa50fe5a74e7ad5e57bd40159b77351467d0c7c71f9513bef32739786078c2295ce3cf62207891f3bdba660ebaf";
+  sha512.source = "3789d9428ff0ecb54b113d61160db88cbe86f40e097dc17d386ad471af388188a189008bc5000a27cf0643634c1bc7c8df59130c82388f1cadeb4b1ac506bb1f";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2024G";
+  version = "2024an";
 };
 easydtx = {
   revision = 68514;
@@ -16265,13 +16365,13 @@ eijkhout = {
   license = [ "free" ];
 };
 einfart = {
-  revision = 68376;
+  revision = 70318;
   stripPrefix = 0;
   deps = [
     "minimalist"
   ];
-  sha512.run = "bdd96c338f02a27d430db81f665dba86c112266577b2b62c0009637324b5560dcc48b30c3f88a45217ba8a094c342b8ccebce54941c61eb0d28c37e966d9e861";
-  sha512.doc = "8727d905963cfb0955216f8d42c7a27404db7ea188e008f654e130359fbde9b33adedd0e9c723ff4fbca49e2ffbae3f457aae3e5864715223c80ac55ab19bca9";
+  sha512.run = "5e15f55394c35e033661c00295fcde0ccd424532ecdcf3c55f134ba7f990ee95961fe9b620a1addb2cfaddc97b030296b4ec9dae29a1d025aa2944d7130574e0";
+  sha512.doc = "56b8b1415b0526af7610502a65d13f304f05f18def4fd4c2870be9adaacefbd6e9cf34d318f135d358a85d56eb57f4f2fb583a529c43d4ffe9bed729310ce4ca";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -16296,11 +16396,11 @@ ekaia = {
   version = "1.06";
 };
 ekdosis = {
-  revision = 61113;
+  revision = 69568;
   stripPrefix = 0;
-  sha512.run = "6fbc9c1cfbeffa9d950a3a10e0d39286985876b02efb48bd90a5853b006642c9e7042b0a660fbcd4f0a3d7438e0d647a827338bf283326162ca75ef316e53d5b";
-  sha512.doc = "bf829e9636940ec6dd9371f12457c306f5af3cde562ea863de3f0f3efa44f8d5c4286f7373927ccb0913c7e2a0bab70b57e03a47081626674c7b4b407784329b";
-  sha512.source = "2f24f73fcee8f34ed6efa401939b6bf96e7de6f0e24bcb2352626fd293ad533d249c8a0618a9f1eb3413feca9bc9a26cdf852bb6c69fc49987488739dfb17698";
+  sha512.run = "2b69616e44379680fa41e2e3f42dbac8d052c7d12e6b59e7e56fbe3c7d7f581a44d3cd2cb91d6473b8fd0cbcdadc68f184feb2f7cf0fc2c868f03edef7369f85";
+  sha512.doc = "7332370e43de4076fb6f595df6d24419e210c866e79630c3fde4cc50b8e7d7127232ee123443a2443b3f236bfa7721dd43e2dd78d81820f61a5fbe92245dc66c";
+  sha512.source = "dffd9d9cb8bbbdef03c491d2ad6283d9b474ed4c5a7337a85aadce978ebb4ea35c161c11427d0fc09ecf61b9e5f10dd7e3c69b1e00d2f63ec2c27b2ba8bd7c87";
   hasRunfiles = true;
   license = [ "gpl3Plus" "fdl13Only" ];
   version = "1.4";
@@ -16562,6 +16662,15 @@ emojicite = {
   license = [ "lppl13c" ];
   version = "0.3";
 };
+emotion = {
+  revision = 69881;
+  stripPrefix = 0;
+  sha512.run = "17516f0c2ffee5a1045fbb11b4f49f09b3cb14ae0dd223c8427a107a625b7910ffc4085ec3937a28a4cdc58614ae41512ed1059edb0835007b8b19d6ca1526e0";
+  sha512.doc = "5cf42cff3b1730fa8fe9bf5268018a2ec7d39fa599528794eb01d5906f2dc6a85be5508651d5828c014b06fa4b1efd24821fd68a6d454649b1a8d0b1aec669e5";
+  hasRunfiles = true;
+  license = [ "asl20" ];
+  version = "0.2";
+};
 emp = {
   revision = 23483;
   stripPrefix = 0;
@@ -16767,7 +16876,7 @@ envlab = {
   version = "1.2";
 };
 eolang = {
-  revision = 69391;
+  revision = 69868;
   deps = [
     "amsfonts"
     "amsmath"
@@ -16777,13 +16886,13 @@ eolang = {
     "pgfopts"
     "stmaryrd"
   ];
-  sha512.run = "10c7dc6dd0b824fb2ab22318b6ecadb592abb552b4a6fa58fb89612add290928b625f9f6d6ac3bd5b1202662545e51bbe0d8b154025135f92c7999341876b976";
-  sha512.doc = "6802a32f5abf01bdf32bdb7299e82ae2740e8323bc1ce0fb6dd5d38c87146ac52abd4fda69bf28dfb8a10ed09223d4c3f8d320510131c5a81f5262f2e81af9fc";
+  sha512.run = "67a51c2a83fed799f07eaa226c21a50b38cf5109bfb06f7adae4933f2f9fd474bc8ac6e8528f1134273550a9834b4da6d42dd7d8274d6d76a80880b4cf221c4f";
+  sha512.doc = "752cf6a65326027af32d69cd86e1d1c703cb8f506b686cbb2964593c505813b0785352399752802358e10d6fab1e55e09554b34b3b928f43afa3c5724c1eec88";
   hasManpages = true;
-  sha512.source = "97ab60d5e21fdac9aca815b6acacc31fc534474fe6037256e9b18ce4cae3830ad39257f593a95ebaf35018109286140c46769990f60f659aaa78490bfe717cfc";
+  sha512.source = "dc0992ad4576ec3e4eafcbf0a4039ad3b15bc97e18dd0a9dadce418d9e2b9c29b24dbe3900142692c1248f898744bfbb6b4c59237c2df4d62fa454f535d0c6c8";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.18.0";
+  version = "0.18.1";
 };
 eolang.binfiles = [
   "eolang"
@@ -17071,13 +17180,13 @@ erewhon = {
   version = "1.12";
 };
 erewhon-math = {
-  revision = 68990;
+  revision = 70336;
   stripPrefix = 0;
-  sha512.run = "30e5463f57ce8562c94cd6ed302c9b9bf5624d34a6f5b2374d691afc097edcaca779d45d1f6a22747c2c8d920f6f45d9c6f5f8a3d09123b27188ba84c52caa18";
-  sha512.doc = "193b4ff5e877b3f8abde9e81abe208ff1545e77e81b7d78a4d19a858e4722177ac8fe0453bcef672c348c7703fe1c53891e4a520348d11debb43102fd2450864";
+  sha512.run = "f92ccc2cbb8edcdfcaa5d4c27192aeebe75cfbaa3d42077d3a1e87309b381798d8bd6836082e4302006e51d0a79e8676d0f831a790aa7436e0b992d4bdc78d8c";
+  sha512.doc = "ccf0b4ee3b6914e26e485c8c292bf421da30a76a1e0dfc03f61a290186920f37163b0ff2ad1102b30049b58844f06c888d70d2f6e506ad7ddc2a0ed45ccdc711";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "0.64";
+  version = "0.66";
 };
 errata = {
   revision = 42428;
@@ -17269,10 +17378,10 @@ etdipa = {
   version = "2.6";
 };
 etex = {
-  revision = 66203;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "419c85187d6832c9624c70936b3ad879987f665e54bf1fb9a7ddeb1096d09677693987b187e8d60691235d721a1b995fbda36351ce754b9c6a2a44bd015c0ac3";
-  sha512.doc = "ae5b1f4d0b7746e294697567da95a400ada069223e497d4ff906d13e4515e879d85532675886ef0d14564604163659c3d6715ff00ff29fa06fd876eed9cf60b6";
+  sha512.run = "3ed4f77ffb42e86877ae448acbc84d4ecc7003b9ac4f4c80e88bacd23d729db991c115a736e798245d4b81825f12247ea68ae35e4a9ec3dc6fc147b6153d0a98";
+  sha512.doc = "1b5225821ea6faf8721f6ec6ebfba649d2d14496274b625daf8374ca50e72f94030fd8570e0bdef0bd8ad249f378bd4cfc4d46c1d959eec2d1af01335631c15d";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "knuth" ];
@@ -17430,13 +17539,13 @@ euler = {
   version = "2.5";
 };
 euler-math = {
-  revision = 68991;
+  revision = 70335;
   stripPrefix = 0;
-  sha512.run = "b248ed589be13fa10210052b13c6386f4544e5cce4327902a3e2ab3b5c2a58a611393c1ecad4f72a1d4a4302b7677ff483a42173645ab3462109f9c25fbadd8f";
-  sha512.doc = "620cbbd6eac6adf53bf9ba95bafaeeffcce2f34d6a94d45a4869b328c237a3ae59f18d05c518861d56859f3f31edf16f191f28fd122ad4c456fb5301c68be96e";
+  sha512.run = "331055a1c53976130824f826da975e7ec49d84b993be8a2e4330dba4ee8a48df209140879405307a3d635eb264831b790b05850ed00e8eec98d9f649443e650b";
+  sha512.doc = "31b74c70d914e16a7e4f0bf4a6d94bccdb7656b71eb5024dbe01d25f72612c22577248b3d8ab695a32e58377f315f59ad679b30ceee23f2d7b66444710062f5b";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "0.51";
+  version = "0.61";
 };
 eulerpx = {
   revision = 63967;
@@ -17485,10 +17594,10 @@ europasscv = {
   license = [ "lppl13c" ];
 };
 europecv = {
-  revision = 64037;
+  revision = 69661;
   stripPrefix = 0;
-  sha512.run = "3ea97daf92d91ca88cec92af2a1d3bd1a1cbfcdf187bb8296559ef9132510a34f9e2ad068b78c655aad466392a1fbaced45143186e89aef8f3d5cf5123c34510";
-  sha512.doc = "1c494d5e568514e84a5b9ffcc70ce02c3263f0837a2f97676be92cefadc8b8fdcafcd9b1d225ab753a66bc0878d63d2fc0f4b3a345f76c08da258e577b8f4224";
+  sha512.run = "8e71b214a28fa5cda60a769cc9584d030e348e3236ea57e932ef3bc7d02fc07969e31f83ad2cba0f7bc7a32c41d9f478881b437e003675fa26031da7552116c5";
+  sha512.doc = "ce96aa71bf8886c67c65d0ec4e24e97d45ea4b4a948d9b1b6dd51f79781f0667798fbee8fc2577c13b13860c5a886be2b4eb6bf743500a01e1982e5c8e29ac9b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -17508,14 +17617,14 @@ euxm = {
   hasRunfiles = true;
 };
 evangelion-jfm = {
-  revision = 68059;
+  revision = 69751;
   stripPrefix = 0;
-  sha512.run = "5839d7899e8dd8a5fcae792fe40e234fcfeeca9a19bec8d2e8ec7be0217a73fbd58066f6d094e37b36ab9501d53eafed7f3220ee1ebb37ce767c8dd3868708f8";
-  sha512.doc = "65447d983cd4a2b112966f8bc9de7f9a7eb2c8f38a9266db5a416219ae8b817f82f62fdc79bddcb2bfe3a67c84c6097975f178bce664e7ac23e2f29363c3df7c";
-  sha512.source = "8f31d019c8db0d9c817e5579ee9e3a31b936e91d0270eccb52ee6bfa544d5aedf8d0bb0d4af5a7aaaf3366d338ee0cc47647e211738d956857f57f28770e08bd";
+  sha512.run = "ff08a32b6283fc7ca0454e0071ce1d90b7a6fbf8989ca3eb4cc1f804f002f920890b083e5aa81a9455f57659a4df52b6c4677096621d9dffefa37c318e79a0f9";
+  sha512.doc = "ef98234e6c6609dc9ea6f60027c3dad1f417d677d5177525945330122b9b513a90bd296ba86a1d96eadb52792b5d162264578118872d5a7b1794b4a1a7fe06a4";
+  sha512.source = "348b751825e0ad309ba4d37709d9ea5949448e1a3985b69ba446404316486e40a4fcd3a5c337c26b10c63a6b9051ed4c88cbd1f31a0707ec15242f7fd19ac7e8";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "1.0.5_b";
+  version = "1.0.5_c";
 };
 everyhook = {
   revision = 35675;
@@ -17594,13 +17703,13 @@ exam-randomizechoices = {
   version = "0.2";
 };
 exam-zh = {
-  revision = 67505;
+  revision = 69920;
   stripPrefix = 0;
-  sha512.run = "06aad5aaab885a208b6fe999b595799c2ebf99998f1e341a52f244daf0e4e2bf323f27b4888996755ac64738a70468bbba94cdec94ff8b76998299ea468dfc87";
-  sha512.doc = "076c183310db5094b07c1e9e642a4dfa3e3ce9639a53d0b62bf83377e8ab62bf4b232a0d3446afcf828e9ed0f81be14d3ff95963254c07d2bf0a5ca8f2818891";
+  sha512.run = "d4d15c90b4718be8deec3042d4fcbe8ec497417a3761d8e203f6e17079c613a3ec621d58ce388f26353a5d4d668546aae40ab7d0248ae577e1609e18186b19a0";
+  sha512.doc = "b00e5d88a1d801e38b3ab2fa8286b880348e99ac0f9daf8b28174a6d04b862c995331136a3236801812e05b9bf15e1288268414753b99545abed856141868215";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.1.27";
+  version = "0.2.1";
 };
 examdesign = {
   revision = 15878;
@@ -17697,14 +17806,14 @@ exercises = {
   version = "1.1";
 };
 exesheet = {
-  revision = 69252;
+  revision = 69885;
   stripPrefix = 0;
-  sha512.run = "c659dfcfb0519983d4b45bfd409a155b1fec79332466108f7dc7535b5141baa8c1f48feb7929849e02077d76df15b245b60f6840c1ecc3c4d253aaf218af7422";
-  sha512.doc = "3e10ac55ce9878fe68cb5b34223b8c45f5a8edda7d527efd0cfa2c40cd8fe32582c507aa03b50afd0c7a28a251786ac5cee4a9612789243993db2cc656c77780";
-  sha512.source = "fe8d5b47bce3c0336ac7c0edbfc0d27580712d72b108f612dac4cb0957782b8d202244c84a205fc1731b667ec4986df8338cda346ddfae33f19aac03fb83516e";
+  sha512.run = "80b24d8740ff9d633b852fd27c2bf6c6ba00465c620780a0184fdd2c0944a3d84fb467561602cff66c96657d6feb983225f529c72419c81579aefe2a10885735";
+  sha512.doc = "b6e1f6534deaaf685428d83ca76716309c33f9bba4799a59d9a5223d1594989c81bdb568b4591ef3c58fece8cf4b9849c309e34b2b482478d1b4994d3edf3455";
+  sha512.source = "efe535af2043be2f2328b52c2c5fccd3aaaa1e84b839d0b793f1fddaf18b277b9cd1f325f94fd9cdd87159b28928b4ec2085830a5a1bac0daa2b31d98b165a2b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.5";
+  version = "2.7";
 };
 exframe = {
   revision = 53911;
@@ -17756,13 +17865,13 @@ expex-acro = {
   version = "0.0.3";
 };
 expex-glossonly = {
-  revision = 68860;
+  revision = 69923;
   stripPrefix = 0;
-  sha512.run = "e7d00f33d6a63e27524b9ea2fd7cfdf5f55bbcf3a0190a6967fefa11b4cfde4990dbda74da0ebe14e6fa76e8e0e4b5084ba352e39dff46f8e2028aadd6dda26b";
-  sha512.doc = "7ff5b9dfada3ef37c0ddc28a472a33a816d52b7b9b265291c640527e6b8974ca21d5867f7e271856a920589062eab5563b29c919a7df66b51af93af5e12fed5c";
+  sha512.run = "367021fd290eda11945ba892fee935bb6c86d10427c86232acc000e409d254f410fe7a1012f1870f9c6911a2e1172dd27eae3ee922daf5804433120ccba46015";
+  sha512.doc = "fe033244e38a76c3dc6cd3da6189980184e0dd95d74b006011881218e6a385e468c7e59c6dd0da60967f3a8a31c030a1ab70e209c054f89ff1d90e802519edd9";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.8";
+  version = "0.9b";
 };
 expkv-bundle = {
   revision = 65623;
@@ -17906,6 +18015,15 @@ facture-belge-simple-sans-tva = {
   license = [ "lppl13c" ];
   version = "2.1";
 };
+fadingimage = {
+  revision = 70610;
+  stripPrefix = 0;
+  sha512.run = "c86ff2a9387a4a1e0713a42a6a95bfac953bdbdcd2d0a5b1de918d7f5bbdc39a00950ad7e9ad1705245a7f8f6021a4b3a676540930c81d9cddb7f87fd9bc8477";
+  sha512.doc = "1350c995bc94b4d5c8a0d8c0e88dbbe1dadc82cf5b75be09be3a0c3fee90ee6451934154488d5c2a21ce8451fcc7ae8544f7938aa692f96bb133766a05b49730";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.1c";
+};
 fail-fast = {
   revision = 67543;
   stripPrefix = 0;
@@ -18049,13 +18167,13 @@ fancytooltips = {
   version = "1.8";
 };
 fancyvrb = {
-  revision = 68772;
+  revision = 69536;
   stripPrefix = 0;
-  sha512.run = "1288adbf30e9bb084d242dab84450a60b0a9f342b20600518ea324b01223f61996576b4713b476c3cda41963047880a16a4e54cc773a0508cca1c14ea8230c2b";
-  sha512.doc = "b0fd885f1d5a1711d422f1f5340d954d6f217dfa69fbf2674e0523e335681b39270579d2e66e1cdc5246dff251725d7181f983b900899b80a927399b00f1f34e";
+  sha512.run = "816a42630da356afeba3d7f0dcab924edee8a0d349412cb920a3ee21d9e1a57cc65e1655ba6759e7acd6508532f4ee059512a8997b964f923a59a57f548aabcd";
+  sha512.doc = "4dd0ce373ac1fe5b44c6e9470790e372e240f91a8b7add6ed4e0237a22a68309bf8326607679817d5b4db975a286340c469457d8ff4664a7d7a74e65e92a4a5d";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "4.5b";
+  version = "4.5c";
 };
 fandol = {
   revision = 37889;
@@ -18284,7 +18402,7 @@ feynmp-auto = {
   version = "1.1";
 };
 ffcode = {
-  revision = 69383;
+  revision = 69706;
   stripPrefix = 0;
   deps = [
     "environ"
@@ -18294,12 +18412,12 @@ ffcode = {
     "tcolorbox"
     "xkeyval"
   ];
-  sha512.run = "c71ca2c5aaee2d7c14384fdb9655d08e92aec6b721ef906dc8524bf2833ae7893497ba67840935c97b76ebac9318a3c321af7030573a9a57c384c11dd1862faf";
-  sha512.doc = "9239c853483203eb42b1069ac1135b360af07161426c77bcf8684626b19aec169af9a2cdfe9caa7cc75ec322b191ad4ddad9b21daeb546dbe5541d66615abb12";
-  sha512.source = "a52bdf256577148636f06a391d35a0a9c59dd73b91f33b43f3f9f0a796f4995140c5563f4644a1f99cd015adbc260b67785a5c50c3af649c45a69495fd8e7af9";
+  sha512.run = "0047a3b5ae171d3636a80ae583e2413b805546baa662862894dbe6dba92f3e4c20fa1b55d1862dfe968f0b738f2067a4aab294278b1003c864b5c6a8702590eb";
+  sha512.doc = "72f09440fd91ecf532ada964010fcd364ce30abb200da2285aec45a2bc1d11b97b7b557f19473e26cc4d690e96a9151f3cd8129aaeb28eaa3d3f26ed5d230333";
+  sha512.source = "eaad3fcdcfbceeda1c991c5961094cd470b384e4c749ebec657c5b575190b35eb28ea7ee88aa113b829f1fffc225a61f38d5c61e28bdbefc133c55565ef03daf";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.9.1";
+  version = "0.9.2";
 };
 ffslides = {
   revision = 38895;
@@ -18546,14 +18664,14 @@ first-latex-doc = {
   license = [ "publicDomain" ];
 };
 firstaid = {
-  revision = 68720;
+  revision = 70324;
   stripPrefix = 0;
-  sha512.run = "0d15794f22485c3cb922b0d1108c33f1dc3dad9bf8db46278deb8079bb966ca0f3cc1c5454d82e43f604354b578c9da465a34440670b365fab4f7bab32809603";
-  sha512.doc = "6ee8e2e67d8029551e8224a4548b425188ca85298e5cfc90f9f1b95579223c840a80aad4d4a56e36f8d0c336778cf62c8b025d3f4df215d94a310beac14b1181";
-  sha512.source = "2c091df08953ae216e713567d1af4f0dbfbe25c4d593ddda22791d353002cce85829d3a8b404d0a1a441f67264b778c3137842388159f3f551fed249e3ac711e";
+  sha512.run = "610aa5b4c12511436b7b26145f24c294a3c98e75a9b4211198c144e8c0cd58142853d0d581ea0bd620a4f01f48bcc186c40db1d0a27ecc559bc5ba012508bf59";
+  sha512.doc = "36a0180f0ea5410157c03fa26a7c185229f5a6fefe517659f6cd1d5cce7425ee18c58909f985f500987bdf1d9993bb0d24d58dbac21121cd0bfedc384b3de57d";
+  sha512.source = "374f4edef549e60798f9a44ba2e795f2b4145acf7164fab9ea170baf294670878499ab9770dd3c0a1d1df49396db17b827076b3e5049437e0d8d7ea1e7686f64";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1b";
+  version = "1.1c";
 };
 fistrum = {
   revision = 66461;
@@ -18585,14 +18703,14 @@ fitch = {
   version = "1.0";
 };
 fithesis = {
-  revision = 64135;
+  revision = 70536;
   stripPrefix = 0;
-  sha512.run = "faa49ccde90ef577cc5cb7bbc36c79670d8d9184b9857f40b17bd64101b24babcef7b62541a42f8483578be29a16d23e1436238242a3162d42aa8f491d426ebd";
-  sha512.doc = "efda2236343ecfd0e655bb31d6a73109fe5b91bd17b158bdc4709175dbabc7798d712cede1b4ef62082cb8dfbf5634eaefdcb230bb92643bf5c3eeb15de91c85";
-  sha512.source = "9a9c6b61571761a4837e2ebbf5b584d5de268e1ac26fbb2950c4b13b5afecc59f2613d3e90ac9532b7c4ae0a5d5bacd198bbb813c7bc2302f850e9f9462c5de6";
+  sha512.run = "09bbae20efbe651a7cc5ec01c0a3f2b97aec3af24efaf21935992c7ee63841916cb29ea81ce7a916bb6ac4cee74cbbd3b02629b9c8c7467397dfb871e863fe54";
+  sha512.doc = "4a476ca775b7571d4bf88e20e76f0acd8d36778a516ce5c778682b92f0de92eaafcd671d8ee756b9ce18f136855752963e994eb8f6e37611517b68abc9a6737f";
+  sha512.source = "51b654e9880727283aaa5ea262dadaaf95f801980bfa2bf43c495e9315e60684566bf6972934ee95863c31e9e827462200527e1df26251cdb62caf0e660f2fc8";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1.0";
+  version = "1.1.1";
 };
 fix2col = {
   revision = 38770;
@@ -19143,14 +19261,23 @@ fonts-tlwg = {
   license = [ "gpl2Plus" "lppl13c" "free" ];
   version = "0.7.3";
 };
+fontscale = {
+  revision = 70541;
+  stripPrefix = 0;
+  sha512.run = "95ac9aaa5ff2ff9b9108bea483b23ef415e825beaea1b1573b1869d441c9ce34188b47241c5eed9b5762931823f015c0f05897d7085b2462f1f401c98ddcbaa3";
+  sha512.doc = "28eb33adf132aed909f74211c538ab82f4cd5a958692a20a4692f9774a60c44e984fea28949366e3ae28d507088eeb1584592fefa1abced2b7bbf29bf9c56c41";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.0.1";
+};
 fontsetup = {
-  revision = 69390;
+  revision = 70135;
   stripPrefix = 0;
-  sha512.run = "f291077a88db97fdb486cc14ab24fa9b2cc1b00808f8d691c3313b302715897188a9d16dec192d477b4fc19bd22bf2b9e0cd92bc1a11b079ee5a88382bb38ad3";
-  sha512.doc = "9318253e03673a6ec79d33afb2632a81354fdf0f29fc429814dc3f00326275479d8bfebdc58bf71456c38a77ba22afb1be29b2daa408c7c3e4b1e149fa7e958a";
+  sha512.run = "e599ae4f458be9375343dc4eade6c4ea56175224b785e48193af974d0b8f4a0d1f9426f8bd0fa22b15c962b7e10ef856f938699324c4b51e46d3e06602952e02";
+  sha512.doc = "18c8d669b19274eda6e8daffe5fa3e6906a98026052ac668ef51e97e2e49e73b749dba7ac369d532020faccff121d210b5c1ec3540f353a98fe276f4aebd4c2f";
   hasRunfiles = true;
   license = [ "gpl3" ];
-  version = "2.1.0";
+  version = "2.1.1";
 };
 fontsize = {
   revision = 60161;
@@ -19163,7 +19290,7 @@ fontsize = {
   version = "0.8.5";
 };
 fontspec = {
-  revision = 63386;
+  revision = 69880;
   stripPrefix = 0;
   deps = [
     "euenc"
@@ -19173,12 +19300,12 @@ fontspec = {
     "lm"
     "xunicode"
   ];
-  sha512.run = "fc4516b96eefa9cb896488510f5ac531446acfa7993abc2f361751e06fe95128afbaadad393dd7ce8c22ea731c81ba99cd8182ce8205c55f78f64a69ba815996";
-  sha512.doc = "e765756f93f1aeb03acf0f15d3388c3a39156f2bc46e951ab5c2e4596ac9babd975af025c0881078f58caeacc3281d3769a701f112b17f10ac474d12b4eac897";
-  sha512.source = "286db8b9c512c02f2333860b5ff2c980b8b5680de92fc896c95611f2cf1587077f47f9c0aa0e520ad0f64c6f031f8a2fb310f67034ebaca286076d7764bfbc99";
+  sha512.run = "3d49ce69d6830cb4bcc16b0df3fe86335761d71fc8b930470ecb4e38f4131c40c534d8c613a252d552b1d298d61968e5bc2aa574b0299a9f7b9e79b63711d442";
+  sha512.doc = "1ae04a6e17c2ef6413e9cf21ec7934502a3fff3324bbd274dec1837916accc6da5f09a25816d99abc5cd0a431b0e652c44a2f570ecd69f400f56421ed172e58f";
+  sha512.source = "48177f9500a5248dafb333965cd640e600aff2591a4e53f17b9b32a6c7042559e32d907ae5e2e6978389caaf13dddcd0827503fffba35b647974dd67d13f5c4f";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.8a";
+  version = "2.9a";
 };
 fonttable = {
   revision = 44799;
@@ -19222,11 +19349,14 @@ footbib = {
   version = "2.0.7";
 };
 footmisc = {
-  revision = 67556;
+  revision = 69729;
   stripPrefix = 0;
-  sha512.run = "814aa0a1add20812ca241280a408c1bba21920c2751f171a67532aaf6e4dafd786578701a7f431a0295a139052c8c7c37f46c7e4df35e6fd14f468a5c7181b75";
-  sha512.doc = "4a257a2b7620bc8660785ab5d8c8f167ba044e2bf8fc6b340b8645c549f9d4c528d9fec9110671f1dd757892c6193681bc845b57a7ab722423c8184a276f8043";
-  sha512.source = "514acb8de22592d5211c97ad8a82659374e574c4ed972604443036381875d33d2e5956788fd9f9577ca1feda59290209f5165568dd00dd0f059dc43fba4efe14";
+  deps = [
+    "bigfoot"
+  ];
+  sha512.run = "7e205e392bbc933c6592f91afa053573f174ea83b07d81a17a144b29bc3837ba4e6639c56f5b07a9840e141e408163cbc2edbcee5fb7b159264ebc54f4a09645";
+  sha512.doc = "93d3ca6476356b7a0ed955edbe442764740d32db58dba91276f6bd891ca4009c3731872a703f1621e344a69c401cd70a7cd9e5fe2845d7667a8e0dc61e2ad2a5";
+  sha512.source = "6b2960dd45ec7ff85cbeeac863a068c3eae5d161b19811f447fe31b572a7a11006c3608ddd34a677ade6c69e781bcd7938dbe451b0dbebb6c82708b393d363e6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "6.0f";
@@ -19346,13 +19476,13 @@ formal-grammar = {
   version = "1.2";
 };
 formation-latex-ul = {
-  revision = 68791;
+  revision = 70516;
   stripPrefix = 0;
-  sha512.run = "c1bd5690cd7aac8a9cf1b608b19d620c898474e80667594750e6ad5935fedc56f6e4352573cb3700476ecb627195fb137c8404d3701c30ba457960d9f832e42d";
-  sha512.doc = "747ad5d71a58ecec9b83c7a81e36df065b2b374c0ee4deda2a797165eb1a883e270d57b9951b61b3310feb397dfc00d81eb38a0904c2c8f187aa04d8929a2681";
-  sha512.source = "a1925f332e6a20fdd2e4926138ddc88fd5b56213a44d67a5f8d812b3ef10f1d619fc8bb47758d74c5c9fbf34837023c44394637f848359b98c446f98cf8da62f";
+  sha512.run = "f5f29f4a61b1c7145d03985079bdb3fb26a4a627a6f839b3c9020569388abacf501e9a285d29de66e7e3d6287d255c5549aa389c5fe42fe0093315b01bf963ab";
+  sha512.doc = "2a64b940b37d3c460db5c31434a650cbe5d61d361ecb6d3ced250c65a4d817eff324fd296c137fb26a144fab77cdb2c93132bbab11a3f50f3cd0acff87812178";
+  sha512.source = "d2c09f1700193814485fd25ef4a119875821a39a54a52429ef2f3889d276a9a50d74cab2df73e77c4ee62d96a413a5a8b488e216f9f11e5d6410fc0337662156";
   license = [ "cc-by-40" ];
-  version = "2023.11";
+  version = "2024.03";
 };
 formlett = {
   revision = 21480;
@@ -19475,14 +19605,14 @@ framed = {
   version = "0.96";
 };
 francais-bst = {
-  revision = 68686;
+  revision = 69866;
   stripPrefix = 0;
-  sha512.run = "0a8216e8553b123c82d773637bea5ac61a618116974786b485f16eda33896f404458d755730ee12ef8971cea2a8a4e67ecc697a0c99ad59c04e3bdb2e3dd0e51";
-  sha512.doc = "5a58a8b2afbf99c2a4b1eef26d7dbc16b345ba5c1cb3cee50d9434b577d73145e0d15d2977fb2947bd2263d725b68f01c728ea028f5c9192f76831a94e2ec23a";
-  sha512.source = "a0b490a291775ca178efefa8a432e8be6de8a2794018d2fea5c38ac8ed1df2b3d15cddea6421217ee5cf84056252b2de2d584664de376dd28ee8704619cbe314";
+  sha512.run = "02581d45d6d205f0251c216435e068a44b7733ca23dd8f47df119a7aaf6db8efd9eef892e71219219713ab8031a77c373826c8b259e5c7f4f54f6b6edb2d8f5c";
+  sha512.doc = "1f4a474fa1b953e9809315509c664fba06490dcef123ff8d1de32f05831fccafe45788a8754bcc70d6df687a1b75645d6f36ccfbe56958166e51a471e6c703bf";
+  sha512.source = "3125847740194c77fd502d723fccdcc69e5ef93a1997ae46f1dac1b5a7b2a2978fe8a8f55346b67f2bc5b5c442f562a4ec3dd39466663750c7af7bfbd17f216e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.0";
+  version = "2.0a";
 };
 frankenstein = {
   revision = 15878;
@@ -19529,14 +19659,14 @@ frege = {
   version = "1.3";
 };
 frenchmath = {
-  revision = 69211;
+  revision = 70163;
   stripPrefix = 0;
-  sha512.run = "d9ade8b4e036beb17c2aed0903531fe7fd29de51d1848504803ee3c9be83c4cddac2e33adfbcc94124fcc1f7913520a0da633c499d9bb4c4146796a1789ec369";
-  sha512.doc = "3348e8014b3468afb30be0a9ed36bf6684963d1aa7cd325be8050a03c668221272bc009b0883b0ebf66cbd18eeeddf5ff0d1ffa416f24e3c362fe44cc0530c7c";
-  sha512.source = "223cd3352eee8ee65b48d599677433b7fcbc4bfd7faa5f1c0a99c62806fecb9a3d3f2381907708fcc090637658fc67c43537b16d264bda60a10382985846dc4e";
+  sha512.run = "dc8bfa123818c5e3ae96194158cccee72c29bae0b59dac01014750d1907039eed6ef3f24f08a32f08f15320c28e03bac3a9f052010e4609108bb5b4a4ff97397";
+  sha512.doc = "1a1146f868e4d68014b080462cfce94f0f8362d23ccd42fe2a16fc526834850939aa10bc60dc65e5a66c35d40632f7c7b1fc607548b966424ebcda59104264bf";
+  sha512.source = "9a3c55e4d175635953917751c57b9f762a20046f1967c47a022703249a0fdedae4264810b16bc4188d6b19ec3836835e2d911c78fa7769bc1701b906b8898f65";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.7";
+  version = "2.10";
 };
 frimurer = {
   revision = 56704;
@@ -19652,13 +19782,13 @@ functan = {
   license = [ "lppl13c" ];
 };
 functional = {
-  revision = 65485;
+  revision = 69929;
   stripPrefix = 0;
-  sha512.run = "a8fd828e18a6162811bf750bb631240a9e1409e52db682d2b7285c369ce2d425889c7e10e3eca98d8a49b496ff7e276b78af09dffdc87769ada063639f165f35";
-  sha512.doc = "d8ea8ef65648cd46cc8d9b42e0b361a3848078cf2e92abc4d3e8cd2f115320bef414b2a8c762ddcb730ca92204c4c3c33c11d34b804c4497f26c804e53744aff";
+  sha512.run = "efd3de1e1944193caa18069a1478e19bf602f1110c880ea14d9d7af146d4ef0da5c84078afcda4a26a326f01978240f6c011212424f029c491148317a9b60e43";
+  sha512.doc = "1943c1451b357fe05d2586651cf52e8593927847ad3f88ab21d89626c8dba63e0bdac8e702dc79f7a8fc4ea8ea73c7b6fd05e19e57caac28adf5f1d53acbafb1";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2023A";
+  version = "2024A";
 };
 fundus-calligra = {
   revision = 26018;
@@ -19799,13 +19929,13 @@ garuda-c90 = {
   hasRunfiles = true;
 };
 gastex = {
-  revision = 58505;
+  revision = 69877;
   stripPrefix = 0;
-  sha512.run = "7f75503d009584119967528fabbd72a8f0b0430cbe67fcdf4ec0e0bd5dbf63279e10ef32c897eab9408d518a1c1d1d01d3a428e9b7f72cc4d7387e3b692a6caa";
-  sha512.doc = "86f3ee5200e41def7d13df25d175c955c2df562652c4783c8083249eb924c01556cd402bf2f4cf44d02f94cc280e1643c2ad2261bbd191678e3c9039430d1c58";
+  sha512.run = "1716d7e7a0327fbde392a435b783da48382adc8e5751f06730dabe655422b2bedbe6d6ddb589de67d3d15df0b97354bae10aaff81df1795f01e44d6c7f90681d";
+  sha512.doc = "417c7ac005a4d754dc5d6082e5453f400aea53f61848efd244e97a3c6449346d2fb77989598113b15d16d81d70a9abaaa06f39ebccb542fdb88265e1dbf170ab";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.0";
+  version = "3.1";
 };
 gates = {
   revision = 29803;
@@ -19928,6 +20058,14 @@ genealogy = {
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
+genealogy-profiles = {
+  revision = 69580;
+  stripPrefix = 0;
+  sha512.run = "36b0b0107bf8999ce6d2a0ec46b792dcb9cbd5313734e2cdb2879bd7a15d8f70af09fbc831b6183412cb72c44eb6fe3202d00a0dc510e1314ce7115d78be12dd";
+  sha512.doc = "52f75186e84f03f21e33bc1b5ca935bddf8f45b348ee5dc93d82506b444cf72a1a51c4a33b0510cccd8e89cd46a74215e6acbeaa5d2f32953ff7ff3629bea5b2";
+  hasRunfiles = true;
+  license = [ "cc-by-sa-40" ];
+};
 genealogytree = {
   revision = 66513;
   stripPrefix = 0;
@@ -20299,13 +20437,13 @@ gitinfo = {
   version = "1.0";
 };
 gitinfo-lua = {
-  revision = 68808;
+  revision = 70117;
   stripPrefix = 0;
-  sha512.run = "797d0a601440a08d5e1f2bc24ff275965e1412d545ab4ed88d8f174154d38da0f7c18afd10546d7f8e1bb0b98d395c9a9a36fae79cae671360124f07516b530c";
-  sha512.doc = "8724e388bfb545f5ffeca862094c9a5bee2d5635e1beec0e7d4f744c46b03ea63ce293a6a193ebcda5d53b6b54d3c96ebfeef6b5f15a1439d6ae6d4dc01ec31d";
+  sha512.run = "cbc201f194a95f27ed11a12f555b8296dc68b4b0895ec2eec65d4f22dbc005716bfb92f46b342acddf023475a9eb7571ce3410efca50755589b6513e025cab8b";
+  sha512.doc = "b5b284e2d6abc36e97aab127592c6c928d737b8d94178201191905b7179786cc6a5520364d1ce0ff92551de5ecf89aafc4ed336b145591b747d43d6380bf8815";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0.0";
+  version = "1.0.2";
 };
 gitinfo2 = {
   revision = 38913;
@@ -21220,14 +21358,14 @@ gustprog = {
   sha512.doc = "268a01f59660e5225c1c21539076e6239381294e6aaa31992032ff8e3d777cb7e4195247c92d9f22efbee498c8bac34cdb915e0a5b0f6cb2b5c0b72c15695d72";
 };
 gzt = {
-  revision = 63591;
+  revision = 70535;
   stripPrefix = 0;
-  sha512.run = "5a2e547bb87b29649169a5114fb4d4175a7630473f30ea28ae00d6dc29bc6a4b3ee33a07c2e94fb6ee4b4179a0bd28f49a72a3d3ed822d852524878f34d77af3";
-  sha512.doc = "5ca5b4dd6e86cf2457b384bb663192313110e4c2666a827c10f36e348d9b8bfc37f9f69debf275728f822a8c01656a2ede34c2873dce1341c3d1e2b054e9934e";
-  sha512.source = "e5785d489263e42fa22e1aeec7d20211dbfc234feace273b4371b44227ca3342c68aa547a19e37608eab354ec1794f313c55a761c555922e0c3de408d5299d0d";
+  sha512.run = "8c6cf2243e7539b0ba4f84e36a634e46f6a59d57a5d5c58df0ab77ceb031301048800c35c092e3cdfa4ee08d1d61a1a5ca27a6648f9be5e658deb3ca16cf6698";
+  sha512.doc = "08272184765997826e89cba2ef02c4695956f14ed603e32f602884dc191b1a81b60e654abad20cf50bb377b96ca50f39fd89234deaa81cf3a66a311445c98f07";
+  sha512.source = "6654412d1c9eafad470db5dcc6045f2872f1b505e498d1243a9f26ba76e3b3af11567af78e242268d3d338bf7ddc9e5f2546b730b0772718bb0afbe1cae99827";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1.3";
+  version = "1.1.4";
 };
 h2020proposal = {
   revision = 38428;
@@ -21748,13 +21886,13 @@ hershey-mp = {
   version = "2022-1.0";
 };
 heuristica = {
-  revision = 51362;
+  revision = 69649;
   stripPrefix = 0;
-  sha512.run = "bbadd84c1cc0825f0dbe72bdd8f5c4b939ae1986dc0f97ea80ecf12999f97d455e2f89cd12e71e8a51ae4ccadbcb01ae7768a60a47b9b35f19b98ea17332372f";
-  sha512.doc = "f445e4588ba85a71af43640e6625fe1fbcb1f8a2208d2c5cfc7fadd1df325be3fdda85b9da4dd824f3c0445033b2bd9e2120e71abf61c6f55b9e828a3e61a87e";
+  sha512.run = "de0cae8f801f690e2d07ef7b63ad4c91d91ddafb8c3044441acb9d6a8e943f1c1667e17c0d2d9e4677b3a1a562b072747bebeeb01ded4bbd713b4e6103221a4f";
+  sha512.doc = "406d07cc807454c429e644b7572456b2d9f49d2f48093007c43cbd3087d108beec1806f810508a849bfced690c97141ab34a2daec7ec641c8bdc71cbb55a43cc";
   hasRunfiles = true;
-  license = [ "ofl" ];
-  version = "1.092";
+  license = [ "ofl" "lppl13c" ];
+  version = "1.093";
 };
 hexboard = {
   revision = 62102;
@@ -22055,16 +22193,15 @@ hologo = {
   version = "1.15";
 };
 homework = {
-  revision = 68773;
+  revision = 70050;
   stripPrefix = 0;
   deps = [
     "einfart"
   ];
-  sha512.run = "4b74d0a93d720252e38f7b8452cd781f37de2e17343b5003ef729f1b1d2b50978ca4a22c83fe0e5e941b92ec9cc31ba4301b322e3c4e2bbf18f96d8d14c0ca81";
-  sha512.doc = "e1c29c37dbdbfb968409a9bbc8c64573dbbbe477add7a3c938162a8189cd0689ceee8c2913b59a2cae21099cb0f0ef4db8fe7b23bb802d884ec20af61896907e";
+  sha512.run = "df7e3907150a637b948ead1db86158058a096ca1df98789f012a6e2ad2aef2d4b84c17dbe0d11ef2a459f1fcf9708d5775bbdee25c4542eb3f5439b95c346c89";
+  sha512.doc = "6dbf5889b71e0022f87c59008b884b49c7e882d99dc2e7dd39a2e04d8429a71064b71ea389279dcbe919b1d04da9dd3bb6a4998c066aa507ae64f96e95c1e94c";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2023-10-15a";
 };
 hook-pre-commit-pkg = {
   revision = 41378;
@@ -22149,7 +22286,7 @@ hu-berlin-bundle = {
   version = "1.1.2";
 };
 huawei = {
-  revision = 68336;
+  revision = 69871;
   stripPrefix = 0;
   deps = [
     "anyfontsize"
@@ -22192,12 +22329,12 @@ huawei = {
     "wrapfig"
     "xcolor"
   ];
-  sha512.run = "97c8608c51635abcca6daca84e911d680967aea81ee4984a835245be32ddb4b97345e2714761e0399d3378a08619044e17e53a9bd935e44953372815f16d50fe";
-  sha512.doc = "e327912bf029cdfbaf1857534f8e5174d9bb26d5d1a2a271b3b0a8bd4bab1bdbcb8372b6f76f7c75d058f731baa483d58033f9c5ed82252e6210de4946c93128";
-  sha512.source = "f1f27f5baa2af8de2613aaeba69ac8562c6f7791ced01871c86c4dce3f25c14105003f8d636b3df3c3d8c04d81dfee4fab57150d80e58540db02d3d909dbaea0";
+  sha512.run = "0678b16b3fd681a0d1b8da43f87ee2d0d42510de15fa84733c008c8e8298de0f9172ed0046ca58862539564e960b94b3786233f277734320e74678492e5bb3a4";
+  sha512.doc = "640d3b244481aed907025fce0271a81cf31a55ba991f599c87e146c005c6349078993b43df7d8260475c82d5abd6d23e77988cead11f0b74422c6bb231bf3595";
+  sha512.source = "dcf0989d3769ff2e43580953f009efa4d9372e58d45af5821e81e8766096568a59ebb1ec21e68e2b1696edd5e2cb6f9fa4ee39daf3e2d46d10c56a2f0dcb0e5f";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.18.2";
+  version = "0.18.3";
 };
 huaz = {
   revision = 64723;
@@ -22247,22 +22384,22 @@ hvarabic = {
   version = "0.02";
 };
 hvextern = {
-  revision = 69064;
+  revision = 69651;
   stripPrefix = 0;
-  sha512.run = "c9effc6265c66681233309eeb19707f0ea1acb670934283c88f9fbecc4d91c07601c8cb84a06bc7d9895494ef8efb5fca1c00f658ce8baf7489a6c875d8f28ec";
-  sha512.doc = "f7a6dda6ea0d327d8596e68a5880a3ed0d4811d1f89743aca9219e9c26d6f8746a3ef569af464b81410b002047c53cad2b9dfdf783a0515d4ad3c3d322d4483f";
+  sha512.run = "2a2237872220066195c4ee4458eef20c01d6d1b9bffbb82efff08522052eba3775820bde7133cf9417ac591d2196f06d0f8400edae1fb15c82489731e4b9b28f";
+  sha512.doc = "c77b44743e598b7bc3c7963a21d02bbd50e53b3346c102aa72926a46280a7aa39c6e48eb220ef1f8744f4f1dd2252dcefb3d876e788ccff1616fda4d55862a5c";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.38";
+  version = "0.39";
 };
 hvfloat = {
-  revision = 68586;
+  revision = 70400;
   stripPrefix = 0;
-  sha512.run = "21124f93545ffc5a025e24a09f50457aa16b8936044c4a510a626c812ccb13cc028e6ef6cd89fb64064c39b328ed47d227d40986cab75d6efb54c734774c3cf8";
-  sha512.doc = "737fd24c8fe61f2af825ba28b71a16c2e094a50835543c8fea6b317cefecda94602afdb70c8df24a671a1e9af219350acaa368295072fba1193de8db566eca40";
+  sha512.run = "dd24119659fc1b0d359488451218cabba05b226469c9a56997f6ae491fea42cf58d7b131f7e6ddbd576ae98d94575a9518aa4bb5d10a97875c0e19b647f0c250";
+  sha512.doc = "98b26dee51f787d82e49f37fda6e902c39af3c5e0618090bd78e2577d0a080b7cd511064d7b41aa4e356d4ff176e87c9b68399d1e06532e20b6d392d3e714851";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.47";
+  version = "2.48";
 };
 hvindex = {
   revision = 46051;
@@ -22274,13 +22411,13 @@ hvindex = {
   version = "0.04";
 };
 hvlogos = {
-  revision = 68568;
+  revision = 69581;
   stripPrefix = 0;
-  sha512.run = "1d1c1a5944950a71046b764a76c7cdc05f6e48b08681932504009299e9d78bcc3a03c57bde36df6614faa0efd8f6af84388a02ecf225bd95e596cae0cbb69d66";
-  sha512.doc = "55b3bc2c71c8f110e39efe31469573879b65058675dd5324af9075f2b9f1d64fdc8a2121a963f88e67bea8156dfb5ca4a4c972bb70ae90b358bff209fc5a4695";
+  sha512.run = "eabf4a92462aa7ead3ae7930400c641d6e64b520867c9e7cceaa48872dca31716ce965cf105c784b725878fad05e6d082a9f9e9cde94b254c780ce55f7daf515";
+  sha512.doc = "3124f1521eee4688e6cde38bb39e9c4a123d5d06d008b23447495fdf11f3b3f8ff98f138f2096c322ebbd8f714e60208958b0b01e98c6b81c09c80eb2908424a";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.10";
+  version = "0.12";
 };
 hvpygmentex = {
   revision = 62405;
@@ -22292,13 +22429,13 @@ hvpygmentex = {
   version = "0.01";
 };
 hvqrurl = {
-  revision = 68693;
+  revision = 69723;
   stripPrefix = 0;
-  sha512.run = "b9a1e88f38b18744fa66d490fe6398bbfda8d0a81a9fa37edb5735325351f5f10f28a7452d8a2d60470afe7faf878c58b59220a8c20ed1744c2be16e8f94db60";
-  sha512.doc = "ae54369788c2ae94dec99c13c57d2c6c42852670d067c97dc8f108dbf910d5a2cb212576629322ba791e56e655b14fe561ba28bc120b07cc9365312dc2bdebdb";
+  sha512.run = "cfeaea8387dfd425278cc9a8f278d7a0a1590336e24a8b8112b6407a808688012c970822973fa7b4a2816fdf0422171ec6e2926bb51a012f02c7a5b273465a9b";
+  sha512.doc = "ee7e0e77406e2e486a2898710953db49aebc28a9bf39d0e40cda20c38a1aa67d0f48f7936fd36bd417658600f82641f6f7d39d12b328d615ac694abd49d76f69";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.03";
+  version = "0.07";
 };
 hwemoji = {
   revision = 65001;
@@ -22377,7 +22514,7 @@ hypernat = {
   version = "1.0b";
 };
 hyperref = {
-  revision = 68972;
+  revision = 69523;
   stripPrefix = 0;
   deps = [
     "atbegshi"
@@ -22398,12 +22535,12 @@ hyperref = {
     "url"
     "zapfding"
   ];
-  sha512.run = "e7daa9af79ef0ee5bb1ed13d8b7001a995d15fc5a839e4d102db7e5d7ad1e76ebc2f7c939b17d554d06789c225bf134177987743c58070e553a6e25a7cba96fc";
-  sha512.doc = "17e70d3008012178b1210bbdcd3abd3c39510dba1037753b2b4324b1f3ab832e0a6a634dce31d32950d1935fcefbc756ac1b7afc86b8f27f9bbee8cfe7768e7f";
-  sha512.source = "0cd806c9e404c93a96da335c8e26ab66476edc29f3f33a68e09ff290dbb3b69705443bbf8db5f7cdc85b702417b5e59f7e89514cb346aa0693c9ff65bcbf882f";
+  sha512.run = "71d43dc16443357600d83779628922c0f6e4ee1b57b562b9a47cb7c11a2710ac1b573040c661819e71086107fbb6e7a98851c1a99a10fe5db19d406e98c0ed95";
+  sha512.doc = "a2893e722d6aa2be885ebb15a96ab0f30c71811dc3b4e9791e2a6c2ea78c2cd6fdf90e485c7267e533f3e90eb71278074d6883cf4e6fd6c7d9f2a2c744ea6012";
+  sha512.source = "1fcddde0f8e9c057d1ddfdc31616f1e362c57ee645f23c71cd9e94bc86f41de8ea32dd478f9df91cadcd66f1814072c5b0dbb2c2ee89f3f477302577ac603edb";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "7.01g";
+  version = "7.01h";
 };
 hyperxmp = {
   revision = 68251;
@@ -23284,17 +23421,17 @@ ietfbibs = {
   version = "1.0.0";
 };
 iexec = {
-  revision = 69230;
+  revision = 69420;
   stripPrefix = 0;
   deps = [
-    "xkeyval"
+    "pgf"
   ];
-  sha512.run = "21da64806f48487ec6756ec48aff60eca9406e94177419398af3970fd3638062a06d1da12655551889ce64cdca9ddaed7a8953eff35b23b6f005358586df9eac";
-  sha512.doc = "ff9c90d8a14d72ab3f03cdbe177dfc58ac8cd2fb217bd2a827ff9d14716afc95d35a647b6fc1bef77a1268175f64edab81cfd8d54b35a4a332543c3950beeea2";
-  sha512.source = "deccfbf6b069d9a4542944fe229a01ab85c845d3c84e38daa1c11c86d3dc0db4ace5e3c45497873323ba7c3033870c3bcb2de16ae3f7873ff738247e51b99af9";
+  sha512.run = "c9b89b8d93868060d969ff2943fc5915b831f5354a78b87fe99edc3b475875ed10349934e6cc23376d23d3fbd8e84234028bb4d2ccd49a30e8cd3e3b20035311";
+  sha512.doc = "7226a854dba47fd91eca3ff5781e312fdf1650b8b3596d4232b353e8854d5cc213cb3f31ba4010016daf4d8683249697290b7886ca8db651b0bce2856bb7e08c";
+  sha512.source = "53b295fced75d6a8451d1d6e9130b3aad977fe7b1e0ad57d67e899920dbedefc297b36636772cedb94bace189efa7f2a65172e44069ba62609961ea0cf8fe2f2";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.13.0";
+  version = "0.14.0";
 };
 ifallfalse = {
   revision = 60027;
@@ -24120,7 +24257,7 @@ jacow = {
   version = "2.7";
 };
 jadetex = {
-  revision = 67493;
+  revision = 69742;
   deps = [
     "amsfonts"
     "atbegshi"
@@ -24197,10 +24334,10 @@ jadetex = {
       fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "amsfonts" "auxhook" "bigintcalc" "bitset" "colortbl" "cyrillic" "dehyph" "ec" "etoolbox" "fancyhdr" "gettitlestring" "graphics" "graphics-cfg" "graphics-def" "hycolor" "hyperref" "hyph-utf8" "iftex" "infwarerr" "intcalc" "kvdefinekeys" "kvoptions" "kvsetkeys" "latex" "latexconfig" "letltxmacro" "ltxcmds" "marvosym" "passivetex" "pdfescape" "pdftexcmds" "psnfss" "refcount" "rerunfilecheck" "stmaryrd" "symbol" "tipa" "tools" "ulem" "uniquecounter" "url" "wasysym" "zapfding" ];
     }
   ];
-  sha512.run = "f169a494d7544e5218dc280937add40b1b0782ee5aeb5d1cebb4aa905bb72334c6caaf628ba04c3b5ebec984a5dd0c78c3c2f194ddbf121f63c5be4adcdb58a3";
-  sha512.doc = "670f0e517d81bb70b54b375e9cd240ac8a6ab9143fb529445c6622d445240a690908d043e583c7bf1be139ecb9a69dae77db74ca9755aac0a604a3eb342cc4a9";
+  sha512.run = "7406670d136a018d8cc7a7e39d4ce6a2b4b58e48c8947eb257a2d014cf69e923fe770f8fd8b38c726b66f6924d36adbaadf59dd9b6f1638a598dcb812a84f926";
+  sha512.doc = "16e2a21e6e724d194f4af66dd67e66fa294332f05222384ba63d5ec76a52d0da12e6381b60735111078cbab8129bb7f7f039487a7a0fda61466e2409f4ce3428";
   hasManpages = true;
-  sha512.source = "d05f8460b8f9b21233c92da7a5d64a898c4a4b5eae5dd8f15751d4de00b7ec48dc6ea0ccf43f43929295fbc83a5cc342dae9d7ba14034cf198d40de3cab247a9";
+  sha512.source = "7e28b294c84333b5c8b4ab769fd0907b6ee3b05e8cc6f729c8925029c9a9d03f5b81b000abd26a5b6d7158ed7465efc2f403a7c5a28786f2a23592e0deeea6cf";
   hasRunfiles = true;
   license = [ "free" ];
   version = "3.13";
@@ -24308,22 +24445,22 @@ jlabels = {
   license = [ "lppl13c" ];
 };
 jlreq = {
-  revision = 67400;
+  revision = 69932;
   stripPrefix = 0;
-  sha512.run = "7421f665a77b88d942d145dd63d0ea92c3f2c24815c564ea4eb13828bd9bc45cac1362dca4ae2e69a3f53fa9b79e4a495f87656bd560c951b407c34fab69a266";
-  sha512.doc = "2c3cf0af124dd6d92d41bd89a25884983c691c4a9a2a72c33754eda92244f37ccb310aa330f8b55d7a18c45d4bfdbeba60358d0e5b95bf7ffa3ce588f6a68b4d";
-  sha512.source = "0f455dad9f954f8e8d84bfda0fe704b0cf6a384f6c0a215299d9529d10950340071fbbee98f88a9f12a9863d3979246533a47e5a6e7fcdb71dbfc3c165079d74";
+  sha512.run = "a6ed1fc8706d9aa3bb759bfbf85f451db0f5f941b46c607217a0d1af653e617e56c50d4b82e0f376d212dfff5e4fc46f922e5397940931cdf2acc191f7c34ce6";
+  sha512.doc = "01b804ec9c3447f50666e5bea40a3142c29b66aca69f69b2ea5cc7f4696b569744e55b148da26f6dd9698ad4cf580a738196c5b09fe0a0b831105251ebcf1855";
+  sha512.source = "e6f452eaebc5b9a3b7a257dc1754f6aac822a92acac243b3301475f38828787972f8c15a34d92117c3036fd38f6a3c0b8895979234a52f3a65f518b129a601f0";
   hasRunfiles = true;
   license = [ "bsd2" ];
 };
 jlreq-deluxe = {
-  revision = 66115;
+  revision = 69971;
   stripPrefix = 0;
-  sha512.run = "318b01471bcd2e7a15d5e58fe922d341c9daddc3ed9f3565c85bd221dba2d5d38635d60b848aa37760b3ecfd4d007d202d69b6694eacd41c885eed34ce77c34a";
-  sha512.doc = "ce096d4d8461d1fef3e4c9d24efd8f7a402085ed03852ac2b293467400e2c000633cc852d4a0ccc2b0903c9e3a682770a4edf632183758b9753e6a1c553ecab7";
+  sha512.run = "bf50a2ffb569202f6bf182637482005543ec24ac214287c3dcab234b6613430f4cb0e8d7a987bbd674e1c3442d57f03bee2df5cd1384eb29298b9f304a07099e";
+  sha512.doc = "8a8dc59a0db9128c3d4db9a207beae6fca412ff9da59b7dfa32741f3cb770ecfe2d5ac1dd02521a938d82c5c15735f8e42ac56906ad59a097a5a150bdde1bc57";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.4.1";
+  version = "0.5.0";
 };
 jmb = {
   revision = 52718;
@@ -24369,13 +24506,13 @@ jneurosci = {
   version = "1.00";
 };
 jnuexam = {
-  revision = 69161;
+  revision = 70117;
   stripPrefix = 0;
-  sha512.run = "f09ea4e82d630111a770568a3ffa3de9b862bff33cfe40eeffb69e6997fd2893bf58eb626d557f310d77a13dd97d6369cb7ac3d1f87601dd3b8b2aa4dbc5fbca";
-  sha512.doc = "828fab98b92a094ba2f42e9dbafa2bd4ff6de6e7fcd242871a5e2b6d3ed2fffd54f3bc9ecce7e24e050f47aa264cc5f8d0684355340bcea00817e824e909543a";
+  sha512.run = "bb4bd96084b70e0808ee15cf23f0ab721b6268074cc5544aa80c9a8b3f6c8a1784591859215e17846a606d7ca76d93ce103c70a8805a321d5833d59061e71192";
+  sha512.doc = "45b3a04be31cb9fd778a2a264575a536750bf0c73b0ccb0fb68fb83d99fbe370a70c119e962a1dfbfdcc3da4056439e271aea0e06d7b7289e0c97f3bfff1d6e4";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.1";
+  version = "2.1.1";
 };
 jobname-suffix = {
   revision = 64797;
@@ -24464,13 +24601,13 @@ jsclasses = {
   license = [ "bsd3" ];
 };
 jslectureplanner = {
-  revision = 57095;
+  revision = 70448;
   stripPrefix = 0;
-  sha512.run = "022c878b95fbca48c7cd3464a12d5af8b29b26c2fe46f3c4dc2f27e6c3b3660f78f3baa7b9d289c3444fecd7186f6d6cb18d8c6c94b9ff27842f6c9018e9762e";
-  sha512.doc = "1af4d1a75b6f5f056f0426f00c8c26493638e8efbdd5ff7b746f45cf4ca3c6648d97b3832885d97b71124cba7e57eb22fc2018619e5a33c66ece10ba20528a2f";
+  sha512.run = "8a94f190abadb4e8d4293782984f94b17f5d3c352d4a0c4f9368327df0e27a416d2f584ee44c4829f05afebeb8a4bba2770086d8094c54cdee887f11620da808";
+  sha512.doc = "0907581fac47177633defd0f55a6a8373078224e2edc62b0c8f5e2521464d179833b9a50d513ca52ae1994465f75b129fc34cf81ff54fa904fc7a7622b4a0128";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.12";
+  version = "1.13";
 };
 jumplines = {
   revision = 37553;
@@ -24653,12 +24790,12 @@ kastrup = {
   license = [ "free" ];
 };
 kaytannollista-latexia = {
-  revision = 69265;
+  revision = 69876;
   stripPrefix = 0;
-  sha512.run = "c91cf44906a6e377138a04048a3b9885ad10df3ceef268ee3c8d467e4697fa8af1cc5f077b0ae5e2d6049abdd0dfce35a2f83d0ee46e06a1759397a657c28ca8";
-  sha512.doc = "8ef1f9e57e05911d443123bd4393c9bf99b715a4dcab570b361e7798f714228b2782dff0705fa91e660eb2e767709b36de677b7d96c103ce674875b26d47af35";
+  sha512.run = "e7b939930e9c0952cf67e402b363a00a7aba9ad226bf4301650553ab8117a78dc415f81c31e8ca6a8eeaefffcf3fe95a57cd93164df01b63f74c0513f0e8469d";
+  sha512.doc = "f44779f63f301091ac2119f6c5002c29d2969509775acc752ca4aefeca8b16bbc02f352c36e3b869ea6070f3fd70bacecf3e7d41d00bc5007d0176e5cc489f3e";
   license = [ "cc-by-sa-40" ];
-  version = "2024";
+  version = "2024.2";
 };
 kblocks = {
   revision = 57617;
@@ -24882,14 +25019,14 @@ knittingpattern = {
   license = [ "lppl13c" ];
 };
 knowledge = {
-  revision = 61991;
+  revision = 70609;
   stripPrefix = 0;
-  sha512.run = "dac315840aaabc1efb96d52d96e1ee789f61c65964c0343fc35d340694a3f13f7cf9e0ab101bbead9f3d25ef9e3ea2723916864abdd192a89c319a0370b566a5";
-  sha512.doc = "0f95f35d60513fb181efa2d5d9579efa000838647b167521b364305774be164731c4c09ba4fa739ed3749cd5c43b19b59cd417f8237bbca2f930bc4b22ba0c68";
-  sha512.source = "5843dfc2fec15d5cd0a57eeb5aec12bfefa2914bdb8f4ebe2522e6576fcbea73f5663b437ff2654f8ddd7d6f8ef92ecc8aa96c59bf7d76ac58029fee85e1bb8d";
+  sha512.run = "8c97dc4a8a0ab5fcd2ae59da3b4217fd1e6171d788197c3755577a89fb86c6d7d7075778c669bdee8c0ff8157583695dd20c1186b54f80b87c968add98970f99";
+  sha512.doc = "a0058b7065a25ced7469000536321cd830503fc3e3f1bdc00d44ec4dcd7eded837f62ccca4ea49d46c9262c7bf8accb2f29d6564f39e9c3acedb163817098da9";
+  sha512.source = "f7586aa134293da41c4920402aba230c12e5f14fa9e7675206fd270203bedfa42426e1ffd56f4289980b5a49877f8179cacf4ecba8f2a5fb857fc891087a2531";
   hasRunfiles = true;
   license = [ "lppl12" ];
-  version = "1.28";
+  version = "1.29";
 };
 knuth-errata = {
   revision = 58682;
@@ -24938,12 +25075,13 @@ koma-moderncvclassic = {
   version = "0.5";
 };
 koma-script = {
-  revision = 67573;
+  revision = 69755;
   stripPrefix = 0;
   deps = [
-    "footmisc"
+    "etoolbox"
+    "xpatch"
   ];
-  sha512.run = "0ad55b5765ec907f39bbb8bba7deee4a131d76c81a0e7bd7379031c5a8771d47c121df5a55699706c886063a12bdf338e5b47b6a6784f0a23a72891a07b322b9";
+  sha512.run = "610827993fa3d94f1b914ee24be0c0a2ec1062c1d1863dac8687e6ccf9c7866b7ea56fb45363587138d7d7842ff58cf1aa4e1c7970f48ca8f7a783e0fafea1a6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "3.41";
@@ -24994,17 +25132,17 @@ korigamik = {
   version = "1.0";
 };
 kotex-oblivoir = {
-  revision = 66513;
+  revision = 70496;
   stripPrefix = 0;
   deps = [
     "kotex-utf"
     "memoir"
   ];
-  sha512.run = "ec9022c6f1fb3d888e7624f4ed311327d9f0b9b569f7eaa078d03c275027edbb4cbcf5785d155ec9cc7c68ea1f93f5d527cc769a12609c361250d5bcaf0d9d42";
-  sha512.doc = "28d6c7c2ba61c06258020dce099ae1ba339ff1a6c0a1c9b350512914fda062d3cc612cdb4410cb3ccefdef0f0700c6f724a35e1f8c5a0fcfdfe16c090322b59d";
+  sha512.run = "7a4d61b5e5c20b3ef673eae06b95403b7e3f65808f8bd1163f8d6a5fb33004a86991b5941da88cdd89b74ffb40bbfe14d0a51f062b51c7567b03609cfaf6ddc3";
+  sha512.doc = "42c6dd702f21cfda0a1857f42832a53c0d936280e07c0a3700e39d614569bc5bdd0dd50daf4e01fcb0c3ab94c747645a1ee7298966b5c3ce16281b402bd1ca97";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.2.1";
+  version = "3.3";
 };
 kotex-plain = {
   revision = 63689;
@@ -25068,13 +25206,13 @@ kpfonts = {
   version = "3.35";
 };
 kpfonts-otf = {
-  revision = 68970;
+  revision = 69636;
   stripPrefix = 0;
-  sha512.run = "d2519e9ea6aa8cb660d2fdd69e6e686c17c6111eeeb313dd163dc3dfc4ea90dab4abf41661541a461c6b7536062cc6d30f8bc802c2c86850b88b19e64b5c827b";
-  sha512.doc = "ad75e243de2644d48130c75923953368ffa09144f7b8e67738e2cc2e065026fbf1762251fef84ff89762f40a86ae1f1f6cb92b4a09924036fa73a004921acdb6";
+  sha512.run = "5c90bbd34da4ff9b610e5d1d407787cf658cc1a649c42c43d64bd374d04f43038956a5dcd159efbe912fb952d5a11370388870c87bf0a4094f19c019965a173b";
+  sha512.doc = "677dc5c94ab24a047028b403db43a0493acb4bf8644ff6b63cbdfba12f1de11541eaca6836290c4ed822c1800dba299e2b5afb9f5455164db038c01e7ef0f17a";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "0.61";
+  version = "0.62";
 };
 ksfh_nat = {
   revision = 24825;
@@ -25224,23 +25362,23 @@ l2tabu-spanish = {
   version = "1.1";
 };
 l3backend = {
-  revision = 69310;
+  revision = 70027;
   stripPrefix = 0;
-  sha512.run = "06481bcaf4082b3f187a855eedc32abae8423ad5020911ba1ab10bf937c767f98ea8eb10f6a83dc41af126facf72bf4a52c9ac61b9a1d2b9065c4a20f86b617b";
-  sha512.doc = "637728bdbdeccd2ec5ced361941b7e9cb560b53dc2ed95755d7a4da45d22004923c034e1aa55b9ca13c2b8d7980f99deead19774120a296339402fd71c9c7948";
-  sha512.source = "16ec201e41de548e9d6b65dba8a778a30a88729c186c18079e50dab46b310f8313847ce5e4402dd71a01dcde8a0e8a74ce96336403ef53adf8283a5491e33223";
+  sha512.run = "b0fa82d3f6ad4ece3ce1e0b254ee52c97f30b143e458ad4a2f96d530f787650ae2cafa20801b865e696fb4deaed2fdba3e82ab938e09d563569ab13d6abb331f";
+  sha512.doc = "68c69840f18a1f2c0442a008d632d5bd1295390a11208b8b94391564cdd0095aced7ecd3ae59035ec55faf267266115c76adf3839eb22f084ae348fd051547f9";
+  sha512.source = "4fc5659fefbcdb53f30f6852b38ebe2e05238637ebbcf9885fef6496c5f4e54749f341bc492bc65c17e268c71bdfd6ee5add0bdcde9baf8e527ae48a4915fc14";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
 l3build = {
-  revision = 69360;
+  revision = 69748;
   deps = [
     "luatex"
   ];
-  sha512.run = "d69d48f9720187457d38db15492d2852990fea748a6ef505f244469185862d9c167e82422056839e7dfb22ad1a89d123711ee7c756197d1fe393d4526470d51c";
-  sha512.doc = "8d53dcc007176451d00d0d78a965b8f88d6bd1096ee340da14198573704304f1c9eb87de466a824871345c2e7043445631d7eadb6916e5cd13172e089912efef";
+  sha512.run = "32999f257488429d109eecff598df6f7cba7e4511aa2b9cedcdd7cdb9acbbb959f13a1d3253d73f75e02c5c91e29744fdd934230d186ae7e76c057e51145cce1";
+  sha512.doc = "aeca997d50468e929d32c727606273fb01ddbce1fde2ec8f03f7e92f3f334ff7cf537432516b584f0420b9a93d7dfdf1f277d789222d9a3fe346009d2d46d72a";
   hasManpages = true;
-  sha512.source = "8f53fd6835cfcbc22bf88be42afe97f92d007b89d2c9dfd745cbc23037a94b77a0a7261837bb77901cba7f52748c904bc0e009f253f68aa52aa8347728c2c7d5";
+  sha512.source = "5969f5f85c71844c7d3abea497059f2bcf8b7bf96294ad746d2acfb876f3edc5e573aeee081f2ef45baee4eeef5465e69c1591412d45d2912f0391d6dfe35d18";
   hasRunfiles = true;
   scriptExts = [
     "lua"
@@ -25251,38 +25389,38 @@ l3build.binfiles = [
   "l3build"
 ];
 l3experimental = {
-  revision = 69310;
+  revision = 70027;
   stripPrefix = 0;
   deps = [
     "l3kernel"
   ];
-  sha512.run = "2e32434ce1c2e485e879e87cd1becb8374d54ec818b321b17d85d0586382351407c3ba0b246431dbbeb16994f525f5ecbd127465e7bb52ac96e7333d3dbf50f1";
-  sha512.doc = "6834b31fbaa7546a7bdc066134d85cc310609c3966905ec654b86cc590d26a55939e760ca5334b7ccb612c27836a9e3d876ad95a3d15f6fad4bb4bb6269faac3";
-  sha512.source = "e278373263b43924aab0e45c7e0a8fed54e907d5756022253b9a70121d0b2c978030e774fd52e72d240b5c15a05fe2c4c926d5cb84277ae9cf40021b80c9fd81";
+  sha512.run = "c25e7d14f3208e59bca4da786df9f63bf64455e9adf3517438e4065e99dc0e89fdfdc0325f7aa26aec7e9622b99029a370a5d0fed6bcc780a62094cf26b1a03b";
+  sha512.doc = "4606266a1a8d5022594e7239821afc9d02b735b68bab4da681699851f748c0893763cb1943fe20eb7484f16ba955ee193e961b7f6235710f8d813198529245db";
+  sha512.source = "834b404c08acc25cdcc1124512d527e7f094c18ca6283ddecf85bebe25ed8bbcd40f2c9dbf56c19280f8dc1db3a2f35a6bb996175ef2a85a15280c9be6cd3ce2";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
 l3kernel = {
-  revision = 69310;
+  revision = 70027;
   stripPrefix = 0;
   deps = [
     "l3backend"
   ];
-  sha512.run = "254ca061eef5d18c856c4fb2ef00240fbf1f85b7459739b92787a99ef2c36054ce2eda2629ce92305e0e6c8b73f85074c691595d88a0ad035594307d60b2d5fd";
-  sha512.doc = "71265e9c6834c69c2945810a7aec93d7c5118b5ace790d9aebe846f86dbf62652d19d5fea2979a0701c0ff6a2c2c5bedf55a20a19cc8d5944cbd7eece3061d65";
-  sha512.source = "e2416ae4337acfd241fbd1f8b5a2d2a60c0a3838933404ac48e36c7711d6418efec041a5d8be58383a49ad0f6f3e38d8a522a0bbf9c4b589b4bfe46c9d174b6c";
+  sha512.run = "0908782021ed4318ee3d43eedd7b0a9b83621fc04f9e6ad3d540d2f87b24cda8bd69accdb9691495bb3f7320808b976d1b798b3c4c95778b9b2804f4401ff893";
+  sha512.doc = "d57cc53087b1a164c9cf7586313acc176a4de52b3da6734df1e36603b5ccfdae9fb19542e46246474936363020ecfa65e12f024b1fb50097c3205bb6b6aa2961";
+  sha512.source = "e9b7b0e179fb168106277716bc8519b6a39d8062e3dce86212d582d42680ff7bb594542210a8ed1ee969226485db1d4055df071da898234cfeb9edad92d675fe";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
 l3packages = {
-  revision = 68507;
+  revision = 69992;
   stripPrefix = 0;
   deps = [
     "l3kernel"
   ];
-  sha512.run = "aaf755351982e89531305e3f7a037db69e15b1b1eabb4140cb7a3a0a4db7c9604222cf0b9622d05b7637da310634f4ca1f00ab5941f51f152eb46b77165e4c92";
-  sha512.doc = "05231cdbc1f9bf3ad9775893099c46705f155a15e3ce9c4e8fb3d92422a3bd3dce9d05cd89e6f45c1d2afcf4c3dd469995e8d156e045d95b2788a4712ad5f094";
-  sha512.source = "642810f1d5eb19059e0d5541b3cf98c6e7412c1cd3194d469eedf9df5d53ba8c1d0f3ecd382df18637408648d252c3c52bb6e730391049626d8dc5076bb3b7e7";
+  sha512.run = "906dd058afdec3fdc416e1a39e3cddc0b8c8079dea35bc1dc453ca4f287b849aef55b71bf9d8fac9a0c428d1ea3c6f0bccb0dfb9e895a2511cf31852024e3cb5";
+  sha512.doc = "49e8d52bf64ccd22827ca9faf65dfbe3a4af727feb089509fb512aa5ca8263be2c10294485e6da5bdd6a3426215ec5c83a434322ead9604aa029414b1047cf33";
+  sha512.source = "9afaf6e363b3a1a3402b64bbd6ef2236dd062c933583ab8be5f57217d90196b456aa477f5c9c830fe6fffcb79d2e0f2dc3ad51ab3c9cc764b61b5252cb211aa2";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -25396,10 +25534,10 @@ langnames = {
   version = "3.0.0";
 };
 langsci = {
-  revision = 65793;
+  revision = 70028;
   stripPrefix = 0;
-  sha512.run = "88f33199c97f3f8a6a8ce174caea01f299ecf7230324d5739bf02d7e5b42db36736d1c17730a2f27f6d114490b5c1770a6da368ec1dd983791b8a67962136fa7";
-  sha512.doc = "b7b18248eb59015cdbc489b1ff9c992493e5a4453b4703223586367787c5648c640bc8946d25e665acf88ac376953f2e22f61cedc9ba53d9d8e4a47ce89e9b33";
+  sha512.run = "02e572eac6731aae4dbf7db5c1e4652dc34cea9dd6a43f0f63b7d7e4aa79113ca5ba4122758303d33c94f33e42513e4d7b51d22e4b7c17fa8b7ebacf8e5024b7";
+  sha512.doc = "05c1231243e03156ffa01cb84f16708542598fcd5349c858913c2d0c6f0962871ee70034fe8c2255ee6338d7d659ef0262a408650a262ea8c6c1e8e173ca4e12";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -25422,6 +25560,15 @@ lapdf = {
   license = [ "gpl1Only" ];
   version = "1.1";
 };
+lastbib = {
+  revision = 70377;
+  stripPrefix = 0;
+  sha512.run = "e2648c74401833e4be62ba616e146bd662626b1e6d9dd3e6fb3b1c371634e3cc022dbd1b4f670d957d239ca9ae776dec94ff63306d54b9dc571ab6d701850c8a";
+  sha512.doc = "45ce82d5721d79e26e1d7f034764b526315add13e6943fcfcd6105b9040b7ff4951e7c8482be15d2366880286e1caea8ef47aa8a6fce92941e9f19be1e7003b0";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "2.1";
+};
 lastpackage = {
   revision = 34481;
   stripPrefix = 0;
@@ -25443,7 +25590,7 @@ lastpage = {
   version = "2.0e";
 };
 latex = {
-  revision = 68720;
+  revision = 69443;
   stripPrefix = 0;
   deps = [
     "latex-fonts"
@@ -25451,12 +25598,12 @@ latex = {
     "luatex"
     "pdftex"
   ];
-  sha512.run = "5db84e105289993a7b03358f17af52568fc826c677368aec4c9326c1ca974961de01833b038aae6b95101a05dbd60f6714756d866e1a144c30199a0bd661e30c";
-  sha512.doc = "53f76796c526b4357b48df1443baedf5af5304da87b21ed2ee6619184c9daec33c8fd7a059f92c0dc037c1b19c3bedf804e907c8031385b1f62d199c7af67e2b";
-  sha512.source = "c6c5244599aa46ee18f66dfbb59e59411625cdb75333bd84a461f3c03b3f4d0400e3d6100b1f511107d779f0adc7dc1ae50952c1315ed587b95432dd3b659a0c";
+  sha512.run = "b6696892356c87acc788255f0023f081078878f4f76408be138b8b9b62f0fe01f8dd8bb68c8049fea319b41dfe4dafadb3237869fcde797ff5580ba94d68a473";
+  sha512.doc = "d599e1fb7c4433658aa65df89ca318467b3c6689d3e4e2d16bddd9397968888052937900d382fdd43fe627813e40d242d7728325a1bc15c8ab5658fd6ea4c912";
+  sha512.source = "4b156445e50bd24dc3ab2f90088b0ae5e25930818fa14b7db3ccc1aec4642cb3172f07c57bf0dab3e17f91cf22e1b5d5fa08e705e392635328fd366514da7a24";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2023-06-01_PL1";
+  version = "2023-11-01_PL1";
 };
 latex-amsmath-dev = {
   revision = 68730;
@@ -25469,14 +25616,14 @@ latex-amsmath-dev = {
   version = "2024-06-01_pre-release_0";
 };
 latex-base-dev = {
-  revision = 68730;
+  revision = 69872;
   stripPrefix = 0;
-  sha512.run = "88a5f4610e396128575a96bc20091a0bc66295aab4febe52a46e89e8bc1b4396ab33dda9bb3b94a643645b82c676e6e1fcf37544435ff2852af0417f97f24f52";
-  sha512.doc = "10214331abeb528bc4e594f9141c99c21cde74729652a7d4a3bce71e401493904377bbf49c1778e35461689f0b2eba9e59c9b52ea484c8ac1bf79413963124a1";
-  sha512.source = "c601183a89eb0d5fcacd7f40bcc867d668067228fcdc17ff5dd5dce57623a6ad21c51d0f5be8b5e99003e4eb683ed4cee33a201fee52c88f1f2a4d873d901197";
+  sha512.run = "d24b56bb77ada497449c501c549cb6fd06246f899d4f3a2d979292ffe85f80f532c5cbb8b3e49b6d1bc0f8098d56c34e87f15e8123247ed7af59c9a33b815a64";
+  sha512.doc = "4ec2405d8d3e3c92666bbab01cdb065b174f82bb9c3b91f0bd7af23dd2fe3e8cda98060cf1e08df349ea32386da911ee4c7a28dc29bc52ec6ac02a46cab98b66";
+  sha512.source = "83f7103d961f186fadd6feaf63cfb4f9fd6cc2aae0d5c04b6ffbd0c0eee2d51cad4b2458491cab7760a29155682d806fcc3c1ca1dc8d788ad248a58dc071a361";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2024-06-01_pre-release_0";
+  version = "2024-06-01_pre-release_1";
 };
 latex-bin = {
   revision = 66186;
@@ -25663,12 +25810,12 @@ latex-fonts = {
   license = [ "lppl13c" ];
 };
 latex-for-undergraduates = {
-  revision = 64647;
+  revision = 70210;
   stripPrefix = 0;
-  sha512.run = "5fc8504cbb061e03329d2e1952749d67bf5fb2f6798353c62a6f3d3f0106b9ec270852a99d9497870d84ba5d7bc9aae3bdcf7d15cc212d9c091e57527e97b656";
-  sha512.doc = "a20a2467eb6e98261c588baadfc15a9a653fa257338abca2c8976d46e8a51c282012f1279b537e02e39a00227ce3171b6b68d20452dd4f228c187f373cc4e9b7";
+  sha512.run = "bc5dd03127625a8440ce605d8f4e8de65615f330dc9194e0e096175095263eec3ce2790dcccd96d32118492fa71483645510675f4868580fa00daf95f12f1aa1";
+  sha512.doc = "b21b7a6a759eba0ae086ba3492266b9784aa651a727b22b671b3e3668197727118f35095245ad8d4b99a40f6c5c00500f7791b3cb6a6237493b7656a17abdf3c";
   license = [ "publicDomain" ];
-  version = "1.0.2";
+  version = "1.0.3";
 };
 latex-git-log = {
   revision = 54010;
@@ -25712,14 +25859,14 @@ latex-lab = {
   license = [ "lppl13c" ];
 };
 latex-lab-dev = {
-  revision = 68730;
+  revision = 69872;
   stripPrefix = 0;
-  sha512.run = "59718166fdb95ce7a0323aa201477775d469f091eb47866b81449bff506e6523cdeef0609f9b0a68ff0150e1f08010f1bc00b447e4f7a30b254ee5db0b7494f5";
-  sha512.doc = "42de975fc56df75072e120baffc5a70f4525d80c82ad1e3de60e23527443d8ecc90b0219b42e1c52abad0318c19b27792f46b83e22cf471e5a49ffec2f8e61b1";
-  sha512.source = "5eee782feb451b2b454d08272df09c94184fc3f7f58564eb11fb7e927f4b9a23d3bc0daca31914f9c96b53ff55642458f35a4851f0373a699abfdb168be93bba";
+  sha512.run = "7812684eb2629b139e5871b5b916e2344b85d8bb88bb983d57d292d9873147d51b60177733e61180d86b95d185e456710acc5037f56fbfeea52ab1d3e04433fe";
+  sha512.doc = "7750fea3ff6ed1352db54674844367b3ecb400cd4e306e3c130acabcdbe59b3abdc7508dd12e5febea2381cd74407aa3cb3bcc25f5d7b34401e75e1eebde2529";
+  sha512.source = "d1ea2349dde66988f51b9d1f37875a2d02a4b44499f3551152ce3bf38460d31e5cbd423e17ac72dade53eaac00720d547b460bda25f29821875605b02c51ccd0";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2024-06-01_pre-release_0";
+  version = "2024-06-01_pre-release_1";
 };
 latex-make = {
   revision = 60874;
@@ -25770,14 +25917,14 @@ latex-refsheet = {
   version = "1.2";
 };
 latex-tools-dev = {
-  revision = 68730;
+  revision = 69872;
   stripPrefix = 0;
-  sha512.run = "b7ac20a167585e18b7f249612223508380b04e162f10123e6a1fcde1df07fa72bee42bd46cc4cb20043552f981455a4036357b7c5f4c41b2dfa9cdfb8f4dd5d3";
-  sha512.doc = "2711c79b5ca59c7f399b0645f4b3d4620b3cfec3b76b3f26882d42c50ae9bedb46fc59a9483c067e8a667a4e089be42fe8e87daa708ee19e8ae0e945038f1f23";
-  sha512.source = "adea89208290f95ed0b970027c0eb70b6f7300fd4e171a18f88e6c174e0f184ee880a2cb04f8697b2ac55df45484787289a792578933857fb6d70864c0ae57f9";
+  sha512.run = "04828515f6eb9382d3c3d9c2ae8fa52bfe42fcb511b36840add979901b4a7535ec5a40d75113f0240299ec3bb07b59fc54fa65539389467f402a7ff15714ccf2";
+  sha512.doc = "7136ae8556c19d2eaab7891981cb10b52e4538d10fd82073843744996de3ba2919b07ca63d5fc2100d093b9e9db862dc1a4f7d19615f96d164aa2431ee2f9b8f";
+  sha512.source = "2073e38c2dc81da1d79fe6567bb99cc5f2649a8352b5e4164ae21cb0efa9d7697a1e9e8e71b5d3ae636eb215ce14c5b202cca88ebc6ba18c15524d0f566568b6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2024-06-01_pre-release_0";
+  version = "2024-06-01_pre-release_1";
 };
 latex-uni8 = {
   revision = 49729;
@@ -26025,24 +26172,24 @@ latexgit = {
   license = [ "gpl3" ];
 };
 latexindent = {
-  revision = 69269;
-  sha512.run = "32b0e8cf8433c6c5df601268b9be7d752322fab5fa120e1ee9b8335ba5ab5d48d874bad26756fba2b9da19ce3ce582824af7a859ec1e7f57a8b2e3ea66c6d631";
-  sha512.doc = "f843748868107e46e97840d2ef8699d3234760cceb467730370484459a254db7c36869ed0eaeda66e95791d7bb20d576ffbea39e72da44036cbed0dc86799742";
+  revision = 69472;
+  sha512.run = "23c35d38e78c3debf1c89cad7f719727edaa21e93d1cdc3f845f3badc0e4211919bd8e8a495010fde7eef78f9784f04c545d67546f30f16179624e36f82d31e8";
+  sha512.doc = "6b0de79326494370b3fba30cf44b0edf7ec925462152c6c11d7e4b9de489b58a94ea64b0e9059b28ec17817cd73e75f0f327aff2ef190dc9fe35aca2b24af66b";
   hasRunfiles = true;
   license = [ "gpl3" ];
-  version = "3.23.5";
+  version = "3.23.6";
 };
 latexindent.binfiles = [
   "latexindent"
 ];
 latexmk = {
-  revision = 69373;
-  sha512.run = "04cb04d6d286f317c7a9e3a7b2c38e1cb9b89e9570d59082173dda7eed8283f49166691113409c5197d5d8da7f319dde9248a445dbefdde97cb1b940a3dbfb9a";
-  sha512.doc = "0d57a68fdea7492a0776e7efaa4269ef45050a52ab40a596381e8d73ff978d9e25459675fe3aac6efba536197f7682a86eb8435c1250957f40a0ac8ac3e9b007";
+  revision = 69657;
+  sha512.run = "ce495cf39bfc7a113d53427eec1ecd6fc62038c91cf5b97b0a7dd6fdf719b15425b6adfe1c734e5eae5330e5f8d15e3f9bf808d8e324afd53b8915d55e505935";
+  sha512.doc = "0ce5229b80291809437e57518551e0ab0b06bdc381e07ae100ac2fff3f66965b64c4df096dc90fc5814b1110a9080322742b92af57675cc53b26ab1548a37582";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
-  version = "4.82a";
+  version = "4.83";
 };
 latexmk.binfiles = [
   "latexmk"
@@ -26068,10 +26215,10 @@ latexpand.binfiles = [
   "latexpand"
 ];
 latino-sine-flexione = {
-  revision = 53485;
+  revision = 69568;
   stripPrefix = 0;
-  sha512.run = "6c6e7dacb974ba25fb5106ee1b846a22590c1ee3e5b19aa4c9cb90aab927216a19d15f977eb92f20fb589011769463a500ac2146c0c8cc807a91169da660bc13";
-  sha512.doc = "204422bc4fc85ecf94cc3236a74acc368d34926b53effb45b6411e694c4bdd2b91c30250894868d3928b19c693372c49e7435f83974e09b829938b6237ef1957";
+  sha512.run = "e498d5ec469420db789dac92e314f9ac0355b4afa2c43d4dce2de3eb23481db2687283f9ccce2ffd6edfd7b8f2d7ca3bf7425f0ff43ed46d7ca2dc9e3bc16797";
+  sha512.doc = "ead89b61f23f527d4b545775c821792aaa5a4c3a6290767139dd8872ff6419de248d2f1d657589f469b49bc7b8a68a3368d5c26aa61a39ef6a0e6835cea97389";
   hasRunfiles = true;
   license = [ "publicDomain" ];
   version = "1.2";
@@ -26207,13 +26354,13 @@ leaflet = {
   version = "2.1a";
 };
 lebhart = {
-  revision = 68376;
+  revision = 70050;
   stripPrefix = 0;
   deps = [
     "colorist"
   ];
-  sha512.run = "6537a527caa6b82b1cdcec7150d90cbd7bab93adf1b9ab96f59c4772118d17d21c969ccff449c67905a2ffabf616ac1783c62ffe25208d52779544e84c5352c8";
-  sha512.doc = "eec7a0d7e647797829023fb6d0fc55e8d35ff986a0e614b4522deaf632799053b3580e8888bb77974205f9e566cc14f04d8b60af3238c5ef65f59e0599d079a4";
+  sha512.run = "693591f7f1316f2e04408500a958db59528cf12e9c93bc38b9fb88edad1e3bea01d8adbe00546cfe8d448c30e1f34144b53ab9182f81a18c4b30b2167fc86306";
+  sha512.doc = "9932c964d79640a85a28dcbf523625c4b291f9a2a6f89be6a4c416c7318a7e55c15923406457ad5ccac8ab4257aba21b1f97ca3e2acba6339178c7307895ee10";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -26263,13 +26410,13 @@ leftidx = {
   license = [ "lppl13c" ];
 };
 leftindex = {
-  revision = 56182;
+  revision = 69660;
   stripPrefix = 0;
-  sha512.run = "01e0687f0205c40d95e23b5a9fea2dc8aea95d2e8d5abc54a0c21c1b5934dd68b3705cb625b7e7c34ee30d590cb3028e816719dae6eaf80e5c435078fa3b908b";
-  sha512.doc = "93b1c20788bc707ad90efd69194d8ecdf5154afe89870e51397c810e292b4e52fc7714de844580d0af5be0434a4493bca7464ca0d0b5f2641d9cf46a1f9c77ae";
+  sha512.run = "3fad2e822408843bef73d95b5c7eb99840e9a3b9cc3f5815197ca735d8953a30a271c9609c7fb34eb4c8a7bed1a637a3421fe8a1380b5972e342997cff2ea247";
+  sha512.doc = "482b46b33ea20c85765b6b1e4920b96e8f94347aebb057f2958ff2bc6884e8c1a5f121b31f1aff79deed93209940d37fe1fc33199a3f25b81dda74f02326a862";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.1beta";
+  version = "0.2beta";
 };
 leipzig = {
   revision = 52450;
@@ -26292,14 +26439,14 @@ lengthconvert = {
   version = "1.0a";
 };
 letgut = {
-  revision = 67192;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "0dcc57dd2e77f28a2df931e99186dc3ba4327073b222f8948632051f4e6d45383c8ef6de64443dc9855e6c9ec49f72fc0594a236445bdd135c50ec3aadee20ea";
-  sha512.doc = "e7fe29f8a7027e84cff04c0a70f077044ec07cad59873e33e6407a88f793c35fbd767a2a3aa43103a8bbca8d851ab9ba07576e8f318902fc0dda411540a312a3";
-  sha512.source = "c0d9c7145d89796d95cab9049a34efb634c0963867cbd60aad85e2f7df2b1f7ad356389c362dff239dd6ef8c7297ca5a232ab5364a4eac0c75aa8c6b92744d32";
+  sha512.run = "26c67af52a69cf3c9eff59e1e3af2cdf1450caba17938ded0c6c8d090cba120809d4eaa981c2934a62e9bcc78a0430053f55e1c4ac241770c779c4a5a8cbcce0";
+  sha512.doc = "13fca9f0e879d4838cb7e05e2978c5a63bff21b14f7da80e82030916218d49c870f97037f88ff4316bd220e5c318d2f7d568ddda9f787618aab31478e1a0ad63";
+  sha512.source = "5057d1ddea61c0fc43a4b7cdf3f749b08bf14e443eb29a315d74a3f7a2de9ba3a41fad379c62cce83d15984c0d9ae484d738d6a875627cc4706bb708a2cac290";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.9.7";
+  version = "0.9.9";
 };
 letltxmacro = {
   revision = 53022;
@@ -26337,14 +26484,14 @@ lettre = {
   version = "3.002";
 };
 lettrine = {
-  revision = 67923;
+  revision = 69508;
   stripPrefix = 0;
-  sha512.run = "a87d35b6e4259d6177b30b1e8b99fa03ee76e4bf7c2ab281dd5064ca663b60f0932b66bd388fba64f1bb394e295692dcf43b570cf716c1f14265494dd70a6298";
-  sha512.doc = "af6034d748fac6e88c6494b17382435fa865fadd833fb87cf84f2ba4983d0b5e466e9dcbdefae165f521303edfb2f2dd9602a661cf79c74684b046a50dee4506";
-  sha512.source = "932416c613f72b7c979393749d89c5ed57541eae31829b221707d10cf2f14c2b7d44824dc34d13bd15211a58a72a44a7e6b1d3550977508e7b89180226f91e75";
+  sha512.run = "759f71e952f99425e2425f938164a402b86bb2e83a298e08bc4905007e7805f5856a3f90067c0d08003c409282c79a9c3edd7095bf105029e05addea8dd328fe";
+  sha512.doc = "5618801ec7cdeab3b378cfb55748016df58fe00851a09a0a7929ea97de49b11c7cb2c6877e54d1cca93cfeece45c53f869e47ad3a9715a9ab8b7f414a8216cef";
+  sha512.source = "004cbdd91606755b80857ac3b0fee75ba686a4d73010799fb1086c37b626ee2974bf9401d272763a58dcad7d4ef92cbd3cfbfe752bdde365bc88637da73fc429";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.52";
+  version = "2.60";
 };
 levy = {
   revision = 21750;
@@ -26508,13 +26655,13 @@ libertinus-type1 = {
   license = [ "gpl2" "ofl" "lppl13c" ];
 };
 libertinust1math = {
-  revision = 69062;
+  revision = 69440;
   stripPrefix = 0;
-  sha512.run = "9a44af1c4f96453aa69c83658c9474838efcf1020c9301d12577a403371d2b3127fefb57baa0bd5fa5ef737e842abd4f9c368761ee38f6285aeb5a2dd88ad1af";
-  sha512.doc = "14c87d5e0d19d818152bf1a5dd7533eb651d5b477f3e42d42277fc4040a263114fc2006000af25884c7dfc64de0936d950fcacdf7fc55e4d09c2d756400c34f3";
+  sha512.run = "ad93607e4accadbc0a429bab7d6bb8ba964a98324a9c65fc1993db025a728dfb8b3e48e3d67552a88bbecad247db573d1b1f7386e1aacce7954b00ace4feacb3";
+  sha512.doc = "012227a7d46da30dc4a20b403a0f0abc0010d6902585c18a0bb3fea1e4b7cf58b629ae8c49597c6c39a264cf25a7a80877cb09e99b0f59b01d37198c5c4db769";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "2.0.3";
+  version = "2.0.4";
 };
 libgreek = {
   revision = 65004;
@@ -26777,14 +26924,14 @@ listing = {
   version = "1.2";
 };
 listings = {
-  revision = 68476;
+  revision = 70052;
   stripPrefix = 0;
-  sha512.run = "7bea53ea00e877b33586378c32236f2269f6dad6169101f7164293617bf9d5ca43745e2a549a993a899b4ddc45254b3b032e112576c57b7ea7653a2e743fdb4b";
-  sha512.doc = "d62e73a7df88b7e07c53367e07a6867e26145ad1f4fbed0f8cd0836c10e234695c9b3d97eadd9700547e33f3ecd793367be7dd97ca4d46bb0cdfbd07490c61f4";
-  sha512.source = "1a89476029706617cfab1319a65e6e8353455ac63fef8155e2e347c34c2b60ca6f2b264113a2c4ced52c0872a66efe8d4f53b67274d7a94f2a1b51de7cf198f4";
+  sha512.run = "233399d89e14afdf7c8f8856e61e3d5bd81781a795087447b7332353a3a71b5c9514c39bea39a851fccadce2234e0fb9af537dfa10fc4be2c25051261f7c67de";
+  sha512.doc = "7fe88b4098e5edb4a7e548688e3b12f66714e6cafd35492e816385563039ed81e03b25406a9aa1dd231cf89d2b4616cc838ee352ad1468a756ee00aa291c297c";
+  sha512.source = "185f23319d2509c9eef88dd36edf55b7f144711c9836b6ea9072dbbdfe62908f4d556957fd62eee5d50a82f7635216d7069be0c9fcaf646de84a330f56011719";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.9";
+  version = "1.10";
 };
 listings-ext = {
   revision = 29349;
@@ -26828,13 +26975,13 @@ listliketab = {
   license = [ "lppl13c" ];
 };
 listofitems = {
-  revision = 66655;
+  revision = 70583;
   stripPrefix = 0;
-  sha512.run = "f108d1a5c1330afae1c6a3cfa12fb3d345bcde5617245a9ca736ddac9427b4375f926d11f706d91d87f8b5b55f6f0257922e2068712e969c55b6e5b7436043b9";
-  sha512.doc = "b9264957510f892b5aeacd299df184e93881083e3256754c2f89c4f76adad5abf9f23ba4e56b013ea7e98158f8437797a6ce9d5287e5b76199aa4bc0b8cca188";
+  sha512.run = "d6262c85d8df67b4e85e8d80caf776f723dbf68f71e604c012965ddb1469c2cc3d965f84fe26ef245b6788de4c5e9e5b6f2b97938a0b1c5c67ce8661877a2295";
+  sha512.doc = "a1a5cfc935658cd452b08ec422b6530a2d7fa49685b226a27760976ae652fcc0e7c6a239050d2a70aa34b0933b5e5c14c072b6ef7ec294182c274412d830703f";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.63";
+  version = "1.65";
 };
 listofsymbols = {
   revision = 16134;
@@ -26846,23 +26993,32 @@ listofsymbols = {
   license = [ "lppl13c" ];
   version = "0.2";
 };
+litebook = {
+  revision = 70583;
+  stripPrefix = 0;
+  sha512.run = "46946e4546edce653f21a71689352b8a582f76bd61fa91da3178ac09860a878b38a3fbf72d6a57f6bd94120fe5ded01b598e6516d5f8a2acaabaf6b2ebde4680";
+  sha512.doc = "4b91e32193a2fce61dfd96feffc2f7cf5211982d7676c37ed44e32cd03665bce80911f636eecfa6039263875e81f1cf5135b06faae57134d88372156b5576abb";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.1c";
+};
 litesolution = {
-  revision = 69115;
+  revision = 70608;
   stripPrefix = 0;
-  sha512.run = "5a1ed66916daa7babfd009615584bd6065895848283f46d8f95d2fad69bffd6bfd59c8acb991ef7357100a63e7798c44aca3725ce0e89650adac13ea9e21428d";
-  sha512.doc = "aa750b1a4fd7040b946275239d5ce49848ea031188c1703161de300dddd6f502c31ee7f7a4655b26253b76054e6b487ddd56a9157684010d3b006900e94d6374";
+  sha512.run = "15a900b8789ed60364c2c8880522963484d9397f0774c1b945b109c0e320ff191e600e0db7878186444707582bf1411db18145c6ce2545f141be9491ff9335f2";
+  sha512.doc = "fe0ff414190a8d2c9bd9752df294007f4681360bdc07cd23547d519e0f7db0972900a2420bb761e28ca54e0a49eeda1d7cb1a2f20f3d3c6eb0cb3e5b09da9938";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.2a";
+  version = "2.0a";
 };
 litetable = {
-  revision = 68782;
+  revision = 70355;
   stripPrefix = 0;
-  sha512.run = "2cd3dc7c4025bd9fc36ae8c47d54ff8db1d237c754234ecc13ccbe8d6456c7035a2e99961ad161be4c9da3fe2aa03f9e0e714ea2174c64d2e152af1e036df055";
-  sha512.doc = "249729d269cd9d9cead6ec7bef4731549d18cb3b01bd60197bf0d7374042d70e73767d3273bd149fd0e96534494be9ace640586375797f4b907b67d76019e11d";
+  sha512.run = "a77145b829bfb5ff6d943f11e687f54ccb3abb3784ce9e3bdf145bb66e5c808a46a802eaec1f6932a2917683d64df41cb44b8ec90499a8e93928b46913d099bf";
+  sha512.doc = "b4080e8d6243b8e6353f12b090c481cc63fafa7c1c20596467dec79340a8fc1060431f9576d9742c901e45cc1d7285686356bd64cf0d274a7a8bc2c0de8162f6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.1a";
+  version = "2.4c";
 };
 lithuanian = {
   revision = 66461;
@@ -26892,13 +27048,13 @@ lkproof = {
   version = "3.1";
 };
 llncs = {
-  revision = 68731;
+  revision = 69629;
   stripPrefix = 0;
-  sha512.run = "11a2d47630302815578f0ced6483e1bc680bbc7030f17239d5c896de64ebe67a55626a73a88ed2044b7e2c2414ba8cb6ecdb2fe921493817acaef52634ec90cf";
-  sha512.doc = "a73bba73deb5af86726323f9065bcd31406e3091d5a1fcf77b5ef0ee7a7843a6df729fe31f7642e30ba9a9e9acd2782491607ec3d7d67679507f4b124a9a888b";
+  sha512.run = "0c50b5bbb2a6c72d61fdac915b1918b76323b715f71ffe42e1575d21f5c3e39fdf0b802c3d139d07894b4ec351a779dfdab53834dff83e09cc20de07736bb031";
+  sha512.doc = "be33f338c2243da8c20677c485be4de3a9287b953137e00a5f1b7b04fa9a9c452cd32b5b5adac55626ab84c36d065c958ac505f4a63da32c25cd26ab5f69f2a5";
   hasRunfiles = true;
   license = [ "cc-by-40" ];
-  version = "2.23";
+  version = "2.24";
 };
 llncsconf = {
   revision = 63136;
@@ -27051,7 +27207,7 @@ logreq = {
   version = "1.0";
 };
 lollipop = {
-  revision = 67930;
+  revision = 69742;
   deps = [
     "cm"
     "hyphen-base"
@@ -27065,8 +27221,8 @@ lollipop = {
       fmttriggers = [ "cm" "hyphen-base" ];
     }
   ];
-  sha512.run = "8449ee38e28bca1974e9a144f7ae1ade40cf4ddb9da2cf35779712202c372a29d2c1bf394122452e217c08cba8d89cd76ee4e019a0b356fd9274069f8a63d8ed";
-  sha512.doc = "d8f9791b32ace40f0e936733cc5bc9d5954e7f0b013c0eb81e1b212a00635e674639dc4ce70858dffc1d8b0a15e6fb7ddfc7460f9196a832918252060e43db3f";
+  sha512.run = "03a780145d4e761f3d494ccc54117e2f92f1c32b8f35a88a77b3145442b040c195b2bae10aaf39557530e548961230c7550e25ea77472a8b0e272f0e72609a8c";
+  sha512.doc = "3ee627e18491a48c58132b85cc1079b2a2f857b9453cdda113bedd7c9393f04e15c6215e6cbae99fe3d4c24a297d230a687e3bb7aeb67cc45ef105051838c6dd";
   hasRunfiles = true;
   license = [ "gpl3" ];
   version = "1.07";
@@ -27409,14 +27565,14 @@ lt3graph = {
   version = "0.1.9";
 };
 lt3luabridge = {
-  revision = 64801;
+  revision = 69867;
   stripPrefix = 0;
-  sha512.run = "f0d98099ffa137b1f5dbeac08d58543f3788647ddc22be5892ad1367d557a1afe1f1e60bf5f0ce531d7d5128b8f23e73a95081ba985579b24ad883887377081c";
-  sha512.doc = "f5181c14dcaf29bde02b38018f1b477092625ec07e442ab3334b3924b92f6e45e6c882220448b08bcd69cb9275e48be962e97ce9329db28a5b50a1217842e80b";
-  sha512.source = "6684ee282cb2d8bccffde61e2e8692485246d856ae774de476ac697e352bb76d503ccfccb2a649e4b50314e2ab6bda635924d87e14426e73be444e7f4166fca0";
+  sha512.run = "132009434c830ebc5d78978cd1258861c86d53529cd0cfd30e26ed0516767b6dfd7f4a8f9252610394a87a1e42e011499c4f7bcbc7bf6748c9b4ca9eb09b2168";
+  sha512.doc = "ff386128898be97c5388c4a3265d7c22c83def095d37aa0c27c167cba95d2e176da519878d53d60b0c7ed60a8b8fe8b5aa987c583dbe87138c54a0533eaeae69";
+  sha512.source = "45e1698f7b0cae5dc127d3cada726333878fa39a753c62f6762c5fec55d95d21e4e05fa8fbedeaf7d8861ebe030a6c99ebbf66cf367921a3320443efb0115da5";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.0.2";
+  version = "2.1.0";
 };
 lt3rawobjects = {
   revision = 66619;
@@ -27570,13 +27726,13 @@ lua-physical = {
   version = "1.0.5";
 };
 lua-placeholders = {
-  revision = 69404;
+  revision = 70055;
   stripPrefix = 0;
-  sha512.run = "11d13babb26aefb2782ed7e84444ba645bc808a3283bc0e927cea84db95e9b06895df23a4ad830e2c4a401426a151a7acdf8eac43faa3ba69dbe434349d7867f";
-  sha512.doc = "88b9e069384f0c86ec3f86c21c985c37d199a9dc1962bb8d829b28a34a8ce7cfbc46ab57358070ed2ae71fc9d9c92b2090a69ff0c48053dba54586274caf7737";
+  sha512.run = "480d898d4c0e03776fbbb45243cf813a1a7d87b041b70566d74a1b89601602b8b3890f6d0395bead0cc6e9a876f5e154883035e1318ed0781302c2aabdc4a1b7";
+  sha512.doc = "13fd2c68dbe7f3672dd6e4d560db81f4b1583cad137ff6b38b82f73ec4e8d20c5b1ca87d10d05b9566805a4f06aa97725d0aa12d5838e4ca146890c824eb57d6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.1.0";
+  version = "1.0.2";
 };
 lua-tinyyaml = {
   revision = 66776;
@@ -27608,14 +27764,14 @@ lua-uca = {
   version = "0.1b";
 };
 lua-ul = {
-  revision = 63469;
+  revision = 70206;
   stripPrefix = 0;
-  sha512.run = "a6502086f7d1c57247f9371a711ae7cd1d6112f68818e2a1e04a5a04c97c81dc0c01d7b767e6a6880e366eee9d912cf1ea1f0a17f1d43645ac15ed005d2b8855";
-  sha512.doc = "87793902acca0493ba9671d1052663a4c6322ee9231bb9ede780626bcfe500242b0bde8c0374a8a493336b2890a01a00ea77e2889f544fb2321cf44f08c58e4b";
-  sha512.source = "9306925f6131bbabf018343d0ab608b501690f7ad11b8c1df6a60c8e18b26c10c940f8015beeafa112859f54d78bae5d57c8c2775fb54ad82462969c9c65e79f";
+  sha512.run = "158abe2f05bc7e00e6b7876023a0763e4a4f4178b5816fc4c5509342cb0b5db0a96fe16083b10f9150e1a7f089a64ade43fe1059a5c970b484d6b0e58adc1691";
+  sha512.doc = "3c5c4cac2c17c2eb31af2602b73d3be28928ce72e84b1b84fdb5165463d9f563b20a741a1934f9587e2235ba2f4755cee4767b32fb02b09631cc2afd6af622dc";
+  sha512.source = "0e2b2664b7f5fc711ee8213cf5790dd0bed5c9961af0f7abc2bd32c331e3d852cb80fcc350e8d9ff5878ab299063a96774f175c7ff24eef65636713bf240902d";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.2.0";
+  version = "0.2.1";
 };
 lua-uni-algos = {
   revision = 62204;
@@ -27636,14 +27792,14 @@ lua-visual-debug = {
   version = "0.9";
 };
 lua-widow-control = {
-  revision = 65084;
+  revision = 70602;
   stripPrefix = 0;
-  sha512.run = "22046b01d285a5d113e57d4e5158c2d5558a116004f51d7502cbf80f168bb31c46c6ae09206fb00c9400eb7308f32b56fae2bfeab2a8e1b3fc6e6c3eb0566ad5";
-  sha512.doc = "5b77ffc70f98fdb815f8cdf27d78a2b48422af39cfda7c4a109c97148284a3c425dcce4161fd960a2f2ec658726310f821d068f0c52acf02e14657400b5866ac";
-  sha512.source = "5c2007b8009e40df05b328579a379d7d903e992af89471b996bd09ecb498c86d16c4c69b6721bed8e69bafe2c457122889485289ce9d4758603b8255db89f39d";
+  sha512.run = "1e489f819959a321b0baf60420dc25a217b0ed380067bc440307e500295b059f450c961072c001708affec4ad353477627095e71b75ff961f69c7d1f00fd8953";
+  sha512.doc = "dc01e75eccbd0650ee0126348ba38c25fbe0a303a8317f7255c7f6efdeff66cc1603fa181bccf4371b0f4c56fa664d2ea99822914c1db9bf6e282f74c4c79f5d";
+  sha512.source = "3add66b2dc968e7ce1b56ea4efced89e04f388b7f37f8be8d8d935df42c60fbceddbca6142a168f2a83493ed1fac3617971b7e342d9cf29f793a12ba429e5ab1";
   hasRunfiles = true;
   license = [ "free" "cc-by-sa-40" ];
-  version = "3.0.0";
+  version = "3.0.1";
 };
 luaaddplot = {
   revision = 62842;
@@ -27958,14 +28114,14 @@ luamodulartables = {
   version = "1.1";
 };
 luamplib = {
-  revision = 69069;
+  revision = 70583;
   stripPrefix = 0;
-  sha512.run = "8e6238c9fb806ced90d5c4e88aa84e4ad1ad39631296a90bd6656b600b1ac4f34d4e09789fb2bdbe92946ccda22668003c78b03497b3717402d5163d9de5e734";
-  sha512.doc = "e2dc6fd89743860159a529ae81c284c6965c4cf9eb3376bebe9d4027148e2726c7be24a42ddce36a43e55e76f7646f90da1f124fcfcbc22cf6a36324eda78aa8";
-  sha512.source = "51eb46b66368bc894ec1848fc357b859a68e56a88b700e5a7bc37b8baf1a2b379ea877e39f6b8024c8ca8037f62c6c06281c8213f49eb724b1c82dbf2bc46067";
+  sha512.run = "97551597042f2b609abfb7c275e3f371a57aa6948b4085017926ff8a8adba02ee68dcbc84d3cfcf4eb3ccb93ff1c61157c9dab2e2b3bc945707ce106e17d169b";
+  sha512.doc = "6c366637d27c498cedbeb6222ea8b48a807ce806bcee89cbbba7f7fb5d6b3bacc7fa4ffb3c1288a02b803bfd7b96725b12fd46eb2e9ec965e2b69f057b1c2c03";
+  sha512.source = "546d9403d20ed58a470b9e2fbd5b34c1863c4ef69e90156a6c0071f09ff425f6bbd9d39813b870f55997cafa520caa9326b79e31708630f9b3a44b0b0ceddc3d";
   hasRunfiles = true;
   license = [ "gpl2" ];
-  version = "2.25.2";
+  version = "2.26.4";
 };
 luanumint = {
   revision = 68918;
@@ -27986,23 +28142,23 @@ luaoptions = {
   version = "0.8";
 };
 luaotfload = {
-  revision = 68143;
+  revision = 70234;
   deps = [
     "lm"
     "lua-alt-getopt"
     "lua-uni-algos"
     "lualibs"
   ];
-  sha512.run = "7781db14c45e5e2d5cba50e91e9eb356260e4cf1e55f45b6f584164f1be0a4b31818be7fe3e08cb51e8ed43fde49c0a3ddcecb860848f8bf02096a60e45a58f6";
-  sha512.doc = "a929c941695de38ee029d60564346581153bf233db5ea873dbd8f84d1922df2621e7d9a5aad3ad6423392798c5007342f0a886249eb85d3c598b06bf8e271348";
+  sha512.run = "3882508595c12b7eedd7bd657e28e33d1d1ffc546ba6b281e6e212b1f9492a124e06b0d27da28b5ddaaff05728b231fe044be581bf001ed1441fedc284b2f436";
+  sha512.doc = "bcb4147d4713fcbc28094209d9234aa95e5bceaae53acb97674cc4a458daa8ed3db4685a8d2dcf7da29218e06daaa4a727c3ed2c9c5d991904054fbd1a023459";
   hasManpages = true;
-  sha512.source = "62c77656a4ab2bb93e8403ebe197418914644d99384f74bd8b78c75c255537bfd947a32aafe3f92e576b0e2596eac3308e2d837b41604ad1725e145882916799";
+  sha512.source = "5ff132658ec2fab529595dc150674f19fcb266f87b6f294f42de04c4aa2c067091cec7a416c201b5970e56dfa3adb6772ed4276370aef7bd97eb6bf661bf2e8a";
   hasRunfiles = true;
   scriptExts = [
     "lua"
   ];
   license = [ "gpl2" ];
-  version = "3.26";
+  version = "3.28";
 };
 luaotfload.binfiles = [
   "luaotfload-tool"
@@ -28146,17 +28302,17 @@ luatexbase = {
   version = "1.3";
 };
 luatexja = {
-  revision = 69245;
+  revision = 69988;
   stripPrefix = 0;
   deps = [
     "luatexbase"
   ];
-  sha512.run = "359e6852a954aaf5a0aa99881dab189e6d878e5ee4083487d93315652cfb5cbbd010d6dcc74c946ea231073122604f35966744f9e7870dcd1321277fe93074b9";
-  sha512.doc = "d41556bac7106df19d9fb64c4093b9151e90ad237a72bb38d941d4fe1604c834800a7edc8d2bbeb7c82662c24fb2b2e1d8cd69a86ff76b2843daad90ac8f55ce";
-  sha512.source = "41f17265aa58ceb2bdd9b13e95f73552185654f459498337d34631e1fff3fd51f3fcdc06a2d426b466f0e21dcdc3fb81d1e4f031214b2e4c93582d04984aa66c";
+  sha512.run = "07d0f7ff77fd6f59561c176e6fc25d4b1d4860696aa728c0f9586921f1f32c5a3e01a2f463d5ad3830648fb19ebf6899857259cfa042263f3f17a66b1ec6e0de";
+  sha512.doc = "bf01874cca52c561a4ce76d7111596b5a0a20dc0c6f7c383f8bbc9149f4fbe31aaf652d4902ab0b8d10f4719811fd16b9e8d5cfc97740429dd67f3c6a8bdf312";
+  sha512.source = "5a92e1abd52c044957a160e41b74b15094b3a85bd8d29ac06ad35b8117ab9ece4d98b93e988994811846ba8bfa4d56f27b41708776489fd9957ecb0ae783ade8";
   hasRunfiles = true;
   license = [ "bsd3" ];
-  version = "20231230.0";
+  version = "20240219.0";
 };
 luatexko = {
   revision = 68243;
@@ -28206,13 +28362,13 @@ luavlna = {
   version = "0.1l";
 };
 luaxml = {
-  revision = 60709;
+  revision = 70117;
   stripPrefix = 0;
-  sha512.run = "ebcf0216dfc05291cd1f44096785fa10b4d8f341d0c45c03a4818aaf0ffae1b8a9ee4edc0ab26d1732d651218aaa936099a81c2d732b1ff25b956339f45df8b8";
-  sha512.doc = "8f42b46c552b5771058f442e2b962d49c13f31c0b58076770131d6e8bb048cd706db9e7380a43cfaeae815bb02e83709e9165a1057ac9471bcc0fa2ab322cb45";
+  sha512.run = "d337c443f09a8fed88a3530e94326660ebee59260e873e7581226aadc622fabfb37ace31ee105fc321b6633d4fd8c8117739ba6884b367cdaf708f81f686f3ce";
+  sha512.doc = "ad30466499514af7dbb5425f560953c23e94f6af468b2e693a560de249eec4b5db913371884fdaa36c22693b5175d40da297fa98e22906fc4c501b9f3b7de2d4";
   hasRunfiles = true;
   license = [ "free" ];
-  version = "0.1q";
+  version = "0.1r";
 };
 lutabulartools = {
   revision = 67714;
@@ -28223,16 +28379,16 @@ lutabulartools = {
   license = [ "mit" ];
 };
 lwarp = {
-  revision = 69384;
-  sha512.run = "c1c5bfa2f3131daa3c5c39e162e4eec6a1b640b5ce5f122d44cec5a1e732c97ffec2b0376766750a2c6367ef821acf3418323888d01121645cf7e5051a6d643a";
-  sha512.doc = "20796dd6f885a966391b45e0db71d2c065afb89f87e92074de72fd7db6c02741bec9281f6c2db4ce6b5564d66f74361a30dd1d0dba6352747d41a4d161895410";
-  sha512.source = "50266206d154e4490fc43258518d1848024a83d8fc9237758dce1d2ab2737d82d6f398daf2b04c8cd091b5f38f6e4a8f0bb7bbfaa3f60ad5a1be6b4fc18624c5";
+  revision = 70072;
+  sha512.run = "db403b10401780ea2e7db5d849627e3ce5ff4ddbf3fe9c4e0251c29da5e49f7cfda768c9ea8c397e7c8ccef2c25b3db88db0c406a4fff4ddef081a7bbd32b88a";
+  sha512.doc = "1f818d8419e2e7d986fb35ef662f95a3ec24c6a3f439c3ee08f9ca9d8917871d4d21a8ba8f960346479bccf8c926b32751604912fa0274786bfdca641f83b803";
+  sha512.source = "70fbe22a77b4494f2dff7e09448a1dbba42d115ef1a8739a305dabba55f8bcdf47cc3e632f09285c6de0442a5050551f7f13d15f573c88459ef8bec2f29a5f70";
   hasRunfiles = true;
   scriptExts = [
     "lua"
   ];
   license = [ "lppl13c" ];
-  version = "0.914";
+  version = "0.916";
 };
 lwarp.binfiles = [
   "lwarpmk"
@@ -28386,18 +28542,18 @@ mailmerge = {
   version = "1.0";
 };
 make4ht = {
-  revision = 66130;
+  revision = 70117;
   deps = [
     "tex4ht"
   ];
-  sha512.run = "9eddfced4137652653744256bd4ef342a1b5462a2bbe1852c7fc264b08646b0757d24ae2d12711c66905f810a8f0749ae7f6d7f32983d3aa96fad63e9e104a00";
-  sha512.doc = "2552e84307b92538639481b64690b2d4853f03e795b11daa61f88a1a15896f24982dcd563c181497a287744eabc5a4c3e18a2a705bbfcd9099383b1858a02081";
+  sha512.run = "f16c8062b72932b24673df223850f58521ee5766536c9c210eed123b62c77efa3829f7cd38e2f9f7b62a516dd8fca860def52599be702f22e2d60a8683b52138";
+  sha512.doc = "f7f45fcbf92488c2c97fd2b8916b1715cbf76512f43f7e60d29293ae7553416f9a7969e1b5a9e29c88319a5d0ecf6b8fb8a2254b201cafba597122a6d594ff11";
   hasRunfiles = true;
   scriptExts = [
     "lua"
   ];
   license = [ "lppl13c" ];
-  version = "0.3m";
+  version = "0.4";
 };
 make4ht.binfiles = [
   "make4ht"
@@ -28547,14 +28703,14 @@ makeshape = {
   version = "2.1";
 };
 mandi = {
-  revision = 68950;
+  revision = 70235;
   stripPrefix = 0;
-  sha512.run = "dca65d864b92b561058a5fd8e703ad2faf4c1201231efc0168992cf469d0919ed1aa45d42fb2744bdd11247d85d9582c25862495f77ba835eeb3663911e86d41";
-  sha512.doc = "c88d265e450e87a59fcb23a7a3a94ea979dedf12b58c7f0b6b2ad78e43f43d86b7bef2e59b89a3724ff02957a62ab92daf80df278eb8f8533ee359aeff580426";
-  sha512.source = "e7f588b777fe28c8c1768f13bac4e09fa9b5747a0ab97cf350cf8b0ff61cfe0826df19bf2a8da03e6d23f8cdecd1335897197272fd899703ce158bfb473a8fb5";
+  sha512.run = "e5c8cb0ca16c5b34097aef6e3bd00e452bf6382f6f9f5c3213a42463181a4b7f17df8025d479559b281dde7eb61ed2f79f4b9b6c3a37bed6cb3ea1bb9b428eed";
+  sha512.doc = "b1d5662645562102719eebb2d349f8a0a2a047ff3303abd076bff1b5888dc897e39034d027eadfd9ba03f1de26b0e0e6c8ccd226ee7f3a7b8545320023e47fbc";
+  sha512.source = "e1bffb5b494059bb194496a17957b8adde0247178ee32baa9771ad47616f4dc101c7ad4423c62c50c94f7e62ac59d4ba7b7fa3983dd5503b441b882565db808e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.2.1";
+  version = "3.2.2";
 };
 manfnt = {
   revision = 54684;
@@ -28648,14 +28804,14 @@ marginnote = {
   license = [ "lppl13c" ];
 };
 markdown = {
-  revision = 66954;
+  revision = 70583;
   stripPrefix = 0;
-  sha512.run = "b638546ded5356e9f271cfc28055f6ecc307e72178097dd54c0cd81bf3208058507d902bec0555185b9548cfcf7fddd7d5906d959644d9aa8945b20b8c816dd9";
-  sha512.doc = "7ed883ce22b404fae91e6e946b7786f64ee28e14b624f46b4aca9af1cbd3969d674f0c82cfdd1161c7df5a34d60ed8627c4428e13d317035079bdea0e7f7cf0c";
-  sha512.source = "986ce93ea94fe9afdce6555b90e88231261f2263cff2be734edee32b5c1ac005967e40ce323cc629d16616f9370f4958491f4fe7b0641ab024dabab0cfe4ed0b";
+  sha512.run = "0b133a8f7a4d9315365569698cf2f6897b46ac0c49eb6f6a7697735e209e6a45354101cbeafe7504aa18a39cd514332db204b4b53051a4a9e7380ec581be6d23";
+  sha512.doc = "ca199c02ee60ebe597bc0c7324b910d78c58457e614bc23be98720e301bd501540b52325fda4a0b6eaed15859820f5eba4e4749dd4163057c6731c1d1643f27c";
+  sha512.source = "b33cf8d6604aa6acd27a67ee5ec5ec1a84fb91c77a0d5f830f6dcbc78343420036175bfcc1cf1665f23804ee9d06e58029fbf4e533a75dae29e8d7b1ee6297cf";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.23.0-0-g0b22f91";
+  version = "3.4.2-0-ga45cf0ed";
 };
 marvosym = {
   revision = 29349;
@@ -28911,14 +29067,14 @@ mathspic.binfiles = [
   "mathspic"
 ];
 mathtools = {
-  revision = 63767;
+  revision = 70607;
   stripPrefix = 0;
-  sha512.run = "767b804aeec1ee62667529a523a22e38a4a20dbb7a3a4f74476d25f5cceed38b001b21fc2e8eeec6313e25ee3066ee05b47e1fad3ecce228d6ee13e2d78f6dd4";
-  sha512.doc = "2c974611ef592de5528f019e8854bf81bec20d489d25cae3c3a90aa1c8f6e63a01c5823363d7803b7cd229cd6300f5c551e5989edff870369711a4070d2c7477";
-  sha512.source = "7b8dc2c58a2d65fe5716381a5bc1020b1de11bfc043207053198323e315fb4f4c42057f53c42340fada0d7299037cb79ebe98f30406e493dfb1eb06399daabc3";
+  sha512.run = "68ed026c12d7fc07b1d7881654a197e1fabd7bfeae278c3243bbde9449aeef3ecb4e7606e24e964f2cd488e475f39cbb9a632ba077c1229067df883e853186cd";
+  sha512.doc = "fa3bbad3d9fa4bf678cbb2254cd2329c515cac6387d17953e66f273a48500f1a04b25b4de4c8a8a94cf79d86572be56bd2ceba01de8c9a72a92844a127b3c8ad";
+  sha512.source = "edcb96fc22f68a3cc78b13fbac2f73fa54aea36b6e57b0af12eb7b21a449044eeaca9157caaf9770b0d93f9c2511926452919fda5d03903f36fb5b4e3540b2af";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.29";
+  version = "1.30";
 };
 matlab-prettifier = {
   revision = 34323;
@@ -28994,12 +29150,12 @@ mcexam = {
   version = "0.5";
 };
 mcf2graph = {
-  revision = 69281;
+  revision = 70167;
   stripPrefix = 0;
-  sha512.run = "b399097f1b7805603d156a450530ad33cca0d8ce28c2a977db584b2a0b2722bab87d6122a7ce27fc7066e24f4c24a5e832d66e1e90abfc88dfc388b6b4ad8f38";
-  sha512.doc = "8169812299146fa937a323bb573201c04ff6a42e1b090bb87fe24d213fbf8b1f21f0ecf40ecae157b26e15f56c00fddad9e09c9ec2e7fd901f92341214615488";
+  sha512.run = "4e243f8410b3ff8688365ff1fc90da5c81adc1a3ea426d2ba92c18a1378f76e5f00bf2f7aa97c39387caec9b1803fe0603632d1197f31fcad4a860dc3b93b579";
+  sha512.doc = "ddc7500877bf459121a7ffe242618efdabe2e201da58f9038fe863451456a013816d66b807df74735a6bd1701cb72341bce771489e186b21c404d623d58b8205";
   license = [ "mit" ];
-  version = "5.10";
+  version = "5.12";
 };
 mcite = {
   revision = 18173;
@@ -29021,14 +29177,14 @@ mciteplus = {
   version = "1.2";
 };
 mcmthesis = {
-  revision = 57333;
+  revision = 69538;
   stripPrefix = 0;
-  sha512.run = "128de0bf3c8f5ddd7ad5b456d92ee434573bee9e7df028799991068802c0997330ad6a3c8b0d295db7d9eac9e7540d5159cf5ef037ccb1e54cf95dc31c8cceec";
-  sha512.doc = "d93bc6ec219a32ec688933f598042a04f0f7642dc875291ba2437085349e4e697107d2a4bed2c22b2abd3f00009d92fcc01930060ba38aef3444fdbbfed811d1";
-  sha512.source = "dc9cb93c8975fa3e7d50e9067dc39c29875f6086a4dbfe657ca77e38feca4af419eac429ed97df41d442ee016f7f6205cbd1aaefd2a2e734af7ca2ea4c79344d";
+  sha512.run = "8730424989cd18392214aa59d34b0885fc7966d3b2728fe8a4c05ddd042ce3a0fe54bf0ec6e602a9a7a6ead6df67b653b09c6cc360a14a9bf17bf3dcec3fc2b8";
+  sha512.doc = "8beb47651814e5f6268da9d3b40d99e4cf1988d4ea10498d42af648c9e0a37e3e73392ecf91259a3164c06287c8db59392454f49aaeb480e4d5e2b350e7f8c64";
+  sha512.source = "318fc5ba9034d304986a77c86f78c31197d5522f8c1471de8d25c7bd4f6c7c38f58a7f5b41420fad24bef7f8ff4fe75e179e4be21dd1270d5b36c57fcb631db5";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "6.3.1";
+  version = "6.3.3";
 };
 mdframed = {
   revision = 31075;
@@ -29097,6 +29253,15 @@ media9 = {
   license = [ "lppl13c" ];
   version = "1.25";
 };
+medmath = {
+  revision = 69510;
+  stripPrefix = 0;
+  sha512.run = "29039ecd484047454355d009688d5ac4ab4ed5d79a90039025454d13985971659b33476cd0306da52c1afa1a5fa87855b37a8c32b072a094abec28af204abfc6";
+  sha512.doc = "19f64ba210e9f3b7a03775cbd3de1b9fc1df69b9e29034f0e46a5ca5a480905565ecc484c6fc5b0b5b7eb9bcff79b8faa8a05a0bad1128f7c224ae732c2973f3";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "2024E";
+};
 medstarbeamer = {
   revision = 38828;
   stripPrefix = 0;
@@ -29141,14 +29306,14 @@ memexsupp = {
   version = "0.1";
 };
 memoir = {
-  revision = 68004;
+  revision = 69600;
   stripPrefix = 0;
-  sha512.run = "b55265c3beb272c274514931d18107d5ff50691cf442df5e21ce229c8ba88f44a5a3e56cf85ff9d89d2df705878367a31739ab0da3a9bf486b9e5a54e6cfab15";
-  sha512.doc = "4660576ef6f6ba7cda1b3d7591fd6ea768d94861b15965107e80b9231070e6581b0428a4bf11956ec07d3ccd55a3cdd6ddd5630a72e082aec4fc896576833a48";
-  sha512.source = "d817a6ec1253a686d1dc77c529565fac3ed1134932290ced8615d82f8505f29bc11ea352781268c4a729fd4aff2f744708890cf264f68c8828a2f2c6e034fe78";
+  sha512.run = "ef905bedb5b27fcc0e65e2b86ce9f949135e0bf4c857431a0af68eaf5a4472e69ffc687d243560d69a3727d8db2388ff9da7c86283e625964ffea677f7e80c0b";
+  sha512.doc = "4e2b4f36a5a894ed7579e1018e0ca2309791716fb9e36623237c9c4021441893c634ffabdbb33bc23b63a599d4576bd1ce2f1c549d424c9d87c6df2b12e43a09";
+  sha512.source = "31d3120456a4451e955c0476846c057591836de72c76b8de9b421d2e22d7f1018d01073e8f9354ae82d9603ca9fd153a617cf9699b31a1c79254eaf2094503ef";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.8.1";
+  version = "3.8.2";
 };
 memoirchapterstyles = {
   revision = 59766;
@@ -29159,17 +29324,17 @@ memoirchapterstyles = {
   version = "1.7e";
 };
 memoize = {
-  revision = 69285;
-  sha512.run = "1464aad053b69b821e1c99c72a6e448a231a554c1f04d31550fe29401698705fca9c97149435655269d3128885601d4917c7954be2990905360cde1de73db477";
-  sha512.doc = "d210344a90649cdd67b118aca5096db266fede551b7170de088eec4a40b765b9a66b890824092329f76969ebab71dfe6faa3a55ba46bd8b5af9d092cf4fb4aa1";
+  revision = 69522;
+  sha512.run = "ebe8082704f8276468b392fb0efa92ccd65616fe48296160669ce10b99b31a6d73ccbd9078ecc9c8fa520c31130bc57f3dc8561267ed64d9d6ea14b28a32f909";
+  sha512.doc = "635e985c02d8867acebf493cead0e80ea7b481c98c5615cfde781ad850bfbfbf606d2dad5579dfe22085f7947b2976d9e26b397b8509e31fc5018e074f852848";
   hasManpages = true;
-  sha512.source = "68ac9d4a8af74c5d4922da8d8f2c89518bf855d8d578d0df1d9fd798f242c0a339a0e76d10b913a178c0c4195ffbd2e1aab7d3927ba4ea6133fb5e45ce4f9eef";
+  sha512.source = "06f1c38900d1daf52ceef138a658937dd85e1cae8280afdaa44e32eb9049ce444970becd3e0936a9f8f732ec8b32120cb55a343f5c8c523e217d8b7172de763d";
   hasRunfiles = true;
   scriptExts = [
     "py"
   ];
   license = [ "lppl13c" ];
-  version = "1.1.0";
+  version = "1.1.2";
 };
 memoize.binfiles = [
   "memoize-clean.pl"
@@ -29333,14 +29498,14 @@ metalogo = {
   version = "0.12";
 };
 metalogox = {
-  revision = 69401;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "4b91892cccf068c85d774b9d545c07c004a7c6badf89114b5d8cc5818090fb7fa87b3dfd6a7d1162c22939f633bdfb318a670092f70540910d257ccfb6a39a09";
-  sha512.doc = "6da27bf652e239ac7d307a0e5bfd01183ddacdfad38fe1b97d4cf6c084daf9bc43f54cda651b92a5c6693c16f9f6c2a61f821f64c5d1362f8db3f6a808ae722d";
-  sha512.source = "1887d1004349bd5b586f7d02bba1e2668e6d0534317e59c12915af847d478dd5022f5dc91f952032582feea48c0e01034dbf34c949ea08c699056e0c5d500fc0";
+  sha512.run = "b78976ad7e84e59ecca68c0e7ecb496f99f4e50ed5e1636b5675bb0c290f3f4d4d00b02dfe55c78ff4c5ae936e19c8110cdbc1fa76fefc1ee8b31a2c481625bb";
+  sha512.doc = "64211eefedc7175e4859deefaaf89d021763b76cfa3509c8f6da27017993012471b3b894949d3c70eb1f5286bbbc545c712b041440e05df46bbe0ea82eb090fe";
+  sha512.source = "89d9eb81eb883c8aec531117b0a62b838e8a1b0b9396eff4ad690aff37363aad31d6ef045621736e2961977c40e96fc54b4a72aa291863465318fc89b9c5006b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.02";
+  version = "1.06";
 };
 metanorma = {
   revision = 55010;
@@ -29661,7 +29826,7 @@ mgltex = {
   version = "4.2";
 };
 mhchem = {
-  revision = 61456;
+  revision = 69639;
   stripPrefix = 0;
   deps = [
     "amsmath"
@@ -29671,8 +29836,8 @@ mhchem = {
     "l3packages"
     "tools"
   ];
-  sha512.run = "fffeb1ce083d8eb3da6543409e5cc735c9699f9145114c8325c336b93d2dab2a9976fc448c6324318407c3af888cb91cc7764fcf3bd24369e4940f00dda66429";
-  sha512.doc = "cd4c41a329489149b3f2bc79dd50e0517707681f452888394870459d10888095a0cbb7b7c18500f04264c6c85f791d9af9d799b1b4e221e991af32690e7405ba";
+  sha512.run = "5b85541e565ad80891ba56375bb3c2d6720c7e0acc9e96d611626eace4daafeb078fe08fe4e6db4875823bf570f8af1dd4b319d38b41fc4c3ae9696772e7996a";
+  sha512.doc = "487a5d90782d1c0814c7110388e5277e70dff9adc82048f8b5c33ffbf8c82e9df73293b4ab78bc83c2ef23674e341a2fb15f6b3268d1fdff1aa57d4d3813ea1e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -29808,13 +29973,13 @@ minifp = {
   version = "0.96";
 };
 minim = {
-  revision = 69352;
+  revision = 70320;
   stripPrefix = 0;
-  sha512.run = "ec7106c1cba50c73a9b2384fea848fb76a07f8a693ca0affd10cf7b9710e871cecdf2001be45453f76f572dcaa869b613b0ee07d7cf2ac2e38cfa662171904aa";
-  sha512.doc = "fbab9a3a46b1a569f48de82e8311d0775829750341bbca8d747de135a71c808d930149c86560fac29f5713cad2f11fcffaeedf15083439ac25ffc1fd2e78126a";
+  sha512.run = "5c2905e433d296d4645a7f4b9ea4e8d952d3b97b3977a88dfbdb36278f399ea9be02a14f866c4615290a6ca617cd0d29498f330239832fcc2d2178bf6dca7515";
+  sha512.doc = "35ac9d101c958af4ffe7909762edb173ad7af619d870dfe44408634160446568cf480c209ef5546142d390e89a155d902ec6dd921cc33511e5d84cdbd68a2a4f";
   hasRunfiles = true;
   license = [ "free" ];
-  version = "2024-1.4";
+  version = "2024-1.5";
 };
 minim-hatching = {
   revision = 62395;
@@ -29835,22 +30000,22 @@ minim-math = {
   version = "2024-1.4";
 };
 minim-mp = {
-  revision = 69352;
+  revision = 70322;
   stripPrefix = 0;
-  sha512.run = "117b829b8c037674b896f88d224795bcb4fbc0871dfaccd2dc56d9167549e88a1dc8e3808ddf773efd392a924569b3cd5fe3ab9468ba068dae76ca632a99ef88";
-  sha512.doc = "977a6f61e9e149caed9a61f7595cd3b488e0d536cfc7d00d4c4ad5a6b4f2bce003fda88309cee6a13d9f1781bcc7035fb3fee04bd2adedf9fb31f0572680f9b9";
+  sha512.run = "99fc9ec8eec155bf404274bde2981ab791bae041860e184242cf5ac06b7c0a149ce70adfae1b2088a773114564afe93ece070cbae5fd77088a637bc27f830c95";
+  sha512.doc = "ab83c7e366b87d42ae6351ef505c21c14cd39fbde5020f59595ce3534338b38cf2911496fb196226d012ec0337424047c158477721434fa0f08e2207b0fa5e1a";
   hasRunfiles = true;
   license = [ "free" ];
-  version = "2024-1.4";
+  version = "2024-1.5";
 };
 minim-pdf = {
-  revision = 69352;
+  revision = 70321;
   stripPrefix = 0;
-  sha512.run = "959a7e6faef8a4f22c0a8822e73178430721d0aef57fb9c5f5e5bd588e8bd5588eec31a3ea1b0d4a851afcd0ae393cb4917f976e5698b1614cc407428a9c9998";
-  sha512.doc = "1768a50f0cbe45a980579042021670533932da3b832d2cb619638311ac7866a3d39cfc9dca862c842464be47799eb98835584e86c8b04f820247481ad86ab5ee";
+  sha512.run = "da700da69e8f6e82c47a08b0e54fa0cb959fb7950544a9dbd49d9b0883620434144932301c2dc68f03d45b5f7d3b6e9521a7d66fd820f8b91c6bd8364e0338e8";
+  sha512.doc = "f9e3735b6a493c2ad07b1b39c1393eb39dce3250afa358f15c6870fd02c527342198f8198b710db298baac4309544fcb457589aec75e4f54a5817fb8072fab7f";
   hasRunfiles = true;
   license = [ "free" ];
-  version = "2024-1.4";
+  version = "2024-1.5";
 };
 minim-xmp = {
   revision = 69352;
@@ -29862,13 +30027,13 @@ minim-xmp = {
   version = "2024-1.3";
 };
 minimalist = {
-  revision = 68552;
+  revision = 70329;
   stripPrefix = 0;
   deps = [
     "projlib"
   ];
-  sha512.run = "ea2e03654429ff56c274ecd4af620ad97734a2bdeb4dd63f13834a3d01f1d2c86b55d46005bb3181bf5305d5705a34aaf4c84cb7fdd46d90e27939912e3bacc7";
-  sha512.doc = "57f20e5e8fe46c61f181b52ac87c55d2e6e3b928308b347167e7973ee1068a7cf1cc6b8db048ec6ba5f983d1c8b0aaf4ecd405749938607e812ab7c11580fcf8";
+  sha512.run = "899476ca5e7ef145520819cf365e1afd9056b377e5eb3d64e63743d1eb041e6775d9d6ea616e241a6575e57789eea70dee3651a1dc4098c32b72021835d330f8";
+  sha512.doc = "9f887a4043097a7fad52699d2568bf3e534d27df57f0567e392560e5153d7706068f2835ed03f5543bcb8e9021393e526b1499180bf00da851ac661cc86e2443";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -29953,14 +30118,14 @@ minutes = {
   version = "1.8f";
 };
 mismath = {
-  revision = 69169;
+  revision = 70260;
   stripPrefix = 0;
-  sha512.run = "0c85c7301c3409a56b99163c0269810daf36894c261c0eb62a78d333760e10375f0daade5e06090b3571d424b4b504f4ce14b61063a6518e5aa8f355aaa559ac";
-  sha512.doc = "e5693af9be3fe8496b213ff988c851388e1b7f28942ad1734d527c70f905d82d2110f55f3da9425af2a15584196bd83888021b4e6817c6b7717adda5a47ea545";
-  sha512.source = "b2bfb0bc801dd99a54366f71f28971019717d351a3020de5afca1eb4c2ae7f0e6825d343735a860db460f3c345970992eb19491ab486a66aaebe26f9cba9633e";
+  sha512.run = "21714883ae8a8640bdacf7c70b06153914cafa03ca546902017d98b24931d9cee041197fae2b31b317917351294addd8c9531c80586aa14924cd57120f37780d";
+  sha512.doc = "faf0bcb6b8f2c9ac698bdc3df87001dfcc7488449972bfd5a4ec2fa619d1ab88e9764f4b9773788902385d6887d56a9d51edf16631dea8a0379921f380996878";
+  sha512.source = "4c8a203150e5c7c8a291f57cd5a87686c05114d220d427ff34d4255542a9f02bdada4805a28edf7deb479a4529ff841f89253043ae648a55f650dc6f212efe25";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.9";
+  version = "2.12";
 };
 missaali = {
   revision = 61719;
@@ -30147,6 +30312,15 @@ mmap = {
   license = [ "lppl13c" ];
   version = "1.03";
 };
+mnhyphn = {
+  revision = 69727;
+  stripPrefix = 0;
+  sha512.run = "e580c984d9a2242eb7f3a356b222dc6fc4f2fb1e6194f09086e265e253746ba1d94cff324a30c473724410d1d6b0bb7b8bc162cadb63ed96f0837e996c39f988";
+  sha512.doc = "3645bb53bc2aff292dd5a70e3020898b969422b9e21fd11354e2ce60a6c7e668afe149263ee02e3588e0c3803c9568d999a6a6bb067a5941ec288923e167b2f6";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.4";
+};
 mnotes = {
   revision = 63406;
   stripPrefix = 0;
@@ -30281,6 +30455,16 @@ modulus = {
   license = [ "lppl13c" ];
   version = "1.0";
 };
+moloch = {
+  revision = 70496;
+  stripPrefix = 0;
+  sha512.run = "58af737c14943781d96c8a8fbd6004a207281329973bec3ac0166d117af0d6cd4ce38174d4bae4e9a4e5c6eb6c7bf1be9205539afa8267e166656e74932f6e90";
+  sha512.doc = "df09576955c0cdc3dd439e1a15df6b77d27dbc7f4ad876b06078823bf37c17db436cc5b75afac8aedf6622dad706a124cb01252e05345cedd2d305c593a82bab";
+  sha512.source = "55084e06291835c8642d6313dd3a8a34071286c0bffb4988a8787913b38816cbfc26895cc1198fd58feae934400b5c4b5e06f78c5959329a784f7bf32ddf6c68";
+  hasRunfiles = true;
+  license = [ "cc-by-sa-40" ];
+  version = "0.3.0";
+};
 mongolian-babel = {
   revision = 15878;
   stripPrefix = 0;
@@ -30382,11 +30566,11 @@ moreverb = {
   version = "2.3a";
 };
 morewrites = {
-  revision = 69306;
+  revision = 69679;
   stripPrefix = 0;
-  sha512.run = "9618e04c51865b275ab262d0e95806a7fbbffb4f6063b87644f3111760c591be6b3f8684fe72b5fdf0ea3dd6e034f88d5fef0f9c378e31bf44617727a76b98d5";
-  sha512.doc = "389828d2a8fdbd9f9b5f20f3c71654f4d23e9d23e5af8d98904b35bb8d8d939f4641bf74d43e3035ff73310f0324f21a47d56cf6065af1d04d96f34418ba1157";
-  sha512.source = "2794f2571cc3158f92453a229d088f24002ba893758f521da13b1229c67de24573752c07f03a894605704dfa19a73791903055582fc1729814a350c09b0735fa";
+  sha512.run = "738ea602368142999aa6f5d99226767fe9d6613b3e5d58687d787e8e470bfbff3ec2fcabeb5931454754ad80661a5925f337ba600fa62f021ae99363451c4c75";
+  sha512.doc = "a8aad8b575785ee7b36f6946ea2228c507745c4f7ca61e05e46c9b0824e84880e355264e45540b61022010943f2cd63cf051ed1d4b9b438a6eceac840cb2e6d4";
+  sha512.source = "e3db6542cdd4548e0a9fa10a40b333e48ad4ab713acf8f38389f8ebe5113b598f647e9eb11047339ae09ae344aa22ea3ccc0f782c35dca2552fdf8707d4926c8";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -30530,13 +30714,13 @@ mptopdf.binfiles = [
   "mptopdf"
 ];
 mptrees = {
-  revision = 66952;
+  revision = 70117;
   stripPrefix = 0;
-  sha512.run = "a3579aac7bff11c77416bf19447a429a3f56695bfc105f1218ae8f7d531adf0333ed73ff1fe93bab8af2ef590d6157ffa3c363bc306d3e81eb0d78766aa7871a";
-  sha512.doc = "cbf0e2660c7e98697d2441ae8a40d69e9855ad1eeb1acb3b6e140557caae3d0f09619aa24a0c0f5b2c44e133cc7595ebdd6e7ee4e8809f92ecd759f0a12fdcaa";
+  sha512.run = "64efb9355c79a8145e0bd4e44922c789a718f389ecb59ac186ec32da8e37323d09cc33d558cbf67ca5550f68501282dc429b784f483df1e3df5b9d5bc3b5ddd6";
+  sha512.doc = "de5d2c52ebd3651ff42812fe4ea74a4ed92cdd8d0452f2e83af9723581820ee07e2e9528cdc254410193d8b82f8ede7554e182c1fee104333715f253d3ad0d41";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "23.04";
+  version = "24.02";
 };
 ms = {
   revision = 57473;
@@ -30823,11 +31007,11 @@ musixguit = {
   version = "1.2.2";
 };
 musixtex = {
-  revision = 68484;
-  sha512.run = "37701c422b8994231a3ca707c3d8eedbdffd4df89e6258f93c6f9778bd2b37d1c0ee9e94c75f81c5d5fe015b085cc3eff35fee6ec96a5fe28577403802b54373";
-  sha512.doc = "211c386eb30cdaaf24264cde5eb0e07e23a2ad66335d783e64ca08c58e3f04b9cdd954713d3426252e74f63f38399afa42571d44d9f95734d54004b14548104c";
+  revision = 69742;
+  sha512.run = "ee6f9654d867c1f8a4e4a5744a927f511510ef2397d8b452f635704154692cdd128a73fe6c6719099e9794e727beb1e38b211a61d15caa3649a5c059b0be8376";
+  sha512.doc = "942fca6475fdff821fa847c06d6dd8f92cf786e8f0f79d8edeab6276dad177fe97b8c70adb86db424b99875952b93151db35007575744fbc1d814e28ea03b949";
   hasManpages = true;
-  sha512.source = "f5997350c5131164aac7fd785181e22a6e9912762b455cf04fe4371e67faee9ffa25969171bacef14684b6066053c2d8bab5f5d6b467966855614a6af13e8dc8";
+  sha512.source = "61984af8c6a5b024a6e5afa310b42953bb12c68cbcde2af24dc885bcdf28854eb0bc44a764d6ee25d6dacdb7395c62941964fea8768f11e75e11835dfc6e1363";
   hasRunfiles = true;
   scriptExts = [
     "lua"
@@ -30848,12 +31032,12 @@ musixtex.binfiles = [
   "musixtex"
 ];
 musixtnt = {
-  revision = 40307;
+  revision = 69742;
   deps = [
     "musixtex"
   ];
-  sha512.run = "eab6332d626f199e46dcd03ea546abbc4446b41c4b0354c066790ebfde154c6fa90f861dcff77206318b58a31565d884576899629520e78b3285bac673d1f4bf";
-  sha512.doc = "2da473ad2425064747187da005e01d6844731c536b75095828a85d358ffb1344331ef483c0cebe79b346b4fa96a358a1e416cce7d7cfcce6b1242cf3c0a3645e";
+  sha512.run = "cd36d0240d3874930da5ceb759254e6b6e3d7cff6ef12aa74ce3d532580b731fe79cce0ce729d4304659691c13a5e28e3c02098cff7ece22f010e8051afcbf56";
+  sha512.doc = "9d5646e3657c74a6d6c6be0c3f07e91ece88c9f0430e7cd54fec45769ac308b813a0f39ed202b518092d856e3fa0876c589f36f37c38b62adf078647aab42a63";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl2" ];
@@ -31008,14 +31192,14 @@ naive-ebnf = {
   version = "0.0.15";
 };
 nameauth = {
-  revision = 65738;
+  revision = 69758;
   stripPrefix = 0;
-  sha512.run = "1f81c68299508534a64a91465478bea75ced09ce66be903e3fb21b228a575124f63101dfdaa66d9410e4395689706c9e09a2546715006710bad46d496a884daa";
-  sha512.doc = "7f490b2993516937693ed04a240b6e16bb366897b638cbff52c44f95d2b965bceea064e0e6d2064442a28417f8f1adb3ead564d8c30106dc0b36adf8d550c965";
-  sha512.source = "8ce8976678bf079cf929ad97d19d8ac0e7cd55d745e4bfbb7ad70379f952024d1424841ea0eb750fd9135caecc5d6cb8a32abff5e1c5331e7b1153e5939e41ad";
+  sha512.run = "2b27daa9547563ba455b9b3722c8726c1ea5c71d1c4976857add784efd95202cbdd2ed631096e85a0408deefa8e43c95dbb8ad7c0b6f1ef3da1f8476737c341f";
+  sha512.doc = "f8d9f727c25cf50b31d28a3e4a53a7694c5462997f60060e7a2db15e38b14554df00f5afcc3675c5b6bbab477a11f499e79e7a98988b7bc0ef0146a43da5c239";
+  sha512.source = "73615d907733c3252cae3e861a531fc57dc15b2b2ac0149b976f0a192d75c4463fdbed60cd25a19231b5e10e1d017d1e1ce27a4006488ed02ad2dd185e693342";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.7";
+  version = "4.0";
 };
 namedef = {
   revision = 55881;
@@ -31303,14 +31487,14 @@ newpax = {
   version = "0.55";
 };
 newpx = {
-  revision = 69380;
+  revision = 69777;
   stripPrefix = 0;
-  sha512.run = "46edf929749a4104f4fc141453930e4475a3ac298396ccf50250a6c4091ad58b19887883172cdcf5f5b67acb28f084529ef3c344ab3fff38ebfd53cb79334532";
-  sha512.doc = "39c54fe8bd66f529cdb89b1ef92bd6bb323d393d7e85307441d8f0310b2cfc2cc59d49c0b8560c8dee3da23af13240d619de1eb1c6525750caad3ec148fd7d40";
-  sha512.source = "bd679fa72822162ff3cdc14c67d8be7a3d91ad18e6222ec90dab7fa7878d8e593cc1f884ae3ccdab8bb52d437f351baf39afe30e320b4e2e998c51ee729cbde3";
+  sha512.run = "979e5e67eaf5891a96c127f9726061bb0a480388b0f67cf27bf753f0171521118f68bb82beb127bb2c18d866643830125089518436d1be56c58acf49ba0ccd75";
+  sha512.doc = "fcea214e98b92d697699976c245f841f87bb5a314ec738fb551e6f546e32e79fcfc0b1e78d9cf1ad5299bf691a833b2ba69aa9c917a6cb1abe891c39556123dc";
+  sha512.source = "7928e84f2c5523c72a30061e99fac64c37e1c5fecbeaf6ad9aa8ddb1be55c26bb4198adb8c303afed7267d33c12f9f73336453bf32bef98c999547e7f9f4a952";
   hasRunfiles = true;
   license = [ "lppl13c" "gfl" ];
-  version = "1.535";
+  version = "1.536";
 };
 newsletr = {
   revision = 15878;
@@ -31331,34 +31515,34 @@ newspaper = {
   version = "1.0";
 };
 newtx = {
-  revision = 69381;
+  revision = 70496;
   stripPrefix = 0;
   deps = [
     "kastrup"
   ];
-  sha512.run = "116c8192b67b93a6dcac6fd296141b5b5bba89b41c94cb15ee5644ef9c9b3647dfcb9703a002c9433b8badbbd117cad8fd0565090ae7ee097cb65d7e06b0ae60";
-  sha512.doc = "6ac40ed19b45a5a99fb854469605242cc1efa098563a9653bbebe994e79767b465d182f0bef6a03961756fa8670677deb033a8d6ad747e54cf04c62634fd0388";
+  sha512.run = "140e03a3dd5a59ee6b5a81b7cbc5531e92bd2d2296ff74df4f1805d44f6d136dde2aadb0af145f4f7f0a9e223d39122a8320b3858850fb49dd8cb59e80d692f9";
+  sha512.doc = "c0344d8e74e412b1ebc8b9db86579672cd878eaa004adc081c73ba48258a57e4093361237410122198f71ed0a6c3f1fd1989e9ca028118d5f93dbf9b21f6e5d4";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.737";
+  version = "1.742";
 };
 newtxsf = {
-  revision = 67051;
+  revision = 69597;
   stripPrefix = 0;
-  sha512.run = "a85dbbbba3bcd0bb4732d327c5b70acd89ef59d6d22495cf4a4fadc3751af04f27b09dfc77613fa32ed3270417d31cc876e5d72b6868b9a7454302c961dc96f8";
-  sha512.doc = "d09946c13c3ae08339933fd965a1740eaa660413067878e44ed5bb8a249dd23c76acdfa01101a8ffa11eeae3f277a40394023c0d40142908498a1be0d95abbc6";
+  sha512.run = "4d44962a7bc466faa60d39791f18be3b5d3bc5a1eb2b22e233c80a81ad3280b0a89c03717881ee858e327b67040f5859fcde7d465420e43df547ee56f00f5b93";
+  sha512.doc = "992123b7b5f30b827b4cb49b933cdaa323a007c1d41632993a2a8d52588b5f5d97612808dcb48423dba309f025d851cf15aeb892c8bfe10d0929cb5744515b7c";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "1.055";
+  version = "1.056";
 };
 newtxtt = {
-  revision = 54512;
+  revision = 70403;
   stripPrefix = 0;
-  sha512.run = "8d453dd25a50384aa0ffc620448a7c1ecff58b51b2cefd0ee2a3ea98ef274ffe1a11e6e26ccabc1d218d4a3f69da4cb254b3e9c6ee9fa99ac32d8714c15a9164";
-  sha512.doc = "0a29f11edadeec4284ac9c9c04230a925517b198eb3653a456ab68bf495a9dd0b846cea4c3e1a425539f0b834d37f8f9a7f20e5945e8c8efea7ab4bb9342f6fd";
+  sha512.run = "fe95d2c4d2ff7a83f362f55bf2579576b94251fdeb3556c2f417e0118b2dd215a705d06d79e66b9aadeca09cadd5c19f2898cbba8624ea089fef804749d350cc";
+  sha512.doc = "02879af2ae05a703502966acc561df08762a9fe01a873180672652a9c931ceadcfb85d411523eb81425e7f1944f514673e8d04a208d54b27d0d26916077a81a3";
   hasRunfiles = true;
   license = [ "gpl3" "lppl13c" ];
-  version = "1.056";
+  version = "1.058";
 };
 newunicodechar = {
   revision = 47382;
@@ -31435,14 +31619,14 @@ niceframe-type1 = {
   license = [ "lppl13c" ];
 };
 nicematrix = {
-  revision = 69275;
+  revision = 69991;
   stripPrefix = 0;
-  sha512.run = "12bfe8ede8cb01f61a5437a3d91cfa225540699d67327ab40df051967f75e7af7ff34aaf6ed63c5067d7318c491581b39c41430f9d40d0f383f85090e2769c31";
-  sha512.doc = "71d57a75b4c5e58a3bf15879c4eed9b24bef9065b73e93d482ffff35160d06fd8d2ca723b0d9f784e572878a21efbbee34ef9277c94e283b7f69826aa5985128";
-  sha512.source = "7515731fd6794b3f154cc2937e8ca147a8f147fa2fcdba1bc15aab56dd436374eb405b6784fdfddd6183ec4264691c26fd0e4266365e96eefadf90893fedd3e8";
+  sha512.run = "936cbf7f65d1c34986bd6113e07885051e3213dfc98d4102564e0d3749bfe68a0beca8637a34da833e45ad8f5d1eb13ed6f7c75c402158e9638f4f2548ef2b8d";
+  sha512.doc = "f9255154b3f69e14c82f9816a9c2b9b2a171311501c0d68904443a4ac8a05518164ff80b9428922e62fa0b62bee61557e12cfb20c9a53625c3a6ac0ed369592d";
+  sha512.source = "7ce23449d29a57d58305bd77b00de46677e39143e75580236c846cc6e572c4929374329cd58ef9a4b6747ab66e586a0665b7768232703fc9d792b59907dbe6f6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "6.26c";
+  version = "6.27a";
 };
 nicetext = {
   revision = 38914;
@@ -31677,10 +31861,10 @@ nomentbl = {
   version = "0.4";
 };
 non-decimal-units = {
-  revision = 68504;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "5ccc76f7aaca5aefe92e14a686a6847a1df8b00afd04fa96d11dff75951f729920f5564244ed06b74b67e2a81532111fc54adc719a59d6a9d1ac4d6fbeaae9d2";
-  sha512.doc = "e200b68474a0202d8018d943382bd76830f411b95373fd6e43715b343ed0214f08b529b1bec92a4b4fa4c8a1ff8accac8994ca7e342e7edcc5ead511b2769e21";
+  sha512.run = "0aff79bb4d211419da92ec10b0e9139f2fd0e939e57fb8a6ada437ffc71c0d42394c5561894e2f2537a24e466aad7e86aeb40e6ffcacc04963c8c88268bc1cc1";
+  sha512.doc = "fe3e393e6f2de3d5678f71fcfc0e98577ae77d063b8d09966cde4d5145a9a4c0696f4c09d24757e18d8adf75a9473eda57fa5bc1218ca96c2b4594bbecfb5d3a";
   hasRunfiles = true;
   license = [ "cc-by-sa-40" ];
 };
@@ -31832,13 +32016,13 @@ notomath = {
   version = "1.03";
 };
 novel = {
-  revision = 68807;
+  revision = 69945;
   stripPrefix = 0;
-  sha512.run = "2debc0cd636e6d0fce34f841e46e25fb3fade7e601a43d6ccddacbdb475079e5cb07e83efb47c941cdda243bfa89da2b9215971d9012850c4cf0c780f8b0db6c";
-  sha512.doc = "851436d9fe782e654da5bfc8ed7f55cb63c3dfb2911fd4b0a01e9ef1e6d92044b1c44c471d99046c28e35d68010120c2cbc2101b379a9cc0584e0f18cf7e1644";
+  sha512.run = "35da534328bd371913fb43dfebb29dd1dcd88b92f1c39fad6c6248bb14982538b4babc7fa91a54a0c424cf1c3d6dc7d17dcecf5acfaa3979ca37c7fc8a45c9df";
+  sha512.doc = "ecea10182e63c454a78c746946d47017d9c40592a6fcf2053319bf7fb06ccc1c0e655d213b5eed760d44e81195165cf6dea6288c8ff2aa59f5170c337f5ad114";
   hasRunfiles = true;
   license = [ "lppl13c" "ofl" ];
-  version = "1.83";
+  version = "2.1";
 };
 nowidow = {
   revision = 24066;
@@ -32033,14 +32217,14 @@ nwafuthesis = {
   version = "1.25";
 };
 nwejm = {
-  revision = 64462;
+  revision = 70606;
   stripPrefix = 0;
-  sha512.run = "eace1abc8a31104d1266acc6f19ac59b0d0ba73cda2b44bc308ba2a22c9ccd682ca489b9f164d30623f60c911717a171665da0feec6e0caf7c7cf01b8e51139d";
-  sha512.doc = "8ebf12322bf1beecd8e224e9b7a16becf68aee9910717ca39d73ddf3537edc28d559337350ec9af18132679a77319115f6c1bad29cc5ade8443e6e129b3e542b";
-  sha512.source = "f2d5d526b2b6242636324d0ad3aea17c21a680418cf937297c03249034c7c03fcf2589b794917ac72fc5a980dd2c57dcdb4dea75f0c894a77d5c5023824e7168";
+  sha512.run = "1d54bf4f1ed74ca7ea51761ed8381b170e6d66e35513b272ab22267d799e8ae562c5532bbf3212a9300c0bfb19201cd999eede311387645e66ee6cf03693e98b";
+  sha512.doc = "456a5e6f5bcd21557ec0faef50fccc95f2d7f07fe26f705c88bf1ec601e94bf34847c2cc3a8763af5a65f6b2ec3183c97f8f1878bb09ca4b7f2c2997eedfe1b3";
+  sha512.source = "00302f0628e72c6329f03d65f57a9bb78e6e46647247801ad15d0f2785a067c0d1b84fa8ea2af02fb4c4d6c02d8d46288f6642cdaf74eb3d6bc88aceae183a6c";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0.5";
+  version = "1.0.6";
 };
 oberdiek = {
   revision = 69038;
@@ -32157,6 +32341,16 @@ octavo = {
   license = [ "lppl13c" ];
   version = "1.2";
 };
+odesandpdes = {
+  revision = 69485;
+  stripPrefix = 0;
+  sha512.run = "57a0af92aea846e23c0dd05b896af1eb7538f0bc20e957ad3a528212101adf2a1e03bf661b0af2881320e4363edba32c0653a533c74b536d91e86e27666e14ed";
+  sha512.doc = "ea581c7e77c0ac143a10caee59ed2d0cd7de439966974ad80bbe472e3c5cfa746e9cd43da677c42297792ac157e0a3fea25666f55c3e1cc3c38cc22475b1b26b";
+  sha512.source = "428bf6bea18ab29fee6b642ea27676de099072791b72716cffb7670eb274658203bdd53529d8be0dc7918f2db9dc0ffe56baae9986e41ea772fcdae548906443";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.0.0";
+};
 odsfile = {
   revision = 68204;
   stripPrefix = 0;
@@ -32210,12 +32404,12 @@ oldlatin = {
   version = "1.00";
 };
 oldstandard = {
-  revision = 69185;
+  revision = 70428;
   stripPrefix = 0;
-  sha512.run = "4c82d222ba84192cd6ed43e368938f31c0d481400f7c643defed74c5c39d38400515a69d4a6c76ad14d41cf64ed263e14e78ed7431f53d8c64fd9dc1c20e7bf6";
-  sha512.doc = "c2e55b9f48d145e4a7f7e976ea9cf46d1d7563bf56624aa5fdb1fb78f54f8386dc4eb7520d981be239e77823f96336e8a753bb623d286a3eed24308c6f59e5d8";
+  sha512.run = "838a3c6e29a37b060c2f5e158a7145a6119432006b213e4fb3da956d7df66e76e1fb6d963c67d4833b5d45bbdd203e689c9a54302dc3ee28de5d630b200f3dbb";
+  sha512.doc = "7933ef5fcdd97201d269547c981bbdf50ebf11b5a11d417cdd1df9f3e0f35fd5fd618a198050865746f9fcb31cedd61abeea25540d2a70bac45b0ad9065c81d5";
   hasRunfiles = true;
-  license = [ "ofl" "lppl13c" "gpl1Only" ];
+  license = [ "ofl" "gfl" "lppl13c" "fdl13Only" ];
   version = "2.7a";
 };
 oldstyle = {
@@ -32352,7 +32546,7 @@ opteng = {
   version = "1.0";
 };
 optex = {
-  revision = 68873;
+  revision = 69864;
   deps = [
     "amsfonts"
     "cm"
@@ -32373,12 +32567,12 @@ optex = {
       fmttriggers = [ "amsfonts" "cm" "ec" "hyphen-base" "lm" "rsfs" "unicode-data" ];
     }
   ];
-  sha512.run = "65cc4c05b41cf41a1346bf567f4c14183f11d5a6c14ed6ff79e301ae54523eb8a90eea8f94173b9817ac45c14d5e0f5748be252db6a247a5627b129949f4604e";
-  sha512.doc = "38d20d669bf1d8ce18f50e1824550e5333ead4cf8773aa074e31fa331878cbb7bfed1cf7dcd29e598698dd5fc9855197cf5e2b970b2549c2b79c6d78eeebefe0";
+  sha512.run = "f8c0c0ac739e52ea2e468041b50a690999ed7c7ad4ceddc6a915946c6679e60fe4919b7f1d8b0cba49f2e47e54137e0c7a92ebb92ce7ec0ffbb2e3b7cce5ed9a";
+  sha512.doc = "0b807209aa67fd18f6c40baf4ccf4e1faa0e4ef28c25df16569f266cf6d3d05e318a25e2af623db92832ff124cde5c7ec81638ae50bd9211f61acd52347701eb";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "publicDomain" ];
-  version = "1.13";
+  version = "1.14";
 };
 optex.binfiles = [
   "optex"
@@ -32685,13 +32879,13 @@ pagegrid = {
   version = "1.6";
 };
 pagelayout = {
-  revision = 69188;
-  sha512.run = "0eeb34fae976625ba534e1f1a5165d56cc04a91827d8951e1c8cd125703bc35b455033522fabf2d62d024e4ff8242cf6301a513898907aa54f05ce43a684cd35";
-  sha512.doc = "efb086ad732d35c6415c4bba8770c658fd5486573c42f310c56d3de667f9bc3527297a348fdfac2593965ef6ba5e65f56f6e2c19b8163edd68d9ffb5f40a17e8";
+  revision = 69486;
+  sha512.run = "d68bf1937910d93d028757ee0fe06ceaa222b29239d7decc1479c78dd3bfe7a210349562718c87173f26bb34eea142eac4764e013a33d63d0dbe3b6204e60124";
+  sha512.doc = "8b2fc3d9fc36b821dc1082d9fd980fe7280ccdf9d44218a84dfd5ca00aaf79df8b78c674a3460bf2ea8c93d977006bcefb053b8d55d46591bbce2b88822d4891";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0.5";
+  version = "1.1.0";
 };
 pagelayout.binfiles = [
   "pagelayoutapi"
@@ -32995,9 +33189,9 @@ pascaltriangle = {
   version = "1.0.1";
 };
 passivetex = {
-  revision = 15878;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "dec61bb52bc1bf8588474e6d8971ca16f691d13b9c1be1f131cf0a720a205df1a95830f2f172df2efc30799d4aff9af064f9d851d9c705235aaf96e4b50decdd";
+  sha512.run = "2253d07d753a5c20c29c2ebb97446453d2c0912c9f26b2e3bd78676e7c3c2ee82953e188e62253c80da538546481da58602b5478b2b8ccb3a6f7554ee41d228b";
   hasRunfiles = true;
   license = [ "free" ];
 };
@@ -33299,14 +33493,14 @@ pdflscape = {
   version = "0.13";
 };
 pdfmanagement-testphase = {
-  revision = 69078;
+  revision = 70328;
   stripPrefix = 0;
-  sha512.run = "f0065e66e3d94a483ca1e3dc3c7a1f78a1f2f8b038b45781e1f7011939e65814737c60cd606d291f153bbc633ddb15fa7f2b53414f857bf9ce5791a211f0bc07";
-  sha512.doc = "5b83c8d73ab6a81d1f32a35c762cf13b7b8c0efabde94735a3c45716ee470abb3d370f8d329e8785685f777ac812774d5b16de3d53991489d83e219b264b665e";
-  sha512.source = "cded0f375bdf26cbf999fb435c6b3eb9084f6d481087e64d9b50ad9e5414ddcc87a1a495b9a75326a65437021da41ec011647e2ba2a4f72d40e618b2519e23ff";
+  sha512.run = "3dde6bdb63f0758ccdaf62f6ad928e241afb7e7033e05c7d40ff36a2eb526ab1fdde01fddfb96a11856aa59a29272dce2740456c72fd23ce0e450f4f48195448";
+  sha512.doc = "337bea25f8e865fbb70b86318bb806210e8f9e284fb0cd03d11e8998601f9e4d627d616e74f5d9bd23a171700b17e7eb4b3c8ebfb07da8e8e66c0bc72dee0d97";
+  sha512.source = "4c23bb2485c3fbf18beaabe0cc219faa28400a9178703f983e81d8ec412e597b0ac48c98b1ab6e6c188cfae23ea675d2fa077740684181d812e082228cff14dc";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.96d";
+  version = "0.96f";
 };
 pdfmarginpar = {
   revision = 23492;
@@ -33346,7 +33540,7 @@ pdfpagediff = {
   version = "1.4";
 };
 pdfpages = {
-  revision = 65319;
+  revision = 69524;
   stripPrefix = 0;
   deps = [
     "eso-pic"
@@ -33354,12 +33548,12 @@ pdfpages = {
     "oberdiek"
     "tools"
   ];
-  sha512.run = "c29f811574dde6dcd717255d40df7234d0916d6e7e4fe4c25e62639123bcdf4464e3e285c335c11bf2a289e8ca6391278611a0073fbd3ac8a071790717b2778a";
-  sha512.doc = "d91c5ae383beb5b4d16d69d09124c1e9598d3abebecc5d1f63319a90c8784c361fda0bc68626db752c8b9a3dc3f6b691a1be6d6ed7d16169278228f68b876b2e";
-  sha512.source = "869945d91d96e3a7936515a84bc4cfaad96193bb198a0a4db88300d1bfcf61ac971c6144820fcdb52045f4fa3511af8ec4045f999bbf8ef07d869d43e68dbee2";
+  sha512.run = "09586903b55b92d16ee3e3cd205ff8e9a3b7ec07f4261019a340a1c128a9370ece443de314c8922ea5ff8822c9297132e399be2f7ef95949bc7f218535980a7e";
+  sha512.doc = "c1620dcd50cd5b8735645fd001eb2c09d13f1f2edb73d4aee14c55e63c2a10b278be6b71c2bba0c5b4999539dbb74ab3f67f718a192a1fcb6f2a51c93e5b16df";
+  sha512.source = "6c3c6c357eda878895f9bfb49040394c52a764db8297fd3a90087dda851eaa1375b93276917bb8e010575d24939a51b23d5e3acb695e4f1ef540be6759dac31b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.5x";
+  version = "0.5y";
 };
 pdfpc = {
   revision = 68610;
@@ -33590,10 +33784,10 @@ penlight = {
   license = [ "mit" ];
 };
 penlightplus = {
-  revision = 69070;
+  revision = 70319;
   stripPrefix = 0;
-  sha512.run = "b4aee13d9fc3a01d434ea76ed04b2ae6871dcd7f2a1953ebe36a89153ad1759a2c66a622ee161ec7bfc0f79f235a54f6a2f8c232ad62cc2150ea872b2e4b79ce";
-  sha512.doc = "1a9da1ba0e893846d45eeb3cb6ea803f154986aa9c8f419695cfb4c24448a0c9ef603d14925e44731ca0fe00fda5528d80b30f428b81bf97a9cfee90755c78b0";
+  sha512.run = "97de3ce726fc5469bf1230edba37728a332e91dae33a9498b4e32c474694866e95abfe9156dee1e4c4a7b4f9b07922741c87519ab892c01f037db04a92150238";
+  sha512.doc = "e35a2d252d8377efd170d9b42ac233af921b34b2a9a91248ed7640d9b79809debaca54451251fe5cc1394df73f0ef476c72f614ae5aefba5db319d7f38aae7b9";
   hasRunfiles = true;
   license = [ "mit" ];
 };
@@ -33726,13 +33920,13 @@ pgf-interference = {
   version = "0.1";
 };
 pgf-periodictable = {
-  revision = 67250;
+  revision = 69924;
   stripPrefix = 0;
-  sha512.run = "90e347be204b06b55941110e968b02f36d849a667a0bfea81552ecb31baa6197139912adf8bccc6b212b57b77be3857088c35f412049ba6fb6dd205049312c3d";
-  sha512.doc = "e13515d4ca7af997ce26f25dca80325cbf0c94f9e5c6a7dcbd51d0b5fb2900d73e37b73762db61269c0c2408ae8483bc767da680aaa88c79c011ecd811766cb7";
+  sha512.run = "c640e847afc370fb47c39d44712c7fdce6078d39b4cbca9630708fa4374b8a9793100763a5a2734fc3a925d1b0dbfab28aab868f49750dfdabd4df69f0553af9";
+  sha512.doc = "a148aa9df7e95c48f6eeb5a85323f68539ffbaa7deed7b3188b75c5827814d2b26e20c61995334e77a868831d5bb9b7881e8cb993967293f79bb327c387298af";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.0.1";
+  version = "2.1.0";
 };
 pgf-pie = {
   revision = 63603;
@@ -34187,6 +34381,15 @@ pictexsum = {
   sha512.doc = "148b7c29cb8189174442b95cd39b0d5fdf9f937a7a44a17314b93cce555cf3db459e21ae2c4eb9098c15551bd7aada2804855d68f9408fdbe974f6c12dd724a2";
   license = [ "free" ];
 };
+pictochrono = {
+  revision = 69865;
+  stripPrefix = 0;
+  sha512.run = "3c6d73efad12ff4b3c10c1a09e36fb489a75998e556f6042db8f11dfd157cbb27a488eaa1f12f7c72de5d2ea5deff14cb8d2659b1d4618dd91e5bee84f72eb82";
+  sha512.doc = "fe015528ac5b4c2f2f7f955d23372c1a3066e0569e50a9e38699e44c305d588727f0570c265c79aec82f8f8c02f6b671183426c3a58f6f1f339ca40415967b24";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.1.0";
+};
 picture = {
   revision = 54867;
   stripPrefix = 0;
@@ -34215,13 +34418,13 @@ piff = {
   license = [ "publicDomain" ];
 };
 pigpen = {
-  revision = 15878;
+  revision = 69687;
   stripPrefix = 0;
-  sha512.run = "107700bb0c2afd35755589551ca6bbd9a95ee6bec39e51868ea1b5fde4855a0ea2eb92b50105eb6a3490f82ed6f55c33cac25bbd58eeecb57fb80380095b7285";
-  sha512.doc = "48c6c4c26e7518f06233ce0da8898c1c722829adfad042c12b8820bb1bde43f25410c41f76c51f4d01035c9d654bf3ae8fc7bb44a4d2c23c52f3336ec7e7d128";
+  sha512.run = "54e472281b1ad2f98b8f49df945fc89ea2e28bbec4088c15b4b73a411ad42936f408926a006e46656eb70b90172f39dec376b2eace6fd22923dd4881e1659618";
+  sha512.doc = "94be29262f4d00ff65c1679029bc76b33ebc10051862cdbd4da08ef9802975378efda5c2b2cbf85877382d093bb408feda0d53d3458337bdff5239cc851c1dc6";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.2";
+  version = "0.3";
 };
 pinlabel = {
   revision = 24769;
@@ -34250,14 +34453,14 @@ pitex = {
   license = [ "lppl13c" ];
 };
 piton = {
-  revision = 69320;
+  revision = 70446;
   stripPrefix = 0;
-  sha512.run = "95028768d96516ebd9b44abd790d47694716edc795bafed8ec8ddc54626792b0590295e87ee8d06740b50d42b2e4a00c326cc8ce737ff31b2f0d42130f8a57c5";
-  sha512.doc = "11825345e1017add9674e543d146dd151fb3d9dbcc228ec0660392a12e0baa7ec08f224d7024f059ca125f26e744e083369fb972c308173e17908b0d48ce2aa1";
-  sha512.source = "f29cdafeb5efbe3a0d927a68183687aaa6ac6f932a24d362af32827377de566f69c8721329546d07c1a1127da587b25fa3b649ffed0579056e88bf9e987bb7c6";
+  sha512.run = "c6bf65efaa6dbab5d75aa789df37c823a8b2bcaf28a42e476ee5cc7d36c5a3e830407bde7ac7c365e4dc31fb14b873e2e25aa94f7867fd73c6f8e16d25610f08";
+  sha512.doc = "3b5d8305bc3fbab8e3805a9d7f9a5c76c6ea1d6cf45ce31a121c2071fb0de71d275acae3e2225e85aa78c3d24dda559b52842072e917d07788c25b08dedf9066";
+  sha512.source = "db4ac567e3d6741a650ed8cf7098fde78a8a0d26225c485c9fbb954494f500d9304719a9f5f32f9277811923aa323e5970c4826a2177a8c0034f50752468f756";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.3";
+  version = "2.6a";
 };
 pittetd = {
   revision = 15878;
@@ -34320,13 +34523,13 @@ pkgloader = {
   version = "0.7.0";
 };
 pkuthss = {
-  revision = 64869;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "766411cd122b6ee856834ab6b898f236509fd487f14421d4606fb46e628e5a8c9269321b373b8ec5b4ec12bbf13818770021c45b36202447b12eae68a80032f4";
-  sha512.doc = "6ce10aa1e91287f3ceae0ceca54a1a8d91428c84def873c3d59876c22dcb87d6d2a7ed9d0894be4f2adbee769398f0ce1139b55269badd773f9a881fecfa3476";
+  sha512.run = "ce10fdec461d1de90a7b3256db0c29c508427c4b21ae77ed7d08b75d3c95b46bea27c7ed869c1bc8828d40cba05ab84fd7288fa6ae553d786e1ee18e3c468b8e";
+  sha512.doc = "7093f5e5d39576e9b57b08d528675d43460713050af48c77f9b7db78be74b16490dda55f1ab8fa425436d59f6428a3e244ee9490d22ca70eb141a68fe14835c2";
   hasRunfiles = true;
   license = [ "lppl13c" "bsd3" "publicDomain" ];
-  version = "1.9.3";
+  version = "1.9.4";
 };
 pl = {
   revision = 58661;
@@ -34751,7 +34954,7 @@ poltawski = {
   version = "1.101";
 };
 polyglossia = {
-  revision = 69093;
+  revision = 70496;
   stripPrefix = 0;
   deps = [
     "etoolbox"
@@ -34761,12 +34964,12 @@ polyglossia = {
     "makecmds"
     "xkeyval"
   ];
-  sha512.run = "615880e38a7faa377698fe79ad6fffd16eeff067b95a6b70e459cfa68c530499e84e3bd040735f12a29349641f2f1ca2af270bb6ec884426b628bb7ebe491133";
-  sha512.doc = "8faec17cb9a8b3c30728a8b527794b1b58c9e8d26670e53433ecdaddaa341fdf8fa8f599e4cd5452ac854abf0f7b8d4216ea72af0148087e10460757af3602d5";
-  sha512.source = "73734000d3720ebdd98c31973e89b35636d3eecd3ffd7a5ecf5ab2650182f33da8dabcbca138b63e1f6472c003e36ebd9c8962921ee7c1825d5daea44f8f47d9";
+  sha512.run = "d34cfbeffd1cb2eaeef0d7d625a1f1ef7e2835e93eb88a53b2d44f21562c76cab82e1f5637ebf05b25c0fd0b56738ef7946bf7f9607766ca57a7658f98cb2647";
+  sha512.doc = "f59aee2cdfd6ba067e4ef5c20503cdd9317ab854ae35b0a04044b94116d4fea9fd6b839bd4f33af934b207f1c660e126c223477cc57b7a1ad81db54bda2507d5";
+  sha512.source = "cd285a93795e6b0861eb6e930384c836c83463cb2c4806dcdfff2966f23cd28604bc113b48916332d60ddd7cf2e747ece902b7040c41ff3d95b9eb99b0c9ea56";
   hasRunfiles = true;
   license = [ "mit" "lppl13c" "cc0" ];
-  version = "1.66";
+  version = "2.1";
 };
 polyhedra = {
   revision = 68770;
@@ -34890,6 +35093,15 @@ powerdot-tuliplab = {
   license = [ "lppl13c" ];
   version = "1.0.0";
 };
+ppmcheckpdf = {
+  revision = 69527;
+  stripPrefix = 0;
+  sha512.run = "9c6612db37dafa8ab2771e42443f528806542b0c949b67adc861440bbcc85492a726524f543406daadde3d66d20bd32eb521cb96c719f948732c3a84e4702d7e";
+  sha512.doc = "5bf1e2df2c702a3b447787cfdc77b243578f6c59ea4c46ac352628dc647e55da9837375d5d960e17d8baf3d1fe538abb81cd33f08e6b0f501159be8f84131ef5";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "2024B";
+};
 ppr-prv = {
   revision = 15878;
   stripPrefix = 0;
@@ -34901,7 +35113,7 @@ ppr-prv = {
   version = "0.13c";
 };
 ppt-slides = {
-  revision = 68764;
+  revision = 69568;
   stripPrefix = 0;
   deps = [
     "crumbs"
@@ -34917,12 +35129,12 @@ ppt-slides = {
     "varwidth"
     "xcolor"
   ];
-  sha512.run = "6b4748adc7f9823f7ff3dce2a73c4535085974a9f7cda33b53a934acd3399e310a85dbdf367102f71c310b8678119d3396f71f36e3e26063569a85af0c77595c";
-  sha512.doc = "e258319f37ef32ce20ec72e055755ce1782e2133a98fdfaeee6402c404df02e1c60ef9fbdaff39306da947534b6bd79fd16c2b82d4a635325ad8c94858b4cbea";
-  sha512.source = "a5f1384b3d4fd1e33e924b2bc51498c509772136bac0c03abab8125ab5ef0720f5583ffb9236ce9a044bb87127e0f42ae6668c4fd2b0b98f07e32ded13ce619b";
+  sha512.run = "9206d0b59cb501b129ffcca39639593317d2941ba1a982d036296800ce9486bebbf87d0194b43ca811365044a9dc8d27ad59169b2e187d229511db4b08b878f7";
+  sha512.doc = "4565f7aadae38518e2e5f68fd9994670a62b492c2e57344cbeaff4a60d601bd95da23f0c5a74c98507f5023d87d24c73199bcda6fbf7cbae6719951debe7ec77";
+  sha512.source = "2a7bf0d2b9229678565ccdce5c8d01fafd07cc5bc3b2000add41e027ecff7a38149bee9bb04d841dfe0e9993e91c0b9456bd5039c2479b775e4710169540bde0";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "0.3.0";
+  version = "0.3.2";
 };
 pracjourn = {
   revision = 61719;
@@ -35025,14 +35237,14 @@ prettytok = {
   version = "0.2.0";
 };
 preview = {
-  revision = 66924;
+  revision = 69470;
   stripPrefix = 0;
-  sha512.run = "6dd19a259a74447d597edce7e810aa90e01617d60533da9a381ae1929ded559e95509d9b7f0d62b83c08d3622225aeebb9772d6bd47b1c0155b9d1c68e48939b";
-  sha512.doc = "1c0e5e64a10372093ffbb4027a8edb6d7e42d1fc55d37ff695b7c19062a1403c00058fe0471eb56e9bb912e6cfdc13d3e46687dbd55f1efa58095d73f28b059f";
-  sha512.source = "01fee5b5367e15dfd4d9ea156b66455efa8c86c39ff49041c8fc9636ff79eae24e0c764673a75ce5050be81e9ac8ca3ad6fa2ad50fa7953f6a51292f1605b24f";
+  sha512.run = "b7ed05c49ee852d23da47c4dab53e5116b1dcafe4ae404220e10fb9622ee6a593346ed7474a2d13c64d6d3782b5894f01758cd267bfd269f54778d2af46e8bb2";
+  sha512.doc = "d0f797210790ee1ed8a80df8090f9273cdab22de2bbe8d72b609385ff2f0e2004dcaf2a91d0ebe3fcbf0693cf4f83b2a978f7b02744185ebc9c803205e88d7a0";
+  sha512.source = "e2dde7963e5337c8d0b0f0fd2a7adee2f09e8bd3900d2d8d6cca7d612e3401fd6567a42141734e72e6cdb043aa1fd786ca0dcbf42a776880447f81d0ba4e8838";
   hasRunfiles = true;
   license = [ "gpl3" ];
-  version = "13.2";
+  version = "13.3";
 };
 prftree = {
   revision = 54080;
@@ -35107,13 +35319,13 @@ productbox = {
   version = "1.1";
 };
 profcollege = {
-  revision = 69343;
+  revision = 69539;
   stripPrefix = 0;
-  sha512.run = "eb75b12f184b7e3f5ecf333a376b8d59ddbea8a0cba86c9b553074686c354394f10de5b3187b85fd43f458495dbf72c9f0cce7c98d5824c33f485605dd064e7f";
-  sha512.doc = "3976a1a95c47db9bf270f7730b8abd98d82356fdea0897e797d71a8b688c83a7ee122ddb59cc6f34b05d603d3611169bc5afb45c32a4568262b8f0c299b73965";
+  sha512.run = "37e807c9a37384e55c799156dd3af4124345b46d0a25af7e878d675701715bcd8bb5809d5bc9bee6e31377e3d8c16e43cf0f99c4b8f9d16df68c299c04e4ced9";
+  sha512.doc = "666699cdcb971ec304455569fbf8138fabae13a0edda0af06d50eb15ba54b68f90a9d83d4062ef6641476192ea0187c66e666a2098245a49231d84e4a925e59e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.99-z-y";
+  version = "0.99-z-z";
 };
 proflabo = {
   revision = 63147;
@@ -35125,31 +35337,31 @@ proflabo = {
   version = "1.0";
 };
 proflycee = {
-  revision = 69386;
+  revision = 70513;
   stripPrefix = 0;
-  sha512.run = "66d28a0ee9a4aa7b29fc31cfedb7dc95906cc82970a9a78fc5fd3cd95558721ffc01ac58cf74c2b761fe47779aee5349e05e64e3b0d71cf1ce76dff813724bff";
-  sha512.doc = "ea3821c1b94f71cd691cb78c46b78f4d607b489cdf1be6432caf7346505a008f887e0c9e895242adc23bcade67f9187a6b3cefb241322682141adc354db53f03";
+  sha512.run = "e71feda42148721f3605c48271f51db60fc8826401c97372794b799d24183da186ac33d352534d216d642ba85a4a62606ae893ee11414144eca7aa9fddadd162";
+  sha512.doc = "ecda097d113be20b48dcf933647d9e7d2adb6589b1d27058ff06f6a984b0b109fa383d406207119348388a50ce33521432960bac27f91dcb27561e09f0bd8e22";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.01e";
+  version = "3.02f";
 };
 profmaquette = {
-  revision = 69287;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "9fcb9729d28a2f41341f3b4f807d7207e33ab9bed43e44676dfa884ac9cf943fa84fb363a5453611c828e1b0b0f0bd795972b52ec736ef5213deebb7fbe42028";
-  sha512.doc = "7888eeeee9882c049977e96a9dfa65e50d90014e9c442b36cccc08fc95d392c78b25feb3bfaa1844a282b5bbe24bf6a4df1fd1d3d0bf477d28fd16ead0b61065";
+  sha512.run = "17223e35f30ac30274ab96d236903eed3343e8c8b7ce9915d82e430fecd36c7d8586fdbde6ab0f3e91694bbeedc9fe1e1c084fb8e47f08af53424452732e6f94";
+  sha512.doc = "0c93574c3090cbe5959db0b3eb9ed46a45f5256bd8ac3915155b4e7fe44391dce10f6ef6d380da1340234c2fe341ab6bed3975743b4eab3794b4b48db5922b75";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.85";
+  version = "0.88";
 };
 profsio = {
-  revision = 69125;
+  revision = 70211;
   stripPrefix = 0;
-  sha512.run = "01f1aa3951194f5bdedf6c3c44445b1f628a6abd633fcfdc5dcf01f8777ec50b28367a4deb0c303b41983881c255ab21e3916dbe03c1c926f7f2df6be119fdb2";
-  sha512.doc = "f6c650c6d4977df846a62a697fc1b4e82ac541b68db55ec15a0370be2f7b06e8e45e0c8abb81d5573d4ac2dc868cf63b5b19b65de7025afd4f5f69a6cf516b99";
+  sha512.run = "b4e8dcaf48a7b9a6e5cefa8b188e36d4f017afad476f6441e0718d89a497d2bdff06ea3380917a836309de371446602bdee51fe12f42aee0fcbe189b4c1d57cc";
+  sha512.doc = "846703236b09ec68c49ec05c5fc817e109914d6f2449d652876371e92ea1e5c0ac98697886ca81d2bfe6bbc7deb6537f5d828140d380e459f706c9f902dd1502";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.1.9";
+  version = "0.2.1";
 };
 program = {
   revision = 44214;
@@ -35179,23 +35391,23 @@ progressbar = {
   version = "1.0b-4";
 };
 projlib = {
-  revision = 68784;
+  revision = 70327;
   stripPrefix = 0;
   deps = [
     "create-theorem"
   ];
-  sha512.run = "0966ec8d951d6b060e901624e6137a60e1dfa6cba8599102bf7aa16f4caca5ebf4c234f6abd0a71cf8e54f6a3573151c406f5ee5d541c78517c64aba853bcdcd";
-  sha512.doc = "89edeb895c63c96ab12d27498c92c29194a4edb11f92292b072738fed7eaa766ed86382c0ba26eaf9038d7ad405628cf5fd21ff67ab3405883eafe1529899182";
-  sha512.source = "5320ae1610e4c0372bcce855f633c43ed64e928bd770b013ac656dea33c77bdd93ad75e578b71f66996973f365032e9ff20c05589ade56e02e88b244578965a8";
+  sha512.run = "180698941fa86735f83bb4d93886c2cd637aa7ac50103ba68d3369bcefcbe6200a377a9975e04db9f0e528a0b821bbd82a5fe6deb4e85832523798e1523fd976";
+  sha512.doc = "362d152dd0c82a9807cba5b6fe49da6b4a8335af6b23f6958273e370140f3b48e1a52424cfd9c41736bf672f4552afb43f897a8624bdfc300e09db363d501dde";
+  sha512.source = "0d943cd81f384da704841841fab42276b66db825258b4aaa0392ee651527960be60a80d87469a679ee7292a0096c5d438f4c76ad39154981b113cfd12e273d44";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
 proof-at-the-end = {
-  revision = 64188;
+  revision = 69602;
   stripPrefix = 0;
-  sha512.run = "0098bbd42c5dcd8f7e8d30f25682a17bf68845a7859752ba5b397020363914610691248809f27fa78db77d655d7719958f2d438c18913fba859f80e5b7525a2b";
-  sha512.doc = "5b1ddf5826a0a1c092ad2a155384ede256ee38f52315c2490b9829104fa2fb51f0e4b5ceb7d9e9040dbebcd6c3b0b8cda9d166377c1627e540ebc91fa96e64a1";
-  sha512.source = "c40a7912ea5352227557b9be51a06af4ff19f9239f146c23e96f4a9c134b58fa5274f90d8f726197cab40db523988bdf566181df78a3fff16ab17102e1e9636d";
+  sha512.run = "7859a8ab78c39680922e7131f2b95ca1b253b5e1252aa14fe219c3c7fe9c4357ab30d4b58a54e84c3188fab87de9cc14a23925dc1fc1563a7efec400481d572e";
+  sha512.doc = "5c3e4eacadd2aafe86c231d44a340b2567ddcd9d9b737739c3b2e2ed69c0e14d6966174e3026cd10cf4ca4696af61cf305c25584e0df959e49f01b2d95a3f9ed";
+  sha512.source = "088cefbdb746236e400b232079c54c6e8f73d8adf94f022c842f45d5bfe0e83cdcf8540c0dd51214c5538d6609dc0a0cec7fa3b5a2458a28eccd288249f4f9fd";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -35369,11 +35581,11 @@ psgo = {
   version = "0.17";
 };
 psizzl = {
-  revision = 15878;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "adcd254a9991839c623b3f75098276dc26df935db1528d39f8588681b87237febe81f8289aab747486df92bc9af2103638734fc22c43ace8cdea1733d2a66360";
-  sha512.doc = "e9d65b3b0c364fcc7632ab83974d8685568d4135cbd8568cbf69e9162dbb80283724ada72891a72dce2fabe35d846c6f09b05f1123f8fe72ae749215170ee996";
-  sha512.source = "fabcb5343912bf005f5ad73b2ff9444172ad6f36fe42ec492903ed6d19d3c2b67775790b15cb37a688d9c0b8d78145963f8594b67e91d07284adb5d26cd2ea52";
+  sha512.run = "7dce0f9b7781ca89ba93c1607acc0b440ffcf482a1927d0709aa0e914531e250a4f1ef24b64ee63008351c7b206fc092f9211966fb92bb6e0214f296da872677";
+  sha512.doc = "c337900dc35cf0e02667d0eed6ac28aafc5336fa39bd7cd90dcf910ab27ebb741abe0ad7b0182fa8018c945cf9d4951db062d1ecfa9a9758e6e9940a0af0b0b3";
+  sha512.source = "7294b45fe17bcea21243b7c719d151a6fd87fef9e641b5a3a193e355df660f7adf5e52dcc22ad7b8998f8d882973e32bc3d9af57b33223c39ae0079e1829fbb9";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "0.35";
@@ -35892,13 +36104,13 @@ pst-lsystem = {
   version = "0.02";
 };
 pst-magneticfield = {
-  revision = 63821;
+  revision = 69493;
   stripPrefix = 0;
-  sha512.run = "f11b9d1c1b535a9be89b8750fb65374c53e3917272d09c7cb2591251ad4def397948c17e110bb1d86d2e28434d0d58cfbf0efa3c73df807edadcf65bc8267530";
-  sha512.doc = "bdccf423a3c4c157e62a31fe351301f10dacb167c3464b7e38e6e7a49c566e5c4d3025a7e59bac22330b330ec791ff77242702e9987bf700bcc519e50b2742b8";
+  sha512.run = "c0260df43810caa61a033b835e1e60544421e008832091ead56fde4140234a878ba31dd5e98777fc3a58b3e6247daef9a80da63d7131a717e73f1c935db7fcf2";
+  sha512.doc = "98f0e0464e41b12474bb5b5c6e931d7da60206b766a39877f36d3d8f68a016ed7c9772483b1cf30d46a83a9a05576093b2048579ae8d4133806198602f3aaf10";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.17";
+  version = "1.17a";
 };
 pst-marble = {
   revision = 50925;
@@ -36145,13 +36357,13 @@ pst-slpe = {
   version = "1.31";
 };
 pst-solarsystem = {
-  revision = 45097;
+  revision = 69675;
   stripPrefix = 0;
-  sha512.run = "48c38ec076b20b28aef50c207a77069cf5053a209f4ddcb3adb5a8e01f2b6510abb388075c7e5c90b6b48ecdf6f92764836dd58fb51181e28afbbe6d47600abd";
-  sha512.doc = "581e73c180e455adb09453c7f535de5a3f540c3d8046ea0a1667f9f13390cf63297b9073ef66d93f4c6b2aadffad3de24000a49cbbbe374bb7af75402fb6bef1";
+  sha512.run = "8c977113eb47ea9139cdffe297f0b4e333ddddd5c7f54e2cab2dc29d65c11616e938d9d79a4362901b1715ca9be104ecb6eb72f43b779cb11644520306d8ba7b";
+  sha512.doc = "3714132e0ed6d7fecad9215e6ec13af2a74576c43b21faa746adc6caeba16af479e9f35c7d3948ca69a82092d8d6ad2ca07b1b3ba9614dfdd043db1c57cfbd0e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.13";
+  version = "0.15";
 };
 pst-solides3d = {
   revision = 68786;
@@ -36332,13 +36544,13 @@ pstool = {
   version = "1.5e";
 };
 pstricks = {
-  revision = 68767;
+  revision = 69674;
   stripPrefix = 0;
-  sha512.run = "606b1b487d523253c71d814289ccef2fe9c91c091f7b588fc842b2121da3ec592387774565b3e998c44bbf0ef17df0dd2207f632ceb8bb04df8f8b203603c4d4";
-  sha512.doc = "5df5f84afd8793de4201738a032df4c95ec017c67fe19966d908221e3ff69e77589f051232d1fa8fce7f15fe5702ec3abb6080f4676c2a31671543933ed32ed9";
+  sha512.run = "8c9d0a2c8355a338f459a34dee22893acd54fc314ef588a8fc6a727f4dc0d6fc34e64059479c096e490bb2c90d627b555d5052cbf871089099acd18fff0cebfd";
+  sha512.doc = "10946b40abd2e00549abdc0e3d9067c74756785571b4f75f6baf6e6155f90087cba7eb35427f159571a04ba92e1819cf92ad12d9b4b02119ab957bb4b77da1d9";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.19b";
+  version = "3.19c";
 };
 pstricks-add = {
   revision = 66887;
@@ -36721,6 +36933,15 @@ pyluatex = {
   license = [ "mit" "lppl13c" ];
   version = "0.6.3";
 };
+pynotebook = {
+  revision = 69990;
+  stripPrefix = 0;
+  sha512.run = "221b2167c77db3e434d253f04536398501e6bd9682e09c1984db040b9822b191366413f5dae85c84dfda5219f84d4f32dfa1366a5da6ca6b2dfc8a55389ce725";
+  sha512.doc = "61d565169841a001608af347596e4a91f207ac65c45020fdf6b3a91d29b2c01192161ae1d5d274651ce90c017e27ac3d9e56041a4c2158bb43df2d07e6a9e3f4";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.1.1";
+};
 python = {
   revision = 60162;
   stripPrefix = 0;
@@ -36739,7 +36960,7 @@ pythonhighlight = {
   license = [ "free" ];
 };
 pythonimmediate = {
-  revision = 66461;
+  revision = 69487;
   stripPrefix = 0;
   deps = [
     "currfile"
@@ -36747,11 +36968,11 @@ pythonimmediate = {
     "precattl"
     "saveenv"
   ];
-  sha512.run = "a6497acbf8b291e3f9c19a788d853725c9bb0283f4d8da67ccbd3b61302abf8a0d46f16eab2711e3767cbcdb79659d8ee35639d206ede7b578d2dbfb33a78ca0";
-  sha512.doc = "f12e6449f307c0229907085ba6d164a4f2f9ed861a9485e5af5d3a76a6dfcf08e7a38c56452e0ed0fc490d0a90bad151b3ac7e8fecbeb716f683e928a0cbb8ea";
+  sha512.run = "d780c2bb49199fdb77c28016bd50a229851580d8c48c45eb098ced2cbd66bd2a5e4b84493b65b160ae02e6a1c22e64ecdafd0718762c0355db13acd9cbc1f943";
+  sha512.doc = "75d2a8ded38f8740e8ddbecf938388e06568a2a3648b94611b35072639af2ec128b687259aef2bd12a03b0e205f727532f633bd0163ef44e60a526ed38b30fab";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.4.0";
+  version = "0.5.0";
 };
 pythontex = {
   revision = 59514;
@@ -37090,6 +37311,15 @@ randbild = {
   license = [ "lppl13c" ];
   version = "0.2";
 };
+randexam = {
+  revision = 69965;
+  stripPrefix = 0;
+  sha512.run = "bba998f59e869c81278e5a174d3f7e66c6534531064e30152c3a7819b32f81ae2e75b11ee8190772c282d06f0b3b1aa84de2fd730f18edb8bc4244ee31eb60f5";
+  sha512.doc = "251e4e88983af9bcda1024e014fb587ee6ae03840b0c59b141dca606271c582a1085b8a985a1d138781f9a3b6b629616ff4d6827a61ed95284a61dc123c39a41";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "2024E";
+};
 random = {
   revision = 54723;
   stripPrefix = 0;
@@ -37352,14 +37582,14 @@ refman = {
   version = "2.0e";
 };
 refstyle = {
-  revision = 20318;
+  revision = 69680;
   stripPrefix = 0;
-  sha512.run = "15ab0ac1b41608ed2453bf1de27515aaeabd0b06a3e44fa3ced6b67f5e79cf237e92112848622303df2e174ae1e60b77ff31583837f3b12a447f8c4509891cbc";
-  sha512.doc = "9edca88347914ef7810c3b1639cb85f598963404620a99f81f5bd56d45b684e55bf179ba46a5a49953a88151251ec084fe6126fa3ce83d2635450bad25e07059";
-  sha512.source = "9052f56bd87d9ecfb2bd09a3de7f1740837d1e0fea17eb2ff11c1bddc11ad2cdf3d9287167df61f0ebf1eeb4bdf7eed3b5a19b748ee8e560a7695e0418291a6f";
+  sha512.run = "05e95688dfa1e8a8a3be6937cf5c36c315371b66c14d5dc0e51862db7a5aa0307bda55848806c259b68be64bf2b36e6cdf6c328b41b84f839ec67abf2fa949dd";
+  sha512.doc = "6b71671a5a7b472823e805f5559acdfbab76bbc06a063c7efec468122b3884dbe5a6229c5ed7ab4c0e1aecd304c3333a58fc5c75c22a66739fe0ca16b5c686b9";
+  sha512.source = "60064112f68bf18d55c328da986c852b23fd2a9e8082221d4b4b29d901fe37de8c2ab5b9b21701e0db8ca2189945c25bd661ab9ae5a425351a3197bc0a528c27";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.5";
+  version = "0.6b";
 };
 regcount = {
   revision = 19979;
@@ -37401,12 +37631,21 @@ regstats = {
   license = [ "lppl13c" ];
   version = "1.1a";
 };
+regulatory = {
+  revision = 69611;
+  stripPrefix = 0;
+  sha512.run = "5225692577191c662f7eabb217b9c969cd410e75f07f0ab6b2b8e7745b873249f6b56ca8b6f1b8be8fa538f566ace75af847b272045186487212d452dce9f007";
+  sha512.doc = "ac792ec6ee63c2c69cd54fcbaf11e78c49fa819f3dc3bf3eca072ae76fce168c3cb5d3b26f3b0c8e31ed6118eb7787b6a043f0bbec298a80b129314d332c9a2f";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.0.3";
+};
 reledmac = {
-  revision = 68411;
+  revision = 70207;
   stripPrefix = 0;
-  sha512.run = "ab02eaf561927fa1840d59a49e8f87572133fe5762fb2b8e97b5a3fa80a9489bbc33ff9d12433481a6088739cba562d6a66fe9e70b5e74e7b9caecb96bd1fb3b";
-  sha512.doc = "5ac0734dfc14a25f4b171d73cdd643a60d106e11eb4d128c6da146ffd47527212b84fb5c2674028ce0c18b5aeb9375d56f2d5a9ebac654660d672e7983405179";
-  sha512.source = "ab0af4aae5b31147ea29dcd5eb4412f139bffa023600723780f37b7729967f1d5b94290e39080b9a550b3dc967dade97fa94adb14d20742ddece3c4cf3c0c8ad";
+  sha512.run = "a342f8a3e20265013b493836e5b4297c847718bbf8a8cd0eba4e8efee53a2ed6e937766f67ea6b1dd3f09ae03d670f2e1bcb5bb9acb2d751d63264f1212266b8";
+  sha512.doc = "45172bbd27094522f440d6df80826494381d876b715b849415fcbc13e4bc4a78a937b3dce3387540f514b9627413a3c96cfdbe390b101ffb2e2662a7ff716cfd";
+  sha512.source = "67ab848a05a4592b2755c2e935f7613355881c32408c8f999b63815cb44315b72809c2287ce5aa7e27a80f5fdcc399f501a0cfd67428e86a050075e1dd54ed20";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.40.0";
@@ -37697,13 +37936,13 @@ roboto = {
   license = [ "asl20" "ofl" "lppl13c" ];
 };
 robust-externalize = {
-  revision = 68842;
+  revision = 70605;
   stripPrefix = 0;
-  sha512.run = "b210a9adbfa6bc7d0063e624a30abb885eb49a7e7dd3e215f97784e5da4c79886fe4d19aa012395894098833c18209c117e913b14091fd2f3eb8904a356fd792";
-  sha512.doc = "e1732e10a355b4f54d870420acfa3bbeb6256b0a7c0136f5cfde829ff02885422b175c2834b229bf22a4b4a28a1c8e80932af2b0a826b1658d0d8ec58de909bf";
+  sha512.run = "d4abbe1a409b7f282985986d75032361a1c5b38fde2494a8249423edcb304c6aad8dd45484c2d3d7cd56dac9462226791cd73549b0403feb578d18032709662e";
+  sha512.doc = "330f8b74e7514fdecffd7c2749fe29bebec019e69f2368b15d180c775ed85f61c90a1b59192c34d3b802dbe1cb45cbec6955e8d91e11ece6df1a1755c1a7aecd";
   hasRunfiles = true;
   license = [ "mit" ];
-  version = "2.2";
+  version = "2.7";
 };
 robustcommand = {
   revision = 15878;
@@ -37968,13 +38207,13 @@ rulercompass = {
   version = "1";
 };
 runcode = {
-  revision = 68223;
+  revision = 69471;
   stripPrefix = 0;
-  sha512.run = "5f5952e07a5762b3f37de7d97aca5187d8133e6443fa41ed56802a9f852bc9e4d31023430e9969e836d0150e2862d67f0753abbec683d112f3752422259187c1";
-  sha512.doc = "cf2ac28ebca780c9951d42b38806844c55455638502708e6e79a2d9aced7478a797bb89af409364fe193d195b177fc8389a1021e4f553e2c211c6c38d5e6e9d9";
+  sha512.run = "bedab511e29b368c929f688742dc59c36ee6416a8f362c2a24847dedf0eae472e64c060f26287c55b9b881804213ec57eb04249d9c031458fb3d642c01255e03";
+  sha512.doc = "fe6b6af9efe7564e6c3ac6040f08ce30f17159b7a56ca983a9e8f97217706d75dc481daccc0c2594422d3c578edf0f00e5a72f5b06f7eecc8ea81f79ad27ac4e";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.2";
+  version = "2.3";
 };
 runtexshebang = {
   revision = 68882;
@@ -38632,14 +38871,14 @@ scholax = {
   version = "1.033";
 };
 schooldocs = {
-  revision = 69238;
+  revision = 69659;
   stripPrefix = 0;
-  sha512.run = "4d6a2c03a588b8b16c73b464ec8d5daab5acd199048d029b4d0ac1c2416e61d4628dc51bbeca1b8957844355bda4d92946f769a2494c2e3fc8522d4fba451f12";
-  sha512.doc = "8bcc4cdfd18544f81cd1859b9b307a66b163fca639a0e058214096a6c11fbb0649f4b66f1e7186c7d4ab4db635d2687fe60d5c9338f173eac85b83eacafe2d88";
-  sha512.source = "81574268cd8e860e4559d4228335d87053726070e9ed05822cc87234c2a08430c6db752e9138b06b9d6633f22126ae588a3103e7873784b770a31f8d59aa458a";
+  sha512.run = "eb9f95e2026935a9fde3c6a72600a8eb6683ae68ffcb48798c05f3cdcc4f1064fcfd72738dd734a1561de563e044913aa82294b88984cb84ae49947387592f4b";
+  sha512.doc = "c67955fe6568f0a661a2b6ea4b186d133f393420ce20c2d38dc461ee0d551ec91eccd0da94492effe4faac8c5934dd6e59853af07dae9d415073874fcb8e8fdd";
+  sha512.source = "1569b42e84b56ec417435d157a1c1999a9cf9686f72dcfbaa4d365a3efab15802390e594448d5f3816bb6a03b459b63dd85942fd16d0eafb597dd4c232f67d02";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.4";
+  version = "1.5";
 };
 schule = {
   revision = 68483;
@@ -38727,13 +38966,13 @@ scontents = {
   version = "2.0";
 };
 scrabble = {
-  revision = 69024;
+  revision = 69599;
   stripPrefix = 0;
-  sha512.run = "f4401768ca1b9f1ca4a84a61e07379b9ed98f679e0fb4c3231b3daba495dfabb2d2e980b76088cf28bf03e2776e1e39133709b9d4b9b374292e1a4eed56b3b19";
-  sha512.doc = "ca5b37469ba336683ed77872cdbdfcee2379eb32c840cadf79d54b1e18eac69ec1918e8279f1207710125fbbd871b149bf556ecd36b11836a7a0defd941ba8d0";
+  sha512.run = "89ff7d5440c04e7910d3c001be2d4df7d08a53a47d05b161545fb8446977a8f2695cc722854ef040b59b334804297005baee9f2d3572b767d680925191abf101";
+  sha512.doc = "e3d922722c51b71f9ac74e914cf189ffa8e8f53fea4eff7addd2ce5c7d99ac3ab360b50a3212a9ebf353114f1dcc82cedd5a9315b48f4828b1340a9867ef69fc";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.1.4";
+  version = "0.1.6";
 };
 scrambledenvs = {
   revision = 60615;
@@ -38887,14 +39126,14 @@ sduthesis = {
   version = "1.2.1";
 };
 se2thesis = {
-  revision = 68255;
+  revision = 70117;
   stripPrefix = 0;
-  sha512.run = "a9283b1b34e7d9db35dbb64641b68eab662ddfd7e468f856e466c56c7c7ace6de3efacb43b1810e97d2eb2d0c2cf89d50ac45d79a5bcc9f79b52a1011e41ad39";
-  sha512.doc = "562a8c929ae8bcacc2dbdcc4b585b26b910da3792089670f89e4300b771a06971513978a0c656e563c7189673b6067acd450a2698fcb32449a4de75715a2c270";
-  sha512.source = "8a76b7e1139ecec4b8c9a4bd670f3bb82d354eeb0cb9d94afe7f8ad3b7656921b510ecd9223443efcb2e38c5b91e621fe66b99d282bc650402977fc84e4ffc7c";
+  sha512.run = "4dd20b0d80acfe324039946be7383763bc704c5e468b79edbb079993ae89bd98fd10113c97075e2b2afcccf6c75438ff62bd32f509e0040a64de69fe4fa77784";
+  sha512.doc = "42a8c89d3375e35454975b087a8670cb2cc95e29e130bdfd41afbe902b0dbb66e3219dd8873fd88970a6d4cf155d077e0b4a50755cf278cbadf71718b05e6f0c";
+  sha512.source = "6529a9dbf2bf038f418964a9e8d6cd7423abc2ab4faf569b983469644098bf5cc80892b4db1d7a4c90771a9495d7b64de08944d2e502c2b6e37b5e0c503eff79";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.2.0";
+  version = "3.3.1";
 };
 secdot = {
   revision = 20208;
@@ -39633,13 +39872,13 @@ simplecv = {
   version = "1.6a";
 };
 simpleicons = {
-  revision = 69396;
+  revision = 70519;
   stripPrefix = 0;
-  sha512.run = "f6f651493ec472e4be6286bf8a29c3fe024b883390c62debdbaf107915b0e2451c3303687a2a41dec8091318a8c6a0cbf6da1142278782189c498b73d03aecff";
-  sha512.doc = "0904648f121bc9b29f95f98b636b2edadc5fde6634a9303549d5588f5c52d2a87d6a559c8f714be7215ab3d17371105a1d60d1fb0731fcc62e34e5b8256fb64c";
+  sha512.run = "336d8cc4f3a20bb6b9f7f956dc09dcb3184a333b0e82f9b72ebfdc7f73c757fa53a48ce0bc31a1b397c42bda9826944e3004d881ee1d6dac4f3430919b4cb9cd";
+  sha512.doc = "93e23215d137d04ed4086269aa79dc8f81b70147f5115edbdf7e43865b20bb241275eda4b519db5d9a3857f36d956707d936156c002c155333d72b1f60edbed5";
   hasRunfiles = true;
   license = [ "cc-by-10" ];
-  version = "11.0.0";
+  version = "11.7.0";
 };
 simpleinvoice = {
   revision = 45673;
@@ -39712,13 +39951,13 @@ simplified-latex = {
   license = [ "lppl13c" ];
 };
 simplivre = {
-  revision = 68376;
+  revision = 70317;
   stripPrefix = 0;
   deps = [
     "minimalist"
   ];
-  sha512.run = "f9891f271cce6c795fc78719d71724dc1d07ff21d6877740745dea401be1e67801ab92bf4de2d3a379fb2e63084d902fcf4a9fe38aef40052d30e84e8b8a6b66";
-  sha512.doc = "d958c2e1e75bc22256a2db8fcfa2e4d5375b072b493a18c701cc44d4b3bd9a8e4e43291135ca21febb244a83ed865d7d855feb9979091d771150633170865bae";
+  sha512.run = "864101fbbd4d71ce75960255e0df965ff1dcaa7c323bcf34fe4893190c81877cb2b86d50559b20f8698ccf015cbcd111a3b6e052eb62cea28e9a5f62335d0121";
+  sha512.doc = "890638ab256f56c1a964e89d990ba57288fe4ff2d8149065b1a6d24b056eca50751a932c5ac91a453bcffd1b909a7e8c277c3e240d525a97bee259d6a40bf91b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
 };
@@ -39762,18 +40001,28 @@ siunits = {
   version = "1.36";
 };
 siunitx = {
-  revision = 68844;
+  revision = 69922;
   stripPrefix = 0;
   deps = [
     "l3kernel"
     "l3packages"
   ];
-  sha512.run = "adf94a225f73f132a84a2bcd40ac1f024f81fa10eb35be7ca6a41149960f508ccb45f967371aa11ec1a129251a3272361ab270a3ba00b595627489cac789f279";
-  sha512.doc = "35fe0a78311f053e98153fb435327478cd6fca48e1c9595736d4857cbb6e8882ddb20a89fcaf95542c9076c7a89cd8ad0c042e0faf0a8a7dc3a4dccc8131fa98";
-  sha512.source = "1abddd04b462232b62d9f53a1dec4f9815862fe208680e7b62aff00c6ce4649494eedfda81051e7d842d64ebec35043e7a38321212af22e3bf70cf9649bc107d";
+  sha512.run = "df5ab6600630dbb86b496aeb3c048137a950ba0ff56275ed4fc37a8eab517f45e53cf5aacb69e21bad7799b15dc0e8d6c2f827b2a3e41abc972119174d2f2352";
+  sha512.doc = "e0801e342de9483cb5a8cc24b63002c9cd01d2e38ab6945eb91b635ece0833cc1a1c6c12398a9e00eb6ffa284e11329ed53e7f5a708432d7ae1c361ce5390821";
+  sha512.source = "6df46783a825446b651644bae7c5d5ad7c0abd970153de9b360376b30a1d61adef46ca3a9887689fc1fbba3427a3d634a3bfb499b3d933bc6670e02cc396c170";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "3.3.12";
+};
+sjtutex = {
+  revision = 69967;
+  stripPrefix = 0;
+  sha512.run = "b9c366d594492e128f183bd1805626fc9cd7a226cfb2e8839047a7299027515213b279aaa46e51d3828997685625e5111d8da71b4f80e8063887612891594cc4";
+  sha512.doc = "b996ff331e0522e6b95cdc17f289f50974d62983976611b428bb49ef170e12a94784f96774e99e6488c88749fd78cf304ed7bd041970e14a65c40531b4f71f73";
+  sha512.source = "7a6fe3891a069b3f2bb9808a337b0812eb28b99f6502e0da539ec573b29892a63029f43e7aefb3e5d660e69ae8f26d6b4239cd34900776c1bb1cf49d3e420a26";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.3.9";
+  version = "2.1";
 };
 skak = {
   revision = 61719;
@@ -40143,13 +40392,13 @@ spath3 = {
   version = "2.7";
 };
 spbmark = {
-  revision = 69350;
+  revision = 69927;
   stripPrefix = 0;
-  sha512.run = "66ad2072225527c3ed64073ba5d33533a429b211794cf6cfb2c2623063629b4ad2869decea96237cda6c678dd35f46c6a63c61ee900a6a03c11e77130f911113";
-  sha512.doc = "128962629c38e6dda2752eb003c1039cac0e3ea01ae9ffef3b784d4f28c364fd275c1169dd812293ce5bd68a4c6aee422a23a63e9ac5b3da4ea5388e3ca44bf5";
+  sha512.run = "5734970852cffeddd5e926e407b15bb1058d010098a19ff0f96f5b292ad9b87a81e608400779c9b827e78db768a24f719f382e159ae1a472ebf1e7b7a2644aa0";
+  sha512.doc = "17281bda5938984885102aad59bc815c0488277bd5e4b0dfa7f0c48f7ecc613b7b6716dddebecc97586e18059ec06ca95f6757ef3a355252f5d2b8cfd7b62f18";
   hasRunfiles = true;
   license = [ "cc-by-40" ];
-  version = "1.43";
+  version = "1.46e";
 };
 spectral = {
   revision = 64528;
@@ -40435,20 +40684,20 @@ starfont = {
   version = "1.2";
 };
 starray = {
-  revision = 69002;
+  revision = 70604;
   stripPrefix = 0;
-  sha512.run = "4ab397ef4f6d8383efca60429971dc48ac6b0001604f0a53540c7f030a567606f0cb8d401569ebbd2727e83ee3a94f5e62680aaff3877a4225326988ac651451";
-  sha512.doc = "9db6912c1149b57a56c8e916525caf122b3d37346642886a12309463b0dbeda45ff719c300dd09460da51518c8a91a99b0e4aa3c80e188f09e167c1bddf31b9a";
+  sha512.run = "69d5bbdd999a47e4dd15d01b9b34bbf4bcede27dd60e19c7c10b4d85257ca38448b924e900c109d2d40e5ddc1b7a0e1b9abf76248a60d08c44805c1d1ac7d814";
+  sha512.doc = "1fe545c98ee814c1f6955a1b75ffdab665cb18b071bc1c833c9a595983c15eaa211b990666768ce0e4eabb336ec11876ebc72141e3cf9aca2dd9d6686d5476ba";
   hasRunfiles = true;
   license = [ "lppl13c" "gpl1Only" ];
-  version = "1.5";
+  version = "1.6";
 };
 startex = {
-  revision = 35718;
+  revision = 69742;
   stripPrefix = 0;
-  sha512.run = "840a60057867ea8439c0497eb22dbd8ca8c8a2375887d74ea383a8a356d5de34a389db3df5f4c41082683d1108a0f88cb31c25e4c3a56a27e45b8ff5b62da4b5";
-  sha512.doc = "d2076580253889e51a07ebd094daeb10a9ebbf2d9154d288460a84d7b2a581b849d1433a442d8eb911a9d2110e87ae4eb0628567b50eac95cf9c6866d3c34b3f";
-  sha512.source = "af1bdf22db048334823bdd18fd87fd8729c0bb4cb729ee53271f7e0b9ec4cea243840657e1a8ebba61728755d022d37495ef40f9962ce8e203d402b71d2d45cd";
+  sha512.run = "65d5b1c2f5b49f3ceba1fab6021ea4445aec25f302145586331468d727a9cfd992e444b0e53f3aae132308492f15d8f76c5c18cdcb405d9d06dcef6a443a4e23";
+  sha512.doc = "a4693b80da94c5644e85c43b93a73ca385097fd2b395856d497e5a138b54063d98d59a8957937d2e2e6ef8948f59d0b1cf74defe50de0b7c5c0fe3c1da83c9a6";
+  sha512.source = "e3d11a95d9705f18241f2f31e2dd21bace280b82d9edb5de765f0970ea9367b2f502111222837c328486b68875b59828d73b718e9fcdbc4b5b5b16da4fa900a1";
   hasRunfiles = true;
   license = [ "publicDomain" ];
   version = "1.04";
@@ -40773,14 +41022,14 @@ sty2dtx.binfiles = [
   "sty2dtx"
 ];
 styledcmd = {
-  revision = 65262;
+  revision = 70496;
   stripPrefix = 0;
-  sha512.run = "7111296b41df8849fcc01820dc10468a05597d5e7db5f0e45ac4bebc2c6a66dceb3042d645b51dd65fc2cf4987fc38c724a539f292a95c0f552e374128649830";
-  sha512.doc = "c85d0fbec0e9927c29f1684f715b2c6a9897ad6ea41580b09d9af4cab293bfa7f16b65d1439706ed85282698ab245112050cc212813cb2835666380802ab7a79";
-  sha512.source = "e1bec216d87d2e1649b9206dc2facb99486c6d1f2bcddcebd9c1dd9db9f2551c3043493df36bb64367a6e71066f16fb0ab3a48979f6554482a824cd8a83e3597";
+  sha512.run = "59af3b3ab6b045533167dfbecc3a0a124fb3f8098112ab9b80cf49a3c5c20323122a488019ec3079dc596029a38e45ba679c2448611a8f90108f8b2b59f5568f";
+  sha512.doc = "0c096994a7027873f97ac1bc5f9ff1439b32cdc9b6255e4ab9fb955b8c4e60406b152a56c3a6dabc0f5bc41b26fb60ee0ba94e4d9c0202d93d5bd8f0e422ac7a";
+  sha512.source = "cc8de429174607b5a27123c2c580a9cd35858fd988bf4458d7522984f8ce0d24223f9f31bfef41152190f1533ceab9d87dd8bad368446292d9b495161d228b00";
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
-  version = "2.0";
+  version = "2.0.1";
 };
 suanpan = {
   revision = 15878;
@@ -41420,13 +41669,13 @@ tabularew = {
   version = "0.1";
 };
 tabularray = {
-  revision = 66276;
+  revision = 69926;
   stripPrefix = 0;
-  sha512.run = "49171a748b9fa046d874bfb2aa44d2696120fae78c55314853090163228d6484507c281f65c7ddb1ba952b22c14d91e3904e779116adea69166322b91188b980";
-  sha512.doc = "98d37bdd677cac76657848d0ef5f638f77c44017c6320bb4122696672dfbfd459afc3c2ef44431da7340d9831c319998f88390300ce2f53a355239203390a448";
+  sha512.run = "bfbce523764d979d0ab24992be6b0c79dcc20dabbdab195496f11e21f01c349fcf0dff8f400b6833dc046a74e27468b496b99fb65d1aeb820d7c4077b21525ee";
+  sha512.doc = "2b58577fde437018269468d81a9f50e39b6cd36803874dd2f09e7fe0ed0fc2f63c6bc195fc433b997e65dd43ae15cfbfeaadee8f46fe63bd32bc3ddf91fd8507";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2023A";
+  version = "2024A";
 };
 tabulary = {
   revision = 34368;
@@ -41467,14 +41716,14 @@ tagpair = {
   version = "1.1";
 };
 tagpdf = {
-  revision = 69165;
+  revision = 70259;
   stripPrefix = 0;
-  sha512.run = "56d464d44796cea4f20d94a3f58275f2d4d470e3f851a14c0a63da738e8865a1276a7a06ca77c00a2c9eef0b082c1327be7645a96066265a6d412b5ae950bf43";
-  sha512.doc = "ceaa96192541cd2a17c996737dbad46272c5b76e9af6176ccf4c6b8f1baecf2d04636cbf8dab0563943dcbe5cc72bc36b1d8d3438f1b35a5d239bc3da81f03ea";
-  sha512.source = "202a66085866eb4c989278ee9a1cb9143c0d0bfaef6f2bb810736ec86d649287242b15303b128f80643074f94213f7b04de46895b324cbe13c9bfe1027ed687f";
+  sha512.run = "cf20cc71bb96599498e470f62f125a52f8457cd6a5f150a171c51c379c9d75d6ee3116d09a281dc0c2a079182a3ccb70c8eb12d5f8679b4f8839f63ce4da95fe";
+  sha512.doc = "41c3de45c71f44af9c022c0a329b9e6e34956f15884d6da96373dba008b14058c851f7c51265b0f408f5154233a9e84979395a9a970aee36ac4d465209572722";
+  sha512.source = "bddd07551ca8dbb27da3cf82b5caa8a6a89de15b4d13d50997ac0854e4e9b2e480cb371f7843af960f698ecb6f19ae376298fac3560488c3072b141fa1ccae75";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.98r";
+  version = "0.98x";
 };
 talk = {
   revision = 42428;
@@ -41558,6 +41807,15 @@ tasks = {
   license = [ "lppl13c" ];
   version = "1.4a";
 };
+tblr-extras = {
+  revision = 69776;
+  stripPrefix = 0;
+  sha512.run = "d47a63520ae3b3d8db6054357bace701b890d2b6c325d620d69d3185867b3c0092dc9702fdea4a84b56a3e192a9e01c083d3c449cc597877a8efa1abe9f6784c";
+  sha512.doc = "c4f99c06e5ebea7bc88806252e8182cff3282ce6d3eb0a1a71cea97bb132304049a4077c57d0a0d0bc8ea20c20e63b4299cad0d9c06b49157ebcaa2e85d3af5b";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.0";
+};
 tcldoc = {
   revision = 22018;
   stripPrefix = 0;
@@ -41878,12 +42136,12 @@ tex-locale = {
   version = "1.0";
 };
 tex-nutshell = {
-  revision = 67213;
+  revision = 70378;
   stripPrefix = 0;
-  sha512.run = "cb8d343a8b070c6350cc922c74d5dc08ea9f6bc92397e5325591913f5b7ff01704b0c5009a8c8083a47baef64190b6640c51a91216af54b8505654d3105f34b7";
-  sha512.doc = "50cf98a9ba348f6814274cdd195a2ff9129474e61e858932f8e8c256f8108f622a088b0bed586c25e199737fbe3aaaa11441d6ebaf29fb0974ca822d662b79e0";
+  sha512.run = "46f2ee7186bbeaebf250eaf2b5768ef4827bcd3c87a037fff5bc88d45c749f65e25f60a02639bf793e50bc66a11d9da365f4b1068143ab5edbf11c59818da02e";
+  sha512.doc = "cb3d558047b0737a0dedc904f615c309be9b13ae53f99871d8facc62c3efcd00b933a67f496d24d9d896c1b96b8f21e257487b610633a73b30017b87e98bf70d";
   license = [ "publicDomain" ];
-  version = "0.9";
+  version = "0.10";
 };
 tex-overview = {
   revision = 41403;
@@ -41929,28 +42187,28 @@ tex.binfiles = [
   "tex"
 ];
 tex4ebook = {
-  revision = 66621;
+  revision = 70117;
   deps = [
     "make4ht"
     "tex4ht"
   ];
-  sha512.run = "b0dd7eee40daae5cd87b39c8d52ee99569992dfb3f9d438cb43f2050f347f33653b5932c6b159b3d24382971aae5f631f9e8ac8e2e3219130ed346d5e466c0d1";
-  sha512.doc = "72d0e9550cdc8cd0f5469e44a9ddcbcd10c8141f68479ebb9b8f8af3e2233695df05acbb875b80de0330fc29d774b7d3f3c9fc1f249c04e60944ae9642326a54";
+  sha512.run = "7b2cc47523db8f9b987d2423e10d30d50684f2cdd45dceb846a0bec634ae5ee1514312d8cca46dce701ba1d86c9cfb21f0a0bccf67376f453fa5fec99165b19d";
+  sha512.doc = "6011f8dbfe4308e17e8dae72227404374afd1c47e8ab2568248be67913ad1f170d7c83cd01a9e01e39607486579d2e9a1f0a1bbdd3230299109d12a3aba536db";
   hasRunfiles = true;
   scriptExts = [
     "lua"
   ];
   license = [ "lppl13c" ];
-  version = "0.3j";
+  version = "0.4";
 };
 tex4ebook.binfiles = [
   "tex4ebook"
 ];
 tex4ht = {
-  revision = 69412;
-  sha512.run = "59848f9a4accb16164f2af9c7c26ae4a28af826116ac85f68fd1d9a399b979cff18e0d15ad85cbcdec5a955a01da1f46fc7ea6c817a216cc8aaf0df88c5b9ef6";
-  sha512.doc = "6756a4022af3e42e47e090638e114a2d4c4a50bcfef7473bb8ebac3a9d2adea6153b7596144f65955cf02a697c0df47a631877118cdfe8b25a00ffcd5b1737de";
-  sha512.source = "c1c3746084f4eb88f6aab21c20168e9a520f4757eeec5d6742e905d81aff44d5b2b0265efcad2066fab8669a59186a05d634bbe87f28b44f6e58cf3a0fac52ae";
+  revision = 69739;
+  sha512.run = "c78b1daae522e9dfb8a0c3b49e04cfa57d68bf96555cebb5ce2700f87748e7c7f5092ad1329f9bb03d1c3f2f11eec58653a66aaa51e295b8aeb7f3606d7d87af";
+  sha512.doc = "135b1475d6b4f8650a6e9363caeed0c769ea6ea2512a585b19767ebd440123f39206ebf80b708c37dc3f269b9dbec9bc91a306c36055324e883f679338fcca16";
+  sha512.source = "1366b563e320f55c4a005e25520b942c9d4e6a1dc6204a3f4e5416fdc6d682cf1b3829233780f4fb7ea81881b3b32f741ab87c2496bc75ef45993c4769fccda7";
   hasRunfiles = true;
   scriptExts = [
     "jar"
@@ -42082,19 +42340,19 @@ texdirflatten.binfiles = [
   "texdirflatten"
 ];
 texdoc = {
-  revision = 66227;
+  revision = 70583;
   deps = [
     "kpathsea"
   ];
-  sha512.run = "02e7d23e20983f96d05725eb91a4f8bed6bdad0051e9f3c152f945e22255c70e7c0b2d93eeca1fdbbc2ca550a7a15d46540ecbb383575b03a4da9bfcea4e42aa";
-  sha512.doc = "80ddcd5d32e02ac87ebba175b3f2e253ca02daf70e38ec5a6db1a0e595349ad33d6b7cf7e95f8af7de621600a58b952927edde04319adec13fa139fa0b634970";
+  sha512.run = "f81535eda231bd03ffcc2c46bc05d04f73f6ec7c6ff0c436da0d42417f0a8b21c444489762a33dec5cefebbee9113f403205b621e51ee2ac33a2b23aa0eff431";
+  sha512.doc = "fc6d8041f21e00214dfed376b29bf47c52a24f09358255d0587c24eb1a046a6d8e65c448109c63d485f76b2cbe90ec8b609c20bbd8490206224457b1fca2499d";
   hasManpages = true;
   hasRunfiles = true;
   scriptExts = [
     "tlu"
   ];
   license = [ "gpl1Only" ];
-  version = "4.0.1";
+  version = "4.1";
 };
 texdoc.binfiles = [
   "texdoc"
@@ -42169,9 +42427,9 @@ texilikecover = {
   version = "0.1";
 };
 texinfo = {
-  revision = 68342;
+  revision = 69818;
   stripPrefix = 0;
-  sha512.run = "5f79869d29a21aa2d5acd22c2c3abbf12b00afba2564dc9ea779c8f4caf5f44999ce27635d6ea01b9d7e441388e63f1f31238e47a3a68a436bbfe39254920722";
+  sha512.run = "5a87395dfb732e8cd213d50c3bc3079c4c6dd6a070e1be580dbe45c02b2c9f0f3d5590dc36222d0833c262c6412024e55f0881e92358715a585dda064b964e2c";
   hasRunfiles = true;
   license = [ "gpl1Only" ];
   version = "6.8";
@@ -42226,8 +42484,8 @@ texlive-ja = {
   sha512.doc = "464442dd7f1e77598e7bdbb6884453f5a4a2f57d5d8b028d0126e5bed50b3c19f9fefe13b602ad1aff3334e45e8082f2a1328f884ade2ea92ba4b054a41c4b5a";
 };
 texlive-msg-translations = {
-  revision = 69346;
-  sha512.run = "b7d8293947eafc561873918f658e372feafadc7de9ff8b2b5c65bade32b40bf99c1172fbb9737cd8e5d2c057dde88e392561db36c093518f49249198646f7148";
+  revision = 69796;
+  sha512.run = "470b395fc5ae1271c39ca5e85d7432e46ee2379a338120fb442542fb3513508dfe8c1326cf60148a4a3f58cbc990913dd272661c6b9a942f167ee6d6d15ac7dd";
   hasTlpkg = true;
 };
 texlive-pl = {
@@ -42243,12 +42501,12 @@ texlive-ru = {
   sha512.doc = "40e8b29f29ed61addc2b9e7ce4b73d12bf2e59f1c50c65e59e9c8cac5e6c3ef264ce2071b0d54e15f5029c101a51d0efcda0144e113aaedc714eb1300aa9635d";
 };
 texlive-scripts = {
-  revision = 69407;
+  revision = 70585;
   deps = [
     "texlive.infra"
   ];
-  sha512.run = "e3a8fe45541ba71128fc9e269ff7f0a3d45b2789df2d689e741fc87eab51b2c8021ac7e0899fead8d1bc043538d16589663932c32507b704fddb095c028cdb18";
-  sha512.doc = "c0d2c8280df1f6ff0f6f6d850c95a82aa7284d5e637cdb69518e419fbad3404cdae38ec58a8e7b452d0be48ee107b05e9b5ba84cfaa5fc81774d132c3b184083";
+  sha512.run = "fb5abd894d2ac7021391b7ee270cc833131c2a30f406e8b63e1b3c713abda08c3a28a30067d89e905fa40d7092c9529e8ed954a020833724cc867c6f2eab5272";
+  sha512.doc = "3d497cf7940b0b6410a537da324da33276b8af004c00b54462f40986d7a2af818c817b57663d47c714c3e4237dbbe622627bb64dedbaf2017732bc76e59492f5";
   hasManpages = true;
   hasRunfiles = true;
   hasTlpkg = true;
@@ -42312,9 +42570,9 @@ texlive-zh-cn = {
   sha512.doc = "534c505455c5f9c73803c140a340df2882a97516e15f52c5b65695b7c626404336a0e4f6190155b5bda1b9a86d7f4d44ac294bccec791ec6701e56d13c00d71d";
 };
 "texlive.infra" = {
-  revision = 68903;
-  sha512.run = "077dd2060eb3a1132bb392615a36684b42108781e25610bfce2c9d22d743f8abf01f8c79c2b09a8d2a2c1edbbc0a33eec51ab1b0ff07480c0d4ee510e8680966";
-  sha512.doc = "2674fca1b6f494d21ea2e7993e4da75b821ca9c2b02eca47d3eb0d4512a985e2cd7900d6bc19c1af93ba59857cfa82bd3ee61200794522ec755348c067817e74";
+  revision = 69740;
+  sha512.run = "d3ef23150149d240d8b74f5b9f6126de90f44960238deefa94415310586790d5324f9fd83478fa4d726ef6dff516f5382222f56933599b384101521a66d0a248";
+  sha512.doc = "fb06ad12bea2d062dd5e2049e74e096064198242f010cd6e04e2d4a92a7fc39ae829003c7ed3f8347f96c99c31e26ec44073b45ed3ebbe9e18fc78e801d00c94";
   hasManpages = true;
   hasRunfiles = true;
   hasTlpkg = true;
@@ -42348,13 +42606,13 @@ texloganalyser.binfiles = [
   "texloganalyser"
 ];
 texlogfilter = {
-  revision = 62792;
-  sha512.run = "8012a0cca2e408c60a5ead5d59af92ba4befffe184f298ba16f6b57f1487d1e4cb22301a88d61748c8db0fca444bf861e01dbae5335aabaeb2c25e3f94f1ff8d";
-  sha512.doc = "76fbce938945ebfd6bfb78022219fe217b7e6f0ae3c298e1bd9d0c570bfff1100d34034475f2577a9676e01a5bf64428664bb5cce4fd65c7d0cd350c9f156d5f";
+  revision = 69919;
+  sha512.run = "cd70a50317af4ed121bfca914ea3083d11be2087b9507a7caca97238ca5f62df418b2e059feb1d24492c87f57096f3e3268ba4921f9cff1709d43bfa6be29f25";
+  sha512.doc = "7d83863001f4c57018253fc1ddcb08abb847a76307fda75c85f991670fcd8de006cee3c6292696596fc7be5eb752ff38fe63215e2a80a51d7a35e19dd8702914";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.1";
+  version = "1.3";
 };
 texlogfilter.binfiles = [
   "texlogfilter"
@@ -42368,13 +42626,13 @@ texlogos = {
   version = "1.3.1";
 };
 texlogsieve = {
-  revision = 69072;
-  sha512.run = "22822a9ea14652674238224914fd84d9ea09ba1a19fd8eca288fad52c35b0c7e0a0003730b1214e9f358d068eeda191a92dbb2cf2e14bf29297b61177af1a1b4";
-  sha512.doc = "507ed977b9c272c789fabe42b48b60722c09f0548c4f857d9f3207651b05ac593a6e2b94a53f66527591cc3bc15b61a3849a540db3923d196f135dd7cce11836";
+  revision = 69436;
+  sha512.run = "a4e94f5674cc2bb54f03e285aa18a19d3c389455f2ab15e40998aed6d211435bde3fcf549c989364673bc77a93458e4146b0e662d4bd139e18880a36d4445832";
+  sha512.doc = "47d11f611bc3a440dab6dea06cc55053802d2b78133eec21af4eb8d44e74b013a4dd8df0667b946afcbdd8132821ab1429f30f74da610bc1e1283793d465c454";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "gpl3Plus" ];
-  version = "1.4.0";
+  version = "1.4.1";
 };
 texlogsieve.binfiles = [
   "texlogsieve"
@@ -42481,7 +42739,7 @@ texshade = {
   version = "1.28";
 };
 texsis = {
-  revision = 67930;
+  revision = 69742;
   deps = [
     "cm"
     "hyphen-base"
@@ -42498,8 +42756,8 @@ texsis = {
       fmttriggers = [ "cm" "hyphen-base" "knuth-lib" "plain" ];
     }
   ];
-  sha512.run = "79a39678c4b458877737b63fdfc820adf192b4a3c68eb02b9727ed42c16c002ad6ac7d12fa6e45a768eb58d394ba3610ccee4d39de8b73350a39b958665ae779";
-  sha512.doc = "30b47b165484654c1956a1862a1207c219bfae9790f3daa1443bf97bc5e5fd5aeee734b3561c433061987077e84a8feff7eb886ae6d914122eb218bfd0fa57a3";
+  sha512.run = "f6ad2f3d49377de738bf37bcfa1658a2977ea3d399aa4625e2482c5292e65596c67c8912ed1b2d23b1a4611ea2cc2281585b558ba2a5e7f65638899f714c267a";
+  sha512.doc = "283e9cfbef23e946a14869774649dc4afb821b9a284841c0d8ff45ebae4e931ba692600974afdf87752160dd71ed32496c46d3ca7e91cc26cfb4d5bf902b4132";
   hasManpages = true;
   hasRunfiles = true;
   license = [ "lppl13c" ];
@@ -43676,13 +43934,13 @@ titling = {
   version = "2.1d";
 };
 tkz-base = {
-  revision = 66115;
+  revision = 69460;
   stripPrefix = 0;
-  sha512.run = "1bcee5c2d6ce967369dbd6fc7c55a69793410c2d1a4de6c66c79071a360c3a0889c014eaab27ac73c771424c0d0655cabe62f9e2514dc13de418c336ea09ef80";
-  sha512.doc = "3c2f7a584b1580c4fe15a5945b45a912960bff6c25ad637be8a43ee82b752949e1228008179d7a311b6961b1d0d4aa08fc44daa02696d2fdcc51777512db80c7";
+  sha512.run = "a26cb6c8fda3baad6d455a989a4c0f46b5e3b1364acb8f32a866f5ed946344574d29b310c2fbf4e3534dde555d068ae588f9e04b430d15a59ccfdedfe31bd2ca";
+  sha512.doc = "9da2aa2bad4901e14cb4c8fa747af000de891005c38175bdce88d706fe83166b534f0d5b39c8557e5ae5975b8b58212cfafee7d2d22c07e76d41ba77ce1403fe";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "4.2c";
+  version = "4.21c";
 };
 tkz-berge = {
   revision = 57485;
@@ -43712,22 +43970,22 @@ tkz-doc = {
   version = "1.45c";
 };
 tkz-elements = {
-  revision = 69213;
+  revision = 69715;
   stripPrefix = 0;
-  sha512.run = "66380dcbb489c8afd4f916024baf3008975543424a391e0449f261f9fdb66118f9dd4bc8ad988a4f48ed2a770daca48fdb98243456025d545736e61e2b42aed3";
-  sha512.doc = "4f6630df37eb9192cd2b9d0f0b4f687762e39b83ac6b4249e86defe945093ead57dcad5414a0ae1edceca75eef7f8be706b3b626dd4557b2377354d8717bea1b";
+  sha512.run = "cf3694ee7c964b32572bbba7f0f90f9705f546ca074ca566d7f9e104424d9f3a06c804dda89e83496a5749341778d676742ccd1d11fbed4267b025944d876a03";
+  sha512.doc = "041eacf3a2657e364db72c12defc437ae336bf4f4250d35de3272f27821b01b4589f102cb4232c7eb1afbf3fa6474df022a0f40a79129b17d2325f81694bb4ac";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.72c";
+  version = "2.00c";
 };
 tkz-euclide = {
-  revision = 68747;
+  revision = 69702;
   stripPrefix = 0;
-  sha512.run = "14e39eb45f188f8563b8c49b16cceffe62117ac3cb17d484d1722122b6f3ca927b35ed0dc15cf0650d877f584eaf05f6473dcd8ca83f4766f5d421a07eced464";
-  sha512.doc = "ba09b1cbb47c65ab74119c7e52fc4d08c3174ddfebe0cae6c3b0ad9954d40e78bb57a219acb12584cc67616d51d70212de284a4f30286ecdfc3bd70c4ef9bf8b";
+  sha512.run = "ad51786dcfc0bb75edc35b53f753972be5112443901d9e3fb42707c33b08ce2ee16e66443f59b6e6d84767fe48088c1ad0532a7c9fccb70da29888db607f6b68";
+  sha512.doc = "8225a344b3c73e3fe4bf00d36517f3fce40cdac5580b605b3571568c58737d8981db8de1639fc5d5cab4ae881898dffd7799b390d6535dcbdcbd3f9264aebd03";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "5.04c";
+  version = "5.06c";
 };
 tkz-fct = {
   revision = 61949;
@@ -43865,14 +44123,14 @@ tocbibind = {
   version = "1.5k";
 };
 tocdata = {
-  revision = 69402;
+  revision = 69512;
   stripPrefix = 0;
-  sha512.run = "17bc7e29a5f4d03374b19254c0967634de212ee47e0f00be9c3a8dd9a9a7694a8cf14b9da318e8337a5be00f420810ee27a115c7deb8f97e1a02ba98fd3b654a";
-  sha512.doc = "816da5a5017dc7372d40a29b45f0279629553e8399e62ce3da4871e9597017e00c8a4c39928462d5d5f168963d930247081f483e9685028cbfabae9f74098541";
-  sha512.source = "9d8767d2fc97ce25cd6c540abe83a1b1eba920f16cef02c9451bae34168812456d8b52a38ac7bc88d484b2a02d2cea774f9def03eb3e82bdd9411df0b4421670";
+  sha512.run = "b1d8fc5f578eb9507e1271fb19d2e024b272b0c23fff4ca11177c46fc2ec69777adca4329960787bd52c8d9862010547ca8b4378ad0b8986c503576be2930cab";
+  sha512.doc = "6fe648771c02287ccacf991b7b0e106e9e3917e882993c6203314f97cb20d8e0ce873246abf7fe11d107a22cef0fdc02a7bc89278a6d0a14d48cc6838f17158a";
+  sha512.source = "c29fc710ccf0952570aa682af419d1fb2432a4825b9fc8fed5368f8004ff5355250df6deaa28d7168258914711f31b3f379fe7c9383255957092676bd36bad72";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.06";
+  version = "2.07";
 };
 tocloft = {
   revision = 53364;
@@ -44527,6 +44785,15 @@ twoup = {
   license = [ "lppl13c" ];
   version = "1.3";
 };
+twoxtwogame = {
+  revision = 70426;
+  stripPrefix = 0;
+  sha512.run = "b2275f66d1e53f031b6c512754b7dd9fa2e7a078bdb08de64cfd51cb8c66919027397ecc6d740a7fad741b9468442aee0f93b7d9082ca75757d69437de05b001";
+  sha512.doc = "1ea1154857058973b8ad02656caf68ffbec00ba7b3a51a985fb4367cf8622fc9a0d6848082c80cb2aa67fbae2fedb8d134ebf2361067704ece953c1b4651a17d";
+  hasRunfiles = true;
+  license = [ "asl20" "cc-by-40" ];
+  version = "0.2";
+};
 txfonts = {
   revision = 15878;
   stripPrefix = 0;
@@ -44746,14 +45013,14 @@ ucharclasses = {
   version = "2.6";
 };
 ucph-revy = {
-  revision = 68224;
+  revision = 69750;
   stripPrefix = 0;
-  sha512.run = "9b8cd59c35a8e94b04de4490fcf3637b75a4f858383d0d8ca263346f08d10a7ae8dfa2bbf0d5800329e1a90c40110a7767d6af6d2b24b4f94854a78bcc77aa15";
-  sha512.doc = "18319c8a2137d7d2642dab7f9569b6073ab3ae1657c51c840a16821297539ad38fc283efdc98349bacacfbaf6f674b4c4a3d56317757af74de89511747f852ed";
-  sha512.source = "1da208bbfe27b5b1ff7aaab0e808ecf65709913ac1636596261e6421237c5584eb4028accd27d9efee18045fb3be1176044cea3b0dbb083927dad55543a8de7a";
+  sha512.run = "f9fb2dd19b7a963308e5c5058ac990ce3b944377ff6eaf52b26fcd7a12087c75bbb464e5e1155a1c3340e8fb3fca65b6d344d76f47a9a386fdb6e5425303f81b";
+  sha512.doc = "0ad9f32badd36c033dd3d368e507518bd27d79e3bb94747b86622c2e41b81e87b5db673ddb4cebf7a88df4180b7cbb2bb0826ee19990e572c5e5ff33394c05f0";
+  sha512.source = "b8245b1d950ca2af99683fe87f3eb5211cb4990b0911d11963cadbcc9c9d23d29bda0e7bd18a12184c5ac2501e69b67c89844d061c00f0e1ddb842d5d51d7112";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0.0";
+  version = "1.0.1";
 };
 ucs = {
   revision = 68759;
@@ -44784,6 +45051,15 @@ ucthesis = {
   license = [ "lppl13c" ];
   version = "3.2";
 };
+udepcolor = {
+  revision = 69701;
+  stripPrefix = 0;
+  sha512.run = "010172b3730b31b12a6f9e425203f9064b7c880e5abcfa0ed538ffaedf3517dd394030d55501b48c1582036bb78153d7d4f581cd2c396d658db58faaa00c0cef";
+  sha512.doc = "33e7057cdbcb2ee342d061194d5b0e36a1e3e7fd48c7e1d728b6b8b4a2b6fe1c4b0a4a9185b4cfa3a483cd084f93ac905a98f7140bdc0a8e4f37395bf9a55ffc";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.0";
+};
 udes-genie-these = {
   revision = 68141;
   stripPrefix = 0;
@@ -44823,13 +45099,13 @@ uestcthesis = {
   version = "1.1.0";
 };
 ufrgscca = {
-  revision = 69042;
+  revision = 70603;
   stripPrefix = 0;
-  sha512.run = "ae9f69feebcd487305cbd94661af5262d32e98f6d65dbfa8b5a2760b93fcd482aca13b7193cdb93d3f518b8e3e3ebe31275af53d34e38d4b944ee36588d2cebe";
-  sha512.doc = "71dc771856ad8f31a8a69845128ae0bcc9fb7c21252e728d7f8914f2040d5550c397da8a5e7d5c2cfcc5c8a7f65328dc5ded3036f4dc786d4802ab61c1c2063c";
+  sha512.run = "4232e58cb76fc9e6e9a24fdc760dd189004dc20a10c9b27265a8d2449d8ff4f741ad745e52815e2b729d78896d682a9b11b96b3eb01bcca7ec4a4cc8f4a3c893";
+  sha512.doc = "efbfb6a83e5fcc88ce59b8b008c961b3e7e84266ee7b8c8f5f129f3625c1018352b701ef6fb7f8c1f41b21655da6b26d9add397d54b7bab4fe7dd74c91e327d5";
   hasRunfiles = true;
   license = [ "lppl13c" "gpl1Only" ];
-  version = "2.3";
+  version = "2.7";
 };
 uhc = {
   revision = 16791;
@@ -45017,13 +45293,23 @@ unamthesis = {
   version = "2.1";
 };
 unbtex = {
-  revision = 69307;
+  revision = 70325;
   stripPrefix = 0;
-  sha512.run = "dcc212b6a524f9634a686a78f2ec6d3cf357afe966378adc6010be11597912015f5b22388656068476b4de0f24e7fdfeab78003f43570890028654a937be0af0";
-  sha512.doc = "84df2e08d77cad569a4256b615e739996580acf12c7e3c62a0789ee553a84ac0dedf983a77e7d2b96e26b9dd96c0c43940c1c0644babd945770c74f54e4a9923";
+  sha512.run = "0896c89b0fe51d943455fddd654f67b81aeadbc83d2a66eda450b9152f6d3ebceb4854c3bcb03c38f4ff0f0ced0b50c2e276b2ffb306ead72be05dc1eb02893f";
+  sha512.doc = "e398de7bde9696776778314665d6cf37f55c0faf33cf3dd4acbd14d82d7d303d4a0750119aa0fc8e8b80288ae7219020ab43ac78c7d125a54845277a8ee2ead7";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.4.4";
+  version = "1.5.1";
+};
+undar-digitacion = {
+  revision = 69742;
+  stripPrefix = 0;
+  sha512.run = "933038ebcded30e59b2075a064c35a00e5523fae80a6a7091d8a0c44a043d4e9150b68f1cdd6814b3a0346286086b8f5af7b68b2de2c32be1c38684672afc848";
+  sha512.doc = "bdb12e362af8ff816c0cc43a76974a8f1ab326486a6b103430fb2139f22cddd27514d2e486cd969179be75684bb6e5fc0bf959f8d8c868ce3d5fe466097a0224";
+  sha512.source = "37d9e4d5872cca1cfe157233b56050a4f599038f3d552614ca11125dfe23596cb81cf5059244e6f3d702b338558d687b5a28a4f96a18c0c9d2b038a31484197e";
+  hasRunfiles = true;
+  license = [ "cc-by-sa-40" ];
+  version = "0.0";
 };
 undergradmath = {
   revision = 57286;
@@ -45154,24 +45440,24 @@ unicode-math = {
   version = "0.8r";
 };
 unicode-math-input = {
-  revision = 67089;
+  revision = 69591;
   stripPrefix = 0;
   deps = [
     "iftex"
     "l3packages"
   ];
-  sha512.run = "94b91d68c4745c1773ba5d3888b2f16f8ea353d3b8041af4fb842e17b4f82c982ff7a0cb92bd59764268e550b3599c8963a2d13cc32b495f855a131879d2ae5e";
-  sha512.doc = "a93a8517f460bee1b10a9a9619f5232f41015d0695425da1dd447880b422273135bc2a287e3f988ddcec82c1b77c2d2d1848a3fae82f2ec6115f655ca667b873";
+  sha512.run = "23396fd1b313414ec1f6181646651a4c304a1f937458111bebebbb0234ef5e007e22dd2590d87c2a58514cb5794036da25801901f980eb3a08fb122e9a107cc6";
+  sha512.doc = "e41a989367baefc296d7a890eba2a10f31df4e047b174f34d1843f632ae0d151e34e6290d6b1e86cbe949e7808d59b4523ceaca89aa69097b5e8233d901adb31";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.0.0";
+  version = "0.1.1";
 };
 unicodefonttable = {
-  revision = 67066;
+  revision = 70354;
   stripPrefix = 0;
-  sha512.run = "aa387053dd18c6927256690dba7e5c47a586466624f4dd36aef20b5cfbd9e1c5190ac4c5e45b5fc7325fbdb9db1fe30c42b4b9bdeeebcc6ad404d27ea36d1b37";
-  sha512.doc = "8cbfcedf459f9fdd970658ab7a462c1389e1502425816804c44bba79a4be05fbc2a6feb6769a0c693e208f2ee0ff0765c29dd7eac9afe7a5a11d1e43d636910d";
-  sha512.source = "189a69754a90457b5e99a099e65a4e62c4dc613597de7d4fc3818609a301f6da056fd88e6a6cabe4df8c1e18c0441a35dfb87d24ce9142f7fdb5e639d89c8ac8";
+  sha512.run = "08b2d90bed46237ebfdf0e98c45696b4dc1ba7f6f3ba2547fab2b129d6dd96e836dc23c345ccb45bdbd370fcc706e7a127a10f43aef9ea08ad75227f0b6b2857";
+  sha512.doc = "823d26c705d4b6154ddd1324ac6297f97ef3244b815a7da23b0079c5bd94ece9391407432cf66b7bee7422dd55514c033839b31ee04262cdc1a75e5e11726e42";
+  sha512.source = "ea0086f6d9c3838d0fde1baef225c4e9ab57470033749e6bd4a877d6aaf85a28ad4c557b44f7ef2970db1c636c9dfb43ace959c2e41bf20f2daef3418ad08b60";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "1.0h";
@@ -45390,13 +45676,13 @@ upca = {
   license = [ "lppl13c" ];
 };
 updatemarks = {
-  revision = 68163;
+  revision = 69989;
   stripPrefix = 0;
-  sha512.run = "9718a99c7a6775d80f485839d71933c788fc18c8b4d9caa78c9ebcc159f02ae53a87ba1479fdf231938220eaad9006b817eb0c72c9016599f61008e314f72b39";
-  sha512.doc = "76e504743dc8b68bb7749952fe63b7ac4a0b32f36a3c4b85b5391bfaeef1c9d4045f681e2a7b50786da1a7807126277ccc61657bc4dc2caa9893d858ba71b4e4";
+  sha512.run = "7d2f78253c7afcb0ae7e98ca467e6d00dafb92bbe232e99cd11f2756c3277d4bca1688e2d88cbd214580c99fac539c9d01af50115647d5609f239be906c3ddce";
+  sha512.doc = "03595b62f116276240b44ef558fcc164e49c8d831dd068280b5f8be70caecb9f165ae3340c2824803ac829f38ea3eb143955a59c3ef71ddde873a2a873185ad5";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "0.2b";
+  version = "0.2e";
 };
 uplatex = {
   revision = 66186;
@@ -45615,6 +45901,16 @@ usebib = {
   license = [ "lppl13c" ];
   version = "1.0a";
 };
+useclass = {
+  revision = 70447;
+  stripPrefix = 0;
+  sha512.run = "d1343768b6e6f89a31c437983db7d2cf2e52eff35054604719b08c5ac9ce9ce936982ce7885010e8f4929208a944746e07f28090099eec3ac3955bbf6805c396";
+  sha512.doc = "9904c849d24426fb3139d92a0a502af362e12bd8d7d993da422a0e5a0ac0984d3a6f8504d0fdf88e170244877300efa1b366ad11e2683db75edd6c7fdc8b2a1e";
+  sha512.source = "c9e2083c974e78991310afa76d9b49ea5fb8bee62057aef1dd0f92fe1e26628b4bf0fb7e0dbb1d3dc734c307b8b6cf536d38e0b68ce825ce5b7605e0b74d76f2";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "1.0";
+};
 ushort = {
   revision = 32261;
   stripPrefix = 0;
@@ -45967,14 +46263,14 @@ verifica = {
   version = "1.3";
 };
 verifiche = {
-  revision = 68023;
+  revision = 69726;
   stripPrefix = 0;
-  sha512.run = "7a2804f2a963bff59bf4f566595c6b89adf8534ad7511542643f752eed2183ab3dc377ff70eed60a48b615a9f159a73d352ab2e138f7d589e9163a8328fa673a";
-  sha512.doc = "79c13fb6dff619f75b78433b628b4a75c171baa8859ae8e58444f1c57316abbda24cdfda4172a0b639b136366c4e6d6fc5ad5199b4cf86c89214e82dabde4cf2";
-  sha512.source = "7cacc48cfd6a9fb94f94a7950e3dea065b37dff2dfee6cfda29950e2baedb0ab2c4736f186facb3b23e37e406d505d4128ef6b24421ff0ccfecd89c1b7ee08ab";
+  sha512.run = "6201051c81c5a002423d3a9959e847223350c83ff03dca7792a727f2ff7f0405d20d2499827f5e96ea8e1f2e7855b887b0c2b35180ea2153a5c2126d36e21410";
+  sha512.doc = "dfc3fc5a5bc8ccede3bb487a17941ac6e28879c03ea9e398475c058aae07230e2831bc9dae3195effd331abe79eb5f6ea8962da85a9775273810da80d8ada70d";
+  sha512.source = "f46df8dc9759ced453752b53003d9377748346f8fbc02ea07a61b8ea44fc51eb6d0290c9b1a940ef74cf1999ec5597794237e0b28bb28b80c331b19c0defc14f";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "7.0";
+  version = "7.1";
 };
 verifycommand = {
   revision = 69389;
@@ -45987,14 +46283,14 @@ verifycommand = {
   version = "1.00";
 };
 verse = {
-  revision = 34017;
+  revision = 69882;
   stripPrefix = 0;
-  sha512.run = "3f9878dea106ec87f2b64960c5824fda6eb9f700b753a530cec7e1b8519dc9a817cf7ea74c13eb806497740501122790fb29f6e3cc383a8a89ad10e756b7a00a";
-  sha512.doc = "6f255167db9ebb84cf86a14e6999410efb22d087d97b82837c3ebc5bf69f0990e77ae0325618ba3ea02c116741422a531f646929eab2b5810b9f3978be6651f2";
-  sha512.source = "ce1f07f40bd329383d8a0fc97038ee975d61b58eb0ff60f8a1894a6028b2afb9db58b7db599d252cb88fbc040d9938b7b934b6e8ad683e7f4de2be9a15b37820";
+  sha512.run = "cc76ff256e4e388e0385c4a5152db537b9c3b368a29de79fedc17395d9d3b362c6e3af05a5714d7d2fee68f129cbdfe82874eaf64c8e0093f70dd796e8c381b5";
+  sha512.doc = "5c1c29d0008c800bd967445ec3efbe2e8c1ee8d39d4373173f88c75fd3e8454409302308a08be84c69dda9c679ac25c6a411416c247fd44cd9cb23fee6b80f7c";
+  sha512.source = "ce95d8664bac0580b761c503497d675763f8efb8e5ec066ce392f9d8e7cee44fb4071a1d2dbca394afdd318aa347ab9c229f120aaa65452f8d0f19069004e766";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.4b";
+  version = "2.4c";
 };
 version = {
   revision = 21920;
@@ -46204,14 +46500,14 @@ wallpaper = {
   version = "1.10";
 };
 wargame = {
-  revision = 66713;
+  revision = 69692;
   stripPrefix = 0;
-  sha512.run = "fa9965a291573796cefa9c64d7c76894b29460287224699f6dfe708f218b293ab5c5daad19b70e949d1efff0db4f76cfe90606ae93fa508015114607338d8f66";
-  sha512.doc = "260474bd6f44ad52b56fb7ed2ef4e0de95ef455f12cc09e8fa6c70cacd7d0853d34fa5ac8fed34912241c9aaa38f079119683b1b5fd90e82d635238d20a940ab";
-  sha512.source = "17bb297856b2c483ff5d44851a2c59f445f35137f1d535330eaad161a0470df64e17634d945fb344f61f4aeadbe3068957d41dcf561c2997017f422f47cfa5d4";
+  sha512.run = "8302254134c342db781f4bfdfafd92dd3484e2a0e91dca2bf43113665bc3c44c0bf50637bb702f33fe243108bf1902283059a923e64bacdcdf7c9a5bfecc8836";
+  sha512.doc = "dc1a5d8ce42661ebe5f0bf9cdba69ae66f8fe592bc48c8036ed60cd75b07a84e18c5d92fa4c4730155c5858f7ade450d59934db4e55a6ddc6a3d93ea0c78a0ef";
+  sha512.source = "c7a04ae48a204f6e4c3819f8f4781ba65f4a71c72e011e4aa83680818f35bdf1b5cf57f92e58ad7eca366a677f2101d1c58e362869156c61d53e0028f250ef9f";
   hasRunfiles = true;
   license = [ "cc-by-sa-40" ];
-  version = "0.5";
+  version = "0.6";
 };
 warning = {
   revision = 66616;
@@ -46309,14 +46605,24 @@ webquiz = {
 webquiz.binfiles = [
   "webquiz"
 ];
+weiqi = {
+  revision = 70179;
+  stripPrefix = 0;
+  sha512.run = "7202c5b907439d47868e940d1cded455a15d1de82420e8846f93c81ea3b723eb2f6d455bfe8d1deddca7e856b5d9243418b546abbf36d0883431675866cdfbe1";
+  sha512.doc = "ed2f33194866228569800a1612bf73b5aa2b8ed8b1c859b3a9475ce6b2411b0a7a9ac4236b4b1372d8eeb5635f18b340592656ce5acc76664d620184a62fcc9e";
+  sha512.source = "8d0505d70518aeb70ced15c152389c08a5e4938a1cd82c623ce21ee83678bef53e8a8876fbee13a121b428f55df013ca44389a98529c6ade2909375f910c5b06";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+  version = "0.1";
+};
 wheelchart = {
-  revision = 69040;
+  revision = 70518;
   stripPrefix = 0;
-  sha512.run = "17660fd6ff9cf02bf01b95b505128aac52005b4ff59fcc1b28c64e9870aaed03f8652555cc2c323453441c83e696a0c5bc281281a1baee8c6ede1e9a11dc376d";
-  sha512.doc = "6ad02cbf669800f8a9d81cfd3ed3abcfc5b8a2df6040d3eb6ab0dc1ffb01875230be13959adb1ea7dde805d4ffb6bd9767de1b275479636f245e1140be07b16e";
+  sha512.run = "9b54a717a73761b09007afeb18c6fd69f6af1b1dd22f206e556fd076a61e6ae03211d58be316ec6eb62909979e8d53f74c6cd7dddd11fac33917383f4de2b073";
+  sha512.doc = "23e759467608b69aa7b3a3376d4dc62ec82aa831cac2014ee76d5b73beb99d09a69401f61f1db02b617a741189fd34ea39b90c5c1b1f7f7f94d380ba38041a24";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "2.0";
+  version = "3.0";
 };
 widetable = {
   revision = 53409;
@@ -46373,11 +46679,11 @@ withargs = {
   version = "0.3.1";
 };
 witharrows = {
-  revision = 68047;
+  revision = 69996;
   stripPrefix = 0;
-  sha512.run = "1ac6ec240be73608724793040cd9f716b61a7a197e30b1334ba81c3791d7714c0af36c509e9928d0dc4a11bf8cab5c0be373a7ded90f0c661e9547b553b57f62";
-  sha512.doc = "6b8993d636328e90dfc6ff622fe8536bc795a1cfd32372b6268dec38910435d19a8b85569e5fd7568387059ca9def471cfe6e92fc9ebdbf5ddcc65c789c5edfa";
-  sha512.source = "e1e031bc4a1b6bce4eeeaa14f0d0201a5578c3d0492a55d29aa40141bf4519a942c839f569b8d3b72a013da17f95fbd0e6edcdff3d5f971771f0534a36cb645a";
+  sha512.run = "31e9cb805fa91b903d91a0090ceffe6cad323c3340bc16c268e6667dcb5fd99e05c95b87fcc6cb8500c187479973d5595fe510855a7c6b2b86db06e513ba5172";
+  sha512.doc = "69c495a471e5fc2fb4da60b06360dae6dfa2c79d93fe176fe54485ba95f3c854fec8356f9939d5521360f9d461e9dac1a6290dc3ef29b8a82e52c0892e8fce14";
+  sha512.source = "bb5144cd95bb78dbdda91bf068597de2a8d409a2f0ba8f48c861018c52b897a7b5b7a095cba1b5e301822f75b2808dff0376ba36591cd8964f2171553d5e8dce";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "2.8b";
@@ -46466,14 +46772,14 @@ wrapfig = {
   version = "3.6";
 };
 wrapfig2 = {
-  revision = 68164;
+  revision = 69513;
   stripPrefix = 0;
-  sha512.run = "b2fa531e9a8deca8741af501073e7c05739ccd889433fa8355bcb4dca34a3efb9b6690306d884a040ba1dd076ce5c99e3db5e7fd76f30e951eea0ea3ad00629e";
-  sha512.doc = "cb3e0264c487b53f093f90ded250705bddb70a68557bd7cc03d66baf8731481b8e94055dec140bf7a510a62293eb4774ad4c95f472dd3248289f246a87804d11";
-  sha512.source = "05066fda5a68577758be7ffe4743a10600093983e469d05ab85e8ce1ed8fbc5554bc01f35d361aaba374645e0b143cb92aa33f527b7539a10b34a09b2659d2ac";
+  sha512.run = "68b48be5ebdf766fd414ce9a121321f26e172802c6c504213306762e383dd1ecdf77f6260a5602b8394945a86c87b0320cc0a651ad054753c5c2510d746a8149";
+  sha512.doc = "b2356e3756640a825b44c47fdde68acc49d966508a90ba76a019992f10a9b65f124282d59d26422bf3c51a658b2adc723ad36f4e0d92dcb74a8bffabfefac471";
+  sha512.source = "e502c514d9ac982b3fa67428a2be8e97b50b2c5389ab2e29981fc65b002e2c3076509a061635991c2ab48ad8969eccd1ec39e82b2f7a07e34de98bc2801a8dd0";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "6.2.1";
+  version = "7.0.0";
 };
 wrapstuff = {
   revision = 64058;
@@ -46559,13 +46865,13 @@ xcharter = {
   version = "1.25";
 };
 xcharter-math = {
-  revision = 68992;
+  revision = 70333;
   stripPrefix = 0;
-  sha512.run = "82830e9740200cddb622b30b4c91112462a2c429e501f354f54abaffcf8f64186cbff3bce25b889508c6c28732ca2c0a2ded06a876260903163d02d1260354fa";
-  sha512.doc = "c1bd25aa3d1aa195ad97f1228dffc73889d06ac45391ed725696372c7184672f6a14b1f1dc2f4410866a6cc0119219817f50bd78c602846f067f935f18c538ab";
+  sha512.run = "1b9da3251b6f5abfd2053114edb174638046603c6b2f46a8baf26c20050f3f614b4a9e01ef92b458ca4b97ca90bef7c72bb146754184d311553bb0a429e29873";
+  sha512.doc = "291b67678718b0facbdd38b95d24e75895a74d7bb6cde5c320598fecfac2ce0ebea442d0d3a62c63fff9ee38579042525297518c9373d90edcbdf425605dd119";
   hasRunfiles = true;
   license = [ "ofl" "lppl13c" ];
-  version = "0.60";
+  version = "0.62";
 };
 xcite = {
   revision = 53486;
@@ -46954,13 +47260,13 @@ xetexfontinfo = {
   license = [ "asl20" ];
 };
 xetexko = {
-  revision = 64894;
+  revision = 70316;
   stripPrefix = 0;
-  sha512.run = "ec745c3a58f9ac782cc3ecf1be995b8227a92436bf6db7549a4e14a7d92bbee8d2f47a12117ebc64594d7923675860e6deafd9bdae98c3ba1845e673172abdf5";
-  sha512.doc = "9aee4d049e3073542c76be2c399afaaed5475616ceaa074c6a60705653ac48dc770f43e86e102b359b89c53e529f3e354298fa9a5f1e14c487800c0c306d7270";
+  sha512.run = "860352c31f173c31f5b296759e8ff1dc4c2ef58c9db459c52354db92362812a96c359b4e344a5aeb6ab4c52368bb3c409aaea39102e5a48dcb973c285d5f55c5";
+  sha512.doc = "7deb9249472c4dce235cfbe38e1e8f5f11a792e559a5708f6d9a2803bdcec68baa7e88fe0a25545896c6f671b7d6ea91b9637a2d75907d667d8b8454597b6f5b";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "4.2";
+  version = "4.3";
 };
 xetexref = {
   revision = 68072;
@@ -47000,15 +47306,24 @@ xfor = {
   license = [ "lppl13c" ];
   version = "1.05";
 };
+xfrac = {
+  revision = 69888;
+  stripPrefix = 0;
+  sha512.run = "6a173abe1f5cd65db836157fa336be76bc9879e137f2542b3141bb096359c3bae771705a3b761730e1e3bbc7d623cc08ac46f87af7412be4fa4d7f42a70ba9b9";
+  sha512.doc = "292b12956c4236510024bb3c85b4b1aa791de4eeba14dd88affe264c6384080c2340eacbeb19592424f2231e8347ae6d1b4fc32eda12320dd694557a982aa80a";
+  sha512.source = "f22458c874e394753b0dc6296a86a2dc6cd8df8f03ff3f84e09118bb0069d84c2de56213368cf351ee922e8f753c3348dfac7bc4d9f496a3aae8302304460136";
+  hasRunfiles = true;
+  license = [ "lppl13c" ];
+};
 xgreek = {
-  revision = 69268;
+  revision = 69652;
   stripPrefix = 0;
-  sha512.run = "bada8aee28edd971542cd5091b702fd494cd710d32112e16f0ee7778868efd0ce558a5ca6d7f4f291dc7edea7f89adef584f4714bea656e9a76674808d3fd765";
-  sha512.doc = "e30af632317678f8e082980120ec328ebdf094ae816f17708387bd23b580431161503e99177ca78a5f2545fbe59b26968d208e8e273ca76f7f7f45fa31200e56";
-  sha512.source = "100836bb5b1bc2191a5c1f446e1b30f9f166719988fd62e5a72102180987db10b043a45f737da04e86f52bd8524fe2ba236454545d6d90105749df572df5775e";
+  sha512.run = "b7531fd3f5c42080990022689e5e4d43a0d16f9fd206e389bdaa0aa8c9345e062dc0a14d3086fa0b6c8b641a646edde9b7031af91664f1dde56e5581f2019882";
+  sha512.doc = "0221363435657925da4f8edc62b08b9114beca5cee39c410d57b1661a6b6f084761a0ce0be76968193d950b427aea5e16844b099a386420865765b569dd4bf8f";
+  sha512.source = "34ae0948d3ed0343ebb4007997e3dd0c536f6893d757a83082a031e2dd5b3f4f13eb6cbb6ccfbe38b879e6a2521bf13d9e5a10a0c278c5caef1300114f26179c";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "3.3.0";
+  version = "3.4.0";
 };
 xhfill = {
   revision = 22575;
@@ -47188,7 +47503,7 @@ xml2pmx.binfiles = [
   "xml2pmx"
 ];
 xmltex = {
-  revision = 62145;
+  revision = 69742;
   deps = [
     "atbegshi"
     "atveryend"
@@ -47227,8 +47542,8 @@ xmltex = {
       fmttriggers = [ "atbegshi" "atveryend" "babel" "cm" "everyshi" "firstaid" "hyphen-base" "l3backend" "l3kernel" "l3packages" "latex" "latex-fonts" "tex-ini-files" "unicode-data" "dehyph" "hyph-utf8" "latex" "latexconfig" "tex-ini-files" "xmltexconfig" ];
     }
   ];
-  sha512.run = "ee01abb25b18e99f18bc78357be04fb1405473e90fbdf74ed875e2910812550c44fcc7aee960b2bdc53fcd7d78e9aa706e46929da65d5cb78d9ca43ba475d675";
-  sha512.doc = "d87c6d1f4c472b436104b0746d48a463977dc7eb520de3d7a53f48bc1c8e5682a23d604bbe2ebda1b5029d4a6dd33c2d2bf8b917ad4f54d2c7472874fdfe8509";
+  sha512.run = "60c804d65c5d1f7c2d006e410be1dd6001ebc8dd96b7829c77bbad88685a1e18afb5ab8dd42e7c2542df02d0336485766b9bd7f0657b6683e55d7a1e444d4580";
+  sha512.doc = "017d8d30a8371fa2a22c60a57b9eead2e3f2f9fc88aca858c701912d40af5212f6a58b77fcfba53214c98eb23142c08962827312010cd6474a0d66911d55ba85";
   hasRunfiles = true;
   license = [ "lppl13c" ];
   version = "0.8";
@@ -47548,14 +47863,14 @@ yannisgr = {
   license = [ "gpl2" ];
 };
 yathesis = {
-  revision = 66146;
+  revision = 70512;
   stripPrefix = 0;
-  sha512.run = "a14b12050bd99d7fdf4cbad2962b35976ec86e80944f8aca2bdfedec64d703c74081d107bff1704132e73df47002426c39d22a655acdd7c0d98857ed9191cf86";
-  sha512.doc = "6a1877cbca94a367afa8c6129bf8c6264e2c7203764fa451137113470d7899a40b195db8327ad84249b9f9c8d41698dd0c7a7b6b2754b8205e3bf8e8b533f545";
-  sha512.source = "753983fa303512e3a505f43ec14a626f42e20702f90c52bcb522378c9f2c6b0d0ce5b7888b4c1ca923812a79d1335573fe9d95493dc4d844dac2b757d67b4a25";
+  sha512.run = "85c1c7a9dfb682271ebc6a35cdd91dcaa11137d6f1785f98c3b0abdec46ab346f23a08b034b8aac95324dbba490291a59f74c5d27c93f791b38d47302f5cb61f";
+  sha512.doc = "b241afcdd6e2e7cc112faaed178fa2d1f15afea44e4c614b69edbe0a08ac78606f6adf4e6688c4d45e27b011dfd83ff189a4d8a84e96d39c22cada4d3cc888bd";
+  sha512.source = "b97c3f396f53108ed66e3297484ad4d052df0b5fd735bedc16ab3ea8550c3bb8fdca84d7dc415e6a8abb147c2f4cbf1d4d7ee3fd6f4677db73079bbbbe20d359";
   hasRunfiles = true;
   license = [ "lppl13c" ];
-  version = "1.0.11";
+  version = "1.0.12";
 };
 yax = {
   revision = 54080;
@@ -47741,6 +48056,15 @@ yquant = {
   license = [ "lppl13c" ];
   version = "0.7.5";
 };
+ysabeau = {
+  revision = 69663;
+  stripPrefix = 0;
+  sha512.run = "c5545488723a4408a771c083d191942fc7b10e85e6c2df65e6ae0839dcaa7202459ba8774497562b7e55f432fdcca904de132ac7d89fbf3d935aa238ff63fede";
+  sha512.doc = "a37a971140b1ac12724f2710e6f017690ef151aed9a88ed00bd00cd80ca6ca8524b0347b34bf83cf8e2e34fb000e4ac53c1a8a88684a0e3792e4cded362513ae";
+  hasRunfiles = true;
+  license = [ "ofl" "publicDomain" "free" ];
+  version = "1.1";
+};
 ytableau = {
   revision = 59580;
   stripPrefix = 0;
@@ -47955,12 +48279,13 @@ zwpagelayout = {
   version = "1.4e";
 };
 zx-calculus = {
-  revision = 60838;
+  revision = 70612;
   stripPrefix = 0;
-  sha512.run = "17854656622c012a3c0a4711e9c38d2c100a156072e7556b3ba3d6ce6edf1463c69078073bd72b83d3136e96e72e4adfff3982a73d4fd4d66fa98ff6823eafb5";
-  sha512.doc = "076a25ef96775d28fad2e97027ef69b983f1cc44f11866b7f6db0408bca45759b8ed0f3914516712f235ee4a670bb3fcb28954a2b3f745786e6d6f8f7c06cde9";
+  sha512.run = "d59cbc2662dc41a216e9d8665a6bafefd27ef5993abae6682af24909cff49350dcf73f10ddc55b31dd3ebdd35509a7000edd8e055c85deee946a5efe258ddf14";
+  sha512.doc = "a08719cbd99cfe9b37ca3fe62806e45908a1f48e5ff32a162fff3e835fdcf69c8a516ff7d3e0de6dd1827d3c78ae7efb3e79b4a534d77d94d5a16b9fd10b10d7";
   hasRunfiles = true;
   license = [ "mit" ];
+  version = "2.2";
 };
 zxjafbfont = {
   revision = 28539;
diff --git a/pkgs/tools/typesetting/typstfmt/Cargo.lock b/pkgs/tools/typesetting/typstfmt/Cargo.lock
deleted file mode 100644
index ecfb8d4030f5..000000000000
--- a/pkgs/tools/typesetting/typstfmt/Cargo.lock
+++ /dev/null
@@ -1,787 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "aho-corasick"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bitflags"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
-
-[[package]]
-name = "bstr"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
-dependencies = [
- "lazy_static",
- "memchr",
- "regex-automata 0.1.10",
-]
-
-[[package]]
-name = "bstr"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
-dependencies = [
- "memchr",
- "serde",
-]
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "comemo"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf5705468fa80602ee6a5f9318306e6c428bffd53e43209a78bc05e6e667c6f4"
-dependencies = [
- "comemo-macros",
- "siphasher",
-]
-
-[[package]]
-name = "comemo-macros"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54af6ac68ada2d161fa9cc1ab52676228e340866d094d6542107e74b82acc095"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "confy"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e37668cb35145dcfaa1931a5f37fde375eeae8068b4c0d2f289da28a270b2d2c"
-dependencies = [
- "directories",
- "serde",
- "thiserror",
- "toml 0.5.11",
-]
-
-[[package]]
-name = "console"
-version = "0.15.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
-dependencies = [
- "encode_unicode",
- "lazy_static",
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "directories"
-version = "4.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210"
-dependencies = [
- "dirs-sys",
-]
-
-[[package]]
-name = "dirs-sys"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
-dependencies = [
- "libc",
- "redox_users",
- "winapi",
-]
-
-[[package]]
-name = "ecow"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1990d053cf6edf3f030682dba3b0eb65ef01fabb2686072765d8a17d6728e8"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "either"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-
-[[package]]
-name = "encode_unicode"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
-
-[[package]]
-name = "equivalent"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
-
-[[package]]
-name = "getrandom"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "globmatch"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3755076379cc2b2bbf53855fe718e1eed3093cfb769ebf5d290f617fa9cc09a0"
-dependencies = [
- "globset",
- "log",
- "walkdir",
-]
-
-[[package]]
-name = "globset"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
-dependencies = [
- "aho-corasick",
- "bstr 1.8.0",
- "log",
- "regex-automata 0.4.3",
- "regex-syntax",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
-
-[[package]]
-name = "indexmap"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
-dependencies = [
- "equivalent",
- "hashbrown",
-]
-
-[[package]]
-name = "insta"
-version = "1.34.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc"
-dependencies = [
- "console",
- "lazy_static",
- "linked-hash-map",
- "similar",
- "yaml-rust",
-]
-
-[[package]]
-name = "itertools"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "lexopt"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baff4b617f7df3d896f97fe922b64817f6cd9a756bb81d40f8883f2f66dcb401"
-
-[[package]]
-name = "libc"
-version = "0.2.150"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
-
-[[package]]
-name = "libredox"
-version = "0.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
-dependencies = [
- "bitflags 2.4.1",
- "libc",
- "redox_syscall",
-]
-
-[[package]]
-name = "linked-hash-map"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
-
-[[package]]
-name = "log"
-version = "0.4.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
-
-[[package]]
-name = "memchr"
-version = "2.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
-
-[[package]]
-name = "nu-ansi-term"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
-dependencies = [
- "overload",
- "winapi",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
-
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.70"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_users"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
-dependencies = [
- "getrandom",
- "libredox",
- "thiserror",
-]
-
-[[package]]
-name = "regex"
-version = "1.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata 0.4.3",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-
-[[package]]
-name = "regex-automata"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.193"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.193"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_spanned"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "sharded-slab"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
-dependencies = [
- "lazy_static",
-]
-
-[[package]]
-name = "similar"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597"
-dependencies = [
- "bstr 0.2.17",
- "unicode-segmentation",
-]
-
-[[package]]
-name = "similar-asserts"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e041bb827d1bfca18f213411d51b665309f1afb37a04a5d1464530e13779fc0f"
-dependencies = [
- "console",
- "similar",
-]
-
-[[package]]
-name = "siphasher"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54ac45299ccbd390721be55b412d41931911f654fa99e2cb8bfb57184b2061fe"
-
-[[package]]
-name = "smallvec"
-version = "1.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
-
-[[package]]
-name = "syn"
-version = "2.0.39"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "thread_local"
-version = "1.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
-dependencies = [
- "cfg-if",
- "once_cell",
-]
-
-[[package]]
-name = "toml"
-version = "0.5.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "toml"
-version = "0.7.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
-dependencies = [
- "serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit",
-]
-
-[[package]]
-name = "toml_datetime"
-version = "0.6.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.19.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
-dependencies = [
- "indexmap",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "tracing"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
-dependencies = [
- "pin-project-lite",
- "tracing-attributes",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-attributes"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tracing-core"
-version = "0.1.32"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
-dependencies = [
- "once_cell",
- "valuable",
-]
-
-[[package]]
-name = "tracing-log"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
-dependencies = [
- "log",
- "once_cell",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-subscriber"
-version = "0.3.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
-dependencies = [
- "nu-ansi-term",
- "sharded-slab",
- "smallvec",
- "thread_local",
- "tracing-core",
- "tracing-log",
-]
-
-[[package]]
-name = "typst-syntax"
-version = "0.7.0"
-source = "git+https://github.com/typst/typst.git?tag=v0.7.0#da8367e189b02918a8fe1a98fd3059fd11a82cd9"
-dependencies = [
- "comemo",
- "ecow",
- "once_cell",
- "serde",
- "tracing",
- "unicode-ident",
- "unicode-math-class",
- "unicode-segmentation",
- "unscanny",
-]
-
-[[package]]
-name = "typstfmt"
-version = "0.2.7"
-dependencies = [
- "confy",
- "lexopt",
- "typstfmt_lib",
-]
-
-[[package]]
-name = "typstfmt_lib"
-version = "0.2.7"
-dependencies = [
- "globmatch",
- "insta",
- "itertools",
- "regex",
- "serde",
- "similar-asserts",
- "toml 0.7.8",
- "tracing",
- "tracing-subscriber",
- "typst-syntax",
- "unicode-segmentation",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "unicode-math-class"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d246cf599d5fae3c8d56e04b20eb519adb89a8af8d0b0fbcded369aa3647d65"
-
-[[package]]
-name = "unicode-segmentation"
-version = "1.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
-
-[[package]]
-name = "unscanny"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47"
-
-[[package]]
-name = "valuable"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-
-[[package]]
-name = "walkdir"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-[[package]]
-name = "windows-sys"
-version = "0.45.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-
-[[package]]
-name = "winnow"
-version = "0.5.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "yaml-rust"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
-dependencies = [
- "linked-hash-map",
-]
diff --git a/pkgs/tools/typesetting/typstfmt/default.nix b/pkgs/tools/typesetting/typstfmt/default.nix
deleted file mode 100644
index 2305998e94a2..000000000000
--- a/pkgs/tools/typesetting/typstfmt/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, rustPlatform, fetchFromGitHub }:
-
-rustPlatform.buildRustPackage rec {
-  pname = "typstfmt";
-  version = "0.2.7";
-
-  src = fetchFromGitHub {
-    owner = "astrale-sharp";
-    repo = "typstfmt";
-    rev = version;
-    hash = "sha256-LBYsTCjZ+U+lgd7Z3H1sBcWwseoHsuepPd66bWgfvhI=";
-  };
-
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-    outputHashes = {
-      "typst-syntax-0.7.0" = "sha256-yrtOmlFAKOqAmhCP7n0HQCOQpU3DWyms5foCdUb9QTg=";
-    };
-  };
-
-  meta = with lib; {
-    description = "A formatter for the Typst language";
-    homepage = "https://github.com/astrale-sharp/typstfmt";
-    changelog = "https://github.com/astrale-sharp/typstfmt/blob/${src.rev}/CHANGELOG.md";
-    license = licenses.mit;
-    maintainers = with maintainers; [ figsoda geri1701 ];
-    mainProgram = "typstfmt";
-  };
-}
diff --git a/pkgs/tools/video/blackmagic-desktop-video/default.nix b/pkgs/tools/video/blackmagic-desktop-video/default.nix
index 435db1221eab..18c5c9efa6d4 100644
--- a/pkgs/tools/video/blackmagic-desktop-video/default.nix
+++ b/pkgs/tools/video/blackmagic-desktop-video/default.nix
@@ -5,7 +5,6 @@
 , lib
 , autoPatchelfHook
 , libcxx
-, libcxxabi
 , libGL
 , gcc7
 }:
@@ -17,7 +16,6 @@ stdenv.mkDerivation rec {
   buildInputs = [
     autoPatchelfHook
     libcxx
-    libcxxabi
     libGL
     gcc7.cc.lib
   ];
diff --git a/pkgs/tools/virtualization/cloud-init/default.nix b/pkgs/tools/virtualization/cloud-init/default.nix
index dd6e6c483a33..e5385bf7fbca 100644
--- a/pkgs/tools/virtualization/cloud-init/default.nix
+++ b/pkgs/tools/virtualization/cloud-init/default.nix
@@ -1,6 +1,5 @@
 { lib
 , nixosTests
-, buildPythonApplication
 , cloud-utils
 , dmidecode
 , fetchFromGitHub
@@ -17,14 +16,16 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "cloud-init";
-  version = "23.4.4";
+  version = "24.1";
+  pyproject = true;
+
   namePrefix = "";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "cloud-init";
     rev = "refs/tags/${version}";
-    hash = "sha256-imA3C2895W4vbBT9TsELT1H9QfNIxntNQLsniv+/FGg=";
+    hash = "sha256-gcqo8q3BxxqXU7WnoOnTgTJ3QHF9h/p20zTJUhsCL2A=";
   };
 
   patches = [
@@ -53,6 +54,10 @@ python3.pkgs.buildPythonApplication rec {
     done
   '';
 
+  build-system = with python3.pkgs; [
+    setuptools
+  ];
+
   propagatedBuildInputs = with python3.pkgs; [
     configobj
     jinja2
@@ -66,7 +71,7 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   nativeCheckInputs = with python3.pkgs; [
-    pytestCheckHook
+    (pytestCheckHook.override { pytest = pytest_7; })
     httpretty
     dmidecode
     # needed for tests; at runtime we rather want the setuid wrapper
@@ -88,8 +93,6 @@ python3.pkgs.buildPythonApplication rec {
     "test_dhcp_client_failover"
     # clears path and fails because mkdir is not found
     "test_path_env_gets_set_from_main"
-    # fails to find cat
-    "test_subp_combined_stderr_stdout"
     # tries to read from /etc/ca-certificates.conf while inside the sandbox
     "test_handler_ca_certs"
     "TestRemoveDefaultCaCerts"
@@ -100,8 +103,6 @@ python3.pkgs.buildPythonApplication rec {
     "TestConsumeUserDataHttp"
     # Chef Omnibus
     "TestInstallChefOmnibus"
-    # https://github.com/canonical/cloud-init/pull/893
-    "TestGetPackageMirrorInfo"
     # Disable failing VMware and PuppetAio tests
     "test_get_data_iso9660_with_network_config"
     "test_get_data_vmware_guestinfo_with_network_config"
@@ -112,6 +113,8 @@ python3.pkgs.buildPythonApplication rec {
     "test_install_with_default_arguments"
     "test_install_with_no_cleanup"
     "test_install_with_version"
+    # https://github.com/canonical/cloud-init/issues/5002
+    "test_found_via_userdata"
   ];
 
   preCheck = ''
diff --git a/pkgs/tools/virtualization/nixos-container/default.nix b/pkgs/tools/virtualization/nixos-container/default.nix
index 0b44bde4719f..e8b2f1dc88e5 100644
--- a/pkgs/tools/virtualization/nixos-container/default.nix
+++ b/pkgs/tools/virtualization/nixos-container/default.nix
@@ -35,4 +35,5 @@ substituteAll {
       mkdir -p $t
       cp ${./nixos-container-completion.sh} $t/nixos-container
     '';
+    meta.mainProgram = "nixos-container";
 }
diff --git a/pkgs/tools/virtualization/xen-guest-agent/default.nix b/pkgs/tools/virtualization/xen-guest-agent/default.nix
index 52924b2b624f..2ddbbe45955a 100644
--- a/pkgs/tools/virtualization/xen-guest-agent/default.nix
+++ b/pkgs/tools/virtualization/xen-guest-agent/default.nix
@@ -33,7 +33,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "Xen agent running in Linux/BSDs (POSIX) VMs";
     homepage = "https://gitlab.com/xen-project/xen-guest-agent";
-    license = licenses.agpl3;
+    license = licenses.agpl3Only;
     platforms = platforms.unix;
     maintainers = with maintainers; [matdibu];
   };
diff --git a/pkgs/tools/wayland/hyprland-per-window-layout/default.nix b/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
index 03f911e4f899..61bca460b0e0 100644
--- a/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
+++ b/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "hyprland-per-window-layout";
-  version = "2.8.1";
+  version = "2.9";
 
   src = fetchFromGitHub {
     owner = "coffebar";
     repo = pname;
     rev = version;
-    hash = "sha256-a1x22+f7VXkPC36/muauac0+mz2Bcr01TFWf+sGHH/g=";
+    hash = "sha256-AhTDcwZnFAaB750PqdXjZvjVrSjwJd3CXv1UtZfcTC0=";
   };
 
-  cargoHash = "sha256-R79ztYRLokGc4wQnoJeKsY/4EuCGuhdqBhBQVstY2gU=";
+  cargoHash = "sha256-uZsXIDdUNZyrDmfWCHDuibziarzIav74Lpu4yObkGbc=";
 
   meta = with lib; {
     description = "Per window keyboard layout (language) for Hyprland wayland compositor";
diff --git a/pkgs/tools/wayland/wleave/default.nix b/pkgs/tools/wayland/wleave/default.nix
index d06954d10f1e..0ddd5c4595ae 100644
--- a/pkgs/tools/wayland/wleave/default.nix
+++ b/pkgs/tools/wayland/wleave/default.nix
@@ -12,16 +12,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wleave";
-  version = "0.4.0";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "AMNatty";
     repo = "wleave";
     rev = version;
-    hash = "sha256-FAtAFoPLJsWSFkc5CB90wlI2tvDmoOQ8fHQ8LWQgDww=";
+    hash = "sha256-PkEj0RlSxhxG9qOJkuMTVj6r0lxsm7V8b1AIaCVaXCQ=";
   };
 
-  cargoHash = "sha256-MV3mzRrOnHwmJUW3o/PM3g3SY6Hpy1LRpxDcL0hAm2Y=";
+  cargoHash = "sha256-ivKPGA5UADKT47CL5jSOB4ZEfKh9uJkXgv9vfvEnBzw=";
 
   nativeBuildInputs = [
     pkg-config