* deps: change web build-dep from node-sass to sass
https://sass-lang.com/blog/libsass-is-deprecated and dart sass is the
recommended replacement.
* deps: yarn upgrade-interactive
* deps: update babel dep to 7.17
* deps: update eslint
* deps: update prettier
* deps: update svgo
* deps: update webpack to 5.72.1
* deps: update webpack-bundle-analyzer to 4.5.0
* deps: update webpack-cli to 4.9.2
* deps: update webpack-dev-server from 3.11.3 to 4.9.0
* deps: replace svgo, svgo-loader, url-loader with webpack asset/inline
* chore: rename "style" dir as "assets"
* deps: update stylelint from 13.13.1 to 14.8.2
* deps: bump terser-webpack-plugin from 5.1.4 to 5.3.1
* deps: bump css-loader from 5.2.7 to 6.7.1
* deps: bump css-minimizer-webpack-plugin from 3.0.2 to 3.4.1
* deps: bump mini-css-extract-plugin from 1.6.2 to 2.6.0
* Modernize blocklist.cc to C++
* Modernize blocklist.cc: Renamed BlocklistFile struct and moved IPv4 range struct inside it
Modernize bandwidth.cc: Review notes; Promote container of blocklists in session to vec of unique_ptrs
The guide uses `transmission-daemon` and `transmission-remote`. It makes some
basic security recommendations, but it does not include instructions for system
integration, i.e. systemd, etc.
* fix: invalid tr_peerMsgsImpl::prefetchCount value
This count could get corrupted due to imprecise bookkeeping when
processing peers' cancel messages. This PR replaces the field with
a `prefetched` flag in the struct that represents a peer request.
This approach has simpler code, simpler logic, and is harder to break.
* refactor: remove unused field tr_torrent.prefetchMagnetMetadata
* refactor: remove unused field tr_torrent.dhtAnnounce6InProgress
* refactor: remove unused field tr_torrent.dhtAnnounceInProgress
* refactor: fold etaULSpeed and etaDLSpeed into one field
* refactor: re-arrange fields to avoid padding
* Support specifying the umask as a string representing an octal number.
* Save the umask as a string representing an octal number.
* Support specifying the IPC socket permission as a string representing an octal number.
* Save the IPC socket permission as a string representing an octal number.
* Add a `base` parameter to `tr_parseNum()` for specifying the radix.
Most use cases involve either (a) using the default group or (b) sharing
a group with other torrents. In both cases, using a tr_quark is cheaper
than a std::string.
* perf: faster file tree building in GTK client
* perf: faster GTK client FileList
* use a std::map for faster node lookup when building a file tree
* use tr_get_mime_type_for_filename() for mime-type lookup
* remove unnecessary layer of indirection when building the
keys for lookuops in the mime-type icon cache
* be more careful to only call operator= on proxies whose values
have actually changed, since that assignment is expensive